From f94e9fe4ac7c6a4e125aff40dd00b213cb21d81f Mon Sep 17 00:00:00 2001 From: Johnny Willemsen Date: Tue, 5 Jan 2010 14:53:15 +0000 Subject: branching/tagging --- modules/CIAO/CIAO-INSTALL.html | 175 + modules/CIAO/CIAO.mwc | 5 + modules/CIAO/CIAO_DAnCE.mwc | 11 + modules/CIAO/CIAO_TAO.mwc | 34 + modules/CIAO/CIAO_TAO_DAnCE.mwc | 29 + modules/CIAO/COPYING | 110 + modules/CIAO/ChangeLog | 4126 +++++ modules/CIAO/ChangeLogs/ChangeLog-04a | 5390 ++++++ modules/CIAO/ChangeLogs/ChangeLog-04b | 2250 +++ modules/CIAO/ChangeLogs/ChangeLog-06a | 8579 +++++++++ modules/CIAO/ChangeLogs/ChangeLog-06b | 2752 +++ modules/CIAO/ChangeLogs/ChangeLog-07a | 1122 ++ modules/CIAO/ChangeLogs/ChangeLog-07b | 2845 +++ modules/CIAO/ChangeLogs/ChangeLog-09a | 15360 ++++++++++++++++ modules/CIAO/ChangeLogs/ChangeLog-pre_release | 6202 +++++++ modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.cpp | 177 + modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.h | 71 + modules/CIAO/DAnCE/Config_Handlers/Any_Handler.cpp | 59 + modules/CIAO/DAnCE/Config_Handlers/Any_Handler.h | 62 + .../Config_Handlers/Basic_Deployment_Data.cpp | 17580 +++++++++++++++++++ .../Config_Handlers/Basic_Deployment_Data.hpp | 8561 +++++++++ modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.cpp | 181 + modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.h | 57 + .../CIAO/DAnCE/Config_Handlers/CEPE_Handler.cpp | 51 + modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.h | 67 + modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.cpp | 152 + modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.h | 68 + .../CIAO/DAnCE/Config_Handlers/CRDD_Handler.cpp | 66 + modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.h | 67 + modules/CIAO/DAnCE/Config_Handlers/Common.h | 46 + .../ComponentPropertyDescription_Handler.cpp | 41 + .../ComponentPropertyDescription_Handler.h | 61 + .../CIAO/DAnCE/Config_Handlers/Config_Handlers.mpc | 126 + .../Config_Handlers_Common_Export.h | 58 + .../DAnCE/Config_Handlers/Config_Handlers_Export.h | 58 + modules/CIAO/DAnCE/Config_Handlers/DD_Handler.cpp | 212 + modules/CIAO/DAnCE/Config_Handlers/DD_Handler.h | 114 + modules/CIAO/DAnCE/Config_Handlers/DP_Handler.cpp | 276 + modules/CIAO/DAnCE/Config_Handlers/DP_Handler.h | 87 + .../CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.cpp | 107 + .../CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.h | 67 + .../DAnCE/Config_Handlers/DataType_Handler.cpp | 179 + .../CIAO/DAnCE/Config_Handlers/DataType_Handler.h | 62 + modules/CIAO/DAnCE/Config_Handlers/Deployment.cpp | 854 + modules/CIAO/DAnCE/Config_Handlers/Deployment.hpp | 221 + modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.cpp | 982 ++ modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.h | 153 + modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.cpp | 90 + modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.h | 50 + modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.cpp | 65 + modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.h | 77 + .../DynAny_Handler/DataType_Handler.cpp | 181 + .../DynAny_Handler/DataType_Handler.h | 60 + .../DynAny_Handler/DynAlias_Handler.cpp | 195 + .../DynAny_Handler/DynAlias_Handler.h | 52 + .../DynAny_Handler/DynAny_Handler.cpp | 381 + .../DynAny_Handler/DynAny_Handler.h | 85 + .../DynAny_Handler/DynAny_Handler.mpc | 22 + .../DynAny_Handler/DynAny_Handler_Export.h | 54 + .../DynAny_Handler/DynEnum_Handler.cpp | 109 + .../DynAny_Handler/DynEnum_Handler.h | 52 + .../DynAny_Handler/DynSequence_Handler.cpp | 163 + .../DynAny_Handler/DynSequence_Handler.h | 52 + .../DynAny_Handler/DynStruct_Handler.cpp | 130 + .../DynAny_Handler/DynStruct_Handler.h | 52 + modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.cpp | 61 + modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.h | 70 + modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.cpp | 124 + modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.h | 69 + modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.cpp | 165 + modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.h | 70 + modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.cpp | 111 + modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.h | 89 + modules/CIAO/DAnCE/Config_Handlers/ID_Handler.cpp | 45 + modules/CIAO/DAnCE/Config_Handlers/ID_Handler.h | 78 + .../CIAO/DAnCE/Config_Handlers/IRDD_Handler.cpp | 118 + modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.h | 69 + modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.cpp | 174 + modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.h | 68 + modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.cpp | 135 + modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.h | 75 + modules/CIAO/DAnCE/Config_Handlers/PL_Handler.cpp | 52 + modules/CIAO/DAnCE/Config_Handlers/PL_Handler.h | 53 + .../CIAO/DAnCE/Config_Handlers/PSPE_Handler.cpp | 148 + modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.h | 65 + .../Package_Handlers/CAD_Handler.cpp | 271 + .../Config_Handlers/Package_Handlers/CAD_Handler.h | 59 + .../Package_Handlers/CID_Handler.cpp | 390 + .../Config_Handlers/Package_Handlers/CID_Handler.h | 67 + .../Package_Handlers/CPD_Handler.cpp | 160 + .../Config_Handlers/Package_Handlers/CPD_Handler.h | 74 + .../Package_Handlers/Comp_Intf_Descr_Handler.cpp | 165 + .../Package_Handlers/Comp_Intf_Descr_Handler.h | 54 + .../Package_Handlers/IAD_Handler.cpp | 124 + .../Config_Handlers/Package_Handlers/IAD_Handler.h | 66 + .../Config_Handlers/Package_Handlers/NIA_Handler.h | 65 + .../Package_Handlers/PCD_Handler.cpp | 165 + .../Config_Handlers/Package_Handlers/PCD_Handler.h | 69 + .../Config_Handlers/Package_Handlers/PC_Intf.cpp | 75 + .../Config_Handlers/Package_Handlers/PC_Intf.h | 58 + .../Package_Handlers/Package_Handlers.mpc | 43 + .../Package_Handlers/Packaging_Handlers_Export.h | 58 + .../Package_Handlers/SID_Handler.cpp | 142 + .../Config_Handlers/Package_Handlers/SID_Handler.h | 71 + .../DAnCE/Config_Handlers/Property_Handler.cpp | 56 + .../CIAO/DAnCE/Config_Handlers/Property_Handler.h | 70 + modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.cpp | 55 + modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.h | 63 + modules/CIAO/DAnCE/Config_Handlers/Req_Handler.cpp | 57 + modules/CIAO/DAnCE/Config_Handlers/Req_Handler.h | 71 + .../CIAO/DAnCE/Config_Handlers/STD_CID_Handler.cpp | 173 + .../CIAO/DAnCE/Config_Handlers/STD_CID_Handler.h | 75 + .../CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.cpp | 59 + .../CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.h | 78 + .../CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.cpp | 46 + .../CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.h | 64 + .../CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.cpp | 52 + .../CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.h | 74 + modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.cpp | 71 + modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.h | 62 + .../Config_Handlers/SatisfierProperty_Handler.cpp | 126 + .../Config_Handlers/SatisfierProperty_Handler.h | 69 + .../CIAO/DAnCE/Config_Handlers/Utils/Exceptions.h | 39 + .../CIAO/DAnCE/Config_Handlers/Utils/Functors.h | 87 + modules/CIAO/DAnCE/Config_Handlers/XMI.cpp | 888 + modules/CIAO/DAnCE/Config_Handlers/XMI.hpp | 397 + .../DAnCE/Config_Handlers/XMLSchema/Traversal.hpp | 77 + .../DAnCE/Config_Handlers/XMLSchema/Traversal.ipp | 10 + .../DAnCE/Config_Handlers/XMLSchema/Traversal.tpp | 11 + .../DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp | 22 + .../DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp | 7 + .../DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp | 98 + .../CIAO/DAnCE/Config_Handlers/XMLSchema/Types.hpp | 670 + .../CIAO/DAnCE/Config_Handlers/XMLSchema/Types.ipp | 8 + .../CIAO/DAnCE/Config_Handlers/XMLSchema/Types.tpp | 9 + .../DAnCE/Config_Handlers/XMLSchema/Writer.hpp | 159 + .../DAnCE/Config_Handlers/XMLSchema/Writer.ipp | 10 + .../DAnCE/Config_Handlers/XMLSchema/Writer.tpp | 10 + .../DAnCE/Config_Handlers/XMLSchema/id_map.hpp | 138 + .../CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp | 103 + modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.h | 56 + .../CIAO/DAnCE/Config_Handlers/XML_Typedefs.cpp | 14 + modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.h | 38 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Elements.hpp | 572 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Elements.ipp | 7 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Elements.tpp | 7 + .../Config_Handlers/XSCRT/ExtendedTypeInfo.hpp | 182 + .../Config_Handlers/XSCRT/ExtendedTypeInfo.ipp | 141 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Parser.hpp | 67 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Parser.ipp | 7 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Parser.tpp | 7 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp | 266 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.ipp | 7 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.tpp | 195 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Writer.hpp | 81 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Writer.ipp | 7 + .../CIAO/DAnCE/Config_Handlers/XSCRT/Writer.tpp | 7 + modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.hpp | 493 + modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.ipp | 7 + modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.tpp | 7 + .../CIAO/DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp | 588 + .../Config_Handlers/XSC_XML_Handlers_Export.h | 54 + modules/CIAO/DAnCE/Config_Handlers/ccd.cpp | 1502 ++ modules/CIAO/DAnCE/Config_Handlers/ccd.hpp | 741 + modules/CIAO/DAnCE/Config_Handlers/cdd.cpp | 3334 ++++ modules/CIAO/DAnCE/Config_Handlers/cdd.hpp | 1654 ++ modules/CIAO/DAnCE/Config_Handlers/cdp.cpp | 2366 +++ modules/CIAO/DAnCE/Config_Handlers/cdp.hpp | 1187 ++ modules/CIAO/DAnCE/Config_Handlers/cid.cpp | 6047 +++++++ modules/CIAO/DAnCE/Config_Handlers/cid.hpp | 2885 +++ modules/CIAO/DAnCE/Config_Handlers/cpd.cpp | 2081 +++ modules/CIAO/DAnCE/Config_Handlers/cpd.hpp | 1008 ++ modules/CIAO/DAnCE/Config_Handlers/iad.cpp | 1491 ++ modules/CIAO/DAnCE/Config_Handlers/iad.hpp | 748 + modules/CIAO/DAnCE/Config_Handlers/pcd.cpp | 1304 ++ modules/CIAO/DAnCE/Config_Handlers/pcd.hpp | 647 + modules/CIAO/DAnCE/Config_Handlers/toplevel.cpp | 348 + modules/CIAO/DAnCE/Config_Handlers/toplevel.hpp | 220 + .../Deployment/CIAO_ExecutionManagerDaemon.idl | 25 + modules/CIAO/DAnCE/Deployment/CIAO_Interfaces.mpc | 85 + .../DAnCE/Deployment/CIAO_NodeManagerDaemon.idl | 34 + modules/CIAO/DAnCE/Deployment/DAnCE_Core.mpc | 454 + modules/CIAO/DAnCE/Deployment/DAnCE_Loader.h | 26 + modules/CIAO/DAnCE/Deployment/DAnCE_Properties.idl | 43 + modules/CIAO/DAnCE/Deployment/Deployment.idl | 34 + .../DAnCE/Deployment/Deployment_Application.idl | 28 + .../Deployment/Deployment_ApplicationManager.idl | 35 + modules/CIAO/DAnCE/Deployment/Deployment_Base.idl | 42 + .../DAnCE/Deployment/Deployment_Connection.idl | 18 + modules/CIAO/DAnCE/Deployment/Deployment_Data.idl | 41 + .../DAnCE/Deployment/Deployment_DeploymentPlan.idl | 211 + .../Deployment/Deployment_DomainApplication.idl | 17 + .../Deployment_DomainApplicationManager.idl | 19 + .../Deployment/Deployment_ExecutionManager.idl | 20 + .../Deployment/Deployment_NodeApplication.idl | 14 + .../Deployment_NodeApplicationManager.idl | 14 + .../DAnCE/Deployment/Deployment_NodeManager.idl | 34 + .../DAnCE/Deployment/Deployment_Packaging_Data.idl | 199 + .../CIAO/DAnCE/Deployment/Deployment_PlanError.idl | 13 + .../Deployment/Deployment_RepositoryManager.idl | 47 + .../Deployment_ResourceCommitmentManager.idl | 36 + .../DAnCE/Deployment/Deployment_StartError.idl | 14 + .../CIAO/DAnCE/Deployment/Deployment_StopError.idl | 14 + .../DAnCE/Deployment/Deployment_TargetData.idl | 69 + .../DAnCE/Deployment/Deployment_TargetManager.idl | 34 + modules/CIAO/DAnCE/Deployment/Deployment_common.h | 63 + .../CIAO/DAnCE/Deployment/Deployment_stub_export.h | 58 + .../CIAO/DAnCE/Deployment/Deployment_svnt_export.h | 58 + modules/CIAO/DAnCE/Deployment/Module_Main.h | 90 + .../DAnCE/DomainApplication/DomainApplication.mpc | 14 + .../DomainApplication/Domain_Application_Export.h | 58 + .../DomainApplication/Domain_Application_Impl.cpp | 121 + .../DomainApplication/Domain_Application_Impl.h | 81 + .../DomainApplicationManager.mpc | 19 + .../DomainApplicationManager_Export.h | 58 + .../DomainApplicationManager_Impl.cpp | 469 + .../DomainApplicationManager_Impl.h | 70 + .../DomainApplicationManager/Node_Locator.cpp | 161 + .../DAnCE/DomainApplicationManager/Node_Locator.h | 55 + .../DAnCE_ExecutionManager_Module_Export.h | 58 + .../DAnCE/ExecutionManager/ExecutionManager.mpc | 23 + .../ExecutionManager/ExecutionManager_Export.h | 57 + .../ExecutionManager/ExecutionManager_Impl.cpp | 159 + .../DAnCE/ExecutionManager/ExecutionManager_Impl.h | 71 + .../ExecutionManager/ExecutionManager_Module.cpp | 367 + .../ExecutionManager/ExecutionManager_Module.h | 102 + .../ExecutionManager/Execution_Manager_Exec.cpp | 7 + modules/CIAO/DAnCE/Logger/DAnCE_Logger_Export.h | 58 + modules/CIAO/DAnCE/Logger/Log_Macros.cpp | 6 + modules/CIAO/DAnCE/Logger/Log_Macros.h | 95 + modules/CIAO/DAnCE/Logger/Logger.mpc | 16 + modules/CIAO/DAnCE/Logger/Logger_Service.cpp | 151 + modules/CIAO/DAnCE/Logger/Logger_Service.h | 31 + .../CIAO/DAnCE/MPC/config/ciao_config_handlers.mpb | 21 + .../DAnCE/MPC/config/ciao_config_handlers_base.mpb | 13 + .../MPC/config/ciao_executionmanager_skel.mpb | 8 + .../MPC/config/ciao_executionmanager_stub.mpb | 8 + .../CIAO/DAnCE/MPC/config/ciao_nodeapplication.mpb | 7 + .../MPC/config/ciao_nodeapplicationmanager.mpb | 8 + .../DAnCE/MPC/config/ciao_nodemanager_skel.mpb | 7 + .../DAnCE/MPC/config/ciao_nodemanager_stub.mpb | 8 + .../CIAO/DAnCE/MPC/config/ciao_plan_generator.mpb | 8 + .../DAnCE/MPC/config/ciao_targetmanager_stub.mpb | 8 + .../DAnCE/MPC/config/ciao_targetmanager_svnt.mpb | 7 + modules/CIAO/DAnCE/MPC/config/dance.mpb | 7 + .../DAnCE/MPC/config/dance_component_server.mpb | 5 + .../MPC/config/dance_component_server_svnt.mpb | 7 + .../DAnCE/MPC/config/dance_deployment_stub.mpb | 10 + .../DAnCE/MPC/config/dance_deployment_svnt.mpb | 8 + .../DAnCE/MPC/config/dance_domainapplication.mpb | 7 + .../MPC/config/dance_domainapplication_skel.mpb | 7 + .../MPC/config/dance_domainapplication_stub.mpb | 7 + .../MPC/config/dance_domainapplicationmanager.mpb | 7 + .../config/dance_domainapplicationmanager_skel.mpb | 7 + .../config/dance_domainapplicationmanager_stub.mpb | 7 + modules/CIAO/DAnCE/MPC/config/dance_exe.mpb | 6 + .../MPC/config/dance_executionmanager_skel.mpb | 7 + .../MPC/config/dance_executionmanager_stub.mpb | 7 + .../CIAO/DAnCE/MPC/config/dance_extension_stub.mpb | 5 + modules/CIAO/DAnCE/MPC/config/dance_lib.mpb | 6 + modules/CIAO/DAnCE/MPC/config/dance_logger.mpb | 7 + .../DAnCE/MPC/config/dance_nodeapplication.mpb | 8 + .../MPC/config/dance_nodeapplication_skel.mpb | 7 + .../MPC/config/dance_nodeapplication_stub.mpb | 7 + .../MPC/config/dance_nodeapplicationmanager.mpb | 7 + .../config/dance_nodeapplicationmanager_skel.mpb | 7 + .../config/dance_nodeapplicationmanager_stub.mpb | 7 + .../CIAO/DAnCE/MPC/config/dance_nodemanager.mpb | 8 + .../DAnCE/MPC/config/dance_nodemanager_skel.mpb | 7 + .../DAnCE/MPC/config/dance_nodemanager_stub.mpb | 7 + .../DAnCE/MPC/config/dance_nodemanager_svnt.mpb | 8 + .../CIAO/DAnCE/MPC/config/dance_plan_generator.mpb | 7 + .../CIAO/DAnCE/MPC/config/dance_plan_launcher.mpb | 6 + .../DAnCE/MPC/config/dance_plan_launcher_base.mpb | 6 + .../DAnCE/MPC/config/dance_redirectionservice.mpb | 7 + .../DAnCE/MPC/config/dance_repositorymanager.mpb | 8 + .../MPC/config/dance_repositorymanager_skel.mpb | 7 + .../MPC/config/dance_repositorymanager_stub.mpb | 7 + .../MPC/config/dance_repositorymanagerbase.mpb | 9 + .../CIAO/DAnCE/MPC/config/dance_targetmanager.mpb | 7 + .../DAnCE/MPC/config/dance_targetmanager_skel.mpb | 7 + .../DAnCE/MPC/config/dance_targetmanager_stub.mpb | 7 + modules/CIAO/DAnCE/MPC/config/dance_tm_daemon.mpb | 7 + modules/CIAO/DAnCE/MPC/config/dance_utils.mpb | 7 + .../NodeApplication/ComponentAttributesSetter.cpp | 68 + .../NodeApplication/ComponentAttributesSetter.h | 33 + .../CIAO/DAnCE/NodeApplication/Name_Utilities.cpp | 179 + .../CIAO/DAnCE/NodeApplication/Name_Utilities.h | 40 + .../CIAO/DAnCE/NodeApplication/NodeApplication.mpc | 24 + .../DAnCE/NodeApplication/NodeApplication_Export.h | 58 + .../DAnCE/NodeApplication/NodeApplication_Impl.cpp | 2229 +++ .../DAnCE/NodeApplication/NodeApplication_Impl.h | 212 + .../NodeApplicationManager.mpc | 13 + .../NodeApplicationManager_Export.h | 58 + .../NodeApplicationManager_Impl.cpp | 170 + .../NodeApplicationManager_Impl.h | 54 + .../NodeManager/DAnCE_NodeManager_Module_Export.h | 58 + modules/CIAO/DAnCE/NodeManager/NodeManager.mpc | 22 + .../CIAO/DAnCE/NodeManager/NodeManager_Export.h | 58 + .../CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp | 179 + modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h | 68 + .../CIAO/DAnCE/NodeManager/Node_Manager_Exec.cpp | 6 + .../CIAO/DAnCE/NodeManager/Node_Manager_Module.cpp | 604 + .../CIAO/DAnCE/NodeManager/Node_Manager_Module.h | 114 + modules/CIAO/DAnCE/NodeManager/README | 13 + modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp | 271 + modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h | 128 + .../CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp | 28 + modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h | 171 + .../CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl | 155 + .../CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc | 20 + .../DAnCE/Plan_Generator/Plan_Generator_Impl.cpp | 151 + .../DAnCE/Plan_Generator/Plan_Generator_Impl.h | 78 + .../Plan_Generator/Plan_Generator_Impl_Export.h | 58 + modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp | 41 + modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.h | 26 + modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc | 43 + .../Plan_Launcher/Plan_Launcher_Base_Impl.cpp | 780 + .../DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h | 117 + .../Plan_Launcher/Plan_Launcher_Base_Impl_Export.h | 58 + .../Plan_Launcher/Plan_Launcher_Base_Module.cpp | 47 + .../Plan_Launcher/Plan_Launcher_Base_Module.h | 58 + .../Plan_Launcher_Base_Module_Export.h | 58 + .../DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp | 8 + .../DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp | 119 + .../CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h | 43 + .../Plan_Launcher/Plan_Launcher_Impl_Export.h | 58 + .../DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp | 62 + .../DAnCE/Plan_Launcher/Plan_Launcher_Module.h | 56 + .../Plan_Launcher/Plan_Launcher_Module_Export.h | 58 + modules/CIAO/DAnCE/Plan_Launcher/launcher.cpp | 11 + .../DAnCE/RedirectionService/CCMObjectLocator.cpp | 390 + .../DAnCE/RedirectionService/CCMObjectLocator.h | 104 + .../RedirectionService/NameServiceRedirection.cpp | 271 + .../RedirectionService/NameServiceRedirection.h | 57 + .../RedirectionService/RedirectionService.cpp | 162 + .../DAnCE/RedirectionService/RedirectionService.h | 75 + .../RedirectionService/RedirectionService.mpc | 14 + .../RedirectionService/RedirectionService_Export.h | 58 + .../DAnCE_RepositoryManager_Module_Export.h | 58 + .../CIAO/DAnCE/RepositoryManager/PC_Updater.cpp | 256 + modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h | 114 + .../CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp | 20 + .../CIAO/DAnCE/RepositoryManager/PC_Updater_T.h | 40 + modules/CIAO/DAnCE/RepositoryManager/README | 46 + modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp | 265 + modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h | 81 + .../DAnCE/RepositoryManager/RepositoryManager.cpp | 281 + .../DAnCE/RepositoryManager/RepositoryManager.mpc | 68 + .../RepositoryManager/RepositoryManagerDaemon.idl | 13 + .../RepositoryManager/RepositoryManager_Impl.cpp | 1258 ++ .../RepositoryManager/RepositoryManager_Impl.h | 235 + .../Repository_Manager_Admin_Export.h | 58 + .../RepositoryManager/Repository_Manager_Exec.cpp | 6 + .../Repository_Manager_Module.cpp | 520 + .../RepositoryManager/Repository_Manager_Module.h | 128 + .../CIAO/DAnCE/RepositoryManager/URL_Parser.cpp | 101 + modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h | 64 + .../CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp | 378 + modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h | 117 + .../RepositoryManager/repository_manager_admin.cpp | 241 + .../RepositoryManager/repository_manager_admin.h | 68 + .../repository_manager_admin_exec.cpp | 452 + modules/CIAO/DAnCE/TargetManager/CmpClient.cpp | 305 + .../TargetManager/DAnCE_TargetManagerDaemon.idl | 12 + .../CIAO/DAnCE/TargetManager/DomainDataManager.cpp | 688 + .../CIAO/DAnCE/TargetManager/DomainDataManager.h | 256 + modules/CIAO/DAnCE/TargetManager/DomainEvents.idl | 25 + .../TargetManager/ResourceCommitmentManager.cpp | 61 + .../TargetManager/ResourceCommitmentManager.h | 63 + modules/CIAO/DAnCE/TargetManager/TM_Client.mpc | 22 + modules/CIAO/DAnCE/TargetManager/TargetManager.idl | 32 + modules/CIAO/DAnCE/TargetManager/TargetManager.mpc | 71 + .../CIAO/DAnCE/TargetManager/TargetManagerExt.idl | 84 + .../DAnCE/TargetManager/TargetManager_Impl.cpp | 62 + .../CIAO/DAnCE/TargetManager/TargetManager_Impl.h | 61 + .../TargetManager/TargetManager_Impl_export.h | 58 + .../DAnCE/TargetManager/TargetManager_exec.cpp | 251 + .../CIAO/DAnCE/TargetManager/TargetManager_exec.h | 140 + .../DAnCE/TargetManager/Target_Manager_Exec.cpp | 6 + .../DAnCE/TargetManager/Target_Manager_Module.cpp | 345 + .../DAnCE/TargetManager/Target_Manager_Module.h | 105 + .../TargetManager/Target_Manager_Module_export.h | 58 + modules/CIAO/DAnCE/Utils/DAnCE_Utils.mpc | 16 + modules/CIAO/DAnCE/Utils/DAnCE_Utils_Export.h | 58 + modules/CIAO/DAnCE/Utils/Plan_Handler.cpp | 182 + modules/CIAO/DAnCE/Utils/Plan_Handler.h | 75 + modules/CIAO/DAnCE/bin/.empty | 1 + modules/CIAO/DAnCE/bin/PythonDAnCE/__init__.py | 1 + .../DAnCE/bin/PythonDAnCE/generator/__init__.py | 46 + .../CIAO/DAnCE/bin/PythonDAnCE/generator/_path.py | 0 .../DAnCE/bin/PythonDAnCE/generator/artifact.py | 24 + .../DAnCE/bin/PythonDAnCE/generator/comp_impl.py | 58 + .../DAnCE/bin/PythonDAnCE/generator/comp_inst.py | 13 + .../CIAO/DAnCE/bin/PythonDAnCE/generator/footer.py | 8 + .../CIAO/DAnCE/bin/PythonDAnCE/generator/header.py | 14 + .../DAnCE/bin/PythonDAnCE/generator/home_impl.py | 57 + .../DAnCE/bin/PythonDAnCE/generator/home_inst.py | 13 + .../bin/PythonDAnCE/generator/homed_comp_impl.py | 13 + .../bin/PythonDAnCE/generator/homed_comp_inst.py | 24 + .../DAnCE/bin/PythonDAnCE/generator/templet.py | 325 + modules/CIAO/DAnCE/bin/generate_plan.py | 90 + modules/CIAO/DAnCE/docs/schema/06-04-02.xsd | 1010 ++ .../DAnCE/docs/schema/Basic_Deployment_Data.xsd | 430 + modules/CIAO/DAnCE/docs/schema/CIAOEvents.xsd | 104 + .../CIAO/DAnCE/docs/schema/CIAOServerResources.xsd | 218 + modules/CIAO/DAnCE/docs/schema/Deployment.xsd | 29 + .../CIAO/DAnCE/docs/schema/Modified_Deployment.xsd | 826 + modules/CIAO/DAnCE/docs/schema/README.html | 64 + modules/CIAO/DAnCE/docs/schema/SANet_Network.xsd | 98 + .../CIAO/DAnCE/docs/schema/ServerResourceUsage.txt | 119 + .../DAnCE/docs/schema/Spec_Defined_Deployment.xsd | 897 + .../CIAO/DAnCE/docs/schema/Spec_Defined_XMI.xsd | 35 + modules/CIAO/DAnCE/docs/schema/Task_Map.xsd | 90 + modules/CIAO/DAnCE/docs/schema/XMI.xsd | 39 + modules/CIAO/DAnCE/docs/schema/ccd.xsd | 27 + modules/CIAO/DAnCE/docs/schema/cdd.xsd | 60 + modules/CIAO/DAnCE/docs/schema/cdp.xsd | 43 + modules/CIAO/DAnCE/docs/schema/ciaopolicy.xsd | 607 + modules/CIAO/DAnCE/docs/schema/cid.xsd | 126 + modules/CIAO/DAnCE/docs/schema/cpd.xsd | 49 + modules/CIAO/DAnCE/docs/schema/iad.xsd | 32 + modules/CIAO/DAnCE/docs/schema/pcd.xsd | 32 + modules/CIAO/DAnCE/docs/schema/toplevel.xsd | 15 + modules/CIAO/DAnCE/docs/schema/unused_06-04-02.xsd | 201 + modules/CIAO/DAnCE/docs/schema/unused_elements.xsd | 161 + modules/CIAO/DAnCE/docs/schema/xsc-banner.cpp | 11 + modules/CIAO/DAnCE/docs/schema/xsc-banner.h | 17 + modules/CIAO/DAnCE/lib/.empty | 1 + .../CIAO/CommandlinePassage/CommandlinePassage.idl | 22 + .../CIAO/CommandlinePassage/CommandlinePassage.mpc | 125 + .../CommandlinePassage/CommandlinePassage_exec.cpp | 99 + .../CommandlinePassage/CommandlinePassage_exec.h | 54 + .../tests/CIAO/CommandlinePassage/Component.cdp | 116 + .../tests/CIAO/CommandlinePassage/run_test.pl | 228 + .../tests/CIAO/Components/ProcessColocation.idl | 15 + .../tests/CIAO/Components/ProcessColocation.mpc | 108 + .../CIAO/Components/ProcessColocation_exec.cpp | 189 + .../tests/CIAO/Components/ProcessColocation_exec.h | 126 + .../tests/CIAO/Components/SimpleAttribute.idl | 25 + .../tests/CIAO/Components/SimpleAttribute.mpc | 108 + .../tests/CIAO/Components/SimpleAttribute_exec.cpp | 241 + .../tests/CIAO/Components/SimpleAttribute_exec.h | 123 + .../DAnCE/tests/CIAO/Components/SimpleCommon.idl | 21 + .../DAnCE/tests/CIAO/Components/SimpleCommon.mpc | 79 + .../DAnCE/tests/CIAO/Components/SimpleConsumer.idl | 21 + .../DAnCE/tests/CIAO/Components/SimpleConsumer.mpc | 110 + .../tests/CIAO/Components/SimpleConsumer_exec.cpp | 138 + .../tests/CIAO/Components/SimpleConsumer_exec.h | 84 + .../DAnCE/tests/CIAO/Components/SimpleEmitter.idl | 21 + .../DAnCE/tests/CIAO/Components/SimpleEmitter.mpc | 110 + .../tests/CIAO/Components/SimpleEmitter_exec.cpp | 131 + .../tests/CIAO/Components/SimpleEmitter_exec.h | 80 + .../tests/CIAO/Components/SimpleMultipleUser.idl | 21 + .../tests/CIAO/Components/SimpleMultipleUser.mpc | 110 + .../CIAO/Components/SimpleMultipleUser_exec.cpp | 158 + .../CIAO/Components/SimpleMultipleUser_exec.h | 80 + .../CIAO/Components/SimpleNilFacetProvider.idl | 22 + .../CIAO/Components/SimpleNilFacetProvider.mpc | 112 + .../Components/SimpleNilFacetProvider_exec.cpp | 160 + .../CIAO/Components/SimpleNilFacetProvider_exec.h | 98 + .../tests/CIAO/Components/SimpleNilFacetUser.idl | 21 + .../tests/CIAO/Components/SimpleNilFacetUser.mpc | 111 + .../CIAO/Components/SimpleNilFacetUser_exec.cpp | 159 + .../CIAO/Components/SimpleNilFacetUser_exec.h | 80 + .../DAnCE/tests/CIAO/Components/SimpleNull.idl | 14 + .../DAnCE/tests/CIAO/Components/SimpleNull.mpc | 107 + .../tests/CIAO/Components/SimpleNull_exec.cpp | 150 + .../DAnCE/tests/CIAO/Components/SimpleNull_exec.h | 83 + .../DAnCE/tests/CIAO/Components/SimpleProvider.idl | 22 + .../DAnCE/tests/CIAO/Components/SimpleProvider.mpc | 111 + .../tests/CIAO/Components/SimpleProvider_exec.cpp | 160 + .../tests/CIAO/Components/SimpleProvider_exec.h | 98 + .../tests/CIAO/Components/SimplePublisher.idl | 21 + .../tests/CIAO/Components/SimplePublisher.mpc | 110 + .../tests/CIAO/Components/SimplePublisher_exec.cpp | 130 + .../tests/CIAO/Components/SimplePublisher_exec.h | 80 + .../DAnCE/tests/CIAO/Components/SimpleUser.idl | 21 + .../DAnCE/tests/CIAO/Components/SimpleUser.mpc | 111 + .../tests/CIAO/Components/SimpleUser_exec.cpp | 151 + .../DAnCE/tests/CIAO/Components/SimpleUser_exec.h | 80 + .../EmitsConnectionExplicitHome.cdp | 227 + .../EmitsConnectionExplicitHome_NS.cdp | 238 + .../MultiplexConnectionExplicitHome.cdp | 262 + .../MultiplexConnectionExplicitHome_NS.cdp | 286 + .../PublishConnectionExplicitHome.cdp | 227 + .../PublishConnectionExplicitHome_NS.cdp | 244 + .../SimpleComponentExplicitHome.cdp | 113 + .../SimplexConnectionExplicitHome.cdp | 262 + .../SimplexConnectionExplicitHome_NS.cdp | 279 + .../SimplexConnectionExplicitHome_NilFacet.cdp | 262 + .../ExecutionManager-Deployments/em_launcher.mpc | 6 + .../CIAO/ExecutionManager-Deployments/run_test.pl | 211 + .../simple_em_launcher.cpp | 125 + .../EmitsConnectionExplicitHome.cdp | 227 + .../MultiplexConnectionExplicitHome.cdp | 262 + .../PublishConnectionExplicitHome.cdp | 227 + .../SimpleAttributeExplicitHome.cdp | 179 + .../SimpleComponentExplicitHome.cdp | 113 + .../SimpleComponentUnhomed.cdp | 86 + .../CIAO/NodeManager-Deployments/SimpleHome.cdp | 90 + .../SimpleProcessColocation.cdp | 127 + .../SimpleProcessColocation_2.cdp | 168 + .../SimpleProcessColocation_Default.cdp | 208 + .../SimplexConnectionExplicitHome.cdp | 262 + .../TwoComponentsOneHome.cdp | 281 + .../CIAO/NodeManager-Deployments/nm_launcher.mpc | 6 + .../tests/CIAO/NodeManager-Deployments/run_test.pl | 211 + .../NodeManager-Deployments/simple_nm_launcher.cpp | 125 + .../tests/Config_Handlers/Config_Handlers.mpc | 14 + .../Config_Handlers/DynAny_Handler/dynany_test.idl | 28 + .../tests/Config_Handlers/DynAny_Handler/test.cpp | 292 + .../tests/Config_Handlers/DynAny_Handler/test.mpc | 16 + .../Package_Handlers/Package_Handlers.mpc | 11 + .../Config_Handlers/Package_Handlers/test.cpp | 113 + modules/CIAO/DAnCE/tests/Config_Handlers/test.cdp | 1827 ++ modules/CIAO/DAnCE/tests/Config_Handlers/test.cpp | 119 + .../tests/DeploymentPlanDump/CcmDance2-host1.cdp | 639 + .../tests/DeploymentPlanDump/CcmDance2-host2.cdp | 969 + .../DAnCE/tests/DeploymentPlanDump/CcmDance2.cdp | 1300 ++ .../tests/DeploymentPlanDump/CcmDance4-host1.cdp | 1055 ++ .../tests/DeploymentPlanDump/CcmDance4-host2.cdp | 941 + .../DeploymentPlanDump/DeploymentPlanDump.mpc | 9 + .../tests/DeploymentPlanDump/NewCcmDance1.cdp | 1063 ++ .../CIAO/DAnCE/tests/DeploymentPlanDump/test.cpp | 37 + .../DeploymentPlanTestReferences.mpc | 9 + .../tests/DeploymentPlanTestReferences/test.cpp | 55 + .../tests/DeploymentTest1/DeploymentTest1.mpc | 9 + modules/CIAO/DAnCE/tests/DeploymentTest1/test.cpp | 68 + modules/CIAO/DAnCE/tests/NameServiceTest/Dummy.idl | 14 + .../CIAO/DAnCE/tests/NameServiceTest/DummyImpl.cpp | 14 + .../CIAO/DAnCE/tests/NameServiceTest/DummyImpl.h | 25 + .../tests/NameServiceTest/NameServiceTest.mpc | 30 + .../DAnCE/tests/NameServiceTest/RegistrationPath.h | 9 + .../CIAO/DAnCE/tests/NameServiceTest/clt_main.cpp | 85 + .../CIAO/DAnCE/tests/NameServiceTest/run_test.pl | 73 + .../CIAO/DAnCE/tests/NameServiceTest/srv_main.cpp | 72 + .../NAM_NA.mpc | 8 + .../test.cpp | 48 + .../NodeManager-NodeApplicationManager.mpc | 8 + .../NodeManager-NodeApplicationManager/test.cpp | 43 + .../CIAO/DAnCE/tests/ObjectLocatorTest/Dummy.idl | 13 + .../DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp | 13 + .../CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.h | 22 + .../tests/ObjectLocatorTest/ObjectLocatorTest.mpc | 35 + .../tests/ObjectLocatorTest/RegistrationPath.h | 9 + .../DAnCE/tests/ObjectLocatorTest/clt_main.cpp | 56 + .../DAnCE/tests/ObjectLocatorTest/srv_main.cpp | 55 + .../DAnCE/tests/RedirectionServiceTest/Dummy.idl | 13 + .../tests/RedirectionServiceTest/DummyImpl.cpp | 14 + .../DAnCE/tests/RedirectionServiceTest/DummyImpl.h | 24 + .../RedirectionServiceTest.mpc | 25 + .../RedirectionServiceTest/RegistrationPath.h | 11 + .../tests/RedirectionServiceTest/clt_main.cpp | 110 + .../tests/RedirectionServiceTest/srv_main.cpp | 75 + .../DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl | 62 + .../CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat | 3 + modules/CIAO/MPC/config/ccm.mpb | 6 + .../CIAO/MPC/config/ccm_componentserver_stub.mpb | 8 + .../CIAO/MPC/config/ccm_componentserver_svnt.mpb | 7 + modules/CIAO/MPC/config/ccm_configvalue.mpb | 7 + modules/CIAO/MPC/config/ccm_cookie.mpb | 7 + modules/CIAO/MPC/config/ccm_executor.mpb | 5 + modules/CIAO/MPC/config/ccm_stub.mpb | 8 + modules/CIAO/MPC/config/ccm_svnt.mpb | 7 + modules/CIAO/MPC/config/ciao.mpb | 7 + .../CIAO/MPC/config/ciao_componentserver_stub.mpb | 7 + .../CIAO/MPC/config/ciao_componentserver_svnt.mpb | 7 + modules/CIAO/MPC/config/ciao_connector_base.mpb | 6 + modules/CIAO/MPC/config/ciao_container_base.mpb | 7 + modules/CIAO/MPC/config/ciao_context_impl.mpb | 7 + modules/CIAO/MPC/config/ciao_cs_client.mpb | 7 + modules/CIAO/MPC/config/ciao_dds4ccm_ndds_impl.mpb | 7 + modules/CIAO/MPC/config/ciao_example_output.mpb | 6 + modules/CIAO/MPC/config/ciao_exe.mpb | 6 + modules/CIAO/MPC/config/ciao_executor.mpb | 5 + modules/CIAO/MPC/config/ciao_lib.mpb | 6 + modules/CIAO/MPC/config/ciao_logger.mpb | 7 + modules/CIAO/MPC/config/ciao_output.mpb | 7 + .../CIAO/MPC/config/ciao_port_activator_stub.mpb | 7 + modules/CIAO/MPC/config/ciao_servant.mpb | 5 + modules/CIAO/MPC/config/ciao_servant_activator.mpb | 7 + modules/CIAO/MPC/config/ciao_session_container.mpb | 8 + modules/CIAO/MPC/config/ciao_vcwarnings.mpb | 20 + modules/CIAO/MPC/config/ciao_xml_utils.mpb | 8 + modules/CIAO/MPC/config/ciaoexe.mpb | 4 + modules/CIAO/MPC/config/ciaoidldefaults.mpb | 6 + modules/CIAO/MPC/config/ciaolib_with_idl.mpb | 5 + modules/CIAO/MPC/config/componentidldefaults.mpb | 21 + modules/CIAO/MPC/config/connectoridldefaults.mpb | 6 + modules/CIAO/MPC/config/dds4ccm_base.mpb | 7 + modules/CIAO/MPC/config/dds4ccm_impl.mpb | 7 + modules/CIAO/MPC/config/dds4ccm_skel.mpb | 7 + modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb | 23 + modules/CIAO/MPC/config/xscdefaults.mpb | 21 + modules/CIAO/NEWS | 1085 ++ modules/CIAO/PROBLEM-REPORT-FORM | 97 + modules/CIAO/README | 152 + modules/CIAO/Release | 53 + modules/CIAO/VERSION | 11 + modules/CIAO/bin/PerlCIAO/TestUtils.base | 3 + modules/CIAO/bin/PerlCIAO/TestUtils.pm | 323 + modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm | 78 + modules/CIAO/bin/PerlCIAO/generate_container.pl | 126 + modules/CIAO/bin/PerlCIAO/perlciao.mpc | 10 + modules/CIAO/bin/ciao_tests.lst | 64 + modules/CIAO/bin/generate_component_mpc.pl | 307 + modules/CIAO/bin/update_package.py | 118 + modules/CIAO/bin/valgrind_nodedaemon.py | 87 + modules/CIAO/ccm/CCM.mpc | 182 + modules/CIAO/ccm/CCM_Base.idl | 14 + modules/CIAO/ccm/CCM_CCM2Context.idl | 34 + modules/CIAO/ccm/CCM_CCMException.idl | 29 + modules/CIAO/ccm/CCM_Component.idl | 11 + modules/CIAO/ccm/CCM_ComponentId.idl | 34 + modules/CIAO/ccm/CCM_Configurator.idl | 21 + modules/CIAO/ccm/CCM_Container.idl | 12 + modules/CIAO/ccm/CCM_Container_Ex.idl | 10 + modules/CIAO/ccm/CCM_Context.idl | 45 + modules/CIAO/ccm/CCM_Cookie.idl | 18 + modules/CIAO/ccm/CCM_EnterpriseComponent.idl | 12 + modules/CIAO/ccm/CCM_Entity2Context.idl | 35 + modules/CIAO/ccm/CCM_EntityComponent.idl | 38 + modules/CIAO/ccm/CCM_EntityContext.idl | 22 + modules/CIAO/ccm/CCM_Enumeration.idl | 24 + modules/CIAO/ccm/CCM_EventBase.idl | 13 + modules/CIAO/ccm/CCM_EventConsumerBase.idl | 46 + modules/CIAO/ccm/CCM_Events.idl | 85 + modules/CIAO/ccm/CCM_Exceptions.idl | 26 + modules/CIAO/ccm/CCM_ExecutorLocator.idl | 28 + modules/CIAO/ccm/CCM_Home.idl | 29 + modules/CIAO/ccm/CCM_HomeConfiguration.idl | 23 + modules/CIAO/ccm/CCM_HomeExecutorBase.idl | 14 + modules/CIAO/ccm/CCM_HomeFinder.idl | 29 + modules/CIAO/ccm/CCM_HomeRegistration.idl | 21 + modules/CIAO/ccm/CCM_Homes.idl | 19 + modules/CIAO/ccm/CCM_KeylessCCMHome.idl | 19 + modules/CIAO/ccm/CCM_Navigation.idl | 41 + modules/CIAO/ccm/CCM_Object.idl | 58 + modules/CIAO/ccm/CCM_PrimaryKeyBase.idl | 13 + modules/CIAO/ccm/CCM_ProxyHomeRegistration.idl | 23 + modules/CIAO/ccm/CCM_Receptacle.idl | 55 + modules/CIAO/ccm/CCM_Session2Context.idl | 37 + modules/CIAO/ccm/CCM_SessionComponent.idl | 34 + modules/CIAO/ccm/CCM_SessionContext.idl | 18 + modules/CIAO/ccm/CCM_SessionSynchronization.idl | 26 + modules/CIAO/ccm/CCM_StandardConfigurator.idl | 28 + modules/CIAO/ccm/CCM_StateIdFactory.idl | 59 + modules/CIAO/ccm/CCM_Stub_Export.h | 58 + modules/CIAO/ccm/CCM_Svnt_Export.h | 58 + modules/CIAO/ccm/CCM_Transaction.idl | 76 + .../ccm/ComponentServer/CCM_ComponentServer.idl | 62 + .../ccm/ComponentServer/CCM_ComponentServer.mpc | 65 + .../ComponentServer/CCM_ComponentServer_Base.idl | 56 + .../ComponentServer/CCM_ComponentServer_Client.idl | 47 + modules/CIAO/ccm/Components.idl | 17 + modules/CIAO/ccm/CosPersistentState.idl | 21 + modules/CIAO/ccm/Security.idl | 23 + .../CIAO/ciao/ComponentServer/CIAO_CS_Client.idl | 35 + .../CIAO_ComponentInstallation_Impl.cpp | 129 + .../CIAO_ComponentInstallation_Impl.h | 65 + .../ciao/ComponentServer/CIAO_ComponentServer.cpp | 42 + .../ciao/ComponentServer/CIAO_ComponentServer.idl | 79 + .../ciao/ComponentServer/CIAO_ComponentServer.mpc | 119 + .../ComponentServer/CIAO_ComponentServer_Impl.cpp | 268 + .../ComponentServer/CIAO_ComponentServer_Impl.h | 82 + .../ComponentServer/CIAO_ComponentServer_Task.cpp | 308 + .../ComponentServer/CIAO_ComponentServer_Task.h | 50 + .../ciao/ComponentServer/CIAO_Container_Impl.cpp | 490 + .../ciao/ComponentServer/CIAO_Container_Impl.h | 129 + .../ciao/ComponentServer/CIAO_FailureReasons.idl | 25 + .../CIAO/ciao/ComponentServer/CIAO_Properties.idl | 27 + .../ComponentServer/CIAO_RTComponentServer.cpp | 43 + .../CIAO_RTComponentServer_Task.cpp | 422 + .../ComponentServer/CIAO_RTComponentServer_Task.h | 54 + .../ComponentServer/CIAO_ServerActivator_Impl.cpp | 510 + .../ComponentServer/CIAO_ServerActivator_Impl.h | 191 + modules/CIAO/ciao/ComponentServer/Client_init.cpp | 99 + modules/CIAO/ciao/ComponentServer/Client_init.h | 74 + modules/CIAO/ciao/ComponentServer/Server_init.cpp | 42 + modules/CIAO/ciao/ComponentServer/Server_init.h | 59 + .../ciao/Containers/CIAO_Servant_Activator.idl | 24 + .../ciao/Containers/CIAO_Servant_Activator.mpc | 24 + modules/CIAO/ciao/Containers/Container_Base.cpp | 48 + modules/CIAO/ciao/Containers/Container_Base.h | 146 + modules/CIAO/ciao/Containers/Container_Base.idl | 95 + modules/CIAO/ciao/Containers/Container_Base.inl | 22 + modules/CIAO/ciao/Containers/Containers.mpc | 30 + modules/CIAO/ciao/Containers/Servant_Activator.cpp | 172 + modules/CIAO/ciao/Containers/Servant_Activator.h | 99 + .../ciao/Containers/Session/Session_Container.cpp | 1009 ++ .../ciao/Containers/Session/Session_Container.h | 239 + .../ciao/Containers/Session/Session_Container.idl | 15 + .../ciao/Containers/Session/Session_Container.inl | 13 + .../ciao/Containers/Session/Session_Container.mpc | 30 + modules/CIAO/ciao/Contexts/Context.mpc | 16 + modules/CIAO/ciao/Contexts/Context_Impl_Base.cpp | 76 + modules/CIAO/ciao/Contexts/Context_Impl_Base.h | 103 + modules/CIAO/ciao/Contexts/Context_Impl_Base.inl | 24 + modules/CIAO/ciao/Contexts/Context_Impl_T.cpp | 58 + modules/CIAO/ciao/Contexts/Context_Impl_T.h | 110 + modules/CIAO/ciao/Contexts/Context_Impl_export.h | 58 + modules/CIAO/ciao/Logger/CIAO_Logger_Export.h | 58 + modules/CIAO/ciao/Logger/Log_Macros.cpp | 6 + modules/CIAO/ciao/Logger/Log_Macros.h | 97 + modules/CIAO/ciao/Logger/Logger.mpc | 16 + modules/CIAO/ciao/Logger/Logger_Service.cpp | 146 + modules/CIAO/ciao/Logger/Logger_Service.h | 32 + modules/CIAO/ciao/Servants/CIAO_Port_Activator.idl | 38 + .../CIAO/ciao/Servants/CIAO_Servant_Impl_export.h | 58 + .../CIAO/ciao/Servants/Home_Servant_Impl_Base.cpp | 30 + .../CIAO/ciao/Servants/Home_Servant_Impl_Base.h | 67 + modules/CIAO/ciao/Servants/Home_Servant_Impl_T.cpp | 225 + modules/CIAO/ciao/Servants/Home_Servant_Impl_T.h | 107 + modules/CIAO/ciao/Servants/Port_Activator.cpp | 39 + modules/CIAO/ciao/Servants/Port_Activator.h | 84 + modules/CIAO/ciao/Servants/Port_Activator_T.cpp | 81 + modules/CIAO/ciao/Servants/Port_Activator_T.h | 80 + modules/CIAO/ciao/Servants/Servant_Impl_Base.cpp | 649 + modules/CIAO/ciao/Servants/Servant_Impl_Base.h | 242 + modules/CIAO/ciao/Servants/Servant_Impl_T.cpp | 191 + modules/CIAO/ciao/Servants/Servant_Impl_T.h | 94 + .../CIAO/ciao/Servants/Servant_Impl_Utils_T.cpp | 182 + modules/CIAO/ciao/Servants/Servants.mpc | 57 + .../ciao/Servants/StandardConfigurator_Impl.cpp | 33 + .../CIAO/ciao/Servants/StandardConfigurator_Impl.h | 73 + .../CIAO/ciao/Valuetype_Factories/ConfigValue.cpp | 43 + .../CIAO/ciao/Valuetype_Factories/ConfigValue.h | 37 + .../ciao/Valuetype_Factories/ConfigValue_Export.h | 58 + .../CIAO/ciao/Valuetype_Factories/Cookie_Export.h | 58 + modules/CIAO/ciao/Valuetype_Factories/Cookies.cpp | 68 + modules/CIAO/ciao/Valuetype_Factories/Cookies.h | 70 + modules/CIAO/ciao/Valuetype_Factories/Cookies.inl | 10 + .../CIAO/ciao/Valuetype_Factories/Factories.mpc | 23 + modules/CIAO/ciao/Version.h | 9 + .../ami4ccm/docs/AMI4CCM-explanation.odt | Bin 0 -> 15936 bytes .../CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt | Bin 0 -> 20432 bytes .../ami4ccm/examples/Hello/Base/Hello.idl | 31 + .../ami4ccm/examples/Hello/Base/Hello.mpc | 109 + .../ami4ccm/examples/Hello/Connector/AMI.idl | 27 + .../ami4ccm/examples/Hello/Connector/AMI.mpc | 224 + .../examples/Hello/Connector/AMI_MyFoo_i.cpp | 140 + .../ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.h | 47 + .../ami4ccm/examples/Hello/Connector/AMI_exec.cpp | 201 + .../ami4ccm/examples/Hello/Connector/AMI_exec.h | 89 + .../examples/Hello/Connector/Hello_Base.idl | 54 + .../examples/Hello/Receiver/Hello_Receiver.idl | 19 + .../examples/Hello/Receiver/Hello_Receiver.mpc | 135 + .../Hello/Receiver/Hello_Receiver_exec.cpp | 156 + .../examples/Hello/Receiver/Hello_Receiver_exec.h | 67 + .../ami4ccm/examples/Hello/Sender/Hello_Sender.idl | 24 + .../ami4ccm/examples/Hello/Sender/Hello_Sender.mpc | 139 + .../examples/Hello/Sender/Hello_Sender_exec.cpp | 333 + .../examples/Hello/Sender/Hello_Sender_exec.h | 117 + .../ami4ccm/examples/Hello/descriptors/Plan.cdp | 373 + .../ami4ccm/examples/Hello/descriptors/run_test.pl | 242 + modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf | Bin 0 -> 386299 bytes modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf | Bin 0 -> 917372 bytes modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf | Bin 0 -> 35850 bytes .../connectors/dds4ccm/docs/DDS_DefaultQoS.xml | 254 + .../connectors/dds4ccm/docs/DDS_QoSProfile.xsd | 390 + .../connectors/dds4ccm/docs/DDSforCCM-meta.uml | 567 + .../CIAO/connectors/dds4ccm/docs/TestCoverage.ods | Bin 0 -> 16517 bytes .../docs/_DDS for CCM Readable Files README.pdf | Bin 0 -> 26381 bytes modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl | 396 + .../CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl | 44 + modules/CIAO/connectors/dds4ccm/docs/details.txt | 33 + .../dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf | Bin 0 -> 1169849 bytes .../dds4ccm/examples/Hello/Base/Hello_Base.idl | 18 + .../dds4ccm/examples/Hello/Base/Hello_Base.mpc | 80 + .../examples/Hello/Connector/Hello_Connector.idl | 28 + .../examples/Hello/Connector/Hello_Connector.mpc | 150 + .../Hello/Connector/Hello_Connector_exec.cpp | 30 + .../Hello/Connector/Hello_Connector_exec.h | 61 + .../examples/Hello/DDS_Receiver/DDS_Receiver.mpc | 11 + .../examples/Hello/DDS_Receiver/Hello_Receiver.cpp | 169 + .../examples/Hello/DDS_Sender/DDS_Sender.mpc | 11 + .../examples/Hello/DDS_Sender/Hello_Sender.cpp | 151 + .../examples/Hello/Receiver/Hello_Receiver.idl | 26 + .../examples/Hello/Receiver/Hello_Receiver.mpc | 144 + .../Hello/Receiver/Hello_Receiver_exec.cpp | 305 + .../examples/Hello/Receiver/Hello_Receiver_exec.h | 186 + .../dds4ccm/examples/Hello/Sender/Hello_Sender.idl | 39 + .../dds4ccm/examples/Hello/Sender/Hello_Sender.mpc | 145 + .../examples/Hello/Sender/Hello_Sender_exec.cpp | 278 + .../examples/Hello/Sender/Hello_Sender_exec.h | 150 + .../dds4ccm/examples/Hello/descriptors/1_to_5.cdp | 1048 ++ .../examples/Hello/descriptors/5_Receivers.cdp | 1041 ++ .../examples/Hello/descriptors/5_Senders.cdp | 882 + .../dds4ccm/examples/Hello/descriptors/5_to_1.cdp | 1043 ++ .../examples/Hello/descriptors/DeploymentPlan.cdp | 463 + .../examples/Hello/descriptors/ReceiverOnly.cdp | 248 + .../examples/Hello/descriptors/SenderOnly.cdp | 199 + .../Hello/descriptors/USER_QOS_PROFILES.xml | 61 + .../examples/Hello/descriptors/run_1_to_5.pl | 236 + .../examples/Hello/descriptors/run_5_to_1.pl | 236 + .../examples/Hello/descriptors/run_5_to_5.pl | 250 + .../examples/Hello/descriptors/run_receiver.pl | 242 + .../examples/Hello/descriptors/run_sender.pl | 242 + .../dds4ccm/examples/Hello/descriptors/run_test.pl | 236 + .../examples/Hello/descriptors/run_test_dds.pl | 26 + .../dds4ccm/examples/Quoter/Base/Quoter_Base.idl | 23 + .../dds4ccm/examples/Quoter/Base/Quoter_Base.mpc | 78 + .../dds4ccm/examples/Quoter/Broker/Broker.idl | 35 + .../dds4ccm/examples/Quoter/Broker/Broker.mpc | 139 + .../dds4ccm/examples/Quoter/Broker/Broker_exec.cpp | 352 + .../dds4ccm/examples/Quoter/Broker/Broker_exec.h | 163 + .../examples/Quoter/Connector/Quoter_Connector.idl | 26 + .../examples/Quoter/Connector/Quoter_Connector.mpc | 145 + .../Quoter/Connector/Quoter_Connector_exec.cpp | 30 + .../Quoter/Connector/Quoter_Connector_exec.h | 61 + .../examples/Quoter/Distributor/Distributor.idl | 36 + .../examples/Quoter/Distributor/Distributor.mpc | 140 + .../Quoter/Distributor/Distributor_exec.cpp | 304 + .../examples/Quoter/Distributor/Distributor_exec.h | 166 + .../dds4ccm/examples/Quoter/descriptors/Plan.cdp | 425 + .../examples/Quoter/descriptors/run_test.pl | 242 + .../dds4ccm/examples/Shapes/Base/Shapes_Base.idl | 26 + .../dds4ccm/examples/Shapes/Base/Shapes_Base.mpc | 77 + .../examples/Shapes/Connector/Shapes_Connector.idl | 28 + .../examples/Shapes/Connector/Shapes_Connector.mpc | 145 + .../Shapes/Connector/Shapes_Connector_exec.cpp | 30 + .../Shapes/Connector/Shapes_Connector_exec.h | 61 + .../examples/Shapes/Receiver/Shapes_Receiver.idl | 27 + .../examples/Shapes/Receiver/Shapes_Receiver.mpc | 139 + .../Shapes/Receiver/Shapes_Receiver_exec.cpp | 369 + .../Shapes/Receiver/Shapes_Receiver_exec.h | 150 + .../examples/Shapes/Sender/Shapes_Sender.idl | 29 + .../examples/Shapes/Sender/Shapes_Sender.mpc | 140 + .../examples/Shapes/Sender/Shapes_Sender_exec.cpp | 288 + .../examples/Shapes/Sender/Shapes_Sender_exec.h | 104 + .../dds4ccm/examples/Shapes/descriptors/Plan.cdp | 464 + .../examples/Shapes/descriptors/run_test.pl | 242 + .../id3p_test/Multiple_Reader_Ports/test.idl3p | 17 + modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl | 141 + modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h | 83 + modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h | 54 + modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc | 140 + .../CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl | 69 + .../connectors/dds4ccm/idl/dds4ccm_Connector.idl | 29 + .../idl/dds4ccm_ConnectorStatusListener.idl | 32 + .../dds4ccm/idl/dds4ccm_DataListenerControl.idl | 21 + .../dds4ccm/idl/dds4ccm_PortStatusListener.idl | 22 + .../dds4ccm/idl/dds4ccm_StateListenerControl.idl | 19 + .../CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl | 1237 ++ .../dds4ccm/idl/dds_rtf2_dcps_i_handle.idl | 16 + .../dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl | 12 + .../dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp | 12 + .../dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h | 33 + .../dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h | 66 + .../dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h | 48 + .../dds4ccm/impl/ndds/Coherent_Changes_Guard.cpp | 19 + .../dds4ccm/impl/ndds/Coherent_Changes_Guard.h | 38 + .../connectors/dds4ccm/impl/ndds/DDS4CCM_Traits.h | 71 + .../dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp | 216 + .../dds4ccm/impl/ndds/DDS_Base_Connector_T.h | 56 + .../dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp | 163 + .../dds4ccm/impl/ndds/DDS_Event_Connector_T.h | 89 + .../connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp | 160 + .../CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.h | 61 + .../connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp | 168 + .../connectors/dds4ccm/impl/ndds/DDS_Listen_T.h | 60 + .../connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp | 153 + .../CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.h | 58 + .../dds4ccm/impl/ndds/DDS_StateListen_T.cpp | 165 + .../dds4ccm/impl/ndds/DDS_StateListen_T.h | 61 + .../dds4ccm/impl/ndds/DDS_State_Connector_T.cpp | 199 + .../dds4ccm/impl/ndds/DDS_State_Connector_T.h | 110 + .../impl/ndds/DDS_TopicBase_Connector_T.cpp | 258 + .../dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h | 54 + .../connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp | 142 + .../connectors/dds4ccm/impl/ndds/DDS_Update_T.h | 51 + .../connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp | 148 + .../connectors/dds4ccm/impl/ndds/DDS_Write_T.h | 58 + .../dds4ccm/impl/ndds/DataListenerControl_T.cpp | 50 + .../dds4ccm/impl/ndds/DataListenerControl_T.h | 48 + .../connectors/dds4ccm/impl/ndds/DataReader.cpp | 285 + .../CIAO/connectors/dds4ccm/impl/ndds/DataReader.h | 144 + .../dds4ccm/impl/ndds/DataReaderHandler_T.cpp | 56 + .../dds4ccm/impl/ndds/DataReaderHandler_T.h | 44 + .../dds4ccm/impl/ndds/DataReaderListener.cpp | 135 + .../dds4ccm/impl/ndds/DataReaderListener.h | 63 + .../dds4ccm/impl/ndds/DataReaderListener_T.cpp | 133 + .../dds4ccm/impl/ndds/DataReaderListener_T.h | 49 + .../connectors/dds4ccm/impl/ndds/DataReaderQos.h | 93 + .../impl/ndds/DataReaderStateListener_T.cpp | 206 + .../dds4ccm/impl/ndds/DataReaderStateListener_T.h | 50 + .../connectors/dds4ccm/impl/ndds/DataWriter.cpp | 210 + .../CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h | 108 + .../dds4ccm/impl/ndds/DataWriterListener.cpp | 87 + .../dds4ccm/impl/ndds/DataWriterListener.h | 62 + .../dds4ccm/impl/ndds/DataWriterListener_T.cpp | 26 + .../dds4ccm/impl/ndds/DataWriterListener_T.h | 55 + .../connectors/dds4ccm/impl/ndds/DataWriterQos.h | 108 + .../dds4ccm/impl/ndds/DeadlineQosPolicy.h | 38 + .../dds4ccm/impl/ndds/DestinationOrderQosPolicy.h | 38 + .../dds4ccm/impl/ndds/DomainParticipant.cpp | 692 + .../dds4ccm/impl/ndds/DomainParticipant.h | 200 + .../dds4ccm/impl/ndds/DomainParticipantFactory.cpp | 176 + .../dds4ccm/impl/ndds/DomainParticipantFactory.h | 79 + .../impl/ndds/DomainParticipantFactoryQos.h | 38 + .../impl/ndds/DomainParticipantListener.cpp | 40 + .../dds4ccm/impl/ndds/DomainParticipantListener.h | 44 + .../impl/ndds/DomainParticipantListener_T.cpp | 32 + .../impl/ndds/DomainParticipantListener_T.h | 90 + .../dds4ccm/impl/ndds/DomainParticipantQos.h | 42 + .../dds4ccm/impl/ndds/DurabilityQosPolicy.h | 36 + .../dds4ccm/impl/ndds/DurabilityServiceQosPolicy.h | 58 + .../CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h | 35 + .../dds4ccm/impl/ndds/EntityFactoryQosPolicy.h | 36 + .../CIAO/connectors/dds4ccm/impl/ndds/Getter_T.cpp | 305 + .../CIAO/connectors/dds4ccm/impl/ndds/Getter_T.h | 70 + .../dds4ccm/impl/ndds/GroupDataQosPolicy.h | 45 + .../dds4ccm/impl/ndds/HistoryQosPolicy.h | 40 + .../dds4ccm/impl/ndds/InconsistentTopicStatus.h | 41 + .../dds4ccm/impl/ndds/InstanceHandleManager_T.cpp | 91 + .../dds4ccm/impl/ndds/InstanceHandleManager_T.h | 55 + .../dds4ccm/impl/ndds/InstanceHandleSeq.h | 60 + .../dds4ccm/impl/ndds/InstanceHandle_t.h | 45 + .../dds4ccm/impl/ndds/LatencyBudgetQosPolicy.h | 38 + .../dds4ccm/impl/ndds/LifespanQosPolicy.h | 38 + .../dds4ccm/impl/ndds/LivelinessChangedStatus.h | 55 + .../dds4ccm/impl/ndds/LivelinessLostStatus.h | 41 + .../dds4ccm/impl/ndds/LivelinessQosPolicy.h | 42 + .../impl/ndds/OfferedDeadlineMissedStatus.h | 47 + .../impl/ndds/OfferedIncompatibleQosStatus.h | 51 + .../dds4ccm/impl/ndds/OwnershipQosPolicy.h | 36 + .../dds4ccm/impl/ndds/OwnershipStrengthQosPolicy.h | 36 + .../dds4ccm/impl/ndds/PartitionQosPolicy.h | 46 + .../dds4ccm/impl/ndds/PortStatusListener_T.cpp | 85 + .../dds4ccm/impl/ndds/PortStatusListener_T.h | 73 + .../dds4ccm/impl/ndds/PresentationQosPolicy.h | 40 + .../dds4ccm/impl/ndds/PublicationMatchedStatus.h | 55 + .../connectors/dds4ccm/impl/ndds/Publisher.cpp | 328 + .../CIAO/connectors/dds4ccm/impl/ndds/Publisher.h | 128 + .../dds4ccm/impl/ndds/PublisherListener.cpp | 101 + .../dds4ccm/impl/ndds/PublisherListener.h | 67 + .../dds4ccm/impl/ndds/PublisherListener_T.cpp | 147 + .../dds4ccm/impl/ndds/PublisherListener_T.h | 62 + .../connectors/dds4ccm/impl/ndds/PublisherQos.h | 53 + .../dds4ccm/impl/ndds/QosPolicyCountSeq.h | 34 + .../dds4ccm/impl/ndds/QueryCondition.cpp | 108 + .../connectors/dds4ccm/impl/ndds/QueryCondition.h | 79 + .../connectors/dds4ccm/impl/ndds/ReadCondition.cpp | 83 + .../connectors/dds4ccm/impl/ndds/ReadCondition.h | 68 + .../impl/ndds/ReaderDataLifecycleQosPolicy.h | 40 + .../CIAO/connectors/dds4ccm/impl/ndds/Reader_T.cpp | 353 + .../CIAO/connectors/dds4ccm/impl/ndds/Reader_T.h | 89 + .../dds4ccm/impl/ndds/ReliabilityQosPolicy.h | 42 + .../impl/ndds/RequestedDeadlineMissedStatus.h | 47 + .../impl/ndds/RequestedIncompatibleQosStatus.h | 51 + .../dds4ccm/impl/ndds/ResourceLimitsQosPolicy.h | 44 + .../CIAO/connectors/dds4ccm/impl/ndds/SampleInfo.h | 56 + .../dds4ccm/impl/ndds/SampleLostStatus.h | 28 + .../dds4ccm/impl/ndds/SampleRejectedStatus.h | 51 + .../dds4ccm/impl/ndds/StateListenerControl_T.cpp | 35 + .../dds4ccm/impl/ndds/StateListenerControl_T.h | 38 + .../dds4ccm/impl/ndds/StatusCondition.cpp | 77 + .../connectors/dds4ccm/impl/ndds/StatusCondition.h | 66 + .../connectors/dds4ccm/impl/ndds/Subscriber.cpp | 324 + .../CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h | 140 + .../dds4ccm/impl/ndds/SubscriberListener.cpp | 158 + .../dds4ccm/impl/ndds/SubscriberListener.h | 83 + .../dds4ccm/impl/ndds/SubscriberListener_T.cpp | 174 + .../dds4ccm/impl/ndds/SubscriberListener_T.h | 76 + .../connectors/dds4ccm/impl/ndds/SubscriberQos.h | 50 + .../dds4ccm/impl/ndds/SubscriptionMatchedStatus.h | 56 + .../dds4ccm/impl/ndds/TimeBasedFilterQosPolicy.h | 38 + modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h | 35 + .../CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp | 144 + modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h | 85 + .../dds4ccm/impl/ndds/TopicDataQosPolicy.h | 45 + .../dds4ccm/impl/ndds/TopicDescription.cpp | 74 + .../dds4ccm/impl/ndds/TopicDescription.h | 62 + .../connectors/dds4ccm/impl/ndds/TopicListener.cpp | 47 + .../connectors/dds4ccm/impl/ndds/TopicListener.h | 46 + .../dds4ccm/impl/ndds/TopicListener_T.cpp | 43 + .../connectors/dds4ccm/impl/ndds/TopicListener_T.h | 40 + .../CIAO/connectors/dds4ccm/impl/ndds/TopicQos.h | 98 + .../dds4ccm/impl/ndds/TransportPriorityQosPolicy.h | 36 + .../connectors/dds4ccm/impl/ndds/Updater_T.cpp | 304 + .../CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h | 89 + .../dds4ccm/impl/ndds/UserDataQosPolicy.h | 46 + .../CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp | 10 + modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h | 74 + .../impl/ndds/WriterDataLifecycleQosPolicy.h | 36 + .../CIAO/connectors/dds4ccm/impl/ndds/Writer_T.cpp | 98 + .../CIAO/connectors/dds4ccm/impl/ndds/Writer_T.h | 58 + .../dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h | 58 + .../connectors/dds4ccm/impl/ndds/ndds_impl.mpc | 39 + .../CSLDeadline/Base/CSL_DeadlineTest_Base.idl | 18 + .../CSLDeadline/Base/CSL_DeadlineTest_Base.mpc | 77 + .../Connector/CSL_DeadlineTest_Connector.idl | 29 + .../Connector/CSL_DeadlineTest_Connector.mpc | 145 + .../Connector/CSL_DeadlineTest_Connector_exec.cpp | 30 + .../Connector/CSL_DeadlineTest_Connector_exec.h | 62 + .../Receiver/CSL_DeadlineTest_Receiver.idl | 25 + .../Receiver/CSL_DeadlineTest_Receiver.mpc | 138 + .../Receiver/CSL_DeadlineTest_Receiver_exec.cpp | 220 + .../Receiver/CSL_DeadlineTest_Receiver_exec.h | 147 + .../CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl | 27 + .../CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc | 140 + .../Sender/CSL_DeadlineTest_Sender_exec.cpp | 181 + .../Sender/CSL_DeadlineTest_Sender_exec.h | 93 + .../dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp | 411 + .../CSLDeadline/descriptors/USER_QOS_PROFILES.xml | 79 + .../tests/CSLDeadline/descriptors/run_test.pl | 242 + .../dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl | 18 + .../dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc | 77 + .../CSLQoS/Connector/CSL_QoSTest_Connector.idl | 29 + .../CSLQoS/Connector/CSL_QoSTest_Connector.mpc | 145 + .../Connector/CSL_QoSTest_Connector_exec.cpp | 27 + .../CSLQoS/Connector/CSL_QoSTest_Connector_exec.h | 62 + .../tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl | 25 + .../tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc | 138 + .../CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp | 221 + .../CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h | 135 + .../tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl | 26 + .../tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc | 140 + .../CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp | 142 + .../tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h | 83 + .../dds4ccm/tests/CSLQoS/descriptors/Plan.cdp | 392 + .../tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml | 67 + .../dds4ccm/tests/CSLQoS/descriptors/run_test.pl | 242 + .../CSLSampleRejected/Base/CSL_SRTest_Base.idl | 18 + .../CSLSampleRejected/Base/CSL_SRTest_Base.mpc | 77 + .../Connector/CSL_SRTest_Connector.idl | 29 + .../Connector/CSL_SRTest_Connector.mpc | 145 + .../Connector/CSL_SRTest_Connector_exec.cpp | 29 + .../Connector/CSL_SRTest_Connector_exec.h | 62 + .../Receiver/CSL_SRTest_Receiver.idl | 28 + .../Receiver/CSL_SRTest_Receiver.mpc | 138 + .../Receiver/CSL_SRTest_Receiver_exec.cpp | 357 + .../Receiver/CSL_SRTest_Receiver_exec.h | 177 + .../CSLSampleRejected/Sender/CSL_SRTest_Sender.idl | 27 + .../CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc | 140 + .../Sender/CSL_SRTest_Sender_exec.cpp | 218 + .../Sender/CSL_SRTest_Sender_exec.h | 114 + .../tests/CSLSampleRejected/descriptors/Plan.cdp | 510 + .../descriptors/USER_QOS_PROFILES.xml | 127 + .../CSLSampleRejected/descriptors/run_test.pl | 242 + .../tests/CSLUnexpStat/Base/CSL_USTest_Base.idl | 18 + .../tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc | 77 + .../Connector/CSL_USTest_Connector.idl | 29 + .../Connector/CSL_USTest_Connector.mpc | 145 + .../Connector/CSL_USTest_Connector_exec.cpp | 29 + .../Connector/CSL_USTest_Connector_exec.h | 62 + .../CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl | 25 + .../CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc | 138 + .../Receiver/CSL_USTest_Receiver_exec.cpp | 234 + .../Receiver/CSL_USTest_Receiver_exec.h | 141 + .../CSLUnexpStat/Sender/CSL_USTest_Sender.idl | 27 + .../CSLUnexpStat/Sender/CSL_USTest_Sender.mpc | 140 + .../CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp | 156 + .../CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h | 97 + .../tests/CSLUnexpStat/descriptors/Plan.cdp | 408 + .../tests/CSLUnexpStat/descriptors/run_test.pl | 242 + .../Base/Event_Connection_Test_Base.idl | 18 + .../Base/Event_Connection_Test_Base.mpc | 76 + .../Connector/Event_Connection_Test_Connector.idl | 26 + .../Connector/Event_Connection_Test_Connector.mpc | 145 + .../Event_Connection_Test_Connector_exec.cpp | 30 + .../Event_Connection_Test_Connector_exec.h | 61 + .../dds4ccm/tests/Event_Connection_Test/README | 25 + .../Receiver/Event_Connection_Test_Receiver.idl | 24 + .../Receiver/Event_Connection_Test_Receiver.mpc | 138 + .../Event_Connection_Test_Receiver_exec.cpp | 233 + .../Receiver/Event_Connection_Test_Receiver_exec.h | 87 + .../Sender/Event_Connection_Test_Sender.idl | 24 + .../Sender/Event_Connection_Test_Sender.mpc | 140 + .../Sender/Event_Connection_Test_Sender_exec.cpp | 94 + .../Sender/Event_Connection_Test_Sender_exec.h | 53 + .../Event_Connection_Test/descriptors/Plan.cdp | 508 + .../Event_Connection_Test/descriptors/run_test.pl | 242 + .../dds4ccm/tests/Getter/Base/Get_Invoker.idl | 19 + .../dds4ccm/tests/Getter/Base/Get_Invoker.mpc | 115 + .../dds4ccm/tests/Getter/Base/Getter_Test_Base.idl | 18 + .../dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc | 76 + .../Getter/Connector/Getter_Test_Connector.idl | 26 + .../Getter/Connector/Getter_Test_Connector.mpc | 145 + .../Connector/Getter_Test_Connector_exec.cpp | 30 + .../Getter/Connector/Getter_Test_Connector_exec.h | 61 + .../CIAO/connectors/dds4ccm/tests/Getter/README | 15 + .../tests/Getter/Receiver/Getter_Test_Receiver.idl | 27 + .../tests/Getter/Receiver/Getter_Test_Receiver.mpc | 157 + .../Getter/Receiver/Getter_Test_Receiver_exec.cpp | 400 + .../Getter/Receiver/Getter_Test_Receiver_exec.h | 135 + .../tests/Getter/Sender/Getter_Test_Sender.idl | 33 + .../tests/Getter/Sender/Getter_Test_Sender.mpc | 152 + .../Getter/Sender/Getter_Test_Sender_exec.cpp | 278 + .../tests/Getter/Sender/Getter_Test_Sender_exec.h | 124 + .../dds4ccm/tests/Getter/descriptors/Plan.cdp | 366 + .../dds4ccm/tests/Getter/descriptors/run_test.pl | 248 + .../tests/KeyedSamples/Base/Keyed_Test_Base.idl | 18 + .../tests/KeyedSamples/Base/Keyed_Test_Base.mpc | 77 + .../Connector/Keyed_Test_Connector.idl | 26 + .../Connector/Keyed_Test_Connector.mpc | 145 + .../Connector/Keyed_Test_Connector_exec.cpp | 30 + .../Connector/Keyed_Test_Connector_exec.h | 61 + .../connectors/dds4ccm/tests/KeyedSamples/README | 16 + .../KeyedSamples/Receiver/Keyed_Test_Receiver.idl | 25 + .../KeyedSamples/Receiver/Keyed_Test_Receiver.mpc | 138 + .../Receiver/Keyed_Test_Receiver_exec.cpp | 233 + .../Receiver/Keyed_Test_Receiver_exec.h | 104 + .../KeyedSamples/Sender/Keyed_Test_Sender.idl | 27 + .../KeyedSamples/Sender/Keyed_Test_Sender.mpc | 140 + .../KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp | 202 + .../KeyedSamples/Sender/Keyed_Test_Sender_exec.h | 93 + .../tests/KeyedSamples/descriptors/Plan.cdp | 431 + .../tests/KeyedSamples/descriptors/run_test.pl | 242 + .../dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl | 18 + .../dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc | 77 + .../KeyedWriter/Connector/Writer_Connector.idl | 26 + .../KeyedWriter/Connector/Writer_Connector.mpc | 145 + .../Connector/Writer_Connector_exec.cpp | 30 + .../KeyedWriter/Connector/Writer_Connector_exec.h | 60 + .../connectors/dds4ccm/tests/KeyedWriter/README | 12 + .../tests/KeyedWriter/Receiver/Writer_Receiver.idl | 22 + .../tests/KeyedWriter/Receiver/Writer_Receiver.mpc | 138 + .../KeyedWriter/Receiver/Writer_Receiver_exec.cpp | 125 + .../KeyedWriter/Receiver/Writer_Receiver_exec.h | 75 + .../tests/KeyedWriter/Sender/Writer_Sender.idl | 27 + .../tests/KeyedWriter/Sender/Writer_Sender.mpc | 140 + .../KeyedWriter/Sender/Writer_Sender_exec.cpp | 368 + .../tests/KeyedWriter/Sender/Writer_Sender_exec.h | 116 + .../dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp | 383 + .../KeyedWriter/descriptors/USER_QOS_PROFILES.xml | 70 + .../tests/KeyedWriter/descriptors/run_test.pl | 242 + .../tests/ListenManyByMany/Base/LMBM_Test_Base.idl | 18 + .../tests/ListenManyByMany/Base/LMBM_Test_Base.mpc | 76 + .../Connector/LMBM_Test_Connector.idl | 26 + .../Connector/LMBM_Test_Connector.mpc | 145 + .../Connector/LMBM_Test_Connector_exec.cpp | 30 + .../Connector/LMBM_Test_Connector_exec.h | 61 + .../dds4ccm/tests/ListenManyByMany/README | 3 + .../Receiver/LMBM_Test_Receiver.idl | 26 + .../Receiver/LMBM_Test_Receiver.mpc | 151 + .../Receiver/LMBM_Test_Receiver_exec.cpp | 315 + .../Receiver/LMBM_Test_Receiver_exec.h | 146 + .../ListenManyByMany/Sender/LMBM_Test_Sender.idl | 27 + .../ListenManyByMany/Sender/LMBM_Test_Sender.mpc | 149 + .../Sender/LMBM_Test_Sender_exec.cpp | 216 + .../Sender/LMBM_Test_Sender_exec.h | 98 + .../tests/ListenManyByMany/descriptors/Plan.cdp | 414 + .../descriptors/USER_QOS_PROFILES.xml | 64 + .../tests/ListenManyByMany/descriptors/run_test.pl | 242 + .../tests/ListenNotEnabled/Base/LNE_Test_Base.idl | 18 + .../tests/ListenNotEnabled/Base/LNE_Test_Base.mpc | 76 + .../Connector/LNE_Test_Connector.idl | 26 + .../Connector/LNE_Test_Connector.mpc | 145 + .../Connector/LNE_Test_Connector_exec.cpp | 30 + .../Connector/LNE_Test_Connector_exec.h | 61 + .../dds4ccm/tests/ListenNotEnabled/README | 3 + .../Receiver/LNE_Test_Receiver.idl | 23 + .../Receiver/LNE_Test_Receiver.mpc | 151 + .../Receiver/LNE_Test_Receiver_exec.cpp | 207 + .../Receiver/LNE_Test_Receiver_exec.h | 125 + .../ListenNotEnabled/Sender/LNE_Test_Sender.idl | 27 + .../ListenNotEnabled/Sender/LNE_Test_Sender.mpc | 149 + .../Sender/LNE_Test_Sender_exec.cpp | 165 + .../ListenNotEnabled/Sender/LNE_Test_Sender_exec.h | 75 + .../tests/ListenNotEnabled/descriptors/Plan.cdp | 350 + .../tests/ListenNotEnabled/descriptors/run_test.pl | 242 + .../tests/ListenOneByOne/Base/LOBO_Test_Base.idl | 18 + .../tests/ListenOneByOne/Base/LOBO_Test_Base.mpc | 76 + .../Connector/LOBO_Test_Connector.idl | 26 + .../Connector/LOBO_Test_Connector.mpc | 145 + .../Connector/LOBO_Test_Connector_exec.cpp | 30 + .../Connector/LOBO_Test_Connector_exec.h | 61 + .../connectors/dds4ccm/tests/ListenOneByOne/README | 3 + .../ListenOneByOne/Receiver/LOBO_Test_Receiver.idl | 26 + .../ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc | 151 + .../Receiver/LOBO_Test_Receiver_exec.cpp | 275 + .../Receiver/LOBO_Test_Receiver_exec.h | 142 + .../ListenOneByOne/Sender/LOBO_Test_Sender.idl | 27 + .../ListenOneByOne/Sender/LOBO_Test_Sender.mpc | 149 + .../Sender/LOBO_Test_Sender_exec.cpp | 216 + .../ListenOneByOne/Sender/LOBO_Test_Sender_exec.h | 100 + .../tests/ListenOneByOne/descriptors/Plan.cdp | 392 + .../tests/ListenOneByOne/descriptors/run_test.pl | 242 + .../Base/NonChangeable_Base.idl | 18 + .../Base/NonChangeable_Base.mpc | 77 + .../Connector/NonChangeable_Connector.idl | 26 + .../Connector/NonChangeable_Connector.mpc | 145 + .../Connector/NonChangeable_Connector_exec.cpp | 170 + .../Connector/NonChangeable_Connector_exec.h | 67 + .../dds4ccm/tests/NonChangeableAttribute/README | 15 + .../NonChangeableAttribute/descriptors/Plan.cdp | 98 + .../NonChangeableAttribute/descriptors/run_test.pl | 242 + .../Base/ConnectorStatusListener_Test_Base.idl | 28 + .../Base/ConnectorStatusListener_Test_Base.mpc | 77 + .../ConnectorStatusListener_Test_Connector.idl | 29 + .../ConnectorStatusListener_Test_Connector.mpc | 145 + ...ConnectorStatusListener_Test_Connector_exec.cpp | 30 + .../ConnectorStatusListener_Test_Connector_exec.h | 61 + .../ConnectorStatusListener_Test_Receiver.idl | 24 + .../ConnectorStatusListener_Test_Receiver.mpc | 138 + .../ConnectorStatusListener_Test_Receiver_exec.cpp | 220 + .../ConnectorStatusListener_Test_Receiver_exec.h | 132 + .../SecConnector/CSL_TestSec_Connector_exec.cpp | 30 + .../SecConnector/CSL_TestSec_Connector_exec.h | 61 + .../ConnectorStatusListener_TestSec_Connector.idl | 29 + .../ConnectorStatusListener_TestSec_Connector.mpc | 145 + .../Sender/ConnectorStatusListener_Test_Sender.idl | 28 + .../Sender/ConnectorStatusListener_Test_Sender.mpc | 146 + .../ConnectorStatusListener_Test_Sender_exec.cpp | 149 + .../ConnectorStatusListener_Test_Sender_exec.h | 98 + .../On_Inconsistent_Topic/descriptors/Plan.cdp | 482 + .../On_Inconsistent_Topic/descriptors/run_test.pl | 236 + .../PSLDeadline/Base/PSL_DeadlineTest_Base.idl | 18 + .../PSLDeadline/Base/PSL_DeadlineTest_Base.mpc | 77 + .../Connector/PSL_DeadlineTest_Connector.idl | 29 + .../Connector/PSL_DeadlineTest_Connector.mpc | 145 + .../Connector/PSL_DeadlineTest_Connector_exec.cpp | 30 + .../Connector/PSL_DeadlineTest_Connector_exec.h | 62 + .../Receiver/PSL_DeadlineTest_Receiver.idl | 26 + .../Receiver/PSL_DeadlineTest_Receiver.mpc | 138 + .../Receiver/PSL_DeadlineTest_Receiver_exec.cpp | 311 + .../Receiver/PSL_DeadlineTest_Receiver_exec.h | 158 + .../PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl | 27 + .../PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc | 140 + .../Sender/PSL_DeadlineTest_Sender_exec.cpp | 199 + .../Sender/PSL_DeadlineTest_Sender_exec.h | 106 + .../dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp | 449 + .../PSLDeadline/descriptors/USER_QOS_PROFILES.xml | 85 + .../tests/PSLDeadline/descriptors/run_test.pl | 242 + .../PSLSampleLost/Base/PSL_SampleLost_Base.idl | 18 + .../PSLSampleLost/Base/PSL_SampleLost_Base.mpc | 77 + .../Connector/PSL_SampleLost_Connector.idl | 29 + .../Connector/PSL_SampleLost_Connector.mpc | 145 + .../Connector/PSL_SampleLost_Connector_exec.cpp | 29 + .../Connector/PSL_SampleLost_Connector_exec.h | 62 + .../Receiver/PSL_SampleLost_Receiver.idl | 26 + .../Receiver/PSL_SampleLost_Receiver.mpc | 138 + .../Receiver/PSL_SampleLost_Receiver_exec.cpp | 316 + .../Receiver/PSL_SampleLost_Receiver_exec.h | 162 + .../PSLSampleLost/Sender/PSL_SampleLost_Sender.idl | 27 + .../PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc | 140 + .../Sender/PSL_SampleLost_Sender_exec.cpp | 193 + .../Sender/PSL_SampleLost_Sender_exec.h | 104 + .../tests/PSLSampleLost/descriptors/Plan.cdp | 448 + .../descriptors/USER_QOS_PROFILES.xml | 89 + .../tests/PSLSampleLost/descriptors/run_test.pl | 242 + .../dds4ccm/tests/Reader/Base/Reader_Starter.idl | 18 + .../dds4ccm/tests/Reader/Base/Reader_Starter.mpc | 115 + .../dds4ccm/tests/Reader/Base/Reader_Test_Base.idl | 18 + .../dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc | 76 + .../Reader/Connector/Reader_Test_Connector.idl | 26 + .../Reader/Connector/Reader_Test_Connector.mpc | 145 + .../Connector/Reader_Test_Connector_exec.cpp | 30 + .../Reader/Connector/Reader_Test_Connector_exec.h | 61 + .../CIAO/connectors/dds4ccm/tests/Reader/README | 22 + .../tests/Reader/Receiver/Reader_Test_Receiver.idl | 28 + .../tests/Reader/Receiver/Reader_Test_Receiver.mpc | 157 + .../Reader/Receiver/Reader_Test_Receiver_exec.cpp | 638 + .../Reader/Receiver/Reader_Test_Receiver_exec.h | 151 + .../tests/Reader/Sender/Reader_Test_Sender.idl | 33 + .../tests/Reader/Sender/Reader_Test_Sender.mpc | 152 + .../Reader/Sender/Reader_Test_Sender_exec.cpp | 200 + .../tests/Reader/Sender/Reader_Test_Sender_exec.h | 98 + .../dds4ccm/tests/Reader/descriptors/Plan.cdp | 408 + .../tests/Reader/descriptors/USER_QOS_PROFILES.xml | 64 + .../dds4ccm/tests/Reader/descriptors/run_test.pl | 242 + .../tests/SLDisabled/Base/SL_Disabled_Base.idl | 18 + .../tests/SLDisabled/Base/SL_Disabled_Base.mpc | 77 + .../SLDisabled/Connector/SL_Disabled_Connector.idl | 29 + .../SLDisabled/Connector/SL_Disabled_Connector.mpc | 145 + .../Connector/SL_Disabled_Connector_exec.cpp | 30 + .../Connector/SL_Disabled_Connector_exec.h | 62 + .../SLDisabled/Receiver/SL_Disabled_Receiver.idl | 24 + .../SLDisabled/Receiver/SL_Disabled_Receiver.mpc | 138 + .../Receiver/SL_Disabled_Receiver_exec.cpp | 259 + .../Receiver/SL_Disabled_Receiver_exec.h | 125 + .../tests/SLDisabled/Sender/SL_Disabled_Sender.idl | 25 + .../tests/SLDisabled/Sender/SL_Disabled_Sender.mpc | 140 + .../SLDisabled/Sender/SL_Disabled_Sender_exec.cpp | 358 + .../SLDisabled/Sender/SL_Disabled_Sender_exec.h | 89 + .../dds4ccm/tests/SLDisabled/descriptors/Plan.cdp | 365 + .../tests/SLDisabled/descriptors/run_test.pl | 242 + .../tests/SLManyByMany/Base/SL_ManyByMany_Base.idl | 18 + .../tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc | 77 + .../Connector/SL_ManyByMany_Connector.idl | 29 + .../Connector/SL_ManyByMany_Connector.mpc | 145 + .../Connector/SL_ManyByMany_Connector_exec.cpp | 30 + .../Connector/SL_ManyByMany_Connector_exec.h | 62 + .../Receiver/SL_ManyByMany_Receiver.idl | 24 + .../Receiver/SL_ManyByMany_Receiver.mpc | 138 + .../Receiver/SL_ManyByMany_Receiver_exec.cpp | 381 + .../Receiver/SL_ManyByMany_Receiver_exec.h | 138 + .../SLManyByMany/Sender/SL_ManyByMany_Sender.idl | 25 + .../SLManyByMany/Sender/SL_ManyByMany_Sender.mpc | 140 + .../Sender/SL_ManyByMany_Sender_exec.cpp | 363 + .../Sender/SL_ManyByMany_Sender_exec.h | 89 + .../tests/SLManyByMany/descriptors/Plan.cdp | 365 + .../tests/SLManyByMany/descriptors/run_test.pl | 242 + .../tests/SLOneByOne/Base/SL_OneByOne_Base.idl | 18 + .../tests/SLOneByOne/Base/SL_OneByOne_Base.mpc | 77 + .../SLOneByOne/Connector/SLOneByOne_Connector.mpc | 145 + .../SLOneByOne/Connector/SL_OneByOne_Connector.idl | 29 + .../Connector/SL_OneByOne_Connector_exec.cpp | 30 + .../Connector/SL_OneByOne_Connector_exec.h | 62 + .../SLOneByOne/Receiver/SL_OneByOne_Receiver.idl | 24 + .../SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc | 138 + .../Receiver/SL_OneByOne_Receiver_exec.cpp | 319 + .../Receiver/SL_OneByOne_Receiver_exec.h | 131 + .../tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl | 25 + .../tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc | 140 + .../SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp | 358 + .../SLOneByOne/Sender/SL_OneByOne_Sender_exec.h | 86 + .../dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp | 365 + .../tests/SLOneByOne/descriptors/run_test.pl | 242 + .../Base/SetConnectorAttribute_Base.idl | 18 + .../Base/SetConnectorAttribute_Base.mpc | 77 + .../Connector/SetConnectorAttribute_Connector.idl | 26 + .../Connector/SetConnectorAttribute_Connector.mpc | 145 + .../SetConnectorAttribute_Connector_exec.cpp | 178 + .../SetConnectorAttribute_Connector_exec.h | 67 + .../dds4ccm/tests/SetConnectorAttributes/README | 15 + .../SetConnectorAttributes/descriptors/Plan.cdp | 150 + .../SetConnectorAttributes/descriptors/run_test.pl | 242 + .../Base/State_Connection_Test_Base.idl | 18 + .../Base/State_Connection_Test_Base.mpc | 76 + .../Connector/State_Connection_Test_Connector.idl | 26 + .../Connector/State_Connection_Test_Connector.mpc | 145 + .../State_Connection_Test_Connector_exec.cpp | 30 + .../State_Connection_Test_Connector_exec.h | 61 + .../dds4ccm/tests/State_Connection_Test/README | 35 + .../Receiver/State_Connection_Test_Receiver.idl | 25 + .../Receiver/State_Connection_Test_Receiver.mpc | 138 + .../State_Connection_Test_Receiver_exec.cpp | 325 + .../Receiver/State_Connection_Test_Receiver_exec.h | 119 + .../Sender/State_Connection_Test_Sender.idl | 24 + .../Sender/State_Connection_Test_Sender.mpc | 140 + .../Sender/State_Connection_Test_Sender_exec.cpp | 100 + .../Sender/State_Connection_Test_Sender_exec.h | 52 + .../State_Connection_Test/descriptors/Plan.cdp | 644 + .../State_Connection_Test/descriptors/run_test.pl | 242 + .../UnkeyedSamples/Base/Unkeyed_Test_Base.idl | 18 + .../UnkeyedSamples/Base/Unkeyed_Test_Base.mpc | 77 + .../Connector/Unkeyed_Test_Connector.idl | 26 + .../Connector/Unkeyed_Test_Connector.mpc | 145 + .../Connector/Unkeyed_Test_Connector_exec.cpp | 30 + .../Connector/Unkeyed_Test_Connector_exec.h | 60 + .../connectors/dds4ccm/tests/UnkeyedSamples/README | 6 + .../Receiver/Unkeyed_Test_Receiver.idl | 24 + .../Receiver/Unkeyed_Test_Receiver.mpc | 138 + .../Receiver/Unkeyed_Test_Receiver_exec.cpp | 224 + .../Receiver/Unkeyed_Test_Receiver_exec.h | 118 + .../UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl | 27 + .../UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc | 140 + .../Sender/Unkeyed_Test_Sender_exec.cpp | 214 + .../Sender/Unkeyed_Test_Sender_exec.h | 90 + .../tests/UnkeyedSamples/descriptors/Plan.cdp | 393 + .../tests/UnkeyedSamples/descriptors/run_test.pl | 242 + .../tests/UnkeyedWriter/Base/Writer_Base.idl | 21 + .../tests/UnkeyedWriter/Base/Writer_Base.mpc | 77 + .../UnkeyedWriter/Connector/Writer_Connector.idl | 26 + .../UnkeyedWriter/Connector/Writer_Connector.mpc | 145 + .../Connector/Writer_Connector_exec.cpp | 30 + .../Connector/Writer_Connector_exec.h | 60 + .../UnkeyedWriter/Receiver/Writer_Receiver.idl | 23 + .../UnkeyedWriter/Receiver/Writer_Receiver.mpc | 138 + .../Receiver/Writer_Receiver_exec.cpp | 157 + .../UnkeyedWriter/Receiver/Writer_Receiver_exec.h | 82 + .../tests/UnkeyedWriter/Sender/Writer_Sender.idl | 27 + .../tests/UnkeyedWriter/Sender/Writer_Sender.mpc | 140 + .../UnkeyedWriter/Sender/Writer_Sender_exec.cpp | 334 + .../UnkeyedWriter/Sender/Writer_Sender_exec.h | 106 + .../tests/UnkeyedWriter/descriptors/Plan.cdp | 396 + .../tests/UnkeyedWriter/descriptors/run_test.pl | 242 + .../dds4ccm/tests/Updater/Base/Updater_Base.idl | 18 + .../dds4ccm/tests/Updater/Base/Updater_Base.mpc | 77 + .../tests/Updater/Connector/Updater_Connector.idl | 26 + .../tests/Updater/Connector/Updater_Connector.mpc | 145 + .../Updater/Connector/Updater_Connector_exec.cpp | 30 + .../Updater/Connector/Updater_Connector_exec.h | 60 + .../tests/Updater/Receiver/Updater_Receiver.idl | 26 + .../tests/Updater/Receiver/Updater_Receiver.mpc | 138 + .../Updater/Receiver/Updater_Receiver_exec.cpp | 231 + .../tests/Updater/Receiver/Updater_Receiver_exec.h | 127 + .../tests/Updater/Sender/Updater_Sender.idl | 25 + .../tests/Updater/Sender/Updater_Sender.mpc | 140 + .../tests/Updater/Sender/Updater_Sender_exec.cpp | 672 + .../tests/Updater/Sender/Updater_Sender_exec.h | 93 + .../dds4ccm/tests/Updater/descriptors/Plan.cdp | 415 + .../dds4ccm/tests/Updater/descriptors/run_test.pl | 242 + modules/CIAO/docs/CIAO.pdf | Bin 0 -> 1803308 bytes modules/CIAO/docs/CIAO_Style_Guide.txt | 60 + modules/CIAO/docs/ConfigValues.html | 270 + modules/CIAO/docs/Connectors.graffle | 10989 ++++++++++++ modules/CIAO/docs/EnvVars.html | 35 + modules/CIAO/docs/OMG-CCM-Tutorial.ppt | Bin 0 -> 14526464 bytes modules/CIAO/docs/Porting_Hints.txt | 55 + modules/CIAO/docs/Purify.html | 72 + modules/CIAO/docs/RT-Extension.html | 132 + modules/CIAO/docs/TODO.html | 240 + modules/CIAO/docs/Trace.html | 32 + modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd | 93 + modules/CIAO/docs/XML/componentassembly.dtd | 367 + modules/CIAO/docs/XML/corbacomponent.dtd | 316 + modules/CIAO/docs/XML/properties.dtd | 87 + modules/CIAO/docs/XML/softpkg.dtd | 220 + modules/CIAO/docs/com-impl.html | 60 + modules/CIAO/docs/fm/CIAO.fm | Bin 0 -> 669696 bytes .../images/CIAO_Component_Container_and_CORBA.eps | Bin 0 -> 23331 bytes .../images/CIAO_Component_Container_and_CORBA.sxd | Bin 0 -> 7110 bytes .../CIAO_Components_Administrator_Highlight.eps | Bin 0 -> 33784 bytes .../CIAO_Components_Administrator_Highlight.sxd | Bin 0 -> 7984 bytes .../images/CIAO_Components_Messenger_Highlight.eps | Bin 0 -> 33795 bytes .../images/CIAO_Components_Messenger_Highlight.sxd | Bin 0 -> 7974 bytes ...IAO_Components_Messenger_Runnable_Highlight.eps | Bin 0 -> 33545 bytes ...IAO_Components_Messenger_Runnable_Highlight.sxd | Bin 0 -> 7913 bytes .../images/CIAO_Components_Receiver_Highlight.eps | Bin 0 -> 33765 bytes .../images/CIAO_Components_Receiver_Highlight.sxd | Bin 0 -> 7996 bytes .../fm/images/CIAO_Descriptors_Administrator.eps | Bin 0 -> 45153 bytes .../fm/images/CIAO_Descriptors_Administrator.sxd | Bin 0 -> 7650 bytes .../fm/images/CIAO_Descriptors_Application.eps | Bin 0 -> 43126 bytes .../fm/images/CIAO_Descriptors_Application.sxd | Bin 0 -> 7749 bytes .../docs/fm/images/CIAO_Descriptors_Messenger.eps | Bin 0 -> 45003 bytes .../docs/fm/images/CIAO_Descriptors_Messenger.sxd | Bin 0 -> 7689 bytes .../images/CIAO_Descriptors_Messenger_Assembly.eps | Bin 0 -> 45649 bytes .../images/CIAO_Descriptors_Messenger_Assembly.sxd | Bin 0 -> 7734 bytes .../docs/fm/images/CIAO_Descriptors_Receiver.eps | Bin 0 -> 43962 bytes .../docs/fm/images/CIAO_Descriptors_Receiver.sxd | Bin 0 -> 7609 bytes .../fm/images/CIAO_Generic_Component_Diagram.eps | Bin 0 -> 24463 bytes .../fm/images/CIAO_Generic_Component_Diagram.sxd | Bin 0 -> 7347 bytes .../docs/fm/images/CIAO_IDL3_to_IDL2_Files.eps | Bin 0 -> 36027 bytes .../docs/fm/images/CIAO_IDL3_to_IDL2_Files.sxd | Bin 0 -> 7578 bytes .../CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.eps | Bin 0 -> 55449 bytes .../CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.sxd | Bin 0 -> 7907 bytes .../images/CIAO_IDL_CIDL_Files_CIDL_Highlight.eps | Bin 0 -> 56760 bytes .../images/CIAO_IDL_CIDL_Files_CIDL_Highlight.sxd | Bin 0 -> 8165 bytes .../fm/images/CIAO_MessengerHome_Class_Diagram.eps | Bin 0 -> 48412 bytes .../fm/images/CIAO_MessengerHome_Class_Diagram.sxd | Bin 0 -> 7983 bytes .../fm/images/CIAO_Messenger_Class_Diagram.eps | Bin 0 -> 54234 bytes .../fm/images/CIAO_Messenger_Class_Diagram.sxd | Bin 0 -> 8447 bytes .../fm/images/CIAO_Messenger_Component_Diagram.eps | Bin 0 -> 33462 bytes .../fm/images/CIAO_Messenger_Component_Diagram.sxd | Bin 0 -> 7825 bytes .../images/CIAO_Messenger_Deployment_Diagram.eps | Bin 0 -> 50590 bytes .../images/CIAO_Messenger_Deployment_Diagram.sxd | Bin 0 -> 7886 bytes ...eployment_Diagram_All_Connections_Highlight.eps | Bin 0 -> 229977 bytes ...eployment_Diagram_All_Connections_Highlight.sxd | Bin 0 -> 8041 bytes ...nger_Deployment_Diagram_All_Nodes_Highlight.eps | Bin 0 -> 230269 bytes ...nger_Deployment_Diagram_All_Nodes_Highlight.sxd | Bin 0 -> 7934 bytes ...ger_Deployment_Diagram_Connection_Highlight.eps | Bin 0 -> 51341 bytes ...ger_Deployment_Diagram_Connection_Highlight.sxd | Bin 0 -> 8051 bytes ...Messenger_Deployment_Diagram_Node_Highlight.eps | Bin 0 -> 51917 bytes ...Messenger_Deployment_Diagram_Node_Highlight.sxd | Bin 0 -> 8141 bytes .../CIAO_Messenger_IDL_Generated_Class_Diagram.eps | Bin 0 -> 37446 bytes .../CIAO_Messenger_IDL_Generated_Class_Diagram.sxd | Bin 0 -> 7495 bytes .../images/CIAO_Messenger_Interaction_Diagram.eps | Bin 0 -> 25993 bytes .../images/CIAO_Messenger_Interaction_Diagram.sxd | Bin 0 -> 7390 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_01.eps | Bin 0 -> 23463 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_01.sxd | Bin 0 -> 7094 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_02.eps | Bin 0 -> 23424 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_02.sxd | Bin 0 -> 7151 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_03.eps | Bin 0 -> 23927 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_03.sxd | Bin 0 -> 7146 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_04.eps | Bin 0 -> 23427 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_04.sxd | Bin 0 -> 7151 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_05.eps | Bin 0 -> 23434 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_05.sxd | Bin 0 -> 7148 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_06.eps | Bin 0 -> 23457 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_06.sxd | Bin 0 -> 7147 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_07.eps | Bin 0 -> 23459 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_07.sxd | Bin 0 -> 7146 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_08.eps | Bin 0 -> 23127 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_08.sxd | Bin 0 -> 7149 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_09.eps | Bin 0 -> 23346 bytes modules/CIAO/docs/fm/images/CIAO_Roadmap_09.sxd | Bin 0 -> 7146 bytes .../CIAO/docs/fm/images/CIAO_Roadmap_Overview.eps | Bin 0 -> 22216 bytes .../CIAO/docs/fm/images/CIAO_Roadmap_Overview.sxd | Bin 0 -> 6811 bytes .../docs/fm/images/CIAO_Runnable_Class_Diagram.eps | Bin 0 -> 41532 bytes .../docs/fm/images/CIAO_Runnable_Class_Diagram.sxd | Bin 0 -> 7786 bytes modules/CIAO/docs/fm/images/OCILOGO_bw_book.eps | Bin 0 -> 72640 bytes modules/CIAO/docs/generate_component_mpc.html | 84 + modules/CIAO/docs/imgs/CCM-v5.vsd | Bin 0 -> 486912 bytes modules/CIAO/docs/imgs/CCM.vsd | Bin 0 -> 643072 bytes modules/CIAO/docs/imgs/DAnCE-Dynamic.png | Bin 0 -> 71061 bytes modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd | Bin 0 -> 46579 bytes modules/CIAO/docs/imgs/File-Gen-Existing.png | Bin 0 -> 40181 bytes modules/CIAO/docs/imgs/File-Gen-Future.png | Bin 0 -> 41057 bytes modules/CIAO/docs/imgs/File_Generation_Flow.vsd | Bin 0 -> 107008 bytes modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd | Bin 0 -> 201216 bytes modules/CIAO/docs/imgs/basic-container.png | Bin 0 -> 8000 bytes modules/CIAO/docs/imgs/ciao-dynamic1.jpg | Bin 0 -> 56203 bytes modules/CIAO/docs/imgs/ciao-dynamic2.jpg | Bin 0 -> 46081 bytes modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg | Bin 0 -> 44220 bytes modules/CIAO/docs/imgs/ciao-static1.jpg | Bin 0 -> 53013 bytes modules/CIAO/docs/imgs/ciao-static2.jpg | Bin 0 -> 64775 bytes modules/CIAO/docs/imgs/component-basic.png | Bin 0 -> 151172 bytes modules/CIAO/docs/imgs/dance_arch.jpg | Bin 0 -> 70602 bytes modules/CIAO/docs/imgs/dance_arch.vsd | Bin 0 -> 100352 bytes modules/CIAO/docs/imgs/deployment.png | Bin 0 -> 10392 bytes modules/CIAO/docs/imgs/extended-container.png | Bin 0 -> 19243 bytes modules/CIAO/docs/imgs/home-config.png | Bin 0 -> 9873 bytes modules/CIAO/docs/imgs/static_dance_arch.jpg | Bin 0 -> 58200 bytes modules/CIAO/docs/imgs/static_dance_arch.vsd | Bin 0 -> 86528 bytes modules/CIAO/docs/imgs/static_dance_impl.jpg | Bin 0 -> 56173 bytes modules/CIAO/docs/imgs/static_dance_impl.vsd | Bin 0 -> 101888 bytes modules/CIAO/docs/index.html | 168 + modules/CIAO/docs/new_components.html | 129 + modules/CIAO/docs/releasenotes/dance.html | 229 + modules/CIAO/docs/releasenotes/index.html | 119 + modules/CIAO/docs/releasenotes/switch.html | 35 + modules/CIAO/docs/static_ciao_contents.html | 359 + modules/CIAO/docs/static_ciao_index.html | 23 + modules/CIAO/docs/static_ciao_toc.html | 26 + modules/CIAO/docs/static_config_example.html | 1353 ++ modules/CIAO/docs/static_config_rtexample.html | 1079 ++ modules/CIAO/docs/static_dance.html | 214 + modules/CIAO/docs/tutorials/Quoter/Simple/01.html | 374 + modules/CIAO/docs/tutorials/Quoter/Simple/02.html | 198 + modules/CIAO/docs/tutorials/Quoter/Simple/03.html | 543 + modules/CIAO/docs/tutorials/Quoter/Simple/04.html | 162 + .../tutorials/Quoter/Simple/Broker/StockBroker.idl | 40 + .../tutorials/Quoter/Simple/Broker/StockBroker.mpc | 153 + .../Quoter/Simple/Broker/StockBrokerDriver.cpp | 110 + .../Quoter/Simple/Broker/StockBroker_exec.cpp | 195 + .../Quoter/Simple/Broker/StockBroker_exec.h | 113 + .../Quoter/Simple/Distributor/StockDistributor.idl | 47 + .../Quoter/Simple/Distributor/StockDistributor.mpc | 155 + .../Simple/Distributor/StockDistributorDriver.cpp | 115 + .../Simple/Distributor/StockDistributor_exec.cpp | 329 + .../Simple/Distributor/StockDistributor_exec.h | 224 + .../tutorials/Quoter/Simple/Icons/AddConnMode.gif | Bin 0 -> 106 bytes .../docs/tutorials/Quoter/Simple/Icons/SetMode.gif | Bin 0 -> 125 bytes .../docs/tutorials/Quoter/Simple/Model/Quoter.xme | 1963 +++ .../CIAO/docs/tutorials/Quoter/Simple/README.html | 172 + .../Quoter/Simple/Stock_Base/Stock_Base.idl | 46 + .../Quoter/Simple/Stock_Base/Stock_Base.mpc | 83 + .../tutorials/Quoter/Simple/descriptors/Broker.cpd | 13 + .../Quoter/Simple/descriptors/Default.pcd | 6 + .../Quoter/Simple/descriptors/Distributor.cpd | 13 + .../tutorials/Quoter/Simple/descriptors/Domain.cdd | 14 + .../Quoter/Simple/descriptors/NodeMap.dat | 3 + .../tutorials/Quoter/Simple/descriptors/Plan.cdp | 248 + .../Quoter/Simple/descriptors/StockBroker.ccd | 49 + .../descriptors/StockBrokerMonolithicImpl.cid | 35 + .../Quoter/Simple/descriptors/StockBroker_exec.iad | 78 + .../Quoter/Simple/descriptors/StockBroker_stub.iad | 56 + .../Quoter/Simple/descriptors/StockBroker_svnt.iad | 73 + .../Quoter/Simple/descriptors/StockDistributor.ccd | 49 + .../descriptors/StockDistributorMonolithicImpl.cid | 35 + .../Simple/descriptors/StockDistributor_exec.iad | 78 + .../Simple/descriptors/StockDistributor_stub.iad | 56 + .../Simple/descriptors/StockDistributor_svnt.iad | 73 + .../Quoter/Simple/descriptors/StockQuoter.cid | 39 + .../Quoter/Simple/descriptors/StockQuoter.cpd | 11 + .../Quoter/Simple/descriptors/TopLevelPackage.tpd | 6 + .../tutorials/Quoter/Simple/descriptors/XMI.xsd | 35 + .../Quoter/Simple/descriptors/runNodeDaemons.pl | 43 + .../docs/tutorials/Quoter/Simple/images/fig1.jpg | Bin 0 -> 13971 bytes .../docs/tutorials/Quoter/Simple/images/fig10.jpg | Bin 0 -> 138254 bytes .../docs/tutorials/Quoter/Simple/images/fig11.jpg | Bin 0 -> 133189 bytes .../docs/tutorials/Quoter/Simple/images/fig12.jpg | Bin 0 -> 135258 bytes .../docs/tutorials/Quoter/Simple/images/fig2.jpg | Bin 0 -> 183594 bytes .../docs/tutorials/Quoter/Simple/images/fig3.jpg | Bin 0 -> 46408 bytes .../docs/tutorials/Quoter/Simple/images/fig4.jpg | Bin 0 -> 11225 bytes .../docs/tutorials/Quoter/Simple/images/fig5.jpg | Bin 0 -> 45883 bytes .../docs/tutorials/Quoter/Simple/images/fig5a.jpg | Bin 0 -> 112890 bytes .../docs/tutorials/Quoter/Simple/images/fig6.jpg | Bin 0 -> 85037 bytes .../docs/tutorials/Quoter/Simple/images/fig7.jpg | Bin 0 -> 122359 bytes .../docs/tutorials/Quoter/Simple/images/fig8.jpg | Bin 0 -> 136474 bytes .../docs/tutorials/Quoter/Simple/images/fig9.jpg | Bin 0 -> 128558 bytes .../docs/tutorials/Quoter/Simple/images/quoter.jpg | Bin 0 -> 15027 bytes .../docs/tutorials/Quoter/Simple/images/step1.jpg | Bin 0 -> 17752 bytes .../docs/tutorials/Quoter/Simple/images/step2.jpg | Bin 0 -> 29764 bytes .../docs/tutorials/Quoter/Simple/images/step3.jpg | Bin 0 -> 32189 bytes .../docs/tutorials/Quoter/Simple/images/step6.jpg | Bin 0 -> 10762 bytes .../docs/tutorials/Quoter/Simple/images/steps.jpg | Bin 0 -> 82487 bytes .../CIAO/docs/tutorials/Quoter/Simple/index.html | 351 + modules/CIAO/docs/value_factory_registration.html | 49 + modules/CIAO/etc/ciao.doxygen | 174 + modules/CIAO/etc/ciao_DAnCE.doxygen | 172 + modules/CIAO/etc/ciao_config_handlers.doxygen | 173 + modules/CIAO/etc/ciao_dds4ccm.doxygen | 172 + .../examples/BasicSP/BMClosedED/BMClosedED.idl | 24 + .../examples/BasicSP/BMClosedED/BMClosedED.mpc | 114 + .../BasicSP/BMClosedED/BMClosedED_exec.cpp | 193 + .../examples/BasicSP/BMClosedED/BMClosedED_exec.h | 133 + modules/CIAO/examples/BasicSP/BMClosedED/config | 1 + .../CIAO/examples/BasicSP/BMDevice/BMDevice.idl | 31 + .../CIAO/examples/BasicSP/BMDevice/BMDevice.mpc | 116 + .../examples/BasicSP/BMDevice/BMDevice_exec.cpp | 159 + .../CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h | 130 + .../CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl | 21 + .../CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc | 118 + .../examples/BasicSP/BMDisplay/BMDisplay_exec.cpp | 142 + .../examples/BasicSP/BMDisplay/BMDisplay_exec.h | 96 + modules/CIAO/examples/BasicSP/BasicSP.idl | 48 + modules/CIAO/examples/BasicSP/BasicSP.mpc | 100 + modules/CIAO/examples/BasicSP/BasicSP.mwc | 9 + modules/CIAO/examples/BasicSP/EC/EC.idl | 41 + modules/CIAO/examples/BasicSP/EC/EC.mpc | 157 + modules/CIAO/examples/BasicSP/EC/EC_exec.cpp | 296 + modules/CIAO/examples/BasicSP/EC/EC_exec.h | 168 + modules/CIAO/examples/BasicSP/EC/README | 9 + modules/CIAO/examples/BasicSP/EC/client.cpp | 62 + modules/CIAO/examples/BasicSP/EC/controller.cpp | 126 + modules/CIAO/examples/BasicSP/README.html | 70 + modules/CIAO/examples/BasicSP/RepoMan_Usage.html | 117 + .../CIAO/examples/BasicSP/descriptors/BasicSP.dat | 4 + .../examples/BasicSP/descriptors/BasicSP_Homed.cdp | 504 + .../BasicSP/descriptors/BasicSP_Unhomed.cdp | 408 + .../CIAO/examples/BasicSP/descriptors/run_test.pl | 247 + modules/CIAO/examples/DevGuideExamples/CIAO.mwc | 5 + .../DevGuideExamples/Messenger/Administrator.idl | 24 + .../DevGuideExamples/Messenger/Administrator.mpc | 110 + .../Messenger/Administrator_Client.cpp | 120 + .../Messenger/Administrator_Client_IDL2.cpp | 10 + .../Messenger/Administrator_Client_IDL2.mpc | 48 + .../Messenger/Administrator_Client_IDL3.cpp | 10 + .../Messenger/Administrator_Client_IDL3.mpc | 32 + .../Messenger/Administrator_exec_i.cpp | 259 + .../Messenger/Administrator_exec_i.h | 112 + .../DevGuideExamples/Messenger/History.idl | 19 + .../DevGuideExamples/Messenger/History_exec_i.cpp | 95 + .../DevGuideExamples/Messenger/History_exec_i.h | 70 + .../DevGuideExamples/Messenger/Message.idl | 21 + .../DevGuideExamples/Messenger/Messenger.idl | 34 + .../DevGuideExamples/Messenger/Messenger.mpc | 174 + .../Messenger/Messenger_exec_i.cpp | 253 + .../DevGuideExamples/Messenger/Messenger_exec_i.h | 129 + .../DevGuideExamples/Messenger/Publication.idl | 17 + .../Messenger/Publication_exec_i.cpp | 81 + .../Messenger/Publication_exec_i.h | 70 + .../DevGuideExamples/Messenger/Receiver.idl | 23 + .../DevGuideExamples/Messenger/Receiver.mpc | 110 + .../DevGuideExamples/Messenger/Receiver_exec_i.cpp | 176 + .../DevGuideExamples/Messenger/Receiver_exec_i.h | 102 + .../DevGuideExamples/Messenger/Runnable.idl | 17 + .../DevGuideExamples/Messenger/Runnable_exec_i.cpp | 60 + .../DevGuideExamples/Messenger/Runnable_exec_i.h | 65 + .../StaticDAnCE/Messenger_StaticDAnCE.mpc | 18 + .../Messenger/StaticDAnCE/README.txt | 35 + .../Messenger/StaticDAnCE/StaticDAnCEApp.cpp | 102 + .../DevGuideExamples/Messenger/StaticDAnCE/plan.h | 47 + .../Messenger/StaticDAnCE/run_test.pl | 111 + .../Messenger/descriptors/Administrator.ccd | 47 + .../Messenger/descriptors/Administrator.cid | 34 + .../Messenger/descriptors/Administrator.cpd | 15 + .../Messenger/descriptors/Administrator_Exec.iad | 40 + .../Messenger/descriptors/Administrator_Stub.iad | 30 + .../Messenger/descriptors/Administrator_Svnt.iad | 40 + .../descriptors/Application-flattened.cdp | 255 + .../Messenger/descriptors/Application.cdp | 25 + .../Messenger/descriptors/Application.pcd | 23 + .../Messenger/descriptors/ApplicationNodeMap.dat | 5 + .../Messenger/descriptors/Deployment.xsd | 776 + .../Messenger/descriptors/Domain.cdd | 24 + .../Messenger/descriptors/Libraries.iad | 11 + .../Messenger/descriptors/Messenger.ccd | 90 + .../Messenger/descriptors/Messenger.cid | 37 + .../Messenger/descriptors/Messenger.cpd | 15 + .../Messenger/descriptors/MessengerAssembly.ccd | 31 + .../Messenger/descriptors/MessengerAssembly.cid | 110 + .../Messenger/descriptors/MessengerAssembly.cpd | 13 + .../Messenger/descriptors/Messenger_Exec.iad | 40 + .../Messenger/descriptors/Messenger_Stub.iad | 25 + .../Messenger/descriptors/Messenger_Svnt.iad | 40 + .../Messenger/descriptors/README_15a | 5 + .../Messenger/descriptors/Receiver.ccd | 48 + .../Messenger/descriptors/Receiver.cid | 34 + .../Messenger/descriptors/Receiver.cpd | 11 + .../Messenger/descriptors/Receiver_Exec.iad | 40 + .../Messenger/descriptors/Receiver_Stub.iad | 29 + .../Messenger/descriptors/Receiver_Svnt.iad | 40 + .../DevGuideExamples/Messenger/descriptors/XMI.xsd | 35 + .../Messenger/descriptors/admin.dat | 7 + .../Messenger/descriptors/package.tpd | 8 + .../Messenger/descriptors/run_test.pl | 111 + modules/CIAO/examples/DevGuideExamples/readme.txt | 12 + .../examples/Display/Display_Base/Display_Base.idl | 46 + .../examples/Display/Display_Base/Display_Base.mpc | 79 + modules/CIAO/examples/Display/GPS/GPS.idl | 30 + modules/CIAO/examples/Display/GPS/GPS.mpc | 117 + modules/CIAO/examples/Display/GPS/GPSEI.idl | 33 + modules/CIAO/examples/Display/GPS/GPS_exec.cpp | 137 + modules/CIAO/examples/Display/GPS/GPS_exec.h | 111 + .../CIAO/examples/Display/GPS/GPS_tracing_exec.cpp | 131 + .../CIAO/examples/Display/GPS/GPS_tracing_exec.h | 112 + .../examples/Display/NavDisplay/NavDisplay.idl | 29 + .../examples/Display/NavDisplay/NavDisplay.mpc | 115 + .../Display/NavDisplay/NavDisplay_exec.cpp | 105 + .../examples/Display/NavDisplay/NavDisplay_exec.h | 92 + .../Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp | 28 + .../Display/NavDisplayGUI_exec/AddNavUnitCmd.h | 27 + .../examples/Display/NavDisplayGUI_exec/Command.h | 20 + .../Display/NavDisplayGUI_exec/DetailView.cpp | 168 + .../Display/NavDisplayGUI_exec/DetailView.h | 49 + .../Display/NavDisplayGUI_exec/MapView.cpp | 40 + .../examples/Display/NavDisplayGUI_exec/MapView.h | 23 + .../Display/NavDisplayGUI_exec/NavDisplayGUI.mpc | 89 + .../NavDisplayGUI_exec/NavDisplayGUI_exec.cpp | 156 + .../NavDisplayGUI_exec/NavDisplayGUI_exec.h | 102 + .../Display/NavDisplayGUI_exec/NavUnit.cpp | 9 + .../examples/Display/NavDisplayGUI_exec/NavUnit.h | 57 + .../Display/NavDisplayGUI_exec/NodeItem.cpp | 64 + .../examples/Display/NavDisplayGUI_exec/NodeItem.h | 47 + .../Display/NavDisplayGUI_exec/QuitCmd.cpp | 25 + .../examples/Display/NavDisplayGUI_exec/QuitCmd.h | 25 + .../Display/NavDisplayGUI_exec/RootPanel.cpp | 88 + .../Display/NavDisplayGUI_exec/RootPanel.h | 49 + .../NavDisplayGUI_exec/UpdatePositionCmd.cpp | 30 + .../Display/NavDisplayGUI_exec/UpdatePositionCmd.h | 28 + .../examples/Display/NavDisplayGUI_exec/Worker.cpp | 46 + .../examples/Display/NavDisplayGUI_exec/Worker.h | 35 + .../Display/NavDisplayGUI_exec/trolltech.gif | Bin 0 -> 42629 bytes .../Display/NavDisplayGUI_exec/worldmap1.gif | Bin 0 -> 207612 bytes .../Display/NavDisplayGUI_exec/worldmap1.xpm | 651 + modules/CIAO/examples/Display/README.html | 181 + modules/CIAO/examples/Display/RateGen/RateGen.idl | 34 + modules/CIAO/examples/Display/RateGen/RateGen.mpc | 135 + .../CIAO/examples/Display/RateGen/RateGen_exec.cpp | 289 + .../CIAO/examples/Display/RateGen/RateGen_exec.h | 163 + .../CIAO/examples/Display/RateGen/controller.cpp | 121 + .../Display/descriptors/DeploymentPlan.cdp | 26 + .../Display/descriptors/Modified_Deployment.xsd | 826 + .../Display/descriptors/NodeManagerMap.dat | 2 + modules/CIAO/examples/Display/descriptors/XMI.xsd | 35 + .../Display/descriptors/basicNodeDaemon.pl | 54 + .../descriptors/flattened_deploymentplan.cdp | 305 + .../Display/descriptors/run_NodeDaemons.pl | 32 + .../Display/descriptors/run_test_without_ns.pl | 187 + .../CIAO/examples/Hello/Hello_Base/Hello_Base.idl | 21 + .../CIAO/examples/Hello/Hello_Base/Hello_Base.mpc | 78 + modules/CIAO/examples/Hello/Receiver/Receiver.idl | 22 + modules/CIAO/examples/Hello/Receiver/Receiver.mpc | 143 + .../CIAO/examples/Hello/Receiver/Receiver_exec.cpp | 126 + .../CIAO/examples/Hello/Receiver/Receiver_exec.h | 97 + modules/CIAO/examples/Hello/Sender/Sender.idl | 43 + modules/CIAO/examples/Hello/Sender/Sender.mpc | 140 + modules/CIAO/examples/Hello/Sender/Sender_exec.cpp | 164 + modules/CIAO/examples/Hello/Sender/Sender_exec.h | 136 + modules/CIAO/examples/Hello/Sender/starter.cpp | 88 + .../examples/Hello/descriptors/Aliased_Map.dat | 2 + .../examples/Hello/descriptors/DeploymentPlan.cdp | 372 + .../descriptors/DeploymentPlan_without_ns.cdp | 317 + modules/CIAO/examples/Hello/descriptors/Domain.cdd | 17 + modules/CIAO/examples/Hello/descriptors/Hello.pcd | 10 + .../examples/Hello/descriptors/NodeManagerMap.dat | 4 + .../CIAO/examples/Hello/descriptors/package.tpd | 8 + .../examples/Hello/descriptors/run_NodeDaemons.pl | 42 + .../CIAO/examples/Hello/descriptors/run_test.pl | 238 + .../examples/Hello/descriptors/run_test_alias.pl | 238 + .../Hello/descriptors/run_test_without_ns.pl | 198 + .../CIAO/examples/Hello/descriptors/svc_em.conf | 9 + modules/CIAO/examples/Hello/step-by-step.html | 234 + .../examples/Null_Component/Null_Component.idl | 39 + .../examples/Null_Component/Null_Component.mpc | 114 + .../Null_Component/Null_Component_exec.cpp | 155 + .../examples/Null_Component/Null_Component_exec.h | 100 + .../examples/Null_Component/Null_Interface.idl | 22 + .../examples/Null_Component/Null_Interface.mpc | 78 + .../examples/Null_Component/StaticDAnCEApp.cpp | 101 + .../examples/Null_Component/StaticDAnCEApp.mpc | 28 + .../Null_Component/descriptors/NodeMap.dat | 1 + .../Null_Component/descriptors/Null_Homed.cdp | 109 + .../Null_Component/descriptors/Null_Unhomed.cdp | 85 + .../Null_Component/descriptors/run_test.pl | 219 + .../Null_Component/model/Null_Component.xme | 882 + modules/CIAO/examples/Null_Component/plan.h | 37 + .../CIAO/examples/Philosophers/Philosophers.idl | 75 + modules/CIAO/examples/Philosophers/README | 1 + .../CIAO/performance-tests/Benchmark/Benchmark.idl | 48 + .../CIAO/performance-tests/Benchmark/Benchmark.mpc | 98 + .../performance-tests/Benchmark/LatencyTest.cpp | 22 + .../CIAO/performance-tests/Benchmark/LatencyTest.h | 31 + .../Benchmark/Multi_Threaded/Client_Task.cpp | 30 + .../Benchmark/Multi_Threaded/Client_Task.h | 29 + .../Benchmark/Multi_Threaded/Multi_Threaded.mpc | 25 + .../Benchmark/Multi_Threaded/NOTE.txt | 15 + .../Benchmark/Multi_Threaded/README | 12 + .../Benchmark/Multi_Threaded/client.cpp | 90 + .../Benchmark/Multi_Threaded/run_test.pl | 95 + .../Benchmark/Multi_Threaded/svc.conf | 5 + modules/CIAO/performance-tests/Benchmark/README | 22 + .../performance-tests/Benchmark/RoundTrip/README | 9 + .../Benchmark/RoundTrip/RoundTrip.idl | 30 + .../Benchmark/RoundTrip/RoundTrip.mpc | 134 + .../Benchmark/RoundTrip/RoundTripEI.idl | 33 + .../Benchmark/RoundTrip/RoundTrip_exec.cpp | 124 + .../Benchmark/RoundTrip/RoundTrip_exec.h | 103 + .../Benchmark/RoundTrip/client.cpp | 174 + .../Benchmark/RoundTrip/run_test.pl | 123 + .../performance-tests/Benchmark/RoundTrip/svc.conf | 6 + .../Benchmark/RoundTripClient/RoundTripClient.idl | 31 + .../Benchmark/RoundTripClient/RoundTripClient.mpc | 134 + .../RoundTripClient/RoundTripClientEI.idl | 34 + .../RoundTripClient/RoundTripClient_exec.cpp | 158 + .../RoundTripClient/RoundTripClient_exec.h | 92 + .../Benchmark/RoundTripClient/client.cpp | 49 + .../Benchmark/RoundTripClient/run_test.pl | 94 + .../Benchmark/RoundTripClient/run_test_ior_cad.pl | 76 + .../Benchmark/RoundTripServer/LatencyTest.cpp | 25 + .../Benchmark/RoundTripServer/LatencyTest.h | 40 + .../Benchmark/RoundTripServer/RoundTripServer.mpc | 22 + .../Benchmark/RoundTripServer/Test.idl | 16 + .../Benchmark/RoundTripServer/server.cpp | 94 + .../Benchmark/descriptors/Benchmark.cad | 34 + .../descriptors/CIAO_Installation_Data.ini | 5 + .../Benchmark/descriptors/Multi_Threaded.cad | 112 + .../Benchmark/descriptors/NOTE.txt | 65 + .../Benchmark/descriptors/RoundTrip.csd | 46 + .../Benchmark/descriptors/RoundTrip.ssd | 43 + .../Benchmark/descriptors/RoundTripClient.cad | 49 + .../Benchmark/descriptors/RoundTripClient.csd | 44 + .../Benchmark/descriptors/RoundTripClient.ssd | 39 + .../Benchmark/descriptors/Test-IOR.cad | 41 + .../Benchmark/descriptors/test-multi-process.dat | 5 + .../Benchmark/descriptors/test.dat | 2 + .../CIAO/performance-tests/Benchmark/server.cpp | 94 + modules/CIAO/performance-tests/Benchmark/svc.conf | 6 + .../Protocols/Controller/Controller.cpp | 229 + .../Protocols/Controller/Controller.mpc | 12 + .../Protocols/Receiver/Receiver.idl | 22 + .../Protocols/Receiver/Receiver.mpc | 116 + .../Protocols/Receiver/Receiver_exec.cpp | 287 + .../Protocols/Receiver/Receiver_exec.h | 94 + .../Sender/Custom_Network_Priority_Mapping.cpp | 133 + .../Sender/Custom_Network_Priority_Mapping.h | 58 + .../performance-tests/Protocols/Sender/Sender.idl | 41 + .../performance-tests/Protocols/Sender/Sender.mpc | 116 + .../Protocols/Sender/Sender_exec.cpp | 697 + .../Protocols/Sender/Sender_exec.h | 62 + .../Protocols/common/Protocols.idl | 32 + .../Protocols/common/Protocols.mpc | 78 + .../descriptors/CIAO_Installation_Data.ini | 5 + .../Protocols/descriptors/Receiver.csd | 40 + .../Protocols/descriptors/Receiver.ssd | 37 + .../Protocols/descriptors/Sender.csd | 40 + .../Protocols/descriptors/Sender.ssd | 37 + .../Protocols/descriptors/default.cad | 59 + .../Protocols/descriptors/remote.cad | 62 + .../Protocols/descriptors/run_test.pl | 87 + .../Protocols/descriptors/svc.conf | 1 + .../Protocols/descriptors/test.dat | 2 + .../performance-tests/mico/mico-thrput-st/README | 26 + .../mico/mico-thrput-st/RoundTrip | 40 + .../mico/mico-thrput-st/RoundTrip.idl | 13 + .../mico/mico-thrput-st/RoundTrip_impl.cc | 10 + .../mico/mico-thrput-st/RoundTrip_impl.h | 9 + .../mico/mico-thrput-st/client.cc | 150 + .../performance-tests/mico/mico-thrput-st/mico-env | 14 + .../mico/mico-thrput-st/server.cc | 43 + modules/CIAO/rules.ciao.GNU | 66 + .../Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM | 93 + .../SEC_CheckPoint/TSEC_CheckPoint.idl | 27 + .../SEC_CheckPoint/TSEC_CheckPoint.mpc | 121 + .../SEC_CheckPoint/TSEC_CheckPointEI.idl | 19 + .../SEC_CheckPoint/TSEC_CheckPoint_exec.cpp | 592 + .../SEC_CheckPoint/TSEC_CheckPoint_exec.h | 244 + .../SEC_CheckPoint/controller.cpp | 197 + .../descriptors/DeploymentPlan.cdp | 117 + .../descriptors/TestNodeManagerMap.dat | 1 + .../descriptors/rt-config-example.csr | 30 + .../Bug_2130_Regression/descriptors/run_test.pl | 211 + .../tests/Bug_2130_Regression/interfaces/ENW.idl | 52 + .../tests/Bug_2130_Regression/interfaces/ENW.mpc | 44 + modules/CIAO/tests/Bug_3769_Regression/Foo.idl | 36 + modules/CIAO/tests/Bug_3769_Regression/Foo.mpc | 132 + .../CIAO/tests/Bug_3769_Regression/Foo_exec.cpp | 296 + modules/CIAO/tests/Bug_3769_Regression/Foo_exec.h | 207 + .../descriptors/DeploymentPlan.cdp | 138 + .../Bug_3769_Regression/descriptors/NodeMap.dat | 1 + .../Bug_3769_Regression/descriptors/run_test.pl | 228 + .../CIAO_ComponentServer/Activator/Activator.mpc | 6 + .../CIAO_ComponentServer/Activator/client.cpp | 190 + .../CIAO_ComponentServer/Activator/run_test.pl | 35 + .../tests/CIAO_ComponentServer/Basic/Basic.mpc | 6 + .../tests/CIAO_ComponentServer/Basic/client.cpp | 143 + .../tests/CIAO_ComponentServer/Basic/run_test.pl | 110 + .../Local_Facet/Local_Facet.idl | 18 + .../Local_Facet/Local_Facet.mpc | 146 + .../Local_Facet/Local_Facet_exec.cpp | 119 + .../Local_Facet/Local_Facet_exec.h | 81 + .../CIAO_ComponentServer/Local_Facet/client.cpp | 186 + .../CIAO_ComponentServer/Local_Facet/run_test.pl | 33 + .../SimpleComponent/SimpleComponent.idl | 21 + .../SimpleComponent/SimpleComponent.mpc | 112 + .../SimpleComponent/SimpleComponent_exec.cpp | 131 + .../SimpleComponent/SimpleComponent_exec.h | 90 + .../SimpleComponent/client.cpp | 187 + .../SimpleComponent/run_test.pl | 33 + modules/CIAO/tests/CIDL/CodeGen/Basic.idl | 65 + modules/CIAO/tests/CIDL/CodeGen/Basic.mpc | 80 + modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl | 46 + modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc | 116 + modules/CIAO/tests/CIDL/CodeGen/README | 40 + .../ComplexComponent/Attributes/Attributes.idl | 51 + .../ComplexComponent/Attributes/Attributes.mpc | 17 + .../ComplexComponent/EventSink/EventSink.idl | 29 + .../ComplexComponent/EventSink/EventSink.mpc | 18 + .../ComplexComponent/EventSource/EventSource.idl | 24 + .../ComplexComponent/EventSource/EventSource.mpc | 17 + .../Components/ComplexComponent/Facets/Facets.idl | 46 + .../Components/ComplexComponent/Facets/Facets.mpc | 17 + .../ComplexComponent/Receptacles/Receptacles.idl | 68 + .../ComplexComponent/Receptacles/Receptacles.mpc | 21 + .../Components/SimpleComponent/SimpleComponent.idl | 96 + .../Components/SimpleComponent/SimpleComponent.mpc | 21 + .../CIAO/tests/IDL3/Events/Abstract/Abstract.idl | 38 + .../CIAO/tests/IDL3/Events/Abstract/Abstract.mpc | 17 + modules/CIAO/tests/IDL3/Events/Any/Any.mpc | 26 + modules/CIAO/tests/IDL3/Events/Any/EventAny.idl | 16 + modules/CIAO/tests/IDL3/Events/Any/README | 35 + modules/CIAO/tests/IDL3/Events/Any/main.cpp | 85 + modules/CIAO/tests/IDL3/Events/Any/run_test.pl | 33 + modules/CIAO/tests/IDL3/Events/Regular/Regular.idl | 44 + modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc | 20 + .../tests/IDL3/Homes/Attributes/HomeAttributes.idl | 54 + .../tests/IDL3/Homes/Attributes/HomeAttributes.mpc | 17 + modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl | 31 + modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc | 17 + modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl | 35 + modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc | 17 + modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl | 30 + modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc | 17 + .../tests/IDL3/Homes/Inheritance/Inheritance.idl | 33 + .../tests/IDL3/Homes/Inheritance/Inheritance.mpc | 17 + modules/CIAO/tests/IDL3/ImpliedIDL/All/README | 88 + modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc | 37 + modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl | 53 + modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl | 35 + .../tests/IDL3/ImpliedIDL/All/keyword_clash.idl | 89 + .../tests/IDL3/ImpliedIDL/All/pass_through.idl | 94 + .../CIAO/tests/IDL3/ImpliedIDL/All/raw_include.idl | 27 + .../IDL3/ImpliedIDL/Components/Basic/ICBasic.idl | 25 + .../IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc | 17 + .../Components/EventSink/ICEventSink.idl | 27 + .../Components/EventSink/ICEventSink.mpc | 17 + .../Components/EventSource/ICEventSource.idl | 38 + .../Components/EventSource/ICEventSource.mpc | 17 + .../Components/Receptacles/ICReceptacles.idl | 28 + .../Components/Receptacles/ICReceptacles.mpc | 18 + .../CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl | 22 + .../CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc | 17 + modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl | 28 + modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc | 18 + modules/CIAO/tests/IDL3/Lookup/README | 21 + modules/CIAO/tests/IDL3/Lookup/lookup_test.idl | 76 + modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc | 18 + .../IDL3_to_XMI/Bug_3607_Regression/run_test.pl | 54 + .../tests/IDL3_to_XMI/Bug_3607_Regression/test.idl | 11 + .../IDL3_to_XMI/IDL2XMI_Test/IDL2XMI_Test.mpc | 14 + .../tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp | 103 + .../tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.h | 67 + .../tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl | 62 + .../IDL3_to_XMI/IDL2XMI_Test/xmlvalidator.cpp | 64 + modules/CIAO/tests/IDL3_to_XMI/XMI.dtd | 6384 +++++++ .../tests/IDL3_to_XMI/XMI_For_Array/run_test.pl | 54 + .../CIAO/tests/IDL3_to_XMI/XMI_For_Array/test.idl | 20 + .../IDL3_to_XMI/XMI_For_Included_File/File1.idl | 15 + .../IDL3_to_XMI/XMI_For_Included_File/File2.idl | 20 + .../IDL3_to_XMI/XMI_For_Included_File/run_test.pl | 54 + .../IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl | 77 + .../IDL3_to_XMI/XMI_For_Module_Reopen/test.idl | 43 + .../tests/IDL3_to_XMI/XMI_For_Native/run_test.pl | 61 + .../CIAO/tests/IDL3_to_XMI/XMI_For_Native/test.idl | 6 + .../tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl | 54 + .../tests/IDL3_to_XMI/XMI_For_Sequence/test.idl | 25 + .../CIAO/tests/IDL_Test/Cornucopia/Cornucopia.idl | 200 + .../CIAO/tests/IDL_Test/Cornucopia/Cornucopia.mpc | 129 + modules/CIAO/tests/IDL_Test/Cornucopia/README | 39 + .../Double_Inherited_Component/ComponentC.cdp | 125 + .../Double_Inherited_Component/ComponentC_exec.cpp | 116 + .../Double_Inherited_Component/ComponentC_exec.h | 75 + .../Inherited_components.idl | 50 + .../Inherited_components.mpc | 125 + .../Double_Inherited_Component/run_test.pl | 229 + .../CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.idl | 166 + .../CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.mpc | 106 + modules/CIAO/tests/IDL_Test/IDL3_Plus/README | 23 + .../tests/IDL_Test/Included_Component/IC_Bar.idl | 8 + .../tests/IDL_Test/Included_Component/IC_Bar.mpc | 105 + .../tests/IDL_Test/Included_Component/IC_Foo.idl | 12 + .../tests/IDL_Test/Included_Component/IC_Foo.mpc | 104 + .../tests/IDL_Test/Inherited_Component/IhC_Bar.idl | 9 + .../tests/IDL_Test/Inherited_Component/IhC_Bar.mpc | 137 + .../tests/IDL_Test/Inherited_Component/IhC_Foo.idl | 13 + .../tests/IDL_Test/Inherited_Component/IhC_Foo.mpc | 132 + .../CIAO/tests/IDL_Test/Keywords/Keyword_Clash.idl | 110 + modules/CIAO/tests/IDL_Test/Keywords/Keywords.mpc | 109 + .../IDL_Test/Lem_Specific_Export/Lem_Export.idl | 8 + .../IDL_Test/Lem_Specific_Export/Lem_Export.mpc | 128 + .../Lem_Specific_Export/Lem_Export_exec.cpp | 106 + .../IDL_Test/Lem_Specific_Export/Lem_Export_exec.h | 84 + .../tests/IDL_Test/PIDL_Include/PIDLInclude.idl | 14 + .../tests/IDL_Test/PIDL_Include/PIDLInclude.mpc | 131 + .../IDL_Test/Reused_Facet_Interface/Basic.idl | 54 + .../IDL_Test/Reused_Facet_Interface/Basic.mpc | 82 + .../IDL_Test/Reused_Facet_Interface/CodeGen.idl | 47 + .../tests/IDL_Test/Reused_Facet_Interface/README | 12 + .../Reused_Facet_Interface.mpc | 112 + .../tests/Minimum/Minimum_Base/Minimum_Base.idl | 17 + .../tests/Minimum/Minimum_Base/Minimum_Base.mpc | 65 + modules/CIAO/tests/Minimum/Receiver/Receiver.idl | 18 + modules/CIAO/tests/Minimum/Receiver/Receiver.mpc | 134 + .../CIAO/tests/Minimum/Receiver/Receiver_exec.cpp | 114 + .../CIAO/tests/Minimum/Receiver/Receiver_exec.h | 80 + modules/CIAO/tests/Minimum/Sender/Sender.idl | 28 + modules/CIAO/tests/Minimum/Sender/Sender.mpc | 113 + modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp | 120 + modules/CIAO/tests/Minimum/Sender/Sender_exec.h | 83 + modules/CIAO/tests/tests.mwc | 9 + modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc | 66 + modules/CIAO/tools/IDL3_to_IDL2/README | 140 + .../IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h | 58 + modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.cpp | 1224 ++ modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.h | 126 + modules/CIAO/tools/IDL3_to_IDL2/be_extern.h | 86 + modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp | 197 + modules/CIAO/tools/IDL3_to_IDL2/be_global.h | 116 + modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp | 435 + modules/CIAO/tools/IDL3_to_IDL2/be_helper.h | 180 + modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp | 32 + modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp | 168 + modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp | 157 + modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h | 45 + .../CIAO/tools/IDL3_to_IDL2/checking_visitor.cpp | 453 + modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.h | 110 + .../CIAO/tools/IDL3_to_IDL2/identifier_helper.cpp | 123 + .../CIAO/tools/IDL3_to_IDL2/identifier_helper.h | 66 + .../tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp | 759 + .../CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h | 74 + .../tools/IDL3_to_XMI/CIAO_IDL3_TO_XMI_Export.h | 58 + modules/CIAO/tools/IDL3_to_XMI/IDL3_TO_XMI.mpc | 65 + .../CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp | 2680 +++ .../CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h | 322 + .../tools/IDL3_to_XMI/IR_Simulator_visitor.cpp | 1175 ++ .../CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.h | 129 + modules/CIAO/tools/IDL3_to_XMI/Literals.cpp | 156 + modules/CIAO/tools/IDL3_to_XMI/Literals.h | 170 + modules/CIAO/tools/IDL3_to_XMI/be_extern.h | 86 + modules/CIAO/tools/IDL3_to_XMI/be_global.cpp | 222 + modules/CIAO/tools/IDL3_to_XMI/be_global.h | 103 + modules/CIAO/tools/IDL3_to_XMI/be_helper.cpp | 438 + modules/CIAO/tools/IDL3_to_XMI/be_helper.h | 176 + modules/CIAO/tools/IDL3_to_XMI/be_init.cpp | 31 + modules/CIAO/tools/IDL3_to_XMI/be_produce.cpp | 139 + modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.cpp | 193 + modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.h | 39 + .../CIAO/tools/IDL3_to_XMI/identifier_helper.cpp | 115 + modules/CIAO/tools/IDL3_to_XMI/identifier_helper.h | 64 + modules/CIAO/tools/XML/CIAO_XML_Utils_Export.h | 54 + modules/CIAO/tools/XML/XML.mpc | 13 + modules/CIAO/tools/XML/XML_Error_Handler.cpp | 70 + modules/CIAO/tools/XML/XML_Error_Handler.h | 63 + modules/CIAO/tools/XML/XML_Helper.h | 100 + modules/CIAO/tools/XML/XML_Helper.tpp | 304 + modules/CIAO/tools/XML/XML_Schema_Resolver.cpp | 78 + modules/CIAO/tools/XML/XML_Schema_Resolver.h | 109 + modules/CIAO/tools/XML/XML_Schema_Resolver.tpp | 48 + modules/CIAO/tools/XML/XercesString.cpp | 151 + modules/CIAO/tools/XML/XercesString.h | 78 + 2056 files changed, 338937 insertions(+) create mode 100644 modules/CIAO/CIAO-INSTALL.html create mode 100644 modules/CIAO/CIAO.mwc create mode 100644 modules/CIAO/CIAO_DAnCE.mwc create mode 100644 modules/CIAO/CIAO_TAO.mwc create mode 100644 modules/CIAO/CIAO_TAO_DAnCE.mwc create mode 100644 modules/CIAO/COPYING create mode 100644 modules/CIAO/ChangeLog create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-04a create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-04b create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-06a create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-06b create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-07a create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-07b create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-09a create mode 100644 modules/CIAO/ChangeLogs/ChangeLog-pre_release create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Any_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Any_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Common.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Config_Handlers.mpc create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Common_Export.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Export.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DP_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DP_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Deployment.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Deployment.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ID_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ID_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/PL_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/PL_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/NIA_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Package_Handlers.mpc create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Property_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Property_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Req_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Req_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Utils/Exceptions.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/Utils/Functors.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMI.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMI.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XMLSchema/id_map.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.ipp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.tpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/XSC_XML_Handlers_Export.h create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ccd.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/ccd.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cdd.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cdd.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cdp.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cdp.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cid.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cid.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cpd.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/cpd.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/iad.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/iad.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/pcd.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/pcd.hpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/toplevel.cpp create mode 100644 modules/CIAO/DAnCE/Config_Handlers/toplevel.hpp create mode 100644 modules/CIAO/DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl create mode 100644 modules/CIAO/DAnCE/Deployment/CIAO_Interfaces.mpc create mode 100644 modules/CIAO/DAnCE/Deployment/CIAO_NodeManagerDaemon.idl create mode 100644 modules/CIAO/DAnCE/Deployment/DAnCE_Core.mpc create mode 100644 modules/CIAO/DAnCE/Deployment/DAnCE_Loader.h create mode 100644 modules/CIAO/DAnCE/Deployment/DAnCE_Properties.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_Application.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_ApplicationManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_Base.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_Connection.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_Data.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_DeploymentPlan.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_DomainApplication.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_DomainApplicationManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_ExecutionManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_NodeApplication.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_NodeApplicationManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_NodeManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_Packaging_Data.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_PlanError.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_RepositoryManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_StartError.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_StopError.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_TargetData.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_TargetManager.idl create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_common.h create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_stub_export.h create mode 100644 modules/CIAO/DAnCE/Deployment/Deployment_svnt_export.h create mode 100644 modules/CIAO/DAnCE/Deployment/Module_Main.h create mode 100644 modules/CIAO/DAnCE/DomainApplication/DomainApplication.mpc create mode 100644 modules/CIAO/DAnCE/DomainApplication/Domain_Application_Export.h create mode 100644 modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp create mode 100644 modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.h create mode 100644 modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc create mode 100644 modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h create mode 100644 modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp create mode 100644 modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h create mode 100644 modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.cpp create mode 100644 modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.h create mode 100644 modules/CIAO/DAnCE/ExecutionManager/DAnCE_ExecutionManager_Module_Export.h create mode 100644 modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc create mode 100644 modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Export.h create mode 100644 modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp create mode 100644 modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.h create mode 100644 modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.cpp create mode 100644 modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.h create mode 100644 modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Exec.cpp create mode 100644 modules/CIAO/DAnCE/Logger/DAnCE_Logger_Export.h create mode 100644 modules/CIAO/DAnCE/Logger/Log_Macros.cpp create mode 100644 modules/CIAO/DAnCE/Logger/Log_Macros.h create mode 100644 modules/CIAO/DAnCE/Logger/Logger.mpc create mode 100644 modules/CIAO/DAnCE/Logger/Logger_Service.cpp create mode 100644 modules/CIAO/DAnCE/Logger/Logger_Service.h create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_config_handlers.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_config_handlers_base.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_nodeapplication.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_nodeapplicationmanager.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_plan_generator.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_svnt.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_component_server.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_component_server_svnt.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_deployment_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_deployment_svnt.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_domainapplication.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_domainapplication_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_domainapplication_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_exe.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_executionmanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_executionmanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_extension_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_lib.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_logger.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodeapplication.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodemanager.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodemanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodemanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_nodemanager_svnt.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_plan_generator.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_plan_launcher.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_plan_launcher_base.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_redirectionservice.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_repositorymanager.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_repositorymanagerbase.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_targetmanager.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_targetmanager_skel.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_targetmanager_stub.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_tm_daemon.mpb create mode 100644 modules/CIAO/DAnCE/MPC/config/dance_utils.mpb create mode 100644 modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.cpp create mode 100644 modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.h create mode 100644 modules/CIAO/DAnCE/NodeApplication/Name_Utilities.cpp create mode 100644 modules/CIAO/DAnCE/NodeApplication/Name_Utilities.h create mode 100644 modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc create mode 100644 modules/CIAO/DAnCE/NodeApplication/NodeApplication_Export.h create mode 100644 modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp create mode 100644 modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h create mode 100644 modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc create mode 100644 modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Export.h create mode 100644 modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp create mode 100644 modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h create mode 100644 modules/CIAO/DAnCE/NodeManager/DAnCE_NodeManager_Module_Export.h create mode 100644 modules/CIAO/DAnCE/NodeManager/NodeManager.mpc create mode 100644 modules/CIAO/DAnCE/NodeManager/NodeManager_Export.h create mode 100644 modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp create mode 100644 modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h create mode 100644 modules/CIAO/DAnCE/NodeManager/Node_Manager_Exec.cpp create mode 100644 modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.cpp create mode 100644 modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.h create mode 100644 modules/CIAO/DAnCE/NodeManager/README create mode 100644 modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h create mode 100644 modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h create mode 100644 modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl create mode 100644 modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc create mode 100644 modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h create mode 100644 modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl_Export.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module_Export.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module_Export.h create mode 100644 modules/CIAO/DAnCE/Plan_Launcher/launcher.cpp create mode 100644 modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.cpp create mode 100644 modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.h create mode 100644 modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.cpp create mode 100644 modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.h create mode 100644 modules/CIAO/DAnCE/RedirectionService/RedirectionService.cpp create mode 100644 modules/CIAO/DAnCE/RedirectionService/RedirectionService.h create mode 100644 modules/CIAO/DAnCE/RedirectionService/RedirectionService.mpc create mode 100644 modules/CIAO/DAnCE/RedirectionService/RedirectionService_Export.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/DAnCE_RepositoryManager_Module_Export.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/README create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Admin_Export.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Exec.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.cpp create mode 100644 modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.h create mode 100644 modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/CmpClient.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/DAnCE_TargetManagerDaemon.idl create mode 100644 modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/DomainDataManager.h create mode 100644 modules/CIAO/DAnCE/TargetManager/DomainEvents.idl create mode 100644 modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.h create mode 100644 modules/CIAO/DAnCE/TargetManager/TM_Client.mpc create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager.idl create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager.mpc create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.h create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager_Impl_export.h create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h create mode 100644 modules/CIAO/DAnCE/TargetManager/Target_Manager_Exec.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.cpp create mode 100644 modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.h create mode 100644 modules/CIAO/DAnCE/TargetManager/Target_Manager_Module_export.h create mode 100644 modules/CIAO/DAnCE/Utils/DAnCE_Utils.mpc create mode 100644 modules/CIAO/DAnCE/Utils/DAnCE_Utils_Export.h create mode 100644 modules/CIAO/DAnCE/Utils/Plan_Handler.cpp create mode 100644 modules/CIAO/DAnCE/Utils/Plan_Handler.h create mode 100644 modules/CIAO/DAnCE/bin/.empty create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/__init__.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/__init__.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/_path.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/artifact.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_impl.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_inst.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/footer.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/header.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_impl.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_inst.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_impl.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_inst.py create mode 100755 modules/CIAO/DAnCE/bin/PythonDAnCE/generator/templet.py create mode 100755 modules/CIAO/DAnCE/bin/generate_plan.py create mode 100644 modules/CIAO/DAnCE/docs/schema/06-04-02.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/Basic_Deployment_Data.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/CIAOEvents.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/CIAOServerResources.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/Deployment.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/Modified_Deployment.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/README.html create mode 100644 modules/CIAO/DAnCE/docs/schema/SANet_Network.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/ServerResourceUsage.txt create mode 100644 modules/CIAO/DAnCE/docs/schema/Spec_Defined_Deployment.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/Spec_Defined_XMI.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/Task_Map.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/XMI.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/ccd.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/cdd.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/cdp.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/ciaopolicy.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/cid.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/cpd.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/iad.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/pcd.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/toplevel.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/unused_06-04-02.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/unused_elements.xsd create mode 100644 modules/CIAO/DAnCE/docs/schema/xsc-banner.cpp create mode 100644 modules/CIAO/DAnCE/docs/schema/xsc-banner.h create mode 100644 modules/CIAO/DAnCE/lib/.empty create mode 100644 modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/Component.cdp create mode 100755 modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/run_test.pl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.idl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.mpc create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.h create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome_NS.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome_NS.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome_NS.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NS.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NilFacet.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc create mode 100755 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/EmitsConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/MultiplexConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/PublishConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleAttributeExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_2.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_Default.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/TwoComponentsOneHome.cdp create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc create mode 100755 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl create mode 100644 modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/Config_Handlers.mpc create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/dynany_test.idl create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.mpc create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/Package_Handlers.mpc create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/test.cdp create mode 100644 modules/CIAO/DAnCE/tests/Config_Handlers/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host1.cdp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host2.cdp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2.cdp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host1.cdp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host2.cdp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/DeploymentPlanDump.mpc create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/NewCcmDance1.cdp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanDump/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc create mode 100644 modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc create mode 100644 modules/CIAO/DAnCE/tests/DeploymentTest1/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/Dummy.idl create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.cpp create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.h create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/NameServiceTest.mpc create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/RegistrationPath.h create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/clt_main.cpp create mode 100755 modules/CIAO/DAnCE/tests/NameServiceTest/run_test.pl create mode 100644 modules/CIAO/DAnCE/tests/NameServiceTest/srv_main.cpp create mode 100644 modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/NAM_NA.mpc create mode 100644 modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc create mode 100644 modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/Dummy.idl create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.h create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/RegistrationPath.h create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/clt_main.cpp create mode 100644 modules/CIAO/DAnCE/tests/ObjectLocatorTest/srv_main.cpp create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/Dummy.idl create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.h create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/RegistrationPath.h create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/clt_main.cpp create mode 100644 modules/CIAO/DAnCE/tests/RedirectionServiceTest/srv_main.cpp create mode 100755 modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl create mode 100644 modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat create mode 100644 modules/CIAO/MPC/config/ccm.mpb create mode 100644 modules/CIAO/MPC/config/ccm_componentserver_stub.mpb create mode 100644 modules/CIAO/MPC/config/ccm_componentserver_svnt.mpb create mode 100644 modules/CIAO/MPC/config/ccm_configvalue.mpb create mode 100644 modules/CIAO/MPC/config/ccm_cookie.mpb create mode 100644 modules/CIAO/MPC/config/ccm_executor.mpb create mode 100644 modules/CIAO/MPC/config/ccm_stub.mpb create mode 100644 modules/CIAO/MPC/config/ccm_svnt.mpb create mode 100644 modules/CIAO/MPC/config/ciao.mpb create mode 100644 modules/CIAO/MPC/config/ciao_componentserver_stub.mpb create mode 100644 modules/CIAO/MPC/config/ciao_componentserver_svnt.mpb create mode 100644 modules/CIAO/MPC/config/ciao_connector_base.mpb create mode 100644 modules/CIAO/MPC/config/ciao_container_base.mpb create mode 100644 modules/CIAO/MPC/config/ciao_context_impl.mpb create mode 100644 modules/CIAO/MPC/config/ciao_cs_client.mpb create mode 100644 modules/CIAO/MPC/config/ciao_dds4ccm_ndds_impl.mpb create mode 100644 modules/CIAO/MPC/config/ciao_example_output.mpb create mode 100644 modules/CIAO/MPC/config/ciao_exe.mpb create mode 100644 modules/CIAO/MPC/config/ciao_executor.mpb create mode 100644 modules/CIAO/MPC/config/ciao_lib.mpb create mode 100644 modules/CIAO/MPC/config/ciao_logger.mpb create mode 100644 modules/CIAO/MPC/config/ciao_output.mpb create mode 100644 modules/CIAO/MPC/config/ciao_port_activator_stub.mpb create mode 100644 modules/CIAO/MPC/config/ciao_servant.mpb create mode 100644 modules/CIAO/MPC/config/ciao_servant_activator.mpb create mode 100644 modules/CIAO/MPC/config/ciao_session_container.mpb create mode 100644 modules/CIAO/MPC/config/ciao_vcwarnings.mpb create mode 100644 modules/CIAO/MPC/config/ciao_xml_utils.mpb create mode 100644 modules/CIAO/MPC/config/ciaoexe.mpb create mode 100644 modules/CIAO/MPC/config/ciaoidldefaults.mpb create mode 100644 modules/CIAO/MPC/config/ciaolib_with_idl.mpb create mode 100644 modules/CIAO/MPC/config/componentidldefaults.mpb create mode 100644 modules/CIAO/MPC/config/connectoridldefaults.mpb create mode 100644 modules/CIAO/MPC/config/dds4ccm_base.mpb create mode 100644 modules/CIAO/MPC/config/dds4ccm_impl.mpb create mode 100644 modules/CIAO/MPC/config/dds4ccm_skel.mpb create mode 100644 modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb create mode 100644 modules/CIAO/MPC/config/xscdefaults.mpb create mode 100644 modules/CIAO/NEWS create mode 100644 modules/CIAO/PROBLEM-REPORT-FORM create mode 100644 modules/CIAO/README create mode 100644 modules/CIAO/Release create mode 100644 modules/CIAO/VERSION create mode 100644 modules/CIAO/bin/PerlCIAO/TestUtils.base create mode 100644 modules/CIAO/bin/PerlCIAO/TestUtils.pm create mode 100644 modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm create mode 100755 modules/CIAO/bin/PerlCIAO/generate_container.pl create mode 100644 modules/CIAO/bin/PerlCIAO/perlciao.mpc create mode 100644 modules/CIAO/bin/ciao_tests.lst create mode 100755 modules/CIAO/bin/generate_component_mpc.pl create mode 100755 modules/CIAO/bin/update_package.py create mode 100755 modules/CIAO/bin/valgrind_nodedaemon.py create mode 100644 modules/CIAO/ccm/CCM.mpc create mode 100644 modules/CIAO/ccm/CCM_Base.idl create mode 100644 modules/CIAO/ccm/CCM_CCM2Context.idl create mode 100644 modules/CIAO/ccm/CCM_CCMException.idl create mode 100644 modules/CIAO/ccm/CCM_Component.idl create mode 100644 modules/CIAO/ccm/CCM_ComponentId.idl create mode 100644 modules/CIAO/ccm/CCM_Configurator.idl create mode 100644 modules/CIAO/ccm/CCM_Container.idl create mode 100644 modules/CIAO/ccm/CCM_Container_Ex.idl create mode 100644 modules/CIAO/ccm/CCM_Context.idl create mode 100644 modules/CIAO/ccm/CCM_Cookie.idl create mode 100644 modules/CIAO/ccm/CCM_EnterpriseComponent.idl create mode 100644 modules/CIAO/ccm/CCM_Entity2Context.idl create mode 100644 modules/CIAO/ccm/CCM_EntityComponent.idl create mode 100644 modules/CIAO/ccm/CCM_EntityContext.idl create mode 100644 modules/CIAO/ccm/CCM_Enumeration.idl create mode 100644 modules/CIAO/ccm/CCM_EventBase.idl create mode 100644 modules/CIAO/ccm/CCM_EventConsumerBase.idl create mode 100644 modules/CIAO/ccm/CCM_Events.idl create mode 100644 modules/CIAO/ccm/CCM_Exceptions.idl create mode 100644 modules/CIAO/ccm/CCM_ExecutorLocator.idl create mode 100644 modules/CIAO/ccm/CCM_Home.idl create mode 100644 modules/CIAO/ccm/CCM_HomeConfiguration.idl create mode 100644 modules/CIAO/ccm/CCM_HomeExecutorBase.idl create mode 100644 modules/CIAO/ccm/CCM_HomeFinder.idl create mode 100644 modules/CIAO/ccm/CCM_HomeRegistration.idl create mode 100644 modules/CIAO/ccm/CCM_Homes.idl create mode 100644 modules/CIAO/ccm/CCM_KeylessCCMHome.idl create mode 100644 modules/CIAO/ccm/CCM_Navigation.idl create mode 100644 modules/CIAO/ccm/CCM_Object.idl create mode 100644 modules/CIAO/ccm/CCM_PrimaryKeyBase.idl create mode 100644 modules/CIAO/ccm/CCM_ProxyHomeRegistration.idl create mode 100644 modules/CIAO/ccm/CCM_Receptacle.idl create mode 100644 modules/CIAO/ccm/CCM_Session2Context.idl create mode 100644 modules/CIAO/ccm/CCM_SessionComponent.idl create mode 100644 modules/CIAO/ccm/CCM_SessionContext.idl create mode 100644 modules/CIAO/ccm/CCM_SessionSynchronization.idl create mode 100644 modules/CIAO/ccm/CCM_StandardConfigurator.idl create mode 100644 modules/CIAO/ccm/CCM_StateIdFactory.idl create mode 100644 modules/CIAO/ccm/CCM_Stub_Export.h create mode 100644 modules/CIAO/ccm/CCM_Svnt_Export.h create mode 100644 modules/CIAO/ccm/CCM_Transaction.idl create mode 100644 modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.idl create mode 100644 modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.mpc create mode 100644 modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Base.idl create mode 100644 modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Client.idl create mode 100644 modules/CIAO/ccm/Components.idl create mode 100644 modules/CIAO/ccm/CosPersistentState.idl create mode 100644 modules/CIAO/ccm/Security.idl create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_CS_Client.idl create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.idl create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.mpc create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.h create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.h create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_FailureReasons.idl create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_Properties.idl create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.h create mode 100644 modules/CIAO/ciao/ComponentServer/Client_init.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/Client_init.h create mode 100644 modules/CIAO/ciao/ComponentServer/Server_init.cpp create mode 100644 modules/CIAO/ciao/ComponentServer/Server_init.h create mode 100644 modules/CIAO/ciao/Containers/CIAO_Servant_Activator.idl create mode 100644 modules/CIAO/ciao/Containers/CIAO_Servant_Activator.mpc create mode 100644 modules/CIAO/ciao/Containers/Container_Base.cpp create mode 100644 modules/CIAO/ciao/Containers/Container_Base.h create mode 100644 modules/CIAO/ciao/Containers/Container_Base.idl create mode 100644 modules/CIAO/ciao/Containers/Container_Base.inl create mode 100644 modules/CIAO/ciao/Containers/Containers.mpc create mode 100644 modules/CIAO/ciao/Containers/Servant_Activator.cpp create mode 100644 modules/CIAO/ciao/Containers/Servant_Activator.h create mode 100644 modules/CIAO/ciao/Containers/Session/Session_Container.cpp create mode 100644 modules/CIAO/ciao/Containers/Session/Session_Container.h create mode 100644 modules/CIAO/ciao/Containers/Session/Session_Container.idl create mode 100644 modules/CIAO/ciao/Containers/Session/Session_Container.inl create mode 100644 modules/CIAO/ciao/Containers/Session/Session_Container.mpc create mode 100644 modules/CIAO/ciao/Contexts/Context.mpc create mode 100644 modules/CIAO/ciao/Contexts/Context_Impl_Base.cpp create mode 100644 modules/CIAO/ciao/Contexts/Context_Impl_Base.h create mode 100644 modules/CIAO/ciao/Contexts/Context_Impl_Base.inl create mode 100644 modules/CIAO/ciao/Contexts/Context_Impl_T.cpp create mode 100644 modules/CIAO/ciao/Contexts/Context_Impl_T.h create mode 100644 modules/CIAO/ciao/Contexts/Context_Impl_export.h create mode 100644 modules/CIAO/ciao/Logger/CIAO_Logger_Export.h create mode 100644 modules/CIAO/ciao/Logger/Log_Macros.cpp create mode 100644 modules/CIAO/ciao/Logger/Log_Macros.h create mode 100644 modules/CIAO/ciao/Logger/Logger.mpc create mode 100644 modules/CIAO/ciao/Logger/Logger_Service.cpp create mode 100644 modules/CIAO/ciao/Logger/Logger_Service.h create mode 100644 modules/CIAO/ciao/Servants/CIAO_Port_Activator.idl create mode 100644 modules/CIAO/ciao/Servants/CIAO_Servant_Impl_export.h create mode 100644 modules/CIAO/ciao/Servants/Home_Servant_Impl_Base.cpp create mode 100644 modules/CIAO/ciao/Servants/Home_Servant_Impl_Base.h create mode 100644 modules/CIAO/ciao/Servants/Home_Servant_Impl_T.cpp create mode 100644 modules/CIAO/ciao/Servants/Home_Servant_Impl_T.h create mode 100644 modules/CIAO/ciao/Servants/Port_Activator.cpp create mode 100644 modules/CIAO/ciao/Servants/Port_Activator.h create mode 100644 modules/CIAO/ciao/Servants/Port_Activator_T.cpp create mode 100644 modules/CIAO/ciao/Servants/Port_Activator_T.h create mode 100644 modules/CIAO/ciao/Servants/Servant_Impl_Base.cpp create mode 100644 modules/CIAO/ciao/Servants/Servant_Impl_Base.h create mode 100644 modules/CIAO/ciao/Servants/Servant_Impl_T.cpp create mode 100644 modules/CIAO/ciao/Servants/Servant_Impl_T.h create mode 100644 modules/CIAO/ciao/Servants/Servant_Impl_Utils_T.cpp create mode 100644 modules/CIAO/ciao/Servants/Servants.mpc create mode 100644 modules/CIAO/ciao/Servants/StandardConfigurator_Impl.cpp create mode 100644 modules/CIAO/ciao/Servants/StandardConfigurator_Impl.h create mode 100644 modules/CIAO/ciao/Valuetype_Factories/ConfigValue.cpp create mode 100644 modules/CIAO/ciao/Valuetype_Factories/ConfigValue.h create mode 100644 modules/CIAO/ciao/Valuetype_Factories/ConfigValue_Export.h create mode 100644 modules/CIAO/ciao/Valuetype_Factories/Cookie_Export.h create mode 100644 modules/CIAO/ciao/Valuetype_Factories/Cookies.cpp create mode 100644 modules/CIAO/ciao/Valuetype_Factories/Cookies.h create mode 100644 modules/CIAO/ciao/Valuetype_Factories/Cookies.inl create mode 100644 modules/CIAO/ciao/Valuetype_Factories/Factories.mpc create mode 100644 modules/CIAO/ciao/Version.h create mode 100644 modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt create mode 100644 modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.idl create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.mpc create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.cpp create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.h create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.h create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h create mode 100644 modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf create mode 100644 modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf create mode 100644 modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf create mode 100644 modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml create mode 100644 modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd create mode 100644 modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml create mode 100644 modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods create mode 100644 modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf create mode 100644 modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl create mode 100644 modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl create mode 100644 modules/CIAO/connectors/dds4ccm/docs/details.txt create mode 100644 modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p create mode 100644 modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h create mode 100644 modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h create mode 100644 modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS4CCM_Traits.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DeadlineQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DestinationOrderQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactoryQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityServiceQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/EntityFactoryQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/GroupDataQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/HistoryQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/LatencyBudgetQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/LifespanQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipStrengthQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PartitionQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PresentationQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/ReaderDataLifecycleQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/ReliabilityQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/ResourceLimitsQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SampleInfo.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TimeBasedFilterQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDataQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TopicQos.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/TransportPriorityQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/UserDataQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/WriterDataLifecycleQosPolicy.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h create mode 100644 modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h create mode 100644 modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp create mode 100755 modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl create mode 100644 modules/CIAO/docs/CIAO.pdf create mode 100644 modules/CIAO/docs/CIAO_Style_Guide.txt create mode 100644 modules/CIAO/docs/ConfigValues.html create mode 100644 modules/CIAO/docs/Connectors.graffle create mode 100644 modules/CIAO/docs/EnvVars.html create mode 100644 modules/CIAO/docs/OMG-CCM-Tutorial.ppt create mode 100644 modules/CIAO/docs/Porting_Hints.txt create mode 100644 modules/CIAO/docs/Purify.html create mode 100644 modules/CIAO/docs/RT-Extension.html create mode 100644 modules/CIAO/docs/TODO.html create mode 100644 modules/CIAO/docs/Trace.html create mode 100644 modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd create mode 100644 modules/CIAO/docs/XML/componentassembly.dtd create mode 100644 modules/CIAO/docs/XML/corbacomponent.dtd create mode 100644 modules/CIAO/docs/XML/properties.dtd create mode 100644 modules/CIAO/docs/XML/softpkg.dtd create mode 100644 modules/CIAO/docs/com-impl.html create mode 100644 modules/CIAO/docs/fm/CIAO.fm create mode 100644 modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_01.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_01.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_02.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_02.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_03.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_03.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_04.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_04.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_05.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_05.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_06.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_06.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_07.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_07.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_08.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_08.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_09.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_09.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.sxd create mode 100644 modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.eps create mode 100644 modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.sxd create mode 100644 modules/CIAO/docs/fm/images/OCILOGO_bw_book.eps create mode 100644 modules/CIAO/docs/generate_component_mpc.html create mode 100644 modules/CIAO/docs/imgs/CCM-v5.vsd create mode 100644 modules/CIAO/docs/imgs/CCM.vsd create mode 100644 modules/CIAO/docs/imgs/DAnCE-Dynamic.png create mode 100644 modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd create mode 100644 modules/CIAO/docs/imgs/File-Gen-Existing.png create mode 100644 modules/CIAO/docs/imgs/File-Gen-Future.png create mode 100644 modules/CIAO/docs/imgs/File_Generation_Flow.vsd create mode 100644 modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd create mode 100644 modules/CIAO/docs/imgs/basic-container.png create mode 100644 modules/CIAO/docs/imgs/ciao-dynamic1.jpg create mode 100644 modules/CIAO/docs/imgs/ciao-dynamic2.jpg create mode 100644 modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg create mode 100644 modules/CIAO/docs/imgs/ciao-static1.jpg create mode 100644 modules/CIAO/docs/imgs/ciao-static2.jpg create mode 100644 modules/CIAO/docs/imgs/component-basic.png create mode 100644 modules/CIAO/docs/imgs/dance_arch.jpg create mode 100644 modules/CIAO/docs/imgs/dance_arch.vsd create mode 100644 modules/CIAO/docs/imgs/deployment.png create mode 100644 modules/CIAO/docs/imgs/extended-container.png create mode 100644 modules/CIAO/docs/imgs/home-config.png create mode 100644 modules/CIAO/docs/imgs/static_dance_arch.jpg create mode 100644 modules/CIAO/docs/imgs/static_dance_arch.vsd create mode 100644 modules/CIAO/docs/imgs/static_dance_impl.jpg create mode 100644 modules/CIAO/docs/imgs/static_dance_impl.vsd create mode 100644 modules/CIAO/docs/index.html create mode 100644 modules/CIAO/docs/new_components.html create mode 100644 modules/CIAO/docs/releasenotes/dance.html create mode 100644 modules/CIAO/docs/releasenotes/index.html create mode 100644 modules/CIAO/docs/releasenotes/switch.html create mode 100755 modules/CIAO/docs/static_ciao_contents.html create mode 100755 modules/CIAO/docs/static_ciao_index.html create mode 100755 modules/CIAO/docs/static_ciao_toc.html create mode 100644 modules/CIAO/docs/static_config_example.html create mode 100644 modules/CIAO/docs/static_config_rtexample.html create mode 100644 modules/CIAO/docs/static_dance.html create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/01.html create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/02.html create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/03.html create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/04.html create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.idl create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.idl create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Icons/AddConnMode.gif create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Icons/SetMode.gif create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Model/Quoter.xme create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/README.html create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Default.pcd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Plan.cdp create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker.ccd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBrokerMonolithicImpl.cid create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_exec.iad create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_stub.iad create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_svnt.iad create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor.ccd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributorMonolithicImpl.cid create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_exec.iad create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_stub.iad create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_svnt.iad create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cid create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cpd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/TopLevelPackage.tpd create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd create mode 100755 modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5a.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/step1.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/step2.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/step3.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/step6.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/images/steps.jpg create mode 100644 modules/CIAO/docs/tutorials/Quoter/Simple/index.html create mode 100644 modules/CIAO/docs/value_factory_registration.html create mode 100644 modules/CIAO/etc/ciao.doxygen create mode 100644 modules/CIAO/etc/ciao_DAnCE.doxygen create mode 100644 modules/CIAO/etc/ciao_config_handlers.doxygen create mode 100644 modules/CIAO/etc/ciao_dds4ccm.doxygen create mode 100644 modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl create mode 100644 modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc create mode 100644 modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp create mode 100644 modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h create mode 100644 modules/CIAO/examples/BasicSP/BMClosedED/config create mode 100644 modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl create mode 100644 modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc create mode 100644 modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp create mode 100644 modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h create mode 100644 modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl create mode 100644 modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc create mode 100644 modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp create mode 100644 modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h create mode 100644 modules/CIAO/examples/BasicSP/BasicSP.idl create mode 100644 modules/CIAO/examples/BasicSP/BasicSP.mpc create mode 100644 modules/CIAO/examples/BasicSP/BasicSP.mwc create mode 100644 modules/CIAO/examples/BasicSP/EC/EC.idl create mode 100644 modules/CIAO/examples/BasicSP/EC/EC.mpc create mode 100644 modules/CIAO/examples/BasicSP/EC/EC_exec.cpp create mode 100644 modules/CIAO/examples/BasicSP/EC/EC_exec.h create mode 100644 modules/CIAO/examples/BasicSP/EC/README create mode 100644 modules/CIAO/examples/BasicSP/EC/client.cpp create mode 100644 modules/CIAO/examples/BasicSP/EC/controller.cpp create mode 100644 modules/CIAO/examples/BasicSP/README.html create mode 100644 modules/CIAO/examples/BasicSP/RepoMan_Usage.html create mode 100644 modules/CIAO/examples/BasicSP/descriptors/BasicSP.dat create mode 100644 modules/CIAO/examples/BasicSP/descriptors/BasicSP_Homed.cdp create mode 100644 modules/CIAO/examples/BasicSP/descriptors/BasicSP_Unhomed.cdp create mode 100755 modules/CIAO/examples/BasicSP/descriptors/run_test.pl create mode 100644 modules/CIAO/examples/DevGuideExamples/CIAO.mwc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.mpc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.h create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/History.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.h create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Message.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.mpc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.h create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Publication.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.h create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.mpc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.h create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Runnable.idl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.h create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/README.txt create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/StaticDAnCEApp.cpp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/plan.h create mode 100755 modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.ccd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cid create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cpd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Exec.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Stub.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Svnt.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application-flattened.cdp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.cdp create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.pcd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Deployment.xsd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Domain.cdd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Libraries.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.ccd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cid create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cpd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.ccd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cid create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cpd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Exec.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Stub.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Svnt.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/README_15a create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.ccd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cid create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cpd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Exec.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Stub.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Svnt.iad create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/XMI.xsd create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/admin.dat create mode 100644 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/package.tpd create mode 100755 modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/run_test.pl create mode 100644 modules/CIAO/examples/DevGuideExamples/readme.txt create mode 100644 modules/CIAO/examples/Display/Display_Base/Display_Base.idl create mode 100644 modules/CIAO/examples/Display/Display_Base/Display_Base.mpc create mode 100644 modules/CIAO/examples/Display/GPS/GPS.idl create mode 100644 modules/CIAO/examples/Display/GPS/GPS.mpc create mode 100644 modules/CIAO/examples/Display/GPS/GPSEI.idl create mode 100644 modules/CIAO/examples/Display/GPS/GPS_exec.cpp create mode 100644 modules/CIAO/examples/Display/GPS/GPS_exec.h create mode 100644 modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp create mode 100644 modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h create mode 100644 modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl create mode 100644 modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc create mode 100644 modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif create mode 100644 modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm create mode 100644 modules/CIAO/examples/Display/README.html create mode 100644 modules/CIAO/examples/Display/RateGen/RateGen.idl create mode 100644 modules/CIAO/examples/Display/RateGen/RateGen.mpc create mode 100644 modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp create mode 100644 modules/CIAO/examples/Display/RateGen/RateGen_exec.h create mode 100644 modules/CIAO/examples/Display/RateGen/controller.cpp create mode 100644 modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp create mode 100644 modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd create mode 100644 modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat create mode 100644 modules/CIAO/examples/Display/descriptors/XMI.xsd create mode 100755 modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl create mode 100644 modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp create mode 100755 modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl create mode 100755 modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl create mode 100644 modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl create mode 100644 modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc create mode 100644 modules/CIAO/examples/Hello/Receiver/Receiver.idl create mode 100644 modules/CIAO/examples/Hello/Receiver/Receiver.mpc create mode 100644 modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp create mode 100644 modules/CIAO/examples/Hello/Receiver/Receiver_exec.h create mode 100644 modules/CIAO/examples/Hello/Sender/Sender.idl create mode 100644 modules/CIAO/examples/Hello/Sender/Sender.mpc create mode 100644 modules/CIAO/examples/Hello/Sender/Sender_exec.cpp create mode 100644 modules/CIAO/examples/Hello/Sender/Sender_exec.h create mode 100644 modules/CIAO/examples/Hello/Sender/starter.cpp create mode 100644 modules/CIAO/examples/Hello/descriptors/Aliased_Map.dat create mode 100644 modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp create mode 100644 modules/CIAO/examples/Hello/descriptors/DeploymentPlan_without_ns.cdp create mode 100644 modules/CIAO/examples/Hello/descriptors/Domain.cdd create mode 100644 modules/CIAO/examples/Hello/descriptors/Hello.pcd create mode 100644 modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat create mode 100644 modules/CIAO/examples/Hello/descriptors/package.tpd create mode 100755 modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl create mode 100755 modules/CIAO/examples/Hello/descriptors/run_test.pl create mode 100755 modules/CIAO/examples/Hello/descriptors/run_test_alias.pl create mode 100755 modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl create mode 100644 modules/CIAO/examples/Hello/descriptors/svc_em.conf create mode 100644 modules/CIAO/examples/Hello/step-by-step.html create mode 100644 modules/CIAO/examples/Null_Component/Null_Component.idl create mode 100644 modules/CIAO/examples/Null_Component/Null_Component.mpc create mode 100644 modules/CIAO/examples/Null_Component/Null_Component_exec.cpp create mode 100644 modules/CIAO/examples/Null_Component/Null_Component_exec.h create mode 100644 modules/CIAO/examples/Null_Component/Null_Interface.idl create mode 100644 modules/CIAO/examples/Null_Component/Null_Interface.mpc create mode 100644 modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp create mode 100644 modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc create mode 100644 modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat create mode 100644 modules/CIAO/examples/Null_Component/descriptors/Null_Homed.cdp create mode 100644 modules/CIAO/examples/Null_Component/descriptors/Null_Unhomed.cdp create mode 100755 modules/CIAO/examples/Null_Component/descriptors/run_test.pl create mode 100644 modules/CIAO/examples/Null_Component/model/Null_Component.xme create mode 100644 modules/CIAO/examples/Null_Component/plan.h create mode 100644 modules/CIAO/examples/Philosophers/Philosophers.idl create mode 100644 modules/CIAO/examples/Philosophers/README create mode 100644 modules/CIAO/performance-tests/Benchmark/Benchmark.idl create mode 100644 modules/CIAO/performance-tests/Benchmark/Benchmark.mpc create mode 100644 modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/LatencyTest.h create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp create mode 100755 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl create mode 100644 modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf create mode 100644 modules/CIAO/performance-tests/Benchmark/README create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/README create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp create mode 100755 modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp create mode 100755 modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl create mode 100755 modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl create mode 100644 modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat create mode 100644 modules/CIAO/performance-tests/Benchmark/descriptors/test.dat create mode 100644 modules/CIAO/performance-tests/Benchmark/server.cpp create mode 100644 modules/CIAO/performance-tests/Benchmark/svc.conf create mode 100644 modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp create mode 100644 modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc create mode 100644 modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl create mode 100644 modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc create mode 100644 modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp create mode 100644 modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h create mode 100644 modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.cpp create mode 100644 modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.h create mode 100644 modules/CIAO/performance-tests/Protocols/Sender/Sender.idl create mode 100644 modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc create mode 100644 modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp create mode 100644 modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h create mode 100644 modules/CIAO/performance-tests/Protocols/common/Protocols.idl create mode 100644 modules/CIAO/performance-tests/Protocols/common/Protocols.mpc create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/default.cad create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/remote.cad create mode 100755 modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/svc.conf create mode 100644 modules/CIAO/performance-tests/Protocols/descriptors/test.dat create mode 100644 modules/CIAO/performance-tests/mico/mico-thrput-st/README create mode 100755 modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip create mode 100644 modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl create mode 100644 modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc create mode 100644 modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h create mode 100644 modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc create mode 100755 modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env create mode 100644 modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc create mode 100644 modules/CIAO/rules.ciao.GNU create mode 100644 modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM create mode 100644 modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl create mode 100644 modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc create mode 100644 modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl create mode 100644 modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp create mode 100644 modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h create mode 100644 modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp create mode 100644 modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp create mode 100644 modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat create mode 100644 modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr create mode 100755 modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl create mode 100644 modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl create mode 100644 modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc create mode 100644 modules/CIAO/tests/Bug_3769_Regression/Foo.idl create mode 100644 modules/CIAO/tests/Bug_3769_Regression/Foo.mpc create mode 100644 modules/CIAO/tests/Bug_3769_Regression/Foo_exec.cpp create mode 100644 modules/CIAO/tests/Bug_3769_Regression/Foo_exec.h create mode 100644 modules/CIAO/tests/Bug_3769_Regression/descriptors/DeploymentPlan.cdp create mode 100644 modules/CIAO/tests/Bug_3769_Regression/descriptors/NodeMap.dat create mode 100644 modules/CIAO/tests/Bug_3769_Regression/descriptors/run_test.pl create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Activator/Activator.mpc create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Activator/client.cpp create mode 100755 modules/CIAO/tests/CIAO_ComponentServer/Activator/run_test.pl create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Basic/Basic.mpc create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Basic/client.cpp create mode 100755 modules/CIAO/tests/CIAO_ComponentServer/Basic/run_test.pl create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp create mode 100755 modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.idl create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h create mode 100644 modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/client.cpp create mode 100755 modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/run_test.pl create mode 100644 modules/CIAO/tests/CIDL/CodeGen/Basic.idl create mode 100644 modules/CIAO/tests/CIDL/CodeGen/Basic.mpc create mode 100644 modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl create mode 100644 modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc create mode 100644 modules/CIAO/tests/CIDL/CodeGen/README create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl create mode 100644 modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc create mode 100644 modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl create mode 100644 modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc create mode 100644 modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl create mode 100644 modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc create mode 100644 modules/CIAO/tests/IDL3/Events/Any/Any.mpc create mode 100644 modules/CIAO/tests/IDL3/Events/Any/EventAny.idl create mode 100644 modules/CIAO/tests/IDL3/Events/Any/README create mode 100644 modules/CIAO/tests/IDL3/Events/Any/main.cpp create mode 100755 modules/CIAO/tests/IDL3/Events/Any/run_test.pl create mode 100644 modules/CIAO/tests/IDL3/Events/Regular/Regular.idl create mode 100644 modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc create mode 100644 modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl create mode 100644 modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc create mode 100644 modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl create mode 100644 modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc create mode 100644 modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl create mode 100644 modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc create mode 100644 modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl create mode 100644 modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc create mode 100644 modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl create mode 100644 modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/README create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/keyword_clash.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/All/raw_include.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl create mode 100644 modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc create mode 100644 modules/CIAO/tests/IDL3/Lookup/README create mode 100644 modules/CIAO/tests/IDL3/Lookup/lookup_test.idl create mode 100644 modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc create mode 100755 modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/test.idl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/IDL2XMI_Test.mpc create mode 100644 modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp create mode 100644 modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.h create mode 100755 modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/xmlvalidator.cpp create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI.dtd create mode 100755 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/run_test.pl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/test.idl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File1.idl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File2.idl create mode 100755 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl create mode 100755 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/test.idl create mode 100755 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/run_test.pl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/test.idl create mode 100755 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl create mode 100644 modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/test.idl create mode 100644 modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.idl create mode 100644 modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Cornucopia/README create mode 100644 modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC.cdp create mode 100644 modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.cpp create mode 100644 modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.h create mode 100644 modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.idl create mode 100644 modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.mpc create mode 100755 modules/CIAO/tests/IDL_Test/Double_Inherited_Component/run_test.pl create mode 100644 modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.idl create mode 100644 modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.mpc create mode 100644 modules/CIAO/tests/IDL_Test/IDL3_Plus/README create mode 100644 modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.idl create mode 100644 modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.idl create mode 100644 modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.idl create mode 100644 modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.idl create mode 100644 modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Keywords/Keyword_Clash.idl create mode 100644 modules/CIAO/tests/IDL_Test/Keywords/Keywords.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.idl create mode 100644 modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.cpp create mode 100644 modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.h create mode 100644 modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.idl create mode 100644 modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.idl create mode 100644 modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.mpc create mode 100644 modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/CodeGen.idl create mode 100644 modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/README create mode 100644 modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc create mode 100644 modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl create mode 100644 modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.mpc create mode 100644 modules/CIAO/tests/Minimum/Receiver/Receiver.idl create mode 100644 modules/CIAO/tests/Minimum/Receiver/Receiver.mpc create mode 100644 modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp create mode 100644 modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h create mode 100644 modules/CIAO/tests/Minimum/Sender/Sender.idl create mode 100644 modules/CIAO/tests/Minimum/Sender/Sender.mpc create mode 100644 modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp create mode 100644 modules/CIAO/tests/Minimum/Sender/Sender_exec.h create mode 100644 modules/CIAO/tests/tests.mwc create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/README create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_extern.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_global.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_helper.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.h create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp create mode 100644 modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/CIAO_IDL3_TO_XMI_Export.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/IDL3_TO_XMI.mpc create mode 100644 modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/Literals.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/Literals.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_extern.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_global.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_global.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_helper.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_helper.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_init.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_produce.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.h create mode 100644 modules/CIAO/tools/IDL3_to_XMI/identifier_helper.cpp create mode 100644 modules/CIAO/tools/IDL3_to_XMI/identifier_helper.h create mode 100644 modules/CIAO/tools/XML/CIAO_XML_Utils_Export.h create mode 100644 modules/CIAO/tools/XML/XML.mpc create mode 100644 modules/CIAO/tools/XML/XML_Error_Handler.cpp create mode 100644 modules/CIAO/tools/XML/XML_Error_Handler.h create mode 100644 modules/CIAO/tools/XML/XML_Helper.h create mode 100644 modules/CIAO/tools/XML/XML_Helper.tpp create mode 100644 modules/CIAO/tools/XML/XML_Schema_Resolver.cpp create mode 100644 modules/CIAO/tools/XML/XML_Schema_Resolver.h create mode 100644 modules/CIAO/tools/XML/XML_Schema_Resolver.tpp create mode 100644 modules/CIAO/tools/XML/XercesString.cpp create mode 100644 modules/CIAO/tools/XML/XercesString.h diff --git a/modules/CIAO/CIAO-INSTALL.html b/modules/CIAO/CIAO-INSTALL.html new file mode 100644 index 00000000000..28f1915c1fc --- /dev/null +++ b/modules/CIAO/CIAO-INSTALL.html @@ -0,0 +1,175 @@ + + Building and Installing CIAO + + +
+

Building and Installing CIAO

+

The first thing you should do to install CIAO is to set the environment + variable CIAO_ROOT to + be $TAO_ROOT/CIAO, or whereever you have installed + the CIAO sources. The DANCE_ROOT environment + variable should also be set to $CIAO_ROOT/DAnCE, or + wherever you have installed the DAnCE sources. Please refer + to the ACE installation notes and + TAO installation notes for instructions on setting $ACE_ROOT + and $TAO_ROOT, respectively. They are needed since CIAO sits on + top of ACE+TAO. Compiling ACE+TAO successfully is the first requirement + for compiling CIAO. +

+

CIAO is divided into several parts, so different installation/building rules + apply to different parts of CIAO.
+
+

+
    +
  1. + CIAO core/examples: This part of CIAO include following directories: $CIAO_ROOT/ccm, $CIAO_ROOT/ciao, + $CIAO_ROOT/examples. +
  2. + CIAO Deployment and Configuration Framework: This part of CIAO includes all the + directories in $CIAO_ROOT/DAnCE. DAnCE is an implementation of the + new Deployment and + Configuration specification. We refer, henceforth, to all pieces as CIAO + in general. This piece will be referred specifically by their name + as DAnCE though they are part of CIAO. +
  3. +
+
+

Supported Platforms for CIAO

+

CIAO should be usable on all platforms that TAO runs on. Please see + TAO's installation pages for details +

+

If you have porting questions or + have a problem compiling CIAO with TAO and ACE on the platforms shown above + please send email to either ACE Newsgroup or + the CIAO mailing list and we'll + try to help you fix the problems. You can also submit bug reports and + enhancement requests in our bug tracking + system. +

+

CIAO can be obtained electronically + via the WWW and ftp. CIAO is + bundled with the ACE and TAO release. You'll always need the most recent + version of ACE and TAO because CIAO tracks changes to ACE and TAO very closely. +

+
+

Obtaining and Installing Xerces-C

+

The Xerces-C XML parsing library is a necessary component to build parts of + DAnCE that need to process XML based descriptor files, which include the Plan + Launcher and the Repository Manager. Currently, the only Xerces-C + versions supported by the DOC group is version 2.6 or later or 3.0 or later. + Earlier versions of the Xerces-C library may work. +

+

Building Xerces-C

+

You may check here to + see if there is a prebuilt binary available for your platform. Otherwise, you + will have to obtain the source from the + Xerces-C webpage and build it. Building Xerces-C is fairly + straightfoward. Please see the documentation available + here for instructions particular to your platform. +

+ +

Xerces-C Environment Settings

+

If the Xerces includes and libraries are in your system include and library + paths, respectively, then you need not set up any environment and may proceed + to the next step. If not, you will need to set an environment variable named + XERCESCROOT to a path such that $XERCESCROOT/include points to the includes and + $XERCESCROOT/lib points to the libraries. Also make sure that $XERCESCROOT/lib + is in the appropriate environment variable that your platform uses to search + for dynamically linked libraries. +

+
+

Install CIAO core/tools/examples

+

Most of the GNUmakefiles/project files/solution files required to build CIAO + are available in the release. If you don't like the configurations used, please + feel free to regenerate them using MPC. Please see this + for more details. +

+

To build CIAO core/tools/examples: +

+
    +
  1. + Make sure ACE and TAO are built. +
  2. + Make sure you have the Xerces-C libraries installed/built +
  3. + Enable Xerces-C in default.features by setting xerces3=1 or + xerces2=1, depending on your version Xerces-C libraries. +
  4. + Make sure all ACE/TAO/etc. generated libs are in $ACE_ROOT/lib. To + build CIAO you will need: +
      +
    • + ACE +
    • + TAO +
    • + TAO_IDL +
    • + IFR_Client +
    • + IORTable +
    • + Valuetype +
    • + Security +
    • + ACEXML +
    • +
    +
  5. + Generate the Makefile/Solution/Project files and build +

    For the supported build tools please see + MPC manual. +

    +

    You have to execute the MPC command in the following directories if you only + want to build the examples and have a peek at CIAO: +

    +
      +
    • + $CIAO_ROOT/DAnCE/ +
    • +
    +

    On Linux: do $ACE_ROOT/bin/mwc.pl -type gnuace at the + locations specified above then make. +

    +

    On Windows/VC71: do %ACE_ROOT%/bin/mwc.pl -type vc71 + at the locations specified above then Open the solution file and build. +

    +

    Note: You can run mwc.pl at $CIAO_ROOT. + After running the command + with proper augment once then you + can do make at $CIAO_ROOT (Linux) or open the + workspace/solution file at $CIAO_ROOT (Windows) to build. +

    +
  6. +
+ Building CIAO quickly : You can build CIAO quickly by doing + the following: + +
+

Back to the CIAO home + page.

+ + diff --git a/modules/CIAO/CIAO.mwc b/modules/CIAO/CIAO.mwc new file mode 100644 index 00000000000..dd297256b34 --- /dev/null +++ b/modules/CIAO/CIAO.mwc @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +workspace { +} diff --git a/modules/CIAO/CIAO_DAnCE.mwc b/modules/CIAO/CIAO_DAnCE.mwc new file mode 100644 index 00000000000..334624b5f9c --- /dev/null +++ b/modules/CIAO/CIAO_DAnCE.mwc @@ -0,0 +1,11 @@ +//$Id$ + +workspace { + ccm + ciao + DAnCE + tools/XML + exclude { + DAnCE/tests + } +} diff --git a/modules/CIAO/CIAO_TAO.mwc b/modules/CIAO/CIAO_TAO.mwc new file mode 100644 index 00000000000..5438c540674 --- /dev/null +++ b/modules/CIAO/CIAO_TAO.mwc @@ -0,0 +1,34 @@ +// -*- MPC -*- +// $Id$ + +workspace { + $(ACE_ROOT)/ace + $(ACE_ROOT)/apps/gperf/src + $(ACE_ROOT)/apps/JAWS/server + $(ACE_ROOT)/ACEXML/common + $(ACE_ROOT)/ACEXML/parser/parser + $(ACE_ROOT)/ACEXML/apps/svcconf + $(ACE_ROOT)/contrib + $(TAO_ROOT)/tao + $(TAO_ROOT)/TAO_IDL + $(TAO_ROOT)/utils + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Serv.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Skel.mpc + $(TAO_ROOT)/orbsvcs/Naming_Service + $(TAO_ROOT)/orbsvcs/orbsvcs/Svc_Utils.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/Security.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/IFRService.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Serv.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Skel.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent.mpc + ccm + ciao + DAnCE + connectors + tools + tests + examples + performance-tests +} diff --git a/modules/CIAO/CIAO_TAO_DAnCE.mwc b/modules/CIAO/CIAO_TAO_DAnCE.mwc new file mode 100644 index 00000000000..89648ad85a8 --- /dev/null +++ b/modules/CIAO/CIAO_TAO_DAnCE.mwc @@ -0,0 +1,29 @@ +// -*- MPC -*- +// $Id$ + +workspace { + $(ACE_ROOT)/ace + $(ACE_ROOT)/apps/gperf/src + $(ACE_ROOT)/apps/JAWS/server + $(ACE_ROOT)/ACEXML/common + $(ACE_ROOT)/ACEXML/parser/parser + $(ACE_ROOT)/ACEXML/apps/svcconf + $(ACE_ROOT)/contrib + $(TAO_ROOT)/TAO_IDL + $(TAO_ROOT)/tao + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Serv.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Skel.mpc + $(TAO_ROOT)/orbsvcs/Naming_Service/Naming_Service.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/Svc_Utils.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Serv.mpc + $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Skel.mpc + ccm + ciao + DAnCE + tools/XML + exclude { + DAnCE/tests + } +} diff --git a/modules/CIAO/COPYING b/modules/CIAO/COPYING new file mode 100644 index 00000000000..cdb68ec588c --- /dev/null +++ b/modules/CIAO/COPYING @@ -0,0 +1,110 @@ + + _________________________________________________________________ + + Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), and + CoSMIC(TM) + + [1]ACE(TM), [2]TAO(TM), [3]CIAO(TM), and [4]CoSMIC(TM) (henceforth + referred to as "DOC software") are copyrighted by [5]Douglas C. + Schmidt and his [6]research group at [7]Washington University, + [8]University of California, Irvine, and [9]Vanderbilt University, + Copyright (c) 1993-2010, all rights reserved. Since DOC software is + open-source, freely available software, you are free to use, modify, + copy, and distribute--perpetually and irrevocably--the DOC software + source code and object code produced from the source, as well as copy + and distribute modified versions of this software. You must, however, + include this copyright statement along with any code built using DOC + software that you release. No copyright statement needs to be provided + if you just ship binary executables of your software products. + + You can use DOC software in commercial and/or binary software releases + and are under no obligation to redistribute any of your source code + that is built using DOC software. Note, however, that you may not do + anything to the DOC software code, such as copyrighting it yourself or + claiming authorship of the DOC software code, that will prevent DOC + software from being distributed freely using an open-source + development model. You needn't inform anyone that you're using DOC + software in your software, though we encourage you to let [10]us know + so we can promote your project in the [11]DOC software success + stories. + + The [12]ACE, [13]TAO, [14]CIAO, and [15]CoSMIC web sites are + maintained by the [16]DOC Group at the [17]Institute for Software + Integrated Systems (ISIS) and the [18]Center for Distributed Object + Computing of Washington University, St. Louis for the development of + open-source software as part of the open-source software community. + Submissions are provided by the submitter ``as is'' with no warranties + whatsoever, including any warranty of merchantability, noninfringement + of third party intellectual property, or fitness for any particular + purpose. In no event shall the submitter be liable for any direct, + indirect, special, exemplary, punitive, or consequential damages, + including without limitation, lost profits, even if advised of the + possibility of such damages. Likewise, DOC software is provided as is + with no warranties of any kind, including the warranties of design, + merchantability, and fitness for a particular purpose, + noninfringement, or arising from a course of dealing, usage or trade + practice. Washington University, UC Irvine, Vanderbilt University, + their employees, and students shall have no liability with respect to + the infringement of copyrights, trade secrets or any patents by DOC + software or any part thereof. Moreover, in no event will Washington + University, UC Irvine, or Vanderbilt University, their employees, or + students be liable for any lost revenue or profits or other special, + indirect and consequential damages. + + DOC software is provided with no support and without any obligation on + the part of Washington University, UC Irvine, Vanderbilt University, + their employees, or students to assist in its use, correction, + modification, or enhancement. A [19]number of companies around the + world provide commercial support for DOC software, however. + + DOC software is Y2K-compliant, as long as the underlying OS platform + is Y2K-compliant. Likewise, DOC software is compliant with the new US + daylight savings rule passed by Congress as "The Energy Policy Act of + 2005," which established new daylight savings times (DST) rules for + the United States that expand DST as of March 2007. Since DOC software + obtains time/date and calendaring information from operating systems + users will not be affected by the new DST rules as long as they + upgrade their operating systems accordingly. + + The names ACE(TM), TAO(TM), CIAO(TM), CoSMIC(TM), Washington + University, UC Irvine, and Vanderbilt University, may not be used to + endorse or promote products or services derived from this source + without express written permission from Washington University, UC + Irvine, or Vanderbilt University. This license grants no permission to + call products or services derived from this source ACE(TM), TAO(TM), + CIAO(TM), or CoSMIC(TM), nor does it grant permission for the name + Washington University, UC Irvine, or Vanderbilt University to appear + in their names. + + If you have any suggestions, additions, comments, or questions, please + let [20]me know. + + [21]Douglas C. Schmidt + _________________________________________________________________ + + Back to the [22]ACE home page. + +References + + 1. http://www.cs.wustl.edu/~schmidt/ACE.html + 2. http://www.cs.wustl.edu/~schmidt/TAO.html + 3. http://www.dre.vanderbilt.edu/CIAO/ + 4. http://www.dre.vanderbilt.edu/cosmic/ + 5. http://www.dre.vanderbilt.edu/~schmidt/ + 6. http://www.cs.wustl.edu/~schmidt/ACE-members.html + 7. http://www.wustl.edu/ + 8. http://www.uci.edu/ + 9. http://www.vanderbilt.edu/ + 10. mailto:doc_group@cs.wustl.edu + 11. http://www.cs.wustl.edu/~schmidt/ACE-users.html + 12. http://www.cs.wustl.edu/~schmidt/ACE.html + 13. http://www.cs.wustl.edu/~schmidt/TAO.html + 14. http://www.dre.vanderbilt.edu/CIAO/ + 15. http://www.dre.vanderbilt.edu/cosmic/ + 16. http://www.dre.vanderbilt.edu/ + 17. http://www.isis.vanderbilt.edu/ + 18. http://www.cs.wustl.edu/~schmidt/doc-center.html + 19. http://www.cs.wustl.edu/~schmidt/commercial-support.html + 20. mailto:d.schmidt@vanderbilt.edu + 21. http://www.dre.vanderbilt.edu/~schmidt/ + 22. http://www.cs.wustl.edu/ACE.html diff --git a/modules/CIAO/ChangeLog b/modules/CIAO/ChangeLog new file mode 100644 index 00000000000..d750a40be43 --- /dev/null +++ b/modules/CIAO/ChangeLog @@ -0,0 +1,4126 @@ +Tue Jan 5 14:01:18 UTC 2010 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Get_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp: + Improved shutdown of the DDS connector. + + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + Prevent a pointer creation when the passed listener + is nil. + +Tue Jan 5 09:37:56 UTC 2010 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp: + Separate DDS lifecycle from CCM lifecycle. DDS_Update_T and DDS_Write_T + now have a configuration_complete, activate, passivate and remove + methods. + +Tue Jan 5 08:51:51 UTC 2010 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + Optimized error logging. + + * connectors/dds4ccm/impl/ndds/DDS_Read_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + Separate DDS lifecycle from CCM lifecycle. DDS_Read_T and DDS_StateListen_T + now have a configuration_complete, activate, passivate and remove + methods. + +Tue Jan 5 07:31:33 UTC 2010 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Get_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + Separate DDS lifecycle from CCM lifecycle. DDS_Get_T and DDS_Listen_T + now have a configuration_complete, activate, passivate and remove + methods. + +Mon Jan 4 20:41:07 UTC 2010 Jeff Parsons + + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + + Cosmetic changes. + +Mon Jan 4 19:43:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/docs/AMI4CCM-explanation.odt: + First start on updating this document to the latest ideas + +Mon Jan 4 18:45:39 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + Enabled some commented out idl3+ which now is accepted by the idl + compiler + +Mon Jan 4 13:29:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Connector/AMI.idl + * connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp + * connectors/ami4ccm/examples/Hello/Connector/AMI_exec.h + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl + Updated name of the AMI connector, it is tied to the sender, + so call it AMI_Sender + + * tests/IDL_Test/Double_Inherited_Component/run_test.pl: + Print message before spawn + +Mon Jan 4 12:14:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Updated with the latest ideas + +Mon Jan 4 11:11:39 UTC 2009 Johnny Willemsen + + * docs/OMG-CCM-Tutorial.ppt: + Updated AMI4CCM story + +Mon Jan 4 10:04:39 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + Added missing semi colon + +Thu Dec 31 12:48:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl + * DAnCE/tests/CIAO/CommandlinePassage/run_test.pl + * examples/BasicSP/descriptors/run_test.pl + * examples/Hello/descriptors/run_test.pl + * examples/Hello/descriptors/run_test_alias.pl + * tests/Bug_3769_Regression/descriptors/run_test.pl + * tests/IDL_Test/Double_Inherited_Component/run_test.pl + Check spawn of naming service + +Thu Dec 31 12:40:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl + Check return value of the plan and execution manager + + * DAnCE/Deployment/Module_Main.h: + Always destroy the orb + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Layout changes + + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + Rethrow the exception so that we don't fail silently + +Wed Dec 30 12:58:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl + Give the plan launcher some more time, on a vm it seems to take longer + +Wed Dec 30 12:50:39 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/CIAO_ComponentServer_Task.cpp + * ciao/ComponentServer/CIAO_ComponentServer_Task.h + * ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp + * ciao/ComponentServer/CIAO_RTComponentServer_Task.h + * ciao/Logger/CIAOLoggerFactory.h + * ciao/Logger/File_Logger_Backend.cpp + * ciao/Logger/File_Logger_Backend.h + * ciao/Logger/Logger.mpc + * ciao/Logger/Logger_Service.cpp + * ciao/Logger/Logger_Service.h + * DAnCE/Deployment/Module_Main.h + * DAnCE/Logger/DAnCELoggerFactory.h + * DAnCE/Logger/File_Logger_Backend.cpp + * DAnCE/Logger/File_Logger_Backend.h + * DAnCE/Logger/Logger.mpc + * DAnCE/Logger/Logger_Service.cpp + * DAnCE/Logger/Logger_Service.h + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp + Simplified logging infrastructure code + +Wed Dec 30 11:56:39 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp: + Layout changes + +Wed Dec 30 10:31:39 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + Removed commented out code + + * AnCE/NodeApplication/NodeApplication.mpc: + Removed commented out lines + + * DAnCE/NodeApplication/ServerActivator_Impl.cpp: + * DAnCE/NodeApplication/ServerActivator_Impl.h: + Removed, not used + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + Removed commented out code + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Const changes + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/IR_Simulator_visitor.cpp: + Removed commented out code + +Wed Dec 30 08:14:39 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/Module_Main.h: + Check if we get an object back and add more exception handling + +Tue Dec 29 11:22:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.cpp: + Layout changes + +Tue Dec 29 10:16:39 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl + * connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl + Don't override trace/debug levels + +Tue Dec 29 09:57:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Connector/AMI.idl + * connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp + * connectors/ami4ccm/examples/Hello/Connector/AMI_exec.h + * connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + Use sendc_ as prefix for the implicit ports and updated some more + parts to get a more consistent naming + +Mon Dec 28 17:31:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/docs/AMI4CCM-explanation.odt: + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Started to update these documents with the current proto + +Mon Dec 28 12:43:39 UTC 2009 Johnny Willemsen + + * ciao/Logger/Logger_Service.cpp: + Use ACE to parse commandline arguments + + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Each second call to an attribute results in an exception + + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Added missing try/catch for the attributes + + * DAnCE/Config_Handlers/RDD_Handler.cpp: + Unicode fixes + + * DAnCE/Config_Handlers/Utils/Functors.h: + C++ Builder 2010 fix + + * DAnCE/Logger/Logger_Service.cpp: + Use -a for enabling tracing, -t is already used + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + Removed ignore_failure, not used + + * DAnCE/RedirectionService/CCMObjectLocator.h: + Doxygen changes + + * DAnCE/RedirectionService/RedirectionService.mpc: + Layout change + +Wed Dec 23 20:14:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Base/Hello.idl + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + Extended this example with more exceptions + +Wed Dec 23 15:20:54 UTC 2009 Marcel Smit + + * DAnCE/Logger/Logger_Service.cpp: + Using %s instead of %C + +Wed Dec 23 15:08:16 UTC 2009 Marcel Smit + + * DAnCE/Logger/Logger_Service.cpp: + Using ace functionality to parse commandline parameters. + + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl: + Removed CIAO/DANCE_LOG_LEVEL parameters. + +Wed Dec 23 14:38:39 UTC 2009 Johnny Willemsen + + * ciao/Logger/Logger_Service.cpp: + Fixed CIAO_TRACE_ENABLE functionality + + * DAnCE/Logger/Logger_Service.cpp: + Fixed DANCE_TRACE_ENABLE functionality + +Wed Dec 23 14:08:39 UTC 2009 Johnny Willemsen + + * ciao/Containers/Servant_Activator.cpp: + Fixed fuzz errors + +Wed Dec 23 14:05:39 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp: + * ciao/ComponentServer/Client_init.cpp: + Fixed fuzz errors + +Wed Dec 23 12:39:39 UTC 2009 Johnny Willemsen + + * CIAO_TAO_DAnCE.mwc: + Config handlers got moved + + * CIAO_DAnCE.mwc: + Config handlers got moved, don't generate DAnCE/tests + +Wed Dec 23 12:32:39 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + UnkeyedWriter test should be ok now. + +Wed Dec 23 12:23:03 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp: + Reworked this test. DDS does not return an error when max_samples is + reached. Now a large block of data is send. + + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/USER_QOS_PROFILES.xml: + Removed this file. + +Wed Dec 23 10:44:14 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp + Set 'OK' in debug message when catching the expected InternalError + +Wed Dec 23 09:17:14 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp: + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Resolved fuzz errors regarding trace. + +Wed Dec 23 09:04:04 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp: + Using %C instead of %s for char*. Also added ERROR for error logging. + +Wed Dec 23 08:44:50 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp: + Removed some commented out logging. + +Wed Dec 23 08:40:22 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp: + Using ACE_ERROR and ACE_DEBUG instead of printf. + +Wed Dec 23 08:27:11 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp: + Using ACE_ERROR and ACE_DEBUG instead of printf. + +Wed Dec 23 08:06:34 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Reverted last changes. + +Wed Dec 23 08:02:27 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp: + Using ACE_ERROR and ACE_DEBUG instead of printf. + +Tue Dec 22 17:14:22 UTC 2009 Jeff Parsons + + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + + Uncommented template module construct that was producing a bug, and + added an instantiation of that template module. + +Tue Dec 22 15:41:04 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Base/Hello.idl + * connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.cpp + * connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h + Introduced CCM_AMI::ExceptionHolder which is just a local interface + where the executor will contain the AMI exception holder, but + this is hidden for the component developer. The example will now + fail because there is a problem in TAO related to attributes + and AMI, see bugzilla 3801 + +Tue Dec 22 14:34:04 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Connector/AMI.mpc + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc + Added missing afters + + * connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl + No need to derive from ReplyHandler + +Tue Dec 22 14:36:11 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + Resolved runtime error. + +Tue Dec 22 14:21:32 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp: + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.h: + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp: + Renamed setter data_writer to set_impl (to be consistent). + +Tue Dec 22 13:34:45 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/QueryCondition.h: + * connectors/dds4ccm/impl/ndds/QueryCondition.cpp: + Implemented setter and getter for DDSQueryCondition. + +Tue Dec 22 13:01:04 UTC 2009 Johnny Willemsen + + * DAnCE/Starter + * DAnCE/Starter/Starter.cpp + * DAnCE/Starter/Starter.h + * DAnCE/Starter/Starter.mpc + * DAnCE/StaticConfigurator + * DAnCE/StaticConfigurator/README + * DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl + * DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc + Removed, really old stuff and not maintained + +Tue Dec 22 13:02:31 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/ndds/Getter_T.h: + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + * connectors/dds4ccm/impl/ndds/Reader_T.h: + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + To be consistent, renamed data_reader () methods to set_impl. + +Tue Dec 22 12:47:04 UTC 2009 Johnny Willemsen + + * DAnCE/Config_Handlers/Config_Handlers.mpc + * DAnCE/Config_Handlers/DynAny_Handler.mpc + * DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc + * DAnCE/Config_Handlers/test.cdp + * DAnCE/Config_Handlers/test.cpp + * DAnCE/Config_Handlers/Utils/Functors.h + * DAnCE/Config_Handlers/XML_File_Intf.h + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp + * DAnCE/tests/Config_Handlers/Config_Handlers.mpc + * DAnCE/tests/Config_Handlers/DynAny_Handler/test.cpp + * DAnCE/tests/Config_Handlers/test.cdp + * DAnCE/tests/Config_Handlers/test.cpp + * DAnCE/tests/DeploymentPlanDump/test.cpp + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp + * DAnCE/tests/DeploymentTest1/test.cpp + Moved more tests to DAnCE/tests and make sure DANCE_ROOT/docs/schema + is also used + +Tue Dec 22 09:39:04 UTC 2009 Johnny Willemsen + + * DAnCE/Config_Handlers/DynAny_Handler/dynany_test.idl + * DAnCE/Config_Handlers/DynAny_Handler/test.cpp + * DAnCE/Config_Handlers/DynAny_Handler/test.mpc + * DAnCE/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * DAnCE/Config_Handlers/Package_Handlers/test.cpp + * DAnCE/tests/Config_Handlers + * DAnCE/tests/Config_Handlers/DynAny_Handler + * DAnCE/tests/Config_Handlers/DynAny_Handler/dynany_test.idl + * DAnCE/tests/Config_Handlers/DynAny_Handler/test.cpp + * DAnCE/tests/Config_Handlers/DynAny_Handler/test.mpc + * DAnCE/tests/Config_Handlers/Package_Handlers + * DAnCE/tests/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * DAnCE/tests/Config_Handlers/Package_Handlers/test.cpp + Moved tests to the test directory + + * tools/tools.mwc: + Removed, not needed + +Tue Dec 22 09:32:04 UTC 2009 Johnny Willemsen + + * ciao/Logger/File_Logger_Backend.h + * DAnCE/Config_Handlers + * DAnCE/Config_Handlers/ADD_Handler.cpp + * DAnCE/Config_Handlers/Any_Handler.cpp + * DAnCE/Config_Handlers/CCD_Handler.cpp + * DAnCE/Config_Handlers/CEPE_Handler.cpp + * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp + * DAnCE/Config_Handlers/Config_Handlers.mpc + * DAnCE/Config_Handlers/CPD_Handler.cpp + * DAnCE/Config_Handlers/CRDD_Handler.cpp + * DAnCE/Config_Handlers/DataType_Handler.cpp + * DAnCE/Config_Handlers/DD_Handler.cpp + * DAnCE/Config_Handlers/DP_Handler.cpp + * DAnCE/Config_Handlers/DP_PCD_Handler.cpp + * DAnCE/Config_Handlers/ERE_Handler.cpp + * DAnCE/Config_Handlers/ESD_Handler.cpp + * DAnCE/Config_Handlers/ID_Handler.cpp + * DAnCE/Config_Handlers/IDD_Handler.cpp + * DAnCE/Config_Handlers/IDREF_Base.cpp + * DAnCE/Config_Handlers/IRDD_Handler.cpp + * DAnCE/Config_Handlers/IRDD_Handler.h + * DAnCE/Config_Handlers/MDD_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/CID_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/PC_Intf.cpp + * DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * DAnCE/Config_Handlers/Package_Handlers/SID_Handler.cpp + * DAnCE/Config_Handlers/PCD_Handler.cpp + * DAnCE/Config_Handlers/PL_Handler.cpp + * DAnCE/Config_Handlers/Property_Handler.cpp + * DAnCE/Config_Handlers/PSPE_Handler.cpp + * DAnCE/Config_Handlers/RDD_Handler.cpp + * DAnCE/Config_Handlers/Req_Handler.cpp + * DAnCE/Config_Handlers/SatisfierProperty_Handler.cpp + * DAnCE/Config_Handlers/STD_PC_Intf.cpp + * DAnCE/Config_Handlers/XML_File_Intf.cpp + * DAnCE/docs/schema + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/MPC/config/ciao_config_handlers.mpb + * DAnCE/MPC/config/ciao_config_handlers_base.mpb + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainDataManager.cpp + * DAnCE/TargetManager/TargetManager_exec.cpp + * DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.cpp + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp + * DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp + * DAnCE/tests/DeploymentPlanDump/test.cpp + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp + * DAnCE/tests/DeploymentTest1/test.cpp + * docs/schema + * docs/schema/06-04-02.xsd + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/ccd.xsd + * docs/schema/cdd.xsd + * docs/schema/cdp.xsd + * docs/schema/CIAOEvents.xsd + * docs/schema/ciaopolicy.xsd + * docs/schema/CIAOServerResources.xsd + * docs/schema/cid.xsd + * docs/schema/cpd.xsd + * docs/schema/Deployment.xsd + * docs/schema/iad.xsd + * docs/schema/Modified_Deployment.xsd + * docs/schema/pcd.xsd + * docs/schema/README.html + * docs/schema/SANet_Network.xsd + * docs/schema/ServerResourceUsage.txt + * docs/schema/Spec_Defined_Deployment.xsd + * docs/schema/Spec_Defined_XMI.xsd + * docs/schema/Task_Map.xsd + * docs/schema/toplevel.xsd + * docs/schema/unused_06-04-02.xsd + * docs/schema/unused_elements.xsd + * docs/schema/XMI.xsd + * docs/schema/xsc-banner.cpp + * docs/schema/xsc-banner.h + * MPC/config/ciao_config_handlers.mpb + * MPC/config/ciao_config_handlers_base.mpb + * tools/Config_Handlers + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/ADD_Handler.h + * tools/Config_Handlers/Any_Handler.cpp + * tools/Config_Handlers/Any_Handler.h + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/ccd.cpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/CCD_Handler.cpp + * tools/Config_Handlers/CCD_Handler.h + * tools/Config_Handlers/cdd.cpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.cpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/CEPE_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.h + * tools/Config_Handlers/cid.cpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/Common.h + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp + * tools/Config_Handlers/ComponentPropertyDescription_Handler.h + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/Config_Handlers_Common_Export.h + * tools/Config_Handlers/Config_Handlers_Export.h + * tools/Config_Handlers/cpd.cpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/CPD_Handler.h + * tools/Config_Handlers/CRDD_Handler.cpp + * tools/Config_Handlers/CRDD_Handler.h + * tools/Config_Handlers/DataType_Handler.cpp + * tools/Config_Handlers/DataType_Handler.h + * tools/Config_Handlers/DD_Handler.cpp + * tools/Config_Handlers/DD_Handler.h + * tools/Config_Handlers/Deployment.cpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/DnC_Dump.h + * tools/Config_Handlers/DnC_Dump_T.cpp + * tools/Config_Handlers/DnC_Dump_T.h + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/DP_Handler.h + * tools/Config_Handlers/DP_PCD_Handler.cpp + * tools/Config_Handlers/DP_PCD_Handler.h + * tools/Config_Handlers/Dump_Obj.cpp + * tools/Config_Handlers/Dump_Obj.h + * tools/Config_Handlers/DynAny_Handler + * tools/Config_Handlers/DynAny_Handler.mpc + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAlias_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h + * tools/Config_Handlers/DynAny_Handler/dynany_test.idl + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynStruct_Handler.h + * tools/Config_Handlers/DynAny_Handler/test.cpp + * tools/Config_Handlers/DynAny_Handler/test.mpc + * tools/Config_Handlers/ERE_Handler.cpp + * tools/Config_Handlers/ERE_Handler.h + * tools/Config_Handlers/ESD_Handler.cpp + * tools/Config_Handlers/ESD_Handler.h + * tools/Config_Handlers/iad.cpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/ID_Handler.cpp + * tools/Config_Handlers/ID_Handler.h + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/IDD_Handler.h + * tools/Config_Handlers/IDREF_Base.cpp + * tools/Config_Handlers/IDREF_Base.h + * tools/Config_Handlers/IRDD_Handler.cpp + * tools/Config_Handlers/IRDD_Handler.h + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.h + * tools/Config_Handlers/Package_Handlers + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.h + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CID_Handler.h + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/IAD_Handler.h + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h + * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp + * tools/Config_Handlers/Package_Handlers/PC_Intf.h + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/PCD_Handler.h + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/SID_Handler.h + * tools/Config_Handlers/Package_Handlers/test.cpp + * tools/Config_Handlers/pcd.cpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/PCD_Handler.h + * tools/Config_Handlers/PL_Handler.cpp + * tools/Config_Handlers/PL_Handler.h + * tools/Config_Handlers/Property_Handler.cpp + * tools/Config_Handlers/Property_Handler.h + * tools/Config_Handlers/PSPE_Handler.cpp + * tools/Config_Handlers/PSPE_Handler.h + * tools/Config_Handlers/RDD_Handler.cpp + * tools/Config_Handlers/RDD_Handler.h + * tools/Config_Handlers/Req_Handler.cpp + * tools/Config_Handlers/Req_Handler.h + * tools/Config_Handlers/SatisfierProperty_Handler.cpp + * tools/Config_Handlers/SatisfierProperty_Handler.h + * tools/Config_Handlers/STD_CID_Handler.cpp + * tools/Config_Handlers/STD_CID_Handler.h + * tools/Config_Handlers/STD_CPD_Handler.cpp + * tools/Config_Handlers/STD_CPD_Handler.h + * tools/Config_Handlers/STD_IAD_Handler.cpp + * tools/Config_Handlers/STD_IAD_Handler.h + * tools/Config_Handlers/STD_PC_Intf.cpp + * tools/Config_Handlers/STD_PC_Intf.h + * tools/Config_Handlers/STD_PCD_Handler.cpp + * tools/Config_Handlers/STD_PCD_Handler.h + * tools/Config_Handlers/test.cdp + * tools/Config_Handlers/test.cpp + * tools/Config_Handlers/toplevel.cpp + * tools/Config_Handlers/toplevel.hpp + * tools/Config_Handlers/Utils + * tools/Config_Handlers/Utils/Exceptions.h + * tools/Config_Handlers/Utils/Functors.h + * tools/Config_Handlers/XMI.cpp + * tools/Config_Handlers/XMI.hpp + * tools/Config_Handlers/XML_File_Intf.cpp + * tools/Config_Handlers/XML_File_Intf.h + * tools/Config_Handlers/XML_Typedefs.cpp + * tools/Config_Handlers/XML_Typedefs.h + * tools/Config_Handlers/XMLSchema + * tools/Config_Handlers/XMLSchema/id_map.hpp + * tools/Config_Handlers/XMLSchema/Traversal.hpp + * tools/Config_Handlers/XMLSchema/Traversal.ipp + * tools/Config_Handlers/XMLSchema/Traversal.tpp + * tools/Config_Handlers/XMLSchema/TypeInfo.hpp + * tools/Config_Handlers/XMLSchema/TypeInfo.ipp + * tools/Config_Handlers/XMLSchema/TypeInfo.tpp + * tools/Config_Handlers/XMLSchema/Types.hpp + * tools/Config_Handlers/XMLSchema/Types.ipp + * tools/Config_Handlers/XMLSchema/Types.tpp + * tools/Config_Handlers/XMLSchema/Writer.hpp + * tools/Config_Handlers/XMLSchema/Writer.ipp + * tools/Config_Handlers/XMLSchema/Writer.tpp + * tools/Config_Handlers/XSC_XML_Handlers_Export.h + * tools/Config_Handlers/XSCRT + * tools/Config_Handlers/XSCRT/Elements.hpp + * tools/Config_Handlers/XSCRT/Elements.ipp + * tools/Config_Handlers/XSCRT/Elements.tpp + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp + * tools/Config_Handlers/XSCRT/Parser.hpp + * tools/Config_Handlers/XSCRT/Parser.ipp + * tools/Config_Handlers/XSCRT/Parser.tpp + * tools/Config_Handlers/XSCRT/Traversal.hpp + * tools/Config_Handlers/XSCRT/Traversal.ipp + * tools/Config_Handlers/XSCRT/Traversal.tpp + * tools/Config_Handlers/XSCRT/Writer.hpp + * tools/Config_Handlers/XSCRT/Writer.ipp + * tools/Config_Handlers/XSCRT/Writer.tpp + * tools/Config_Handlers/XSCRT/XML.hpp + * tools/Config_Handlers/XSCRT/XML.ipp + * tools/Config_Handlers/XSCRT/XML.tpp + * tools/Config_Handlers/XSCRT/XMLSchema.hpp + Moved Config_Handlers and schema to DAnCE + +Mon Dec 21 18:26:04 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/CIAO_ComponentServer.mpc + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp + * ciao/ComponentServer/CIAO_ComponentServer_Task.cpp + * ciao/ComponentServer/CIAO_Container_Impl.cpp + * ciao/ComponentServer/CIAO_RTComponentServer.cpp + * ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp + * ciao/ComponentServer/Client_init.cpp + * ciao/Containers/CIAO_Servant_Activator.mpc + * ciao/Containers/Servant_Activator.cpp + * ciao/Containers/Session/Session_Container.cpp + * ciao/Logger/File_Logger_Backend.cpp + * ciao/Logger/File_Logger_Backend.h + * ciao/Logger/Log_Macros.cpp + * ciao/Logger/Log_Macros.h + * ciao/Logger/Logger.mpc + * ciao/Logger/Logger_Service.cpp + * ciao/Logger/Logger_Service.h + * ciao/Servants/Home_Servant_Impl_T.cpp + * ciao/Servants/Servant_Impl_Base.cpp + * ciao/Servants/Servant_Impl_T.cpp + * connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp + * connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc + * connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp + * connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc + * connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/Getter_T.cpp + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp + * connectors/dds4ccm/impl/ndds/Reader_T.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp + * connectors/dds4ccm/impl/ndds/Writer_T.cpp + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc + * connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc + * connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp + * connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc + * connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp + * connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc + * connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc + * connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc + * connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc + * connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc + * connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc + * connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc + * connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.mpc + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc + * connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc + * connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp + * connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc + * connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc + * connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc + * connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc + * connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc + * connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc + * connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc + * connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp + * connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc + * connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp + * connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp + * connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc + * DAnCE/Deployment/Module_Main.h + * DAnCE/DomainApplication/Domain_Application_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/Node_Locator.cpp + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp + * DAnCE/Logger/File_Logger_Backend.cpp + * DAnCE/Logger/Log_Macros.cpp + * DAnCE/Logger/Log_Macros.h + * DAnCE/Logger/Logger.mpc + * DAnCE/Logger/Logger_Service.cpp + * DAnCE/Logger/Logger_Service.h + * DAnCE/MPC/config/dance_cdmw_idl.mpb + * DAnCE/MPC/config/dance_mocks.mpb + * DAnCE/MPC/config/dance_plan_generator.mpb + * DAnCE/MPC/config/dance_plan_launcher.mpb + * DAnCE/MPC/config/dance_plan_launcher_base.mpb + * DAnCE/MPC/config/dance_repositorymanager.mpb + * DAnCE/MPC/config/dance_targetmanager.mpb + * DAnCE/MPC/config/dance_utils.mpb + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp + * DAnCE/NodeApplication/Name_Utilities.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/ServerActivator_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeManager/Node_Manager_Module.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/Plan_Generator/PCVisitor.cpp + * DAnCE/Plan_Generator/Plan_Generator.mpc + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp + * DAnCE/RedirectionService/CCMObjectLocator.cpp + * DAnCE/RedirectionService/NameServiceRedirection.cpp + * DAnCE/RedirectionService/RedirectionService.cpp + * DAnCE/RepositoryManager/PC_Updater.cpp + * DAnCE/RepositoryManager/repository_manager_admin.cpp + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp + * DAnCE/RepositoryManager/RepositoryManager.cpp + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RM_Helper.cpp + * DAnCE/RepositoryManager/URL_Parser.cpp + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/Starter/Starter.cpp + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainDataManager.cpp + * DAnCE/TargetManager/Target_Manager_Module.cpp + * DAnCE/TargetManager/TargetManager.mpc + * DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.cpp + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp + * DAnCE/tests/DeploymentPlanDump/test.cpp + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp + * DAnCE/tests/DeploymentTest1/test.cpp + * DAnCE/tests/NameServiceTest/clt_main.cpp + * DAnCE/tests/NameServiceTest/srv_main.cpp + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp + * DAnCE/tests/ObjectLocatorTest/clt_main.cpp + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp + * DAnCE/Utils/DAnCE_Utils.mpc + * DAnCE/Utils/Plan_Handler.cpp + * MPC/config/ciao_cs_client.mpb + * MPC/config/ciao_servant_activator.mpb + * MPC/config/dds4ccm_impl.mpb + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp + * tools/Config_Handlers/XML_File_Intf.cpp + CIAO_DEBUG/CIAO_ERROR/DANCE_DEBUG/DANCE_ERROR now have a level + as first argument. This controls at which level (and higher) the + message is printed. DDS4CCM will get its own level very soon. + All example/test code should use ACE_ERROR/ACE_DEBUG, these + are always printed. + Also cleaned up several base projects and various global search + and replace on layout, typos, and more + +Mon Dec 21 14:56:04 UTC 2009 Johnny Willemsen + + * tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp + * tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.cpp + Use ACE_ERROR/ACE_DEBUG + +Mon Dec 21 12:52:38 UTC 2009 Marcel Smit + + * connectors/dds4ccm/docs/TestCoverage.ods: + Updated. + +Mon Dec 21 12:20:04 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + Added some more test idl + +Mon Dec 21 11:02:04 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + Removed empty templated module, that is illegal + +Mon Dec 21 10:59:04 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.h: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/Topic.cpp: + * connectors/dds4ccm/impl/ndds/TopicDescription.cpp: + Using set_impl and get_impl on DomainParticipant. + +Mon Dec 21 10:25:22 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/DataWriter.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/StatusCondition.h: + * connectors/dds4ccm/impl/ndds/StatusCondition.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/Topic.cpp: + Using set_impl and get_impl on StatusCondition. + +Fri Dec 18 20:11:00 UTC 2009 Johnny Willemsen + + * testsIDL_Test/IDL3_Plus/KitchenSink.idl: + Extended test idl + +Fri Dec 18 18:58:00 UTC 2009 Johnny Willemsen + + Merge changes from Jeff Parsons related to templated modules + + Thu Dec 17 21:37:10 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Cornucopia/README: + + Updated this file with info about the non-template + IDL3+ constructs added to the test IDL. + + * tests/IDL_Test/IDL3_Plus/README: + + New file, containing info about the new test in this + directory. + + Thu Dec 17 21:15:05 UTC 2009 Jeff Parsons + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/IR_Simulator_visitor.cpp: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/IR_Simulator_visitor.h: + + Changes needed to this back end required by front end + changes made to support IDL3+ grammar changes. + + Thu Dec 17 19:52:18 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Changes needed to this back end required by front end + changes made to support IDL template parameters as + base interfaces/valuetypes, supported interfaces, and + primary keys. + + Thu Dec 17 19:37:41 UTC 2009 Jeff Parsons + + * tests/IDL_Test/IDL3_Plus/KitchenSink.mpc: + * tests/IDL_Test/IDL3_Plus/KitchenSink.idl: + + New test in new directory (IDL3_Plus) to test IDL3+ + constructs, specifically template-related ones. + TAO_IDL supports IDL3+ only in the front + end currently, this test will be more meaningful as + back end support is added. + + Mon Nov 23 20:39:24 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/basic_visitor.h: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/checking_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + + Updated visit_* methods. New visit_* methods corresponding + to the revised IDL3+ grammar types, have not yet been + implemented. + +Fri Dec 18 15:28:49 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/ReadCondition.h: + * connectors/dds4ccm/impl/ndds/ReadCondition.cpp: + * connectors/dds4ccm/impl/ndds/TopicDescription.h: + * connectors/dds4ccm/impl/ndds/TopicDescription.cpp: + Two other classes converted. Implemented getter and + setter for variable impl_. + +Fri Dec 18 14:49:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp + Solve bug in test on_deletion + +Fri Dec 18 14:17:47 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + Resolved compiler errors on linux. + +Fri Dec 18 10:48:14 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp: + Continued working on separating dds lifecycle from + ccm lifecycle. The DDS entities are now created at + connection time. + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + Logging time difference of get_one. + + * connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp: + Some debug statements were logged as error messages. + +Fri Dec 18 08:36:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + Change cdp for test. + +Fri Dec 18 08:32:09 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Get_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp: + Added a datareader/writer in order to separate the + dds lifecycle from the ccm lifecycle. + + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/DataWriter.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/SampleInfo.h: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/Topic.cpp: + Don't call impl () recursive. Use impl_ to check + for nil. + + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl: + Turned off CIAO en DAnCE trace. + +Thu Dec 17 20:43:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + Change cdp for test. + +Thu Dec 17 18:42:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp + Add profile to connectorFour. + +Thu Dec 17 13:08:14 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + Reworked Topic in order to separate the DDS lifecycle + from the ccm lifecycle. + + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + Removed unnecessary comments. + +Thu Dec 17 12:56:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml + Forgotten profile Hello example. + +Thu Dec 17 12:35:32 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReader.h: + * connectors/dds4ccm/impl/ndds/DataWriter.h: + * connectors/dds4ccm/impl/ndds/Publisher.h: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.h: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/Topic.h: + Made impl (void) private. Resolved runtime errors. + +Thu Dec 17 12:29:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp + * connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp + add '\n' in debug and error messages + +Thu Dec 17 12:21:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h + Change DURABILITY from VOLATILE to TRANSIENT through QoS file. + Add ConectorStatusListener to check on PUBLICATION_MATCHED status. + +Thu Dec 17 09:13:11 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Base + * connectors/ami4ccm/examples/Hello/Base/Hello.mpc + * connectors/ami4ccm/examples/Hello/Base/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/Base/Hello_Base.mpc + * connectors/ami4ccm/examples/Hello/Connector/AMI.idl + * connectors/ami4ccm/examples/Hello/Connector/AMI.mpc + * connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.h + * connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/Hello_Base + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello.idl + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h + Moved all connector idl into the connector directory + +Thu Dec 17 08:11:11 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Resolved compiler issues. + +Wed Dec 16 20:05:42 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataWriter.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/Topic.h: + * connectors/dds4ccm/impl/ndds/Topic.cpp: + * connectors/dds4ccm/impl/ndds/TopicListener.cpp: + Reworked Topic in order to separate the DDS lifecycle + from the ccm lifecycle. + +Wed Dec 16 19:42:36 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReader.h: + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/QueryCondition.cpp: + * connectors/dds4ccm/impl/ndds/ReadCondition.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp: + Reworked this in order to separate the dds lifecycle from + the ccm lifecycle. The DDS entity is not passed in the + constructor but can be passed using the set_impl method. + Reworked the DataReader. + +Wed Dec 16 19:16:59 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataWriter.h: + * connectors/dds4ccm/impl/ndds/DataWriter.cpp: + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.h: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/PublisherListener.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.h: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp: + Reworked this in order to separate the dds lifecycle from + the ccm lifecycle. The DDS entity is not passed in the + constructor but can be passed using the set_impl method. + +Wed Dec 16 12:26:24 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + Only invoke the listeners when there are valid samples. + + * connectors/dds4ccm/impl/ndds/Getter_T.h: + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + Made the waitset a class variable again. + +Wed Dec 16 11:12:46 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + Simplified receiver + +Wed Dec 16 11:02:46 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/AMI: + Renamed directory to connector + +Wed Dec 16 10:36:31 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp: + * connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp: + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp: + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp: + * connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp: + * connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp: + * connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h: + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h: + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp: + Cleanup tests, check returned readers, data, info and status. + +Wed Dec 16 09:32:33 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp: + Resolved errors due to renaming namespaces. + +Wed Dec 16 09:04:31 UTC 2009 Marijke Hengstmengel + + *connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.cpp: + *connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.h: + *connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp: + *connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h: + *connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp: + *connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h: + *connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.cpp: + *connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.h: + *connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp: + *connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h: + *connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp: + *connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h: + Cleanup tests, check returned reader and status. + +Wed Dec 16 08:55:31 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Using this when using members. + + * connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp: + Added newline. + +Wed Dec 16 08:27:46 UTC 2009 Johnny Willemsen + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Unicode fix + +Wed Dec 16 08:09:46 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.h + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h + Improved naming, everything is now in the Hello module and + everything related to AMI has a AMI_ prefix + +Tue Dec 15 18:12:46 UTC 2009 Johnny Willemsen + + * ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * ami4ccm/examples/Hello/AMI/AMI_exec.h: + Made code more consistent and error safe + +Tue Dec 15 15:59:46 UTC 2009 Johnny Willemsen + + * ami4ccm/examples/Hello/AMI/AMI.idl + * ami4ccm/examples/Hello/AMI/AMI_exec.cpp + * ami4ccm/examples/Hello/AMI/AMI_exec.h + * ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp + * ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.h + * ami4ccm/examples/Hello/descriptors/run_test.pl + * ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl + * ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp + * ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h + * ami4ccm/examples/Hello/Sender/Hello_Sender.idl + * ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + * ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h + Simplified this example + +Tue Dec 15 15:59:57 UTC 2009 Marcel Smit + + * connectors/dds4ccm/docs/TestCoverage.ods: + Spreadsheet to keep track of test coverage. + +Tue Dec 15 15:21:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.h + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h + Cleanup test. Check DDS_entity. + +Tue Dec 15 15:04:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.cpp + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.h + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp + Cleanup test. + +Tue Dec 15 14:58:21 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h: + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h: + * connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp: + * connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h: + * connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h: + * connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp: + Optimized code. Removed unused header files, indentation, removed empty lines. + +Tue Dec 15 14:32:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.h: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h: + Cleanup test. + +Tue Dec 15 13:39:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.h: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp: + Cleanup test. + +Tue Dec 15 13:38:44 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Extended tests with checks on the received ReadInfo struct. + +Tue Dec 15 12:46:02 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl: + * connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl: + * connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl: + * connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp: + Extended tests with checks on the received ReadInfo struct. + + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl: + Sleep for 30 (instead of 60) seconds. + +Tue Dec 15 10:31:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp + Solved compile errors. + +Tue Dec 15 10:23:23 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Optimized for loop (++i in stead of i++). + + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp: + Catching exceptions as const. + + * connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp: + Catching exceptions as const. + Extended tests on the listener callback. + +Tue Dec 15 09:01:46 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/SLManyByMany: + * connectors/dds4ccm/tests/SLManyByMany/Base: + * connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl: + * connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc: + * connectors/dds4ccm/tests/SLManyByMany/Connector: + * connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl: + * connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc: + * connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.cpp: + * connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.h: + * connectors/dds4ccm/tests/SLManyByMany/descriptors: + * connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl: + * connectors/dds4ccm/tests/SLManyByMany/Receiver: + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl: + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc: + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp: + * connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h: + * connectors/dds4ccm/tests/SLManyByMany/Sender: + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl: + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc: + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp: + * connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h: + Add test StateListyener operations with MANY_BY_MANY option. + +Tue Dec 15 08:25:46 UTC 2009 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.h: + Use char* instead of tchar + + * ciao/Contexts/Context_Impl_Base.h: + Made constructor private + +Mon Dec 14 20:35:46 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h: + Removed virtual methods that where added by accident and which broke + the psl + +Mon Dec 14 20:31:46 UTC 2009 Johnny Willemsen + + * ciao/Containers/Session/Session_Container.cpp: + Use false and extended debug statements + + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp: + Extended debug info + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Removed not needed debug info + + * ciao/Servants/Servant_Impl_T.cpp: + Layout change + +Mon Dec 14 20:07:46 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp: + Report which port has the real problem + +Mon Dec 14 19:23:21 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + Resolved fuzz errors/warnings. + +Mon Dec 14 19:06:43 UTC 2009 Marcel Smit + + * examples/Hello/descriptors/run_NodeDaemons.pl: + * examples/Hello/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test_alias.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: + Resolved fuzz errors/warnings. + +Mon Dec 14 14:53:13 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h: + * connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + Cleaned up code. Removed unused headers, made exception variables const + and outlined code. + +Mon Dec 14 14:36:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc: + * connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc: + * connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc: + Solve duplicate project names + +Mon Dec 14 14:25:09 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * examples/Hello/descriptors/run_test_alias.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: + * tests/Bug_3769_Regression/descriptors/run_test.pl: + * tests/CIAO_ComponentServer/Local_Facet/run_test.pl: + Resolved fuzz erros/warnings. + +Mon Dec 14 14:15:46 UTC 2009 Johnny Willemsen + + * DAnCE/tests/MocksTest/* + Removed, not compiled, not tested + +Mon Dec 14 14:10:11 UTC 2009 Marcel Smit + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + Resolved fuzz erros/warnings. + +Mon Dec 14 13:59:46 UTC 2009 Johnny Willemsen + + * ciao/Containers/Session/Session_Container.cpp: + Print debug statement when we don't get a facet + + * ciao/Contexts/Context_Impl_T.cpp: + * ciao/Contexts/Context_Impl_T.h: + * ciao/Servants/Servant_Impl_T.cpp: + * ciao/Servants/Servant_Impl_T.h: + Create the context in the base instead of in the generated + code + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + Layout change + + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + Don't clear tracing flags + + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp: + Layout changes + +Mon Dec 14 13:42:56 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp: + Resolved errors in deployment plans related to local interfaces. + +Mon Dec 14 13:16:16 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + The deleted samples may be invalid. Therefore don't check + on valid_data flag. Implemented this for many_by_many. + +Mon Dec 14 12:56:16 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + The deleted samples may be invalid. Therefore don't check + on valid_data flag. + +Mon Dec 14 12:18:31 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added many_by_many listener test to test framework. + +Mon Dec 14 11:37:46 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp + Solve minor bug in test + +Mon Dec 14 11:18:46 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Removed generated header + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + Use ACE_CString for subplan names + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + Removed commented out code + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + Removed not needed include + + * DAnCE/NodeManager/NodeManager_Impl.h + Added missing include + +Mon Dec 14 10:58:46 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/SLDisabled: + * connectors/dds4ccm/tests/SLDisabled/Base: + * connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl: + * connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc: + * connectors/dds4ccm/tests/SLDisabled/Connector: + * connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl: + * connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc: + * connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.cpp: + * connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.h: + * connectors/dds4ccm/tests/SLDisabled/descriptors: + * connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl: + * connectors/dds4ccm/tests/SLDisabled/Receiver: + * connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl: + * connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc: + * connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp: + * connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h: + * connectors/dds4ccm/tests/SLDisabled/Sender: + * connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl: + * connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc: + * connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp: + * connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h: + Added test StateListener: NOT_ENABLED . + +Mon Dec 14 10:46:46 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + Don't override use trace levels + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + Initialise all members to zero + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Improved logging + +Mon Dec 14 10:44:44 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/ListenManyByMany/*: + Added test in order to test many_by_many on the listener. + +Mon Dec 14 09:12:46 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Improved error reporting back to the end user + +Mon Dec 14 08:16:32 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl: + * performance-tests/Benchmark/RoundTripClient/run_test.pl: + * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl: + * tests/Bug_3769_Regression/descriptors/run_test.pl: + * tests/IDL3/Events/Any/run_test.pl: + * tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl: + Resolved fuzz errors/warnings. + +Mon Dec 14 07:39:46 UTC 2009 Johnny Willemsen + + * ciao/Containers/Session/Session_Container.cpp + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp + * connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp + * connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp + * connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h + * connectors/dds4ccm/idl/ccm_dds.idl + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl + * connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl + * connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Get_T.h + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Read_T.h + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Update_T.h + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Write_T.h + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h + * connectors/dds4ccm/impl/ndds/Getter_T.cpp + * connectors/dds4ccm/impl/ndds/Getter_T.h + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp + * connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.h + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.h + * connectors/dds4ccm/impl/ndds/Reader_T.cpp + * connectors/dds4ccm/impl/ndds/Reader_T.h + * connectors/dds4ccm/impl/ndds/SampleInfo.h + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h + * connectors/dds4ccm/impl/ndds/Updater_T.cpp + * connectors/dds4ccm/impl/ndds/Updater_T.h + * connectors/dds4ccm/impl/ndds/Writer_T.cpp + * connectors/dds4ccm/impl/ndds/Writer_T.h + * connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp + * connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl + * connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp + * connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp + * connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp + * connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp + * connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp + * connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h + * DAnCE/Deployment/Deployment_DeploymentPlan.idl + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * docs/schema/Basic_Deployment_Data.xsd + * tests/IDL_Test/Cornucopia/Cornucopia.idl + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/PSPE_Handler.cpp + Removed LocalFacet again as connection kind, we now use a + deployRequirement in order to let D&C know we have a local connection. + Use local interfaces for everything in dds4ccm and updated + all deployment plans for this. This does mean the connector + needs to create all executors as construction time, the + lifecycle of the connector is now that all executors + are created at construction, at the moment we do a + ccm_activate we need to create the real dds entities. + When we get an invocation before ccm_activate we do a + BAD_INVORDER exception. + + In the cdp we now use the following with a connection to + indicate that it has to be deployed as a local connection: + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + +Fri Dec 11 14:03:46 UTC 2009 Marcel Smit + + * examples/Display/descriptors/run_NodeDaemons.pl: + * examples/Display/descriptors/run_test_without_ns.pl: + Resolved fuzz errors/warnings/ + +Fri Dec 11 13:19:30 UTC 2009 Marcel Smit + + * examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl: + * examples/DevGuideExamples/Messenger/descriptors/run_test.pl: + * examples/Display/descriptors/basicNodeDaemon.pl: + Resolved fuzz errors/warnings/ + +Fri Dec 11 12:00:05 UTC 2009 Marcel Smit + + * examples/BasicSP/descriptors/run_test.pl: + Resolved script errors + +Fri Dec 11 11:50:16 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/Cornucopia/Cornucopia.idl: + Extended tests + +Fri Dec 11 11:07:13 UTC 2009 Marcel Smit + + * performance-tests/Benchmark/RoundTripClient/run_test.pl: + Resolved fuzz errors/warnings + + * performance-tests/Protocols/descriptors/run_test.pl: + Resolved fuzz warnings + +Fri Dec 11 10:52:33 UTC 2009 Marcel Smit + + * performance-tests/Benchmark/Multi_Threaded/run_test.pl: + * performance-tests/Benchmark/RoundTrip/run_test.pl: + Resolved fuzz errors/warnings + +Fri Dec 11 10:27:57 UTC 2009 Marcel Smit + + * tests/Bug_2130_Regression/descriptors/run_test.pl: + * tests/Bug_3769_Regression/descriptors/run_test.pl: + Resolved fuzz errors/warnings + +Fri Dec 11 09:44:14 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl: + Resolved fuzz errors/warnings + +Fri Dec 11 09:30:29 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test.pl: + * examples/Null_Component/descriptors/run_test.pl: + Resolved script errors. + +Fri Dec 11 08:20:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp + Resolved warnings. + +Fri Dec 11 08:09:25 UTC 2009 Marcel Smit + + * performance-tests/Protocols/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Fri Dec 11 07:44:10 UTC 2009 Marcel Smit + + * examples/Display/descriptors/run_NodeDaemons.pl: + * examples/Hello/descriptors/run_NodeDaemons.pl: + Resolved fuzz errors/warnings. + +Thu Dec 10 20:23:15 UTC 2009 Marcel Smit + + * DAnCE/tests/CIAO/CommandlinePassage/run_test.pl: + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl: + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl: + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl: + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl: + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl: + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl: + * examples/BasicSP/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test.pl: + * examples/Null_Component/descriptors/run_test.pl: + * tests/IDL_Test/Double_Inherited_Component/run_test.pl: + Removed add_lib_path in order to resolve fuzz error. + +Thu Dec 10 20:05:00 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl: + * tests/Bug_2130_Regression/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Thu Dec 10 19:40:19 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl: + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl: + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Thu Dec 10 19:31:15 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl: + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl: + Resolved fuzz errors/warnings. + +Thu Dec 10 19:26:16 UTC 2009 Johnny Willemsen + + * ciao/Servants/Home_Servant_Impl_T.cpp: + Check return value sprintf and use is_nil + +Thu Dec 10 19:15:15 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl: + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl: + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl: + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test_alias.pl: + Resolved some fuzz errors/warnings. + +Thu Dec 10 19:03:16 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + Removed generated headers + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + const changes and improved debug messages + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + Const change + + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + Fixed typo in debug statement + +Thu Dec 109 17:02:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp + Resolved warning. + +Thu Dec 10 16:20:37 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + * connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl: + Resolved some fuzz errors/warnings. + +Thu Dec 10 15:56:13 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl: + * connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Getter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl: + Resolved some fuzz errors/warnings. + +Thu Dec 10 15:42:58 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl: + * connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl: + Resolved some fuzz errors/warnings. + +Thu Dec 10 15:35:51 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl: + * connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl: + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl: + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl: + Resolved some fuzz errors/warnings. + +Thu Dec 10 15:29:00 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: + * connectors/dds4ccm/tests/Updater/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Thu Dec 10 14:41:13 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Wait a few seconds before the actual writing starts. + + * connectors/dds4ccm/tests/ListenOneByOne/*: + Added one_by_one listener test. + + * bin/ciao_tests.lst: + Added one_by_one test to the test framework. + +Thu Dec 109 14:31:57 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst + * connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl: + * connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc: + * connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl: + * connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc: + * connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.cpp: + * connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.h: + * connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/Updater/Receiver: + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl: + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc: + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h: + * connectors/dds4ccm/tests/Updater/Sender: + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl: + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc: + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp: + * connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h: + Implement test for Updater functions + +Thu Dec 10 13:30:01 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added !FIXED_BUGS_ONLY for the connection tests since + there's a known issue in the connector. + +Thu Dec 10 12:44:31 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added ListenNotEnabled test to the test framework. + +Thu Dec 10 12:42:08 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + Renamed get_many into write_many. + + * connectors/dds4ccm/tests/ListenNotEnabled/*: + * connectors/dds4ccm/tests/Listener/*: + Split the listener into three separate tests. Added + listener test where mode is NOT_ENABLED as starter. + +Thu Dec 10 11:01:16 UTC 2009 Johnny Willemsen + + * ciao/Containers/Servant_Activator.cpp: + Extended logging + +Thu Dec 10 10:11:56 UTC 2009 Marcel Smit + + * examples/Hello/descriptors/run_test_without_ns.pl: + * examples/Null_Component/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Thu Dec 10 10:00:16 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Fixed compiler warnings about arguments not used + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Fixed invalid string comparison and const improvements + +Thu Dec 10 09:41:12 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc: + Removed some unnecessary defines. + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + Removed unused class variable. + + * connectors/dds4ccm/tests/Listener/*: + Empty test framework for the listener test. + +Thu Dec 10 08:37:49 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/README: + * connectors/dds4ccm/tests/Reader/README: + Described the tests. + +Thu Dec 10 08:21:16 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/Updater_T.cpp: + * connectors/dds4ccm/impl/ndds/Updater_T.h: + Fixed bugs in the updater + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h + Merged a revised ami4ccm example that has local interfaces for the + reply handler, which reduces the footprint of ami4ccm and also + simplifies the code + +Thu Dec 10 08:06:08 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc: + * connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc: + * connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc: + * connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc: + * connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp: + Shorten the names of the projects in order to solve some fuzz warnings. + +Wed Dec 9 19:52:16 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/Deployment_DeploymentPlan.idl + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * docs/schema/Basic_Deployment_Data.xsd + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/PSPE_Handler.cpp + Merged changes from local_facets branch from Will Otte to svn head. + This is going to be used by at least ami4ccm. We are looking if there + is a different way to determine whether we need to connect a local + facet. + +Wed Dec 9 15:53:16 UTC 2009 Marcel Smit + + * examples/BasicSP/descriptors/run_test.pl: + * examples/Null_Component/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Wed Dec 9 15:01:48 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + Resolved unicode compiler errors. + +Wed Dec 9 14:29:33 UTC 2009 Johnny Willemsen + + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Container_Base.inl: + Get rid of the receptacle policy map, this doesn't do a thing + +Wed Dec 9 14:26:17 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + Extended tests with a timeout test on get_many. + +Wed Dec 9 13:58:44 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp: + Don't need the ConnectorStatusListener anymore. + + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + Print debug message in stead of an error message. + +Wed Dec 9 13:54:33 UTC 2009 Johnny Willemsen + + * ciao/Servants/Servant_Impl_Base.cpp (lookup_facet): + Log an error when we can't find a facet + +Wed Dec 9 13:53:47 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + On get_many should at least return 1 sample. + + * connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp: + Return _nil rather than 0. + +Wed Dec 9 13:11:33 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/Updater_T.cpp: + Check whether instance_handle and instance match + +Wed Dec 9 12:55:23 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc: + * connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc: + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc: + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp: + Changed project names in order to resolve fuzz warnings. + +Wed Dec 9 12:48:35 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc: + Shorten the shared name of DDS_ConnectorStatusListener_TestSec_Connector_lem_stub. + +Wed Dec 9 12:40:33 UTC 2009 Johnny Willemsen + + * bin/ciao_tests.lst: + Added Local_Facet test + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Resolved a bug whereby connection endpoints in the original plan + would be copied into two separate connections in a child plan. + +Wed Dec 9 12:37:33 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/Local_Facet: + Removed + + * tests/CIAO_ComponentServer/Local_Facet: + New test for testing local facets + + * ciao/ComponentServer/CIAO_ComponentServer.idl + * ciao/ComponentServer/CIAO_Container_Impl.cpp + * ciao/ComponentServer/CIAO_Container_Impl.h + * ciao/Containers/Container_Base.idl + * ciao/Containers/Session/Session_Container.cpp + * ciao/Containers/Session/Session_Container.h + Added support to connect local facets by William Otte + + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_Base.h: + Made several methods pure virtual instead of not implemented + +Wed Dec 9 11:24:58 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Resolved compiler warnings. + +Wed Dec 9 11:13:44 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added State_Connection_Test. + + * connectors/dds4ccm/tests/Event_Connection_Test/README: + Changed to meet the latest code updates. + + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl: + Removed comments. + + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp: + Logging debug messages (in stead of error messages). + + * connectors/dds4ccm/tests/State_Connection_Test/*: + Added this test in order to test all the connections a state connector + needs. + +Wed Dec 9 08:56:42 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp: + Support only the DDS_Event connector. Removed DDS_State connector stuff. + +Wed Dec 9 08:25:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp + Add newline at end of file + +Wed Dec 9 08:17:27 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Get_Connection_Test/*: + Renamed to Event_Connection_Test. + +Wed Dec 9 08:14:57 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/Event_Connection_Test/*: + Renamed Get_Connection_Test to Event_Connection_Test. + +Wed Dec 9 07:47:33 UTC 2009 Johnny Willemsen + + * etc/ciao_dds4ccm.doxygen: + Also exclude the tests directory + +Wed Dec 9 07:17:32 UTC 2009 Marcel Smit + + * examples/BasicSP/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test.pl: + Resolved some fuzz errors/warnings. + +Tue Dec 8 16:36:33 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Fixes to debug statements + +Tue Dec 8 16:31:33 UTC 2009 Marcel Smit + + * examples/Hello/descriptors/run_test.pl: + Adapted to the new test framework. + +Tue Dec 8 15:54:33 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/Updater_T.cpp: + * connectors/dds4ccm/impl/ndds/Updater_T.h: + Added existence checks as mandated by the spec + +Tue Dec 8 15:29:40 UTC 2009 Marcel Smit + + * examples/BasicSP/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test.pl: + * examples/Null_Component/descriptors/run_test.pl: + Resolved fuzz warnings. + +Tue Dec 8 15:20:33 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Update_T.h + Cache dds executors + +Tue Dec 8 15:17:44 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Resolved compiler warnings. + +Tue Dec 8 15:11:22 UTC 2009 Marcel Smit + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + * tests/Bug_3769_Regression/descriptors/run_test.pl: + Resolved fuzz errors. + +Tue Dec 8 15:01:58 UTC 2009 Marcel Smit + + * examples/BasicSP/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: + * examples/Null_Component/descriptors/run_test.pl: + Resolved fuzz errors. + +Tue Dec 8 14:56:33 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h: + Provide access to the DDS entities + +Tue Dec 8 12:51:33 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.h: + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + Using a local waitset in stead of a global one. + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + Optimized get_many. + +Tue Dec 8 10:48:04 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added Getter test to the test framework. + + * connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + Implemented get_many. + +Tue Dec 8 09:05:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml: + Change QoS settings of test to generate a on_sample_lost callback. + +Tue Dec 8 08:56:42 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + RETCODE_NO_DATA should throw an exception since + there always must be data after when the timeout does + not occur. + + * connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp: + Removed qos_profile config property. + +Tue Dec 8 08:47:23 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp: + Resolved some timing issues between sender and receiver. + +Tue Dec 8 08:17:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp: + Solved errors duplicate projectnames + + +Tue Dec 8 07:21:52 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + Minor changes in order to meet the spec. + + * connectors/dds4ccm/tests/Getter/*: + Added test for the getter. + +Mon Dec 7 15:37:57 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst + * connectors/dds4ccm/tests/PSLSampleLost: + * connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl: + * connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc: + * connectors/dds4ccm/tests/PSLSampleLost/Connector: + * connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl: + * connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.cpp: + * connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.h: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp: + * connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h: + * connectors/dds4ccm/tests/PSLSampleLost/Sender: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp: + * connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h: + Add test PortStatusListener:on_sample_lost + +Mon Dec 7 14:53:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Get_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Read_T.h: + Implement get_dds_entity methods + + * NEWS + Added DDS4CCM_NDDS_LOG_VERBOSITY + +Mon Dec 7 13:28:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp + Fixed runtime problems and refactored statelistener + +Mon Dec 7 13:25:55 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Getter_T.cpp: + Reads according to DDS4CCM spec. + + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + NO_DATA shouldn't throw an exception but just return + an empty sequence. + + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + Optimized test. Don't need to sleep prior to writing samples to DDS. + +Mon Dec 7 13:07:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Get_T.h + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Listen_T.h + * connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Read_T.h + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h + * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Update_T.h + * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Write_T.h + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.h + * connectors/dds4ccm/impl/ndds/Reader_T.h + * connectors/dds4ccm/impl/ndds/Updater_T.h + Introduced DDS_Get_T, DDS_Listen_T, DDS_Read_T, DDS_Update_T, and + DDS_Write_T templates which implement the dds4ccm extended ports + +Mon Dec 7 11:157:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h: + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp: + Add second port to test + +Mon Dec 7 11:12:49 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Instance state should be alive in all cases. + +Mon Dec 7 10:54:16 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Implemented max_delivered_data. + +Mon Dec 7 10:30:38 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: + Rewritten test due to timing issues. Also added a 'no data' test. + +Mon Dec 7 10:07:57 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/PSLDeadline: + * connectors/dds4ccm/tests/PSLDeadline/Base: + * connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl: + * connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc: + * connectors/dds4ccm/tests/PSLDeadline/Connector: + * connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl: + * connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc: + * connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.h: + * connectors/dds4ccm/tests/PSLDeadline/descriptors: + * connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/PSLDeadline/Receiver: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h + * connectors/dds4ccm/tests/PSLDeadline/Sender: + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl: + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc: + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h: + Add test PortStatusListener:on_requested_deadline_missed for DDS_Listen port + +Mon Dec 7 06:52:05 UTC 2009 Abdullah Sowayan + + * tests/Bug_3769_Regression/Foo.idl: + * tests/Bug_3769_Regression/Foo_exec.h: + * tests/Bug_3769_Regression/Foo_exec.cpp: + + Extended this test to test a struct attribute of a component. + The descriptor file needs to be extended as well. + +Mon Dec 7 06:08:31 UTC 2009 Abdullah Sowayan + + * tests/Bug_3769_Regression/Foo.idl: + * tests/Bug_3769_Regression/Foo_exec.h: + * tests/Bug_3769_Regression/Foo_exec.cpp: + + Extended this test to test a sequence attribute of a component. + The descriptor file needs to be extended to capture data + for the sequence attribute(s). + +Mon Dec 7 03:02:18 UTC 2009 Abdullah Sowayan + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + + Fixed a small bug in a switch statement where one of the + cases did not have a 'break' statement. + +Sun Dec 6 19:22:45 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + Changed layout debug message + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + Implement more portstatus listner functionality + +Sun Dec 6 18:49:47 UTC 2009 William R. Otte + + * tests/Bug_3769_Regression/Foo_exec.cpp: + + Fixed the comparison for float to ensure the numeric literal isn't + converted to a double. + + * tests/Bug_3769_Regression/descriptors/DeploymentPlan.cdp: + + Float configproperty was incorrectly typed as a double. + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + + Fixed bug whereby floats/doubles weren't properly dereferences. + +Sat Dec 5 01:06:06 UTC 2009 Abdullah Sowayan + + * bin/ciao_tests.lst: + + Add bugzilla 3769 to the list of test to run. + +Sat Dec 5 00:59:20 UTC 2009 Abdullah Sowayan + + * tests/Bug_3769_Regression: + * tests/Bug_3769_Regression/Foo.idl: + * tests/Bug_3769_Regression/Foo.mpc: + * tests/Bug_3769_Regression/Foo_exec.h: + * tests/Bug_3769_Regression/Foo_exec.cpp: + * tests/Bug_3769_Regression/descriptors: + * tests/Bug_3769_Regression/descriptors/DeploymentPlan.cdp: + * tests/Bug_3769_Regression/descriptors/NodeMap.dat: + * tests/Bug_3769_Regression/descriptors/run_test.pl: + * tests/Bug_3769_Regression/model: + + Added bugzilla 3769. Component attributes of type double and float + do not get set properly by DAnCE. + +Fri Dec 4 20:41:45 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h: + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp: + * connectors/dds4ccm/impl/ndds/PortStatusListener_T.h: + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp: + Introduced a PortStatusListener which is than the base of + the DataReaderListener + +Fri Dec 4 14:31:45 UTC 2009 Marcel Smit + + * tests/CIAO_ComponentServer/SimpleComponent/run_test.pl: + Resolved fuzz error. + +Fri Dec 4 14:28:18 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Enabled some more test for fuzz. + +Fri Dec 4 14:15:24 UTC 2009 Marcel Smit + + * tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl: + Adapted to the new test framework. Fuzz + errors/warnings should be resolved + +Fri Dec 4 13:53:04 UTC 2009 Marcel Smit + + * tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Array/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Native/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl: + Resolved some minor fuzz errors/warnings. + +Fri Dec 4 13:49:58 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h: + Add more infrastructure for the 5 extended ports this connector + provides + +Fri Dec 4 13:23:46 UTC 2009 Marcel Smit + + * DAnCE/tests/CIAO/CommandlinePassage/run_test.pl: + * tests/CIAO_ComponentServer/Basic/run_test.pl: + Resolved runtime errors in script. + +Fri Dec 4 13:14:10 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Fixed many_by_many. The last updates should be send to + the listener. + +Fri Dec 4 13:04:58 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds4ccm.mpc + * connectors/dds4ccm/impl/ndds/DataListenerControl.cpp + * connectors/dds4ccm/impl/ndds/DataListenerControl.h + * connectors/dds4ccm/impl/ndds/DataListenerControl_T.cpp + * connectors/dds4ccm/impl/ndds/DataListenerControl_T.h + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp + * connectors/dds4ccm/impl/ndds/DDS4CCM_Traits.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/StateListenerControl.cpp + * connectors/dds4ccm/impl/ndds/StateListenerControl.h + * connectors/dds4ccm/impl/ndds/StateListenerControl_T.cpp + * connectors/dds4ccm/impl/ndds/StateListenerControl_T.h + Refactored data/state listener controls + +Fri Dec 4 12:56:58 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Refactored MANY_BY_MANY. + +Fri Dec 4 11:24:25 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Implemented MANY_BY_MANY. First all new samples are handled. + After that the updated ones, by invoking on_many_updates on + the listener. The last step is to inform the listener + about the deleted samples. + +Fri Dec 4 10:38:26 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Resolved compiler errors. + +Fri Dec 4 10:21:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Extended logging + +Fri Dec 4 10:11:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h: + Removed listener callbacks that are handled by the subscriber + +Fri Dec 4 09:49:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/tests/Updater/* + Use the stateconnector as starting point + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + First compile fixes + + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h: + Handle data_on_readers + +Fri Dec 4 09:34:09 UTC 2009 Marcel Smit + + * DAnCE/tests/CIAO/CommandlinePassage/run_test.pl: + * tests/CIAO_ComponentServer/Activator/run_test.pl: + * tests/IDL_Test/Double_Inherited_Component/run_test.pl: + Resolved fuzz errors/warnings. + +Fri Dec 4 09:04:34 UTC 2009 Marcel Smit + + * tests/CIAO_ComponentServer/Activator/run_test.pl: + * tests/CIAO_ComponentServer/Basic/run_test.pl: + Resolved fuzz errors/warnings. + +Fri Dec 4 08:32:42 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: + Resolved fuzz errors/warnings. + +Thu Dec 3 20:12:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp + Layout changes + +Thu Dec 3 20:08:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp + Added a lot of logging and made the subscriberlistener + working again + +Thu Dec 3 20:08:39 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + Only returning valid data. + +Thu Dec 3 18:46:35 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp: + Using a take in stead of take_next_sample. Also created + Created difference between ONE_BY_ONE and MANY_BY_MANY by + invoking on_one_update and on_many_updates on the listener. + +Thu Dec 3 15:13:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp: + Resolved warning unused parameter. + +Thu Dec 3 14:06:14 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + Removed the context switch. + Created difference between ONE_BY_ONE and MANY_BY_MANY by + introducing a take (in stead of take_next_sample). + +Thu Dec 3 13:57:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h: + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp: + * connectors/dds4ccm/impl/ndds/PublisherListener_T.h: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h: + Handle everything related to the CSL at subscriber/publisher + level + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + Corrected base project + +Thu Dec 3 13:52:57 UTC 2009 Marijke Hengstmengel + + *bin/ciao_tests.lst: + * connectors/dds4ccm/tests/CSLUnexpStat: + * connectors/dds4ccm/tests/CSLUnexpStat/Base: + * connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl: + * connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc: + * connectors/dds4ccm/tests/CSLUnexpStat/Connector: + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl: + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc: + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.h: + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors: + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver: + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl: + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc: + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h: + * connectors/dds4ccm/tests/CSLUnexpStat/Sender: + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl: + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc: + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h: + Test ConnectorStatusListener:on_unexpected_status implemented + + +Thu Dec 3 12:56:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/TopicListener_T.cpp: + Let each layer initialise itself + +Thu Dec 3 12:06:32 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp: + Added keys and max_dds_samples to idl. + +Thu Dec 3 11:07:49 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + UnkeyedWriter test may fail since DDS allows more + samples than configured in the QoS file. + +Thu Dec 3 11:06:37 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Resolved compiler warnings on Windows. + +Thu Dec 3 11:03:34 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp: + Resolved some runtime errors. Expected_samples and name are not + used in Sender. + +Thu Dec 3 10:51:20 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp: + Disabled the listener for now. No takes should be performed. + + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp: + Rewritten in order to test exceptions from the connector. + +Thu Dec 3 10:14:28 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp: + Build in checks on received data. + + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp: + Write more samples + +Wed Dec 3 08:56:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h: + Solved initialize warnings. + +Thu Dec 3 08:55:27 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl: + Reduced log level. + +Thu Dec 3 08:47:23 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl: + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl: + Adapted to the update Reader port. + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Minor code optimization. + +Thu Dec 3 08:28:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h: + Don't handle data_on_readers, if we install this listener, + the data reader listener will not get any on_data_available + +Wed Dec 2 14:57:57 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + Use the word error to trigger the scoreboard parser + +Wed Dec 2 14:19:49 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Used operators to file readinfo sequences. + + * connectors/dds4ccm/impl/ndds/SampleInfo.h: + Removed <== operator for readinfo_seq. Also added + instance handle when copying sample_info. + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Added handle tests and test exceptions related to handles. + + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + Changed timing. + +Wed Dec 2 13:58:57 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst: + Add test to test list. + +Wed Dec 2 13:49:57 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/impl/ndds/Utils.cpp: + * connectors/dds4ccm/impl/ndds/Utils.h: + * connectors/dds4ccm/tests/CSLSampleRejected: + * connectors/dds4ccm/tests/CSLSampleRejected/Base: + * connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl: + * connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc: + * connectors/dds4ccm/tests/CSLSampleRejected/Connector: + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl: + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc: + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.h: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver: + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl: + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc: + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h: + * connectors/dds4ccm/tests/CSLSampleRejected/Sender: + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl: + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc: + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h: + Created test ConnectorStatusListener:on_sample_rejected + +Wed Dec 2 13:35:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h: + Handle data_on_readers + +Wed Dec 2 13:12:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener_T.h + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.h + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h + * connectors/dds4ccm/impl/ndds/TopicListener_T.cpp + * connectors/dds4ccm/impl/ndds/TopicListener_T.h + Added a get_mask to all listeners, this should return the + mask the listener needs, this is then used by the connector + templates. This way a listener can listen for more callbacks + and update his mask without any connector to be updated + +Wed Dec 2 13:10:40 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.h: + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Implemented read_last. + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + Optimized tests. + +Wed Dec 2 11:52:26 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.h: + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Cleaned up code by removing double code. Implemented + read_all. + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Enabled read_all test. + +Wed Dec 2 11:33:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/Utils.cpp: + * connectors/dds4ccm/impl/ndds/Utils.h: + Added translate_statuskind + +Wed Dec 2 11:16:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener.h: + Implemented more CSL callbacks + +Wed Dec 2 10:57:20 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.h: + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Implemented read_one_last and read_one_all according to + spec. + + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + Enabled read_one_last and read_one_all to test. + + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + Sleep between writing samples to DDS. + + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: + Optimized logging. + +Wed Dec 2 10:26:57 UTC 2009 Johnny Willemsen + + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Containers/Session/Session_Container.h: + Improved failure reporting in case we can't get the needed + entities + +Wed Dec 2 09:05:57 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h: + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h: + * connectors/dds4ccm/impl/ndds/PublisherListener_T.h: + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h: + Moved publisher and subscriber to the DDS_TopicBase + +Wed Dec 2 08:33:57 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added reader test to the test framework. + +Wed Dec 2 08:28:44 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Started with read_one_last. + + * connectors/dds4ccm/tests/Reader: + * connectors/dds4ccm/tests/Reader/Base: + * connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl: + * connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc: + * connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl: + * connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc: + * connectors/dds4ccm/tests/Reader/Connector: + * connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl: + * connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc: + * connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.h: + * connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.cpp: + * connectors/dds4ccm/tests/Reader/README: + * connectors/dds4ccm/tests/Reader/Receiver: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Reader/Sender: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h: + * connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/Reader/descriptors: + * connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: + Added test to test the Reader. + +Tue Dec 01 12:39:37 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/Reader_T.cpp: + Implemented read_one_all + +Tue Dec 01 11:50:37 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/StateListenerControl.cpp + * connectors/dds4ccm/impl/ndds/StateListenerControl.h + StateListenerControl + +Tue Dec 01 10:59:37 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + StateListener + +Tue Dec 01 09:42:37 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener_T.h + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h + * connectors/dds4ccm/impl/ndds/TopicListener_T.cpp + * connectors/dds4ccm/impl/ndds/TopicListener_T.h + * connectors/dds4ccm/impl/ndds/Updater_T.cpp + * connectors/dds4ccm/impl/ndds/Updater_T.h + Implemented empty listeners for each dds entity and first + part of DDS_State + +Tue Dec 01 08:33:37 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc + Corrected mpc file for connector_stub + +Mon Nov 30 13:00:37 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp: + Corrected warnings for unused parameters + + +Mon Nov 30 13:00:37 UTC 2009 Marijke Hengstmengel + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc: + Corrected long project names and add tests to test list. + +Mon Nov 30 12:27:37 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h: + Empty state connector so that we can start with creating tests + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h: + Corrected ifdef guards + +Mon Nov 30 11:32:37 UTC 2009 Marijke Hengstmengel + + * connectors/dds4ccm/tests/CSLDeadline: + * connectors/dds4ccm/tests/CSLDeadline/Base: + * connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl: + * connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc: + * connectors/dds4ccm/tests/CSLDeadline/Connector: + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl: + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc: + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.h: + * connectors/dds4ccm/tests/CSLDeadline/descriptors: + * connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/CSLDeadline/Receiver: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h: + * connectors/dds4ccm/tests/CSLDeadline/Sender: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h: + Test ConnectorStatusListener on_offered_deadline_missed. + + * connectors/dds4ccm/tests/CSLQoS: + * connectors/dds4ccm/tests/CSLQoS/Base: + * connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl: + * connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc: + * connectors/dds4ccm/tests/CSLQoS/Connector: + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl: + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc: + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.h: + * connectors/dds4ccm/tests/CSLQoS/descriptors: + * connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl: + * connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/CSLQoS/Receiver: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h: + * connectors/dds4ccm/tests/CSLQoS/Sender: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp: + * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h: + Test ConnectorStatusListener on_requested- and on_offered_incompatible_QoS. + +Mon Nov 30 09:21:37 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/Servants/Port_Activator_T.h: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/ResourceCommitmentManager.h: + Doxygen fixes + +Sun Nov 29 13:06:02 CST 2009 Johnny Willemsen + + * CIAO version 0.7.5 released. + +Thu Nov 26 20:18:37 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer_Task.cpp: + Layout changes + + * ciao/ComponentServer/CIAO_RTComponentServer.cpp: + * ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp: + Latest changes for rt component server to have server declared priorities + +Thu Nov 26 19:30:37 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + When creating the process options, calculate the size of the + commandline, the default of 1024 can be too small if the + system has multiple network interfaces + +Thu Nov 26 19:03:37 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + Check if we successfully constructed the commandline + +Thu Nov 26 18:52:37 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer_Task.cpp: + If the narrow of the callback IOR fails, print the IOR + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + Const change + +Thu Nov 26 15:32:37 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedWriter/README: + * connectors/dds4ccm/tests/UnkeyedSamples/README: + Added test description + + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl: + Removed keys. + + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp: + Removed keys. Added qos_profile. + + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/USER_QOS_PROFILES.xml: + Started with configuring DDS in order to test the unkeyed + writer. + +Thu Nov 26 13:59:39 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + KeyedWriter is not fixed, yet. + +Thu Nov 26 13:48:39 UTC 2009 Johnny Willemsen + + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_Base.h: + Removed some methods or made them pure virtual, no need to let + them throw no_implement, the derived template does implement it + +Thu Nov 26 13:29:51 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Removed CLINFO from log message in order to consistent with other + log messages. + +Thu Nov 26 13:11:06 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Resolved runtime errors. + + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp: + Resolved test error: test took longer than 60 seconds. + +Thu Nov 26 12:56:39 UTC 2009 Johnny Willemsen + + * ciao/Containers/Session/Session_Container.h: + Removed not needed forward declaration + + * ciao/Servants/Servant_Impl_Base.cpp: + Keep a reference to the home servant so that it doesn't get deleted + when we have a reference to it + + * ciao/Servants/Servant_Impl_T.cpp: + Only print the refcount of the executor when it is > 1, than we have + a leak + +Thu Nov 26 12:54:39 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp: + Resolved some test errors when using write_many. + +Thu Nov 26 12:40:18 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Resolved test errors. Expected samples should always be in the + deployment plan. + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp: + Added expected samples. + + * connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml: + Resolved test error by adding qos_profile to the deployment plan. + +Thu Nov 26 12:18:07 UTC 2009 Marcel Smit + + + * connectors/dds4ccm/examples/Quoter/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/examples/Shapes/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/Get_Connection_Test/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/KeyedSamples/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/USER_QOS_PROFILES.xml: + Removed these files since the default qos is coded. + +Thu Nov 26 12:12:36 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp: + Resolved compiler warnings on linux. + +Thu Nov 26 11:43:12 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Get_Connection_Test/Receiver/Get_Connection_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/Get_Connection_Test/Sender/Get_Connection_Test_Sender_exec.cpp: + * connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp: + Also reported messages when things go as planned. + + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Resolved some compiler error. + +Thu Nov 26 11:37:12 UTC 2009 Johnny Willemsen + + * examples/Hello/descriptors_RTCCM/*: + Deleted, not used + + * examples/Hello/Sender/Sender_exec.cpp: + Return the correct string + + * examples/Hello/descriptors/DeploymentPlan.cdp: + Removed rate attribute + +Thu Nov 26 10:50:12 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp: + Give more feedback on the test itself + + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + Layout changes, create topic with profile, and fixed key_fields set/get methods + +Thu Nov 26 10:42:12 UTC 2009 Marcel Smit + + * examples/Hello/Receiver/Receiver.idl: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + Reverted some of my last changes. + Removed timer functionality. + + * examples/Hello/Sender/Sender.idl: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/descriptors/DeploymentPlan.cdp: + Removed log_time attribute. + + * examples/Hello/descriptors/run_test.pl: + No sleep necessary anymore. + +Thu Nov 26 10:19:55 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Changed logging on exit. Reporting an error only when received < expected. + +Thu Nov 26 09:28:25 UTC 2009 Marcel Smit + + * examples/Hello/Receiver/Receiver.idl: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + Reviced this example a bit. The receiver now uses the + orb reator thread to call the sender periodically. Therefore + the receiver is not blocked in the receiving CCM event method. + Also introduced a rate in the deployment plan; no hard coded + sleep of 200 seconds anymore. + + * examples/Hello/Sender/Sender.idl: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + Removed attribute Hertz since it was not used + + * examples/Hello/descriptors/DeploymentPlan.cdp: + Introduced rate for the receiver (see above). + + * examples/Hello/descriptors/run_test.pl: + Added a sleep of 60 seconds. + +Thu Nov 26 08:09:39 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Optimized logging for ConnectorStatusListener. + + * connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc: + Resolved fuzz warning (project names too long). + +Thu Nov 26 07:32:26 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl: + Since the connector is now cleaning up the DDS environment, shutting + down takes considerably longer. Therefore extended the shutdown times. + +Wed Nov 25 16:22:26 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h: + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp: + Using the orb reactor thread in order to handle application specific + logic. + + * connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp: + Optimized logging. + +Wed Nov 25 15:50:57 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Logged errors instead of warnings when received!=expected. + + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp: + Nothing is received when this deployment plan is ran. + +Wed Nov 25 15:40:59 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp: + Resolved minor typos. + +Wed Nov 25 15:30:14 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/KeyedSamples/README: + * connectors/dds4ccm/tests/SetConnectorAttributes/README: + Added test description. + +Wed Nov 25 15:15:43 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/Get_Connection_Test/README: + * connectors/dds4ccm/tests/NonChangeableAttribute/README: + Added test description. + +Wed Nov 25 14:26:21 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/Publisher.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.h + Implemented all with_profile methods + +Wed Nov 25 14:12:21 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/UnkeyedWriter: + * connectors/dds4ccm/tests/UnkeyedWriter/Base: + * connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc: + * connectors/dds4ccm/tests/UnkeyedWriter/Connector: + * connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc: + * connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.h: + * connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h: + * connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h: + * connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl: + Added an unkeyed writer test. + +Wed Nov 25 13:45:05 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + * connectors/dds4ccm/tests/SetConnectorAttributes: + * connectors/dds4ccm/tests/SetConnectorAttributes/Base: + * connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl: + * connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.h: + * connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl: + Added this test in order to test whether the connector attributes are set properly. + +Wed Nov 25 13:15:25 UTC 2009 Marcel Smit + + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + Resolved typo in setting key_fields. + +Wed Nov 25 13:05:24 UTC 2009 Johnny Willemsen + + * ciao/Containers/Servant_Activator.cpp: + Fix typo in debug statement + + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h: + Removed updater functionality + + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + Added missing \n to debug messages + + * tests/CIAO_ComponentServer/Activator/run_test.pl: + * tests/CIAO_ComponentServer/Basic/run_test.pl: + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl: + Shortened timeouts + + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + For x.7.5, don't wait for worker threads + + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h: + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp: + Some cleanup and destroy dds entities at ccm_remove + +Wed Nov 25 10:54:24 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp: + Resolved some errors. + + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + No need to wait 60 seconds. + + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Optimized logging. + +Wed Nov 25 09:39:17 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + Optimized logging. + +Wed Nov 25 09:37:22 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.h: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.cpp: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector_exec.h: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector_exec.cpp: + Renamed ConnectorStatusListener_TestSec_Connecto in order to resolve fuzz errors. + +Wed Nov 25 09:28:44 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp: + Some code outlining. + + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl: + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h: + * connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp: + Added connector status listener. + + * connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp: + Optimized logging. + +Wed Nov 25 09:21:31 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp: + layout change + + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + Added missing trace + + * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: + Fixed trace and layout change + + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + Don't use the qos because the conversions are not fully implemented + + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + Use default qos + +Wed Nov 25 08:47:31 UTC 2009 Johnny Willemsen + + * tests/Bug_2130_Regression/descriptors/run_test.pl: + * examples/Null_Component/descriptors/run_test.pl: + * examples/Hello/descriptors_RTCCM/rt_run_test.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: + * examples/Hello/descriptors/run_test_alias.pl: + * examples/Display/descriptors/run_test_without_ns.pl: + * examples/BasicSP/descriptors/run_test.pl: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + Use more realistic timeouts, this will shorten the test runs + a lot at the moment a test or example is broken + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.h + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.h + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h + Removed generated headers from these files + +Wed Nov 25 08:31:31 UTC 2009 Johnny Willemsen + + * examples/Hello/Receiver/Receiver_exec.cpp + * examples/Hello/Receiver/Receiver_exec.h + * examples/Hello/Sender/Sender_exec.cpp + * examples/Hello/Sender/Sender_exec.h + * examples/Null_Component/Null_Component_exec.cpp + * examples/Null_Component/Null_Component_exec.h + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h + * tests/Minimum/Receiver/Receiver_exec.cpp + * tests/Minimum/Receiver/Receiver_exec.h + * tests/Minimum/Sender/Sender_exec.cpp + * tests/inimum/Sender/Sender_exec.h + Removed generated headers from these files + +Wed Nov 25 08:19:31 UTC 2009 Marcel Smit + + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc: + Fixed order error on Windows. + +Wed Nov 25 07:52:16 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Added !FIXED_BUGS_ONLY to Get_Connection_Test since the updater + is not working, yet. + + * connectors/dds4ccm/tests/Get_Connection_Test/Sender/Get_Connection_Test_Sender_exec.cpp: + No need to write samples to activate the listener. + + * connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp: + * connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp: + * connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp: + Resolved compiler warnings. + +Tue Nov 24 19:34:00 UTC 2009 Johnny Willemsen + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Resolved a bug whereby connection endpoints in the original plan + would be copied into two separate connections in a child plan. + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Bugfix with connection logic. + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp: + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: + + Ported to new local interface support. + +Mon Dec 7 18:21:43 UTC 2009 William R. Otte + + * docs/schema/Basic_Deployment_Data.xsd: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/DnC_Dump.cpp: + * tools/Config_Handlers/PSPE_Handler.cpp: + + Config handler updates. + +Mon Dec 7 17:51:30 UTC 2009 William R. Otte + + * tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl: + * tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc: + * tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h: + * tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp: + * tests/CIAO_ComponentServer/Local_Facet/client.cpp: + * tests/CIAO_ComponentServer/Local_Facet/run_test.pl: + + Added simple test for local facet connection logic. + +Mon Dec 7 17:04:43 UTC 2009 William R. Otte + + * tests/CIAO_ComponentServer/Local_Facet: + + Moved local facet test under ComponentServer. + + * tests/IDL_Test/Local_Facet: + + Removed these files. + +Mon Dec 7 14:52:43 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + + Integration. + +Mon Dec 7 14:11:14 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Servants/Servant_Impl_Base.h: + + Container code. + +Sat Dec 5 05:33:43 UTC 2009 William R. Otte + + * DAnCE/Deployment/Deployment_DeploymentPlan.idl: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Infrastructure to connect local interfaces. + + * tests/IDL_Test/Local_Facet/Local_Facet.mpc: + + Enabled test. + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: diff --git a/modules/CIAO/ChangeLogs/ChangeLog-04a b/modules/CIAO/ChangeLogs/ChangeLog-04a new file mode 100644 index 00000000000..e344fe85bee --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-04a @@ -0,0 +1,5390 @@ +Fri Jul 30 18:29:54 2004 Ossama Othman + + * ciao/Servant_Impl_T.cpp (get_all_facets, get_all_consumers): + + Fixed another instance of incorrect emulated exception + parameters. The method definitions incorrectly used a default + valued parameters. + + Fixed unused parameter warnings. + +Fri Jul 30 17:29:18 2004 Ossama Othman + + * NEWS: Added CIAO 0.4.2 noteworthy items. + +Thu Jul 29 16:54:01 2004 Ossama Othman + + * DAnCE/ciao/Servant_Impl_T.cpp (get_all_facets): + (get_all_consumers): + + Fixed incorrect emulated exception parameters. The method + definitions incorrectly used a default valued parameters. + + Fixed unused parameter warnings. + +Thu Jul 29 16:47:56 2004 Ossama Othman + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl + (get_nodeapp_manager): + + Removed emulated exception parameter. The corresponding method + declaration in the header doesn't have such a parameter. Fixes + a compile-time problem. + +Thu Jul 29 14:28:55 2004 Ossama Othman + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + (createPackage, deletePackage, findPackageByName): + + Fixed emulated exception macro usage. Addresses compile-time + problems in MSVC++ 6 builds. + +Tue Jul 27 14:48:10 2004 Tao Lu + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + Removed the emulated exception parameter from the destructor + so the file will be compiled when the exception is turned off. + +Tue Jul 27 09:58:58 2004 Arvind S. Krishna + + * DAnCE/NodeApplication/NodeApplication.mpc: + Rearranged the order of libraries to fix link errors in static + configurations. + +Mon Jul 26 11:08:14 2004 Arvind S. Krishna + + * DAnCE/tests/Config_Handlers/handler_test.mpb: + Added CIAO_DnC_Client to resolve link errors + +Mon Jul 26 11:06:38 2004 Arvind S. Krishna + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl: + Added ACE_INLINE for the get_nodeapp_ref method to resolve + linking errors in the builds with static configurations + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + changed changed nade_app_manager to node_app_manager! + + * DAnCE/NodDaemon/NodeDaemon.mpc: + Resolved link errors + +Sun Jul 25 22:13:48 2004 Balachandran Natarajan + + * Release: + + Makefile with release information. + +Sun Jul 25 22:15:03 2004 Balachandran Natarajan + + * ChangeLog: + +Sat Jul 24 20:57:03 2004 Krishnakumar B + + * docs/releasenotes/dance.html: Updated the release notes for + DAnCE. + +Fri Jul 23 23:43:01 2004 Nanbor Wang + + I didn't get around to send the following to Venkita before he + left for vacation so I'm checking them in here. + + * tests/RTCCM/Priority_Test/README: + * tests/RTCCM/Priority_Test/descriptors/README: Documentation for + running the simple Priority tests applications. + +Tue Jul 20 16:03:14 2004 Krishnakumar B + + * docs/releasenotes/dance.html: Updated the release notes for + DAnCE. + +Tue Jul 20 12:37:50 2004 Gan Deng + + * docs/releasenotes/dance.html + + Added this file to describe what the current status is + about the DAnCE. + +Mon Jul 19 14:16:10 2004 Krishnakumar B + + * ciao/ServerActivator_Impl.cpp (init): Use the argument + spawn_delay to set the value of the delay in seconds that the + ServerActivator waits for the ComponentServer to come up. This + is needed when the ComponentServer is not able to come up before + the hardcoded value of 5 seconds passes by, which happens when + running the ComponentServer under Valgrind. + +Mon Jul 19 12:47:17 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + + Added ifr_client to Deployment_stub and Deployment_svnt. This + should fix VC6 build issues. + +Sun Jul 18 12:53:04 2004 Ossama Othman + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp (main): + + Fixed "better conversion sequence" warning by using component + reference ".in()" accessor. + +Thu Jul 15 21:52:12 2004 Johnnny Willemsen + + * DAnCE/NodeManager/NodeDaemon_Impl.h: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + Fixed incorrect doxygen file tag + +Wed Jul 14 10:40:41 2004 Ossama Othman + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + (init): + * DAnCE/NodeManager/NodeDaemon_Impl.cpp (preparePlan): + + Fixed "control reaches end of non-void function" warning. + + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + (ExecutionManager_Impl): + * DAnCE/ciao/NodeApplication_Impl.cpp: + + Corrected emulated exception macro usage. + + Fixed "unused parameter" warning. + +Wed Jul 14 08:46:24 2004 Balachandran Natarajan + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + + Fixed the MPC files that were busted. + +Tue Jul 13 09:49:50 2004 Venkita Subramonian + + * docs/releasenotes/index.html: Updated release notes with + information on static configurator and Nanbor's examples for + composition of RT applications using real-time extensions in + CIAO. + +Tue Jul 13 04:27:19 2004 Ossama Othman + + * performance-tests/Protocols/Controller/Controller.cpp: + + Removed unused variable. + +Mon Jul 12 11:06:54 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: Fixed a few URLs. Thanks to + Matthew Gillen for reporting this. + +Sun Jul 11 06:07:12 2004 Johnny Willemsen + + * tools/XML_Helpers/Assembly_Handlers.inl: + * tools/XML_Helpers/RTConfig_Handlers.inl: + * tools/XML_Helpers/Softpkg_Handlers.inl: + Fixed compile errors in Borland build, use full namespaces for the + baseclass + +Fri Jul 9 20:36:14 2004 Balachandran Natarajan + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl: + + Fixed a warning. + +Fri Jul 9 20:21:46 2004 Balachandran Natarajan + + * performance-tests/Protocols/Receiver/Receiver_svnt.h: + * performance-tests/Protocols/Receiver/Receiver_svnt.cpp: + * performance-tests/Protocols/Sender/Sender_svnt.h: + * performance-tests/Protocols/Sender/Sender_svnt.cpp: + + Removed them from the repo. + +Thu Jul 8 17:16:34 2004 Jaiganesh B + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/tests/Config_Handlers/handler_test.mpb: + + Made changes to not build these when exceptions=0 + +Thu Jul 8 16:59:26 2004 Jaiganesh B + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeDaemon_Impl.cpp: + + Fix build errors. + +Thu Jul 8 16:53:06 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Moved the call to populate_port_tables() from the + component servant constructor to the end of + the ciao_postactivate() method in the component servant, + but it is commented out for now until related issues + in DaNCe are resolved. + +Thu Jul 8 16:46:55 2004 Jaiganesh B + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/ciao/NodeApp_CB_Impl.cpp: + * DAnCE/ciao/NodeApp_CB_Impl.h: + + Fixing build errors. + +Thu Jul 8 16:30:48 2004 Jaiganesh B + + * DAnCE/ciao/NodeApplication_Impl.cpp: + + Made changes to fix emulated build errors. + +Wed Jul 7 21:52:24 2004 Balachandran Natarajan + + * docs/releasenotes/index.html: + + Revamped to provide a new look. Has updated information. The + notes are missing a link to dance.html which should have + information about DAnCE. Tao will take care of that. + +Wed Jul 7 15:04:37 2004 Venkita Subramonian + + * examples/OEP/BasicSP/descriptors/test.rtd: + * examples/OEP/BasicSP/descriptors/svcmap.dat: + * examples/OEP/BasicSP/descriptors/RTsvc.conf: + * examples/OEP/BasicSP/descriptors/BasicSP-rt.cad: + + Added these files to be used in RT version of BasicSP. + + * examples/OEP/BasicSP/NOTE.txt: + + Updated notes on how to run with RTComponentServer. + +Wed Jul 7 14:35:33 2004 Venkita Subramonian + + * docs/static_ciao_contents.html: + * docs/static_config_example.html: + * docs/static_config_rtexample.html: + + Updated documentation for CIAO Static configurator. + +Wed Jul 7 12:22:04 2004 Jaiganesh B + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/Repository_Manager.cpp: + * DAnCE/RepositoryManager/Update_Plan.cpp: + * DAnCE/RepositoryManager/Repository_Manager_conf.h: + + Addressed Ossama Othman's code review comments. + Thanks Ossama. + +Wed Jul 7 11:42:15 2004 Tao Lu + + * docs/TODO.html: + Some cosmetic changes. + +Wed Jul 7 10:42:19 2004 Tao Lu + + * docs/releasenotes/switch.html: + * docs/releasenotes/index.html: + + Updated the file to follow the directory change for DAnCE. + Updated the link to the TODO list. + +Wed Jul 7 09:53:56 2004 Balachandran Natarajan + + * docs/TODO.html: + + Overhauled the TODO completely keeping in mind the latest + thoughts and forces. + + * docs/todo.html: + + Removed this from th erepository. + +Tue Jul 6 18:05:35 2004 Balachandran Natarajan + + * CIAO-INSTALL.html: + + Did a massive update to this since it was woefully outdated. + +Tue Jul 6 14:34:16 2004 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Comment out the "dump plan" debugging statement, coz the current + "DnC_dump" class is somewhat broken under VC71. + + * DAnCE/ExecutionManager/ExecutionManager_Impl.h + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + + Fixed warnings due to lacking including header files. + + * DAnCE/ciao/CCM_Core.mpc + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc + * DAnCE/NodeApplication/NodeApplication.mpc + + Fixed a bunch of linking errors under VC71. + + Now everything build fine under Windows with VC71. + +Tue Jul 6 14:22:00 2004 Balachandran Natarajan + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + * CIDLC/CIDLC.mpc: + + All of them require exceptions to be available. Therefore added + requires += exceptions. + + * CCF/CCF/CodeGenerationKit/IndentationXML.hpp: + + Remove the comma at the end of the enum declaration. + + + All the above should fix compilation errors in Full_Reactors + builds. + +Tue Jul 6 10:17:06 2004 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Removed unnecessary comments. + +Tue Jul 6 10:15:11 2004 Tao Lu + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp (CIAO): + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp (destroyManager): + + Deleted some comments which has been addressed already. + +Mon Jul 5 08:39:06 2004 Balachandran Natarajan + + * tools/Segment_Timer/Segment_Timer.cpp: + * tools/static_configurator/Static_Assembly_Parser.cpp: + + Fixed warnings that were caused from converting strings to + non-const char *. + +Mon Jul 5 08:36:07 2004 Balachandran Natarajan + + * tests/temp/README: + * tests/temp/assembly/README: + * tests/temp/assembly/client.cpp: + * tests/temp/assembly/control.idl: + * tests/temp/assembly/control.mpc: + * tests/temp/assembly/run_test.pl: + * tests/temp/assembly/server.cpp: + + Completely removed them. They were not supposed to be shipped or + built. We have better test programs for those features now. + +Mon Jul 5 08:27:39 2004 Balachandran Natarajan + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + + Added requires += qt + + * examples/handcrafted/BasicSP_EC/EC/EC.mpc: + * examples/handcrafted/BasicSP_EC2/BasicSP.mpc: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc: + + They should not be compiled inour daily builds at all. They are + not for that. + + * tests/RTCCM/DiffServ/Controller/Controller.mpc: + * tests/RTCCM/DiffServ/Receiver/Receiver.mpc: + * tests/RTCCM/DiffServ/Sender/Sender.mpc: + + Change the library names. Else they clash with other things in + the build system. + +Sun Jul 4 22:13:37 2004 Balachandran Natarajan + + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h: + + Added ciao_preactivate () and ciao_postactivate () methods. + + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/Sender/Sender.mpc: + + Did the following + + (1) Changed the name of the shared object to Protocol_*_stub and + Protocol_*_svnt. This was needed since there are other examples + that have named the libraries as Sender_stub and + Receiver_stub. Since all of these libraries are written to + $ACE_ROOT/lib, one library overwrites the other and all hell + breaks loose. + + (2) The executor librares are not being compiled now. We have + used the requires += dummy to prevent them from compiling. The + executor code depends on a header file that hasn't been checked + in. I am informing the code author about this. Till the author + fixes the code, the executor code will not be compiled. + + * performance-tests/Protocols/Controller/Controller.mpc: + + They now link to Protocol_*_stubs. + + +Sun Jul 4 19:05:35 2004 Balachandran Natarajan + + * examples/handcrafted/BasicSP_EC/BasicSP.mpc: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC/EC/EC.mpc: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC2/EC/EC.mpc: + + Do not compile these. They wouldn't compile at all. These are + useful examples that are needed for EC integration. + +Sun Jul 4 18:59:09 2004 Balachandran Natarajan + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + + No need to register value factories explicitly. They are now + generated in the servant code. + +Sun Jul 4 18:40:10 2004 Balachandran Natarajan + + * performance-tests/Protocols/Receiver/ReceiverImpl.ccd + * performance-tests/Protocols/Receiver/Receiver_svnt.h + * performance-tests/Protocols/Sender/SenderImpl.ccd + * performance-tests/Protocols/Sender/Sender_svnt.h: + + Removed the generated code form the repository. + +Sun Jul 4 11:14:03 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + + Restructured things so that CIAO_DnC_Server doesn't need to be + linked with stub projects. + + * DAnCE/ciao/Container_Base.h: + + Added an include for the xport file. + +Sun Jul 4 10:17:52 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + + The deployment_stub should depend on the CIAO_DnC_Server. This + would need some restructuring. I will do this shortly. + +Sun Jul 4 09:07:20 2004 Balachandran Natarajan + + * CIAO.mwc: + + Added DAnCE and removed DnC + + * DAnCE/RepositoryManager/Repository_Manager.cpp: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Fixed warnings in our daily builds. + + * DAnCE/NodeManager/NodeDaemon.mpc: + + Use CIAO_DnC_Server instead of CIAO_Server. + + * DAnCE/ciao/CCM_Core.mpc: + + Removed unneeded dependancies. + +Sat Jul 3 10:03:22 2004 Tao Lu + + * DAnCE/ciao/Deployment_Base.idl: + * DAnCE/ciao/Deployment_Data.idl: + * DAnCE/ciao/Deployment.idl: + The original Deployment.idl is splited into the above 3 files to + get rid of the VC warning. + + * DAnCE/ciao/Deployment_Ex.idl: + This file is removed due to the bad name. + + * DAnCE/ciao/CCM_Core.idl: + The MPC file is changed to follow the above changes. + +Thu Jul 1 16:27:07 2004 Jaiganesh B + + * CIAOTAO.mwc: + * DAnCE/tests/Config_Handlers/handler_test.mpb: + + Updated mpc to build the new DAnCE directory. + +Thu Jul 1 16:19:21 2004 Jaiganesh B + + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/tests/Config_Handlers/handler_test.mpb: + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl: + + Updated the files to include the right header files. + +Thu Jul 1 16:01:12 2004 Jaiganesh B + + * DADAnCE/Deployment.xsd + * DAnCE/Deployment.mwc: + * DAnCE/Deployment.xsd.orig: + * DAnCE/XMI.xsd: + * DAnCE/XMI.xsd.orig: + * DAnCE/Config_Handlers/Any_Handler.cpp: + * DAnCE/Config_Handlers/Any_Handler.h: + * DAnCE/Config_Handlers/Basic_Handler.cpp: + * DAnCE/Config_Handlers/Basic_Handler.h: + * DAnCE/Config_Handlers/CAD_Handler.cpp: + * DAnCE/Config_Handlers/CAD_Handler.h: + * DAnCE/Config_Handlers/CEPE_Handler.h + * DAnCE/Config_Handlers/CEPE_Handler.cpp: + * DAnCE/Config_Handlers/CPK_Handler.cpp: + * DAnCE/Config_Handlers/CPK_Handler.h: + * DAnCE/Config_Handlers/CPR_Handler.cpp: + * DAnCE/Config_Handlers/CPR_Handler.h: + * DAnCE/Config_Handlers/Cap_Handler.cpp: + * DAnCE/Config_Handlers/Cap_Handler.h: + * DAnCE/Config_Handlers/CompImplDesc_Handler.cpp: + * DAnCE/Config_Handlers/CompImplDesc_Handler.h: + * DAnCE/Config_Handlers/CompIntrDesc_Handler.cpp: + * DAnCE/Config_Handlers/CompIntrDesc_Handler.h: + * DAnCE/Config_Handlers/CompPkgDesc_Handler.cpp: + * DAnCE/Config_Handlers/CompPkgDesc_Handler.h: + * DAnCE/Config_Handlers/Config_Error_Handler.cpp: + * DAnCE/Config_Handlers/Config_Error_Handler.h: + * DAnCE/Config_Handlers/Config_Handler_export.h: + * DAnCE/Config_Handlers/Config_Handlers.mpc: + * DAnCE/Config_Handlers/DT_Handler.cpp: + * DAnCE/Config_Handlers/DT_Handler.h: + * DAnCE/Config_Handlers/Deployment.h: + * DAnCE/Config_Handlers/DnC_Dump.cpp: + * DAnCE/Config_Handlers/DnC_Dump.h: + + Checked in all the XML handlers needed by DAnCE. + +Thu Jul 1 15:54:15 2004 Jaiganesh B + + * DAnCE/Config_Handlers/Domain_Handler.cpp: + * DAnCE/Config_Handlers/Domain_Handler.h: + * DAnCE/Config_Handlers/ERE_Handler.cpp: + * DAnCE/Config_Handlers/ERE_Handler.h: + * DDAnCE/Config_Handlers/IAD_Handler.h + * DAnCE/Config_Handlers/IAD_Handler.cpp: + * DAnCE/Config_Handlers/ID_Handler.cpp: + * DAnCE/Config_Handlers/ID_Handler.h: + * DAnCE/Config_Handlers/IR_Handler.cpp: + * DAnCE/Config_Handlers/IR_Handler.h: + * DAnCE/Config_Handlers/MID_Handler.cpp: + * DAnCE/Config_Handlers/MID_Handler.h: + * DAnCE/Config_Handlers/NIA_Handler.cpp: + * DAnCE/Config_Handlers/NIA_Handler.h: + * DAnCE/Config_Handlers/PCI_Handler.cpp: + * DAnCE/Config_Handlers/PCI_Handler.h: + * DAnCE/Config_Handlers/PC_Handler.cpp: + * DAnCE/Config_Handlers/PC_Handler.h: + * DAnCE/Config_Handlers/Plan_Handler.cpp: + * DAnCE/Config_Handlers/Plan_Handler.h: + * DAnCE/Config_Handlers/Process_Element.cpp: + * DAnCE/Config_Handlers/Process_Element.h: + * DAnCE/Config_Handlers/Process_Element_T.cpp: + * DAnCE/Config_Handlers/Process_Element_T.h: + * DAnCE/Config_Handlers/Property_Handler.cpp: + * DAnCE/Config_Handlers/Property_Handler.h: + * DAnCE/Config_Handlers/RS_Handler.cpp: + * DAnCE/Config_Handlers/RS_Handler.h: + * DAnCE/Config_Handlers/RUK_Handler.cpp: + * DAnCE/Config_Handlers/RUK_Handler.h: + * DAnCE/Config_Handlers/Requirement_Handler.cpp: + * DAnCE/Config_Handlers/Requirement_Handler.h: + * DAnCE/Config_Handlers/SPK_Handler.cpp: + * DAnCE/Config_Handlers/SPK_Handler.h: + * DAnCE/Config_Handlers/SP_Handler.cpp: + * DAnCE/Config_Handlers/SP_Handler.h: + * DAnCE/Config_Handlers/TPD_Handler.cpp: + * DAnCE/Config_Handlers/TPD_Handler.h: + * DAnCE/Config_Handlers/Utils.cpp: + * DAnCE/Config_Handlers/Utils.h: + * DAnCE/Config_Handlers/XercesString.cpp: + * DAnCE/Config_Handlers/XercesString.h: + + First cut check-in for XML handlers. + + + +Thu Jul 1 15:51:14 2004 Jaiganesh B + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + * DAnCE/DomainApplicationManager/Deployment_Configuration.inl: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl: + * DAnCE/ExecutionManager/ExecutionManager.idl: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.inl: + * DAnCE/ExecutionManager/ExecutionManager_stub_export.h: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Checking in the DomainApplicationManager and ExecutionManager + interfaces. + +Thu Jul 1 15:47:45 2004 Jaiganesh B + + * DAnCE/NodeApplication/NodeApplication.cpp: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/CIAO_NAM_Export.h: + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + * DAnCE/NodeApplicationManager/ImplementationInfo.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl: + * DAnCE/NodeManager/NodeDaemon.idl: + * DAnCE/NodeManager/NodeDaemon.mpc: + * DAnCE/NodeManager/NodeDaemon_Impl.cpp: + * DAnCE/NodeManager/NodeDaemon_Impl.h: + * DAnCE/NodeManager/NodeDaemon_Impl.inl: + * DAnCE/NodeManager/NodeDaemon_stub_export.h: + * DAnCE/NodeManager/Node_Daemon.cpp: + + Checked in the NodeApplication, NodeApplicationManager + and NodeManager code. + +Thu Jul 1 15:45:48 2004 Jaiganesh B + + * DAnCE/RepositoryManager/RepositoryManager.idl: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/Repository_Manager.cpp: + * DAnCE/RepositoryManager/Update_Plan.cpp: + * DAnCE/RepositoryManager/Update_Plan.h: + + Moved the RepositoryManager directory here. + +Thu Jul 1 15:40:06 2004 Jaiganesh B + + * DAnCE/ciao/CCM_Base.idl: + * DAnCE/ciao/CCM_Component.idl: + * DAnCE/ciao/CCM_Container.idl: + * DAnCE/ciao/CCM_Container_Ex.idl: + * DAnCE/ciao/CCM_Core.mpc: + * DAnCE/ciao/CCM_Event.idl: + * DAnCE/ciao/CCM_Transaction.idl: + * DAnCE/ciao/CIAO_Client_Export.h: + * DAnCE/ciao/CIAO_Container_Export.h: + * DAnCE/ciao/CIAO_Server_Export.h: + * DAnCE/ciao/CIAO_Value.idl: + * DAnCE/ciao/CIAO_common.h: + * DAnCE/ciao/Client_init.cpp: + * DAnCE/ciao/Client_init.h: + * DAnCE/ciao/Components.idl: + * DAnCE/ciao/ComponentsC.h: + * DAnCE/ciao/ComponentsS.h: + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Container_Base.inl: + * DAnCE/ciao/Container_Base.pidl: + * DAnCE/ciao/Cookies.cpp: + * DAnCE/ciao/Cookies.h: + * DAnCE/ciao/Cookies.inl: + * DAnCE/ciao/CosPersistentState.idl: + * DAnCE/ciao/Deployment.idl: + * DAnCE/ciao/Deployment_Core.idl: + * DAnCE/ciao/Deployment_stub_export.h: + * DAnCE/ciao/Deployment_svnt_export.h: + * DAnCE/ciao/NodeApp_CB_Impl.cpp: + * DAnCE/ciao/NodeApp_CB_Impl.h: + * DAnCE/ciao/NodeApplication_CallBack.idl: + * DAnCE/ciao/NodeApplication_Impl.cpp: + * DAnCE/ciao/NodeApplication_Impl.h: + * DAnCE/ciao/NodeApplication_Impl.inl: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + * DAnCE/ciao/Server_init.cpp: + * DAnCE/ciao/Server_init.h: + * DAnCE/ciao/Version.h: + + Moving DnC/ciao over here. + +Thu Jul 1 15:37:33 2004 Jaiganesh B + + * DAnCE/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Domain_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.h: + * DAnCE/tests/Config_Handlers/Handler_Test.i: + * DAnCE/tests/Config_Handlers/Handler_Tests.mpc: + * DAnCE/tests/Config_Handlers/IAD_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/PC_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Plan_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/handler_test.mpb: + + Checking in the tests for the XML handlers. + +Thu Jul 1 15:29:57 2004 Jaiganesh B + + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe.ccd: + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe.cid: + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe.cpd: + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Exec.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Stub.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Deployment.xsd: + * DAnCE/tests/Config_Handlers/HUDisplay/Domain.cdd: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS.ccd: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS.cid: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS.cpd: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Exec.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Stub.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.cdp: + * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.cid: + * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.cpd: + * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.pcd: + * DAnCE/tests/Config_Handlers/HUDisplay/Libraries.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay.ccd: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay.cid: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay.cpd: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Exec.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Stub.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer.ccd: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer.cid: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer.cpd: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Exec.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Stub.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/XMI.xsd: + * DAnCE/tests/Config_Handlers/HUDisplay/package.tpd: + + Checking in the HUDisplay deployment descriptors. + +Thu Jul 1 15:26:54 2004 Jaiganesh B + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * DAnCE/tests/NodeApplicationTest/README: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h: + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl: + * DAnCE/tests/scripts/BasicSP/basicsp.dat: + + First cut checkins for new DAnCE directory. + +Thu Jul 1 14:46:24 2004 Jaiganesh B + + * DnC/Config_Handlers/Plan_Handler.cpp: + + Removed includes to Process_Basic_Type.h. + +Thu Jul 1 13:20:08 2004 Jaiganesh B + + * DnC/Config_Handlers/Plan_Handler.cpp: + + Removed includes to Process_Basic_Type.h + +Thu Jul 1 12:16:41 2004 Arvind S. Krishna + + * DnC/ExecutionManager/Execution_Manager.cpp: + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + * DnC/NodeManager/Node_Daemon.cpp: + * DnC/NodeManager/NodeDaemon_Impl.h: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + + Addressed comments left by Ossama after his code review. + +Thu Jul 1 12:02:05 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CPR_Handler.cpp: + * DnC/Config_Handlers/Cap_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/CompIntrDesc_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/Config_Handlers.mpc: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/IAD_Handler.cpp: + * DnC/Config_Handlers/IR_Handler.cpp: + * DnC/Config_Handlers/NIA_Handler.cpp: + * DnC/Config_Handlers/PCI_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Process_Basic_Type.h: + * DnC/Config_Handlers/Process_Basic_Type.i: + * DnC/Config_Handlers/Process_Element_T.cpp: + * DnC/Config_Handlers/TPD_Handler.cpp: + * DnC/Config_Handlers/Utils.cpp: + * DnC/Config_Handlers/Utils.h: + * DnC/Config_Handlers/Process_Basic_Type.h: + * DnC/Config_Handlers/Process_Basic_Type.i: + + Moved the code in Process_Basic_Type.h and + Process_Basic_Type.i to Utils.h and Utils.cpp, + as all the utility functions are defined + in that file. + +Thu Jul 1 11:37:14 2004 Tao Lu + + * docs/todo.html: + Added two bullets in the Todo list. + +Thu Jul 1 11:06:42 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element_T.cpp: + * DnC/Config_Handlers/Process_Element_T.h: + + Added the files to follow ACE coding standards. + + * DnC/Config_Handlers/Process_Element.tpp: + * DnC/Config_Handlers/Process_Element.i: + + Removed these files, as they were not following the + ACE standards. + + The code in the above files have been moved to + Process_Element_T.cpp and Process_Element_T.h. + +Thu Jul 1 10:56:28 2004 Tao Lu + + * docs/releasenotes/index.html: + * docs/todo.html: + + Updated the todo list. + +Wed Jun 30 22:29:51 2004 Tao Lu + + * docs/releasenotes/switch.html: + * docs/releasenotes/index.html: + Updated the release note. I will work on the to-do list + as well. + +Wed Jun 30 18:01:58 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed another bug in the receptacle code generation. Thanks to + Gary Duzan for reporting the problem . + +Wed Jun 30 17:16:53 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.tpp: + + Added code to catch DOM exceptions. + +Wed Jun 30 17:00:10 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Added code to catch parser exceptions for + incorrect URls + +Wed Jun 30 13:32:08 2004 Tao Lu + + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + + Removed "after += CIAO_DnC_Container" from the stub project. + +Wed Jun 30 13:14:50 2004 Tao Lu + + * DnC/ciao/CCM_Core.mpc: + + Added -St to Deployment_stub probject to reduce the size of + generated code. + +Wed Jun 30 10:59:55 2004 Balachandran Natarajan + + * CIAO.mwc: + * CIAOTAO.mwc: + + Added the new DnC directories. + + * DnC/ciao/CCM_Core.mpc: + + Changed the name of the libraries generated. We should not + overwrite the original ones. + + * DnC/Config_Handlers/Config_Handlers.mpc: + * DnC/DomainApplicationManager/DomainApplicationManager.mpc: + * DnC/ExecutionManager/ExecutionManager.mpc: + * DnC/NodeApplication/NodeApplication.mpc: + * DnC/NodeApplicationManager/NodeApplicationManager.mpc: + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/RepositoryManager/RepositoryManager.mpc: + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + + Use the new libraries. + +Wed Jun 30 09:26:42 2004 Jeff Parsons + + * examples/Hello/Sender/starter.cpp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.h: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/OEP/BasicSP/EC/controller.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/OEP/Display/RateGen/RateGen_exec.cpp: + * examples/OEP/Display/RateGen/controller.cpp: + + Changes to eliminate build warnings (mostly assignments of + const char* to char*) and cosmetic changes. + +Wed Jun 30 08:37:15 2004 Jeff Parsons + + * examples/Hello/Receiver/Receiver_exec.cpp: + + In Receiver_exec_i::ccm_activate(), changed the construction of + the argv argument passed to ORB_init() to eliminate a const + char* to char* conversion warning. + +Tue Jun 29 15:34:00 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + We were not setting the sequence length when we were iterating + over the sequence of connections for a "uses multiple" + case. Thanks Ed Mulholland for reporting this. + +Tue Jun 29 01:40:25 2004 Tao Lu + + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/NodeApplicationManager/ImplementationInfo.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DnC/ciao/Container_Base.cpp: + * DnC/ciao/NodeApplication_Impl.cpp: + * DnC/ciao/NodeApplication_Impl.h: + * DnC/ciao/NodeApplication_Impl.inl: + + Fixed some of Ossama's comments, added exception catching clauses + in NodeApplication. + +Tue Jun 29 06:18:12 UTC 2004 Johnny Willemsen + + * performance-tests/Protocols/Controller/Controller.mpc: + Changed project name to avoid duplicate project names + +Mon Jun 28 11:58:01 2004 Jaiganesh B + + * DnC/tests/RobotAssembly/RobotAssembly.mpc: + * DnC/tests/RobotAssembly/RobotAssembly.mwc: + * DnC/tests/RobotAssembly/RobotAssembly_stub_export.h: + * DnC/tests/RobotAssembly/RobotAssembly_svnt_export.h: + * DnC/tests/RobotAssembly/Robot_Base.idl: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface.cidl: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface.idl: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface.mpc: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_exec.cpp: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_exec.h: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_exec_export.h: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_stub_export.h: + * + DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_svnt_export.h: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions.cidl: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions.idl: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions.mpc: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_exec.cpp: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_exec.h: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_exec_export.h: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_stub_export.h: + * + DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_svnt_export.h: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager.cidl: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager.idl: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager.mpc: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_exec.cpp: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_exec.h: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_exec_export.h: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_stub_export.h: + * + DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_svnt_export.h: + * DnC/tests/RobotAssembly/RobotManager/RobotManager.cidl: + * DnC/tests/RobotAssembly/RobotManager/RobotManager.idl: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager.cidl: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager.idl: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager.mpc: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_exec.cpp: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_exec.h: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_exec_export.h: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_stub_export.h: + * + DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_svnt_export.h: + * DnC/tests/RobotAssembly/RobotManager/RobotManager_svnt_export.h: + * DnC/tests/RobotAssembly/RobotManager/RobotManager_stub_export.h: + * DnC/tests/RobotAssembly/RobotManager/RobotManager_exec_export.h: + * DnC/tests/RobotAssembly/RobotManager/RobotManager.mpc: + * DnC/tests/RobotAssembly/RobotManager/RobotManager_exec.cpp: + * DnC/tests/RobotAssembly/RobotManager/RobotManager_exec.h: + + RobotAssembly example deployment scenario files. + +Mon Jun 28 11:33:00 2004 Emre Turkay + + * DnC/Deployment.mwc: + + DnC tests projects reincluded to the compilation. + + * DnC/tests/Config_Handlers/handler_test.mpb: + + Added after statement to ensure Config_Handlers is compiled before + compiling handler_tests. + +Mon Jun 28 11:18:00 2004 Emre Turkay + + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/DnC_Dump.h: + + Fixed the VC6 errors by excluding the DnC dump functionality on the + compilers ACE_HAS_BROKEN_NESTED_TEMPLATES. + +Mon Jun 28 10:44:00 2004 Emre Turkay + + * DnC/tests/Config_Handlers/Handler_Test.cpp: + * DnC/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp: + * DnC/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp: + * DnC/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp: + * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp: + * DnC/tests/Config_Handlers/Handler_Test.h: + * DnC/tests/Config_Handlers/IAD_Handler_Test.cpp: + * DnC/tests/Config_Handlers/PC_Handler_Test.cpp: + * DnC/tests/Config_Handlers/Plan_Handler_Test.cpp: + * DnC/tests/Config_Handlers/handler_test.mpb: + + Fixed the VC6 errors by excluding the DnC tests on the + compilers ACE_HAS_BROKEN_NESTED_TEMPLATES. + +Mon Jun 28 10:40:00 2004 Emre Turkay + + * DnC/tests/Config_Handlers/RobotAssembly/README.html: + + Deleted "file://" from -p & -d options of executor. + +Mon Jun 28 08:03:25 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed a bug with code generation for uses multiple. Thanks to Ed + Mulholland for reporting the problem. + +Mon Jun 28 00:18:04 2004 Irfan Pyarali + + * CIAO/performance-tests/Protocols: + + Added new test. Closely mirrors + $TAO_ROOT/performance-tests/Protocols but uses CCM components + rather that TAO applications. + +Sun Jun 27 12:59:04 2004 Jaiganesh B + + * DnC/tests/scripts/BasicSP/basicNodeDaemon.pl: + * DnC/tests/scripts/BasicSP/basicsp.dat: + * DnC/tests/scripts/RobotAssembly/robotNodeDaemon.pl: + * DnC/tests/scripts/RobotAssembly/robotassembly.dat: + + Added the scripts directory to help in the integrated + testing. + +Sun Jun 27 12:50:12 2004 Jaiganesh B + + * DnC/tests/Config_Handlers/HUDisplay/Deployment.xsd: + * DnC/tests/Config_Handlers/HUDisplay/XMI.xsd: + + Checked in the schema files into the repository to assist + unit and integration testing. + +Sun Jun 27 12:20:23 2004 Jaiganesh B + + * DnC/tests/Config_Handlers/RobotAssembly/DeploymentPlan.cdp: + + Updated the plan descriptor to use just two nodes rather + than five. + +Sun Jun 27 11:56:55 2004 Balachandran Natarajan + + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + + Fixed compile errors in our daily builds. + +Fri Jun 25 23:59:00 2004 Gan Deng + + * Process_Element.cpp + * Process_Element.h + * Process_Element.i + * Process_Element.tpp + + Re-organize the code to avoid sutble potential problems. + Bala made above changes on my machine. + +Fri Jun 25 17:35:00 2004 Emre Turkay + + * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp: + + Fixed compilation problems with VC6. Varibles defined in for loop + remain persistant out of scope of the for loop. + +Fri Jun 25 10:51:26 2004 Balachandran Natarajan + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed compilation problems with VC6. To put it short VC6 just + cannot handle templates properly. Thanks to gan Deng for reporting + the problem. + +Thu Jun 24 17:25:36 2004 Jaiganesh B + + * DnC/ciao/NodeApplication_Impl.cpp: + + Added ACE_TRY clock to the code. + +Thu Jun 24 17:13:20 2004 Balachandran Natarajan + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Reverted changes to + + "Fri Jun 4 18:16:47 2004 Jeff Parsons + " to get things going on VC6 builds. + + Added changes to ensure that there is a gap between "<" brackets + for templates and the scoping operator "::" Thanks to Ed + Mulholland for reporting the problem. + + * DnC/ciao/Servant_Impl_T.cpp: + * DnC/ciao/Servant_Impl_T.h: + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_T.h: + + Do not use traits as template parameters. VC6 cannot just handle + all this. Thanks to Theckla Louchios + for reporting the problem. + +Thu Jun 24 16:40:53 2004 Tao Lu + + * DnC/RepositoryManager/RepositoryManager.mpc: + * DnC/RepositoryManager/Repository_Manager.cpp: + Some more changes for VC6. + +Thu Jun 24 15:34:53 2004 Tao Lu + + * CIAOTAO.mwc + Reversed the change to avoid trouble for people who don't use + the new DnC framework. + +Thu Jun 24 15:17:45 2004 Balachandran Natarajan + + * DnC/Config_Handlers/Config_Handlers.mpc + * DnC/Config_Handlers/DnC_Dump.cpp + * DnC/Config_Handlers/DnC_Dump.h + * DnC/Config_Handlers/Process_Element.tpp + * DnC/Config_Handlers/Utils.cpp + * DnC/Config_Handlers/XercesString.cpp + * DnC/DomainApplicationManager/DomainApplicationManager.mpc + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DnC/ExecutionManager/ExecutionManager.mpc + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DnC/NodeManager/NodeDaemon.mpc + + Checked in some changes to make DnC compile under VC6. + +Thu Jun 24 14:49:44 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Commented out the dump functions. + +Thu Jun 24 08:10:09 2004 Balachandran Natarajan + + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + + Added requires += dnc to the projects. + +Wed Jun 23 16:52:50 2004 Emre Turkay + + * DnC/tests/Config_Handlers/RobotAssembly/README.html: + + Fixed links. + +Wed Jun 23 16:19:25 2004 Emre Turkay + + * DnC/tests/Config_Handlers/RobotAssembly/README.html: + + Committed the README file which desribes how to compile/run the + RobotAssembly example. + +Wed Jun 23 15:33:06 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager.mpc + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.inl + + Added "debug level" controlled debugging statements. + Addressed Ossama's comments. Thanks Ossama! + +Wed Jun 23 13:52:06 2004 Jaiganesh B + + * DnC/tests/Config_Handlers/RobotAssembly/ACE.iad: + * DnC/tests/Config_Handlers/RobotAssembly/CIAO.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/DefaultConfiguration.pcd: + * DnC/tests/Config_Handlers/RobotAssembly/Deployment.xsd: + * DnC/tests/Config_Handlers/RobotAssembly/DeploymentPlan.cdp: + * + DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface.ccd: + * + DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface.cid: + * + DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface.cpd: + * + DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface_exec.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface_stub.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface_svnt.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions.ccd: + * + DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions.cid: + * + DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions.cpd: + * + DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions_exec.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions_stub.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions_svnt.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager.ccd: + * + DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager.cid: + * + DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager.cpd: + * + DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager_exec.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager_stub.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager_svnt.iad: + * DnC/tests/Config_Handlers/RobotAssembly/RobotAssembly.cid: + * DnC/tests/Config_Handlers/RobotAssembly/RobotAssembly.cpd: + * DnC/tests/Config_Handlers/RobotAssembly/RobotManager.ccd: + * DnC/tests/Config_Handlers/RobotAssembly/RobotManager.cid: + * DnC/tests/Config_Handlers/RobotAssembly/RobotManager.cpd: + * DnC/tests/Config_Handlers/RobotAssembly/RobotManager_exec.iad: + * DnC/tests/Config_Handlers/RobotAssembly/RobotManager_stub.iad: + * DnC/tests/Config_Handlers/RobotAssembly/RobotManager_svnt.iad: + * DnC/tests/Config_Handlers/RobotAssembly/TAO.iad: + * DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager.ccd: + * DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager.cid: + * DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager.cpd: + * + DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager_exec.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager_stub.iad: + * + DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager_svnt.iad: + * DnC/tests/Config_Handlers/RobotAssembly/XMI.xsd: + * DnC/tests/Config_Handlers/RobotAssembly/package.tpd: + + Added the robot assembly example descriptors. + +Wed Jun 23 13:44:37 2004 Arvind S. Krishna + + * DnC/Config_Handlers/ExecutionManager/ExecutionManager_Impl.cpp: + + Fixed a compilation error. + +Wed Jun 23 13:24:23 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.cpp: + * DnC/Config_Handlers/Process_Element.h: + + Added missing includes to fix compilation errors. + +Wed Jun 23 13:07:13 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes to fix memory leaks. + +Wed Jun 23 13:05:04 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes to fix some memory leaks. + +Wed Jun 23 12:31:14 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes to allow "read local URL" work in + Windows machines as well. + +Wed Jun 23 11:48:10 2004 Emre Turkay + + * DnC/Config_Handlers/Process_Element.h: + * DnC/Config_Handlers/Process_Element.i: + * DnC/Config_Handlers/Process_Element.tpp: + + The functions and classes are placed in the deployment namespace. + +Wed Jun 23 03:14:16 2004 Ossama Othman + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.inl: + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/NodeApplicationManager/ImplementationInfo.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/NodeDaemon_Impl.h: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/Repository_Manager.cpp: + * DnC/RepositoryManager/Update_Plan.cpp: + * DnC/ciao/Container_Base.cpp: + * DnC/ciao/Container_Base.h: + * DnC/ciao/Cookies.cpp: + * DnC/ciao/Deployment_Core.idl: + * DnC/ciao/NodeApp_CB_Impl.cpp: + * DnC/ciao/NodeApp_CB_Impl.h: + * DnC/ciao/NodeApplication_Impl.cpp: + * DnC/ciao/NodeApplication_Impl.h: + * DnC/ciao/NodeApplication_Impl.inl: + * DnC/ciao/Servant_Impl_Base.cpp: + * DnC/ciao/Servant_Impl_T.cpp: + + Performed a code review and left comments for DnC developers. + +Tue Jun 22 18:05:19 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Added comment about the requirement of boost 1.30.2 in order + to build CCF/CIDLC on Windows. + Thanks to Valery for catching this. + +Tue Jun 22 10:38:58 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Added a missing _duplicate () in the connect_emittype () calls. + +Mon Jun 21 17:46:32 2004 Jaiganesh B + + * DnC/RepositoryManager/Update_Plan.cpp: + + Made changes to fix a run-time error. + +Fri Jun 18 16:40:14 2004 Emre Turkay + + * examples/OEP/BasicSP/README.html: + + ".exe" extensions are deleted, because they are not exist in + linux + +Fri Jun 18 16:18:42 2004 Jaiganesh B + + * DnC/RepositoryManager/Update_Plan.cpp: + + Added comments in the code to assist code review. + +Fri Jun 18 15:49:17 2004 Balachandran Natarajan + + * CCF/Documentation/Build.html: + + Cleaned links up a bit. + +Fri Jun 18 14:39:39 2004 Emre Turkay + + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + + CIAO_Container is added as an "after" dependency for the + NodeAppTest_RoundTrip_stub. + +Fri Jun 18 14:14:12 2004 Emre Turkay + + * examples/OEP/BasicSP/README.html: + + Moved the file from Display directory to BasicSP directory. + +Fri Jun 18 14:05:27 2004 Emre Turkay + + * examples/OEP/Display/README.html: + + The file describing how to build and run the example according to + the new DnC spec is added. + +Fri Jun 18 13:34:16 2004 Gan Deng + + * DomainApplicationManager/DomainApplicationManager.mpc + * ExecutionManager/ExecutionManager.mpc + * NodeManager/NodeDaemon.mpc + * RepositoryManager/Repository_Manager.cpp + + Fixed linking problems in Windows. Added debug/test + capabilities by remotely shutdown ExecutionManager. + +Fri Jun 18 11:59:56 2004 Tao Lu + + * docs/tutorial/Hello/hello_exec.cpp: + * docs/tutorial/Hello/hello_exec.h: + Updated these files to follow up the changes in CIDLC. + +Fri Jun 18 11:56:09 2004 Jaiganesh B + + * DnC/RepositoryManager/Update_Plan.cpp: + * DnC/RepositoryManager/Update_Plan.h: + + Helper files to update the deployment plan from the package + configuration IDL data structure. + + Made changes to follow DOC group standard of never a function + more than a page. + +Fri Jun 18 09:36:13 2004 Balachandran Natarajan + + * CCF/Documentation/Build.html: + + Updated the file with a link to Win32 zip files for the Utility + library. + +Thu Jun 17 16:59:21 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager.mpc: + * DnC/RepositoryManager/Repository_Manager.cpp: + * DnC/RepositoryManager/Update_Plan.cpp: + * DnC/RepositoryManager/Update_Plan.h: + + Moved all the plan handler helper functions to a new + file Update_Plan.cpp. + +Thu Jun 17 16:02:16 2004 Tao Lu + + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + Added one in. () to the debug call. + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DnC/NodeApplicationManager/ImplementationInfo.cpp + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DnC/RepositoryManager/Repository_Manager.cpp + * DnC/ciao/Deployment_Core.idl + * DnC/ciao/NodeApplication_Impl.cpp + * DnC/ciao/NodeApplication_Impl.h + Added the support for ComponentIOR. Also adjusted the start + process which is essential to BasicSP. + +Thu Jun 17 16:00:01 2004 Jaiganesh B + + * DnC/tests/Config_Handlers/HUDisplay/Airframe.cid: + * DnC/tests/Config_Handlers/HUDisplay/Airframe_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/Airframe_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/GPS.cid: + * DnC/tests/Config_Handlers/HUDisplay/GPS_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/GPS_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cdp: + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cid: + * DnC/tests/Config_Handlers/HUDisplay/Libraries.iad: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.cid: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/Timer.cid: + * DnC/tests/Config_Handlers/HUDisplay/Timer_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/Timer_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad: + + Updated the BasicSP scenario example descriptors. + +Thu Jun 17 13:24:01 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Added some comments onto the code. + +Wed Jun 16 17:12:21 2004 Gan Deng + + * DnC/ExecutionManager/ExecutionManager.mpc + * DnC/NodeManager/NodeDaemon.mpc + * DnC/RepositoryManager/RepositoryManager.mpc + + Fixed export library problems in Windows. Added necessary build + dependency settings. + +Wed Jun 16 16:33:13 2004 Arvind S. Krishna + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Updated mpc file to link to the ExecutionManager and NodeDaemon + stubs as operations on these entities are used within the + executor. + + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/NodeManager/NodeDaemon_stub_export.h: + * DnC/NodeManager/Node_Daemon.cpp: + + Added stub macros to generate stub libraries + + * DnC/ExecutionManager/ExecutionManager.mpc: + * DnC/ExecutionManager/ExecutionManager_stub_export.h: + + Stub exports for ExecutionManager. + +Wed Jun 16 15:18:21 2004 Gan Deng + + * DnC/RepositoryManager/RepositoryManager.mpc: + + Fixed linking errors by adding NodeManager and ExecutionManager + stub code into the project settings. + +Wed Jun 16 12:48:11 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes to use ACE_Hash_Map instead of std::map. + +Wed Jun 16 12:02:12 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made substantial changes to populate the DeploymentPlan + IDL data structure from the PackageConfiguration data + structure. + + This change enables the DnC framework to have a much shorter + version of the DeploymentPlan XML descriptor, as we can get + the needed information from the PackageConfiguration IDL + data structure and not from the XML descriptors itself. + +Wed Jun 16 11:24:13 2004 Emre Turkay + * DnC/Config_Handlers/RUK_Handler.h: + * DnC/Config_Handlers/NIA_Handler.h: + * DnC/Config_Handlers/MID_Handler.h: + * DnC/Config_Handlers/IR_Handler.h: + * DnC/Config_Handlers/IAD_Handler.h: + * DnC/Config_Handlers/DnC_Dump.h: + * DnC/Config_Handlers/Basic_Handler.h: + + Comments, etc. + +Tue Jun 15 20:53:28 2004 Irfan Pyarali + + * tools/ServerActivator/ServerActivator_test_client.cpp: + + Added missing include file. + + * tools/Segment_Timer/Segment_Timer.cpp: + + Commented out debug statement since the division in it was + failing to compile on Windows. + + * tools/RTComponentServer/RTServer_Impl.cpp (init): + + Indent fixes. + + * tests/RTCCM/DiffServ/descriptors/run_test.pl: + + Remove assembly descriptor file also. + +Tue Jun 15 15:27:08 2004 Gan Deng + + * Dnc/NodeApplication/NodeApplication.cpp + * Dnc/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * Dnc/NodeApplicationManager/NodeApplicationManager_Impl.h + * Dnc/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DnC/ExecutionManager/ExecutionManager_Impl.cpp + * Dnc/NodeManager/NodeDaemon_Impl.cpp + * Dnc/NodeManager/NodeDaemon_Impl.h + * Dnc/NodeManager/Node_Daemon.cpp + * DnC/ciao/NodeApp_CB_Impl.cpp + * DnC/ciao/NodeApp_CB_Impl.h + + Fixed memory leak problems. Now "NodeDaemon" process and + "NodeApplication" process should have no memomry leak problem. + Further test will be based on deploying and tearing down a + deploymentplan many times and try to find memory leak. + +Tue Jun 15 10:48:08 2004 Gan Deng + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Let the object reference narrow down to ExecutionManager + instead of ExecutionManagerDameon. + +Mon Jun 14 15:01:08 2004 Gan Deng + + * DnC/RepositoryManager/Repository_Manager.cpp: + * DnC/ExecutionManager/Execution_Manager.cpp + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DnC/DomainApplicationManager/Deployment_Configuration.cpp + + Fixed memory leak problems. Now ExecutionManager "process" should + have no memomry leak at all. Further test will be on "NodeDaemon" + process, which will detect memory management problem for NodeApplicationManager + as well. + +Mon Jun 14 14:24:08 2004 Gan Deng + + * DnC/NodeManager/Node_Daemon.cpp: + * examples/OEP/BasicSP/EC/client.cpp + + Added missing header file "ace/OS_NS_unistd.h" which contains + hostname function. + +Sun Jun 13 16:13:08 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Some cosmetic changes. + +Sun Jun 13 17:55:01 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes to check if we have a wrong URL to + start parsing the deployment plan. + +Sat Jun 12 23:17:08 2004 Tao Lu + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/ImplementationInfo.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/NodeDaemon_Impl.h: + * DnC/NodeManager/NodeDaemon_Impl.inl: + * DnC/RepositoryManager/Repository_Manager.cpp: + * DnC/ciao/NodeApp_CB_Impl.cpp: + * DnC/ciao/NodeApp_CB_Impl.h: + + Debugged on Windows with Visual Studio + Purify. Now + Every thing should be fine and people could start to + do their own code revision. + + @@Note: If you want to make any change other than + syntactic Changes please be careful and make sure you + don't break anything. + + Now I am moving to add support for Properties. + Things we need for the Demo. + 1. ComponentIOR registration. + 2. Component Attribute initialization. + +Sat Jun 12 16:51:11 2004 Jaiganesh B + + * DnC/Config_Handlers/Property_Handler.cpp: + * DnC/Config_Handlers/TPD_Handler.cpp: + + Made some coding standard changes. + +Fri Jun 11 20:34:12 2004 Tao Lu + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h + * DnC/ExecutionManager/ExecutionManager_Impl.cpp + * DnC/ExecutionManager/ExecutionManager_Impl.h + * DnC/ExecutionManager/ExecutionManager_Impl.inl + * DnC/NodeApplication/NodeApplication.cpp + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl + * DnC/NodeManager/NodeDaemon_Impl.cpp + * DnC/NodeManager/NodeDaemon_Impl.h + * DnC/NodeManager/NodeDaemon_Impl.inl + * DnC/RepositoryManager/Repository_Manager.cpp + * DnC/ciao/Deployment_Core.idl + * DnC/ciao/NodeApplication_Impl.cpp + * DnC/ciao/NodeApplication_Impl.h + + Many Changes of the files. Now on linux it runs up to 3 times + correctly and hangs on the fourth time. I am moving to windows + for this now. Don't commit any change till I send out + notification email, please! + +Fri Jun 11 18:58:04 2004 Gan Deng + + * DnC/Config_Handlers/Utils.h: + * DnC/Config_Handlers/Utils.cpp: + + Last ChangeLog: + + Fri Jun 11 17:31:04 2004 Arvind S. Krishna + + Reverted the changes back to an earlier version since parse_href_tags + is used by other classes, and last change caused compilation error. + +Fri Jun 11 17:31:04 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Utils.h: + * DnC/Config_Handlers/Utils.cpp: + + Removed un-used methods create_document, parse_href_tags from + the Utils directory. + +Fri Jun 11 16:59:35 2004 Gan Deng + + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cdp: + + Deleted the extension name ".so" for all library artifacts, since + this stuff is not platform generic. + +Fri Jun 11 16:46:25 2004 Jaiganesh B + + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Process_Basic_Type.i: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made some more coding standard changes. + +Fri Jun 11 16:12:54 2004 Jaiganesh B + + * DnC/Config_Handlers/CPK_Handler.cpp: + * DnC/Config_Handlers/CPR_Handler.cpp: + * DnC/Config_Handlers/DT_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/IAD_Handler.cpp: + * DnC/Config_Handlers/IR_Handler.cpp: + * DnC/Config_Handlers/MID_Handler.cpp: + * DnC/Config_Handlers/NIA_Handler.cpp: + * DnC/Config_Handlers/PCI_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + + Made some more coding standard compliance changes. + +Fri Jun 11 15:44:00 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CEPE_Handler.cpp: + * DnC/Config_Handlers/Cap_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/CompIntrDesc_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/Config_Error_Handler.cpp: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/MID_Handler.h: + * DnC/Config_Handlers/Process_Element.tpp: + + Made some more coding standards compliance changes. + +Fri Jun 11 14:50:42 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made some more coding standard changes. + +Fri Jun 11 14:15:04 2004 Jaiganesh B + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Made some cosmetic changes. + +Fri Jun 11 13:07:35 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Uncommented some code which was accidentally + commented in my previous commit. + +Fri Jun 11 12:55:49 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.tpp: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes to free up memory created by XMLString:: + transcode operations. + +Fri Jun 11 12:07:27 2004 Emre Turkay + + * DnC/Config_Handlers/Process_Element.cpp: + * DnC/Config_Handlers/Process_Element.i: + * DnC/Config_Handlers/Process_Element.tpp: + * DnC/Config_Handlers/Utils.cpp: + * DnC/Config_Handlers/Utils.h: + * DnC/Config_Handlers/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Deleted the duplicate definition of create_doc & create_doc is + replaced with create_parser. + +Fri Jun 11 00:10:42 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.cpp: + * DnC/Config_Handlers/Utils.cpp: + * DnC/Config_Handlers/Utils.h: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Fixed segmentation faults, traced during integration + teting. + +Thu Jun 10 18:38:46 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Any_Handler.cpp: + * DnC/Config_Handlers/CPK_Handler.cpp: + * DnC/Config_Handlers/Utils.cpp: + * DnC/Config_Handlers/Handler_Test.i: + + Fixed errors based on errors discovered using Purify + +Thu Jun 10 18:24:58 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.tpp: + + More memory leaks fixed. + +Thu Jun 10 18:12:44 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Process_Element.cpp: + * DnC/Config_Handlers/Property_Handler.cpp: + * DnC/Config_Handlers/RS_Handler.cpp: + * DnC/Config_Handlers/SP_Handler.cpp: + + Finally, Config_Handler directory compiles correctly + +Thu Jun 10 18:06:52 2004 Arvind S. Krishna + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CPK_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/Utils.cpp: + + Fixed compilation errors from improper use of XMLString::release. + +Thu Jun 10 18:05:09 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.cpp: + * DnC/Config_Handlers/Property_Handler.cpp: + * DnC/Config_Handlers/RS_Handler.cpp: + * DnC/Config_Handlers/SP_Handler.cpp: + + More memory leaks fixed. + +2004-06-10 turkaye + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CPK_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + + Memory leak problem with XMLString::transcode () is solved. + +Thu Jun 10 17:46:10 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Utils.cpp: + * DnC/Config_Handlers/TPD_Handler.cpp: + + Fixed memory leaks pertaining to ACE_TString making copies of + dynamically allocated memory. The memory supplied to ACE_TString + has to be deleted! Fixed memory for these. + +Thu Jun 10 17:44:57 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.cpp: + * DnC/Config_Handlers/Property_Handler.cpp: + * DnC/Config_Handlers/RS_Handler.cpp: + * DnC/Config_Handlers/Requirement_Handler.cpp: + * DnC/Config_Handlers/SP_Handler.cpp: + + More memory leaks fixes. + +Thu Jun 10 17:27:35 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Utils.cpp: + + Fixed some memory leaks as well!! + +Thu Jun 10 17:26:25 2004 Jaiganesh B + + * DnC/Config_Handlers/Process_Element.cpp: + + Fixed memory leaks. + +Thu Jun 10 14:06:03 2004 Jeff Parsons + + * ciao/Servant_Impl_T.cpp: + * DnC/ciao/Servant_Impl_T.cpp: + + Modified code that passed _var.out() to ACE_NEW_RETURN, + since sometimes on Windows platforms, for whatever + reason Var_Base::out() will be called after the + allocation, effectively cancelling it out. It is + alwas safe to declare a pointer, pass it to ACE_NEW_* + and then assign it to a _var, so that is what is + done now in get_all_facets() and get_all_consumers(). + +Thu Jun 10 10:17:00 2004 Tao Lu + + * DnC/ciao/Container_Base.h: + Followed up a Jeff's Change in the old ciao. + + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DnC/RepositoryManager/Repository_Manager.cpp: + * DnC/NodeManager/Node_Daemon.cpp: + * DnC/ciao/NodeApplication_Impl.cpp: + * DnC/DomainApplicationMananger/NodeApplicationManager_Impl.cpp: + + Many adjustments, bug fixing, added missing functionalities. + This is not a working version now. + +Wed Jun 9 11:17:31 2004 Gan Deng + + * DnC/DomainApplicationManager_Impl.cpp + + Fixed a bug which is caused by initialzing ulong sequence type. + +Tue Jun 8 20:53:12 2004 Tao Lu + + * DnC/NodeApplicationManager/ImplementationInfo.cpp: + * DnC/NodeApplicationManager/ImplementationInfo.h: + Added these files. + + * DnC/NodeApplicationManager/NodeApplicationManager.mpc: + Changed MPC file reflect the changes. + + Seems MPC doesn't support template very well for GCC. The + dependency is not set at all. I have no choice but to switch to + normal operator overlaoding. + +Tue Jun 8 19:54:03 2004 Tao Lu + + * DnC/ciao/CCM_Core.mpc: + * DnC/ciaoImplementation.h: + Removed this file also changed MPC file. + +Tue Jun 8 14:15:31 2004 Gan Deng + + * DnC/DomainApplicationManager_Impl.cpp + + Tested it and it could split plan well and also contact + NodeDaemon without problem. + + Fixed a bug caused by not using a reference. + +Tue Jun 8 17:18:28 2004 Tao Lu + + * DnC/NodeApplication/NodeApplication.mpc: + * DnC/ciao/CCM_Core.mpc: + Fixed another set of linking problem about export macros. + +Tue Jun 8 14:15:31 2004 Gan Deng + + * DnC/RepositoryManager/RepositoryManager.mpc: + + Added missing library CIAO_Server. + +Tue Jun 8 15:50:28 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Added duplicate for one return value. + +Tue Jun 8 15:00:30 2004 Emre Turkay + + * DnC/Config_Handlers/TPD_Handler.h: + * DnC/Config_Handlers/TPD_Handler.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + + Added TopLevelDescription handler. + +Tue Jun 8 14:29:01 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + + Made changes to read the top level package URL + and create the PackageConfiguration IDL data structure. + +Tue Jun 8 14:15:31 2004 Gan Deng + + * DnC/Config_Handlers/Utils.h: + + Fixed the Windows export library problem. + + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + + Added "return" to those unimplemented functions to makde the + compiler happy. + +Tue Jun 8 14:10:08 2004 Tao Lu + + * DnC/ciao/CCM_Core.mpc: + Fixed source file placement. + +Tue Jun 8 10:35:32 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + + Added dump function to dump connections. + +Tue Jun 8 10:16:48 2004 Arvind S. Krishna + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Added diagnostic comments to aid in debugging during execution + of the Executor. + +Tue Jun 8 09:55:41 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Commented out certain un-necessary DEBUG statements. + +Tue Jun 8 02:53:32 2004 Tao Lu + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + Rewritten the connection part of the interface. + Enhanced the performace by avoiding excessive deep copy and + better condition branching. Also added exception mechanism in + the connction part. + +Mon Jun 7 21:22:03 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + Finished this interface implementation. + + * DnC/ciao/ImplementationInfo.h: + Added this file containing the templated helper operators. + +Mon Jun 7 15:44:51 2004 Arvind S. Krishna + + * DnC/ExecutionManager/Execution_Manager.cpp: + * DnC/ExecutionManager/ExecutionManager.mpc: + + First cut at writing the executor that is used to start + deployment process and terminate it. Changed the mpc file to + rename the generated executable to be named executor as + described in the specification. + +Mon Jun 7 14:23:38 2004 Emre Turkay + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Fixed an error causing segmentation fault by changing + Dump_Obj::desc_map_ template argument from "const char*" + to "std::string". + + +Mon Jun 7 12:10:31 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + The PortConnectionDescription structure a PortKind variable change the + code to make the connection decisions based on value of that variable. + Also change the connection fields values which will be passed to + finishLaunch() to make the NodeApplication work. + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + + Change the definition type of the variable from const reference + to just regular object mapped from IDL struct type. + +Mon Jun 7 01:40:57 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + Finished the creat_connctions method. + Partially finished the startLaunch method. + + * DnC/ciao/NodeApplication_Impl.h: + * DnC/ciao/NodeApplication_Impl.cpp: + * DnC/ciao/NodeApplication_Impl.inl: + Finished implementing the NodeApplication interface. + Added the finish launch method. + +Sun Jun 6 21:13:27 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + + Removed generation of a template parameter to the Servant_Impl + base class that was removed from the CIAO_Server library in + + Fri Jun 4 18:16:47 2004 Jeff Parsons + +Sat Jun 5 23:26:53 2004 Tao Lu + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Tweaked a bit of the code to make it compile. + + Gan, Please look at my comments in the code. + +Sat Jun 5 17:24:21 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Change the order of member initialization in the constructors of + AttributeEmitter and ReadonlyAttributeEmitter to match a recent + change in the order of their class members. + +Sat Jun 5 16:45:14 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Updated repository manager to return the PackageConfiguration + element created while parsing the top level package + URL. + +Sat Jun 5 15:04:15 2004 Jaiganesh B + + * DnC/RepositoryManager/Repository_Manager.cpp: + + Updated the repository manager to dump out the + top level package and the deployment plan. + +Sat Jun 5 14:59:47 2004 Tao Lu + + * DnC/tests/NodeApplicationTest/README: + Added this readme file for user to understand the testing scenario. + + +Sat Jun 5 14:46:12 2004 Tao Lu + + * ./DnC/ciao/Servant_Impl_Base.h: + + Cosmetic changes. + + * DnC/ciao/Servant_Impl_T.cpp: + * DnC/ciao/Servant_Impl_T.h: + + Removed one of the template parameters and used instead + the typedefs generated by the IDL compiler for interfaces. + + Followed Jeff Parson's Changes. Hopefully we can merge the two + ciao directories soon so I don't have to duplicate the commit + every time after Jeff makes changes. + +Fri Jun 4 18:16:47 2004 Jeff Parsons + + * ciao/Servant_Impl_Base.h: + + Cosmetic changes. + + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_T.h: + + Removed one of the template parameters and used instead + the typedefs generated by the IDL compiler for interfaces. + + * CIDLC/ServantSourceGenerator.cpp: + + Moved the call to populate_port_tables() from ciao_postactivate() + to the servant constructor. + +Fri Jun 4 17:19:44 2004 Krishnakumar B + + * DnC/tests/Config_Handlers/HUDisplay/Airframe.ccd: + * DnC/tests/Config_Handlers/HUDisplay/Airframe.cid: + * DnC/tests/Config_Handlers/HUDisplay/Airframe.cpd: + * DnC/tests/Config_Handlers/HUDisplay/Airframe_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/Airframe_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/Domain.cdd: + * DnC/tests/Config_Handlers/HUDisplay/GPS.ccd: + * DnC/tests/Config_Handlers/HUDisplay/GPS.cid: + * DnC/tests/Config_Handlers/HUDisplay/GPS.cpd: + * DnC/tests/Config_Handlers/HUDisplay/GPS_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/GPS_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cdp: + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cid: + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cpd: + * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.pcd: + * DnC/tests/Config_Handlers/HUDisplay/Libraries.iad: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.ccd: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.cid: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.cpd: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/Timer.ccd: + * DnC/tests/Config_Handlers/HUDisplay/Timer.cid: + * DnC/tests/Config_Handlers/HUDisplay/Timer.cpd: + * DnC/tests/Config_Handlers/HUDisplay/Timer_Exec.iad: + * DnC/tests/Config_Handlers/HUDisplay/Timer_Stub.iad: + * DnC/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad: + * DnC/tests/Config_Handlers/HUDisplay/package.tpd: + + Moved the descriptor files needed to test BasicSP from my + homepage to the CVS repository. The Config_Handlers should be + able to build a tree starting from package.tpd. Not sure, if it + works that way now. + +Fri Jun 4 15:54:09 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Cosmetic and other minor changes to generated code. + +Fri Jun 4 15:38:18 2004 Gan Deng + + * DnC/ciao/Deployment_Core.idl + + Change the "Connection" IDL type by replacing the "string name" + field with three more fields, i.e., "string instanceName", + "string portName" and "CCMComponentPortKind kind". We feel the + old one in DnC spec is not well defined and make the run-time + thing harder. + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Finished all the functionality to handle connections and all + other things required. + +Fri Jun 4 15:32:50 2004 Tao Lu + + * DnC/tests/NodeApplicationTest/RoundTripEI.idl: + Removed this file. + + * DnC/tests/NodeApplicationTest/RoundTrip_exec.h: + * DnC/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + Changed these files to get the get_all_facets test working. + Note: I have changed the component implementation to the new + executor mapping that Boris proposed. It's not a must in this + example but we can use it later as a tutorial for our users. + + * DnC/tests/NodeApplicationTest/run_test_ex.pl: + * DnC/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + Added these two files to test the get_all_facets function. + +Fri Jun 4 15:02:15 2004 Jaiganesh B + + * DnC/DomainApplicationManager/DomainApplicationManager.mpc: + * DnC/RepositoryManager/RepositoryManager.mpc: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made changes so that RepositoryManager can dump out the + PackageConfiguration elements. + +Fri Jun 4 11:42:18 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added functions to handle connections. Get rid of the + field from the hash map table since they don't need to be maintained + any more. + + +Fri Jun 4 11:37:51 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed a bug in code generation for the port table population + method check in with + + Thu Jun 3 12:35:51 2004 Jeff Parsons + + and changed code generation of facet servant classes to be + a template class with a dummy argument. Immediately below + the declaration, we generate a typedef to the actual + facet servant class name, using int as the template argument. + Because the facet servant class name is based only on the + underlying interface type, this change prevents link errors + when components in other translation units use the same + interface type for a facet, since the compiler will use + only one symbol for all the template instantiations, and + it is legal to typedef something more than once if it is + aliased to the same type. Finally, added checks to ensure + that the facet servant class is generated only once in + each translation unit, by allowing the underlying interface + AST node to be traversed by the facet class code emitter + only once. + +Fri Jun 4 11:40:18 2004 Emre Turkay + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Clean-up of the unused, commented out code sections. + +Fri Jun 4 11:31:09 2004 Jaiganesh B + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Made changes to fix "Ref" variables. + +Fri Jun 4 11:22:46 2004 Tao Lu + + * DnC/ciao/Deployment_Core.idl: + * DnC/ciao/Deployment.idl: + Changed the connection struct definition to better suite our + needs. + +Fri Jun 4 11:19:45 2004 Emre Turkay + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Fixed the dump function for Deployment::SubcomponentPortEndpoint. + Prints out the instanceRef. + +Fri Jun 4 10:46:42 2004 Jaiganesh B + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Made changes to fix dumping of some "Ref" variables. + +Fri Jun 4 09:53:14 2004 Emre Turkay + + * DnC/Config_Handlers/tckind_names.h: + * DnC/Config_Handlers/tckind_names.cpp: + * DnC/Config_Handlers/DnC_Dump.cpp: + + Deleted the files which initially written for dumping out the + ComponentPropertyDescription::type. It is handled as a big + switch section in DnC_Dump.cpp. + +Fri Jun 4 09:52:28 2004 Arvind S. Krishna + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Removed the check_plan_validity () method and added its + functionality in the get_plan_info () method. This eliminates + the need to have a separate loop to iterate over the list of + names to populate the NodeManager references, now this step is + done within a single loop. + +Thu Jun 3 17:28:49 2004 Tao Lu + + * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp: + Formatted the output a bit to make the message more reflective. + + * DnC/ciao/CCM_Core.mpc: + Moved the callback implementation from deployment servant to + stub. + +Thu Jun 3 16:25:58 2004 Emre Turkay + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Added the dump code for ComponentPropertyDescription::type (CORBA::TypeCode). + +Thu Jun 3 16:15:41 2004 Jeff Parsons + + * DnC/NodeApplication/NodeApplication.mpc: + * DnC/ciao/CCM_Core.mpc: + + Some tweaks to the MPC files. + +Thu Jun 3 16:10:11 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Forgot to remove generated members of the servant class that + have been moved to the base classes. + +Thu Jun 3 16:07:35 2004 Emre Turkay + + * DnC/Config_Handlers/DnC_Dump.h: + * DnC/Config_Handlers/DnC_Dump.cpp: + + Added the methods required to dump referenced values + correctly. Dump functions are chaged accordingly. + +Thu Jun 3 14:19:31 2004 Arvind S. Krishna + + * DnC/ExecutionManager/ExecutionManager.mpc: + * DnC/ExecutionManager/Execution_Manager.cpp: + + Removed CIAO::Server_init () method calls from the server, as + this server does not need capabilities for explicitly processing + valuetypes. These calls are already present in NodeApplication + entity. + +Thu Jun 3 12:35:51 2004 Jeff Parsons + + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_T.h: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + + New files added to CIAO_Server. A template base class is now + inserted into the inheritance hierarchy between the skeleton + class of the component's equivalent interface and the + servant class generated by the CIDL compiler. This template + class also has a non-template base class to hold code that + is based neither on the template parameters or on the + inheritance chain. These two classes will hold code common + to all generated servant classes, templatized for the + skeleton class type, the executor type and the context type. + So far, only get_all_facets() and get_all_consumers() have + been factored out and implemented. + + * ciao/CCM_Core.mpc: + + Changes to reflect the items above. Also added -Sc to the + generated IDL compiler command line of each project to + suppress the generation of the TIE classes. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Change to reflect the items listed above, and also a new + method to populate tables in class Servant_Impl_Base that + store port descriptions. So far the event consumers and + the facets of the component are stored. + +Thu Jun 3 12:37:21 2004 Arvind S. Krishna + + * DnC/NodeManager/Node_Daemon.cpp: + + Used OS_NS_stdio.h header file for fopen fclose methods defined + in ACE_OS namespace. + +Thu Jun 3 10:51:32 2004 Arvind S. Krishna + + * DnC/NodeManager/NodeDaemon.idl: + + Changed #include "Deployment.idl" to "#include + ciao/Deployment.idl" to conform to the DnC include format. + +Wed Jun 2 23:26:41 2004 Tao Lu + + * DnC/Config_Handlers/CompImplDesc_Handler.h: + * DnC/Config_Handlers/DnC_Dump.h: + * DnC/ExecutionManager/ExecutionManager.mpc: + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/NodeApplication/NodeApplication.mpc: + * DnC/NodeApplicationManager/NodeApplicationManager.mpc: + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager.mpc: + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DnC/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * DnC/tests/NodeApplicationTest/run_test_simple.pl: + + Updated these files to make it work with the new directory + structure. + + Now, Let me explain the issue. + When I started implement the new DnC spec I was forced to change + some of the CIAO core implementations. The one very important + CIAO session container implementation is changed but not + significantly. However because we use MPC templates extensively + in CIAO some of the legacy mpb files is causing some trouble. I + catched this mistake when I was actually using some of the newly + provided functionalities in the conatainer, the red light + showed itself as a run time relocation error. + + Another driving force of these change is from CIDLC. Since in + the generated code ciao/*** is used as the include file name, + there is no way that I can make the new container implementation + link with the servant project of the component implementation. + +Wed Jun 2 23:21:37 2004 Tao Lu + + * DnC/ciao/CCM_Base.idl: + * DnC/ciao/CCM_Component.idl: + * DnC/ciao/CCM_Container.idl: + * DnC/ciao/CCM_Container_Ex.idl: + * DnC/ciao/CCM_Core.mpc: + * DnC/ciao/CCM_Event.idl: + * DnC/ciao/CCM_Transaction.idl: + * DnC/ciao/CIAO_Client_Export.h: + * DnC/ciao/CIAO_Container_Export.h: + * DnC/ciao/CIAO_Server_Export.h: + * DnC/ciao/CIAO_Value.idl: + * DnC/ciao/CIAO_common.h: + * DnC/ciao/CVS: + * DnC/ciao/Client_init.cpp: + * DnC/ciao/Client_init.h: + * DnC/ciao/Components.idl: + * DnC/ciao/ComponentsC.h: + * DnC/ciao/ComponentsS.h: + * DnC/ciao/Container_Base.cpp: + * DnC/ciao/Container_Base.h: + * DnC/ciao/Container_Base.inl: + * DnC/ciao/Container_Base.pidl: + * DnC/ciao/Cookies.cpp: + * DnC/ciao/Cookies.h: + * DnC/ciao/Cookies.inl: + * DnC/ciao/CosPersistentState.idl: + * DnC/ciao/Deployment.idl: + * DnC/ciao/Deployment_Core.idl: + * DnC/ciao/Deployment_stub_export.h: + * DnC/ciao/Deployment_svnt_export.h: + * DnC/ciao/NodeApp_CB_Impl.cpp: + * DnC/ciao/NodeApp_CB_Impl.h: + * DnC/ciao/NodeApplication_CallBack.idl: + * DnC/ciao/NodeApplication_Impl.cpp: + * DnC/ciao/NodeApplication_Impl.h: + * DnC/ciao/NodeApplication_Impl.inl: + * DnC/ciao/Server_init.cpp: + * DnC/ciao/Server_init.h: + * DnC/ciao/Version.h: + + Added these files to replace the files in the old DnC/Core directory. + +Wed Jun 2 22:55:57 2004 Tao Lu + + * DnC/Core/CCM_Base.idl: + * DnC/Core/CCM_BaseS.cpp: + * DnC/Core/CCM_BaseS.h: + * DnC/Core/CCM_Component.idl: + * DnC/Core/CCM_ComponentS.cpp: + * DnC/Core/CCM_ComponentS.h: + * DnC/Core/CCM_Container.idl: + * DnC/Core/CCM_ContainerS.cpp: + * DnC/Core/CCM_Container_Ex.idl: + * DnC/Core/CCM_Container_ExS.cpp: + * DnC/Core/CCM_Core.mpc: + * DnC/Core/CCM_Event.idl: + * DnC/Core/CCM_EventS.cpp: + * DnC/Core/CCM_EventS.h: + * DnC/Core/CCM_Transaction.idl: + * DnC/Core/CCM_TransactionS.cpp: + * DnC/Core/CIAO_Client_Export.h: + * DnC/Core/CIAO_Container_Export.h: + * DnC/Core/CIAO_Server_Export.h: + * DnC/Core/CIAO_Value.idl: + * DnC/Core/CIAO_ValueS.cpp: + * DnC/Core/CIAO_ValueS.h: + * DnC/Core/CIAO_common.h: + * DnC/Core/Client_init.cpp: + * DnC/Core/Client_init.h: + * DnC/Core/Components.idl: + * DnC/Core/Container_Base.cpp: + * DnC/Core/Container_Base.h: + * DnC/Core/Container_Base.inl: + * DnC/Core/Container_Base.pidl: + * DnC/Core/Cookies.cpp: + * DnC/Core/Cookies.h: + * DnC/Core/Cookies.inl: + * DnC/Core/CosPersistentState.idl: + * DnC/Core/CosPersistentStateS.cpp: + * DnC/Core/Deployment.idl: + * DnC/Core/DeploymentS.cpp: + * DnC/Core/Deployment_Core.idl: + * DnC/Core/Deployment_stub_export.h: + * DnC/Core/Deployment_svnt_export.h: + * DnC/Core/GNUmakefile: + * DnC/Core/GNUmakefile.CIAO_Client: + * DnC/Core/GNUmakefile.CIAO_Container: + * DnC/Core/GNUmakefile.CIAO_Server: + * DnC/Core/GNUmakefile.Deployment_stub: + * DnC/Core/GNUmakefile.Deployment_svnt: + * DnC/Core/NodeApp_CB_Impl.cpp: + * DnC/Core/NodeApp_CB_Impl.h: + * DnC/Core/NodeApplication_CallBack.idl: + * DnC/Core/NodeApplication_Impl.cpp: + * DnC/Core/NodeApplication_Impl.h: + * DnC/Core/NodeApplication_Impl.inl: + * DnC/Core/Object_Set_T.cpp: + * DnC/Core/Object_Set_T.h: + * DnC/Core/Object_Set_T.inl: + * DnC/Core/Server_init.cpp: + * DnC/Core/Server_init.h: + * DnC/Core/Version.h: + * DnC/Core/: + + Removed all these files to avoid the suite the change of the + directory. Note: now DnC/Core is replaced by DnC/ciao. + +Wed Jun 2 21:54:51 2004 Jeff Parsons + + * ciao/CCM_Base.idl: + + Fixed identifier of a member of PortDescription - changed + 'Name' to 'name', to conform to the CCM spec. + +Wed Jun 2 19:22:29 2004 Venkita Subramonian + + * ChangeLog: + + Forgot to add change description for the previous change. + +Wed Jun 2 19:07:01 2004 Venkita Subramonian + + * ciao/CIAO_Client_Export.h: + * ciao/CIAO_Container_Export.h: + * ciao/CIAO_Export.h: + * ciao/CIAO_Server_Export.h: + * examples/OEP/BasicSP/BasicSP_stub_export.h: + * examples/OEP/BasicSP/BasicSP_svnt_export.h: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec_export.h: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub_export.h: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt_export.h: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec_export.h: + * examples/OEP/BasicSP/BMDevice/BMDevice_stub_export.h: + * examples/OEP/BasicSP/BMDevice/BMDevice_svnt_export.h: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec_export.h: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub_export.h: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt_export.h: + * examples/OEP/BasicSP/EC/EC_exec_export.h: + * examples/OEP/BasicSP/EC/EC_stub_export.h: + * examples/OEP/BasicSP/EC/EC_svnt_export.h: + * tools/Segment_Timer/Segment_Timer_Export.h: + * tools/Simple_Component_Server/Simple_Server_Stub_Export.h: + * tools/XML_Helpers/XML_Helpers_Export.h: + + Regenerated these files with -s option to take care of static + builds on Windows. + +Wed Jun 2 18:57:29 2004 Tao Lu + + * DnC/Core/NodeApplication_Impl.cpp: + Fixed a few bugs inside. + + * DnC/tests/NodeApplicationTest/NodeAppTest.mpc: + * DnC/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DnC/tests/NodeApplicationTest/run_test.pl: + * DnC/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + + Added a test to do a more complete test on NodeApplication. + Please note that there is a name change of files. The mpc file + explains very thing. + + * DnC/Core/Client_init.cpp: + I made the default value for debug_level 1, later we should + reverse the change. + +Wed Jun 2 18:37:24 2004 Arvind S. Krishna + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/Node_Daemon.cpp: + + Changes to ensure that the DomainApplicationManager is capable + of calling the NodeDaemon to spawn a NodeApplicationManager for + the corresponding application. + +Wed Jun 2 16:38:48 2004 Jaiganesh B + + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/IAD_Handler.cpp: + * DnC/Config_Handlers/MID_Handler.cpp: + * DnC/Config_Handlers/NIA_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + + Made changes to fix testing errors. + +Wed Jun 2 15:50:12 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager.mpc + + Added Config_Handlers library to fix linking probelm in Windows. + + * DnC/ExecutionManager/ExecutionManager.mpc + + Added ciao_deployment_stub and CIAO_Server libraries to fix + linking probelm in Windows. + + * DnC/RepositoryManager/RepositoryManager.mpc + + Added ciao_deployment_stub library to fix linking probelm in Windows. + + +Wed Jun 2 15:07:56 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Fixed errors in split_plan() function to make it work. + + +Wed Jun 2 12:30:56 2004 Jaiganesh B + + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/IAD_Handler.cpp: + * DnC/Config_Handlers/MID_Handler.cpp: + * DnC/Config_Handlers/NIA_Handler.cpp: + * DnC/Config_Handlers/PCI_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + + Made changes to fix some more testing errors. + +Wed Jun 2 11:51:57 2004 Arvind S. Krishna + + * DnC/ExecutionManager/Execution_Manager.cpp: + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + + Fixed hashtable used within the ExcutionManager to check for + duplicates in the right manner. + +Wed Jun 2 10:31:27 2004 Tao Lu + + * DnC/tests/Config_Handlers/handler_test.mpb: + * DnC/Config_Handlers/Config_Handlers.mpc: + Updated these two file to make it compile with working on the + system like Debian or RedHat which have the pre-build binary + installed instead of xerces source. + +Wed Jun 2 00:48:30 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/Process_Element.i: + * DnC/Config_Handlers/Process_Element.tpp: + + Made changes to fix testing errors. + +Tue Jun 1 18:13:23 2004 Tao Lu + + * DnC/Core/NodeApplication_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Updated these two files to fix the bug related to nil (); + +Tue Jun 1 18:09:19 2004 Gan Deng + + * DnC/NodeManager/NodeDaemon.mpc + + Modify this to fix linking errors for missing library. + +Tue Jun 1 17:52:29 2004 Gan Deng + + * DnC/NodeApplicationManager/NodeApplicationManager.mpc + + Modify this to fix linking errors. + + +Tue Jun 1 17:39:57 2004 Jaiganesh B + + * DnC/Config_Handlers/CompPortDesc_Handler.cpp: + * DnC/Config_Handlers/CompPortDesc_Handler.h: + * DnC/Config_Handlers/CompPropDesc_Handler.cpp: + * DnC/Config_Handlers/CompPropDesc_Handler.h: + + Removed the above handlers as they are not used at all. + + * DnC/Config_Handlers/Config_Handlers.mpc: + + Updated the MPC file accordingly. + +Tue Jun 1 15:30:49 2004 Jaiganesh B + + * DnC/Config_Handlers/Basic_Handler.h: + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/Cap_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/CompIntrDesc_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/CompPortDesc_Handler.cpp: + * DnC/Config_Handlers/Process_Element.i: + * DnC/Config_Handlers/Process_Element.tpp: + + Made changes to fix some testing errors + +Tue Jun 1 15:08:23 2004 Arvind S. Krishna + + * DnC/NodeManager/NodeApplicationManager_Impl.h: + * DnC/NodeManager/NodeApplicationManager_Impl.cpp: + + Removed these files; New implementation present in + DnC/NodeApplicationManager directory + + * DnC/NodeManager/Node_Daemon.cpp: + * DnC/NodeManager/NodeDaemon_Impl.h: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/NodeDaemon.mpc: + + Changed the Node Manager to interact with the new + NodeApplication Manager implementation. + +Tue Jun 1 15:08:13 2004 Arvind S. Krishna + + * DnC/tests/NodeApplicationTest/run_test.pl: + * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp: + + Added run_test.pl to run this test via scripts + +Tue Jun 1 14:48:01 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl: + Updated the class to cooperate with NodeManager. + There is some memory management and lifecycle of object issue + solved by this update. Basically speaking, since NodeManager is + a daemon (running forever if nothing went wrong) we have to make + sure that the NodeApplicationManager will be actually destroyed + when its not needed any more. This update enables us to do this + and prevented us from hacking the OMG IDL file. + +Tue Jun 1 12:36:10 2004 Jaiganesh B + + * DnC/Config_Handlers/Basic_Handler.cpp: + * DnC/Config_Handlers/Basic_Handler.h: + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CAD_Handler.h: + * DnC/Config_Handlers/CPR_Handler.h: + * DnC/Config_Handlers/Cap_Handler.h: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.h: + * DnC/Config_Handlers/CompIntrDesc_Handler.h: + * DnC/Config_Handlers/CompPkgDesc_Handler.h: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/Config_Handlers/IAD_Handler.h: + * DnC/Config_Handlers/IR_Handler.h: + * DnC/Config_Handlers/MID_Handler.h: + * DnC/Config_Handlers/NIA_Handler.h: + * DnC/Config_Handlers/PCI_Handler.h: + * DnC/Config_Handlers/PC_Handler.h: + * DnC/Config_Handlers/Plan_Handler.h: + * DnC/Config_Handlers/Process_Element.i: + + Made changes to fix testing errors. + +Tue Jun 1 12:09:18 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + Changed the init method to return a objectRef of + the NodeApplicationManager to make NodeManager happy. + +Tue Jun 1 11:40:29 2004 Gan Deng + + * DnC/Config_Handlers/Basic_Handler.h + * DnC/Config_Handlers/CompIntrDesc_Handler.h + * DnC/Config_Handlers/CompPkgDesc_Handler.h + * DnC/Config_Handlers/CompPortDesc_Handler.h + * DnC/Config_Handlers/CompPropDesc_Handler.h + * DnC/Config_Handlers/Config_Error_Handler.h + * DnC/Config_Handlers/DnC_Dump.h + * DnC/Config_Handlers/IAD_Handler.h + * DnC/Config_Handlers/IR_Handler.h + * DnC/Config_Handlers/MID_Handler.h + * DnC/Config_Handlers/NIA_Handler.h + * DnC/Config_Handlers/PCI_Handler.h + * DnC/Config_Handlers/PC_Handler.h + * DnC/Config_Handlers/RUK_Handler.h + + Fixed the export libary problem for Windows. + +Tue Jun 1 10:49:49 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.cpp: + + Made changes to fix testing errors. + +Tue Jun 1 10:41:49 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl: + Finished the NodeApplicationManager except the connection + part. + +Tue Jun 1 10:16:21 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Export.h + + Added this file for Windows to export library. + + +Tue Jun 1 10:12:46 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager.idl: + * DnC/RepositoryManager/RepositoryManager.mpc: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/Repository_Manager.cpp: + + Made a first-cut check-i for repository manager. + +Tue Jun 1 10:01:25 2004 Venkita Subramonian + + * examples/OEP/BasicSP/BMDevice/BMDevice.cidl: + * examples/OEP/BasicSP/BMClosedED/BMClosedED.cidl: + + Included BasicSP.idl to fix problems during static linking. + +Tue Jun 1 00:42:56 2004 Jaiganesh B + + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Process_Element.cpp: + + Made changes to fix some testing errors. + + +Tue Jun 1 00:32:22 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CPK_Handler.cpp: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/IAD_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Process_Element.cpp: + + Made changes to fix some testing errors. + +Mon May 31 18:50:28 2004 Jaiganesh B + + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/Plan_Handler.cpp: + + Made changes to fix some testing errors. + +Mon May 31 18:27:47 2004 Venkita Subramonian + * tools/Segment_Timer/Segment_Timer.h: + * tools/static_configurator/Static_Configurator.cpp: + + Made some fixes related to DLL exports to get rid of + build errors on Windows. + +Mon May 31 18:25:30 2004 Jaiganesh B + + * DnC/Config_Handlers/Any_Handler.cpp: + * DnC/Config_Handlers/CPK_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Property_Handler.cpp: + + Made some changes to fix some testing errors. + + +Mon May 31 17:18:55 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Any_Handler.cpp: + * DnC/Config_Handlers/CompIntrDesc_Handler.cpp: + * DnC/Config_Handlers/CompPropDesc_Handler.cpp: + * DnC/Config_Handlers/DT_Handler.cpp: + * DnC/Config_Handlers/DT_Handler.h: + + Resolved Typecode and Any related errors relating to parsing the + Deployment plan. + +Mon May 31 16:33:16 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Added support for the emits-related navigation method, + and automatic registration of value factories for + event consumers. Also fixed bug in code generation + for uses multiple. + + * ciao/Container_Base.h: + + Added CIAO_REGISTER_OBV_FACTORY macro, used by the + CIDL compiler when generating factory registration + calls for event consumers. There is also a version of + this macro called CIAO_REGISTER_VALUE_FACTORY in + CIAO_common.h. This version takes an extra argument + which is an ORB pointer. This macro was separately + added, planning for the day when we may want + components to run with a separate process and/or ORB + from their containers. These two versions will have + to be reconciled at some point. + + * tools/Segment_Timer/Segment_Timer.mpc: + + Added the export file to the project. + + * tools/XML_Helpers/RTConfig_Handlers.cpp: + + Added some static casts to eliminate warnings on + MSVC. + +Mon May 31 16:19:17 2004 Tao Lu + + * DnC/NodeApplicationManager/NodeApplicationManager.mpc: + Updated this file. + + * DnC/NodeApplicationManager/CIAO_NAM_Export.h: + Added this export file. + + * DnC/NodeApplicationManager/NodeApplicationManager.cpp: + Removed this file since NodeApplicationManager will be + collocated with NodeManager. + + * DnC/NodeApplicationManager/CIAO_NodeApplicationManager.idl: + Removed this file since I have moved this into deployment_svnt + project. + + * DnC/Core/NodeApplication_Impl.cpp: + Changed from 0 to CORBA::Object::_nil () as return value. + +Mon May 31 15:18:25 2004 Arvind S. Krishna + + * DnC/test/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DnC/test/NodeApplicationTest/NodeApp_test_client.cpp: + * DnC/test/NodeApplicationTest/RoundTripEI.idl: + * DnC/test/NodeApplicationTest/RoundTrip_exec.cpp: + * DnC/test/NodeApplicationTest/RoundTrip_exec.h: + + Changed the idl interface to supports rather than provides as + this feature has not been implemented yet. + +Mon May 31 14:48:21 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager.mpc: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + + Added export library thing for Windows. + + +Mon May 31 13:35:15 2004 Gan Deng + + * DnC/Config_Handlers/Config_Handlers.mpc: + + Added the missing dependency library to the mpc file, which + is CIAO_Server library. + +Mon May 31 13:10:15 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager.mpc: + + Added necessary dependency libraries to the mpc file, which + causes build probelm under Windows. + + * DnC/DomainApplication/DomainApplication_Impl.h + * DnC/DomainApplication/DomainApplication_Impl.cpp + + Removed these files since DomainApplication are now + combined with DomainApplicationManager. + + +Mon May 31 11:00:50 2004 Tao Lu + + * DnC/Core/NodeApplication_Impl.cpp: + Fixed one bug of the refence count of Component instance + objectRef. + +Mon May 31 00:40:25 2004 Tao Lu + + * DnC/Core/NodeApplication_Impl.cpp: + * DnC/Core/NodeApplication_Impl.h: + + Added component/home removal functionality. + Also added a install method which will be called by + NodeApplicationManager to install everything which belong + to the NodeApplication. + +Sun May 30 17:47:10 2004 Arvind S. Krishna + + * DnC/tests/NodeApplicationTest: + + Directory for testing CIAO's NodeApplication entity + + * DnC/tests/NodeApplicationTest/NodAppTest.mpc: + mpc file for this test case + + * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl: + * DnC/tests/NodeApplicationTest/RoundTripEI.idl: + + A simple component as a test case that provides an interface + LatencyTest which has a single operation defined that cubes a + long + + * DnC/tests/NodeApplicationTest/RoundTrip_stub_export.h: + * DnC/tests/NodeApplicationTest/RoundTrip_svnt_export.h: + * DnC/tests/NodeApplicationTest/RoundTrip_exec_export.h: + + Export files to keep windows happy + + * DnC/tests/NodeApplicationTest/RoundTrip_exec.h: + * DnC/tests/NodeApplicationTest/RoundTrip_exec.cpp: + + Component implementation definitions + + * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp: + + Client program that tries to install the RoundTrip home with the + NodeApplication aka ComponentServer, create the Component, + i.e. RoundTrip, and invoke the cube long operation. + + This test case exercises the call path for home installation, + component creation within the new DnC specification. This test + case should also have component removal operations, which will + be added as and when this is implemented in CIAO. + +Sun May 30 15:43:24 2004 Arvind S. Krishna + + * DnC/NodeApplication/NodeApplication.mpc: + * DnC/NodeApplication/NodeApplication.cpp: + + Resolved compilation and link errors. Now the NodeApplication + can be started generating an ior! Next step will be to write a + test client to install homes and create components. + +Sun May 30 14:36:21 2004 Tao Lu + + * DnC/NodeApplication/NodeApplication.mpc: + * DnC/NodeApplication/NodeApplication.cpp: + * DnC/Core/Container_Base.h: + * DnC/Core/Container_Base.cpp: + * DnC/Core/Deployment_Core.idl: + * DnC/Core/NodeApplication_Impl.h: + * DnC/Core/NodeApplication_Impl.cpp: + + Updateed those files to finish home creation part. + +Sat May 29 15:25:22 2004 Jaiganesh B + + * DnC/RepositoryManager/RepositoryManager_Impl.h: + * DnC/RepositoryManager/RepositoryManager_Impl.cpp: + * DnC/RepositoryManager/RepositoryManager.mpc: + + First cut implementation of Repository Manager. + +Fri May 28 23:17:44 2004 Arvind S. Krishna + + * DnC/NodeManager/NodeDaemon.idl: + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/NodeManager/Node_Daemon.cpp: + * DnC/NodeManager/NodeDaemon_Impl.h: + + Fixed compilation and linking errors stemming from refactoring + DnC core to include the Deployment.idl files. Modified the + include paths as now these are autogenerated from the + ciao_deployment.mpb file + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + + Removed the getApplications () member function the the header + file. This is not present as a part of the interface. This + resolves link errors + + * DnC/ExecutionManager/ExecutionManager.mpc: + + Removed the unnecessary ciao_server target from the mpc file as + this library is not needed + +Fri May 28 10:18:45 2004 Arvind S. Krishna + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Fixed warnings resulting from non usage of .in () while + assigning to a _ptr from a _var. + + * DnC/DomaiinApplicationManager/DomainApplicationManager_Impl.inl: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + + Created file for storing inline functions + +Thu May 27 22:16:26 2004 Tao Lu + + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedEDE.idl: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.cpp: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDeviceE.idl: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.cpp: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplayE.idl: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay_svnt.cpp: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay_svnt.h: + * examples/handcrafted/BasicSP_EC/EC/ECE.idl: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h: + + Removed these files from the Repo. Please be careful when you + commit files and please double check EVEN you have done make + realclean! + + +Thu May 27 22:14:18 2004 Venkita Subramonian + + * tools/static_configurator/Static_Configurator.mpc: + * tools/static_configurator/Static_Configurator.h: + * tools/static_configurator/Static_Configurator.cpp: + * tools/static_configurator/Static_Assembly_Visitors.cpp: + * tools/static_configurator/Static_Assembly_Parser.cpp: + + Made changes related to performance measurement of static + configuration mechanisms. + + * tools/Segment_Timer/Segment_Timer_Export.h: + * tools/Segment_Timer/Segment_Timer.{cpp,h,mpc}: + * tools/Segment_Timer/README: + + Adding segment timer files. This class is used in the + performance measurements of static and dynamic configurations. + + * tools/RTComponentServer/RTComponentServer.mpc: + * tools/Assembly_Deployer/Assembly_Visitors.cpp: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Deployer.mpc: + + Made changes related to performance measurement of dynamic + configuration mechanisms. + +Thu May 27 18:39:10 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Redefine the Hash map to make all the artifacts (NodeManager, + NodeApplicationManager, NodeApplication, Connections) handy + to use. Changed all the member functions to reflect this + change. + +Thu May 27 17:45:26 2004 Tao Lu + + * DnC/tests/Config_Handlers/handler_test.mpb: + + Added reqires dnc to stop the noise on the scoreboard. + +Thu May 27 22:10:27 2004 Emre Turkay + * DnC/Core/Deployment.idl: + + Added DeploymentPlan::UUID. + +Thu May 27 22:02:21 2004 Emre Turkay + * DnC/Config_Handlers/Plan_Handler.cpp: + + Added handler for DeploymentPlan::UUID + +Thu May 27 16:42:26 2004 Arvind S. Krishna + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added a check to make sure that duplicate NodeManager names are + not added to the internal hashmap maintained in this + entity. This ensures that the length always corresponds to the + unique set of node names. Thanks to Gan Deng for pointing this + out. + +Thu May 27 16:38:19 2004 Boris Kolpackov + + * DnC/Deployment.xsd: Added UUID element to deploymentPlan. + + +Thu May 27 13:03:02 2004 Arvind S. Krishna + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added the get_plan_info () method, that parses the plan + according to the individual nodes on which the plan needs to be + deployed. Also changed internal tables to use ACE_Vector to + store plan related information. + +Thu May 27 11:02:47 2004 Arvind S. Krishna + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added two new operations get_uuid and set_uuid that will help + the ExecutionManager associating the DomainApplicationManager + with a concrete DeploymentPlan passed. These are defined on the + servant only. + + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + + Implementation of Deployment::ExecutionManager interface. This + has now been integrated with the DomainApplicationManager. + + * DnC/DomainApplicationManager/Deployment_Configuration.h: + + Removed "#include Core/.." as now the include paths are + generated from the deployment_svnt.mpb + + * DnC/ExecutionManager/Execution_Manager.cpp: + * DnC/ExecutionManager/ExectionManager.idl: + + CIAO's implementation of ExecutionManager Daemon + interface. Added a shutdown () method for clean release of + resources associated with the Daemon + + * DnC/ExecutionManager/ExecutionManager.mpc: + + mpc file to generate Makefiles! + +Wed May 26 17:08:21 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Changed the member functions signature in accordance with the + modified DomainApplicationManager IDL interface. + + +Wed May 26 16:24:54 2004 Gan Deng + + * DnC/Core/Deployment.idl + + Modified the IDL interface of the DomainApplicationManager, + which now integrates the functionality of both + DomainApplicationManager and DomainApplication in the original + DnC spec. The old DomainApplication interface is deleted. + +Wed May 26 11:33:11 2004 Gan Deng + + * DnC/Core/CCM_Core.mpc + + Added necessary library (TAO_Valuetype) to the Deployment_stub + project. Removed the unnecessary Deployment_CoreC.cpp file which + caused linking error. + +Wed May 26 11:15:23 2004 Gan Deng + + * DnC/Core/NodeApplication_Impl.cpp + + Fixed linking errors because the "start" method on the + NodeApplication used a wrong function signature. + +Wed May 26 11:06:23 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager.mpc + * DnC/DomainApplicationManager/Deployment_Configuration.inl + + Added these two files. + +Wed May 26 11:03:23 2004 Gan Deng + + * DnC/Core/CCM_Core.mpc + + Fixed typo in this mpc file. + +Wed May 26 10:14:23 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager_Impl.* + + Fixed the compiling errors. More functinality will be + added soon. + + * DnC/DomainApplicationManager/Deployment_Configuration.* + + Added this helper class to deal with deployment topology + data file. + + +Tue May 25 22:40:23 2004 Tao Lu + + * DnC/Core/NodeApp_CB_Impl.cpp: + * DnC/Core/NodeApp_CB_Impl.h: + * DnC/Core/NodeApplication_CallBack.idl: + Added these files for NodeApplication callback interface. + + * DnC/Core/CCM_Core.mpc: + Updated the file to reflect above changes. + +Tue May 25 13:05:35 2004 Tao Lu + + * DnC/Deployment.idl: + * DnC/Property.idl: + * DnC/Deployment.mpc: + * DnC/Deployment_stub_export.h: + * DnC/Deployment_stub_export.h: + * DnC/Core/Container_Impl.h: + * DnC/Core/Container_Impl.inl: + * DnC/Core/Container_Impl.cpp: + * DnC/Core/CCM_Deplyment.idl: + + Removed these files. Everything is moved into the DnC/Core + directory, also the Deployment.idl is splited into + Deployment.idl and Deployment_Core.idl. The first one contains + information needed for DnC runtime except NodeApplication. + The latter file combines the old Container with NodeApplication. + + * DnC/Core/Deployment.idl: + * DnC/Core/Deployment_Core.mpc: + * DnC/Core/Deployment_stub_export.h: + * DnC/Core/Deployment_stub_export.h: + * DnC/Core/NodeApplication_Impl.h: + * DnC/Core/NodeApplication_Impl.inl: + * DnC/Core/NodeApplication_Impl.cpp: + Added these files. + + * DnC/Core/CCM_Core.mpc: + This file updated to reflect the chages above. + + The idea is to use the old container as the NodeApplication and + the ComponentServer. This implies that new process will be + spawned upon new NodeApplication is created. + + In turn the NodeApplicationManager will be collocated with + NodeManager. + + These changes give us advantages for implementing the spec in an + effecient way without inccuring much confilicts with the Spec. + + +Tue May 25 12:06:37 2004 Venkita Subramonian + + * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Controllers/Controller_exec.{cpp,h}: + * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.{cpp,h}: + + Fixed compile errors regarding pure virtual functions not being + implemented. Added empty method definitions for ciao_preactivate + and ciao_postactivate. + +Tue May 25 12:08:48 2004 Arvind S. Krishna + + * DnC/NodeManager/Node_Daemon.cpp: + + Removed repetitive registration with the IORTable + +Tue May 25 12:02:52 2004 Boris Kolpackov + + * DnC/Deployment.xsd: + + Initial set of "normalization" changes. + + + * DnC/Deployment.xsd.orig: + * DnC/XMI.xsd.orig: + + Added backup copies. + +Mon May 24 14:13:51 2004 Gan Deng + + * DnC/DomainApplicationManager/DomainApplicationManager.h: + * DnC/DomainApplicationManager/DomainApplicationManager.cpp: + + * DnC/DomainApplication/DomainApplication.h: + * DnC/DomainApplication/DomainApplication.cpp: + + Added these files. + + +Mon May 24 21:18:07 2004 Tao Lu + + * examples/Hello/descriptors/run_test_remote.pl: + * examples/Hello/descriptors/run_test_default.pl: + + Updated the test script since Assembly_Deployer takes + two more command line options. + +Mon May 24 19:44:32 2004 Jaiganesh B + + * DnC/Config_Handlers/ADD_Handler.*: + * DnC/Config_Handlers/ACD_Handler.*: + * DnC/Config_Handlers/APM_Handler.*: + * DnC/Config_Handlers/CRDD_Handler.*: + * DnC/Config_Handlers/DP_Handler.*: + * DnC/Config_Handlers/IDD_Handler.*: + * DnC/Config_Handlers/IRDD_Handler.*: + * DnC/Config_Handlers/MDD_Handler.*: + * DnC/Config_Handlers/PCD_Handler.*: + * DnC/Config_Handlers/PPM_Handler.*: + * DnC/Config_Handlers/PSPE_Handler.*: + * DnC/Config_Handlers/PSPR_Handler.*: + * DnC/Config_Handlers/RDD_Handler.*: + * DnC/Config_Handlers/SID_Handler.*: + * DnC/Config_Handlers/SPE_Handler.*: + * DnC/Config_Handlers/SPR_Handler.*: + + Removed the above mentioned handlers as they are + not used. + +Mon May 24 11:50:15 2004 Jaiganesh B + + * DnC/Config_Handlers/Plan_Handler.cpp: + + Added changes to reflect the changes made in the IDL file. + + +Sun May 23 14:31:51 2004 Arvind S. Krishna + + * DnC/NodeManager/NodeDaemon.mpc: + + Added exename flag to set the right executable name to be generated + +Sun May 23 13:32:34 2004 Arvind S. Krishna + + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/NodeManager/NodeApplicationManager_Impl.h: + * DnC/NodeManager/NodeApplicationManger_Impl.cpp: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/Node_Daemon.cpp: + + Got the call-chain working, wherein, a preparePlan call to the + Daemon creates a NodeApplication Manager and passes along the + plan as well. Next, now the Daemon, depending on the command + line argument passed can also register with the Naming Service + using the node-name as the context. This enables multiple + NodeManagers to be activated on different hosts. An simple IOR + based scheme will not work in this case. + +Fri May 21 20:12:43 2004 Arvind S. Krishna + + * DnC/NodeManager/NodeDaemon.idl: + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/NodeManager/NodeDaemon_Impl.h: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/Node_Daemon.cpp: + * DnC/NodeManager/NodeApplicationManager_Impl.h: + * DnC/NodeManager/NodeApplicationManager_Impl.cpp: + + Updated these files inline with the Specification i.e. removed + un-necessary methods along with making the + NodeApplicationManager a CORBA::Object rather than a CORBA + server. In this case, the NodeManager, i.e. the NodeDaemon, will + share the same ORB with the the Application Manager. Further, + the mpc file was updated to make things compile and link + properly. + +Thu May 20 23:29:54 2004 Jaiganesh B + + * DnC/Deployment.xsd: + Uploaded the new schema. + +Thu May 20 19:28:20 2004 Tao Lu + + * DnC/Core/CCM_Core.mpc + * DnC/Core/CCM_Deployment.idl + * DnC/Core/ComponentServer_Impl.cpp + * DnC/Core/ComponentServer_Impl.h + * DnC/Core/ComponentServer_Impl.inl + * DnC/Core/Container_Impl.cpp + * DnC/Core/Container_Impl.h + + Removed the ComponentInstallation interfaces. + Now the CORE of new CIAO should be fixed. + +Thu May 20 18:54:01 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Updated the IDL for Component Data Model changes. + +Thu May 20 14:44:48 2004 Irfan Pyarali + + * tests/RTCCM/DiffServ/Controller/Controller.cpp: + + No RT-isms necessary anymore. + +Thu May 20 14:31:20 2004 Irfan Pyarali + + * tests/RTCCM/DiffServ/descriptors/rtsvc.conf: + + This file is no longer needed. + + * tests/RTCCM/DiffServ/descriptors/run_test.pl: + + No need to specify rtsvc.conf file. + + * tools/RTComponentServer/RTComponentServer.cpp (main): + + No need to check that multiple priorities are supported. Some + servers can do with one priority. + +Thu May 20 13:40:25 2004 Irfan Pyarali + + * tests/RTCCM/DiffServ/Sender/Sender.mpc: + * tests/RTCCM/DiffServ/Sender/Custom_Network_Priority_Mapping.cpp: + + Simply refer to the same files in TAO/tests/RTCORBA/Diffserv + instead of making a copy here. + + * tests/RTCCM/DiffServ/Receiver/Receiver_exec.cpp: + * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp: + * tests/RTCCM/DiffServ/descriptors/run_test.pl: + + Minor fixes. + +Thu May 20 11:34:33 2004 Irfan Pyarali + + * tools/ComponentServer/ComponentServer.cpp: + * tools/Assembly_Deployer/Assembly_Deployer.cpp: + + Added missing include file. + + * tests/RTCCM/DiffServ/descriptors/run_test.pl: + + Added new assembly deployer option. + + * tests/RTCCM/DiffServ/descriptors/rtsvc.conf: + + Added FIFO scheduling option. + + * tests/RTCCM/DiffServ/Controller/Controller.cpp (svc): + + Minor fixes. + +Thu May 20 10:36:23 2004 Tao Lu + + * DnC/Core/CCM_Base.idl + * DnC/Core/CCM_Component.idl + * DnC/Core/CCM_Container.idl + * DnC/Core/CCM_Container_Ex.idl + * DnC/Core/CCM_Core.mpc + * DnC/Core/CCM_Deployment.idl + * DnC/Core/CCM_Event.idl + * DnC/Core/CCM_Transaction.idl + * DnC/Core/CIAO_Client_Export.h + * DnC/Core/CIAO_Container_Export.h + * DnC/Core/CIAO_Server_Export.h + * DnC/Core/CIAO_Value.idl + * DnC/Core/CIAO_common.h + * DnC/Core/Client_init.cpp + * DnC/Core/Client_init.h + * DnC/Core/ComponentInstallation_Impl.cpp + * DnC/Core/ComponentInstallation_Impl.h + * DnC/Core/ComponentInstallation_Impl.inl + * DnC/Core/ComponentServer_Impl.cpp + * DnC/Core/ComponentServer_Impl.h + * DnC/Core/ComponentServer_Impl.inl + * DnC/Core/Component_Base.idl + * DnC/Core/Components.idl + * DnC/Core/Container_Base.cpp + * DnC/Core/Container_Base.h + * DnC/Core/Container_Base.inl + * DnC/Core/Container_Base.pidl + * DnC/Core/Container_Impl.cpp + * DnC/Core/Container_Impl.h + * DnC/Core/Container_Impl.inl + * DnC/Core/Cookies.cpp + * DnC/Core/Cookies.h + * DnC/Core/Cookies.inl + * DnC/Core/CosPersistentState.idl + * DnC/Core/Object_Set_T.cpp + * DnC/Core/Object_Set_T.h + * DnC/Core/Object_Set_T.inl + * DnC/Core/Server_init.cpp + * DnC/Core/Server_init.h + * DnC/Core/Version.h + + Finished refactoring the Core part of CIAO. + +Wed May 19 15:15:21 2004 Irfan Pyarali + + * tests/RTCCM/DiffServ: + + Added a new DiffServ test. This test is similar to the + RTCORBA/DiffServ test but uses components instead of a client + and server. + + Here are the new files: + + - Controller/Controller.cpp + - Controller/Controller.mpc + - Receiver/Receiver.cidl + - Receiver/Receiver.idl + - Receiver/Receiver.mpc + - Receiver/Receiver_exec.cpp + - Receiver/Receiver_exec.h + - Receiver/Receiver_exec_export.h + - Receiver/Receiver_stub_export.h + - Receiver/Receiver_svnt_export.h + - Sender/Custom_Network_Priority_Mapping.cpp + - Sender/Custom_Network_Priority_Mapping.h + - Sender/Sender.cidl + - Sender/Sender.idl + - Sender/Sender.mpc + - Sender/Sender_exec.cpp + - Sender/Sender_exec.h + - Sender/Sender_exec_export.h + - Sender/Sender_stub_export.h + - Sender/Sender_svnt_export.h + - common/DiffServ.idl + - common/DiffServ.mpc + - common/DiffServ_stub_export.h + - common/DiffServ_svnt_export.h + - descriptors/CIAO_Installation_Data.ini + - descriptors/Receiver.csd + - descriptors/Receiver.ssd + - descriptors/Sender.csd + - descriptors/Sender.ssd + - descriptors/default.cad + - descriptors/remote.cad + - descriptors/rtsvc.conf + - descriptors/test.dat + +Tue May 18 23:20:10 2004 Jaiganesh B + + * DnC/Config_Handlers/CompIntrDesc_Handler.cpp: + * DnC/Config_Handlers/CompIntrDesc_Handler.h: + * DnC/Config_Handlers/Config_Handlers.mpc: + + Updated for handling HREF and IDREF tags. + +Tue May 18 14:43:51 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Property_Handler.h: + * DnC/Config_Handlers/Property_Handler.cpp: + + Revoked previous commit. + +Tue May 18 14:25:25 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Property_Handler.h: + * DnC/Config_Handlers/Property_Handler.cpp: + + Added a xercesc::DOMNode * as a formal argument. Though this + argument is unnecessary in the process_property () function, + this was necessary to have a common signature for all the + process_* functions, so that they could be templatized. + +Tue May 18 12:01:14 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CAD_Handler.h: + + Updated to handle HREF and IDREF tags. + +Tue May 18 06:30:12 UTC 2004 Johnny Willemsen + + * DnC/NodeApplicationManager/NodeApplicationManager.mpc: + Fixed typos in this MPC file + +Tue May 18 00:54:00 2004 Jaiganesh B + + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CAD_Handler.h: + * DnC/Config_Handlers/Config_Handlers.mpc: + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Deployment.idl: + + Made a change to the IDL for the ComponentDataModel + elements. + + Updated the affected handlers. + +Mon May 17 22:15:11 2004 Venkita Subramonian + + * docs/index.html: + * docs/EnvVars.html: + + Left over files from RTCIAO-tests branch merge. Thanks to + Nanbor for pointing this out. + +Mon May 17 21:07:25 2004 Venkita Subramonian + + * tools/static_configurator/Static_Assembly_Visitors.h: + * tools/static_configurator/Static_Configurator.cpp: + * tools/static_configurator/Static_Configurator.mpc: + + Fixed some compile errors because of a typo. + +Mon May 17 19:29:43 2004 Venkita Subramonian + + * tools/RTComponentServer/RTServer_Impl.cpp: + * tools/RTComponentServer/RTServer_Impl.h: + * tools/RTComponentServer/RTServer_Impl.inl: Added extra + parameters to RTContainer_Impl, RTSession_Container and + ComponentServer_Impl ctors for static configuration. + + * tools/static_configurator/Static_Assembly.h: + * tools/static_configurator/Static_Assembly_Visitors.cpp: + * tools/static_configurator/Static_Assembly_Visitors.h: + * tools/static_configurator/Static_Configurator.cpp: + * tools/static_configurator/Static_Configurator.h: + * tools/static_configurator/Static_Configurator.mpc: + + Changes to statically parse .rtcad files and generate main + driver for static RTCCM applications. + +Mon May 17 16:16:37 2004 Venkita Subramonian + + Merging RTCIAO-tests branch to the main trunk. This branch + contained the RTCCM tests from Nanbor (nanbor@txcorp.com). + + * ciao/CIAO_common.h: + * ciao/Client_init.cpp: Minor modifications to CIAO core. Addition + of CIAO_debug_level. + + * ciao/ComponentInstallation_Impl.cpp: + * ciao/ServerActivator_Impl.cpp: + * ciao/ServerActivator_Impl.h: Addition of extra command line + flags to be passed on to the component server during its spawning. + + * tests/RTCCM/Priority_Test/descriptors/CB_Worker.csd: + * tests/RTCCM/Priority_Test/descriptors/IOB_Worker.csd: + * tests/RTCCM/Priority_Test/descriptors/Worker.ssd: + * tests/RTCCM/Priority_Test/descriptors/CIAO_Installation_Data.ini: + * tests/RTCCM/Priority_Test/descriptors/Controller.csd: + * tests/RTCCM/Priority_Test/descriptors/Controller.ssd: + * tests/RTCCM/Priority_Test/descriptors/RTsvc.conf: + * tests/RTCCM/Priority_Test/descriptors/svcmap.dat: + * tests/RTCCM/Priority_Test/descriptors/test.dat: + * tests/RTCCM/Priority_Test/descriptors/test.rtd: + * tests/RTCCM/Priority_Test/descriptors/basic-remote.cad: + * tests/RTCCM/Priority_Test/descriptors/basic_remote.pl: + * tests/RTCCM/Priority_Test/descriptors/basic_rt.rtd: + * tests/RTCCM/Priority_Test/descriptors/basic_test.pl: + * tests/RTCCM/Priority_Test/descriptors/bench.conf: + * tests/RTCCM/Priority_Test/descriptors/Controller25.csd: + * tests/RTCCM/Priority_Test/descriptors/Controller50.csd: + * tests/RTCCM/Priority_Test/descriptors/Controller75.csd: + * tests/RTCCM/Priority_Test/descriptors/demo-25.cad: + * tests/RTCCM/Priority_Test/descriptors/demo-50.cad: + * tests/RTCCM/Priority_Test/descriptors/demo.cad: + * tests/RTCCM/Priority_Test/descriptors/no-rt-3rates.cad: + * tests/RTCCM/Priority_Test/descriptors/rate_test.pl: + * tests/RTCCM/Priority_Test/descriptors/remote.dat: + * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-high-dec.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-high-inc.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-low-dec.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-low-inc.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-mid-dec.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-mid-inc.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rates-dec.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rates-inc.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rates-laned-dec.cad: + * tests/RTCCM/Priority_Test/descriptors/rt-3rates-laned-inc.cad: + * tests/RTCCM/Priority_Test/descriptors/shared_rt.rtd: + + New files for running the test. + + * tests/RTCCM/Priority_Test/Priority_Test.mpc: + * tests/RTCCM/Priority_Test/Workers/Worker.mpc: + * tests/RTCCM/Priority_Test/Controllers/Controller.mpc: Manually + changed the generated MPC files as the "depends" keyword is + depricated by "after" in MPC, and the dependencies is broken in + earlier changes in MPC generator scripts. + + * tests/RTCCM/Priority_Test/Priority_Test.idl: Changed the use of + "unsigned long" type to "long". CIDL compiler doesn't seem to + support unsigned long yet. + + * tests/RTCCM/Priority_Test/Workers/Worker.idl: Fixed a typo. + + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.h: + * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.h: Fixed a + couple of compilation errors and changed some operation + signatures to match the interface change in Priority_Test.idl. + + * tests/RTCCM/Priority_Test/Priority_Test.idl: + * tests/RTCCM/Priority_Test/Controllers/Controller.cidl: + * tests/RTCCM/Priority_Test/Controllers/Controller.idl: + * tests/RTCCM/Priority_Test/Controllers/Controller.mpc: + * tests/RTCCM/Priority_Test/Controllers/ControllerEI.idl: + * tests/RTCCM/Priority_Test/Controllers/Controller_exec.cpp: + * tests/RTCCM/Priority_Test/Controllers/Controller_exec.h: + * tests/RTCCM/Priority_Test/Controllers/Controller_exec_export.h: + * tests/RTCCM/Priority_Test/Controllers/Controller_stub_export.h: + * tests/RTCCM/Priority_Test/Controllers/Controller_svnt_export.h: + * tests/RTCCM/Priority_Test/Controllers/Pulser.cpp: + * tests/RTCCM/Priority_Test/Controllers/Pulser.h: + * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.h: + * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.cpp: + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.h: + * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.h: + * tests/RTCCM/Priority_Test/Workers/README: + * tests/RTCCM/Priority_Test/Workers/Worker.cidl: + * tests/RTCCM/Priority_Test/Workers/Worker.idl: + * tests/RTCCM/Priority_Test/Workers/Worker.mpc: + * tests/RTCCM/Priority_Test/Workers/WorkerEI.idl: + * tests/RTCCM/Priority_Test/Workers/Worker_exec_export.h: + * tests/RTCCM/Priority_Test/Workers/Worker_stub_export.h: + * tests/RTCCM/Priority_Test/Workers/Worker_svnt_export.h: + * tests/RTCCM/Priority_Test/descriptors/CB_Worker.csd: + * tests/RTCCM/Priority_Test/descriptors/IOB_Worker.csd: + * tests/RTCCM/Priority_Test/descriptors/Worker.ssd: + + New files for test Worker components. + + * tests/RTCCM/Priority_Test/Priority_Test.idl: + * tests/RTCCM/Priority_Test/Priority_Test.mpc: + * tests/RTCCM/Priority_Test/Priority_Test_stub_export.h: + * tests/RTCCM/Priority_Test/Priority_Test_svnt_export.h: + + Added files for RTCCM Priority_Test project. + + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/OEP/BasicSP/EC/EC_exec.cpp: + * examples/OEP/BasicSP/EC/client.cpp: + * examples/OEP/BasicSP/EC/controller.cpp: + * examples/OEP/Display/GPS/GPS_exec.cpp: + * examples/OEP/Display/GPS/GPS_tracing_exec.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/OEP/Display/RateGen/RateGen_exec.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp: + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + + Added CIAO::debug_level to facilitate conditional printing of + debug messages. + + * performance-tests/Benchmark/RoundTripClient/run_test.pl: + * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl: + + Setting CIAO_ROOT if not already set. + + * tools/Assembly_Deployer/Assembly_Deployer.cpp: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Impl.h: + * tools/Assembly_Deployer/Assembly_Impl.inl: + * tools/Assembly_Deployer/Assembly_Visitors.cpp: + * tools/RTComponentServer/ComponentServer_Task.cpp: + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/ServerActivator/ServerActivator.cpp: + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/RTConfig_Handlers.cpp: + * tools/XML_Helpers/Svcconf_Handler.cpp: + + Minor changes including adding CIAO::debug_level. + + * tools/ComponentServer/ComponentServer.cpp: Changes to run + component server in SCHED_FIFO class. + + * tools/Daemon/CIAO_Daemon.cpp: Added command line processing for + extra command-line argument for component server process. + + * tools/XML_Helpers/XMLHelpers.mpc: Added ciao_client to the base + project list so as to link in the CIAO::debug_level feature. + +Mon May 17 19:01:36 2004 Tao Lu + + * DnC/ExecutionManager/ExecutionManager_Impl.cpp: + * DnC/ExecutionManager/ExecutionManager_Impl.h: + * DnC/ExecutionManager/ExecutionManager_Impl.inl: + * DnC/NodeApplicationManager/CIAO_NodeApplicationManager.idl: + * DnC/NodeApplicationManager/NodeApplicationManager.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager.mpc: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl: + * DnC/NodeManager/NodeDaemon.idl: + * DnC/NodeManager/NodeDaemon.mpc: + * DnC/NodeManager/NodeDaemon_Impl.cpp: + * DnC/NodeManager/NodeDaemon_Impl.h: + * DnC/NodeManager/NodeDaemon_Impl.inl: + * DnC/NodeManager/Node_Daemon.cpp: + Added these files. + + * DnC/Node/NodeApplicationManager_Impl.h + * DnC/Node/NodeApplication_Impl.h + Removed these files. + +Mon May 17 16:17:40 2004 Jaiganesh B + + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Plan_Handler.h: + + Updated the handler to handle updated IDREFs. + +Mon May 17 10:11:46 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Plan_Handler.h: + * DnC/Config_Handlers/Domain_Handler.h: + + Replaced the use of a Synch_Mutex with that of a Null_Mutex as + there will not be multiple threads parsing the handler. + +Mon May 17 11:24:11 UTC 2004 Johnny Willemsen + + * DnC/Config_Handlers/Plan_Handler.h: + Fixed fuzz error + +Sun May 16 12:39:40 2004 Arvind S. Krishna + + * DnC/Config_Handlers/DnC_Dump.h: + * DnC/Config_Handlers/DnC_Dump.cpp: + + Added dump functions to print out values encoded within a + CORBA::Any. Currently, this handles only basic types, support + for types encoded using CORBA::DnyAny needs to be incorporated. + +Sun May 16 01:17:44 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Changed the data structures needed by the Execution + data model, to conform to the model given in the + specification + + * DnC/Config_Handlers/Plan_Handler.cpp: + * DnC/Config_Handlers/Plan_Handler.h: + * DnC/Config_Handlers/Config_Handlers.mpc: + * DnC/Config_Handlers/Domain_Handler.cpp: + + Added a new top level handler for the DeploymentPlan. + + Since the IDL changed, i had to change 11 other handlers + and included them within the top level handler. + + Updated the .mpc file accordingly. + +Fri May 14 20:53:37 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Separated the data model definitions from the + management model definitions. + +Fri May 14 15:28:56 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp: + + Updated Domain_Handler_Test.cpp to use the dump + functions within the DnC_Dump.cpp rather than the + functions from Domain_Handler.cpp. + + Removed the unnecessary functions from the Domain_Handler.cpp. + +Fri May 14 15:13:17 2004 Jaiganesh B + + * DnC/Config_Handlers/DnC_Dump.cpp: + * DnC/Config_Handlers/DnC_Dump.h: + + Added the dump functions for the Domain Handler. + +Fri May 14 12:17:55 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Requirement_Handler.cpp: + * DnC/Config_Handlers/Property_Handler.cpp: + * DnC/Config_Handlers/SP_Handler.cpp: + * DnC/Config_Handlers/RS_Handler.cpp: + + Among, the common data type handlers, the aforementioned four + handlers need to handle elements that can be referenced via + tags and tags. In this commit, I have addressed + parsing tags, next, more complicated step will be to + handle tags. + +Thu May 13 22:56:22 2004 Arvind S. Krishna + + * DnC/Config_Handlers/DnC_Dump.cpp: + + Filled in the dump_* functions that pertain to common + elements. Howerver, dumping data stored in a CORBA::Any would + not be possible unless we know what value is stored in the first + place! Hence, we may need to re think this approach for Anys. + + * DnC/Requirement_Handler.cpp: + + Updated the handler to process the tag added to the + Deployment schema. + +Thu May 13 19:46:24 2004 Krishnakumar B + + * DnC/Deployment.xsd: Reverted an accidental check-in that + introduced a bogus schema. + +Thu May 13 17:50:16 2004 Arvind S. Krishna + + * DnC/Deployment.xsd: + + Added the name attribute for the Deployment:Requirement complex + type defined in the schema. This was present in the model but + not in the schema and necessitated this addition. + +Thu May 13 15:13:50 2004 Jaiganesh B + + * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp: + * DnC/tests/Config_Handlers/Domain_Handler_Test.mpc: + + Added the test to test the Domain Handler. + +Thu May 13 14:27:14 2004 Jaiganesh B + + * DnC/Config_Handlers/CompPortDesc_Handler.cpp: + * DnC/Config_Handlers/Config_Handlers.mpc: + + Changed the library name from Config_Handers + to Config_Handlers in the .mpc file. + + Included scop resolution operators for all + class member function definitions in the .cpp file. + +Thu May 13 13:10:35 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Updated Domain_Handler to handle property and + satisfier property elements. + +Wed May 12 20:05:55 2004 Ossama Othman + + * examples/handcrafted/BasicSP_EC/EC/client.cpp: + + Corrected case of header file in #include directive. + "ace/Streams.h" -> "ace/streams.h". Blame it on MS Windows case + insenstivity. :-) + +Wed May 12 15:52:29 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Utils.h: + * DnC/Config_Handlers/Utils.cpp: + + Added two utility methods create_document () and parse_href_tag + () that will allow creation of an iterator pointing to top of + the document as specified in the tag. Now all + handlers that need to handle definitions can make use of + this utility. + +Wed May 12 15:08:14 2004 Jeff Parsons + + * examples/Hello/Hello_Base/Hello_Base.mpc: + + Copied export macro settings from stub project to servant + project. The servant project had only one export macro + defined for both *C.h and *S.h files, and so was + clobbering the stub export macro already generated. + +Wed May 12 14:25:00 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Added some more general functions. + +Wed May 12 13:51:37 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Added some general functions which other handlers could + use. + +Wed May 12 12:59:21 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Added dump functions for the structures. + +Wed May 12 12:44:40 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Made changes to handle HREF tags within + another referenced document. + +Wed May 12 00:06:26 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Made changes to handle HREF tags. + +Tue May 11 22:58:35 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Changes to support multiplex uses ports in components. + Thanks to Bala Natarajan for + writing the hand-crafted version of the servant glue + code. + +Tue May 11 22:55:22 2004 Jeff Parsons + + * examples/OEP/BasicSP/BasicSP.mpc: + + Fixed IDL compiler command line options so the stub and + skeleton export macros will get generated correctly regardless + of the order of execution of the stub and skeleton project + generation. + +Tue May 11 16:12:07 2004 Arvind S. Krishna + + * DnC/Config_Handlers/DT_Handler.h: + * DnC/Config_Handlers/DT_Handler.cpp: + + Added CORBA::TypeCode::duplicate for basic type codes as the + individual handlers and IDL structures will be releasing the + typecodes generated. + + * DnC/Config_Handlers/Any_Handler.h: + * DnC/Config_Handlers/Any_Handlers.cpp: + + Insted of requiring that each top level handler pass an ORB + reference to the Any handler, now the Any handler calls ORB init + There is not additional overhead other than the call as the same + ORB reference is returned each time from the ORB table + + * DnC/Config_Handlers/Config_Handlers.mpc: + + Added targets Any_Handler.cpp and DT_Handler.cpp + +Tue May 11 12:51:14 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/Config_Handlers/Domain_Handler.cpp: + + Changed the interface of the functions process_domain_node + and process_domain_bridge. + +Tue May 11 12:25:39 2004 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + + Fixed bug in home operation emitter. + +Tue May 11 11:17:25 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Any_Handler.h: + * DnC/Config_Handlers/Any_Handler.cpp: + + Any handler that processes schema definitions of the type + ... . Currently, this handler supports only built-in + types. Issues pertaining to specifying properties in IDL (typed) + v/s specifying them in schema (dynamic) as an Any are being + examined + +Tue May 11 10:45:55 2004 Boris Kolpackov + + * CCF/CCF/IDL3/LexicalAnalyzer.cpp: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/IDL3/Parser.hpp: + * CCF/CCF/IDL3/SemanticAction/Uses.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp: + * CCF/CCF/IDL3/SemanticGraph/Component.cpp: + * CCF/CCF/IDL3/SemanticGraph/Component.hpp: + * CCF/CCF/IDL3/Traversal/Component.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Support for uses multiple. + +Tue May 11 01:47:27 2004 Krishnakumar B + + * DnC/Config_Handlers/XercesString.cpp (Config_Handler): When + changing the function used to compare strings from + XMLString::equals() to XMLString::compareIString(), a check on + the return value equal to zero is needed to ensure similar + semantics. + +Tue May 11 00:18:58 2004 Krishnakumar B + + * DnC/Config_Handlers/XercesString.cpp (Config_Handler): Changed + the comparison function to use case-insensitive comparison, as + case doesn't make sense while comparing XML strings. + +Mon May 10 23:35:25 2004 Jaiganesh B + + * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp: + + Added a new test to test the Domain Handler, which + parses the D&C specification's DomainDescriptor. + +Mon May 10 22:40:37 2004 Jaiganesh B + + * DnC/Config_Handlers/DnC_Dump.cpp: + * Dnc/Config_Handlers/DnC_Dump.h: + * DnC/Config_Handlers/Config_Handlers.mpc: + + I moved DnC_Dump.{h,cpp} from DnC/ to + DnC/Config_Handlers + +Mon May 10 19:04:57 2004 Arvind S. Krishna + + * DnC/Config_Handlers/DT_Handler.h: + * DnC/Config_Handlers/DT_Handlers.cpp: + + Type code operations especially creation of dynamic typecodes + require operations defined in the ORB interface. Hence, instead + of calling ORB::init within this common handlers, changed the + interface of the process_DataType method to require a + CORBA::ORB_ptr. Also modularized the creation of typecodes into + process_basic_tc, process_enum_tc etc depending on the *type* of + typecode to be created + + * DnC/Config_Handlers/Utils.h: + * DnC/Config_Handlers/Utils.cpp: + + Added helper methods that allow coversion to CORBA::* types from + string values. These helper methods will be used by the Any + handler to insert the required values into a CORBA::Any object + dynamically. + +Mon May 10 18:56:11 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/Config_Handlers/Domain_Handler.cpp: + + Made changes to handle the "Property" elements. + +Mon May 10 18:21:34 2004 Arvind S. Krishna + + * DnC/Config_Handlers/DT_Handler.h: + * DnC/Config_Handlers/DT_Handler.cpp: + Data_Type handler class that parses the .. tags + in the Deployment schema. + +Mon May 10 13:42:04 2004 Arvind S. Krishna + + * DnC/Config_Handlers/Domain_Handler.cpp: + Removed the trailing #endif as the corresponding #ifndef was + removed earlier. + +Sun May 9 19:28:56 2004 Jaiganesh B + + * DnC/Domain_Handler.cpp: + + Made some changes to the dump function to print the + contents of the data structure. + +Sun May 9 17:32:11 2004 Arvind S. Krishna + + * DnC/Config_Handlers/ACD_Handler.cpp: + * DnC/Config_Handlers/ADD_Handler.cpp: + * DnC/Config_Handlers/APM_Handler.cpp: + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/Cap_Handler.cpp: + * DnC/Config_Handlers/CEPE_Handler.cpp: + * DnC/Config_Handlers/CompImplDes_Handler.cpp: + * DnC/Config_Handlers/CompIntrDesc_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/CompPortDesc_Handler.cpp: + * DnC/Config_Handlers/Config_Error_Handler.cpp: + * DnC/Config_Handlers/CPR_Handler.cpp: + * DnC/Config_Handlers/CRDD_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/DP_Handler.cpp: + * DnC/Config_Handlers/ERE_Handler.cpp: + * DnC/Config_Handlers/IAD_Handler.cpp: + * DnC/Config_Handlers/IDD_Handler.cpp: + * DnC/Config_Handlers/ID_Handler.cpp: + * DnC/Config_Handlers/IRDD_Handler.cpp: + * DnC/Config_Handlers/IR_Handler.cpp: + * DnC/Config_Handlers/MDD_Handler.cpp: + * DnC/Config_Handlers/MID_Handler.cpp: + * DnC/Config_Handlers/NIA_Handler.cpp: + * DnC/Config_Handlers/PCD_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/PCI_Handler.cpp: + * DnC/Config_Handlers/PPM_Handler.cpp: + * DnC/Config_Handlers/Property_Handler.cpp: + * DnC/Config_Handlers/PSPE_Handler.cpp: + * DnC/Config_Handlers/PSPR_Handler.cpp: + * DnC/Config_Handlers/RDD_Handler.cpp: + * DnC/Config_Handlers/Requirement_Handler.cpp: + * DnC/Config_Handlers/RS_Handler.cpp: + * DnC/Config_Handlers/SID_Handler.cpp: + * DnC/Config_Handlers/SPE_Handler.cpp: + * DnC/Config_Handlers/SP_Handler.cpp: + * DnC/Config_Handlers/SPK_Handler.cpp: + * DnC/Config_Handlers/SPR_Handler.cpp: + Removed all #ifndef definitions that hide multiple includes from + the .cpp files. These implementations being non-templatized will + not be included in any header files. Hence the guard for + multiple inclusions should not be present in them similar to + other .cpp files in TAO. + +Sun May 9 14:07:10 2004 Jaiganesh B + + * DnC/Deployment.idl: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + + Made changes to the IDL and supported the same in my + XML handlers. + +Sun May 9 13:06:48 2004 Tao Lu + + * DnC/Deployment.mpc: + * DnC/Config_Handlers/Config_Handlers.mpc: + Added requries += dnc to avoid unintentional build of DnC + directory. + +Sun May 9 09:08:06 2004 Balachandran Natarajan + + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.h: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.h: + * examples/OEP/BasicSP/EC/EC_exec.cpp: + * examples/OEP/BasicSP/EC/EC_exec.h: + * examples/OEP/Display/GPS/GPS_exec.cpp: + * examples/OEP/Display/GPS/GPS_exec.h: + * examples/OEP/Display/GPS/GPS_tracing_exec.cpp: + * examples/OEP/Display/GPS/GPS_tracing_exec.h: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.h: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * examples/OEP/Display/RateGen/RateGen_exec.cpp: + * examples/OEP/Display/RateGen/RateGen_exec.h: + + More fixes to the executors. + +Sun May 9 07:46:35 2004 Balachandran Natarajan + + * ciao/CCM_Component.idl: + * ciao/CCM_Container.idl: + + Added CIAO specific operations ciao_practivate () and + ciao_postactivate () which would allow the deployment + infrastructure to invoke them before and after ccm_activate + (). There are more elegant methods to do this, but for want of + time we will just stick to this. We can revisit this later if + needed. There is a need for such things in some projects that we + are working on to initialize a few things upfront and tear them + later. The downside of this is that the executors need to + implement ciao_preactivate () and ciao_postactivate (). I think + there is a good idea to avoid that. We will visit that soon. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added code generation for ciao_preactivate () and + ciao_postactivate (). + + * tools/Assembly_Deployer/Assembly_Impl.cpp: + + Cosmetic fix. + + * tools/Assembly_Deployer/Assembly_Visitors.h: + + Added a typedef for the iterator in the CIAO::Assembly_Context + struct. + + * tools/Assembly_Deployer/Assembly_Visitors.cpp: + + Iterate over the CCMObject references and call preactivate, + activate and postactivate on all of them one after another. + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/Sender_exec.h: + + Added the preactivate and postactivate calls. + +Sat May 8 15:19:18 2004 Jaiganesh B + + * DnC/Config_Handlers/ACD_Handler.cpp: + * DnC/Config_Handlers/ADD_Handler.cpp: + * DnC/Config_Handlers/APM_Handler.cpp: + * DnC/Config_Handlers/CAD_Handler.cpp: + * DnC/Config_Handlers/CPR_Handler.cpp: + * DnC/Config_Handlers/CRDD_Handler.cpp: + * DnC/Config_Handlers/CompImplDesc_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + * DnC/Config_Handlers/CompPortDesc_Handler.cpp: + * DnC/Config_Handlers/Config_Handlers.mpc: + * DnC/Config_Handlers/DP_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/Config_Handlers/IDD_Handler.cpp: + * DnC/Config_Handlers/IRDD_Handler.cpp: + * DnC/Config_Handlers/MDD_Handler.cpp: + * DnC/Config_Handlers/MID_Handler.cpp: + * DnC/Config_Handlers/PCD_Handler.cpp: + * DnC/Config_Handlers/PCI_Handler.cpp: + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/PPM_Handler.cpp: + * DnC/Config_Handlers/PSPE_Handler.cpp: + * DnC/Config_Handlers/PSPR_Handler.cpp: + * DnC/Config_Handlers/RDD_Handler.cpp: + * DnC/Config_Handlers/SID_Handler.cpp: + * DnC/Config_Handlers/SPE_Handler.cpp: + * DnC/Config_Handlers/SPR_Handler.cpp: + + Removed unnecessary declaration of ACE_DECLARE_NEW_CORBA_ENV + +Sat May 8 14:53:33 2004 Jaiganesh B + + * DnC/Config_Handlers/Domain.cpp: + + Added a sample "main" program to test the Domain_Handler + wrriten to parse the DomainDescriptor. + +Sat May 8 14:50:26 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Added a missing structure member infoProperty + to the structure Domain. + +Fri May 7 20:38:15 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + A fix for generated code for inherited home factory operations. + It makes use of the fact that a derived home must manage a + component that is derived from the component its base home + manages. This means that the corresponding executor classes + have the same inheritance relationships. When a call is + made to a base home factory operation on a derived home, + the derived home's managed component will be returned as + a base component reference. Operations called on this + component will end up in the derived component executor + (the user must implement the inherited operations, although + the implementation may be different than that in the + base component executor). + +Fri May 7 17:19:02 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Filled in some missing items in generation of facet, component + and home servant classes, and of component context classes. + These missing items included some cases of code generation for + things inherited from the base home or the base component, such + as regular operations, attribute operations, port operations, + and home factory operations, as well as operations and attributes + of supported interfaces and their ancestors. Note that there + is still a problem with compiling home factory operations + inherited from a base home, but this problem will be fixed + with the upcoming refactoring of the CIAO-specific + _ciao_activate_component() and _ciao_passivate_component() + methods in the home servant class. This fix closes [BUGID:1800]. + +Fri May 7 14:46:54 2004 Ossama Othman + + * GNUmakefile: + + Removed this GNUmakefile. It must now be generated by MPC. + +Fri May 7 13:17:10 2004 Jaiganesh B + + * DnC/ConFig_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/Config_Handlers/Resource_Handler.cpp: + * DnC/Config_Handlers/SR_Handler.cpp: + + Updated the handlers to handler href, xmi:id cases. + +Fri May 7 12:53:34 2004 Tao Lu + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + Fixed a bug for using MPC to build CCF. + +Fri May 7 12:44:42 2004 Arvind S. Krishna + + * DnC/Config_Handlers/RS_Handler.cpp: + + Modified the handler to parse out of order schema + definitions. Now parsing is independent of the appearance of the + schema elements as it should be. + +Thu May 6 16:20:00 2004 Arvind S. Krishna + + * DnC/Config_Handlers/SP_Handler.cpp: + + Added functionality to parse the schema definitions when the + individual elements appear in no specific order. + +Mon May 3 23:04:13 2004 Ossama Othman + + * CIAO-INSTALL.html: + + Corrected typo. + +Mon May 3 23:17:31 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Changed the datatype from ULongSeq to StringSeq + in the following structures: + + SharedResource, Node, Interconnect and Bridge. + +Mon May 3 22:44:09 2004 George Edwards + + * DnC/Deployment.idl: + + Fixed ComponentPortDescription struct to comply with new spec. + + * DnC/Deployment.mpc: + + Added DnC_Dump.cpp to Deployment_stub project. + + * DnC/DnC_Dump.h: + * DnC/DnC_Dump.cpp: + + Added dump functions for PackageConfiguration, + ComponentPackageDescription, PackagedComponentImplementation, + ComponentPortDescription, and ComponentPropertyDescription. + +Mon May 3 00:00:00 2004 Ossama Othman + + * Makefile*: + + Removed all Makefiles. GNUmakefiles must now be generated by + MPC. + +Sat May 1 22:37:33 2004 Ossama Othman + + * Makefile: + * GNUmakefile: + + Renamed "Makefile" to "GNUmakefile" to make it obvious to + users that GNU Make is required to parse the file. + +Fri Apr 30 17:46:09 2004 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + + Implemented supporting of forward declared interfaces. + Also some minor tweaking for Intel C++. + +Fri Apr 30 13:08:04 2004 Gan Deng + + * DnC/DnC_Dump.h: + * DnC/DnC_Dump.cpp: + + Added these two new files. These two files created a + DnC_Dump class which is used to print out the contents + of various IDL data structures. + +Thu Apr 29 22:56:04 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Rolled back some changes made on the TargetDataModel + structures. + +Thu Apr 29 22:34:41 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Changed all the structures in the TargetData Model + to match what is given in the spec. + +Thu Apr 29 22:26:05 2004 Jaiganesh B + + * DnC/Deployment.idl: + + Made a change in the structure Domain + to add a new field info_property + which is of the type Properties. + +Thu Apr 29 18:46:51 2004 Jaiganesh B + + * DnC/Config_Handlers/Config_Error_Handler.h: + * DnC/Config_Handlers/Config_Error_Handler.cpp: + + Generic Error Handler class for the main functions + which we will be writing to dump out the IDL + data structures populated by the XML handlers. + +Thu Apr 29 18:09:41 2004 Jaiganesh B + + * DnC/Deployment.xsd: + + Fixed a type "xsl" tp "xsd" + +Thu Apr 29 17:47:04 2004 Jaiganesh B + + * DnC/Deployment.xsd: + * DnC/XMI.xsd: + + Updated the schemaLocation attribute within the + Deployment.xsd schema and + added the appropriate XMI.xsd file. + +Thu Apr 29 06:13:23 2004 Aniruddha Gokhale + + * DnC/Deployment.idl: + struct ComponentImplementationDescription: Added new field called + infoProperty of type Properties (Issue 5967). + + struct ImplementationRequirement: added a new struct (Issue 6392) + + * Dnc/ConfigHandlers/CompImplDesc_Handler.cpp: + Fixed compilation errors due to incorrect naming usage of a typedef. + +Mon Apr 26 23:40:27 2004 Balachandran Natarajan + + * ciao/Cookies.cpp: + * ciao/Cookies.h: + * ciao/Cookies.inl: + + Subtle changes to improve interoperability. + + Problem: We, for some unknown reason, created a proprietary + cookie called CIAO::Map_Key_Cookie (which inherited from an IDL + type CIAO::Cookie) and used that as a concrete implementation of + Components::Cookie. + + Context: Though this would work, this breaks interoperability + when the Cookies are send on the wire. The remote target tries + to unmarshal the CIAO::Cookie valuetype as a Component::Cookie + which fails miserably. + + Solution: Deprecate this proprietary IDL type CIAO::Cookie and + make Map_Key_Cookie inherit directly from Component::Cookie. + + Made some changes to the interface to return a bool instead of + an int. + + * ciao/CIAO_Value.idl: + + Added note for deprecation. + + * CIDLC/ServantSourceGenerator.cpp: + + The call to Map_Key_Cookie::extract () should check for a false + instead of -1. + + * tools/Assembly_Deployer/Assembly_Impl.cpp: + + The call to Map_Key_Cookie::extract () should check for a false + instead of -1. + + Thanks to Ed Mulholland and Jacques Kerner for reporting the + problem. + +Mon Apr 26 17:35:29 2004 George Edwards + + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + + Made changes to fix compilation errors. + +Mon Apr 26 12:19:56 2004 Jaiganesh B + + * DnC/Config_Handlers/IC_Handler.cpp: + + Made changes to fix some compiler issues. + +Mon Apr 26 12:13:36 2004 Jaiganesh B + + * DnC/Config_Handlers/Bridge_Handler.h: + * DnC/Config_Handlers/Bridge_Handler.h: + * DnC/Config_Handlers/IC_Handler.cpp: + * DnC/Config_Handlers/IC_Handler.h: + * DnC/Config_Handlers/Node_Handler.h: + * DnC/Config_Handlers/Node_Handler.cpp: + * DnC/Config_Handlers/Resource_Handler.cpp: + * DnC/Config_Handlers/Resource_Handler.h: + * DnC/Config_Handlers/SR_Handler.h: + * DnC/Config_Handlers/SR_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.cpp: + + Made changes to fix some compiler issues. + +Mon Apr 26 11:50:48 2004 Jaiganesh B + + * DnC/Config_Handlers/Bridge_Handler.h: + * DnC/Config_Handlers/Bridge_Handler.cpp: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/IC_Handler.cpp: + * DnC/Config_Handlers/IC_Handler.h: + * DnC/Config_Handlers/Node_Handler.h: + * DnC/Config_Handlers/Resource_Handler.cpp: + * DnC/Config_Handlers/Resource_Handler.h: + * DnC/Config_Handlers/SR_Handler.h: + + Made changes to fix some compiler issues. + +Mon Apr 26 08:57:37 2004 Aniruddha Gokhale + + * DnC/Config_Handlers/Config_Handlers.mpc: + Added Cap_Handler.cpp + Added CompIntrDesc_Handler.cpp + Added CompPortDesc_Handler.cpp + Added IAD_Handler.cpp + Added IR_Handler.cpp + Added NIA_Handler.cpp + + * DnC/Config_handlers/SR_Handler.cpp: + Included SP_Handler.h + Fixed undefined variables and conversion from string to long + + * DnC/Config_handlers/Node_Handler.cpp: + Fixed errors arising out of using same name for variables of + different types in the same scope (one defined in the parameter + and another as a loop variable). + + Fixed errors in type coversion. + + * DnC/Config_handlers/Resource_Handler.cpp: + Fixed errors in type coversion. + + * DnC/Config_handlers/MID_Handler.cpp: + Fixed an error due to incorrect number of parameters + + * DnC/Config_handlers/DP_Handler.cpp: + Fixed an error due to incorrect number of parameters and + incorrect file name inclusion. + + +Mon Apr 26 14:04:32 UTC 2004 Johnny Willemsen + + * ciao/CCM_Core.mpc: + CIAO_Server must link with CIAO_Container. Not doing so causes link + errors with Borland. + +Mon Apr 26 09:33:12 UTC 2004 Johnny Willemsen + + * DnC/Config_Handlers/Config_Handlers.mpc: + Removed not needed / after $(CIAO_ROOT)/DnC in includes. This gave + problems with Borland + +Sun Apr 25 07:42:06 2004 Aniruddha Gokhale + + * DnC/Config_Handlers/Config_Handlers.mpc: + Added Bridge_Handler.cpp + Added Domain_Handler.cpp + Added IC_Handler.cpp + Added Node_Handler.cpp + Added Resource_Handler.cpp + Added SR_Handler.cpp + + +Sat Apr 24 23:43:13 2004 Jaiganesh B + + * DnC/Config_Handlers/Bridge_Handler.cpp: + * DnC/Config_Handlers/Bridge_Handler.h: + * DnC/Config_Handlers/Domain_Handler.h: + * DnC/Config_Handlers/Domain_Handler.cpp: + * DnC/Config_Handlers/IC_Handler.h: + * DnC/Config_Handlers/IC_Handler.cpp: + * DnC/Config_Handlers/Node_Handler.h: + * DnC/Config_Handlers/Node_Handler.cpp: + * DnC/Config_Handlers/Resource_Handler.h: + * DnC/Config_Handlers/Resource_Handler.cpp: + * DnC/Config_Handlers/SR_Handler.h: + * DnC/Config_Handlers/SR_Handler.cpp: + + Added the following handlers belonging to the + Target Data Model. + +Sat Apr 24 23:13:56 2004 Aniruddha Gokhale + + * DnC/Deployment.idl: + struct ComponentPackageReference: Added two new fields called + requiredUUID and requiredName of type string (Issue 6047). + + * DnC/Config_Handler/SPE_Handler.h: + * DnC/Config_Handler/SPE_Handler.cpp: + * DnC/Config_Handler/ACD_Handler.h: + * DnC/Config_Handler/ACD_Handler.cpp: + * DnC/Config_Handler/APM_Handler.h: + * DnC/Config_Handler/APM_Handler.cpp: + * DnC/Config_Handler/MID_Handler.h: + * DnC/Config_Handler/MID_Handler.cpp: + Enclosed these into the CIAO namespace + + Removed needless copies by having the parent (caller) provide + the memory for the child (callee) to populate it. + + Other cosmetic changes, fixing typos. + + * DnC/Config_Handler/PC_Handler.cpp: + * DnC/Config_Handler/PCI_Handler.cpp: + Fixed undefined variables. + + * DnC/Config_Handler/CAD_Handler.h: + * DnC/Config_Handler/CAD_Handler.cpp: + XML handlers for the ComponentAssemblyDescription artifact of + the Component Data Model. + + * DnC/Config_Handler/SID_Handler.h: + * DnC/Config_Handler/SID_Handler.cpp: + XML handlers for the ComponentPackageReference artifact of + the Component Data Model. + + * DnC/Config_Handler/CPR_Handler.h: + * DnC/Config_Handler/CPR_Handler.cpp: + XML handlers for the ComponentPackageReference artifact of + the Component Data Model. + + * DnC/Config_Handler/SPR_Handler.h: + * DnC/Config_Handler/SPR_Handler.cpp: + XML handlers for the SubcomponentPropertyReference artifact of + the Component Data Model. + + * DnC/Config_Handler/CompImplDesc_Handler.h: + * DnC/Config_Handler/CompImplDesc_Handler.cpp: + XML handlers for the ComponentImplementationDescription artifact of + the Component Data Model. + + * DnC/Config_Handler/DP_Handler.cpp: + Renamed included file CID_Handler.h to CompIntfDesc_Handler.h + since there was a name clash. + + * DnC/Config_Handler/Config_Handlers.mpc: + Fixed the CONFIG_HANDLER_BUILD_DLL typo + Added ACD_Handler.cpp + Added APM_Handler.cpp + Added CAD_Handler.cpp + Added MID_Handler.cpp + Added SPE_Handler.cpp + Added CompImplDesc_Handler.cpp + Added CompPkgDesc_Handler.cpp + Added PC_Handler.cpp + Added PCI_Handler.cpp + Added SID_Handler.cpp + Added CPR_Handler.cpp + Added SPR_Handler.cpp + Reincluded DP_Handler.cpp + +Sat Apr 24 22:25:55 2004 George Edwards + + Added files: + * DnC/Config_Handlers/PCI_Handler.h: + * DnC/Config_Handlers/PCI_Handler.cpp: + + Added new handlers for PackagedComponentImplementation. + +Sat Apr 24 21:22:48 2004 George Edwards + + Added files: + * DnC/Config_Handlers/PC_Handler.h: + * DnC/Config_Handlers/PC_Handler.cpp: + * DnC/Config_Handlers/CompPkgDesc_Handler.h: + * DnC/Config_Handlers/CompPkgDesc_Handler.cpp: + + Added new handlers for PackageConfiguration and + ComponentPackageDescription. + +Sat Apr 24 16:02:03 2004 Jaiganesh B + + * DnC/Config_Handler/Domain_Handler.h: + + Added a header file for the new handler about to + be written. + + This handler will parse the "Domain" type + defined in the Deployment.xsd schema of the + DnC specification. + +Sat Apr 24 10:46:14 2004 Arvind S. Krishna + + * DnC/Config_Handler/PCD_Handler.cpp: + * DnC/Config_Handler/ERE_Handler.h: + * DnC/Config_Handler/ERE_Handler.cpp: + + Missed out on these handlers in my earlier commit. Made the same + changes as listed earlier for these handlers as well + +Fri Apr 23 19:45:53 2004 Arvind S. Krishna + + * DnC/Config_Handler/ADD_Handler.cpp: + * DnC/Config_Handler/DP_Handler.cpp: + * DnC/Config_Handler/CRDD_Handler.cpp: + * DnC/Config_Handler/IDD_Handler.cpp: + * DnC/Config_Handler/IRDD_Handler.cpp: + * DnC/Config_Handler/MDD_Handler.cpp: + * DnC/Config_Handler/RDD_Handler.cpp: + * DnC/Config_Handler/PCD_Handler.cpp: + * DnC/Config_Handler/DP_Handler.cpp: + + Eliminated the additional copy incurred when sequences are + populated by de-referencing pointer to sequence return + type. This fixes Andy's comments in the files that unearthed + this problem. Please grep for Arvind: comments to see how the + problem has been fixed + + * DnC/Config_Handler/Config_Handlers.mpc: + + Commented out DP_Handler.cpp from the list of files to be + compiled as it requires CID.h file that is not yet written! This + ensures that the Handlers build. + + * DnC/Config_Handler/Any_Handler.h: + * DnC/Config_Handler/CEPE_Handler.h: + * DnC/Config_Handler/ID_Handler.h: + * DnC/Config_Handler/Property_Handler.h: + * DnC/Config_Handler/RS_Handler.h: + * DnC/Config_Handler/SP_Handler.h: + * DnC/Config_Handler/SPK_Handler.h: + * DnC/Config_Handler/Requirement_Handler.h: + + Changed the interfaces of each process_ methods to + take a reference to the required return type rather than return + a pointer to the allocated return value. This change was + necessary to accommodate the use-cases defined in top level + handlers. + + * DnC/Config_Handler/Any_Handler.cpp: + * DnC/Config_Handler/CEPE_Handler.cpp: + * DnC/Config_Handler/ID_Handler.cpp: + * DnC/Config_Handler/Property_Handler.cpp: + * DnC/Config_Handler/RS_Handler.cpp: + * DnC/Config_Handler/SP_Handler.cpp: + * DnC/Config_Handler/SPK_Handler.cpp: + * DnC/Config_Handler/Requirement_Handler.cpp: + + Removed all memory allocation for the return types within the + Common element handler implementations. In the current use case, + all the return types are passed in as references. Therefore, it + is now the responsibility of the caller to allocate memory for + the corresponding data-types. + +Fri Apr 23 10:57:26 2004 Aniruddha Gokhale + + * DnC/Deployment.idl: + struct ConnectionResourceDeploymentDescription: Added a new struct + and corresponding unbounded sequence (Issue 6392). + + struct PlanSubcomponentPropertyReference: Replaced instanceRef + field with a field called instance of type + InstanceDeploymentDescription. + + struct PlanSubcomponentPortEndpoint: Replaced instanceRef and + kind fields with a field called instance of type + InstanceDeploymentDescription. + + struct PlanConnectionDescription: Added a field called + deployedResource of type ConnectionResourceDeploymentDescriptions. + + * DnC/Config_Handler/IRDD_Handler.h: + * DnC/Config_Handler/IRDD_Handler.cpp: + XML handlers for the InstanceResourceDeploymentDescription artifact of + the Execution Model. + + * DnC/Config_Handler/IDD_Handler.h: + * DnC/Config_Handler/IDD_Handler.cpp: + XML handlers for the InstanceDeploymentDescription artifact of + the Execution Model. + + * DnC/Config_Handler/IRDD_Handler.h: + * DnC/Config_Handler/IRDD_Handler.cpp: + XML handlers for the ConnectionResourceDeploymentDescription artifact of + the Execution Model. + + * DnC/Config_Handler/PCD_Handler.h: + * DnC/Config_Handler/PCD_Handler.cpp: + XML handlers for the PlanConnectionDescription artifact of + the Execution Model. + + * DnC/Config_Handler/PSPE_Handler.h: + * DnC/Config_Handler/PSPE_Handler.cpp: + XML handlers for the PlanSubcomponentPortEndpoint artifact of + the Execution Model. + + * DnC/Config_Handler/PPM_Handler.h: + * DnC/Config_Handler/PPM_Handler.cpp: + XML handlers for the PlanPropertyMapping artifact of + the Execution Model. + + * DnC/Config_Handler/PSPR_Handler.h: + * DnC/Config_Handler/PSPR_Handler.cpp: + XML handlers for the PlanSubcomponentPropertyReference artifact of + the Execution Model. + + * DnC/Config_Handler/Config_Handlers.mpc: + Added IDD_Handler.cpp + Added IRDD_Handler.cpp + Added CRDD_Handler.cpp + Added PCD_Handler.cpp + Added PSPE_Handler.cpp + Added PPM_Handler.cpp + Added PSPR_Handler.cpp + +Fri Apr 23 04:40:12 2004 Aniruddha Gokhale + + * DnC/Deployment.idl: + struct DeploymentPlan: Added a field called infoProperty of type + Properties (Issue 5967) + + struct ArtifactDeploymentDescription: Added a field called + deployedResource of type ResourceDeploymentDescriptions + (Issue 6392) + + struct ArtifactDeploymentDescription: Changed the field type for + location from string to CORBA::StringSeq (Issue 5957, 6053). + + struct ArtifactDeploymentDescription: Moved it around to + overcome forward declarations. + + struct MonolithicDeploymentDescription: Changed the field name + from artifactRef to artifact and changed its type from + CORBA::ULongSeq to ArtifactDeploymentDescriptions (Issue 5957) + + struct ResourceDeploymentDescription: Added a new struct and + corresponding unbounded sequence (Issue 6392). + + enum ResourceUsageKind: Added a new enum (Issue 6392). + + struct InstanceResourceDeploymentDescription: Added a new struct + and corresponding unbounded sequence (Issue 6392). + + * DnC/Config_Handler/DP_Handler.h: + * DnC/Config_Handler/DP_Handler.cpp: + Added handling of "infoProperty" (Issue 5967) + Other cosmetic changes, such as fixed usage of an undefined + variable + + * DnC/Config_Handler/ADD_Handler.h: + * DnC/Config_Handler/ADD_Handler.cpp: + XML handlers for the ArtifactDeploymentDescription artifact of + the Execution Model. + + * DnC/Config_Handler/MDD_Handler.h: + * DnC/Config_Handler/MDD_Handler.cpp: + XML handlers for the MonolithicDeploymentDescription artifact of + the Execution Model. + + * DnC/Config_Handler/RDD_Handler.h: + * DnC/Config_Handler/RDD_Handler.cpp: + XML handlers for the ResourceDeploymentDescription artifact of + the Execution Model. + + * DnC/Config_Handler/Config_Handlers.mpc: + Added ADD_Handler.cpp + Added MDD_Handler.cpp + Added RDD_Handler.cpp + +Thu Apr 22 22:18:04 2004 Jeff Parsons + + * ciao/CCM_Component.idl: + + Added 'typeprefix Components "omg.org";' inside the + Components module. All openings of an IDL module must + have the same prefix, and the openings of the Components + module in other IDL file have this prefix. + +Thu Apr 22 21:32:39 2004 Aniruddha Gokhale + + * DnC/Deployment.idl: + Added a "string UUID;" field (Issue 6047) to the DeploymentPlan + structure. The spec shows UUID as an attribute, which serves as + the unique identfier of a plan. However, the spec does not + include it in the IDL nor the schema. I decided to add it for now. + + * DnC/Config_Handler/DP_Handler.h: + * DnC/Config_Handler/DP_Handler.cpp: + XML handlers for the DeploymentPlan artifact of the Execution Model. + + * DnC/Config_Handler/Config_Handlers.mpc: + Added DP_Handler.cpp + +Thu Apr 22 15:36:14 2004 Arvind S. Krishna + + * DnC/Config_Handler/Config_Handlers.mpc + * DnC/Config_Handler/Property_Handler.cpp: + * DnC/Config_Handler/Property_Handler.h: + * DnC/Config_Handler/Requirement_Handler.h: + * DnC/Config_Handler/Requirement_Handler.cpp: + * DnC/Config_Handler/SPK_Handler.h: + * DnC/Config_Handler/SPK_Handler.cpp: + XML handlers for common elements present in schema definitions. + +Thu Apr 22 11:35:42 2004 Arvind S. Krishna + + * DnC/Config_Handler/CEPE_Handler.h: + * DnC/Config_Handler/CEPE_Handler.cpp: + * DnC/Config_Handler/ERE_Handler.h: + * DnC/Config_Handler/ERE_Handler.cpp: + * DnC/Config_Handler/ID_Handler.h: + * DnC/Config_Handler/ID_Handler.cpp: + * DnC/Config_Handler/RS_Handler.h: + * DnC/Config_Handler/RS_Handler.cpp: + * DnC/Config_Handlers/SP_Handler.h: + * DnC/Config_Handler/SP_Handler.cpp: + Correct ::Deployment namespace definitions to Deployment:: as it + need not always start from the root. Changed ACE_NEW_RETURN + macros to ACE_NEW_THROW_EX as exceptions are going to be used as + default meachnism to flag errors. Thanks to Kitty for pointing + these two changes. + +Wed Apr 21 22:35:07 2004 Arvind S. Krishna + + * DnC/Config_Handler/Config_Handlers.mpc: + Modified the mpc file to include handlers that compile as a test + * DnC/Config_Handler/ID_Handler.h: + * DnC/Config_Handler/ID_Handler.cpp: + * DnC/Config_Handler/CEPE_Handler.h: + * DnC/Config_Handler/CEPE_Handler.cpp: + * DnC/Config_Handler/RS_Handler.h: + * DnC/Config_Handler/RS_Handler.cpp: + * DnC/Config_Handler/SP_Handler.h: + * DnC/Config_Handler/SP_Handler.cpp: + * DnC/Config_Handler/Utils.h: + * DnC/Config_Handler/Utils.cpp: + * DnC/Config_Handler/Any_Handler.h: + Handlers for common elements; each handler handles a separate + type + * DnC/Config_Handler/Config_Handler_export.h: + Export files for all the handlers + +Wed Apr 21 22:27:34 2004 Arvind S. Krishna + + * DnC/Deployment.mpc: + Changed the export tags from all-caps to mixed mode + * DnC/Deployment_stub_export.h: + * DnC/Deployment_svnt_export.h: + Re-generated the export files accordingly + +Wed Apr 21 13:08:50 2004 Gan Deng + + * DnC/Config_Handlers/APM_Handler.cpp + Fixed a typo. + +Wed Apr 21 12:33:11 2004 Arvind S. Krishna + + * DnC/Deployment.mwc: + * DnC/Deployment.mpc: + Workspace and Project files for generating stubs and skeletons + for Deployment.idl file + + * DnC/Deployment_stub_export.h: + * DnC/Deployment_svnt_export.h: + Export macros for Deployment stub and skeleton files + +Wed Apr 21 10:53:50 2004 Gan Deng + + * DnC/Deployment.idl: + + Fixed the error in the "struct SubcomponentPortEndpoint" + definition in the IDL file. + +Wed Apr 21 10:33:50 2004 Tao Lu + + * DnC/Deployment.idl: + * DnC/DnC_*: + + Switched back the the OMG IDL DnC file. + +Tue Apr 20 21:37:26 2004 Arvind S. Krishna + + * Dnc/Config_Handlers/Config_Handlers.mpc: + Changed the file to generate shared library rathern than an + executable. + +Tue Apr 20 20:29:37 2004 Arvind S. Krishna + + * Dnc/Config_Handlers/Config_Handers.mpc: + + mpc file for the DnC configuration handlers + +Tue Apr 20 17:11:35 2004 Irfan Pyarali + + * examples/Hello/Sender/Sender_exec.h (Sender_Impl): + + The second constructor also needed the same fix. + +Tue Apr 20 15:50:07 2004 Irfan Pyarali + + * examples/Hello/Sender/Sender_exec.h (Sender_Impl): + + was getting initialized properly causing a crash + later in the execution. + +Mon Apr 19 18:04:11 2004 Gan Deng + + * DnC/Config_Handlers/ACD_Handler.cpp + * DnC/Config_Handlers/ACD_Handler.h + * DnC/Config_Handlers/APM_Handler.cpp + * DnC/Config_Handlers/APM_Handler.h + * DnC/Config_Handlers/MID_Handler.cpp + * DnC/Config_Handlers/MID_Handler.h + * DnC/Config_Handlers/SPE_Handler.cpp + * DnC/Config_Handlers/SPE_Handler.h + + XML handlers for below XML data types respectively: + + "AssemblyConnectionDescription " + "AssemblyPropertyMapping" + "MonolithicImplementationDescription" + "SubcomponentPortEndpoint" + + * DnC/Config_Handlers/XercesString.cpp + * DnC/Config_Handlers/XercesString.h + + Helper class for using Xerces library to write XML handlers. + +Mon Apr 19 14:50:11 2004 Krishnakumar B + + * DnC/Config_Handlers: Created new directory for adding the + handlers for the Deployment & Configuration Specification. + +Thu Apr 15 18:13:29 2004 Irfan Pyarali + + * CIAO-INSTALL.html (HREF): + + Fixed link to binary files. + +Mon Apr 12 14:40:32 2004 Tao Lu + + * docs/index.html: + + fixed a broken link. + diff --git a/modules/CIAO/ChangeLogs/ChangeLog-04b b/modules/CIAO/ChangeLogs/ChangeLog-04b new file mode 100644 index 00000000000..233cfed69fc --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-04b @@ -0,0 +1,2250 @@ +Tue Dec 28 19:50:06 2004 Balachandran Natarajan + + * Release: + + Updated the name of the target for generating the textual + version of CIAO-INSTALL.html file. + +Sat Dec 25 20:55:55 2004 Balachandran Natarajan + + * Release: + + Added INSTALL target which generates textual version of + CIAO-INSTAll.html for the release. + +Sat Dec 25 15:01:40 2004 Balachandran Natarajan + + * CIDLC/ExecImplSourceGenerator.cpp: + + Got rid of unused environment variable warnings in the generated + code. + +Wed Dec 22 06:53:30 2004 Chad Elliott + + * tests/CIDL/CodeGen/CodeGen.mpc: + + Make sure that CodeGen_stub gets built before CodeGen_exec. + +Tue Dec 21 11:29:03 2004 Gan Deng + + * tools/Segment_Timer/Segment_Timer.h + + Increased the value of the macro MAX_READINGS, since the + current value is too small and caused core dump for even + 50 connections. Thanks Roland Schmmack + for reporting this bug! + +Mon Dec 20 17:27:01 2004 Gan Deng + + * DAnCE/ciao/CCM_Core.mpc + * ciao/Deployment_Core.idl + * ciao/NodeApplication_Impl.cpp + * ciao/NodeApplication_Impl.h + * ciao/NodeApplication_Impl.inl + + Reverted changes back because of the check-in mistake I just made. + +Mon Dec 20 16:32:54 2004 Nanbor Wang + + * DAnCE/Config_Handlers/Config_Handlers.mpc: Added include path to + self for XSC_Config_Handlers project.. + +Wed Dec 15 13:48:44 2004 Chad Elliott + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Get rid of build warnings from gcc 3.3. + +Tue Nov 30 21:41:58 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp (namespace): + + More use of ACE_NEW_THROW_EX instead of ACE_NEW_RETURN. + +Tue Nov 30 21:03:00 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp (namespace): + + Another use of ACE_NEW_THROW_EX instead of ACE_NEW_RETURN. + +Tue Nov 30 20:39:26 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp (namespace): + + Used ACE_NEW_THROW_EX instead of ACE_NEW_RETURN. + +Tue Nov 30 20:22:19 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp (namespace): + + Fixes for VC6. + +Wed Nov 24 09:47:58 2004 Chad Elliott + + * examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp: + + Added static_cast from double to int to avoid build warnings from + g++. + +Wed Nov 17 17:46:44 2004 Jeff Parsons + + * examples/Hello/Receiver/Receiver.idl: + + Added 'uses multiple' receptacle to test code generation + and compilation. + +Sat Nov 13 18:04:36 2004 Jaiganesh B + + * DAnCE/examples/Hello/Hello_Base/Hello_Base.idl: + * DAnCE/examples/Hello/Hello_Base/Hello_Base.mpc: + * DAnCE/examples/Hello/Hello_Base/Hello_Base_stub_export.h: + * DAnCE/examples/Hello/Hello_Base/Hello_Base_svnt_export.h: + * DAnCE/examples/Hello/Receiver/Receiver.cidl: + * DAnCE/examples/Hello/Receiver/Receiver.idl: + * DAnCE/examples/Hello/Receiver/Receiver.mpc: + * DAnCE/examples/Hello/Receiver/Receiver_exec.cpp: + * DAnCE/examples/Hello/Receiver/Receiver_exec.h: + * DAnCE/examples/Hello/Receiver/Receiver_exec_export.h: + * DAnCE/examples/Hello/Receiver/Receiver_stub_export.h: + * DAnCE/examples/Hello/Receiver/Receiver_svnt_export.h: + * DAnCE/examples/Hello/Sender/Sender.cidl: + * DAnCE/examples/Hello/Sender/Sender.idl: + * DAnCE/examples/Hello/Sender/Sender.mpc: + * DAnCE/examples/Hello/Sender/Sender_exec.cpp: + * DAnCE/examples/Hello/Sender/Sender_exec.h: + * DAnCE/examples/Hello/Sender/Sender_exec_export.h: + * DAnCE/examples/Hello/Sender/Sender_stub_export.h: + * DAnCE/examples/Hello/Sender/Sender_svnt_export.h: + * DAnCE/examples/Hello/Sender/starter.cpp: + * DAnCE/examples/Hello/descriptors/Deployment.xsd: + * DAnCE/examples/Hello/descriptors/Domain.cdd: + * DAnCE/examples/Hello/descriptors/Hello.cdp: + * DAnCE/examples/Hello/descriptors/Hello.cid: + * DAnCE/examples/Hello/descriptors/Hello.cpd: + * DAnCE/examples/Hello/descriptors/Hello.pcd: + * DAnCE/examples/Hello/descriptors/Libraries.iad: + * DAnCE/examples/Hello/descriptors/Receiver.ccd: + * DAnCE/examples/Hello/descriptors/Receiver.cid: + * DAnCE/examples/Hello/descriptors/Receiver.cpd: + * DAnCE/examples/Hello/descriptors/Receiver_Exec.iad: + * DAnCE/examples/Hello/descriptors/Receiver_Stub.iad + * DAnCE/examples/Hello/descriptors/Receiver_Svnt.iad: + * DAnCE/examples/Hello/descriptors/Sender.ccd: + * DAnCE/examples/Hello/descriptors/Sender.cid: + * DAnCE/examples/Hello/descriptors/Sender.cpd: + * DAnCE/examples/Hello/descriptors/Sender_Exec.iad: + * DAnCE/examples/Hello/descriptors/Sender_Stub.iad: + * DAnCE/examples/Hello/descriptors/Sender_Svnt.iad: + * DAnCE/examples/Hello/descriptors/XMI.xsd: + * DAnCE/examples/Hello/descriptors/hello.dat: + * DAnCE/examples/Hello/descriptors/package.tpd: + + Added another version of the Hello example + in the DanCE/examples directory. + + This example will use the DanCE framework for + deploying the components used in the example. + +Sat Nov 13 13:17:48 2004 Gan Deng + + * NEWS + + Added the Real-time Event Channel integration plan into + the NEWS file. + +Fri Nov 12 06:21:03 2004 Chad Elliott + + * tests/RTCCM/Priority_Test/Controllers/Pulser.h: + * tests/RTCCM/Priority_Test/Controllers/Pulser.cpp: + + Changed the open and close method of the Pulser class to match + the signature of the ACE_Task_Base. + +Thu Nov 11 17:17:48 2004 Arvind S. Krishna + + * ciao/Servant_Activator.cpp: + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * DAnCE/examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * docs/tutorial/Hello/hello_exec.cpp: + Fixed warnings in the scoreboard from RH8 NoInline build + + Thu Nov 11 11:24:05 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + In the generated servant method populate_port_tables(), + added the line 'ACE_ENV_ARG_NOT_USED;' to avoid an + unused parameter warning if there happens to be no + populating to be done in this genrated method. + +Thu Nov 11 10:50:45 2004 Jeff Parsons + + * CIDLC/ExecImplSourceGenerator.cpp: + + Fixed incorrect generation of environment arg macro. + Thanks to Chad Elliott for + pointing out the mistake. + +Thu Nov 11 09:46:58 2004 Chad Elliott + + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/Sender/Sender.mpc: + * tests/RTCCM/DiffServ/Controller/Controller.mpc: + + Added requires += exceptions for these projects. + + * performance-tests/Protocols/Sender/Sender_exec.cpp: + + Removed ACE_CHECK's which caused compilation errors when + exceptions=0 was set. + +Thu Nov 11 14:40:12 UTC 2004 Johnny Willemsen + + * DAnCE/ciao/Servant_Activator.cpp: + * docs/tutorial/Hello/hello_exec.cpp: + Fixed unused parameter warnings in emulated exception build + +Tue Nov 9 14:20:31 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed incorrect code generation for home factory operations. + Thanks to Chad Elliott for pointing + out the mistake. This fixes [BUGID:1977]. + +Mon Nov 8 12:58:24 2004 Chad Elliott + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + + Fixed build ordering to match library requirements. + + * ciao/StandardConfigurator_Impl.h: + + Removed the StandardConfigurator_Impl:: prefix on the configure + method (gcc 3.4.1 did not like it). + +Fri Nov 5 09:55:28 2004 Arvind S. Krishna + + * performance-tests/Benchmark/RoundTrip/client.cpp: + + The svc.conf file passed in to the client was not being passed + to the ORB as ACE::Get_Opt ate up the argument before being + passed to the client ORB. This fixes this error at the client + side temporarily by initializing the ORB before parsing the + arguments. Thanks to Abhi for reporting + this. + +Thu Nov 4 09:31:29 2004 Jaiganesh B + + * DAnCE/RepositoryManager/Update_Plan.cpp: + + Made changes to fix some build warnings. + Thanks to Chad Elliot for reporting + this warning. + +Wed Nov 3 16:32:54 2004 Jeff Parsons + + * CIDLC/ExecutorMappingGenerator.cpp: + + Added generation of newline before each operation + parameter so each one will be on a separate line. + It was discovered that the VC 7.1 lexer truncates lines + longer than 1024 characters. + +Wed Nov 3 22:32:18 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp (namespace): + + VC6 error fixes. Grr...! + +Wed Nov 3 12:38:21 2004 Jaiganesh B + + * DAnCE/RepositoryManager/Update_Plan.cpp: + * DAnCE/RepositoryManager/Update_Plan.h: + + Made changes to handle multiple component instances + deployment. + +Tue Nov 2 17:26:42 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed the emitters for supported operations to include + abstract interfaces in their traversals. + +Tue Nov 2 09:59:15 2004 Jeff Parsons + + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + + Fixed some regular expressions, used to generate the servant + header file ifdef guard and export macros, to recognize the + file extension .cdl in addition to the existing patterns for + .cidl and .idl. These particular regular expressions were + overlooked in the checkin of + + Thu Sep 30 11:03:20 2004 Jeff Parsons + +Tue Nov 2 04:45:44 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Addressing compile errors in Borland. Thanks to Johnny for the + suggestion. + +Mon Nov 1 15:09:12 UTC 2004 Johnny Willemsen + + * VERSION: + Fixed description and mailing lists to use + +Fri Oct 29 17:18:51 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp (namespace): + + Fixed some weird VC6 issues reported by Theckla + Louchios. + +Fri Oct 29 10:44:52 2004 Jeff Parsons + + * DAnCE/RepositoryManager/Repository_Manager.cpp; + + Cosmetic changes. + +Mon Oct 25 07:31:12 UTC 2004 Johnny Willemsen + + * DAnCE/RepositoryManager/Repository_Manager.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Impl.cpp: + Use ACE auto_ptr instead of std::auto_ptr to fix compile problems + with vc6. + +Fri Oct 22 11:49:25 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + + Reversed this change "Thu Oct 21 18:37:12 2004 Gan Deng + " + +Fri Oct 22 08:16:12 UTC 2004 Johnny Willemsen + + * tests/RTCCM/DiffServ/Controller/Controller.mpc: + Added DiffServ_Stub to the libs part, this should fix the link errors + in the CBX Static Release build + +Fri Oct 22 07:51:12 UTC 2004 Johnny Willemsen + + * tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h: + Used ACE_AS_STATIC_LIBS to check whether we need to build a DLL + or not, TAO_AS_STATIC_LIBS was used, but this project isn't + dependent on TAO, just on ACE + +Thu Oct 21 18:37:12 2004 Gan Deng + + * DAnCE/Config_Handlers/Config_Handlers.mpc + + Put the xerces-c library into "lib +=" to avoid + linking to the wrong library. + +Wed Oct 13 06:37:12 UTC 2004 Johnny Willemsen + + * tests/RTCCM/Priority_Test/Workers/Worker.mpc + * tests/RTCCM/Priority_Test/Controllers/Controller.mpc: + Added Priority_Test_stub to the libs, this should fix the link errors + in the borland builds + + * tests/CIDL/CodeGen/CodeGen.mpc: + Added CIDL_Basic_stub to the libs, this should fix the link errors + in the borland builds + +Tue Oct 12 09:07:12 UTC 2004 Johnny Willemsen + + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + Removed / at the end of the includes part, this should fix the + compile error in the Borland builds + +Mon Oct 11 23:41:16 2004 Balachandran Natarajan + + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: + + Fixed typos that broke the builds. + +Mon Oct 11 11:02:41 2004 Boris Kolpackov + + * CCF/CCF/CodeGenerationKit/IndentationIDL.hpp: + + Put double new line after `}'. + + * CIDLC/cidlc.cpp: + + Print build date and time in --version. + +Mon Oct 11 10:08:48 2004 Gan Deng + + * DAnCE/examples/BasicSP/Readme.html + + Update the README file for running the example. + +Sun Oct 10 10:45:48 2004 Balachandran Natarajan + + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + + Fix for some typos which broke the daily builds. + +Sun Oct 10 02:47:21 2004 Balachandran Natarajan + + * DAnCE/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Domain_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.h: + * DAnCE/tests/Config_Handlers/IAD_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/PC_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Plan_Handler_Test.cpp: + + Fix for MSVC6 build errors. They compile fine on MSVC6 now. I am + just hoping that this fix also addresses compile errors in + Borland. The Borland compilation errors are also similar to the + MSVC6 errors and hence the hope! + +Sun Oct 10 00:21:39 2004 Balachandran Natarajan + + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc: + + Fixed a typo. + +Sat Oct 9 23:43:52 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/Plan_Handler.cpp: + + Fixed a compilation error in Borland builds. + + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc: + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc: + * DAnCE/examples/BasicSP/EC/EC.mpc: + * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/OEP/BasicSP/BMDevice/BMDevice.mpc: + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/BasicSP/EC/EC.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + + Added missing libraries. They have been wrong for a very long + time. Thanks to Borland builds for catching these. I am sure + there are a few more and I will allow one more build to catch + them. + + * examples/OEP/Display/RateGen/RateGen_exec.cpp: + * examples/OEP/Display/RateGen/RateGen_exec.h: + + Fixed warnings due to hidden virtual functions. + + +Sat Oct 9 14:29:41 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Added a .in () to the _var variable used in push_event (). + + * DAnCE/Config_Handlers/XercesString.cpp: + * DAnCE/Config_Handlers/XercesString.h: + + Removed an unnecessary operator== which was confusing some + compilers. + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/Repository_Manager.cpp: + + Changed the wrong exceptions that were being thrown. + + * DAnCE/examples/BasicSP/EC/EC_exec.cpp: + * DAnCE/examples/BasicSP/EC/EC_exec.h: + * examples/OEP/BasicSP/EC/EC_exec.cpp: + * examples/OEP/BasicSP/EC/EC_exec.h: + + The declaration of open () and close () was hiding the base + class methods. Changed the name of the functions. + + The above changes should fix part of the errors from the Borland + builds. + +Thu Oct 7 03:17:54 2004 Balachandran Natarajan + + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/ccd.xsd: + * docs/schema/cdp.xsd: + + Updated to be more compliant with the DnC spec. + +Wed Oct 6 16:10:27 2004 Will Otte + + * docs/schema/ciaopolicy.xsd: + + Finished filling out the policy schema. + +Sun Oct 03 09:38:03 2004 Nanbor Wang + + * DAnCE/Config_Handlers/XSCRT/Elements.hpp: + * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp: + * DAnCE/Config_Handlers/XSCRT/Parser.hpp: + * DAnCE/Config_Handlers/XSCRT/Traversal.hpp: + * DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp: + * DAnCE/Config_Handlers/pcd.hpp: + * DAnCE/Config_Handlers/iad.hpp: + * DAnCE/Config_Handlers/cpd.hpp: + * DAnCE/Config_Handlers/cid.hpp: + * DAnCE/Config_Handlers/cdp.hpp: + * DAnCE/Config_Handlers/cdd.hpp: + * DAnCE/Config_Handlers/Deployment.hpp: + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp: + * DAnCE/Config_Handlers/ccd.hpp: + * DAnCE/Config_Handlers/toplevel.hpp: Change to include XSCRT + headers as "user libraries" instead of . + +Sun Oct 03 09:18:05 2004 Nanbor Wang + + * DAnCE/tests/Config_Handlers/handler_test.mpb: Changed to use the + xerces base project that Johnny added. The base project + correctly uses lit_libs to include xerces. + +Thu Sep 30 14:49:23 2004 Jeff Parsons + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + + Removed identifiers of unused args. + + * CIDLC/RepositoryIdGenerator.cpp: + + Extended generator to compute repo ids for + homes and components. + + * CIDLC/DescriptorGenerator.cpp: + + Changed code to use the context value set by the expanded + repo id generator and removed code to compute repo id + in this generator. + +Thu Sep 30 11:03:20 2004 Jeff Parsons + + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added handling of file extension .cdl, as found in + spec documents. + +Thu Sep 30 09:16:52 2004 Nanbor Wang + + * CCF/Config.rules: Added new definitions to actually add the + boost and utility related directives into compiler/linker + flags. + +Thu Sep 30 09:55:12 UTC 2004 Johnny Willemsen + + * DAnCE/Config_Handlers/DnC_Dump_T.h: + Fixed fuzz error + +Wed Sep 29 17:30:25 2004 Irfan Pyarali + + * performance-tests/Protocols: + + - Minor changes were made to the Sender to in lieu of some + interface changes. + + - run_test.pl was changed so that a simple version of the test + can be executed. + + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + + Removed "dummy" label so that it is included in nightly builds. + + * performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini: + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Protocols/descriptors/Receiver.csd: + * performance-tests/Protocols/descriptors/Receiver.ssd: + * performance-tests/Protocols/descriptors/Sender.csd: + * performance-tests/Protocols/descriptors/Sender.ssd: + + Sender_* was changed to Protocols_Sender_* and Receiver_* was + changed to Protocols_Receiver_*. + + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/Protocols/Sender/Sender.mpc: + + Custom_Network_Priority_Mapping.cpp was included directly. If + listed as a source file that is not in the current directory, + mpc mucks the object file location. + + * performance-tests/Protocols/descriptors/Receiver.csd: + * performance-tests/Protocols/descriptors/Receiver.ssd: + * performance-tests/Protocols/descriptors/Sender.csd: + * performance-tests/Protocols/descriptors/Sender.ssd: + + Hello was changed to Protocols. + + * tests/RTCCM/DiffServ/descriptors/CIAO_Installation_Data.ini: + * tests/RTCCM/DiffServ/Sender/Sender.mpc: + * tests/RTCCM/DiffServ/descriptors/Receiver.csd: + * tests/RTCCM/DiffServ/descriptors/Receiver.ssd: + * tests/RTCCM/DiffServ/descriptors/Sender.csd: + * tests/RTCCM/DiffServ/descriptors/Sender.ssd: + + Sender_* was changed to DiffServ_Sender_* and Receiver_* was + changed to DiffServ_Receiver_*. + + * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp: + * tests/RTCCM/DiffServ/Sender/Sender.mpc: + + Custom_Network_Priority_Mapping.cpp was included directly. If + listed as a source file that is not in the current directory, + mpc mucks the object file location. + + * tests/RTCCM/DiffServ/descriptors/Receiver.csd: + * tests/RTCCM/DiffServ/descriptors/Receiver.ssd: + * tests/RTCCM/DiffServ/descriptors/Sender.csd: + * tests/RTCCM/DiffServ/descriptors/Sender.ssd: + + Hello was changed to DiffServ. + + * tests/RTCCM/DiffServ/Controller/Controller.mpc: + + "requires" directive was incorrect. Correct directive is + "after". + +Wed Sep 29 19:20:19 2004 Balachandran Natarajan + + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_svnt.cpp: + * DAnCE/examples/BasicSP/EC/EC_svnt.cpp: + * DAnCE/examples/BasicSP/EC/EC_svnt.h: + + Removed them from the main trunk. + +Wed Sep 29 14:39:29 2004 Balachandran Natarajan + + The dump function was too complicated not compiling on many + platforms cleanly. This effort is to simplify the dump functions + so that we can compile on many platforms. + + * DAnCE/Config_Handlers/DnC_Dump.cpp: + * DAnCE/Config_Handlers/DnC_Dump.h: + + Moved template functions out of the class. + + * DAnCE/Config_Handlers/DnC_Dump_T.cpp: + * DAnCE/Config_Handlers/DnC_Dump_T.h: + + New files for the template functions. + + * DAnCE/Config_Handlers/Dump_Obj.cpp: + * DAnCE/Config_Handlers/Dump_Obj.h: + + Utility functions have been moved here. + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + New files added to the build. + +Wed Sep 29 07:51:12 UTC 2004 Johnny Willemsen + + * ciao/Servant_Activator.h: + * DAnCE/ciao/Servant_Activator.h: + Added missing prama pop + +Wed Sep 29 07:09:12 UTC 2004 Johnny Willemsen + + * DAnCE/Config_Handlers/Utils.h: + Added missing include of ace/post.h + +Mon Sep 27 17:57:08 2004 Krishnakumar B + + * DAnCE/examples/BasicSP/BasicSP.mpc: + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc: + * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc: + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc: + * DAnCE/examples/BasicSP/EC/EC.mpc: + + Fixed the MPC files to refer to the version of DAnCE libraries + instead of the old CIAO libraries. + +Mon Sep 27 22:41:52 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Remove calling Home_Servant_impl_Base () directly. + + * DAnCE/ciao/Home_Servant_Impl_Base.cpp: + * DAnCE/ciao/Home_Servant_Impl_Base.h: + * ciao/Home_Servant_Impl_Base.cpp: + * ciao/Home_Servant_Impl_Base.h: + + Provided a default constructor with explicit keyword. This + should help VC6 and Borland compilers to compile the generated + servants just fine. + +Mon Sep 27 19:45:04 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Remove calling Context_Impl_Base () and Servant_Impl_Base () + directly. + + * DAnCE/ciao/Context_Impl_Base.cpp: + * DAnCE/ciao/Context_Impl_Base.h: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_Base.h: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + + Added a explicit default constructor so that they are not called + implicitly when derived classes are instantiated. + + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + + Checking in the change mentioned before just now, since it + fell trhough the cracks. + +Mon Sep 27 15:41:20 2004 Balachandran Natarajan + + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + + Export the class out for Win32 builds. + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + + Removed a strange character frm the mpc file. + +Mon Sep 27 15:26:46 2004 Balachandran Natarajan + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + + Added a new exception specification to correct an error in BCB6 + builds. + + * DAnCE/ciao/CCM_Core.mpc: + + Deployment_stub should link with CIAO_DnC_Client. + +Mon Sep 27 12:56:12 UTC 2004 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/Config_Handlers/Config_Handlers.mpc: + Instead of adding all xerces stuff to the project itself, inherit + from the new xerces base project + +Mon Sep 27 12:02:12 UTC 2004 Johnny Willemsen + + * DAnCE/NodeManager/NodeDaemon.mpc: + Instead of adding ifr_client to libs, use the + corresponding base projects + +Mon Sep 27 11:54:12 UTC 2004 Johnny Willemsen + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + Instead of adding the valuetype and ifr_client to libs, use the + corresponding base projects + +Mon Sep 27 08:54:12 UTC 2004 Johnny Willemsen + + * DAnCE/examples/BasicSP/EC/EC_exec.cpp: + Added missing ACE_TRY_CHECK + +Mon Sep 27 08:03:12 UTC 2004 Johnny Willemsen + + * ciao/Context_Impl_Base.cpp: + Use false instead of FALSE. + +Wed Sep 22 17:46:14 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Removed unused parameter identifiers and fixed the order of some + class member initializations. + +Tue Sep 21 13:28:40 2004 Jeff Parsons + + * docs/value_factory_registration.html: + + New documentation file, describing the behavior of the CIDL + compiler with respect to automatic generation of code to + register valuetype factories for eventtypes referenced by + 'consumes' declarations in a component. + +Tue Sep 21 13:04:39 2004 Jeff Parsons + + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added code to check an eventtype used as an event consumer + in a component for the presence of an operation or + factory. If either is found, code generation for registering + the associated _init class with the container's ORB is skipped. + Also added command line option to toggle off generation of + the factory registration in all cases. Thanks to + Vasili Goutas for the posting to the ciao-users + mailing list that prompted us to make the CIDL compiler + smarter and more friendly with regard to this feature. + +Tue Sep 21 13:00:33 2004 Jeff Parsons + + * CCF/CCF/IDL3/IDL3.vcproj: + + Added new files create by Boris for eventtype factory support. + + * CCF/CCF/IDL3/SemanticGraph/EventType.cpp: + + Fixed search-and-replace error in EventTypeFactory constructor + that had it inheriting from itself. + +Tue Sep 21 11:08:20 2004 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/ValueType.hpp: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/IDL3/Parser.hpp: + * CCF/CCF/IDL3/SemanticAction.hpp: + * CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.cpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.hpp: + * CCF/CCF/IDL3/Traversal/EventType.hpp: + + Added support for eventtype factories. + +Tue Sep 21 07:39:12 UTC 2004 Johnny Willemsen + + * DAnCE/ciao/Context_Impl_Base.cpp: + Use false instead of FALSE. + +Mon Sep 20 18:47:47 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + + Use lit_libs for xercesc as suggested by Chad Elliott. + + * performance-tests/Protocols/Sender/Sender.idl: + + Fixed the IDL to compile with the latest changes to IDL + compiler. + +Mon Sep 20 18:43:12 UTC 2004 Johnny Willemsen + + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + Added strategies as base project + +Mon Sep 20 11:37:12 UTC 2004 Johnny Willemsen + + * DAnCE/ciao/StandardConfigurator_Impl.h: + Removed not needed qualifier, and fixed incorrect Id tag + +Sun Sep 19 19:12:22 2004 Balachandran Natarajan + + * DAnCE/ciao/Deployment.idl: + + Fixed variable name that differ by case from the data type. + +Fri Sep 17 16:46:32 2004 Jeff Parsons + + * CIDLC/CIDLC.sln: + + Added the 5 projects from CCF.sln so the CIDL compiler can be + built from scratch in a single MSVC 7.1 Solution. + +Fri Sep 17 08:27:57 2004 Balachandran Natarajan + + * DAnCE/ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_Base.cpp: + + Use false instead of FALSE. This should fix compile errors in + debian full reactor builds. + +Fri Sep 17 13:22:12 UTC 2004 Johnny Willemsen + + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + Use ciao_server as base + +Thu Sep 16 10:15:04 2004 Jeff Parsons + + * DAnCE/ciao/Servant_Impl_Base.h: + + Added inheritance to Servant_Impl_Base of + POA_Components::CCMObject to bring it in sync with the + version in regular CIAO/ciao. + + * DAnCE/ciao/Servant_Impl_T.h: + + Made inheritance of Servant_Impl_Base virtual, to bring it + in sync with the version in regular CIAO/ciao. + +Thu Sep 16 08:44:12 UTC 2004 Johnny Willemsen + + * DAnCE/ciao/Servant_Activator.cpp: + * CIAO/ciao/Servant_Activator.cpp: + Fixed compile errors in Borland build + +Tue Sep 14 20:43:31 2004 Jeff Parsons + + * ciao/Context_Impl_Base.h: + * DAnCE/ciao/Context_Impl_Base.h: + + Moved a sufficiently substantial included file above the + #pragma once directive, so that some compilers will not + complain that it's obsolete. + +Tue Sep 14 15:02:24 2004 Jeff Parsons + + * DAnCE/ciao/Context_Impl_Base.cpp: + * DAnCE/ciao/Context_Impl_Base.h: + * DAnCE/ciao/Context_Impl_T.cpp: + * DAnCE/ciao/Context_Impl_T.h: + * DAnCE/ciao/Home_Servant_Impl_Base.cpp: + * DAnCE/ciao/Home_Servant_Impl_Base.h: + * DAnCE/ciao/Home_Servant_Impl_T.cpp: + * DAnCE/ciao/Home_Servant_Impl_T.h: + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_Base.h: + * ciao/Context_Impl_T.cpp: + * ciao/Context_Impl_T.h: + * ciao/Home_Servant_Impl_Base.cpp: + * ciao/Home_Servant_Impl_Base.h: + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Home_Servant_Impl_T.h: + + New files, duplicated in CIAO/ciao and + CIAO/DAnCE/ciao, containing base classes + for the CIDL-compiler-generated context + and home servant classes. A template class + sits in the hierarchy between the generated + class and its skeleton base class (in the + case of the home servant) or its executor + base (in the case of the context). The + template class also inherits from a + non-template class which is used to hold + members and operations not using any template + parameters. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * DAnCE/ciao/CCM_Core.mpc: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + * ciao/CCM_Core.mpc: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_T.h: + + Modified existing files to correspond with the + new files described above and: + + - Added implementations for the component servant + operations provide_facet(), get_named_facets(), + get_consumer() and get_named_consumers(). + + - Added inheritance of CCMObject to the non-template + base class, to enable operations in the template + base class, which used no template parameters but + which were there only to be in the inheritance + hierarchy from skeleton to generated servant, to + be moved to the non-template base class, and + thus not be reinstantiated with every new type. + + - Moved operations from generated code to one of + the two base classes. + +Mon Sep 13 13:18:33 2004 Gan Deng + + * RepositoryManager/Update_Plan.h + + Fixed a waring in Windows build by changing "class" to "struct" + in forward declaration. + + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + + Changed the output stub, servant, and executor library names + for all the components in BasicSP example. The reason is + becasue all the DnC descriptors are tightly coupled with the + output library names. I might come back switch this change + back since this will conflict with the BasicSP example in + CIAO_ROOT/examples. + +Mon Sep 13 13:07:33 2004 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Fixed a bug inside create_connections () method. + +Mon Sep 13 15:16:33 2004 Balachandran Natarajan + + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + + Fixed the paths in the scripts. + +Mon Sep 13 07:11:06 2004 Balachandran Natarajan + + * DAnCE/ciao/Port_Activator.h: + * DAnCE/ciao/Servant_Activator.cpp: + * ciao/Port_Activator.h: + * ciao/Servant_Activator.cpp: + + Fixes for MSVC++ compilation errors. Inspite of being careful I + introduced a couple of VC++ anathemas. + +Mon Sep 13 06:16:31 2004 Balachandran Natarajan + + * DAnCE/ciao/Container_Base.cpp: + * ciao/Container_Base.cpp: + + Fixed wrong ACE_CHECK usage. This should fix compilation errors + in Full_Reactors build. + +Mon Sep 13 04:20:44 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + + Removed iorinterceptor and objreftemplate from CIAO_DnC_Server + project. No reason to believe that they need thes. This should + hopefully remove the warnings in our daily builds. + + * examples/Hello/Sender/Sender_exec.cpp: + + Added a simple debug statement. + + * performance-tests/Benchmark/Benchmark.mpc: + + Tried fixing the link errors on the scoreboard. + +Mon Sep 13 03:50:08 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Container_Base.inl: + * DAnCE/ciao/Port_Activator.cpp: + * DAnCE/ciao/Port_Activator.h: + * DAnCE/ciao/Port_Activator_T.cpp: + * DAnCE/ciao/Port_Activator_T.h: + * DAnCE/ciao/Servant_Activator.cpp: + * DAnCE/ciao/Servant_Activator.h: + + Replicated changes to DAnCE. DAnCE testing hasn't been completed + yet. + +Sun Sep 12 22:10:38 2004 Balachandran Natarajan + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Changes to the CIDL which uses the servant and port activators + checked in now. + +Mon Sep 13 03:00:52 2004 Balachandran Natarajan + + To overcome the long standing problem in DAnCE, we are now making + the facet and consumer servants to be on demand activatable. This + would make sure that application level ports are not activated + until used. This should help address the problems between DAnCE + and existing way of doing things. These changes should be useful + even after old CIAO is removed since we want to give existing + component applications the same activation semantics with DAnCE. + + This checkin addresses old CIAO. DAnCE and CIDLC changes will come + in soon. + + * ciao/Servant_Activator.cpp: + * ciao/Servant_Activator.h: + + New files for facet and consumer activations. We now have a + seperate servant activator for facet and consumer ports. The + servant activator acts like a factory activating the right port + activators which can create the right servant for every port. + + * ciao/Port_Activator.cpp: + * ciao/Port_Activator.h: + * ciao/Port_Activator_T.cpp: + * ciao/Port_Activator_T.h: + + Concrete port activators for every port. + + * ciao/CCM_Core.mpc: + + Added the new files for building. + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Container_Base.inl: + + Changes to the Container to use the above servant activator. The + continer creates the servant activator and sets that in the POA + meant for facet and consumers. + +Fri Sep 10 23:08:15 2004 Balachandran Natarajan + + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + + Reverted this change "Sat Sep 11 03:35:24 2004 Balachandran + Natarajan " + +Fri Sep 10 22:53:58 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + * ciao/CCM_Core.mpc: + + Linked with TAO_Utils library + +Sat Sep 11 03:35:24 2004 Balachandran Natarajan + + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + + Removed install_servant () since it is not used. + +Fri Sep 10 22:28:45 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Changes to accomodate the accessor renaming. + +Sat Sep 11 03:22:06 2004 Balachandran Natarajan + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Container_Base.inl: + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Container_Base.inl: + + Made a few changes. They are + + . Added a second POA into the container. One of the POA's will + host the component and the other POA will host the facet and + consumer servants. Obviously the two POA's have different sets + of policies. The new POA is primarily targeted to activate + facet and consumer servants on demand. + + . Renamed the accessor to the ORB and POA. Made them const + methods + + . Improved documentation and a number of costeic changes. + + + * DAnCE/RepositoryManager/Repository_Manager.cpp: + * DAnCE/RepositoryManager/Update_Plan.cpp: + * DAnCE/RepositoryManager/Update_Plan.h: + + BUnch of cosmetic changes to be conformant with ACE+TAI coding + guidelines. + + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_T.cpp: + + Fixed simple compilation errors and warnings. + +Thu Sep 9 17:07:59 2004 Jeff Parsons + + * tests/IDL3/Events/Abstract/Abstract.idl: + + Uncommented IDL testing multiple inheritance of eventtypes. + +Thu Sep 9 10:30:22 2004 Jeff Parsons + + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * ciao/Container_Base.cpp: + + Added generate_reference() method to DAnCE version of + Container_Base, and fixed ACE_CHECK macro mistake in + both versions. + +Wed Sep 8 11:52:45 2004 Jeff Parsons + + * DAnCE/ciao/Servant_Impl_Base.h: + * DAnCE/ciao/Servant_Impl_Base.cpp: + + Updated files with changes made to the corresponding files + in regular CIAO/ciao. + +Tue Sep 7 22:14:43 2004 Ossama Othman + + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Fixed unused argument warnings. + +Tue Sep 7 15:48:19 2004 Jeff Parsons + + * DAnCE/ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.cpp: + + Cosmetic changes. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_T.h: + + Moved several methods from the generated servant class to the + template Servant_Impl base class. + +Tue Sep 7 10:44:10 2004 Jeff Parsons + + * CIDLC/CIDLC.mpc: + * CIDLC/CIDLC.vcproj: + * CIDLC/RepositoryIdGenerator.cpp: + * CIDLC/RepositoryIdGenerator.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/cidlc.cpp: + + - Updated the RepositoryIdGenerator and re-added the source + and header files to the build. This generator creates + repository ids for interfaces and eventtypes, and stores + them internally in a context variable for later access + in code generation. It also handles modifications to the + repository ids stemming from 'typeprefix' or 'typeid' + declarations. + + - Added generation of 'provide__i' and + 'get_consumer__i' methods in the servant, + which create dummy object references and store them in the + appropriate port table in the servant base class. + + - Re-implemented the generated 'provide_' and + 'get_consumer_' methods. They now + use the container's POA to activate the dummy objects + created by the corresponding _i methods described above. + The activation takes place upon the first outside access + of these objects. If an object has already been activated, + it will simply be found in its port table and returned. + Thanks to Bala for the prototype code for this feature. + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + + Added 'generate_reference' utility method called by the + '_i' methods described above. + + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + + Added 'lookup_facet' and 'lookup_consumer' methods used in + generated servant code to determine if a desired object has + been activated already (and added to a port table) or not. + +Mon Aug 30 12:52:28 2004 Balachandran Natarajan + + * performance-tests/Benchmark/Benchmark.mpc: + + Fixes for link errors in the daily builds + +Sun Aug 29 19:25:21 2004 Balachandran Natarajan + + * tools/XML_Helpers/XMLHelpers.mpc: + + Fix for link errors in Debian_Core builds. + +Sun Aug 29 19:02:42 2004 Balachandran Natarajan + + * DAnCE/ciao/CCM_Core.mpc: + + Added valuetype seperately to the Deployment_svnt project. + +Sun Aug 29 18:10:13 2004 Balachandran Natarajan + + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_svnt.h: + * DAnCE/examples/BasicSP/BMDevice/BMDevice_svnt.h: + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay_svnt.h: + * DAnCE/examples/BasicSP/EC/EC_svnt.h: + + These files should not be in the repository. + +Sat Aug 28 18:44:00 2004 Balachandran Natarajan + + * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc: + + Fixed a compile erros in the daily builds. + +Sat Aug 28 09:22:15 2004 Balachandran Natarajan + + * DAnCE/examples/BasicSP/BasicSP.mpc: + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc: + * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc: + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc: + * DAnCE/examples/BasicSP/EC/EC.mpc: + + Fixed the project names and shared librray names so that they + don't collide with the regual BasicSP test. Ideally there + shouldn't be any duplicate code. I waill talk to Gan about + this. + +Thu Aug 26 16:45:10 2004 Jeff Parsons + + * tests/IDL3/Lookup/README: + * tests/IDL3/Lookup/lookup_test.idl: + * tests/IDL3/Lookup/lookup_test.mpc: + + New files, a test for the IDL compiler lookup of declarations + in base interfaces, valuetypes, components, and homes, and + in supported interfaces, referenced by the local name in the + derived IDL type. Thanks to Boris Kolpackov + for reporting the bug and for + providing an example IDL file that illustrates the various + cases. + +Thu Aug 26 13:24:40 2004 Gan Deng + + * DAnCE/examples/BaiscSP/*.*: + + Created above directory and subdictories to add an example for + using DAnCE. + +Thu Aug 26 12:28:40 2004 Jeff Parsons + + * CIDLC/CIDLC.vcproj: + + Added missing files to project. + +Thu Aug 26 11:25:39 2004 Jeff Parsons + + * tests/CIDL/CodeGen/CodeGen.mpc: + + Changed dependency from ciao_server to ciao_servant. + +Wed Aug 25 11:28:12 UTC 2004 Johnny Willemsen + + * DAnCE/Config_Handlers/DnC_Dump.h: + Removed not needed qualifier + + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + Removed not needed ; after namespace closure + +Wed Aug 25 11:24:12 UTC 2004 Johnny Willemsen + + * DAnCE/Config_Handlers/Config_Error_Handler.h: + Removed not needed ; after namespace closure + +Tue Aug 24 11:31:12 UTC 2004 Johnny Willemsen + + * DAnCE/Config_Handlers/Config.h: + Removed not needed ; after namespace closure + +Mon Aug 23 21:47:10 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/XSCRT/Elements.hpp: + * DAnCE/Config_Handlers/XSCRT/Elements.ipp: + * DAnCE/Config_Handlers/XSCRT/Elements.tpp: + * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp: + * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp: + * DAnCE/Config_Handlers/XSCRT/Parser.hpp: + * DAnCE/Config_Handlers/XSCRT/Parser.ipp: + * DAnCE/Config_Handlers/XSCRT/Parser.tpp: + * DAnCE/Config_Handlers/XSCRT/Traversal.hpp: + * DAnCE/Config_Handlers/XSCRT/Traversal.ipp: + * DAnCE/Config_Handlers/XSCRT/Traversal.tpp: + * DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp: + * DAnCE/Config_Handlers/XSCRT/XMLSchema.ipp: + * DAnCE/Config_Handlers/XSCRT/XMLSchema.tpp: + + Added XSCRT 0.0.4 into the repository to compile the handlers. + +Mon Aug 23 21:32:50 2004 Balachandran Natarajan + + * CIDLC/TypeNameEmitter.cpp: + + Fixed a compiler error in the daily builds showing up from a + non-const declaration of a char * for extraction into an Any. + + * DAnCE/Config_Handlers/Config.h: + + Deployment.h has been renamed to Config.h + + * DAnCE/Config_Handlers/Process_Element.h: + * DAnCE/Config_Handlers/Basic_Handler.h: + + Include Config.h + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp: + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp: + * DAnCE/Config_Handlers/Deployment.cpp: + * DAnCE/Config_Handlers/Deployment.hpp: + * DAnCE/Config_Handlers/ccd.cpp: + * DAnCE/Config_Handlers/ccd.hpp: + * DAnCE/Config_Handlers/cdd.cpp: + * DAnCE/Config_Handlers/cdd.hpp: + * DAnCE/Config_Handlers/cdp.cpp: + * DAnCE/Config_Handlers/cdp.hpp: + * DAnCE/Config_Handlers/cid.cpp: + * DAnCE/Config_Handlers/cid.hpp: + * DAnCE/Config_Handlers/cpd.cpp: + * DAnCE/Config_Handlers/cpd.hpp: + * DAnCE/Config_Handlers/iad.cpp: + * DAnCE/Config_Handlers/iad.hpp: + * DAnCE/Config_Handlers/pcd.cpp: + * DAnCE/Config_Handlers/pcd.hpp: + * DAnCE/Config_Handlers/toplevel.cpp: + * DAnCE/Config_Handlers/toplevel.hpp: + * DAnCE/Config_Handlers/Config_Handlers.mpc: + + Generated code from XSC which is going to be used for the next + generation handlers. They have been added in the MPC but guarded + with requires += dummy_label since they give lot of warnings. + +Mon Aug 23 08:02:12 UTC 2004 Johnny Willemsen + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + Fixed typo in vpath + +Sun Aug 22 22:23:12 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + + Fixed VC6 compilation errors. + +Mon Aug 23 01:07:24 2004 Balachandran Natarajan + + * DAnCE/ciao/StandardConfigurator_Impl.cpp: + * ciao/StandardConfigurator_Impl.cpp: + + Fixed unused variable warnings. + +Sun Aug 22 21:28:34 2004 Balachandran Natarajan + + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + * DAnCE/ciao/StandardConfigurator_Impl.cpp: + * DAnCE/ciao/StandardConfigurator_Impl.h: + * DAnCE/ciao/CCM_Core.mpc: + + Added these files to the DAnCE builds. These were from the + following change + + Tue Aug 17 14:29:00 2004 Jules White + + * ciao/CCM_Core.mpc: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + * ciao/StandardConfigurator_Impl.cpp: + * ciao/StandardConfigurator_Impl.h: + + Fixed compilation errors in builds where exceptions have been + turned off. + +Sun Aug 22 22:11:49 2004 Balachandran Natarajan + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Fixed redeclaration error in VC6 builds. + +Sun Aug 22 20:08:10 2004 Balachandran Natarajan + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed unused variable warnings in the generated code. + +Sun Aug 22 17:06:44 2004 Balachandran Natarajan + + * tools/IDL3_to_IDL2/be_global.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Fixed unused variable warnings in our daily builds. + +Sun Aug 22 16:26:01 2004 Balachandran Natarajan + + * performance-tests/Protocols/Receiver/Receiver.mpc: + + Fixed a compile error in our daily builds. + +Fri Aug 20 16:01:55 2004 Jeff Parsons + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Fixed typo in source file name. + +Fri Aug 20 10:39:12 UTC 2004 Johnny Willemsen + + * DAnCE/ciao/Container_Base.h: + Fixed compile errors + +Fri Aug 20 07:32:12 UTC 2004 Johnny Willemsen + + * ciao/Container_Base.h: + Fixed compile errors + +Thu Aug 19 17:13:22 2004 Jeff Parsons + + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added code generation for the set_attributes() method called + on the servant by the deployer. + +Thu Aug 19 16:09:45 2004 Balachandran Natarajan + + * DAnCE/ciao/Container_Base.h: + * ciao/Container_Base.h: + + Fixed a compilation error reported by Roland Schimmack + +Thu Aug 19 08:44:12 UTC 2004 Johnny Willemsen + + * PROBLEM-REPORT-FORM: + Ask for the default.features file used by MPC. + +Wed Aug 18 14:21:12 UTC 2004 Johnny Willemsen + + * DAnCE/NodeManager/NodeDaemon_Impl.h: + Added missing pragma pop + +Tue Aug 17 14:29:00 2004 Jules White + + * CIAO/ciao/Servant_Impl_Base.h: + * CIAO/ciao/Servant_Impl_Base.cpp: + Added a method to create and return the StandardConfigurator for a component. + Overrided _default_POA so that it returns the POA of the servant's container. + + * CIAO/ciao/StandardConfigurator_Impl.h: + * CIAO/ciao/StandardConfigurator_Impl.cpp: + Created an implementation of the StandardConfigurator interface. + +Mon Aug 16 22:15:52 2004 Balachandran Natarajan + + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + + Fixed compilation errors in builds where exceptions have been + turned off. + +Mon Aug 16 22:09:52 2004 Balachandran Natarajan + + * performance-tests/Protocols/Sender/Sender.mpc: + + Fix for link errors on the scoreboard. + +Mon Aug 16 21:01:49 2004 Balachandran Natarajan + + * performance-tests/Benchmark/Benchmark.mpc: + + Fix for link errors on the scoreboard. + +Mon Aug 16 16:44:13 2004 J.T. Conklin + + * CIAO/DAnCE/ExecutionManager/Execution_Manager.cpp: + * CIAO/DAnCE/NodeManager/Node_Daemon.cpp: + * CIAO/DAnCE/ciao/CCM_Container.idl: + * CIAO/ciao/CCM_Container.idl: + Changed #include "orbsvcs/orbsvcs/..." to #include "orbsvcs/...". + +Mon Aug 16 16:36:49 2004 Jeff Parsons + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Changed conversion for eventtypes to generate, instead of the + original eventtype, a valuetype with Components::EventBase added + to its inheritance list. This is completely equivalent to the + original eventtype and has the advantage that it eliminates the + need to use the -Sm option (disabling CCM equivalent IDL + preprocessing) when running the IDL compiler on a converted + file. Thanks to Bala Natarajan for + the suggestion. + +Mon Aug 16 14:14:15 2004 Balachandran Natarajan + + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl: + + Do not do the compile the implied data part of the IDL. + +Mon Aug 16 12:42:59 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/CAD_Handler.h: + * DAnCE/Config_Handlers/CEPE_Handler.h: + * DAnCE/Config_Handlers/CPK_Handler.h: + * DAnCE/Config_Handlers/CPR_Handler.h: + * DAnCE/Config_Handlers/Cap_Handler.h: + * DAnCE/Config_Handlers/CompIntrDesc_Handler.h: + * DAnCE/Config_Handlers/CompPkgDesc_Handler.h: + * DAnCE/Config_Handlers/DT_Handler.h: + * DAnCE/Config_Handlers/Domain_Handler.h: + * DAnCE/Config_Handlers/ERE_Handler.h: + * DAnCE/Config_Handlers/IAD_Handler.h: + * DAnCE/Config_Handlers/ID_Handler.h: + * DAnCE/Config_Handlers/IR_Handler.h: + * DAnCE/Config_Handlers/MID_Handler.h: + * DAnCE/Config_Handlers/NIA_Handler.h: + * DAnCE/Config_Handlers/PCI_Handler.h: + * DAnCE/Config_Handlers/PC_Handler.h: + * DAnCE/Config_Handlers/Plan_Handler.h: + * DAnCE/Config_Handlers/Process_Element.h: + * DAnCE/Config_Handlers/Property_Handler.h: + * DAnCE/Config_Handlers/RS_Handler.h: + * DAnCE/Config_Handlers/RUK_Handler.h: + * DAnCE/Config_Handlers/Requirement_Handler.h: + * DAnCE/Config_Handlers/SPK_Handler.h: + * DAnCE/Config_Handlers/SP_Handler.h: + * DAnCE/Config_Handlers/TPD_Handler.h: + * DAnCE/Config_Handlers/Utils.h: + + Use ciao/ to include any header files from core ciao. + + * DAnCE/ciao/CCM_Core.mpc: + * DAnCE/tests/Config_Handlers/handler_test.mpb: + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + + Use the right libraries for linking. This should probably + address some of the core build errors on the scoreboard. + +Sun Aug 15 18:32:49 2004 Jeff Parsons + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + * tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h: + * tools/IDL3_to_IDL2/be_extern.h: + * tools/IDL3_to_IDL2/be_global.cpp: + * tools/IDL3_to_IDL2/be_global.h: + * tools/IDL3_to_IDL2/be_helper.cpp: + * tools/IDL3_to_IDL2/be_helper.h: + * tools/IDL3_to_IDL2/be_init.cpp: + * tools/IDL3_to_IDL2/be_produce.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.h: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + * tools/IDL3_to_IDL2/README: + + New files implementing a tool that inputs an IDL file with IDL3 + constructs and generates another IDL file with the IDL3 + constructs converted to the spec-defined IDL2 equivalents. Using + the generated file instead of the original one in applications + will allow the developer to reference the IDL2 equivalent types + in application IDL, rather than just in C++ code as before. + The generated IDL file has a '_IDL2' suffix added to the + original file name just before the '.idl' extension. + +Sun Aug 15 09:17:59 2004 Balachandran Natarajan + + * performance-tests/Benchmark/Benchmark.mpc: + + Added missing libraries as reported by our daily builds. + +Sun Aug 15 09:12:36 2004 Balachandran Natarajan + + * DAnCE/tests/Config_Handlers/handler_test.mpb: + + Fixed the handlers to link in CIAO_DnC_Container too. + +Sat Aug 14 14:44:24 2004 Balachandran Natarajan + + * DAnCE/Config_Handlers/Config_Handlers.mpc: + + Do not include /usr/lib to be in libpaths. This is odd and + shouldn't be there at the application level. Applications should + only be bothered about using $XERCESCROOT and the like. If the + application doesn't specify the compiler, linker and the loader + knows where to pick things from. + +Sat Aug 14 14:07:53 2004 Aniruddha Gokhale + + * DAnCE/NodeManager/Node_Daemon.cpp: + + Included "ace/os_include/os_netdb.h since otherwise the + MAXHOSTNAMELEN constant was not found. + +Sat Aug 14 15:36:28 2004 Balachandran Natarajan + + * DAnCE/NodeManager/NodeDaemon_Impl.cpp: + * DAnCE/NodeManager/NodeDaemon_Impl.h: + * DAnCE/NodeManager/Node_Daemon.cpp: + + Cosmetic fixes for fuzz errors and other simple fixes for the + daily builds. + + * DAnCE/NodeManager/README: + + Added a README file in the directory. + +Sat Aug 14 04:20:44 2004 Balachandran Natarajan + + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ciao/ComponentsC.h: + * ciao/ComponentsC.h: + + Removed a trailing ; at the end of namespace closure. g++-3.4.1 + starts getting seizures once it locates a trailing ;. + +Sat Aug 14 03:29:18 2004 Balachandran Natarajan + + * DAnCE/tests/Config_Handlers/handler_test.mpb: + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + * tools/XML_Helpers/XMLHelpers.mpc: + + Tried fixing some warnings and errors in the builds. I am not + able to reproduce it and so I am taking a blind shot. + +Thu Aug 12 14:14:00 Jules White + + * docs/schema/cdp.xsd: + * docs/schema/Modified_Deployment.xsd: + + Changed the schema so that it was more compliant with the spec. + +Thu Aug 12 15:25:44 2004 Balachandran Natarajan + + * DAnCE/NEWS: + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + + Updates at this + +Thu Aug 12 11:35:44 2004 Balachandran Natarajan + + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + + Propogating the changes from "Mon Aug 9 11:38:04 2004 Jeff + Parsons " to DAnCE. + + * DAnCE/tests/Config_Handlers/Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.h: + + Cleaned up things so that it is more portable. + + * DAnCE/tests/Config_Handlers/handler_test.mpb: + + Put Handler_Test as a template file. + +Thu Aug 12 16:20:19 2004 Balachandran Natarajan + + * DAnCE/tests/Config_Handlers/Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.h: + * DAnCE/tests/Config_Handlers/Handler_Test.i: + + Fixed fuzz errors. + +Wed Aug 11 22:37:31 2004 Balachandran Natarajan + + * DAnCE/NodeManager/Node_Daemon.cpp: + * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp: + + Fixed fuzz errors. + +Wed Aug 11 22:15:26 2004 Balachandran Natarajan + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + + Fixed yet another problem with MPC file. Should by now compile + clean on the scoreboard. Let us see hwo it goes. + +Wed Aug 11 20:08:58 2004 Balachandran Natarajan + + * CIDLC/CIDLC.mpc: + + Fixed library paths. This seems to have been busted. + +Wed Aug 11 14:38:00 2004 Balachandran Natarajan + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Made certain parts exception safe and fixed fuzz errors. + + * tests/CIDL/CodeGen/CodeGen.mpc: + + The MPC file was busted which lead to errors in the daily + builds. + + * tests/RTCCM/DiffServ/Receiver/Receiver.mpc: + + Fixed errors in he MPC file. + + * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp: + + Fixed fuzz errors. + +Wed Aug 11 12:45:09 2004 Balachandran Natarajan + + * CIDLC/CIDLC.mpc: + + Added new files startting with Exec* into the CIDLC project. + + * CIAOTAO.mwc: + + Added tests section to the above file. + +Wed Aug 11 15:08:44 2004 Balachandran Natarajan + + * tests/CIDL/CodeGen/CodeGen.mpc: + + Fix for the compilation errors in the daily builds. + +Mon Aug 9 11:38:04 2004 Jeff Parsons + + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_T.h: + + Moved the body of the destructor and the same_component() + method from the generated servant class to the base class. + +Sat Aug 7 17:55:59 2004 Balachandran Natarajan + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + + Prevented compilation errors if CIDL is not built. + +Sat Aug 7 16:43:45 2004 Balachandran Natarajan + + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/IDL3/Homes/Basic/Basic.mpc: + + Changed the name of the stub library and project names. There + was a clash in project and library names. + +Thu Aug 5 17:42:56 2004 Jeff Parsons + + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/ExecImplGenerator.hpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.hpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.hpp: + + New files, which generate empty executor implementation + classes (with spec-defined operations filled in and + IDL operations and attributes marked for the developer + to fill in). This generation is optional, triggered by + the CIDL compiler command line option --gen-exec-impl. + Two other options --exec-hdr-file-suffix and --exec-src-file-suffix, + can override the default generated file extensions of + _exec.h and _exec.cpp. Tao others, --exec-hdr-file-regex and + --exec-src-file-regex, allow replacement of default generated + filenames by pattern matching with regular expressions. + And finally, two more, --exec-export-include, + overrides the default generated export macro header file, + and --exec-export-macro, overrides the default generated + export macro for the executor implementation file. + + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + * CIDLC/cidlc.cpp: + + - Added generation of (unimplemented) home finder + operations. + + - Filled gaps and organized the command line options + for servant filename suffixes and regular expressions + to replace default generated filenames. + + - Added a new type name emitter that generates the + appropriate NULL return value for any type. + + * tests/CIDL/CodeGen/Basic.idl: + * tests/CIDL/CodeGen/Basic_stub_export.h: + * tests/CIDL/CodeGen/Basic_svnt_export.h: + * tests/CIDL/CodeGen/CodeGen.cidl: + * tests/CIDL/CodeGen/CodeGen.idl: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/CIDL/CodeGen/CodeGen_exec_export.h: + * tests/CIDL/CodeGen/CodeGen_stub_export.h: + * tests/CIDL/CodeGen/CodeGen_svnt_export.h: + * tests/CIDL/CodeGen/README: + + New test, for servant and executor implemtation code + generation of the CIDL compiler. This test target + correct code generation for many component-specific + features of IDL - catching operations and attributes + for supported interfaces, operations and attributes + for parents of supported interfaces, home operations + from base homes, inherited home factory and finder + operations, etc. The object of the test is to check + that the generated code builds and links successfully. + +Thu Aug 5 15:49:10 2004 Ossama Othman + + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + + Made destructors in reference count enabled classes protected to + enforce proper memory management through the reference counting + mechansism (i.e. prevent directly calling operator delete() on + the reference counted object). + + (cube_long): + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp (cube_long): + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h + (makeCall): + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp + (makeCall): + + Added missing emulated exception parameter. Fixes compile-time + errors in emulated exception builds. + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp + (ccm_activate): + + Corrected emulated excepton parameter. Fixes a compile-time + error in emulated exception builds. + + * performance-tests/Protocols/Controller/Controller.mpc: + * tests/RTCCM/DiffServ/Receiver/Receiver.mpc + (DiffServ_Receiver_exec): + * tests/RTCCM/DiffServ/Sender/Sender.mpc (DiffServ_Sender_exec): + + Added missing "requires += exceptions". These tests will not + compile in emulated exception configurations. + + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp + (get_latency): + + Fixed unused parameter warning in emulated exception builds. + +Thu Aug 5 11:48:49 2004 Ossama Othman + + * performance-tests/Protocols/Controller/Controller.mpc: + + Corrected library link order. Addresses undefined reference + link-time errors in static builds. + + * tools/XML_Helpers/XMLHelpers.mpc (Helper_Test): + + Added missing TAO_IFR_Client library to "libs" variable. + Addresses undefined reference link-time errors in static + builds. + +Thu Aug 5 13:28:49 2004 Will Otte + + * docs/schema/ciaopolicy.xsd: + + Schema describing ORB policy configurations. + +Thu Aug 5 11:56:03 2004 Jeff Parsons + + * CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp: + + Changed template template parameter of class Implanter from + "Buffer" to "BufferType" because the former was causing a + problem with VC 7.1 clashing with a class Buffer in another + file. + +Thu Aug 5 08:48:50 2004 Krishnakumar B + + * CIAO-INSTALL.html: Updated to reflect dependency on Xerces and + native exceptions. + +Wed Aug 4 22:50:17 2004 Ossama Othman + + * examples/Hello/Sender/Sender.mpc (Hello_Starter): + * performance-tests/Protocols/Controller/Controller.mpc (perf): + * tools/XML_Helpers/XMLHelpers.mpc (Helper_Test): + + Fixed static build link-time errors caused by not linking the + appropriate libraries. + +Wed Aug 4 22:31:24 2004 Ossama Othman + + * docs/tutorial/Hello/client.cpp (main): + + Fixed typo that caused a syntax error. + +Wed Aug 4 17:24:18 2004 Ossama Othman + + * examples/OEP/Display/RateGen/RateGen_exec.cpp (create): + * performance-tests/Benchmark/LatencyTest.cpp (makeCall): + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp + (makeCall): + * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.cpp + (create): + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp: + * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp: + + Fixued unused parameter warnings. + + * docs/tutorial/Hello/hello_exec.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + + Fixed emulated exception usage. + + Fixed unused argument warnings. + + * docs/tutorial/Hello/client.cpp (main): + * docs/tutorial/Hello/simple_client.cpp (main): + * performance-tests/Benchmark/Multi_Threaded/client.cpp (main): + * performance-tests/Benchmark/RoundTrip/client.cpp (main): + * performance-tests/Benchmark/RoundTripClient/client.cpp (main): + + Fixed CORBA::ORB_init() arguments in emulated exception case. + + Added missing ACE_TRY_CHECK after CORBA::ORB_init() call. + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp + (start): + + Fixed emulated exception usage. + + Added missing emulated exception parameter. Fixes a + compile-time error. + + Fixed unused parameter warnings. + + * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp: + + Include "ace/OS_NS_unistd.h" to pull in ACE_OS::sleep() + declaration. + + * tests/RTCCM/Priority_Test/Controllers/Controller_exec.cpp: + + Include "ace/OS_NS_stdio.h" to pull in ACE_OS::snprintf() + declaration. + + Fixed unused parameter warnings. + +Wed Aug 4 16:43:43 2004 Ossama Othman + + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp + (push_Refresh): + + Fixed emulated exception usage. + + Fixed unused parameter warnings. + + * examples/OEP/BasicSP/EC/EC_exec.cpp (pulse): + + Added missing ACE_TRY_CHECK emulated exception macro. Fixes + warning about unused "ACE_TRY_LABEL" label. + + * examples/OEP/Display/RateGen/client.cpp: + + Include "ace/OS_NS_unistd.h" to pull in ACE_OS::sleep() + declaration. + + * examples/Hello/Receiver/Receiver_exec.cpp (ccm_activate): + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp + (ccm_activate): + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp (ccm_activate): + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp + (ccm_activate): + * examples/OEP/Display/GPS/GPS_exec.cpp (get_MyLocation, posx): + (posy, create): + * examples/OEP/Display/GPS/GPS_tracing_exec.cpp (get_MyLocation): + (posx, posy, create): + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp + (ccm_activate): + * examples/OEP/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp + (execute): + * examples/OEP/Display/NavDisplayGUI_exec/NodeItem.cpp (moveBy): + * examples/OEP/Display/NavDisplayGUI_exec/QuitCmd.cpp (execute): + + Fixed unused parameter warnings. + +Wed Aug 4 11:16:47 2004 Will Otte + + * Components/ComplexComponent/Attributes/Attributes.idl: + * Homes/Attributes/HomeAttributes.idl: + * ImpliedIDL/Components/Basic/ICBasic.idl: + * Homes/Finder/Finder.idl: + * ImpliedIDL/Components/EventSink/ICEventSink.idl: + * ImpliedIDL/Components/EventSource/ICEventSource.idl: + * ImpliedIDL/Components/Receptacles/ICReceptacles.idl: + + Addressed some build errors on the Fuzz build. + + * Components/ComplexComponent/Attributes/AttributesS.cpp: + * Components/ComplexComponent/EventSink/EventSinkS.cpp: + * Components/ComplexComponent/EventSource/EventSourceS.cpp: + * Components/ComplexComponent/Facets/FacetsS.cpp: + * Components/ComplexComponent/Receptacles/ReceptaclesS.cpp: + * Components/SimpleComponent/SimpleComponentS.cpp: + * Events/Abstract/AbstractS.cpp: + * Events/Regular/RegularS.cpp: + * Homes/Attributes/HomeAttributesS.cpp: + * Homes/Basic/BasicS.cpp: + * Homes/Factory/FactoryS.cpp: + * Homes/Finder/FinderS.cpp: + * Homes/Inheritance/InheritanceS.cpp: + * ImpliedIDL/Components/Basic/ICBasicS.cpp: + * ImpliedIDL/Components/EventSink/ICEventSinkS.cpp: + * ImpliedIDL/Components/EventSource/ICEventSourceS.cpp: + * ImpliedIDL/Components/Receptacles/ICReceptaclesS.cpp: + * ImpliedIDL/Events/EventsS.cpp: + * ImpliedIDL/Homes/HomesS.cpp: + + Removed a bunch of generated code from the repository. + +Tue Aug 3 20:18:48 2004 Balachandran Natarajan + + * docs/schema/cid.xsd: + * docs/schema/Deployment.xsd: + + Added some tweaks. + +Tue Aug 3 14:25:44 2004 Will Otte + + * IDL3/Components/ComplexComponent/Attributes/Attributes.idl: + * IDL3/Components/ComplexComponent/Attributes/Attributes.mpc: + * IDL3/Components/ComplexComponent/Attributes/AttributesS.cpp: + * IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h: + * IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h: + * IDL3/Components/ComplexComponent/EventSink/EventSink.idl: + * IDL3/Components/ComplexComponent/EventSink/EventSink.mpc: + * IDL3/Components/ComplexComponent/EventSink/EventSinkS.cpp: + * IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h: + * IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h: + * IDL3/Components/ComplexComponent/EventSource/EventSource.idl: + * IDL3/Components/ComplexComponent/EventSource/EventSource.mpc: + * IDL3/Components/ComplexComponent/EventSource/EventSourceS.cpp: + * IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h: + * IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h: + * IDL3/Components/ComplexComponent/Facets/Facets.idl: + * IDL3/Components/ComplexComponent/Facets/Facets.mpc: + * IDL3/Components/ComplexComponent/Facets/FacetsS.cpp: + * IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h: + * IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h: + * IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl: + * IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc: + * IDL3/Components/ComplexComponent/Receptacles/ReceptaclesS.cpp: + * IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h: + * IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h: + * IDL3/Components/SimpleComponent/SimpleComponent.idl: + * IDL3/Components/SimpleComponent/SimpleComponent.mpc: + * IDL3/Components/SimpleComponent/SimpleComponentS.cpp: + * IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h: + * IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h: + * IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h: + * IDL3/Events/Abstract/Abstract.idl: + * IDL3/Events/Abstract/Abstract.mpc: + * IDL3/Events/Abstract/AbstractS.cpp: + * IDL3/Events/Abstract/Abstract_stub_export.h: + * IDL3/Events/Abstract/Abstract_svnt_export.h: + * IDL3/Events/Regular/Regular.idl: + * IDL3/Events/Regular/Regular.mpc: + * IDL3/Events/Regular/RegularS.cpp: + * IDL3/Events/Regular/Regular_stub_export.h: + * IDL3/Events/Regular/Regular_svnt_export.h: + * IDL3/Homes/Attributes/HomeAttributes.idl: + * IDL3/Homes/Attributes/HomeAttributes.mpc: + * IDL3/Homes/Attributes/HomeAttributesS.cpp: + * IDL3/Homes/Attributes/HomeAttributes_stub_export.h: + * IDL3/Homes/Attributes/HomeAttributes_svnt_export.h: + * IDL3/Homes/Basic/Basic.idl: + * IDL3/Homes/Basic/Basic.mpc: + * IDL3/Homes/Basic/BasicS.cpp: + * IDL3/Homes/Basic/Basic_stub_export.h: + * IDL3/Homes/Basic/Basic_svnt_export.h: + * IDL3/Homes/Factory/Factory.idl: + * IDL3/Homes/Factory/Factory.mpc: + * IDL3/Homes/Factory/FactoryS.cpp: + * IDL3/Homes/Factory/Factory_stub_export.h: + * IDL3/Homes/Factory/Factory_svnt_export.h: + * IDL3/Homes/Finder/Finder.idl: + * IDL3/Homes/Finder/Finder.mpc: + * IDL3/Homes/Finder/FinderS.cpp: + * IDL3/Homes/Finder/Finder_stub_export.h: + * IDL3/Homes/Finder/Finder_svnt_export.h: + * IDL3/Homes/Inheritance/Inheritance.idl: + * IDL3/Homes/Inheritance/Inheritance.mpc: + * IDL3/Homes/Inheritance/InheritanceS.cpp: + * IDL3/Homes/Inheritance/Inheritance_stub_export.h: + * IDL3/Homes/Inheritance/Inheritance_svnt_export.h: + * IDL3/ImpliedIDL/Components/Basic/ICBasic.idl: + * IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc: + * IDL3/ImpliedIDL/Components/Basic/ICBasicS.cpp: + * IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h: + * IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h: + * IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl: + * IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc: + * IDL3/ImpliedIDL/Components/EventSink/ICEventSinkS.cpp: + * IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h: + * IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h: + * IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl: + * IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc: + * IDL3/ImpliedIDL/Components/EventSource/ICEventSourceS.cpp: + * IDL3/ImpliedIDL/Components: + + Various tests of compilation for IDL3 constructs. + +Tue Aug 3 18:36:10 2004 Balachandran Natarajan + + * docs/schema/README.html: + + File explaining what these new descriptors mean. + + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/Deployment.xsd: + * docs/schema/Modified_Deployment.xsd: + * docs/schema/Spec_Defined_Deployment.xsd: + * docs/schema/Spec_Defined_XMI.xsd: + * docs/schema/ccd.xsd: + * docs/schema/cdd.xsd: + * docs/schema/cdp.xsd: + * docs/schema/cid.xsd: + * docs/schema/cpd.xsd: + * docs/schema/iad.xsd: + * docs/schema/pcd.xsd: + * docs/schema/toplevel.xsd: + * docs/schema/unused_elements.xsd: + + Sets of schemata that will be used in DAnCE. The meaning of + these different schemata have been documented in the + README.html. + +Sun Aug 1 09:30:37 2004 Balachandran Natarajan + + * ChangeLogs: + + Created a new directory and moved a bunch of ChangeLog entries + there. + +Sat Jul 31 11:15:15 2004 Ossama Othman + + * CIAO version 0.4.2 released. + +Local Variables: +add-log-time-format: current-time-string +End: diff --git a/modules/CIAO/ChangeLogs/ChangeLog-06a b/modules/CIAO/ChangeLogs/ChangeLog-06a new file mode 100644 index 00000000000..f2d22b3e963 --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-06a @@ -0,0 +1,8579 @@ +Tue Apr 18 00:14:56 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + + Reverted back the two files I accidentally checked in, which + should have gone into a branch. :( + +Mon Apr 17 18:04:56 UTC 2006 William R. Otte + + * M docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + * examples/Display/HUDisplay.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Display/RateGen/RateGen.mpc + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Swapping/Hello_Base/Hello_Base.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * tools/Config_Handlers/Config_Handlers.mpc + + Linking fixes for OS X. + + +Mon Apr 17 02:33:44 UTC 2006 Wallace Zhang + + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc: + * tools/Config_Handlers/Config_Handlers.mpc: + + Avoids building with ace_for_tao. + +Fri Apr 14 14:50:47 UTC 2006 Wallace Zhang + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/RateGen/RateGen.mpc: + * examples/Hello/Sender/Sender.mpc: + * examples/Swapping/Sender/Sender.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + + Avoids building with ace_for_tao. + +Thu Apr 13 19:18:22 UTC 2006 Wallace Zhang + + * docs/tutorials/Quoter/Simple/Broker/Broker.mpc: + * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/EC/EC.mpc: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Swapping/Receiver/Receiver.mpc: + * performance-tests/Benchmark/Benchmark.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Minimum/Sender/Sender.mpc: + + Avoids building with ace_for_tao. + +Apr Thu 13 03:32:35 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Events.idl + + Removed this file. + + * ciaosvcs/Events/CIAO_Events.mpc + + Modified to put an empty segment of IDL_Files. + +Wed Apr 12 17:51:03 UTC 2006 Gan Deng + + * NEWS + + Updated the NEWS file. + +Wed Apr 12 14:47:14 UTC 2006 William R. Otte + + * DAnCE/NodeApplication/NodeApplication.mpc + * DAnCE/NodeManager/Monitor.mpc + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc + * ciaosvcs/Events/CIAO_Events.mpc + + Fixes for linking errors/warnings on OS X builds. + +Tue Apr 11 12:39:14 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Utils/Utils.mpc: + Use exceptions as base project + +Tue Apr 11 12:43:14 UTC 2006 Johnny Willemsen + + * ciao/Container_Base.cpp: + Small simplification + +Tue Apr 11 12:22:14 UTC 2006 Johnny Willemsen + + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc: + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc: + Updated base projects to get correct build order + +Tue Apr 11 08:43:14 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + Initialise pointers with 0 + +Tue Apr 11 06:54:14 UTC 2006 Johnny Willemsen + + * tests/Minimum/Minimum_Base/Minimum.mpc: + * tests/IDL3/Lookup/lookup_test.mpc: + * tests/IDL3/ImpliedIDL/Homes/Homes.mpc: + * tests/IDL3/ImpliedIDL/Events/Events.mpc: + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc: + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc: + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc: + * tests/IDL3/Homes/Inheritance/Inheritance.mpc: + * tests/IDL3/Homes/Finder/Finder.mpc: + * tests/IDL3/Homes/Factory/Factory.mpc: + * tests/IDL3/Homes/Basic/Basic.mpc: + * tests/IDL3/Homes/Attributes/HomeAttributes.mpc: + * tests/IDL3/Events/Regular/Regular.mpc: + * tests/IDL3/Events/Abstract/Abstract.mpc: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc: + * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc: + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc: + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc: + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/Bug_2130_Regression/interfaces/ENW.mpc: + * performance-tests/Protocols/common/Protocols.mpc: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Display/HUDisplay.mpc: + * examples/BasicSP/BasicSP.mpc: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + Updated base projects to get correct build order + +Tue Apr 11 06:35:14 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + Use base projects to set dependencies + +Mon Apr 10 18:48:14 UTC 2006 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication.mpc: + Fixed base project + +Mon Apr 10 14:29:13 UTC 2006 Gan Deng + + * TAO/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp + + Modified to make _narrow to be called at the first step + when connecting supplier and config. Also modified to + make debug statements debug_level controlled. + +Mon Apr 10 12:31:14 UTC 2006 Johnny Willemsen + + * ciao/CCM_Core.mpc: + Removed commented out line + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + Updated base projects + +Mon Apr 10 11:51:14 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + Readded ciao_container_dnc + + * ciao/CCM_Core.mpc: + Use more base projects + + * DAnCE/Interfaces/Interfaces.mpc: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + Use other base projects to get correct build order + +Mon Apr 10 10:00:14 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + Removed ciao_container_dnc + +Mon Apr 10 09:38:14 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_Events.mpc: + Use ciao_rtevent_dnc as base + +Mon Apr 10 09:18:14 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + * ciaosvcs/Events/CIAO_Events.mpc: + Use ciao_events_base_dnc as base project + +Mon Apr 10 09:15:14 UTC 2006 Johnny Willemsen + + * ciao/CCM_Core.mpc: + For Deployment_Stub use ciao_events_base_dnc and ciao_client_dnc + as base projects + +Mon Apr 10 08:50:14 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_Events.mpc: + Removed ciao_events_dnc as base project, we are building + this lib right now + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + Use base projects instead of libs + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + Remvoed ciao_events_dnc + +Sat Apr 8 15:39:14 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc + + Fixed a linking error in SuSE_CP_Static build. + +Fri Apr 7 04:09:33 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + + Fixed a bug in detecting External connection and Internal + connections. Earlier when an external component is detected, + not *all* connections associated with this components are + purged from the to-be-removed connections list. Added another + helper method to accomplish this task. + + Modified to enforce passivation occured on all components + before any connections are removed. + +Fri Apr 7 03:55:46 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Fixed a bug when redeploying components using the same set + of NodeManagers. Earlier when destroying applications or + components, internal components and external/shared components + are not all unbinded from the map, which causes duplicate + instance exception thrown. + +Thu Apr 6 16:01:30 UTC 2006 Jeff Parsons + + * CCF/CCF/CompilerElements/TokenStream.hpp: + + Added empty virtual destructor to template base class, to + eliminate bogus GCC warnings. + +Thu Apr 6 15:22:31 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Events.mpc + + Fixed linking errors on WinXP_BCB6_Pro_Dynamic_Release build. + + * examples/Hello/descriptors_shared_components/deploymentplan.cdp + * examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp + + Modified to illustrate the shared components scenario. + +Thu Apr 6 14:54:59 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_EventService_Factory_impl.h + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h + + Some cosmestic changes. + +Thu Apr 6 08:20:12 UTC 2006 Johnny Willemsen + + * ciao/CCM_Component.idl: + Removed the forward declaration of IRObject and just include + ciao/CCM_Component.idl. The forward declaration is causing + problems with the versioned namespace support, will investigate + this later + +Wed Apr 5 20:57:32 UTC 2006 Gan Deng + + * TAO/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp + + Make debug statement debug_level controlled. + +Wed Apr 5 18:49:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + Fixed compile errors + +Wed Apr 5 13:18:12 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h: + Fixed pragma once warning + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + Fixed conversion warning + +Wed Apr 5 12:24:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + Fixed compile errors + +Tue Apr 4 18:11:37 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp + * ciaosvcs/Events/CIAO_EventService_Factory_impl.h + + Fixed an warning in WinXP_BCB6_Pro_Dynamic_Debug build + by modifying the name of the original "init" method. + +Tue Apr 4 17:27:52 UTC 2006 xiong,ming + + * tools/Config_Handlers/CIAO_Events/test.cpp + + Fixed an warning. + +Mon Apr 3 20:00:11 UTC 2006 Jeff Parsons + + * CIDLC/Literals.hpp: + * CIDLC/Literals.cpp: + + Changed an enum value 'SIZE' to 'LIT_SIZE' to avoid an + apparent conflict with something in WinDef.h on + Windows. + +Thu Mar 30 18:28:32 UTC 2006 Gan Deng + + * ciao/Deployment_Events.idl + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp + + Fixed fuzz errors. + +Thu Mar 30 17:16:17 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Direct/* + + Removed all files under this directory since they are + no longer used. + +Thu Mar 30 17:23:12 UTC 2006 Gan Deng + + * tools/Config_Handlers/Config_Handlers.mpc + + Added link dependency to CIAO_Events_Handler project. + +Thu Mar 30 16:38:25 UTC 2006 Gan Deng + + * CIAO_DAnCE.mwc + * CIAO_TAO.mwc + * CIAO_TAO_DAnCE.mwc + + Added "ciaosvcs" into the workspace. + + * ciao/CCM_Core.mpc + * ciao/CCM_Event.idl + * ciao/Container_Base.cpp + * ciao/Container_Base.h + * ciao/Deployment_Core.idl + * ciao/Deployment_Data.idl + * ciao/Deployment_Events.idl + + Added an "CIAO_DnC_Events" project. Enhanced Deployment_Core.idl + to support configuring and deploying pub/sub services. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeApplication/NodeApplication_Impl.inl + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Enhanced DAnCE to support pub/sub services integration. + + * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp + * ciaosvcs/Events/CIAO_EventService_Factory_impl.h + * ciaosvcs/Events/CIAO_Events.idl + * ciaosvcs/Events/CIAO_Events.mpc + * ciaosvcs/Events/CIAO_Events_Export.h + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.cpp + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.h + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.idl + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Export.h + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc + + Added CIAO_Event_Service support, which are some reusable + libraries and CORBA services that could be configured and + installed on demand through the DAnCE toolchain. + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/CIAOEvents.xsd + * docs/schema/cdp.xsd + + Enhanced XML schema to capture metadata information for + configuring and deploying pub/sub services. + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/ESD_Handler.cpp + * tools/Config_Handlers/ESD_Handler.h + * tools/Config_Handlers/PSPE_Handler.cpp + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h + * tools/Config_Handlers/CIAO_Events/test.cpp + + Added config handler support to accomodate the above changes. + + * examples/Hello/descriptors_events/ciao-events-example-with-filters.ced + * examples/Hello/descriptors_events/ciao-events-example.ced + * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp + * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp + + Added several examples to showcase the capability of CIAO + pub/sub services. + +Thu Mar 30 14:43:46 UTC 2006 Jeff Parsons + + * CIDLC/AttributeSourceEmitters_T.hpp: + + Added 'using namespace StringLiterals;' to this file. Thanks + to Nanbor Wang for pointing out that + this line is also necessary on some platforms, in addition + to the change of + + Wed Mar 29 20:29:40 UTC 2006 Jeff Parsons + +Wed Mar 29 20:29:40 UTC 2006 Jeff Parsons + + * CIDLC/AttributeSourceEmitters_T.hpp: + + Added #include of Literals.hpp. Some platforms are picking up + the declarations in this file without the explicit include, + others are not. + +Wed Mar 29 19:52:54 UTC 2006 Nanbor Wang + + * examples/Hello/descriptors_RTCCM/rt-config-example.csr: + Updated and element with more realistic + values. + +Wed Mar 29 04:40:58 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Added the functionality to honor command line arguments + and service configuration file options defined through + RT-CCM descriptors. + +Mon Mar 27 19:56:51 UTC 2006 Nanbor Wang + + * DAnCE/NodeApplication/NodeApplication.cpp (main): Added code to + print out commandline options of the NodeApplicaion. The print + out is available for CIAO_DEBUG_LEVEL > 9. + + * DAnCE/NodeApplication/Configuration_Factory.h: + * DAnCE/NodeApplication/Configuration_Factory.cpp: Changed + parse_args function to pass "argc" as reference to be consistent + with Arg_Shifter's signature. + + Double-check the "-o" flag first with exact string comparison + before extracting the parameter to avoid mistaking any of the + "-ORBxxx" command line flags as the "-o" flag. Thanks to Sandro + Andrade for reporting the bug. + +Mon Mar 20 22:35:47 UTC 2006 Jeff Parsons + + * ciao/Servant_Impl_Utils_T.cpp: + + - Added 'typename' qualifier when declaring instances + of an iterator for a templatized hash map, since gcc + reminds us that leaving the compiler to implicitly + determine if the scoped name denotes a member or a + type is deprecated. + + - Added an #include of Cookies.h, which is need by compilers + that don't require the template sourced to be included in + the header file. + +Sun Mar 19 20:37:47 UTC 2006 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Removed these files, their former contents are now divided + between CorbaTypenameEmitters.{hpp,cpp} and + UtilityTypeNameEmitters.{hpp,cpp}. + +Fri Mar 17 14:23:53 UTC 2006 Jeff Parsons + + * ciao/CCM_Core.mpc: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h + + - Changed port table types from + ACE_Hash_Map_Manager_Ex<> to ACE_Array_Map<>, + which is more lightweight and makes no + allocations if no entries are added to + the table. + + - Implemented spec-defined methods + get_all_receptacles(), get_all_publishers(), + and disconnect_consumer(). + + * ciao/Servant_Impl_Utils_T.cpp: + + New file, containing implementations of new + static template methods added to class + Servant_Impl_Base, which are called in + generated code as part of the implementation + of the spec-defined methods mentioned above. + + * CIDLC/AttributeHeaderEmitters.cpp: + * CIDLC/AttributeHeaderEmitters.hpp: + * CIDLC/AttributeSourceEmitters_T.hpp: + * CIDLC/CompositionEmitter.cpp: + * CIDLC/CompositionEmitter.hpp: + * CIDLC/CorbaTypeNameEmitters.cpp: + * CIDLC/CorbaTypeNameEmitters.hpp: + * CIDLC/EmitterBase.cpp: + * CIDLC/EmitterBase.hpp: + * CIDLC/EmitterContext.cpp: + * CIDLC/EmitterContext.hpp: + * CIDLC/InterfaceEmitter.cpp: + * CIDLC/InterfaceEmitter.hpp: + * CIDLC/ModuleEmitter.cpp: + * CIDLC/ModuleEmitter.hpp: + * CIDLC/OperationHeaderEmitters.cpp: + * CIDLC/OperationHeaderEmitters.hpp: + * CIDLC/ParameterEmitter_T.hpp: + * CIDLC/Upcase.hpp: + * CIDLC/UtilityTypeNameEmitters.cpp: + * CIDLC/UtilityTypeNameEmitters.hpp: + + New files, containing common code factored + out of the C++ source files below. + + * CIDLC/CIDLC.mpc: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + - Added new generated code as part of the + implementation of the spec-defined methods + mentioned above. + + - Added support for attribute exceptions in + code optionally generated for the stencil + executor implementation classes. + +Thu Mar 16 16:31:51 UTC 2006 Jeff Parsons + + * ciao/CCM_Component.idl: + + Added "omg.org" prefix to the recently added opening of the + CORBA module in this file. + +Tue Mar 14 10:10:58 UTC 2006 Nilabja Roy + + * DAnCE/NodeManager/MonitorController.h: + Reverting back to previous version to avoid conflicts + +Tue Mar 14 09:46:25 UTC 2006 Nilabja Roy + + * DAnCE/NodeManager/MonitorController.cpp: + Reverting back to previous version. Mistakenly added conflicted version. + +Thu Mar 9 09:18:58 2006 Douglas C. Schmidt + + * COPYING: Updated the date to include 2006. + Thanks to Alan Kierstead for + motivating the fix to this oversight. + +Thu Mar 09 08:55:12 UTC 2006 Johnny Willemsen + + * DAnCE/Interfaces/ExecutionManagerDaemon.idl: + * DAnCE/Interfaces/NodeManagerDaemon.idl: + New idl files, these are the same as there are now in the directory + but then just renamed to match the interfaces in these files and + then don't conflict with the ones I created in ciao. + + * DAnCE/Interfaces/ExecutionManager.idl: + * DAnCE/Interfaces/NodeManager.idl: + Removed, file names where not correct and now conflict with files in + the ciao directory + + * DAnCE/Interfaces/Interfaces.mpc: + Updated because of file renames + + * ciao/CCM_Base.idl: + Removed old comment + + * ciao/CCM_Component.idl: + Forward declare CORBA::IRObject instead of including the IFR_Client + idl file + + * ciao/Deployment_Base.idl: + Removed not needed include + + * ciao/Dynamic_Component_Activator.h: + Reordered includes + + * ciao/Swapping_Servant_Home_Impl_Base.h: + * ciao/Upgradeable_Context_Impl_T.h: + * ciao/Swapping_Servant_Home_Impl_T.h: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + Added ciao/ as prefix for the includes + + * ciao/Upgradeable_Context_Impl_T.h: + Added private default constructor + + * ciao/Deployment.idl: + * ciao/DomainApplicationManager.idl: + * ciao/ExecutionManager.idl: + * ciao/NodeApplication_Callback.idl: + * ciao/NodeApplicationManager.idl: + * ciao/NodeManager.idl: + * ciao/RepositoryManager.idl: + * ciao/CCM_Core.mpc: + Splitted Deployment.idl in multiple files so that the linker + can decide not to link in a set of object files we don't need. + This will reduce footprint for several applications + + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + * DAnCE/ExecutionManager/DAM_Map.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/Node_Manager.cpp: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.{h.cpp}: + * DAnCE/TargetManager/Deployment_Configuration.h: + Updated for the idl subsetting of ciao/Deployment.idl. Also add ciao/ + prefix to several includes and try to cleanup a little. + + * DAnCE/RepositoryManager/RepositoryManager.idl: + * DAnCE/RepositoryManager/RepositoryManagerDaemon.idl: + Renamed the first file to the second, matches the interface name. + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/PC_Updater.{h,cpp}: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/RepositoryManager.cpp: + Updated because of rename above + + * DAnCE/RTNodeApplication/senv.sh: + Removed this file, no need here. + + * DAnCE/RTNodeApplication/NodeApplication_Task.h: + No need for virtual inheritance, that consumes more footprint then + needed. + + * DAnCE/RTNodeApplication/NodeApplication_Task.cpp: + Reordered includes + +Wed Mar 08 15:58:12 UTC 2006 Johnny Willemsen + + * ciao/ServerResources.idl: + Fixed incorrect file header + +Wed Mar 08 14:01:12 UTC 2006 Johnny Willemsen + + * rules.ciao.GNU: + Added $(CIAO_ROOT)/ciao to LDFLAGS and $(CIAO) to INCLDIRS + as we do in rules.tao.GNU, this improves the footprint stats + +Mon Mar 06 16:16:12 UTC 2006 Johnny Willemsen + + * ciao/Swapping_Container.{h,cpp}: + Made serial_number_ unsigned and documented why it is static + + * performance-tests/Benchmark/LatencyTest.h: + Removed not needed msvc pragma push/pop + +Sun Mar 05 11:16:46 2006 Wallace Zhang + + * CIAO version 0.5 released. + +Thu Mar 2 17:50:36 UTC 2006 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Struct.cpp: + * CCF/CCF/IDL2/SemanticGraph/Union.cpp: + + Fixed a bug in the logic that determines completeness of recursive + structs and unions. + +Thu Mar 2 08:49:12 UTC 2006 Johnny Willemsen + + * DAnCE/NodeApplication/Container_Impl.cpp: + Replaced NULL with 0 + +Thu Mar 2 01:33:09 UTC 2006 Wallace Zhang + + * NEWS: + + Updated this file with info from Ming Xiong and Gan Deng. + +Wed Mar 1 22:34:52 UTC 2006 Wallace Zhang + + * NEWS: + + Updated the file with info from Ming Xiong. + +Wed Mar 1 19:34:12 UTC 2006 Johnny Willemsen + + * CIAO-INSTALL.html: + Updated rename of CIAOTAO.mwc to CIAO_TAO.mwc + +Wed Mar 1 15:02:10 UTC 2006 xiong,ming + + * DAnCE/NodeApplication/Container_Impl.h + * DAnCE/NodeApplication/Container_Impl.cpp + + Added codes to unregister with naming service when removing + components + +Tue Feb 28 18:46:42 UTC 2006 William R. Otte + + * DAnCE/Deployment.xsd + * DAnCE/Deployment.xsd.orig + * DAnCE/XMI.xsd + * DAnCE/XMI.xsd.orig + + Removed these schema files. They were misleading and useless. + +Fri Feb 24 21:21:02 UTC 2006 xiong,ming + + * tools/Config_Handlers/Config_Handlers.mpc + + Added a verbatim to disable hidden_visibility for Config_Handlers + +Fri Feb 24 18:54:52 UTC 2006 Stoyan Paunov + + * DAnCE/RepositoryManager/HTTP_Handler.cpp: + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + some cosmetic changes + + * DAnCE/RepositoryManager/URL_Parser.h: + made the constructor protected and made the ACE_Singleton a friend + + * DAnCE/RepositoryManager/URL_Parser.cpp: + fixed a bug and improved the robustness of the code + +Fri Feb 24 09:38:12 UTC 2006 Johnny Willemsen + + * CIAO-INSTALL.html: + Fixed typo + +Thu Feb 23 23:35:59 UTC 2006 Chad Elliott + + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Sender/Sender.mpc: + + I was over zealous in my previous change. I shortened too many + project names (those that are defined in projects outside of these + mpc files). + +Wed Feb 22 16:38:32 UTC 2006 Chad Elliott + + * CIAO-INSTALL.html: + + Updated the documentation on how to build cidlc on Windows. + + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Sender/Sender.mpc: + + Shortened the project names in these MPC files to avoid fuzz + warnings. + +Wed Feb 22 01:11:59 UTC 2006 Gan Deng + + * DAnCE/NodeApplication/Container_Impl.cpp + + Fixed a bug about naming service registration. + Thanks Sandro Andrade for reporting + a bug about removing component error. + +Tue Feb 21 23:59:05 UTC 2006 Gan Deng + + * ciao/Deployment.idl + + Added a parameter to the perform_redeployment() operation + to the NodeApplicationManager interface to separate the + "installation of new components" from the "removal of + existing components". + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Modified the logic of perform_redeployment() functionality + to enforce correct order of ReDaC, which is: + (1) Install new components, + (2) Set up new connections, + (3) Remove old connections, and + (4) Remove old components. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + + Fixed a bug about removing components when using ReDaC. + In NodeApplicationManager, after the perform_redeployment() + call calls the remove_components() method to actually + destroy components from the component server, DAnCE NAM doesn't + unbind those components from the cached component_map_, hence + when the create_connections() method is called afterwords, + NAM tries to access the destroyed components to get + their port information, which causes the Object_Not_Exist + exception thrown. + + The fix will unbind the removed components from the + cached component map. However, the trick is that after + we unbind these components, the port iinformation of + these components are also lost, then the + DomainApplicaitonManager could not handle the + "removal" of connections correctly. + + The Right Fix is to enforce correct call sequence, which + are illustrated above. + Thanks Sandro Andrade for reporting + a bug about removing component error. + + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + + Added a component state map to keep track of component state + information. With this map, components will be activated + only when they are newly created, and will be passivated + only when they are currently active. This will also fix + a bug about the component initialization sequence. Earlier, + when components are installed, they are immediately activated + by explicitly calling ciao_preactivate, ciao_activate, and + ciao_postactivate on the comopnent object reference, + which is not compliant to the Spec defined semantics. + This fix shall ensure that the components are activated AFTER + their connections have been setup. + + * DAnCE/NodeApplication/Container_Impl.cpp + + Fixed a bug when passing object reference to a local function. + Earlier the memory of the object reference is released by + the callee, which causes the object reference becomes invalid + after the function returns. + +Tue Feb 21 19:43:11 UTC 2006 William R. Otte + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/Controller/Controller.mpc + + Added avoids+= ace_for_tao to two additional projects. + + * examples/Display/descriptors/EM.ior + * examples/Display/descriptors/GPS.ior + * examples/Display/descriptors/NavDisplay.ior + * examples/Display/descriptors/NavDisplayGUI.ior + + Removed these ior files. + +Tue Feb 21 17:40:20 UTC 2006 Nishanth Shankaran + + * DAnCE/NodeManager/MonitorController.cpp: + + Fixed ACE_TRACE compilation error. + +Mon Feb 20 15:08:49 2006 Wallace Zhang + + * CIAO version 0.4.10 released. + +Mon Feb 20 19:48:12 UTC 2006 xiong,ming + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_Impl.ccd + + Removed this file because it is generated + +Fri Feb 17 19:22:21 UTC 2006 Wallace Zhang + + * NEWS: + + Updated this file with more inputs. + +Thu Feb 16 15:04:12 UTC 2006 Johnny Willemsen + + * CIAO_DAnCE.mwc: + Fixed typo in this file + +Thu Feb 16 04:14:15 UTC 2006 William R. Otte + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + + Disabled building some project when ace_for_tao is set. + +Wed Feb 15 19:24:31 UTC 2006 William R. Otte + + * CIAO.mwc + + This file now builds all of CIAO. + + * CIAODAnCE.mwc + * CIAO_DAnCE.mwc + + Renamed this file to CIAO_DAnCE.mwc + + * CIAOTAO.mwc + * CIAO_TAO.mwc + + Renamed this file to CIAO_TAO.mwc. + + Thanks to Chad Elliott (elliott_c at ociweb dot com) for suggesting + these changes. + + * CIAO_TAO_DAnCE.mwc + + Removed the DAnCE/tests/Config_Handlers exclusion, as it no + longer exists. + +Wed Feb 15 07:35:12 UTC 2006 Johnny Willemsen + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + Replaced ACE cast macros with their C++ versions + +Wed Feb 15 07:28:12 UTC 2006 Johnny Willemsen + + * CIDLC/ServantSourceGenerator.cpp: + Fixed generation so that it compiles with Borland + +Tue Feb 14 23:01:46 UTC 2006 Gan Deng + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + + Fixed a bug when removing ReDaC components from the container. + This bug was caused by the container set indexing error when + handling newly installed components. + Thanks Sandro Andrade for reporting + this issue. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Some cosmetic changes. + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.h + + Added a const modifier in the constructor to ensure safety. + + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Fixed a bug when detecting whether a component is shared + by multiple assemblies. Earlier, when ReDaC is used, existing + components are wrongly treated as shared components. + +Tue Feb 14 22:02:59 UTC 2006 William R. Otte + + * CIAO_TAO_DAnCE.mwc + + Added naming service and Config_Handlers. + + * DAnCE/NodeManager/NodeManager.mpc + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc + + Fixed link time warnings on OS X. + +Tue Feb 14 19:57:32 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + + Fixed a bug about when a component has a name with "Exec" + string in it, the _stub library could be picked up + incorrectly. + +Mon Feb 13 20:53:58 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + + Fixed a bug about removing existing components. Earlier + the logic in detecting "to-be-removed" components has + a bug. + +Mon Feb 13 20:11:35 UTC 2006 Gan Deng + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp + + Changed ACE_const_cast to c++ native const_cast since the + former one is deprecated. Also changed the implementation of + the acquireSession() logic, so the deadlock bug could + be reproduced. + +Mon Feb 13 20:01:38 UTC 2006 Gan Deng + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + + Cosmetics change. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + + Enhanced to call ccm_activate, ciao_preactivate, and + ciao_postactivate when installing new components. + Thanks Sandro Andrade for reporting + this issue. + + Also added the logic for remove_existing_components into + the class, which has not been integrated yet. + + Refactor the code by putting these logics into separate + methods to enhance readability. + +Mon Feb 13 17:12:09 UTC 2006 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager.cpp + + Fixed a bug about registering EM with naming service, originally + an invalid naming context is specified. Also allowed EM to both + register to naming service AND dump and IOR file. Thanks Sandro + Andrade for reporting this bug. + +Mon Feb 13 15:41:21 UTC 2006 Gan Deng + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp + + Fixed a warning about "deprecated conversion from string + constant to `char*' on RHEL_Static_GCC-3.4.2 build. + +Mon Feb 13 11:34:12 UTC 2006 Johnny Willemsen + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h: + Removed not allowed semicolon + +Mon Feb 13 09:22:12 UTC 2006 Johnny Willemsen + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h: + Fixed compile error in single threaded builds + +Mon Feb 13 08:32:12 UTC 2006 Johnny Willemsen + + * ciao/Server_init.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + Fixed conversion warnings + +Sat Feb 11 21:39:54 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.h + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Factory.h + + Fixed fuzz build erros. + +Sat Feb 11 21:26:08 UTC 2006 Gan Deng + + * tests/Bug_2130_Regression/descriptors/run_test.pl + + Fixed the command line option to start the NodeApplication + to enable real-time support. + Thanks Roland Schimmack for + reporting this error. + +Sat Feb 11 21:00:00 UTC 2006 xiong,ming + + * ciao/Server_init.cpp + + Removed an extra explicit qualification + +Sat Feb 11 18:49:21 UTC 2006 Johnny Willemsen + + * ciaosvcs/Events/CIAO_Events.mpc + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.mpc + Removed these files to get at least our builds running again + +Fri Feb 10 16:11:35 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Events.mpc + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.mpc + + Temporarily disable the build of these projects before + the integration effort is complete to avoid pollute + the scoreboard. + +Fri Feb 10 14:28:14 UTC 2006 xiong,ming + + * docs/tutorials/CoSMIC/01.html + * docs/tutorials/CoSMIC/02.html + * docs/tutorials/CoSMIC/index.html + * docs/tutorials/CoSMIC/Images/fig10.jpg + * docs/tutorials/CoSMIC/Images/fig11.jpg + * docs/tutorials/CoSMIC/Images/fig2.jpg + * docs/tutorials/CoSMIC/Images/fig4.jpg + * docs/tutorials/CoSMIC/Images/fig5.jpg + * docs/tutorials/CoSMIC/Images/fig6.jpg + * docs/tutorials/CoSMIC/Images/fig7.jpg + * docs/tutorials/CoSMIC/Images/fig8.jpg + * docs/tutorials/CoSMIC/Images/fig9.jpg + * docs/tutorials/CoSMIC/Model/Quoter.xme + + Updated the CoSMIC tutorial so that it is consistent with + the latest GME and CoSMIC. + +Fri Feb 10 11:15:12 UTC 2006 Johnny Willemsen + + * ciao/Port_Activator.h: + Doxygen improvements + + * ciao/NodeApp_CB_Impl.h: + Made destructor protected + + * ciao/Container_Base.{h,cpp}: + Made the refcount unsigned long, addressed several comments and + improved documentation + +Fri Feb 10 04:56:26 UTC 2006 Gan Deng + + * DAnCE/NodeApplication/Container_Impl.cpp + * DAnCE/NodeApplication/Container_Impl.h + * ciao/Server_init.cpp + * ciao/Server_init.h + + Added support for creating multicomponent naming context through + the deployment plan. Thanks Dipa Suri for + contributing a NameUtility class implementation. + + * ciaosvcs/Events/CIAO_Events.idl + * ciaosvcs/Events/CIAO_Events.mpc + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.cpp + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.h + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.idl + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.mpc + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Factory.cpp + * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Factory.h + + Added some files for event channel integration for CIAO. + More file check-ins are on the way. + +Thu Feb 9 23:38:19 UTC 2006 xiong,ming + + * TAO/CIAO/CIAOTAO.mwc + + Updated mwc to include some dependencies required by tests + and examples. + + * tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_Impl.ccd + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp + * tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp + * tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat + * tests/Bug_2130_Regression/descriptors/rt-config-example.csr + * tests/Bug_2130_Regression/descriptors/run_test.pl + * tests/Bug_2130_Regression/interfaces/ENW.idl + * tests/Bug_2130_Regression/interfaces/ENW.mpc + * tests/Bug_2130_Regression/interfaces/ENW_stub_export.h + * tests/Bug_2130_Regression/interfaces/ENW_svnt_export.h + + Added a new tests for Bug_2130. + Thanks Roland Schimmack for + providing this test case. + +Thu Feb 9 16:48:42 UTC 2006 Jeff Parsons + + * tools/IDL3_to_IDL2/be_global.h: + * tools/IDL3_to_IDL2/be_init.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + + Removed all usage of internal 'idl_bool' typedef in the + IDL3 to IDL2 converter, consistently with the changes to + the TAO IDL compiler front end, which is used by this + tool. + +Thu Feb 9 16:33:45 UTC 2006 William Otte + + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/Any_Handler.cpp + * tools/Config_Handlers/CCD_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.cpp + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/CRDD_Handler.cpp + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp + * tools/Config_Handlers/DD_Handler.cpp + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/DP_PCD_Handler.cpp + * tools/Config_Handlers/DataType_Handler.cpp + * tools/Config_Handlers/ERE_Handler.cpp + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/IDREF_Base.cpp + * tools/Config_Handlers/ID_Handler.cpp + * tools/Config_Handlers/IRDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/PSPE_Handler.cpp + * tools/Config_Handlers/Property_Handler.cpp + * tools/Config_Handlers/RDD_Handler.cpp + * tools/Config_Handlers/Req_Handler.cpp + * tools/Config_Handlers/STD_PC_Intf.cpp + * tools/Config_Handlers/XML_File_Intf.cpp + + Added CIAO_TRACE statements to aid in debugging. + +Wed Feb 08 15:53:31 2006 Wallace Zhang + + * CIAO version 0.4.9 released. + +Tue Feb 7 16:10:10 UTC 2006 William Otte + + * DAnCE/NodeManager/NodeManager.mpc + + Fixed an ordering problem. + +Mon Feb 6 19:13:13 UTC 2006 William Otte + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + + Fixed an export problem manifesting in VC8. + + * performance-tests/Benchmark/Benchmark.mpc + + Added an empty IDL_Files section to the servant to prevent + nmake from regenerating from the IDL file. + +Mon Feb 6 13:54:39 UTC 2006 Ossama Othman + + * ciao/ComponentsC.h: + + Place TAO namespace in this pre-generated stub header within a + TAO versioned namespace, as TAO_IDL does for all stubs. Fixes + build errors in versioned-namespace enabled builds. + +Mon Feb 6 13:33:54 UTC 2006 William Otte + + * DAnCE/NodeApplication/NoOp_Configurator.h + + Case sensitivity error from previous commit. + +Mon Feb 6 00:39:41 UTC 2006 William Otte + + * DAnCE/NodeApplication/Configurator_Factory.cpp + * DAnCE/NodeApplication/Configurator_Factory.h + * DAnCE/NodeApplication/NodeApplication.mpc + * DAnCE/NodeApplication/NodeApplication_Core.h + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeManager/MonitorController.h + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/NodeApplication/NoOp_Configurator.cpp + * DAnCE/NodeApplication/NoOp_Configurator.h + * DAnCE/NodeApplication/NoOp_Configurator_export.h + + Fixed linking errors on Borland 6. Mostly involved improper + symbol export control. + + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.hpp + + Added a fix for a broken include in Borland 6. + +Fri Feb 3 24:30:19 UTC 2006 Ossama Othman + + * ciao/CIAO_common.h: + + Removed extraneous "#" in "# #error" preprocessor directive. + + * ciao/Client_init.h: + + Moved CIAO namespace out of TAO-versioned namespace block. It + shouldn't have been there. Fixes namespace clashes in versioned + namespace enabled builds. + +Thu Feb 2 23:55:01 UTC 2006 William Otte + + * NEWS + + Updated the release notes. + +Thu Feb 2 22:59:23 UTC 2006 William Otte + + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp + + Updated include from zziplib.h to zzip/zzip.h, as the former + is deprecated and absent in the most recent release. + +Thu Feb 2 15:49:31 2006 Douglas C. Schmidt + + * docs/tutorials/CoSMIC/01.html: Commited a fix for a typo detected by + Abdullah Sowayan and + fixed by Ming Xiong. + +Thu Feb 2 16:58:15 UTC 2006 Johnny Willemsen + + * CIAO_TAO_DAnCE.mwc: + * CIAODAnCE.mwc: + Removed Old_Config_Handlers and spec_RepositoryManager + +Thu Feb 2 16:31:15 UTC 2006 William Otte + + * DAnCE/NodeManager/BaseMonitor.h + * DAnCE/NodeManager/CIAO_Monitor.h + * DAnCE/NodeManager/MonitorCB.h + * DAnCE/NodeManager/MonitorController.cpp + * DAnCE/NodeManager/MonitorController.h + * DAnCE/TargetManager/DomainDataManager.h + + Removed extra ';' after closing braces on namespaces. + Was causing errors on GCC4 builds. + + * DAnCE/NodeManager/MonitorController.inl + + Removed this file, as it is no longer used. + +Wed Feb 1 21:21:35 UTC 2006 William Otte + + * DAnCE/NodeManager/BaseMonitor.h + * DAnCE/NodeManager/CIAO_Monitor.cpp + * DAnCE/NodeManager/CIAO_Monitor.h + * DAnCE/NodeManager/MonitorCB.cpp + * DAnCE/NodeManager/MonitorCB.h + * DAnCE/NodeManager/MonitorController.cpp + * DAnCE/NodeManager/MonitorController.h + * DAnCE/TargetManager/DomainDataManager.cpp + * DAnCE/TargetManager/DomainDataManager.h + * DAnCE/TargetManager/TargetManager_exec.cpp + * DAnCE/TargetManager/TargetManager_exec.h + + Wraps the TargetManager/Monitors inside the CIAO namespace. + Thanks to Nilabja Roy (nilabjar@dre.vanderbilt.edu) for + making these changes and thanks to Johnny for noticing this! + +Wed Feb 1 20:42:42 UTC 2006 William Otte + + * CIDLC/ServantSourceGenerator.cpp + * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp + * tools/Config_Handlers/Utils/XercesString.cpp + * tools/Config_Handlers/Utils/XercesString.h + * tools/Config_Handlers/XMLSchema/Writer.hpp + + Fixes for warnings on ICC platforms. + +Wed Feb 1 14:38:12 UTC 2006 Johnny Willemsen + + * DAnCE/TargetManager/DomainDataManager.h: + Small doxygein improvement + +Wed Feb 1 04:32:38 UTC 2006 William Otte + + * RACE/Planner_Manager/Component/Planner_Manager.idl + + Resolve a linking error on Windows. + +Tue Jan 31 23:33:23 UTC 2006 William Otte + + * DAnCE/Old_Config_Handlers + * DAnCE/test/Config_Handlers_Tests + + Removed deprecated config handlers. + + * NEWS + + Commented on this removal. + +Tue Jan 31 21:51:52 UTC 2006 William Otte + + * examples/Hello/descriptors/run_test.pl + * examples/Hello/descriptors/run_test_without_ns.pl + + Added a parameter to the NodeManagers to cause them to wait + up to 30 seconds for the NodeApplications to spawn before failing. + This should fix the hello test on several platforms. + +Tue Jan 31 21:29:06 UTC 2006 William Otte + + * examples/Hello/descriptors/run_test.pl + + Updated to force naming service to not use multicast, instead + using NameServiceIOR environment variable. + + * examples/Hello/descriptors/run_test_without_ns.pl + + Updated ports to reflect new NodeManagerMap. + +Tue Jan 31 15:11:29 UTC 2006 William Otte + + * RACE/Controller/Component/Controller.mpc + + Fixed linking errors on OS X. + +Tue Jan 31 14:41:31 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Fixed a couple of warning on SuSE_10_0_GCC4.0.2_x86_64_Valgrind + build. + +Tue Jan 31 11:42:12 UTC 2006 Johnny Willemsen + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Fixed compile error with VxWorks 5.5.1 + +Mon Jan 30 22:43:26 UTC 2006 Stoyan Paunov + + * examples/Hello/descriptors/run_NodeDaemons.pl: + + Fixing this script so that the Hello example deploys successfully. + +Mon Jan 30 21:16:40 UTC 2006 Ming Xiong + + * docs/tutorials/CoSMIC/01.html + * docs/tutorials/CoSMIC/02.html + * docs/tutorials/CoSMIC/03.html + * docs/tutorials/CoSMIC/04.html + * docs/tutorials/CoSMIC/index.html + * docs/tutorials/CoSMIC/Icons/AddConnMode.gif + * docs/tutorials/CoSMIC/Icons/SetMode.gif + * docs/tutorials/CoSMIC/Images/fig1.jpg + * docs/tutorials/CoSMIC/Images/fig10.jpg + * docs/tutorials/CoSMIC/Images/fig11.jpg + * docs/tutorials/CoSMIC/Images/fig2.jpg + * docs/tutorials/CoSMIC/Images/fig3.jpg + * docs/tutorials/CoSMIC/Images/fig4.jpg + * docs/tutorials/CoSMIC/Images/fig5.jpg + * docs/tutorials/CoSMIC/Images/fig6.jpg + * docs/tutorials/CoSMIC/Images/fig7.jpg + * docs/tutorials/CoSMIC/Images/fig8.jpg + * docs/tutorials/CoSMIC/Images/fig9.jpg + * docs/tutorials/CoSMIC/Model/Quoter.xme + + Added CoSMIC tutorial for /docs/tutorials/Quoter/Simple + +Mon Jan 30 17:50:38 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + + Modified to inherit from dance_extension_stub project + so the included header file could be found. + +Mon Jan 30 17:35:12 UTC 2006 Gan Deng + + * DAnCE/Interfaces/Interfaces.mpc + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/NodeManager/NodeManager_Impl.h + + Fixed a linking error of NodeManager when trying to + link to IDL generated servant code. + + * DAnCE/NodeManager/CIAO_NodeManager_Export.h + * DAnCE/Interfaces/NodeManager_svnt_export.h + + Removed the first one and added the second one to + fix the linking error when trying to find entry + point for IDL compiler generated servant code. + +Mon Jan 30 05:07:09 UTC 2006 William Otte + + * examples/Hello/descriptors/NodeManagerMap.dat + + Corrected the ports to match those in the run_test.pl script. + +Mon Jan 30 01:59:23 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + + Cosmetic change. + + * DAnCE/NodeManager/NodeManager.mpc + + Fixed a typo. + +Mon Jan 30 01:47:21 UTC 2006 Gan Deng + + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/NodeManager/NodeManager_Impl.h + * DAnCE/NodeManager/NodeManager_Export.h + + Added dll import/export mechanism into NodeManager library. + +Sat Jan 28 22:24:35 UTC 2006 William Otte + + * examples/Hello/descriptors/run_test.pl + + Corrected the name of the NodeManagerMap passed to ExecutionManager. + This was causing the test to fail across all platforms. + +Sat Jan 28 05:55:45 UTC 2006 William Otte + + * DAnCE/NodeManager/NodeManager.mpc + + Added a missing after clause. + +Fri Jan 27 22:42:47 UTC 2006 William Otte + + * RACE/Controller/Component/Controller.mpc + + Fixed linking errors on Windows. + +Fri Jan 27 20:58:19 UTC 2006 Gan Deng + + * tests/Bug_2130_Regression + + A place to host Bug 2130 test case. + +Fri Jan 27 20:42:47 UTC 2006 William Otte + + * tools/Config_Handlers/DnC_Dump_T.h + + Silenced warnings in solaris. + +Fri Jan 27 20:30:01 UTC 2006 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Fixed uninitialized variable warnings on Solaris GCC. + + *DAnCE/NodeManager/NodeManager.mpc + + Refactored the projects here so all files related to NodeManager + are only compiled once. + +Fri Jan 27 19:15:19 UTC 2006 Nilabja R + + * DAnCE/NodeManager/Monitor.mpc: Added the dependancy on + TargetManaer_stub + +Fri Jan 27 19:07:08 UTC 2006 William Otte + + * DAnCE/NodeManager/MonitorController.h + * DAnCE/NodeManager/MonitorController.inl + + Refined the fix in + Fri Jan 27 17:29:54 UTC 2006 William Otte + to use ACE_SYNCH_MUTEX. Thanks to Doug Schmidt for suggesting the + improvement. + +Fri Jan 27 17:35:55 UTC 2006 William Otte + + * RACE/Controller/Component/Controller.mpc + + Fixed linking errors on Mac OS X. + +Fri Jan 27 17:29:54 UTC 2006 William Otte + + * DAnCE/NodeManager/MonitorController.h + * DAnCE/NodeManager/MonitorController.inl + + Added preprocessor logic to fall back to an ACE_Mutex on + platforms that don't support ACE_Thread_Mutex. + +Fri Jan 27 16:59:11 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Fixed a couple of warnings on SuSE_10_0_GCC4.0.2_x86_64_Valgrind + build about pointer initialization. + +Thu Jan 26 23:48:47 UTC 2006 Gan Deng + + * examples/Hello/step-by-step.html + + Fixed a fuzz error about dependency on ~schmidt/ACE_wrappers. + +Thu Jan 26 19:25:06 UTC 2006 Gan Deng + + * DAnCE/TargetManager/TargetManager.mpc + + Added an empty IDL_Files segment to the _exec project, + which should clean up tons of Windows VC build erros + and warnings. + +Thu Jan 26 17:57:45 UTC 2006 Gan Deng + + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/NodeManager/NodeManager.mpc + + Modified to inherit from a base project dance_extension_stub.mpb + to avoid explicily included path specification. + +Thu Jan 26 10:25:12 UTC 2006 Johnny Willemsen + + * CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + Fixed incorrect doxygen tag + + * CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl: + Added missing ACE_INLINE macro's + + +Thu Jan 26 01:44:15 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp + * ciao/Deployment.idl + + Fixed a bug of shared component capability. Originally, we + haven't differentiate between "shared components" and + "external components", so when a component ref count becomes + 0, the "shared components" will become empty, however, since + some components are installed remotely, removing it will + cause problem if we don't have such differentiation. + +Wed Jan 25 23:44:01 UTC 2006 Nishanth Shankaran + + * CIAOTAO.mwc: + * CIAO.mwc: + + Added RACE to the workspace. + +Wed Jan 25 22:47:30 UTC 2006 Gan Deng + + * CIAO_TAO_DAnCE.mwc + + Added another mwc file which builds ACE, TAO, CIAO, DAnCE + minium to run a CIAO simple example. + +Wed Jan 25 22:28:06 UTC 2006 Gan Deng + + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/NodeManager/NodeManager.mpc + + Added include+= to find header files and fixed a typo. + + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Fixed an error in Linux build. + +Wed Jan 25 22:11:23 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Changed order of the base member initialization list, which + should clear some warnings of the Linux builds. + +Wed Jan 25 21:32:44 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeManager/NodeManager.mpc + + Fixed dependency problems. + +Wed Jan 25 20:28:35 UTC 2006 Gan Deng + + * DAnCE/Interfaces/ExecutionManager.idl + * DAnCE/Interfaces/Interfaces.mpc + * DAnCE/Interfaces/README + * DAnCE/Interfaces/NodeManager.idl + * DAnCE/Interfaces/NodeManager_stub_export.h + * DAnCE/Interfaces/ExecutionManager_stub_export.h + + Added these files into a separate directory + called DAnCE/Interfaces to termporarily solve the MPC + directory dependency issue. + + * DAnCE/ExecutionManager/ExecutionManager.idl + * DAnCE/NodeManager/NodeManager.idl + + Removed these files. + + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/NodeManager/NodeManager_Impl.h + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + + Modified to accomodate the above refactoring work. + +Wed Jan 25 19:46:57 UTC 2006 Gan Deng + + * ciao/Deployment_common.h + + Added this new file, which is supposed to contain all the + reusable types/classes/methods across the DAnCE toolchain. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + + Modified the code to accomodate the above refactoring work. + + * DAnCE/TargetManager/DomainDataManager.cpp + + Got rid of a warning message about unreferenced variable. + + * DAnCE/DomainApplicationManager/DomainApplicationManage.mpc + + Added a dependency from DAM to ExecutionManager_stub project. + +Wed Jan 25 02:53:07 UTC 2006 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + * ciao/Deployment.idl + + Fixed a bug about destroying *ApplicationManagers. + This fix will ensure that DAM won't be destroyed if any + components managed by itself are still up and running. + +Wed Jan 25 01:41:53 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + + Some cosmetic changes. + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Fixed a bug about when to killing a NodeApplication process. + + * ciao/Container_Base.cpp + + Comment out meaningless debug statement. + +Wed Jan 25 00:56:39 UTC 2006 Gan Deng + + * examples/Hello/descriptors/run_test_without_ns.pl + + Modified to use the correct NodeManagerMap.dat file. + +Wed Jan 25 00:47:02 UTC 2006 Gan Deng + + * examples/Hello/descriptors_RTCCM/RTsvc.conf + * examples/Hello/descriptors_RTCCM/input.csr + * examples/Hello/descriptors_RTCCM/rt-config-example.cdp + * examples/Hello/descriptors_RTCCM/rt-config-example.csr + * examples/Hello/descriptors_RTCCM/rt-example.cdp + * examples/Hello/descriptors_RTCCM/rt_run_test.pl + * examples/Hello/descriptors_ReDaC/deploymentplan.cdp + * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp + * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp + * examples/Hello/descriptors_naming/deploymentplan_naming.cdp + + Create some new descriptors, reorganized them, and put + them into different directories. + +Wed Jan 25 00:23:02 UTC 2006 Gan Deng + + * CIAODAnCE.mwc + + Added another mwc file which only builds CIAO and DAnCE. + + * examples/Hello/step-by-step.html + + Fixed an error in this documentation page. + + * examples/Hello/descriptors/RTsvc.conf + * examples/Hello/descriptors/TestNodeManagerMap.dat + * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp + * examples/Hello/descriptors/rt-config-example.cdp + * examples/Hello/descriptors/rt-config-example.csr + * examples/Hello/descriptors/rt-example.cdp + * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp + * examples/Hello/descriptors/rt_run_test.pl + + Removed these descriptor files and put them into separate + directories to better organize things. + + * examples/Hello/descriptors_shared_components/deploymentplan.cdp + * examples/Hello/descriptors_shared_components/ + deploymentplan_shared_components.cdp + + Added a dedicated directory to put descriptors for shared + components scenario. + +Wed Jan 25 00:10:50 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/ExecutionManager/DAM_Map.cpp + * DAnCE/ExecutionManager/DAM_Map.h + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + + Added capabilities to handle adding/removing + connections between components in new assembly and existing/external + components in old assemblies. This involves putting + ExecutionManager as a coordinator for different DAMs. + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.h + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl + * DAnCE/NodeManager/NAM_Map.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + * DAnCE/NodeManager/Node_Manager.cpp + + Added capabilities for handling shared components across + different assemblies. This involves putting NodeManager + as a local coordinator for different NAMs. + + * DAnCE/NodeApplication/NodeApplication.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + + Enhancement of adding/removing connections. + + * DAnCE/Plan_Launcher/DAM_Map.cpp + * DAnCE/Plan_Launcher/DAM_Map.h + + Removed from the repo, since they are located in the other + directory as well, and we can use relative path to point + to those existing files. + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + + Enhanced to handle shared components scenario which interacts + with *managers. + + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp + + Fixed for working with the newly enhanced DAnCE toolchain. + + * ciao/Deployment.idl + + Adding enhancements for adding shared components capabilities + +Wed Jan 25 00:01:37 UTC 2006 Gan Deng + + * DAnCE/NodeManager/MonitorCB.cpp + + Fixed a warning about unreferenced variable in Windows build. + + * DAnCE/NodeManager/MonitorController.h + + Included header file missing path to its directory. + + * DAnCE/TargetManager/CmpClient.cpp + + Fixed a warning about unreferenced variable in Windows build. + +Mon Jan 23 23:10:32 UTC 2006 Stoyan Paunov + + + * DAnCE/spec_RepositoryManager/HTTP_Client.h: + * DAnCE/spec_RepositoryManager/HTTP_Client.cpp: + * DAnCE/spec_RepositoryManager/HTTP_Handler.h: + * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp: + * DAnCE/spec_RepositoryManager/Options.h: + * DAnCE/spec_RepositoryManager/Options.cpp: + * DAnCE/spec_RepositoryManager/PC_Updater.h: + * DAnCE/spec_RepositoryManager/PC_Updater.cpp: + * DAnCE/spec_RepositoryManager/PC_Updater_T.h: + * DAnCE/spec_RepositoryManager/PC_Updater_T.cpp: + * DAnCE/spec_RepositoryManager/README.txt: + * DAnCE/spec_RepositoryManager/RM_Helper.h: + * DAnCE/spec_RepositoryManager/RM_Helper.cpp: + * DAnCE/spec_RepositoryManager/RMadmin.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager.idl: + * DAnCE/spec_RepositoryManager/RepositoryManager.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/spec_RepositoryManager/URL_Parser.h: + * DAnCE/spec_RepositoryManager/URL_Parser.cpp: + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h: + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp: + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc: + + Removed these files. Zapping the DAnCE/spec_RepositoryManager/ + directory which used to hold the implementation of the + RepositoryManager while the ExecutionManager was in the + DAnCE/RepositoryManager/ directory. + +Mon Jan 23 22:41:49 UTC 2006 Stoyan Paunov + + * DAnCE/RepositoryManager/HTTP_Client.h: + * DAnCE/RepositoryManager/HTTP_Client.cpp: + * DAnCE/RepositoryManager/HTTP_Handler.h: + * DAnCE/RepositoryManager/HTTP_Handler.cpp: + * DAnCE/RepositoryManager/Options.h: + * DAnCE/RepositoryManager/Options.cpp: + * DAnCE/RepositoryManager/PC_Updater.h: + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/PC_Updater_T.h: + * DAnCE/RepositoryManager/PC_Updater_T.cpp: + * DAnCE/RepositoryManager/README.txt: + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager.idl: + * DAnCE/RepositoryManager/RepositoryManager.cpp: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/URL_Parser.h: + * DAnCE/RepositoryManager/URL_Parser.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + + Moving what used to be DAnCE/spec_RepositoryManager directory to + the DAnCE/RepositoryManager directory. + +Mon Jan 23 22:14:06 UTC 2006 Stoyan Paunov + + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp: + + Adding couple more checks to increase robustness. + +Mon Jan 23 20:07:17 UTC 2006 William Otte + + * DAnCE/NodeManager/BaseMonitor.h + + Added a virtual destructor to resolve warnings. + + * DAnCE/TargetManager/DomainDataManager.cpp + * DAnCE/TargetManager/TargetManager_exec.cpp + + Fixed some problems caused by + Mon Jan 23 15:11:40 UTC 2006 William Otte + +Mon Jan 23 17:03:09 UTC 2006 Nishanth Shankaran + + * RACE/Controller/Component/Controller_svnt_export.h: + * RACE/Controller/Component/Controller_stub_export.h: + * RACE/Controller/Component/Controller_exec_export.h: + * RACE/Controller/Component/Controller_exec.h: + * RACE/Controller/Component/Controller_exec.cpp: + * RACE/Controller/Component/Controller.mpc: + * RACE/Controller/Component/Controller.idl: + * RACE/Controller/Component/Controller.cidl: + + Added IDL, CIDL, and MPC files for the RACE controller along with a + dummy implementation of the controller. + +Mon Jan 23 15:11:40 UTC 2006 William Otte + + * DAnCE/TargetManager/TargetManager.mpc + + Cleaned up the MPC file, fixed a linking error on OS X. + +Sat Jan 21 21:54:59 UTC 2006 Jeff Parsons + + * CIDLC/SizeTypeCalculator.cpp: + + Fixed a bug in size type calculation of nested structs and unions. + Thanks to Sandro Santos Andrade for + reporting the problem. + +Sat Jan 21 20:27:13 UTC 2006 Nilabja R + + * DAnCE/TargetManager/TargetManager.idl: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerExt.idl: + Added this file to include the facet for RACE Controller + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Added implementation for the facet serving the RACE Controller. + + +Sat Jan 21 02:04:15 UTC 2006 Nilabja R + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Removed trailing whitespaces and tabs + + * DAnCE/NodeManager/BaseMonitor.h: + * DAnCE/NodeManager/CIAO_Monitor.h: + * DAnCE/NodeManager/CIAO_Monitor.cpp: + * DAnCE/NodeManager/MonitorCB.h: + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.cpp: + Removed system headers and replaced systme calls with ACE calls. + Also updated documentation with doxygen standard + + * DAnCE/TargetManager/TargetManager_exec.cpp: + Removed system headers and replaced systme calls with ACE calls. + Also updated documentation with doxygen standard + + * tools/Config_Handlers/DD_Handler.h: + * tools/Config_Handlers/DD_Handler.cpp: + Removed system headers and replaced systme calls with ACE calls. + Also updated documentation with doxygen standard + +Fri Jan 20 22:30:21 UTC 2006 Nilabja R + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + The include to NodeManagerC.h is removed since the dependency on + NodeManager_stub was removed. + +Fri Jan 20 20:33:23 UTC 2006 Nilabja R + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + Changed the Domain Application Manager to remove the dependency on + NodeManager_stub. + +Fri Jan 20 07:24:47 UTC 2006 Stoyan Paunov + + * DAnCE/spec_RepositoryManager/PC_Updater.h: + * DAnCE/spec_RepositoryManager/RMadmin.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/spec_RepositoryManager/URL_Parser.h: + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h: + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp: + + Improved the documentation, the output and added some minor features. + Changed all occurnences of 'new' to ACE_NEW in ZIP_Wrapper.cpp which + I had previously forgotten. + + * DAnCE/new_RepositoryManager/packages/inconsistent.cpk: + * DAnCE/new_RepositoryManager/packages/package.cpk: + + Removed these files. + +Thu Jan 19 01:29:58 UTC 2006 Stoyan Paunov + + * DAnCE/spec_RepositoryManager/HTTP_Handler.h: + * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp: + * DAnCE/spec_RepositoryManager/PC_Updater.h: + * DAnCE/spec_RepositoryManager/PC_Updater_T.h: + * DAnCE/spec_RepositoryManager/RM_Helper.h: + * DAnCE/spec_RepositoryManager/RM_Helper.cpp: + * DAnCE/spec_RepositoryManager/RMadmin.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/spec_RepositoryManager/URL_Parser.h: + * DAnCE/spec_RepositoryManager/URL_Parser.cpp: + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h: + + Changed all occurenced of new to ACE_NEW. Turned some documentation to + Doxygen style. Modified the URL_Parser singleton to use the ACE_Singleton + class. More changes on the way. + +Wed Jan 18 23:56:51 UTC 2006 Nilabja R + + * DAnCE/NodeManager/BaseMonitor.h: Corrected the file name in @file + + * DAnCE/TargetManager/CmpClient.cpp: Corrected the file name in @file + +Wed Jan 18 16:42:41 UTC 2006 Nilabja R + + * DAnCE/NodeManager/BaseMonitor.h:Added documentation, changed + function signature + * DAnCE/NodeManager/CIAO_Monitor.cpp:Removed system headers + * DAnCE/NodeManager/Monitor.mpc:Added cvs tag + * DAnCE/NodeManager/MonitorController.cpp:Removed sleep call + * DAnCE/NodeManager/NodeManager.mpc:Added after clause to compile + TargetManager_stub before + + * DAnCE/TargetManager/TM_Client.mpc:Added cvs tag + * DAnCE/TargetManager/TargetManager.mpc: Added cvs tag , + Removed Deployment_Configuration.cpp from TargetManager_exec + +Tue Jan 17 23:52:11 UTC 2006 Stoyan Paunov + + * DAnCE/spec_RepositoryManager/Options.h: + * DAnCE/spec_RepositoryManager/Options.cpp: + * DAnCE/spec_RepositoryManager/RMadmin.cpp: + + Took care of the todo's that Johnny suggested. Now using ACE_Singleton + parametrized with ACE_Null_Mutex. + +Tue Jan 17 21:07:12 UTC 2006 Johnny Willemsen + + * DAnCE/spec_RepositoryManager/HTTP_Client.h: + Layout change + * DAnCE/spec_RepositoryManager/HTTP_Handler.{h,cpp}: + Changed bytecount_ to size_t + +Tue Jan 17 21:03:12 UTC 2006 Johnny Willemsen + + * DAnCE/spec_RepositoryManager/Options.h: + Doxygen improvements + + * DAnCE/spec_RepositoryManager/Options.cpp: + Layout changes and add some todo's + +Tue Jan 17 19:31:56 UTC 2006 William Otte + + * tools/Config_Handlers/Config_Handlers.mpc + + Added a project inherit improperly removed by + Mon Jan 16 16:22:25 UTC 2006 Nilabja R + +Mon Jan 16 19:59:12 UTC 2006 Johnny Willemsen + + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h: + * DAnCE/spec_RepositoryManager/URL_Parser.h: + * DAnCE/spec_RepositoryManager/PC_Updater.h: + * DAnCE/spec_RepositoryManager/PC_Updater_T.cpp: + * DAnCE/spec_RepositoryManager/HTTP_Handler.h: + * DAnCE/spec_RepositoryManager/HTTP_Client.h: + Doxygen improvements + + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp: + * DAnCE/spec_RepositoryManager/PC_Updater_T.h: + * DAnCE/spec_RepositoryManager/HTTP_Client.cpp: + * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp: + Layout changes + +Mon Jan 16 18:36:47 UTC 2006 William Otte + + * tools/Config_Handlers/Basic_Deployment_Data.hpp + + Addressed some warnings from the RHEL_Static_GCC-3.4.2 + build. + +Mon Jan 16 16:48:11 UTC 2006 Stoyan Paunov + + * DAnCE/spec_RepositoryManager/Options.h: + * DAnCE/spec_RepositoryManager/Options.cpp: + * DAnCE/spec_RepositoryManager/PC_Updater.cpp: + * DAnCE/spec_RepositoryManager/README.txt: + * DAnCE/spec_RepositoryManager/RMadmin.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager.cpp: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp: + + Added the newest changes to the RepoMan. This change add the + functionality that pertains to interface types. It is currently + disabled due to lack of support in the modeling tools for interfaces + for assemby-based interfaces. + + I still need to clean up some of the output and some of the code before + the release of the beta. + +Mon Jan 16 16:22:25 UTC 2006 Nilabja R + + * DAnCE/NodeManager/BaseMonitor.h: + * DAnCE/NodeManager/CIAO_Monitor.h: + * DAnCE/NodeManager/CIAO_Monitor.cpp: + * DAnCE/NodeManager/Monitor.mpc: + * DAnCE/NodeManager/MonitorCB.h: + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.inl: + * DAnCE/NodeManager/MonitorController.cpp: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager.cpp: + These files implement the Monitor within the + NodeManager implementation. + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/Deployment_Configuration.h: + * DAnCE/TargetManager/Deployment_Configuration.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.cidl: + * DAnCE/TargetManager/TargetManager.idl: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + * DAnCE/TargetManager/TargetManager_exec_export.h: + * DAnCE/TargetManager/TargetManager_stub_export.h: + * DAnCE/TargetManager/TargetManager_svnt_export.h: + These files implement the Target Manager Implementation + + * DAnCE/TargetManager/descriptors/Domain.cdd: + * DAnCE/TargetManager/descriptors/NodeDetails.dat: + * DAnCE/TargetManager/descriptors/NodeManagerMap.dat: + * DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp: + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl: + These are needed for the running of the TargetManager + + * ciao/CCM_Core.mpc: + * ciao/Deployment.idl: + * ciao/Deployment_Base.idl: + * ciao/Deployment_Data.idl: + * ciao/Packaging_Data.idl: + * ciao/ServerResources.idl: + Needs to be changed to resolve conflicts when compiling the + Target Manager cidl file + + * ciao/Target_Data.idl: + This is the file which contains declarations which has been + separated for the Target manager + + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/DD_Handler.h: + * tools/Config_Handlers/DD_Handler.cpp: + These implement the extension to the config handlers for + the parsing of the Target data domain. + +Fri Jan 13 20:39:21 UTC 2006 William Otte + + * tools/Config_Handlers/XSCRT/Parser.hpp + * tools/Config_Handlers/XSCRT/XML.hpp + + Added a templated casting operator for Xerces types instead + of using standard dynamic_cast. Thanks to Ossama Othman + ossama at dre dot vanderbilt dot edu for suggesting this + fix. + + * CIAO-INSTALL.html + * NEWS + + The above changes removed the requirement for an RTTI enabled + version of Xerces. Updated these documents to reflect this. + +Thu Jan 12 21:40:47 UTC 2006 Gan Deng + + * examples/Hello/ReDaC-Usage.html + + Fixed some typos and an error. + +Tue Jan 10 22:34:22 UTC 2006 William Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/cdd.cpp + * tools/Config_Handlers/cdd.hpp + + Regenerated to reflect updates to schema in + Tue Jan 10 19:01:45 UTC 2006 William Otte + + * tools/Config_Handlers/Modified_Deployment.xsd + + Removed, as this file is obsolete, and schema should only exist in + CIAO_ROOT/docs/schema + +Tue Jan 10 22:05:17 UTC 2006 Gan Deng + + * examples/Hello/ReDaC-Usage.html + + Added a tutorial-like web page to showcase ReDaC service + of DAnCE. + + * NEWS + + Updated with DAnCE's recent enhancements. + +Tue Jan 10 19:01:45 UTC 2006 William Otte + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/cdd.xsd + + Corrected incorrect cardinality on several target domain elements. + +Tue Jan 10 11:10:01 UTC 2006 Boris Kolpackov + + * NEWS: + + Updated with recent developments. + +Mon Jan 9 14:17:39 UTC 2006 Jeff Parsons + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * examples/Hello/descriptors/Receiver_Svnt.iad: + * examples/Hello/descriptors/Sender_Svnt.iad: + * examples/Hello/descriptors/flattened_deploymentplan.cdp: + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp: + * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp: + * examples/Hello/descriptors/flattened_deploymentplan_without_ns_remove.cdp: + * examples/Hello/descriptors/rt-config-example.cdp: + * examples/Hello/descriptors/rt-example.cdp: + + Updated occurrences of the string name of the servant executor + DLL extry point to correspond with the changes in + + Fri Jan 6 20:09:34 UTC 2006 Jeff Parsons + +Fri Jan 6 20:09:34 UTC 2006 Jeff Parsons + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Changed the names of the generated extern C functions that + create the home and servant executors to incorportate the + entire scoped name of the class, to avoid name clashes + (since extern "C" functions link globally no matter what + scope they are declared in) when class names are + duplicated inside different nested namespaces. Thanks + to James Hill and Boris + Kolpackov for their help + with the problem. + + * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad: + * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl: + * docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad: + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad: + * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp: + * examples/BasicSP/descriptors/Airframe_Svnt.iad: + * examples/BasicSP/descriptors/GPS_Svnt.iad: + * examples/BasicSP/descriptors/NavDisplay_Svnt.iad: + * examples/BasicSP/descriptors/Timer_Svnt.iad: + * examples/BasicSP/descriptors/flattened_deploymentplan.cdp: + + Updated the hand-crafted descriptor files in CIAO tests and + examples to reflect the changes above. + +Thu Jan 5 21:28:17 UTC 2006 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Fixed some warning in Boarland C++ builds. + +Thu Jan 5 00:53:30 UTC 2006 J.T. Conklin + + * ChangeLog: + + Untabify. + Delete-trailing-spaces. + + Changed "add-log-time-format" to a really ugly lambda expression + that formats changelog timestamps in UTC and works with both GNU + Emacs and XEmacs. + +Wed Jan 4 21:01:15 2006 Boris Kolpackov + + * ciao/CCM_Base.idl: + + Replaced #if !defined (CIAO_HAS_IMPORT_KEYWORD) with + #ifdef CIAO_HAS_IMPORT_KEYWORD. This will give CIDLC's + CPP a chance to handle it properly. + + * CCF/CCF/CompilerElements/Preprocessor.cpp: + + Fixed a bug in lexeme parsing. + +Wed Jan 4 11:39:59 2006 William Otte + + * ciao/CCM_Core.mpc + + Removed $CIAO_ROOT/DAnCE include, added CIAO_ROOT/ciao. + +Tue Jan 3 19:55:43 2006 Boris Kolpackov + + * CCF/CCF/CompilerElements/Preprocessor.cpp: + * CCF/CCF/CompilerElements/Preprocessor.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp: + * CIDLC/cidlc.cpp: + + Implemented support for basic preprocessor directives: + #ifdef, #ifndef, #else, and #endif as well as the -D + command-line option. Also added exception handlers for + filesystem exceptions. + + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.cpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.hpp: + * CCF/CCF/IDL2/SemanticGraph/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/Union.hpp: + + Implemented incomplete struct and union semantics which + will appear in CORBA 3.1. + + * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp: + + Code clean-ups. + +Fri Dec 30 11:56:12 UTC 2005 Johnny Willemsen + + * ciao/Dynamic_Component_Servant_Base.{h,cpp}: + Moved the default constructor to public again, vc8 needs it, no + idea why, have to recheck later + +Thu Dec 29 08:53:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Fixed implicit conversion warning + +Wed Dec 28 10:42:31 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/Old_Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/PSPE_Handler.cpp + + Silenced some warnings from + Fri Dec 23 11:49:04 2005 Gan Deng + +Wed Dec 28 12:53:12 UTC 2005 Johnny Willemsen + + * ciao/Context_Impl_Base.{h,cpp}: + Readded the default constructor, some compilers need it, no idea + why, will sort this out later but this at least makes the scoreboard + less red + +Tue Dec 27 15:57:12 UTC 2005 Johnny Willemsen + + * ciao/Container_Base.{h,cpp}: + * ciao/Context_Impl_Base.{h,cpp}: + * ciao/Home_Servant_Impl_Base.{h,cpp}: + * ciao/Servant_Impl_Base.{h,cpp}: + * ciao/Swapping_Servant_Home_Impl_Base.{h,cpp}: + * ciao/Swapping_Servant_Home_Impl_T.h: + Moved the default constructor to the private section and removed + the implementation with the assert + +Tue Dec 27 15:08:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + Initialise pointer with 0 + + * DAnCE/NodeApplication/NodeApplication_Impl.{h,cpp,inl}: + Just declare the default constructor private, it seems not + to be used and the implementation was incorrect + +Fri Dec 23 11:49:04 2005 Gan Deng + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeApplication/NodeApplication_Impl.inl + * DAnCE/NodeApplication/RTConfig_Manager.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp + * ciao/Container_Base.cpp + * ciao/Deployment.idl + * ciao/Deployment_Core.idl + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp + * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp + * examples/Hello/descriptors/flattened_deploymentplan_without_ns_remove.cdp + + Merged from CVS Branch CIAO_ReDAC_01. This merge enables DAnCE to + handle dynamic updating component assemblies as well as its + configurations on the fly. Major IDL changes include the following: + + 1) Modified the finishLaunch() operation on the DomainApplicationManager + interface by adding an additional boolean parameter to differentiate + whether this is for inital deployment or for redeployment. + + 2) Modified the finishLaunch() operation on the NodeApplicationManager + interface by adding an additional boolean parameter to differentiate + whether this is for inital deployment or for redeployment. + + 3) Added new operations perform_redeployment() to the ExecutionManager + interface and NodeApplicationManager interface. + +Fri Dec 23 13:47:12 UTC 2005 Johnny Willemsen + + * DAnCE/ComponentPackager/* + Removed all these files, this component was using ziparchive and + we didn't build it. After checking this with the DAnCE developers + the conclustion was to zap it + +Thu Dec 22 19:53:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeManager/NodeManager_Impl.h: + Removed not needed msvc pragma push/pop + +Thu Dec 22 19:51:12 UTC 2005 Johnny Willemsen + + * DAnCE/ExecutionManager/DAM_Map.cpp: + Made variable const + +Thu Dec 22 19:47:12 UTC 2005 Johnny Willemsen + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Removed some old includes, make a variable const + + * DAnCE/DomainApplicationManager/Deployment_Configuration.{h,cpp}: + Made get_default_node_manager_ior and get_node_manager_ior + const methods + +Thu Dec 22 19:43:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + Initialise pointers with 0 + + * DAnCE/NodeApplicationManager/ImplementationInfo.h: + Removed include of cpp file in this file, this file is not + declaring a template + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + Converted documentation to doxygen style + +Thu Dec 22 19:36:12 UTC 2005 Johnny Willemsen + + * DAnCE/ComponentPackager/ComponentPackager.mpc: + Use exceptions as base project + + * DAnCE/ComponentPackager/Component_Packager.cpp: + Converted some documentation to doxygen style + + * DAnCE/ComponentPackager/Base_Packager.cpp: + Fixed argument not used warnings + + * DAnCE/ComponentPackager/CPK_Packager.{h,cpp}: + Small cleanup + +Thu Dec 22 14:10:12 UTC 2005 Johnny Willemsen + + * DAnCE/ComponentPackager/Base_Packager.h: + Changed documentation to doxygen style + +Tue Dec 20 08:07:51 2005 Simon McQueen + + * CIAO version 0.4.8 released. + +Fri Dec 16 15:58:27 2005 Gan Deng + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + + Modified to fix a bug reported by Will Otte regarding + DAnCE's parsing of deployment plan to find component + servant and executor libraries. This is a temporary + workaround so even if a component name happens to + have "_exec" string inside it, DAnCE could still + work correctly to find the corresponding servant + and executor libraries. + +Fri Dec 16 14:57:21 2005 Gan Deng + + * ciao/Container_Base.cpp + * ciao/Container_Base.h + + Fixed a bug about RT-CCM. The bug creeped out when the + facet_consumer_poa_ is not configured properly to use + application specific real-time policies. Thanks to + Roland Schimmack for + reporting this bug. + +Tue Dec 13 12:13:26 2005 Douglas C. Schmidt + + * COPYING: Updated this file to mention compliance issues wrt the + new "The Energy Policy Act of 2005". Thanks to Malcolm Spence + for providing this. + +Tue Dec 13 09:07:21 2005 William Otte + + * CCF/Documentation/Build.html + * CIDLC/README.html + + Updates to the CIDLC build documentation. Thanks to James Hill + for completing this update. + +Mon Dec 12 13:20:00 UTC 2005 Simon Massey + + * NEWS: + + Added Nanbor's changes from the release notes. + +Fri Dec 9 13:39:10 2005 William Otte + + * tools/Config_Handlers/Any_Handler.h + + Added a missing include for the versioned namespace macros. + +Fri Dec 9 09:18:01 2005 William Otte + + * ciao/Server_init.h + + Added a missing include for the versioned namespace macros. + +Thu Dec 08 21:34:36 2005 Gan Deng + + * NEWS + + Updated the NEWS file to capture ReDaC stuff. + +Thu Dec 8 15:38:02 2005 Ossama Othman + + * DAnCE/Old_Config_Handlers/DT_Handler.h: + * ciao/Client_init.h: + * ciao/Context_Impl_T.h: + * ciao/Server_init.h: + * ciao/Upgradeable_Context_Impl_T.h: + * tools/Config_Handlers/Any_Handler.h: + + Fixed versioned namespace support. The versioning macros calls + around forward declarations in the CORBA namespace were + missing. + +Thu Dec 08 08:38:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Fixed compile errors with VxWorks + +Wed Dec 07 18:05:35 2005 Gan Deng + + * ciao/Deployment.idl + * ciao/Deployment_Core.idl + * doc/index.html + + Document CIAO specific interface extension/modifications. + +Wed Dec 7 12:41:22 2005 Boris Kolpackov + + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + + Fixed a bug in regular expressions that are used to get rid of + file suffixes. + +Tue Dec 06 12:33:27 2005 William Otte + + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Fixed warnings in Borland. + +Tue Dec 6 16:14:01 UTC 2005 Jeff Parsons + + * ciao/Servant_Impl_T.cpp: + + Changed initialization of boolean class members from '0' + to 'false'. + + * ciao/Servant_Impl_T.h: + + Added comments to the executor and context class members, + providing info about where they are initialized. + +Mon Dec 5 14:43:48 2005 William Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc + + Removed superfluous dependancy on Xerces. + +Sun Dec 4 11:13:32 2005 William Otte + + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc + * DAnCE/tests/Config_Handlers/handler_test.mpb + + Fix linking errors on Tiger. + +Fri Dec 2 11:25:48 2005 William Otte + + * DAnCE/RepositoryManager/RepositoryManager.idl + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * DAnCE/RepositoryManager/Repository_Manager.cpp + * DAnCE/RepositoryManager/Repository_Manager_conf.h + * DAnCE/RepositoryManager/Update_Plan.cpp + * DAnCE/RepositoryManager/Update_Plan.h + + Removed the deprecated RepositoryManager implementation. + + * NEWS + + Updated the NEWS file to reflect this. + +Thu Dec 1 10:16:46 2005 William Otte + + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Fixed some errors caused by previous commit. + +Thu Dec 1 12:57:12 UTC 2005 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + Use 0 instead of NULL, NULL is not portable + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NAM_Map.cpp: + Initialise pointers with 0 and return false instead of 0 + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + Removed not needed msvc pragma push/pop + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Initialise pointers with 0 and removed some printf that seems some + left over debugging statements + +Wed Nov 30 16:24:43 2005 William Otte + + * docs/schema/xsc-banner.h + + Updated this file to reflect recent export macro changes. + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Deployment.cpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ccd.cpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdp.cpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.cpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.cpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.cpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.cpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/toplevel.cpp + * tools/Config_Handlers/toplevel.hpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Made a borland specific fix apply to all compilers, hopefully + fixing ICC builds. + +Wed Nov 30 12:30:59 2005 William Otte + + * examples/Hello/descriptors/flattened_deploymentplan.cdp + + Added metadata necessary to initialize an enum attribute. + +Wed Nov 30 08:06:00 UTC 2005 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + This project is deprecated according to Will, so added + requires+=dummy_label, it is up to the DAnCE people to + decide when they zap this from the archive + +Fri Nov 25 10:50:00 UTC 2005 Simon Massey + + * DAnCE/Old_Config_Handlers/XercesString.cpp + + Fixed prototype return type qualifier missmatch + +Thu Nov 24 16:04:05 2005 Gan Deng + + * tools/Config_Handlers/Config_Handlers.mpc + + Added the MPC base project dependency to typecodefactory, + and hopefully this should fix some linking erros on the + scoreboard. + +Thu Nov 24 11:25:09 2005 Gan Deng + + * DAnCE/Old_Config_Handlers/XercesString.h + + Fixed a warning, since declaring function return type + to be const is meaningless. + +Tue Nov 22 16:03:24 2005 Gan Deng + + * DAnCE/NodeApplication/Container_Impl.cpp + + Fixed a memory management related bug, we should not + explicitly call release() on the component object + reference of var type. + +Mon Nov 21 17:24:42 2005 Boris Kolpackov + + * NEWS: + + Updated with information about changes in CCF. + +Fri Nov 18 10:28:31 2005 William Otte + + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + + Quashed a link time warning on OS X. + +Thu Nov 17 18:13:28 UTC 2005 Jeff Parsons + + * examples/Swapping/Sender/Sender.mpc: + + Added a dependency of SenderE.idl on itself, to keep + VC8 from launching the IDL compiler on it until it + has been generated by the CIDL compiler. + +Thu Nov 17 09:53:35 2005 William Otte + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Fixed warning about unused arguments + +Wed Nov 16 11:30:12 UTC 2005 Johnny Willemsen + + * examples/Swapping/Sender/Sender_exec.cpp: + Fixed warning in VxWorks build + +Mon Nov 14 22:43:09 2005 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp + * ciao/Deployment.idl + + Fixed some errors and warnings on the builds. + +Mon Nov 14 11:05:12 UTC 2005 Johnny Willemsen + + * examples/Display/RateGen/RateGen_exec.h: + * examples/BasicSP/EC/EC_exec.h: + Timer id's are long, not int + + * ciao/Servant_Activator.cpp: + Fixed 64bit conversion warnings + +Sun Nov 13 12:54:12 UTC 2005 Johnny Willemsen + + * examples/Swapping/Sender/Sender_exec_2.cpp: + * examples/Swapping/Sender/Sender_exec_1.cpp: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + Fixed warnings in VxWorks build + +Fri Nov 11 17:49:40 2005 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + * ciao/Deployment.idl + + More stuff regarding dynamic assembly management. These + changes won't break existing initial deployment and + configuration. + +Fri Nov 11 12:37:00 2005 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc + * ciao/Deployment.idl + * ciao/Deployment_Core.idl + + Added the DAnCE enhancements to support dynamic + assembly management and reconfiguration. No actual + implementation is there except some capability + in NodeApplication_Impl servant class. + +Thu Nov 10 17:13:20 2005 Gan Deng + + * ciao/Servant_Activator.cpp + + Enhanced a debug output message. + +Thu Nov 10 06:54:12 UTC 2005 Johnny Willemsen + + * ciao/Port_Activator_T.cpp: + Fixed warning in VxWorks build + +Tue Nov 8 22:13:50 2005 William Otte + + * DAnCE/NodeManager/NodeManager_Impl.cpp + * ciao/Container_Base.cpp + * ciao/Servant_Impl_Base.cpp + * ciao/Swapping_Servant_Home_Impl_T.cpp + * ciao/Upgradeable_Context_Impl_T.cpp + * examples/BasicSP/EC/EC.mpc + + Resolved some warnings in OS X relating to ambiguous conversions. + +Mon Nov 7 16:23:41 2005 William Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * performance-tests/Benchmark/Benchmark.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc + + Resolving linking errors on OS X. + +Mon Nov 7 14:00:31 2005 Nanbor Wang + + * NEWS: Added some new TO-DO items. + +Mon Nov 07 10:23:09 2005 Nanbor Wang + + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: Fixed + incorrect usage of extracting a struct from an any. Thanks much + to Gan for helping with the debugging effort. + + * examples/Hello/descriptors/rt_run_test.pl: + * examples/Hello/descriptors/rt-example.cdp: Enabled the use of RT + policy sets and RT-enabled NodeApplication in the example by + default. + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: Minor enhancement to + the debug messages. + +Fri Nov 04 16:44:29 2005 Gan Deng + + * DAnCE/NodeApplicationManager/ImplementtionInfo.cpp + + Changed to use the "copying" version of the Any insertion + operator. Thanks Jeff Parsons for the help on this. + +Thu Nov 03 15:34:39 2005 Gan Deng + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + + Fixed a bug which causes unknow exception when calling + startLaunch on NodeApplicationManager. + +Thu Nov 3 19:36:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Fixed implicit conversion warning in VxWorks build + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + Renamed global variable count to counter to fix clash with STL count + algoritm on VxWorks + +Thu Nov 03 11:14:52 2005 Nanbor Wang + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: Added a tad more and + improve existing debugging print out. + + * examples/Hello/descriptors/rt-example.cdp: + * examples/Hello/descriptors/rt-config-example.csr: + * examples/Hello/descriptors/rt_run_test.pl: Changed to use a + simpler version of DeploymentPlan for the test for now. + +Wed Nov 02 19:28:14 2005 Gan Deng + + * tools/Config_Handlers/RT-CCM/CB_Handler.cpp + * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp + * tools/Config_Handlers/RT-CCM/PS_Handler.cpp + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + + Fixed some bugs related to populating/displaying ServerResource + data structure. + +Wed Nov 02 14:55:14 2005 Nanbor Wang + + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: Fixed strings + comparisons syntax. + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/RTConfig_Manager.h: Added a new + print_resource method and a bunch of debugging print out to help + debugging XML parsing and propagating. + + * examples/Hello/descriptors/RTsvc.conf: + * examples/Hello/descriptors/rt_run_test.pl: Added a RTsvc.conf + file to start up the NodeApplication in RT mode. + + * examples/Hello/descriptors/rt-config-example.csr: Made RT + resource definitions more realistic and added a new policy set + for debugging XML parsing. + +Wed Nov 02 07:09:10 2005 Nanbor Wang + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: Fixed + usage of strings. + +Tue Nov 01 22:41:04 2005 Nanbor Wang + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: Changed to + insert policy set name into ContainerPolicySet property instead + of the actual policy since we already have the policy set + definitions when creating the NodeApplication. + +Tue Nov 01 13:44:58 2005 Nanbor Wang + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/RTConfig_Manager.h: + * DAnCE/NodeApplication/RTConfig_Manager.inl: + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: + * DAnCE/NodeApplication/RTNodeApp_Configurator.h: Integrated + RTConfig_Manager with the RTNodeApp_Configurator. + +Mon Oct 31 22:37:42 2005 Nanbor Wang + + * DAnCE/NodeApplication/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/NodeApplication/RTConfig_Manager.h: + * DAnCE/NodeApplication/NodeApplication/RTConfig_Manager.inl: + Added the RT configuration manager that keep track of all the RT + resources and policy sets in a NodeApplication. We still need + to hook this up in the RTNodeApp_Configurator. + +Mon Oct 31 11:22:41 2005 + + * examples/Hello/descriptors/rt-config-example.csr + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + + Fixed the descriptor by adding the server resource id tag. + +Sun Oct 30 22:49:52 2005 Nanbor Wang + + * DAnCE/NodeManager/Node_Manager.cpp: Fixed missing -a Get_Opt + parameter and usage text. "-a" is used to set the optional + command line flags for the NodeApplication. The logic was there + in the Get_Opt loop but the Get_Opt object was not set to parse + the flag and the usage text for Node_Manager didn't mention the + flag either. + + Eventually, the optional command line flags should really come + from the ServerResource XML file. + + * NodeApplicationManager/NodeApplicationManager_Impl.cpp: Added a + missing space to separate optional command line flags from the + default ones. The old one worked only when no optional + commandline flags are presented. + + * ciao/Deployment_Core.idl: Removed "init" method from the + Container interface since it is really implementation specific. + + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplication/Container_Impl.h: Changed the signature of + init method to take a PolicyList pointer directly since this is + what we really need to initialize a container. + + * DAnCE/NodeApplication/Configurator_Factory.h: Added comments + documentating how we should really support multiple external + configurator module and how it could be done. + + * DAnCE/NodeApplication/Configurator_Factory.cpp: Changed DLL open + to not closing down the DLL handle on exit. Otherwise, + NodeApplication can not shut down cleanly. + + * DAnCE/NodeApplication/NodeApp_Configurator.h: Commented on the + potential need for a finalizer method, or two. + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: Added actual + hooks to process optional policies for RT support. + + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: Added code to + parse the optional properties and manipulate RT resources and + policies. + +Sun Oct 30 10:27:27 2005 Nanbor Wang + + * DAnCE/NodeApplication/Configurator_Factory.cpp: Fixed a typo in + command line option flag. + +Fri Oct 28 12:30:06 2005 William Otte + + * DAnCE/NodeApplication/Configurator_Factory.cpp + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + + Scoreboard fixes. + +Thu Oct 27 21:06:39 2005 Boris Kolpackov + + * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp: + + Added support for indentation of function arguments. + +Thu Oct 27 00:29:11 2005 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + * DAnCE/NodeApplicationManager/ImplementationInfo.h + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc + + Fixed some compilation and linking errors shown on the scoreboard, + particularly for Windows builds. + +Thu Oct 27 07:16:12 UTC 2005 Johnny Willemsen + + * rules.ciao.GNU: + When cmd is the shell, use a different way to get the CIAO versions + needed for building with VxWorks 5.5 with Windows as host + +Wed Oct 26 23:07:59 UTC 2005 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added backend support for the frontend features added by + Boris in + + Tue Oct 25 14:08:44 2005 Boris Kolpackov . + +Wed Oct 26 16:16:32 2005 Nanbor Wang + + * DAnCE/NodeApplication/NodeApp_Configurator.cpp: + * DAnCE/NodeApplication/NodeApp_Configurator.h: Updated the + NodeApp_Configurator to support pre_orb_initialize and + post_orb_initialize methods which will be invoked before and + after ORB_init is called. + + * DAnCE/NodeApplication/NodeApplication.cpp: Moved ORB_init into + NodeApplication_Core object. + + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + * DAnCE/NodeApplication/NodeApplication_Core.h: + * DAnCE/NodeApplication/NodeApplication_Core.inl: Moved the + NodeApplication_Options and NoOp_Configurator classes into + Configurator_Factory.* file. Refactored NodeApplication_Core to + enable pre_orb_initialize and post_orb_initialize. + + * DAnCE/NodeApplication/Configurator_Factory.cpp: + * DAnCE/NodeApplication/Configurator_Factory.h: Factored all the + NodeApp_Configurtor creation strategies and NodeApplication + configuration managements into these files. It also includes + the no-ops NodeApp_Configurator used by non-RT NodeApplication. + + We should extend the argument parsing logic to support + user-supplied NodeApp_Configurator at some point. + + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/RTNA_Configurator_Export.h: + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: + * DAnCE/NodeApplication/RTNodeApp_Configurator.h: Added the + dynamic library for real-time configuration. The current + implementation set up the NodeApplication process by enabling + the RTCORBA support. We still need to add the capability to + parse and allocate RT resources and policies. + +Wed Oct 26 18:37:00 2005 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticGraph/Array.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp: + * CCF/CCF/IDL2/SemanticGraph/String.hpp: + * CCF/CCF/IDL2/SemanticGraph/Union.hpp: + + Corrected a left/right node mismatch in + type-arguments->specialization relation. + +Wed Oct 26 16:37:26 2005 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + + Clear array type before starting sequence, string, etc., + declarations. + +Tue Oct 25 14:08:44 2005 Boris Kolpackov + + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/Array.cpp: + * CCF/CCF/IDL2/SemanticGraph/Array.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp: + * CCF/CCF/IDL2/SemanticGraph/String.cpp: + * CCF/CCF/IDL2/SemanticGraph/String.hpp: + * CCF/CCF/IDL2/SemanticGraph/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/Union.hpp: + * CCF/CCF/IDL2/Traversal/Array.cpp: + * CCF/CCF/IDL2/Traversal/Array.hpp: + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CCF/CCF/IDL2/Traversal/IntExpression.hpp: + * CCF/CCF/IDL2/Traversal/Sequence.cpp: + * CCF/CCF/IDL2/Traversal/Sequence.hpp: + * CCF/CCF/IDL2/Traversal/String.cpp: + * CCF/CCF/IDL2/Traversal/String.hpp: + + Implemented the second part of the const expression support. + This includes bounded sequences, strings, and arrays. + +Mon Oct 24 09:36:28 2005 Venkita Subramonian + + * docs/static_dance.html: + + Corrected minor error with display of figures. + +Mon Oct 24 08:10:29 2005 Venkita Subramonian + + * DAnCE/NodeApplication/NodeApplication_Impl.{h,inl,cpp}: + * DAnCE/NodeApplication/Container_Impl.{h,inl,cpp}: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.{cpp,inl,h}: + * DAnCE/NodeManager/NodeManager_Impl.{cpp,h}: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/StaticConfigurator/README: + * DAnCE/StaticConfigurator/StaticDAnCEParser.{cpp,mpc}: + * DAnCE/StaticConfigurator/StaticDAnCEApp.{cpp.tmpl,mpc.tmpl}: + * docs/static_dance.html: + * docs/imgs/dance_arch.{vsd,jpg}: + * docs/imgs/static_dance_arch.{vsd,jpg}: + * docs/imgs/static_dance_impl.{vsd,jpg}: + + Added Static D&C capability to CIAO. See + $CIAO_ROOT/docs/static_dance.html for further details. + +Fri Oct 21 13:58:13 2005 William Otte + + * tools/Config_Handlers/DynAny_Handler.mpc + + Modified to make this not build on systems built with minimum + corba. + +Fri Oct 21 09:56:10 2005 Nanbor Wang + + * DAnCE/RTNodeApplication/RTNodeApplication.mpc: Removed the MPC + file to prevent it from being built. + + * DAnCE/RTNodeApplication/REAME: Stated the directory has been + depricated. + +Fri Oct 21 13:11:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Fixed unitialized warnings + +Fri Oct 21 10:04:12 UTC 2005 Johnny Willemsen + + * DAnCE/Old_Config_Handlers/Process_Element_T.cpp: + Fixed 64bit warnings + +Thu Oct 20 09:07:21 2005 Nanbor Wang + + * DAnCE/NodeApplication/NodeApp_Configurator.{h,cpp}: + Actually, destructors can be pure virtual. They just can't be + defined in header files. + +Thu Oct 20 09:45:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApp_Configurator.{h,cpp}: + Destructor can't be pure virtual + +Wed Oct 19 15:03:56 2005 Nanbor Wang + + These changes are made to add support for RT-capable + NodeApplication. + + * ciao/CCM_Core.mpc: + * ciao/Container_Impl.h: + * ciao/Container_Impl.inl: + * ciao/Container_Impl.cpp: + * ciao/NodeApplication_Impl.h: + * ciao/NodeApplication_Impl.inl: + * ciao/NodeApplication_Impl.cpp: Moved NodeApplication and + Container interface implementations under DAnCE/NodeApplication/ + subdir. They are coupled with NodeApplication implementation + now. + + * DAnCE/NodeApplication/NodeApplication.mpc: Changed to + incorporate the following files/changes. + + * DAnCE/NodeApplication/NodeApp_Configurator.h: + * DAnCE/NodeApplication/NodeApp_Configurator.cpp: Added abstract, + base NodeApp_Configurator class to define the interface for + configuring NodeApplication internal. + + * DAnCE/NodeApplication/Container_Impl.h: + * DAnCE/NodeApplication/Container_Impl.inl: + * DAnCE/NodeApplication/Container_Impl.cpp: Moved from ciao/ + subdir. + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.inl: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: Changed to + depend on a concrete NodeApp_Configurator to perform the + configuration. + + * DAnCE/NodeApplication/NodeApplication_Core.h: + * DAnCE/NodeApplication/NodeApplication_Core.inl: + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + * DAnCE/NodeApplication/NodeApplication.cpp: Restructured the + NodeApplication implementation so that the ORB event loop can be + run on the main thread or on a separate thread, using the FIFO + scheduling class. + + A new create_configurator method in NodeApplication_Core will + create the "right" concrete configurator based on the command + line flags. We will support a RT configuration soon. + Currently, there's only a NoOp_Configurator for running + NodeApplication without RT support. + + We will add the RT configuration as a dynamic library and will + hook it up via ACE_DLL in a few days. + +Tue Oct 18 16:50:24 2005 William Otte + + * NEWS + + Updated release notes. + +Mon Oct 17 13:21:59 2005 William Otte + + * docs/schema/ccd.xsd + + Updated to work with expected format for Repoman/ComponentPackager + +Fri Oct 14 17:22:59 2005 William Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Deployment.cpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ccd.cpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdd.cpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.cpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.cpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.cpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.cpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.cpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/toplevel.cpp + * tools/Config_Handlers/toplevel.hpp + + Regerated with new version of XSC which implements some heavy + optimizations. + +Fri Oct 14 14:11:12 UTC 2005 Johnny Willemsen + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + Removed not needed ; + +Thu Oct 13 15:42:12 2005 William Otte + + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp + + Various compile fixes for Borland. + + * tools/Config_Handlers/XMLSchema/Types.hpp + + Modified to use ACE typedefs for number types. + + * tools/Config_Handlers/XSCRT/Elements.hpp + + Removed unneeded non-const conversion operator which was causing + errors in Borland. + +Wed Oct 12 14:13:09 2005 William Otte + + * examples/Hello/Sender/Sender.idl + * examples/Hello/Sender/Sender_exec.cpp + * examples/Hello/Sender/Sender_exec.h + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp + + Example of initializing enumerated attributes. + +Wed Oct 12 15:08:31 UTC 2005 Jeff Parsons + + * tools/Config_Handlers/RT-CCM/TP_Handler.cpp: + + Changed the types of some static_casts on the rhs of + assignments to match the types on the lhs, eliminating + warnings from MSVC 7.1. + +Wed Oct 12 13:17:58 UTC 2005 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + + Removed generation of error message with code that attempts + to set an enum attribute value, and replace it with code + that extracts the enum value from the Any arguement. + +Wed Oct 12 08:38:12 UTC 2005 Johnny Willemsen + + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h: + Fixed fuzz check + +Tue Oct 11 16:37:01 2005 William Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Deployment.cpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ccd.cpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdd.cpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.cpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.cpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.cpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.cpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.cpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/toplevel.cpp + * tools/Config_Handlers/toplevel.hpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Fixed a bug which broke the gaurantee that element order in the + XSC type would be the same as the element order in the instance + document. + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp + + Fixed a runtime error and removed some debugging information. + +Mon Oct 10 17:37:20 2005 Stoyan Paunov spaunov@isis.vanderbilt.edu + + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp + + reverted a change we made earlier to accomodate older verisons of ZZIPLIB + + +Mon Oct 10 15:46:57 2005 William Otte + + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp + + Trivial corrections for portability problems. + + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc + + Updated to properlly use base projects. + +Mon Oct 10 20:07:39 UTC 2005 Jeff Parsons + + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/DynAny_Handler.mpc: + + Add export files to projects, and removed redundant + base projects. + + * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp: + + Changed some static casts on the rhs of assignments to types + corresponding to the lhs, elminating warnings on MSVC 7.1. + +Mon Oct 10 15:05:00 2005 William Otte + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/cdd.xsd + + Checking in some updated schema for domain information. + +Mon Oct 10 13:53:15 2005 Will Otte + + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/DynAny_Handler.mpc + * tools/Config_Handlers/IDREF_Base.h + * tools/Config_Handlers/XSC_XML_Handlers_Export.h + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/toplevel.hpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h + * tools/Config_Handlers/RT-CCM/CB_Handler.h + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + * tools/Config_Handlers/RT-CCM/CLA_Handler.h + * tools/Config_Handlers/RT-CCM/OC_Handler.h + * tools/Config_Handlers/RT-CCM/OR_Handler.h + * tools/Config_Handlers/RT-CCM/PM_Handler.h + * tools/Config_Handlers/RT-CCM/PS_Handler.h + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc + * tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h + * tools/Config_Handlers/RT-CCM/SRD_Handler.h + * tools/Config_Handlers/RT-CCM/TPL_Handler.h + * tools/Config_Handlers/RT-CCM/TP_Handler.h + * tools/Config_Handlers/RT-CCM/input.csr + * tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h + * tools/Config_Handlers/Utils/Utils.mpc + * tools/Config_Handlers/Utils/XML_Error_Handler.h + * tools/Config_Handlers/Utils/XML_Helper.h + * tools/Config_Handlers/Utils/XML_Schema_Resolver.h + + Fixed messy export macro usage. This will clean up builds on + Windows. + +Sun Oct 9 19:22:44 CDT 2005 Stoyan Paunov spaunov@isis.vanderbilt.edu + + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc + + Fixing a few includes after Will Otte's latest changes. + + +Sun Oct 9 09:51:41 2005 William Otte + + * tools/Config_Handlers/DynAny_Handler.mpc + + Moved this file down a level to make MPC stop complaining. + +Fri Oct 7 18:22:40 2005 William Otte + + * tools/Config_Handlers/Any_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp + + *Hopefully* fix compile problem on Windows. + +Fri Oct 7 18:25:11 2005 Will Otte + + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.cpp + + Fix runtime error. + +Fri Oct 7 16:18:40 2005 Will Otte + + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h + + Fix for a compile problem. + +Fri Oct 7 14:25:09 2005 William Otte + + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h + * tools/Config_Handlers/Any_Handler.cpp + + Add support for using Dynamic Any. This will evolve in the coming + weeks into more complete support for complex types. + + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/ADD_Handler.h + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/CCD_Handler.cpp + * tools/Config_Handlers/CCD_Handler.h + * tools/Config_Handlers/CEPE_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.h + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/DP_PCD_Handler.cpp + * tools/Config_Handlers/DP_PCD_Handler.h + * tools/Config_Handlers/ERE_Handler.cpp + * tools/Config_Handlers/ERE_Handler.h + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/IDD_Handler.h + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.h + * tools/Config_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/PSPE_Handler.cpp + * tools/Config_Handlers/PSPE_Handler.h + + Optimization made possible by improvements in XSC. + +Fri Oct 7 14:20:36 2005 Jaiganesh B + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added more debug statements. + +Fri Oct 7 19:14:29 UTC 2005 Jeff Parsons + + * CIAO-INSTALL.html: + + Updated CIDL compiler section with instructions for building + the CIDL compiler using MPC. + +Fri Oct 7 18:46:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeManager/NodeManager_Impl.{h,inl}: + Removed inl file, it is empty + + * DAnCE/ExecutionManager/ExecutionManager_Impl.inl: + Removed, empty + +Thu Oct 6 16:52:21 2005 Jaiganesh B + + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added more debug statements and comments. + +Thu Oct 6 16:11:56 2005 Jaiganesh B + + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Added more debug statements and also comments in the code. + +Thu Oct 6 15:32:41 CDT 2005 Stoyan Paunov spaunov@isis.vanderbilt.edu + + * DAnCE/spec_RepositoryManager/PC_Updater.cpp + * DAnCE/spec_RepositoryManager/PC_Updater.h + * DAnCE/spec_RepositoryManager/PC_Updater_T.cpp + * DAnCE/spec_RepositoryManager/PC_Updater_T.h + + Added these files which implement a PackageConfiguration visitor. + The visitor helps deal with the internal complexity of the PackageConfiguration + and helps preseve my sanity ;) + + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h + + Some more code. With this the package distribution part of the RM + is ready. I still need to clean up a few details. This is coming soon. + + +Thu Oct 6 15:05:30 2005 Jaiganesh B + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Added debug statements and comments. + +Thu Oct 6 14:26:31 2005 Jaiganesh B + + * DAnCE/ExecutionManager/DAM_Map.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/Plan_Launcher/DAM_Map.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * ciao/Container_Impl.cpp: + * ciao/NodeApplication_Impl.cpp: + * ciao/Servant_Activator.cpp: + + Fixed the debug statements to look for critical levels + no more than 9. + +Thu Oct 6 14:00:16 2005 Jaiganesh B + + * ciao/Container_Base.cpp: + * ciao/Container_Impl.cpp: + + Added debug messages and comments. + +Thu Oct 6 12:30:40 2005 Jaiganesh B + + * ciao/NodeApplication_Impl.cpp: + + Added debug messages and comments. + +Thu Oct 6 08:00:12 UTC 2005 Johnny Willemsen + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + Fixed compile problems + +Wed Oct 5 17:42:24 2005 William Otte + + * tools/Config_Handlers/Any_Handler.cpp + + Part of previous commit. + +Wed Oct 5 17:07:07 2005 William Otte + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/cdd.xsd + + Moved recursive Domain data into cdd.xsd. This will hopefully + lessen the time required to compile. + + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/DataType_Handler.cpp + + Fixed some potential run-time bugs in Borland. Style + corrections. + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Deployment.cpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ccd.cpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdd.cpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.cpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.cpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/iad.cpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.cpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/test.cdp + * tools/Config_Handlers/toplevel.cpp + * tools/Config_Handlers/toplevel.hpp + + Regerated with new version of XSC. Major changes: + * Now only one accessor and one mutator per document element + * Changes in schema above. + +Wed Oct 5 14:44:31 2005 Jaiganesh B + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + + Added some debug statements and some optimization choices. + +Tue Oct 4 14:08:24 2005 William Otte + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/unused_elements.xsd + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + + Updated to include domain information (ie, bridge, interconnect). + + * tools/Config_Handlers/RT-CCM/SRD_Handler.h + + Cosmetic changes. + +Mon Oct 3 14:27:39 2005 William Otte + + * CIAO-INSTALL.html + + Updated install documentation to reflect the restructuring. + +Mon Oct 3 12:48:26 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Commented out some debugging information. + +Mon Oct 3 15:44:15 UTC 2005 Jeff Parsons + + * docs/Purify.html: + + Updated doc file with installation info and more info about + Purifying a spawned child process. + +Mon Oct 3 10:14:19 2005 William Otte + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Corrected a bug in parameter checking. + + * DAnCE/NodeManager/Node_Manager.cpp + + Added documentation for the -d command line options. + + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp + * tools/Config_Handlers/RT-CCM/SRD_Handler.h + + New functionality in the Config_Handlers. + +Mon Oct 3 10:00:08 2005 William Otte + + * bin/valgrind_nodedaemon.py + + Script to help launch nodemanager/nodeapplication under Valgrind. + +Mon Oct 3 000:31:09 UTC 2005 Jeff Parsons + + * docs/Purify.html: + + New file, documenting the use of Purify with CIAO and DAnCE. + +Sun Oct 2 22:24:15 UTC 2005 Jeff Parsons + + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + + Added include of RT-CCM/CIAOServerResources.hpp. + + * tools/Config_Handlers/DP_Handler.cpp: + + Added export macros to friend function declarations. + +Sat Oct 1 15:38:23 2005 William Otte + + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/test.cpp + + Corrected the config handler test to properly test the handlers. + + * tools/Config_Handlers/PSPE_Handler.cpp + + Fixed a run-time bug that was causing corrupted plans in Borland + builds. + +Friday Sep 30 15:12:43 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc + * RACE/Planner_Manager/Component/Planner_Manager.mpc + * tests/IDL3/ImpliedIDL/All/all.mpc + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Fixes for compile problems in Borland6 + +Fri Sep 30 15:11:47 2005 Gan Deng + + * NEWS + + Updated the NEWS file. + +Fri Sep 30 07:53:47 2005 William Otte + + * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp + + Should have been part of the previous commit. + +Thu Sep 29 18:11:25 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * ciao/Container_Impl.cpp + * ciao/NodeApplication_Impl.cpp + * ciao/Upgradeable_Context_Impl_T.cpp + + Fuzz errors. + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * tools/Config_Handlers/RT-CCM/Config_Handlers_Export.h + * tools/Config_Handlers/RT-CCM/SRD_Handler.h + * tools/Config_Handlers/Utils/Config_Handlers_Export.h + + Correction for a emulated exception error. + +Thu Sep 29 13:01:23 2005 William Otte + + * ciao/Version.h + + Corrected the version number. + +Thu Sep 29 11:34:55 2005 William Otte + + * ciao/Swapping_Servant_Home_Impl_T.cpp + + Fixed build problem on non-exception systems. + +Thu Sep 29 07:28:12 UTC 2005 Johnny Willemsen + + * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp: + Fixed not used argument warning + +Thu Sep 29 06:44:12 UTC 2005 Johnny Willemsen + + * tools/Config_Handlers/Utils/XML_Schema_Resolver.h: + Added missing pre.h + +Wed Sep 28 16:44:39 2005 Gan Deng + + * docs/schema/CIAOServerResources.xsd + + Updated to support RT-CCM. + +Wed Sep 28 14:44:39 2005 William Otte + + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + New version of the XSC including additional features needed for + RT-CCM. + +Wed Sep 28 08:24:32 2005 William Otte + + * tools/Config_Handlers/Utils/Utils.mpc + * tools/Config_Handlers/Utils/XML_Helper.cpp + * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp + * tools/Config_Handlers/Utils/XML_Schema_Resolver.h + + Implemented a schema resolver so that the XML parser till grab the + schemata from $CIAO_ROOT/docs/schema. + + * docs/tutorials/Quoter/Simple/descriptors/Deployment.xsd + * docs/tutorials/Quoter/Simple/descriptors/Modified_Deployment.xsd + * examples/BasicSP/descriptors/Deployment.xsd + * examples/Display/descriptors/Deployment.xsd + * examples/Display/descriptors/Modified_Deployment.xsd + * examples/Hello/descriptors/Deployment.xsd + * examples/Hello/descriptors/Modified_Deployment.xsd + * examples/Hello/descriptors/XMI.xsd + * examples/Hello/descriptors/Deployment.xsd + * examples/Hello/descriptors/Modified_Deployment.xsd + * examples/Hello/descriptors/XMI.xsd + + Removed obsolete schemata. + + * examples/Display/descriptors/flattened_deploymentplan.cdp + * examples/Hello/descriptors/flattened_deploymentplan.cdp + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp + * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp + + Migrated these deployment plans to use Deployment.xsd and friends, + instead of Modified_Deployment.xsd. + + * NEWS + + Updated the NEWS to include this feature. + +Tue Sep 27 13:16:43 2005 William Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/NodeApplication/NodeApplication.mpc + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/Old_Config_Handlers/Config_Handlers.mpc + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/RTNodeApplication/RTNodeApplication.mpc + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc + * RACE/Output_Adapters/Base/Output_Adapter.mpc + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc + * ciao/CCM_Core.mpc + * examples/BasicSP/BasicSP.mpc + + Fixed a large number of deficiencies in our build structure. + More changes to come later. + +Tue Sep 27 11:10:37 2005 William Otte + + * NEWS + + Updated the news file. + +Tue Sep 27 10:51:20 2005 William Otte + + * bin/generate_component_mpc.pl + + Updated this script to bring it in line with modern CIAO. This + includes: + + - Base projects are now the _dnc variants + - Export files are now automatically generated. + +Tue Sep 27 14:26:44 2005 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/SemanticAction/Const.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp: + * CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/CIDL/Parser.cpp: + + Implemented first part of the const expression support. This + includes parser rules, semantic graph types and semantic + actions. Traversal types are still to be implemented. + +Tue Sep 27 06:42:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Fixed compile problem + + * tools/Config_Handlers/XMLSchema/TypeInfo.tpp: + Removed using std::make_pair, this causes a crash of the BCB6 + compiler. It doesn't seem to cause issues with CBX, but it + seems the code wasn't really needed and now BCB6 is also happy + +Mon Sep 26 11:06:40 2005 William Otte + + * tools/Config_Handlers/Basic_Deployment_Data.hpp + + Updates for compile problems in Borland. + +Mon Sep 26 11:06:40 2005 William Otte + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Cleared up some scoreboard errors. + +Sat Sep 24 20:44:20 2005 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * tools/Config_Handlers/Config_Handlers.mpc + + Fixed linking errors. + +Sat Sep 24 08:40:12 UTC 2005 Johnny Willemsen + + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc: + Added Id tag + +Sat Sep 24 02:37:20 2005 Gan Deng + + * ciao/Deployment.idl + * ciao/Deployment_Core.idl + * ciao/ServerResources.idl + + Enhanced to support RT-CCM feature. + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.h + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + + Refactor the NodeApplicationManager to populate the correct + node level deployment plan info, while taking into account + of the RT-CCM feature. + + * ciao/NodeApplication_Impl.cpp + * ciao/NodeApplication_Impl.h + + Modified to accomodate the change in IDL files. + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp + + Fixed these tests to make them run with the modified IDL + files. + + * DAnCE/examples/Hello/descriptors/rt-config-example.csr + * DAnCE/examples/Hello/descriptors/rt-config-example.cdp + + An example descriptor files to describe server resource, + and associate server resources and policy set defs with + the deployment plan. + + NOTE: All above code are tested working fine with the existing + examples. + +Fri Sep 23 10:05:18 2005 William Otte + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc + * tools/Config_Handlers/Config_Handlers.mpc + + fixes for build problems. + +Thu Sep 22 16:21:12 2005 Gan Deng + + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Added error report message from the tool. + + * ciao/Container_Base.cpp + + Cosmetic change. + +Thu Sep 22 14:45:32 2005 William Otte + + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/STD_CID_Handler.cpp + * tools/Config_Handlers/STD_CID_Handler.h + * tools/Config_Handlers/STD_CPD_Handler.cpp + * tools/Config_Handlers/STD_CPD_Handler.h + * tools/Config_Handlers/STD_PCD_Handler.cpp + * tools/Config_Handlers/STD_PCD_Handler.h + * tools/Config_Handlers/STD_PC_Intf.cpp + * tools/Config_Handlers/XML_File_Intf.cpp + * tools/Config_Handlers/RT-CCM/SRD_Handler.h + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc + + Made these files consistent with the new Utils directory. + + * tools/Config_Handlers/Utils/Utils.mpc + * tools/Config_Handlers/Utils/XML_Error_Handler.cpp + * tools/Config_Handlers/Utils/XML_Error_Handler.h + * tools/Config_Handlers/Utils/XML_Helper.cpp + * tools/Config_Handlers/Utils/XML_Helper.h + * tools/Config_Handlers/Utils/XercesString.cpp + * tools/Config_Handlers/Utils/XercesString.h + + Moved common XML utilities to a separate directory. + +Thu Sep 22 13:21:12 2005 Gan Deng + + * ciao/CCM_Core.mpc + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc + + Put the ServerResources.idl into Deployment_stub project. Modified + other MPC project files to reflect this change. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Pass the infoProperty which contains the entire server resource + definitions to each individual child deployment plans. + + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + + NodeManager now validates the correctness of the individual local + dpeloyment plan. In particular, it tries to verify that all the + component instances within this child deployment plan have the same + "server_resource_id" assigned. + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp + + Added a NodeApplication test case, where multiple components could + be installed one-by-one through a serious of "install" invocations. + + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp + + Fixed a typo. + + + +Thu Sep 22 12:26:45 CDT 2005 Stoyan spaunov@isis.vanderbilt.edu + + * DAnCE/spec_RepositoryManager/ + * DAnCE/new_RepositoryManager/ + + Added the former, removed the latter. + + +Thu Sep 22 10:50:45 CDT 2005 Stoyan spaunov@isis.vanderbilt.edu + + + * DAnCE/spec_RepositoryManager/HTTP_Client.cpp + * DAnCE/spec_RepositoryManager/HTTP_Client.h + * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp + * DAnCE/spec_RepositoryManager/HTTP_Handler.h + * DAnCE/spec_RepositoryManager/Options.cpp + * DAnCE/spec_RepositoryManager/Options.h + * DAnCE/spec_RepositoryManager/README.txt + * DAnCE/spec_RepositoryManager/RepositoryManager.cpp + * DAnCE/spec_RepositoryManager/RepositoryManager.idl + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h + * DAnCE/spec_RepositoryManager/RMadmin.cpp + * DAnCE/spec_RepositoryManager/RM_Helper.cpp + * DAnCE/spec_RepositoryManager/RM_Helper.h + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc + * DAnCE/spec_RepositoryManager/spec_RepositoryManager.ncb + * DAnCE/spec_RepositoryManager/URL_Parser.cpp + * DAnCE/spec_RepositoryManager/URL_Parser.h + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h + + + Checked in these file and cleaned up *some* of the underlying mess due to previous + mix-ups. Many of the files are new. Some are newer versions of older files. + Previously there were 2 RM directories spec_RepositoryManager and + new_RepositoryManager. Someone had removed the spec* verion and checked in the + wrong files in the new* version (which used to be a non-spec compilent impl). + Apparently on top of that the two directories have been linked somehow! I will + check on what the reason for this is later. + + +Thu Sep 22 13:15:28 UTC 2005 Jeff Parsons + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Fixed typo. + +Wed Sep 21 15:32:38 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/NodeApplication/NodeApplication.cpp + * DAnCE/RTNodeApplication/NodeApplication_Task.cpp + * DAnCE/RepositoryManager/Repository_Manager.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp + * ciao/Container_Base.cpp + * ciao/Container_Impl.cpp + * ciao/Servant_Activator.cpp + * ciao/Servant_Impl_T.cpp + * ciao/Swapping_Container.cpp + * ciao/Swapping_Servant_Home_Impl_T.cpp + * ciao/Upgradeable_Context_Impl_T.cpp + * docs/templates/CIAO_Glue_Session_Template.cpp + * examples/Hello/Sender/Sender_exec.cpp + * examples/Swapping/Receiver/Receiver_exec.cpp + * examples/Swapping/Sender/Sender_exec.cpp + * examples/Swapping/Sender/Sender_exec_1.cpp + * examples/Swapping/Sender/Sender_exec_2.cpp + + Fixed numerous emulated exception errors. + + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/ExecutionManager/ExecutionManager_Impl.h + + removed obsolete EM implementation. + +Wed Sep 21 13:34:28 2005 Gan Deng + + * tools/Config_Handlers/RT-CCM/test.cpp + + Modified so the output XML file is based on the XSC dom document + instead from the input file directly. + +Tue Sep 20 21:58:23 UTC 2005 Jeff Parsons + + * tests/IDL3/ImpliedIDL/All/convert.idl: + + Modified valuetype declartion used as a primary key to + conform to the CCM spec section 61.7.2.1 listing + constraints on primary key types. + +Tue Sep 20 02:25:34 2005 William Otte + + * tools/Config_Handlers/Config_Handlers.mpc + + Quick fix for a build problem on Windows. A better solution + will follow when I check in my CIAO build system revamp. + +Tue Sep 20 10:19:46 2005 William Otte + + * tools/Config_Handlers/test.cdp + + A test deployment plan file that contains odd constructs. + Used for testing. + +Tue Sep 20 10:07:43 2005 William Otte + + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc + + Added a missing library. + +Tue Sep 20 09:50:28 2005 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Modified to kill all NodeApplication processes when the deployment fails. + +Tue Sep 20 09:35:28 2005 William Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Added a missing library. + +Mon Sep 19 16:29:57 2005 William Otte + + * ADD_Handler.cpp + * Common.h + * IDD_Handler.cpp + * IDD_Handler.h + * IDREF_Base.cpp + * IDREF_Base.h + * IRDD_Handler.cpp + * IRDD_Handler.h + * MDD_Handler.cpp + * PSPE_Handler.cpp + * STD_CID_Handler.cpp + * XML_Error_Handler.cpp + + Added some improved error handling/reporting. Much more to come. + + * test.cpp + * RT-CCM/RT-CCM-Handlers.mpc + * RT-CCM/SRD_Handler.cpp + * RT-CCM/SRD_Handler.h + * Config_Handlers.mpc + * DP_Handler.cpp + + Added hooks for parsing ServerResources document into a deployment + plan. + + This is activated by adding an InfoProperty with name + "CIAOServerResources" with a value of a valid CSR file. + + Also enabled parsing of deployRequirements and infoProperties. + +Mon Sep 19 10:55:05 2005 William Otte + + * RACE/Input_Adapters/Base/Input_Adapter.mpc + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc + * RACE/Output_Adapters/Base/Output_Adapter.mpc + * RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc + * RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc + * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc + * RACE/Planner_Manager/Component/Planner_Manager.mpc + * RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc + * RACE/Planners/Base/Planner.mpc + * RACE/Planners/Interface/Planner_Interface.mpc + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc + * RACE/common/RACE_common.mpc + * tools/Config_Handlers/RT-CCM/CLA_Handler.h + * tools/Config_Handlers/RT-CCM/OC_Handler.cpp + * tools/Config_Handlers/RT-CCM/OR_Handler.cpp + * tools/Config_Handlers/RT-CCM/OR_Handler.h + + Misc fuzz fixes. + +Fri Sep 16 09:54:44 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Emulated exception fixes. + +Thu Sep 15 07:29:03 2005 Douglas C. Schmidt + + * TAO/CIAO/examples/Hello/descriptors/NodeManagerMap.dat: Make sure + there's a newline at the end of this file. Thanks to Zachi + Klopman for reporting this. + +Thu Sep 15 11:20:20 2005 CSET William Otte + + + * ciao/Container_Base.cpp + + Fix for compile error on platforms with emulated exceptions. + +Wed Sep 14 13:25:00 CEST 2005 William Otte + + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc + + Fix for a library ordering problem. + +Wed Sep 14 11:18:42 2005 CEST William Otte + + * tools/Config_Handlers/CIAOServerResources.cpp + * tools/Config_Handlers/CIAOServerResources.hpp + + Removed these from the repo to avoid confusion. + + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Ported patches from: + Tue Sep 13 17:18:12 CEST 2005 William Otte + + which were made against the wrong file. Thanks to Gan Deng for + pointing this out. + +Wed Sep 14 13:28:14 2005 Gan Deng + + * examples/Hello/descriptors/run_NodeDaemons.pl + + Modified the relevant path due to the recent CIAO directory + reorganization. + + * examples/Hello/Sender/Sender.idl + * examples/Hello/Sender_exec.cpp + * examples/Hello/starter.cpp + + Added test for "readonly" attribute. + Fixed a bug of setting attribute through command line options + through the "starter" executable. Also, make the default ior + file name to be "Sender.ior" to make it consistent with the + output generated by DAnCE. Thanks Zacki + for reporting these. + + * examples/Hello/step-by-step.html + + Updated the documentation to run the example. + +Tue Sep 13 17:18:12 CEST 2005 William Otte + + * tools/Config_Handlers/CIAOServerResources.hpp + + Fixes for compile errors in: + . Especially strict C++ compilers + . Windows VC71 (hopefully) + +Tue Sep 13 17:05:31 2005 CEST William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + * DAnCE/NodeManager/Node_Manager.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + * ciao/Container_Base.cpp + * ciao/NodeApplication_Impl.cpp + + Folding in some of the error reporting work that I have been + working on for the past couple weeks. Most common deployment + errors are now reported through the plan_launcher. + +Tue Sep 13 16:55:15 CEST 2005 William Otte + + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/PSPE_Handler.cpp + * tools/Config_Handlers/STD_CID_Handler.cpp + + Fixes for compile errors on both: + . 64 bit platforms + . GCC4 + +Tue Sep 13 16:01:35 CEST 2005 William Otte + + * tools/Config_Handlers/XMLSchema/Traversal.hpp + * tools/Config_Handlers/XMLSchema/TypeInfo.hpp + * tools/Config_Handlers/XMLSchema/Types.hpp + * tools/Config_Handlers/XMLSchema/Writer.hpp + * tools/Config_Handlers/XSCRT/Elements.hpp + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp + * tools/Config_Handlers/XSCRT/Parser.hpp + * tools/Config_Handlers/XSCRT/Traversal.hpp + * tools/Config_Handlers/XSCRT/Writer.hpp + * tools/Config_Handlers/XSCRT/XML.hpp + * tools/Config_Handlers/XSCRT/XMLSchema.hpp + + Rolled back Stoyan's changes from the previous commit. The proper + fix for this problem would be to update the include paths in the + affected MPC files, which has the virtue of not breaking + builds on platforms with case-sensitive filesystems. + + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc + + Updated the include path to include the new config handlers directory. + +Mon Sep 12 17:34:47 CDT 2005 Stoyan Paunov + + * tools/Config_Handlers/XMLSchema/Traversal.hpp + * tools/Config_Handlers/XMLSchema/TypeInfo.hpp + * tools/Config_Handlers/XMLSchema/Types.hpp + * tools/Config_Handlers/XMLSchema/Writer.hpp + * tools/Config_Handlers/XSCRT/Elements.hpp + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp + * tools/Config_Handlers/XSCRT/Parser.hpp + * tools/Config_Handlers/XSCRT/Traversal.hpp + * tools/Config_Handlers/XSCRT/Writer.hpp + * tools/Config_Handlers/XSCRT/XML.hpp + * tools/Config_Handlers/XSCRT/XMLSchema.hpp + + Fixed a number of problems related to Will's changes. The XSC_Config_Handler_Tests + project was not compiling. I had the same problem in RepositoryManager. Will had + changed the directory structure, but did not update any of the include paths. + Needless to say there were like 30-40 of those in the XSCRT and XMLSchema directories + +Fri Sep 9 12:35:20 2005 William Otte + + * tools/Config_Handlers/STD_IAD_Handler.cpp + * tools/Config_Handlers/STD_PCD_Handler.cpp + * tools/Config_Handlers/STD_PC_Intf.cpp + + Changed to comform with new refactoring. + +Fri Sep 9 12:32:14 2005 William Otte + + * ciao/CCM_Core.mpc + * ciao/Container_Base.cpp + * ciao/Deployment.idl + * ciao/Deployment_Core.idl + * ciao/Deployment_Data.idl + * ciao/Packaging_Data.idl + + Refactoring to support cidl compilation of deployment structures. + This refactoring should solve compilation errors in the config handlers. + +Wed Sep 7 16:31:12 UTC 2005 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Removed generation of export macro in the typedef of the + template class instantiation that defines a facet servant. + Thanks to Ossama Othman for + pointing out that typedefs need not be exported. + +Tue Sep 6 11:39:15 2005 William Otte + + * ciao/Deployment_Data.idl + + Commented out IDL that is unsupported by CIDLC. + + * RACE + + Added IDL for RACE. + +Tue Sep 6 09:58:12 2005 William Otte + + * examples/Hello/descriptors/run_test.pl + + Modified the script to fix the absolute path to the naming service + with a relative path. + +Fri Sep 2 17:38:31 2005 William Otte + + * performance-tests/Protocols/Controller/Controller.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * performance-tests/Protocols/common/Protocols.mpc + * tests/CIDL/CodeGen/CodeGen.mpc + + Migrated to modern CIAO base projects. + +Fri Sep 2 16:41:08 2005 William Otte + + * performance-tests/Benchmark/Benchmark.mpc + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc + + Migrated to modern CIAO projects. + +Fri Sep 2 15:10:43 2005 William Otte + + * docs/tutorial + + Removed the obsolete hello tutorial. + +Fri Sep 2 15:04:00 2005 William Otte + + * tests/tests.mwc + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc + * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc + * tests/IDL3/Events/Abstract/Abstract.mpc + * tests/IDL3/Events/Regular/Regular.mpc + * tests/IDL3/Homes/Attributes/HomeAttributes.mpc + * tests/IDL3/Homes/Basic/Basic.mpc + * tests/IDL3/Homes/Factory/Factory.mpc + * tests/IDL3/Homes/Finder/Finder.mpc + * tests/IDL3/Homes/Inheritance/Inheritance.mpc + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc + * tests/IDL3/ImpliedIDL/Events/Events.mpc + * tests/IDL3/ImpliedIDL/Homes/Homes.mpc + * tests/IDL3/Lookup/lookup_test.mpc + + Updated to use dnc ciao base project. + + * tests/RTCCM + + Removed this test. + +Thu Sep 1 10:20:48 2005 William Otte + + CIAO Reorganization. Plese see tag before_ciao_reorg + to obtain the old version. + +Wed Aug 31 15:16:23 2005 William Otte + * DAnCE/Config_Handlers/RT-CCM/CB_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/PM_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/TPL_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/TP_Handler.cpp + + Fixes to satisfy a tempramental Borland compiler. + +Wed Aug 31 13:28:46 2005 William Otte + + * DAnCE/Config_Handlers/ADD_Handler.cpp + * DAnCE/Config_Handlers/ADD_Handler.h + * DAnCE/Config_Handlers/IDD_Handler.cpp + * DAnCE/Config_Handlers/IDD_Handler.h + * DAnCE/Config_Handlers/IDREF_Base.cpp + * DAnCE/Config_Handlers/IDREF_Base.h + * DAnCE/Config_Handlers/MDD_Handler.cpp + * DAnCE/Config_Handlers/MDD_Handler.h + * DAnCE/Config_Handlers/STD_CID_Handler.cpp + * DAnCE/Config_Handlers/STD_CID_Handler.h + + Simple refactoring to make the IDREF interface more generic. + + * DAnCE/Config_Handlers/XML_Helper.cpp + * DAnCE/Config_Handlers/XML_Helper.h + + Made empty document creation more generic. + + * DAnCE/Config_Handlers/RT-CCM/CB_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/CB_Handler.h + * DAnCE/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * DAnCE/Config_Handlers/RT-CCM/CIAOServerResources.hpp + * DAnCE/Config_Handlers/RT-CCM/CLA_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/CLA_Handler.h + * DAnCE/Config_Handlers/RT-CCM/OC_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/OC_Handler.h + * DAnCE/Config_Handlers/RT-CCM/OR_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/OR_Handler.h + * DAnCE/Config_Handlers/RT-CCM/PM_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/PM_Handler.h + * DAnCE/Config_Handlers/RT-CCM/PS_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/PS_Handler.h + * DAnCE/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc + * DAnCE/Config_Handlers/RT-CCM/SRD_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/SRD_Handler.h + * DAnCE/Config_Handlers/RT-CCM/TPL_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/TPL_Handler.h + * DAnCE/Config_Handlers/RT-CCM/TP_Handler.cpp + * DAnCE/Config_Handlers/RT-CCM/TP_Handler.h + * DAnCE/Config_Handlers/RT-CCM/input.csr + * DAnCE/Config_Handlers/RT-CCM/test.cpp + + The new RT-CCM handlers. These have yet to be integrated into the + main config_handler path. + + * DAnCE/ciao/CCM_Core.mpc + * DAnCE/ciao/ServerResources.idl + + Updates to the support the RT-CCM Handlers. + + * docs/schema/CIAOServerResources.xsd + + Corrected a few oversights. + +Wed Aug 31 09:49:28 2005 William Otte + + * DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp + + Workaround for a buggy Borland compiler. + +Tue Aug 30 14:33:08 2005 William Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + + Slight handcrafting to remove commas from the end of enumerator lists. + +Tue Aug 30 11:59:14 CDT 2005 William Otte + + * DAnCE/Config_Handlers/IRDD_Handler.h + * DAnCE/Config_Handlers/PCD_Handler.h + + Fixed a class/struct mismatch. + +Tue Aug 30 11:51:32 CDT 2005 William Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + * DAnCE/Config_Handlers/CIAOServerResources.cpp + * DAnCE/Config_Handlers/CIAOServerResources.hpp + * DAnCE/Config_Handlers/Deployment.cpp + * DAnCE/Config_Handlers/Deployment.hpp + * DAnCE/Config_Handlers/ccd.cpp + * DAnCE/Config_Handlers/ccd.hpp + * DAnCE/Config_Handlers/cdd.cpp + * DAnCE/Config_Handlers/cdd.hpp + * DAnCE/Config_Handlers/cdp.cpp + * DAnCE/Config_Handlers/cdp.hpp + * DAnCE/Config_Handlers/cid.cpp + * DAnCE/Config_Handlers/cid.hpp + * DAnCE/Config_Handlers/cpd.cpp + * DAnCE/Config_Handlers/cpd.hpp + * DAnCE/Config_Handlers/iad.cpp + * DAnCE/Config_Handlers/iad.hpp + * DAnCE/Config_Handlers/pcd.cpp + * DAnCE/Config_Handlers/pcd.hpp + * DAnCE/Config_Handlers/toplevel.cpp + * DAnCE/Config_Handlers/toplevel.hpp + + Fixes a large number of compiler warnings in Borland. + +Thu Aug 25 15:26:25 2005 Nanbor Wang + + * DAnCE/ciao/ServerResources.idl: Added the missing + attribute to ORS_ThreadpoolWithLanes struct. Thanks to Will + Otte for catching this. + +Wed Aug 24 20:41:59 UTC 2005 Jeff Parsons + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Removed commented-out code. + +Tue Aug 23 20:09:59 2005 Ossama Othman + + * DAnCE/Old_Config_Handlers/DT_Handler.h: + * DAnCE/RTNodeApplication/RTServer_Impl.h: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Context_Impl_Base.h: + * DAnCE/ciao/NodeApplication_Impl.h: + + Reordered include directives to make sure all necessary + non-dependent names are parsed before the templates that use + them. Addresses g++ 3.4.x or better compile-time errors. + +Tue Aug 23 19:29:12 UTC 2005 Johnny Willemsen + + * DAnCE/DeploymentManager/DeploymentManager.mpc: + Add dummy_label to all projects, this don't build, this is + the fast way to get the scoreboard green. Already one project + had this in the file. + +Mon Aug 22 10:59:18 2005 William Otte + + * DAnCE/DeploymentManager/DeploymentManager.cidl + * DAnCE/DeploymentManager/DeploymentManager.idl + * DAnCE/DeploymentManager/DeploymentManager.mpc + * DAnCE/DeploymentManager/DeploymentManager_Impl.cpp + * DAnCE/DeploymentManager/DeploymentManager_Impl.h + * DAnCE/DeploymentManager/DeploymentManager_exec_export.h + * DAnCE/DeploymentManager/DeploymentManager_stub_export.h + * DAnCE/DeploymentManager/DeploymentManager_svnt_export.h + + Preliminary skeleton for the DeploymentManager. + +Fri Aug 19 07:56:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/Any_Handler.cpp: + * DAnCE/Config_Handlers/DataType_Handler.cpp: + * DAnCE/Old_Config_Handlers/DT_Handler.cpp: + * DAnCE/ciao/ComponentsC.h: + * ciao/ComponentsC.h: + Updated for AnyTypeCode refactoring + +Tue Aug 16 15:16:10 2005 Nanbor Wang + + * docs/schema/CIAOServerResources.xsd: Changed to define most of + the RT policy details with "element"s instead of "attribute"s + since "attribute"s can be optional. Thanks to Will Otte for + pointing this out. + +Tue Aug 16 09:46:45 2005 William Otte + + * DAnCE/Config_Handlers/Config_Handlers.mpc + + Moved some changes in from the branch to correct errors from: + Mon Aug 15 12:03:43 2005 William Otte + +Mon Aug 15 12:03:43 2005 William Otte + + * DAnCE/Config_Handlers/ADD_Handler.cpp + * DAnCE/Config_Handlers/ADD_Handler.h + * DAnCE/Config_Handlers/CCD_Handler.cpp + * DAnCE/Config_Handlers/CCD_Handler.h + * DAnCE/Config_Handlers/CRDD_Handler.h + * DAnCE/Config_Handlers/DP_Handler.cpp + * DAnCE/Config_Handlers/DP_Handler.h + * DAnCE/Config_Handlers/DP_PCD_Handler.cpp + * DAnCE/Config_Handlers/DP_PCD_Handler.h + * DAnCE/Config_Handlers/IDD_Handler.cpp + * DAnCE/Config_Handlers/IDD_Handler.h + * DAnCE/Config_Handlers/IDREF_Base.cpp + * DAnCE/Config_Handlers/ID_Handler.h + * DAnCE/Config_Handlers/IRDD_Handler.cpp + * DAnCE/Config_Handlers/MDD_Handler.cpp + * DAnCE/Config_Handlers/MDD_Handler.h + * DAnCE/Config_Handlers/PCD_Handler.cpp + * DAnCE/Config_Handlers/PCD_Handler.h + * DAnCE/Config_Handlers/PSPE_Handler.cpp + * DAnCE/Config_Handlers/Req_Handler.cpp + * DAnCE/Config_Handlers/XML_Helper.cpp + * DAnCE/Config_Handlers/XML_Helper.h + * DAnCE/Config_Handlers/XercesString.cpp + * DAnCE/Config_Handlers/XercesString.h + * DAnCE/Config_Handlers/test.cpp + + Checked in support for IDL->XSC->XML mapping. Thanks to Lucas + Seibert for completing this work. + +Mon Aug 15 00:01:01 2005 Boris Kolpackov + + * CIDLC/cidlc.cpp: Made ErrorHandler auto-detach itself + from the stream when it is destroyed. This fixes the + segmentation fault on Solaris in libstdc++ termination code. + +Wed Aug 10 09:39:41 2005 William Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + * DAnCE/Config_Handlers/CIAOServerResources.cpp + * DAnCE/Config_Handlers/CIAOServerResources.hpp + * DAnCE/Config_Handlers/Deployment.cpp + * DAnCE/Config_Handlers/Deployment.hpp + * DAnCE/Config_Handlers/ccd.cpp + * DAnCE/Config_Handlers/ccd.hpp + * DAnCE/Config_Handlers/cdd.cpp + * DAnCE/Config_Handlers/cdd.hpp + * DAnCE/Config_Handlers/cdp.cpp + * DAnCE/Config_Handlers/cdp.hpp + * DAnCE/Config_Handlers/cid.cpp + * DAnCE/Config_Handlers/cid.hpp + * DAnCE/Config_Handlers/cpd.cpp + * DAnCE/Config_Handlers/cpd.hpp + * DAnCE/Config_Handlers/iad.cpp + * DAnCE/Config_Handlers/iad.hpp + * DAnCE/Config_Handlers/pcd.cpp + * DAnCE/Config_Handlers/pcd.hpp + * DAnCE/Config_Handlers/toplevel.cpp + * DAnCE/Config_Handlers/toplevel.hpp + + Regenerated with the latest CVS-head version of XSC. These support + a couple improvements that will aid in optimizing the config + handlers. + +Tue Aug 9 11:55:13 2005 Ming Xiong + + * docs/imgs/component-basic.png + * docs/imgs/CCM.vsd + + Updated CCM diagram to fix a interface naming error. + + +Tue Aug 9 10:02:13 2005 Douglas C. Schmidt + + * DAnCE/ComponentPackager/README.html: Improved the + documentation to point to the right directory for the Quoter + example. Thanks to Aldo Texier for + reporting this. + +Tue Aug 9 13:11:04 UTC 2005 Jeff Parsons + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + + Updated dependencies to reflect the recent name change from + NodeDaemon_stub to NodeManager_stub. + + * DAnCE/RepositoryManager/Repository_Manager.cpp: + + Updated identifier names to match the change from NodeDaemon + to ModeManager. + +Mon Aug 08 22:02:43 2005 Gan Deng + + * docs/EnvVars.html + * docs/index.html + * docs/Trace.html + * docs/imgs/DAnCE-Dynamic.png + * docs/imgs/DAnCE-Dynamic.sxd + + Beefed up the CIAO documentation page. These files are + checked in on behalf of Ming. Thanks Friedhelm Wolf + for contributing the DAnCE + interaction diagram. + +Mon Aug 8 18:50:36 2005 William Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeManager/NAM_Map.h + * DAnCE/NodeManager/NodeManager.idl + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.inl + * DAnCE/NodeManager/NodeManager_stub_export.h + * DAnCE/NodeManager/Node_Manager.cpp + * DAnCE/NodeManager/README + * DAnCE/RTNodeApplication/README + + Changed all references to Node_Daemon to NodeManager to avoid + confusion, since these phrases are used interchangeably. + + * DAnCE/NodeManager/NodeDaemon.idl + * DAnCE/NodeManager/NodeDaemon.mpc + * DAnCE/NodeManager/NodeDaemon_Impl.cpp + * DAnCE/NodeManager/NodeDaemon_Impl.h + * DAnCE/NodeManager/NodeDaemon_Impl.inl + * DAnCE/NodeManager/NodeDaemon_stub_export.h + * DAnCE/NodeManager/Node_Daemon.cpp + + Removed these files to support the change above. + + * DAnCE/examples/BasicSP/descriptors/basicNodeDaemon.pl + * DAnCE/examples/Display/descriptors/basicNodeDaemon.pl + * DAnCE/examples/Hello/step-by-step.html + * DAnCE/examples/Hello/descriptors/run_NodeDaemons.pl + * DAnCE/examples/Hello/descriptors/run_test.pl + * DAnCE/examples/Hello/descriptors/run_test_without_ns.pl + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl + + Updated these scripts to call NodeManager instead of NodeDaemon. + +Fri Aug 5 11:45:13 2005 William Otte + + * DAnCE/Config_Handlers/CIAOServerResources.cpp + * DAnCE/Config_Handlers/CIAOServerResources.hpp + + XSC code generated from CIAOServerResources.xsd for RT-CCM + properties. + + * docs/schema/CIAOServerResources.xsd + + Fixed some namespace errors. + +Fri Aug 05 08:00:08 2005 Simon Massey + + * CIAO version 0.4.7 released. + +Wed Aug 3 12:34:12 UTC 2005 Johnny Willemsen + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + Corrected order of the libraries to resolve static link + errors + +Tue Aug 2 08:36:40 2005 William Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Possiible fix for borlan build problem. + +Mon Aug 01 16:01:43 2005 Ming Xiong + + * ChangeLog + + Fixed several incorrect checkin date + +Mon Aug 01 14:55:43 2005 Ming Xiong + + * DAnCE/new_RepositoryManager/RepositoryManager_Impl.cpp + + Fixed a C4715 warning under MSVC7.1 + +Mon Aug 1 19:39:30 UTC 2005 Jeff Parsons + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Removed duplicate 'after' and 'libs' items, and added the + new export macro definition file (see below) to + Header_Files. + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + + Added export macro to class declaration and include of export + macro definitin file. + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h: + + New file to define the export macro for the Plan_Launcher_Impl + library. + +Sun Jul 31 21:56:43 2005 Ming Xiong + + * DAnCE/new_RepositoryManager/Options.h + + Improved documentation to meet the requirement of Doxygen + +Sun Jul 31 21:45:43 2005 Ming Xiong + + * DAnCE/new_RepositoryManager/RMadmin.cpp + + Fixed C4101 warnings in MSVC + +Sun Jul 31 21:26:43 2005 Ming Xiong + + * DAnCE/new_RepositoryManager/RMadmin.cpp + + Updated RMadmin.cpp to merge latest changes + +Fri Jul 29 15:02:43 2005 Gan Deng + + * DAnCE/examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp + * DAnCE/examples/Hello/descriptors/run_test_without_ns.pl + + Added a flattened deployment plan and test script which + doesn't use naming service. + + * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp + + Documented the above another available test in the file. + +Fri Jul 29 09:30:43 2005 Nishanth Shanakran + + * NEWS: + + Added a brief description about Resource Allocation and Control + Engine (RACE). + +Fri Jul 29 06:56:12 UTC 2005 Johnny Willemsen + + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc: + Fixed fuzz error + +Thu Jul 28 23:00:11 2005 Ming Xiong + + * DAnCE/new_RepositoryManager/Options.cpp + * DAnCE/new_RepositoryManager/Options.h + * DAnCE/new_RepositoryManager/README.txt + * DAnCE/new_RepositoryManager/RepositoryManager.cpp + * DAnCE/new_RepositoryManager/RepositoryManager.idl + * DAnCE/new_RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/new_RepositoryManager/RepositoryManager_Impl.h + * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.h + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc + + Checked in the changes to new_RepositoryManager + +Fri Jul 29 03:52:11 2005 William Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Made is such that Plan_Launcher_Impl library gets generated + and installed. + +Wed Jul 28 15:18:14 2005 Ming Xiong + + * docs\schema\Modified_Deployment.xsd + + Change the XML element order of IAD to conform to spec + +Wed Jul 27 19:20:14 2005 Gan Deng + + * NEWS + + Added news about naming service integration. + +Wed Jul 27 07:40:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/cid.cpp: + * DAnCE/Config_Handlers/cpd.cpp: + * DAnCE/Config_Handlers/iad.cpp: + Explicitly initialise base class + +Wed Jul 27 07:35:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/STD_IAD_Handler.h: + Fixed fuzz error + +Tue Jul 26 21:22:45 UTC 2005 Jeff Parsons + + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + + Added 'CIDL_' prefix to the scoped name of the exec impl class's + base class, in the impl class declaration inheritance list. This + file was overlooked when making similar changes to other exec + impl classes in CIAO tests and examples. + +Mon Jul 26 13:54:12 2005 Ming Xiong + + * docs/schema/cid.xsd + * docs/schema/cpd.xsd + * docs/schema/iad.xsd + * docs/schema/Modified_Deployment.xsd + + Added for cid/cpd/iad(.xsd) and changed Modified_Deployment.xsd + accordingly.We will need href attribute in the repository manager process. + + * DAnCE/Config_Handlers/iad.cpp + * DAnCE/Config_Handlers/iad.hpp + * DAnCE/Config_Handlers/cid.cpp + * DAnCE/Config_Handlers/cid.hpp + * DAnCE/Config_Handlers/cpd.cpp + * DAnCE/Config_Handlers/cpd.hpp + + Regenerated xsc codes for updated schemas in CIAO/docs/schema/ + + * DAnCE/Config_Handlers/STD_CID_Handler.cpp + * DAnCE/Config_Handlers/STD_CID_Handler.h + * DAnCE/Config_Handlers/STD_CPD_Handler.cpp + * DAnCE/Config_Handlers/STD_CPD_Handler.h + * DAnCE/Config_Handlers/STD_IAD_Handler.cpp + * DAnCE/Config_Handlers/STD_IAD_Handler.h + * DAnCE/Config_Handlers/STD_PC_Intf.cpp + * DAnCE/Config_Handlers/STD_PC_Intf.h + * DAnCE/Config_Handlers/STD_PCD_Handler.cpp + * DAnCE/Config_Handlers/STD_PCD_Handler.h + * DAnCE/Config_Handlers/Config_Handlers.mpc + + Added new handlers for mapping Config_Handlers::PackageConfiguration to Deployment:PackageConfiguration. + Updated Config_Handlers.mpc accordingly + +Tue Jul 26 12:53:12 UTC 2005 Johnny Willemsen + + * DAnCE/new_RepositoryManager/RMadmin.cpp: + Fixed vc71 warnings + +Tue Jul 26 10:53:12 UTC 2005 Johnny Willemsen + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + Added some missing CORBA::string_dup calls, this fixes these + tests on Windows + +Tue Jul 26 07:32:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeManager/NodeDaemon_Impl.{h,cpp}: + Fixed warning and use doxygen comment style + +Mon Jul 25 22:14:20 UTC 2005 Jeff Parsons + + * CIDLC/SizeTypeCalculator.cpp: + + Fixed visitor to handle types declared inside the scope of + an interface, valuetype, or home. Thanks to Friedhelm Wolf + for reporting a CIDL compiler + problem with a struct declared inside an interface. + +Mon Jul 25 18:40:12 UTC 2005 Johnny Willemsen + + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + Corrected NodeApplication path + +Mon Jul 25 08:39:12 UTC 2005 Johnny Willemsen + + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + Made these tests independent of setting of CIAO_ROOT + +Sun Jul 24 07:45:19 2005 Gan Deng + + * DAnCE/NodeManager/NodeDaemon_Impl.cpp + + Fixed an exception emulation warning in Debian_Full_Reactor + build. + +Sun Jul 24 07:40:19 2005 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + + Enhanced error output information a little bit by + adding process ID and thread ID. + + * DAnCE/ciao/Container_Impl.cpp + + Fixed exception emulation warnings in Debian_Full_Reactor + build. + +Sun Jul 24 01:19:21 2005 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + + Fixed a bug (memory problem) in the plan_launcher which caused + the "tearing down" assembly failure. + + * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp + * DAnCE/examples/BasicSP/descriptors/flattened_deploymentplan.cdp + + Added a UUID tag to the flattened deployment plan. + +Sat Jul 23 23:11:21 2005 Gan Deng + + * DAnCE/tests/Minimum/Receiver/Receiver.mpc + * DAnCE/tests/Minimum/Sender/Sender.mpc + + Modified shared library names to fix some linking erros + on build scoreboard. + + * DAnCE/examples/Hello/descriptors/run_test.pl + + Fixed the script so naming service could be started + correctly. + + * DAnCE/examples/Hello/step-by-step.html + + Simple instruction about using naming service. + +Sat Jul 23 14:53:22 2005 Jaiganesh B + + * DAnCE/ciao/Port_Activator.cpp: + * DAnCE/ciao/Port_Activator.h: + * DAnCE/ciao/Servant_Activator.cpp: + * DAnCE/ciao/Servant_Impl_Base.cpp: + + Added a method in Port_Activator to set the name of + port activator. The port activator is used to activate + the ports of the component. + + Fixed a incorrect delete call in the update_port_activator + function in Servant_Activator.cpp. This will fix the core + dump in the CIAO tests. + + Modified the calling sequence to deactivate ports when we + deactivate the component. + +Sat Jul 23 12:23:12 UTC 2005 Johnny Willemsen + + * DAnCE/ciao/Servant_Impl_Base.cpp: + Added several missing ACE_TRY_CHECK macros. + +Mon Jul 18 22:31:12 2005 Gan Deng + + * DAnCE/ciao/Container_Impl.cpp + + Fixed some compilation error about using NamingContextEx. + + * DAnCE/examples/Hello/descriptors/run_test.pl + + Fixed this script so naming service will be started + explicitly. Thanks Simon McQueen + for pointing the error. + +Mon Jul 18 22:31:12 2005 Gan Deng + + * DAnCE/ciao/Container_Impl.cpp + * DAnCE/ciao/Container_Impl.h + * DAnCE/ciao/CCM_Core.mpc + * DAnCE/ciao/NodeApplication_Impl.cpp + + Added support for registering components with naming service. + A system deployer could config such capability through XML tag + + * DAnCE/examples/BasicSP/descriptors/flattened_deploymentplan.cdp + * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp + + Added a couple of examples for using naming service by adding + some tag to the deployment plan descriptor. + +Fri Jul 15 23:50:12 2005 Gan Deng + + * NEWS: + Updated the NEWS file to include the result of our latest + discussion/plan about DAnCE. + +Fri Jul 15 10:02:12 UTC 2005 Johnny Willemsen + + * DAnCE/NodeManager/NAM_Map.h: + Fixed fuzz error + +Tue Jul 12 00:03:57 2005 Ming Xiong + + * docs/tutorials/Quoter/Simple/README.html + + Updated some directory information in this file since the quoter example has been + moved to new directory. + +Mon Jul 11 11:44:57 2005 Ming Xiong + + * TAO/CIAO/DAnCE/examples/Quoter/README.html + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.cidl + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.cpp + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.idl + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.mpc + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_exec.cpp + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_exec.h + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_exec_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_stub_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_svnt_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.cidl + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.cpp + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.idl + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.mpc + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_exec.h + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_exec_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_stub_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_svnt_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base.idl + * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base.mpc + * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base_stub_export.h + * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base_svnt_export.h + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker.ccd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker.cid + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker.cpd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker_Exec.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker_Stub.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker_Svnt.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Deployment.xsd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor.ccd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor.cid + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor.cpd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor_Exec.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor_Stub.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor_Svnt.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Domain.cdd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Libraries.iad + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Modified_Deployment.xsd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.cdp + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.cid + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.cpd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.dat + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.pcd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/XMI.xsd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/flattened_deploymentplan.cdp + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/package.tpd + * TAO/CIAO/DAnCE/examples/Quoter/descriptors/runNodeDaemons.pl + * TAO/CIAO/DAnCE/examples/Quoter/images/quoter.jpg + + Removed Quoter example in DAnCE/examples/ directory to avoid duplicate. The orignal + example could be found in CIAO/docs/tutorials/Quoter/Simple. + +Fri Jul 8 17:42:57 2005 Ming Xiong + + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_svnt_export.h + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h + * docs/tutorials/Quoter/Simple/Broker/Broker.mpc + * docs/tutorials/Quoter/Simple/Broker/Broker.idl + * docs/tutorials/Quoter/Simple/Broker/Broker.cidl + * docs/tutorials/Quoter/Simple/Broker/Broker.cpp + * docs/tutorials/Quoter/Simple/Broker/Broker_exec.h + * docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp + * docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h + * docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h + * docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h + * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc + * docs/tutorials/Quoter/Simple/Distributor/Distributor.idl + * docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl + * docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp + * docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h + * docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h + * docs/tutorials/Quoter/Simple/descriptors/Broker.ccd + * docs/tutorials/Quoter/Simple/descriptors/Broker.cid + * docs/tutorials/Quoter/Simple/descriptors/Broker.cpd + * docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad + * docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad + * docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad + * docs/tutorials/Quoter/Simple/descriptors/Deployment.xsd + * docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd + * docs/tutorials/Quoter/Simple/descriptors/Distributor.cid + * docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad + * docs/tutorials/Quoter/Simple/descriptors/Domain.cdd + * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp + * docs/tutorials/Quoter/Simple/descriptors/Libraries.iad + * docs/tutorials/Quoter/Simple/descriptors/Modified_Deployment.xsd + * docs/tutorials/Quoter/Simple/descriptors/package.tpd + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl + * docs/tutorials/Quoter/Simple/descriptors/Stock.cdp + * docs/tutorials/Quoter/Simple/descriptors/Stock.cid + * docs/tutorials/Quoter/Simple/descriptors/Stock.cpd + * docs/tutorials/Quoter/Simple/descriptors/Stock.dat + * docs/tutorials/Quoter/Simple/descriptors/Stock.pcd + * docs/tutorials/Quoter/Simple/descriptors/XMI.xsd + + Created a new directory tutorials to hold multiple tutorial examples, added quoter + to this directory as simple quoter example. Will add a multiple receptacle quoter + example soon. + + +Fri Jul 8 17:13:57 2005 Ming Xiong + + * DAnCE/examples/Quoter/descriptors/flattened_deploymentplan.cdp + + Updated the plan so that it includes the base libraries as artifact. This + will help ComponentPackager to wrap up everything in the archive. + + +Fri Jul 8 15:49:57 2005 Ming Xiong + + * DAnCE/ComponentPackager/Base_Packager.h + * DAnCE/ComponentPackager/ComponentPackager.mpc + * DAnCE/ComponentPackager/CPK_Packager.cpp + * DAnCE/ComponentPackager/Package.xsd + * DAnCE/ComponentPackager/pdl.cpp + * DAnCE/ComponentPackager/pdl.hpp + * DAnCE/ComponentPackager/PDL_Handler.cpp + * DAnCE/ComponentPackager/PDL_Handler.h + * DAnCE/ComponentPackager/README.html + * DAnCE/ComponentPackager/Sample.pdl + + Updated ComponentPackager to support XSC, eliminating the coupling with + Old_Config_Handlers.Move the schema for .pdl file from Deployment.xsd to + Package.xsd so that it's independently helpful by itself. + +Fri Jul 8 09:43:57 2005 William Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + + Fixed a compile error on Debian Core. + +Thu Jul 7 23:38:32 UTC 2005 Gan Deng + + * docs/index.html + + Modofied this page a little bit to include our work in DAnCE. + +Wed Jul 6 17:21:58 UTC 2005 Jeff Parsons + + * DAnCE/NodeManager/NodeDaemon_Impl.cpp: + + Fixed incorrect syntax in ACE_THROW macro. + +Tue Jul 5 11:16:44 2005 William Otte + + * DAnCE/NodeManager/NAM_Map.h + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + + Fixed some misc fuzz errors. + +Tue Jul 5 16:01:39 UTC 2005 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + + Small change to the checkin of + + Mon Jul 4 22:50:17 UTC 2005 Jeff Parsons + + to emit an error message when attempting to set a wstring + attribute from a CCM property value, since wstrings are + not yet supported for this activity. + +Mon Jul 4 22:50:17 UTC 2005 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Created a new code emitter that knows which types CIAO + supports as component attribute types (basic types) and + which it does not (everything else). In the former case, + when DAnCE is assigning attribute values from XML properties - + in set_attributes () - it emits the usual code delegating + the assignment to the specific attribute mutator method + based on a string compare of the given attribute name to + the known attribute names of that component. In the latter + case, it emits an error message, stating that this particular + IDL kind is not supported by CIAO as a component attribute + type. Thanks to Sunil Rottoo for + pointing out that trying to set the value of an unsupported + component attribute type from a DnC property value in XML + caused a crash. + +Mon Jul 4 09:15:12 UTC 2005 Johnny Willemsen + + * CIDLC/Literals.cpp: + * CIDLC/Literals.h:pp: + * CIDLC/ServantHeaderGenerator.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeManager/NodeDaemon_Impl.h: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/ciao/Container_Impl.h: + * DAnCE/ciao/Home_Servant_Impl_T.h: + * DAnCE/ciao/NodeApp_CB_Impl.h: + * DAnCE/ciao/NodeApplication_Impl.h: + * DAnCE/ciao/Servant_Impl_T.h: + * DAnCE/ciao/StandardConfigurator_Impl.h: + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h: + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h: + * ciao/ComponentInstallation_Impl.h: + * ciao/ComponentServer_Impl.h: + * ciao/Container_Impl.h: + * ciao/HomeRegistrar_i.h: + * ciao/Home_Servant_Impl_T.h: + * ciao/Servant_Impl_T.h: + * ciao/ServerActivator_Impl.h: + * ciao/StandardConfigurator_Impl.h: + * docs/templates/CIAO_Glue_Session_Template.h: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay_svnt.h: + * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.h: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.h: + * performance-tests/Benchmark/LatencyTest.h: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.h: + * tools/Assembly_Deployer/Assembly_Impl.h: + * tools/Assembly_Deployer/Assembly_Service_Impl.h: + * tools/Daemon/Daemon_Impl.h: + * tools/Simple_Component_Server/Simple_Server_i.h: + All servants are reference counted by default, no need anymore to + derive the servant from RefCountServantBase + +Sat Jul 2 12:16:49 2005 Cassia Tatibana + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeDaemon_Impl.cpp: + + Added CIAO_TRACE messages. + +Fri Jul 1 08:42:27 2005 William Otte + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeManager/NodeDaemon_Impl.cpp + + Fixed compile errors with emulated exceptions turned on. + +Thu Jun 30 23:34:40 UTC 2005 Jeff Parsons + + * DAnCE/tests/Minimum/Receiver/Receiver_exec.cpp: + * DAnCE/tests/Minimum/Receiver/Receiver_exec.h: + * DAnCE/tests/Minimum/Sender/Sender_exec.cpp: + * DAnCE/tests/Minimum/Sender/Sender_exec.h: + + More overlooked changes to exec files corresponding to + CIDL compiler code generation changes of + + Wed Jun 22 23:20:04 UTC 2005 Jeff Parsons + +Thu Jun 30 12:36:06 2005 William Otte + + * DAnCE/Plan_Launcher/DAM_Map.cpp + * DAnCE/Plan_Launcher/DAM_Map.h + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Added DAM_Map to the Plan_Launcher directory, as make wouldn't + handle the relative reference properly. + +Thu Jun 30 09:29:24 2005 William Otte + + * DAnCE/new_RepositoryManager/RMadmin.cpp + * DAnCE/new_RepositoryManager/RepositoryManager.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.h + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h + + Fixed Doxygen documentation tags, fixed some indenting, + removed tabs. + +Thu Jun 30 09:59:17 2005 William Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + + Factored out the plan launcher capability into a shared library so + applications can use its functionality. + +Thu Jun 30 04:33:35 2005 ming xiong + + * DAnCE/ComponentPackager/Base_Packager.h + * DAnCE/ComponentPackager/CPK_Packager.cpp + * DAnCE/ComponentPackager/CPK_Packager.h + * DAnCE/ComponentPackager/PDL_Handler.cpp + * DAnCE/ComponentPackager/PDL_Handler.h + * DAnCE/ComponentPackager/Base_Packager.cpp + + Added a release operation for destructor of PDL_Handler;Changed the + definition of input parameter for CPK_Packager::createPackager to const + to indicate it can not be changed + +Thu Jun 30 00:37:35 EDT 2005 Stoyan Paunov + + * DAnCE/new_RepositoryManager/RMadmin.cpp + * DAnCE/new_RepositoryManager/RepositoryManager.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.h + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h + + removed the "@file" comments which apparently confuse Doxygen. + + +Wed Jun 29 17:00:57 2005 Cassia Tatibana + + * DAnCE/ExecutionManager/DAM_Map.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + + Added CIAO_TRACE messages. + +Wed Jun 29 16:38:42 2005 Ming Xiong + + * DAnCE/ComponentPackager/Base_Packager.h + * DAnCE/ComponentPackager/CPK_Packager.h + * DAnCE/ComponentPackager/CPK_Packager.h + + Changed a couplfe of places to meet the Doxygen test and TChar test for + bin/fuzz.pl + +Wed Jun 29 16:28:52 2005 William Otte + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeManager/NAM_Map.cpp + * DAnCE/NodeManager/NAM_Map.h + * DAnCE/NodeManager/NodeDaemon.mpc + * DAnCE/NodeManager/NodeDaemon_Impl.cpp + * DAnCE/NodeManager/NodeDaemon_Impl.h + * DAnCE/NodeManager/Node_Daemon.cpp + * DAnCE/ciao/Deployment.idl + + Merged dance_multiple_assemblies to main. This merge + contains code necessary to be able to deploy multiple assemblies + into a single NodeManager. + +Wed Jun 29 18:09:11 UTC 2005 Jeff Parsons + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Added check for successful opening of target file, which prevents + a crash when the file open is unsuccessful, for example when + write permissions are denied in the directory. Thanks to Will + Otte for pointing out the problem. + +Tue Jun 28 08:55:12 EDT 2005 Ming Xiong + + * DAnCE/ComponentPackager/Base_Packager.cpp + * DAnCE/ComponentPackager/Base_Packager.h + * DAnCE/ComponentPackager/CPK_Packager.cpp + * DAnCE/ComponentPackager/CPK_Packager.h + * DAnCE/ComponentPackager/ComponentPackager.mpc + * DAnCE/ComponentPackager/Component_Packager.cpp + * DAnCE/ComponentPackager/Modified_Deployment.xsd + * DAnCE/ComponentPackager/PDL_Handler.cpp + * DAnCE/ComponentPackager/PDL_Handler.h + * DAnCE/ComponentPackager/README.html + * DAnCE/ComponentPackager/Sample.pdl + * DAnCE/ComponentPackager/XercesString.cpp + * DAnCE/ComponentPackager/XercesString.h + + Added the files implementing ComponentPackager, for details + please read README.html + +Tue Jun 28 01:03:12 EDT 2005 Stoyan Paunov + + * TAO/CIAO/DAnCE/new_RepositoryManager/RMadmin.cpp + * TAO/CIAO/DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + * TAO/CIAO/DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp + + removed the _O_* flags to ACE_OS::open (); + +Mon Jun 27 16:25:52 UTC 2005 Jeff Parsons + + * DAnCE/examples/Swapping/Sender/Sender_exec.cpp: + + Fixed cut-and-paste error. + +Mon Jun 27 07:04:01 2005 Chad Elliott + + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc: + * DAnCE/new_RepositoryManager/README.txt: + + Switch to using the existing zlib and zzip base projects. + +Sun Jun 26 23:53:23 EDT 2005 Stoyan Paunov + + * DAnCE/new_RepositoryManager/Modified_Deployment.xsd + * DAnCE/new_RepositoryManager/Options.cpp + * DAnCE/new_RepositoryManager/Options.h + * DAnCE/new_RepositoryManager/README.txt + * DAnCE/new_RepositoryManager/RMadmin.cpp + * DAnCE/new_RepositoryManager/RepositoryManager.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.h + * DAnCE/new_RepositoryManager/new_RepositoryManager.idl + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h + * DAnCE/new_RepositoryManager/packages/inconsistent.cpk + * DAnCE/new_RepositoryManager/packages/package.cpk + + Added these files to the head. The files are implementing the repository + manager. + + * DAnCE/new_RepositoryManager/Modified_Deployment.xsd + needed for the retrievePlan function that retrieves the Deployment plan + + * DAnCE/new_RepositoryManager/Options.cpp + * DAnCE/new_RepositoryManager/Options.h + options class for the RMadmin.cpp + + * DAnCE/new_RepositoryManager/README.txt + + * DAnCE/new_RepositoryManager/RMadmin.cpp + a sample client program. You can use it as an example on how to use the RM + + * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/new_RepositoryManager/ZIP_Wrapper.h + The ZIP Wrapper class that allows read access to ZIP packages and CCM packages + that have the cpk extension. + + * DAnCE/new_RepositoryManager/RepositoryManager.cpp + * DAnCE/new_RepositoryManager/new_RepositoryManager.idl + * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp + * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h + The Repository Manager implementation files + + * DAnCE/new_RepositoryManager/packages/inconsistent.cpk + * DAnCE/new_RepositoryManager/packages/package.cpk + couple of sample packages that I created manually to test the RM. + + +Fri Jun 24 14:36:02 2005 Cassia Tatibana + + * DAnCE/ciao/CIAO_common.h: + + Added definition for CIAO_TRACE. + +Fri Jun 24 14:21:31 UTC 2005 Jeff Parsons + + * docs/tutorial/Hello/hello_exec.cpp: + * docs/tutorial/Hello/hello_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/Sender_exec.h: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.h: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.h: + * tests/RTCCM/DiffServ/Receiver/Receiver_exec.cpp: + * tests/RTCCM/DiffServ/Receiver/Receiver_exec.h: + * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp: + * tests/RTCCM/DiffServ/Sender/Sender_exec.h: + + More fixes to hand-written executor code to bring the file up + to date with the recent changes in generated code. These were + overlooked in + + Wed Jun 22 23:20:04 UTC 2005 Jeff Parsons + +Wed Jun 22 23:20:04 UTC 2005 Jeff Parsons + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * DAnCE/examples/Display/NavDisplay/NavDisplay_exec.h: + * DAnCE/examples/Display/RateGen/RateGen_exec.h: + * DAnCE/examples/Hello/Receiver/Receiver_exec.cpp: + * DAnCE/examples/Hello/Receiver/Receiver_exec.h: + * DAnCE/examples/Hello/Sender/Sender_exec.cpp: + * DAnCE/examples/Hello/Sender/Sender_exec.h: + * DAnCE/examples/Quoter/Broker/Broker_exec.cpp: + * DAnCE/examples/Quoter/Broker/Broker_exec.h: + * DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp: + * DAnCE/examples/Quoter/Distributor/Distributor_exec.h: + * DAnCE/examples/Swapping/Receiver/Receiver_exec.cpp: + * DAnCE/examples/Swapping/Receiver/Receiver_exec.h: + * DAnCE/examples/Swapping/Sender/Sender_exec.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec_1.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec_2.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + * docs/releasenotes/index.html: + + Eliminated generation of the CIAO_GLUE_-prefixed namespace + and replaced it with a namespace constructed from the + composition local name and a CIDL_ prefix. Whereas the + previos namespace was always at global scope, the new one + will be generated inside namespaces mapped from IDL module + declarations, if the composition is declared inside any. + These changes were motivated by an example sent in by + Will Otte , where the composition + was declared inside several nested modules, and the generated + code would not compile. The new namespace encloses + + - the component servant + - the home servant + - the facet servants, if any + - the executor interface in the executor IDL file + - optionally generated executor impl classes + + Minor changes were required to existing executor impl + files as a result of the changes to generated code. + +Wed Jun 22 10:59:00 2005 Gary Maxey + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp + Updated visitor for valuebox support. + +Mon Jun 20 18:10:12 UTC 2005 Johnny Willemsen + + * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/MapView_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel_moc.cpp: + Removed these files, these are generated and shouldn't be in the + archive + +Mon Jun 20 09:29:00 2005 Gary Maxey + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h + Add visitor for valuebox support. + +Sun Jun 19 20:18:50 2005 Ming Xiong + + * NEWS: + + Updated NEWS on upcoming support for Component Packaging + +Thu Jun 16 21:46:10 2005 Gan Deng + + * DAnCE/examples/Display/descriptors/Modified_Deployment.xsd + * DAnCE/examples/Quoter/descriptors/Modified_Deployment.xsd + * docs/schema/Modified_Deployment.xsd + + Modified the element type + to allow having unbounded number of elements. + Thanks Will Chai to report this problem. + +Wed Jun 15 14:46:00 2005 Gautam Thaker + + * DAnCE/examples/Hello/step-by-step.html: + + Fixed a typo regarding name of script "run_NodeDaemons.pl" and + one other sentence fragement. + +Mon Jun 13 13:44:41 2005 Emre Turkay + + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + + Fixed a typo. + +Thu Jun 4 14:36:00 UTC 2005 Ming Xiong + + * DAnCE/examples/Quoter/Distributor/Distributor_exec.h + * DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp + + Fixed a virtual hiding warning reported on WinXP_BCB6_Pro_Dynamic_Debug + +Thu Jun 9 09:31:28 2005 Simon McQueen + + * NEWS: + + Updated with late release note submissions. + +Wed Jun 08 08:50:35 2005 Simon McQueen + + * CIAO version 0.4.6 released. + +Wed Jun 8 11:21:50 2005 Simon McQueen + + * NEWS: + + Updated with release note entries. + +Mon Jun 6 12:33:16 2005 Simon McQueen + + * DAnCE/examples/Display/GPS/GPS.mpc: + + Added HUDisplay_DnC_svnt to after tag for project GPS_DnC_svnt + to fix build error on BCB 6 dynamic build. + + +Thu Jun 2 22:56:11 UTC 2005 Gan Deng + + * DAnCE/examples/Quoter/README.html + + Added a link to the CoSMIC quoter tutorial page hosted by + Ming Xiong. + + * NEWS + + Updated NEWS file. + +Tue May 31 22:46:06 UTC 2005 Jeff Parsons + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + + Eliminated unused arguments. + +Mon May 30 15:22:16 2005 Emre Turkay + + * DAnCE/Config_Handlers/XML_File_Intf.h: + * DAnCE/Config_Handlers/DP_Handler.h: + + auto_ptr is changed with ACE_Auto_Ptr, auto_ptr does not have + reset in VC6. + +Mon May 30 17:59:28 UTC 2005 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + + Fixed incorrect code generation in *_svnt.cpp file for + attribute assignment of sequence types. Thanks to Sunil Rottoo + for reporting the problem. + +Mon May 30 12:19:42 2005 Jaiganesh B + + * DAnCE/ciao/Port_Activator_T.cpp: + * DAnCE/ciao/Servant_Activator.cpp: + * DAnCE/ciao/Servant_Impl_Base.cpp: + + Made use of ACE_ENV macros to fix Debian Full Reactor + build errors. + +Fri May 27 23:35:23 2005 Jaiganesh B + + * DAnCE/ciao/Container_Impl.cpp: + * DAnCE/ciao/Container_Impl.h: + * DAnCE/ciao/Home_Servant_Impl_T.cpp: + * DAnCE/ciao/Home_Servant_Impl_T.h: + + Changed the structure of the utility maps that maintain + the component references, to use "_var" instead of "_ptr" + in order to facilitate effective memory destructions. + +Fri May 27 20:26:33 2005 Emre Turkay + + * CCF/CCF/CCF.sln: + * CCF/Example/Example.sln: + * CIDLC/CIDLC.sln: + * CCF/CCF/CIDL/CIDL.vcproj: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + * CCF/CCF/CompilerElements/CompilerElements.vcproj: + * CCF/CCF/IDL2/IDL2.vcproj: + * CCF/CCF/IDL3/IDL3.vcproj: + * CCF/Example/CIDL/LocalExecutorMapping/LocalExecutorMapping.vcproj: + * CCF/Example/CodeGenerationKit/Indentation/IDL/IDL.vcproj: + * CIDLC/CIDLC.vcproj: + + Deleted MSVC solution and project files, these are generated by the + mwc. + +Fri May 27 13:41:20 2005 Jaiganesh B + + * DAnCE/ciao/Port_Activator.h: + * DAnCE/ciao/Port_Activator_T.cpp: + * DAnCE/ciao/Port_Activator_T.h: + * DAnCE/ciao/Servant_Activator.cpp: + * DAnCE/ciao/Servant_Impl_Base.cpp: + + Added support for deactivating facets and event consumers + when a component is getting deactivated. This fixes + couple of memory leaks in the DAnCE deployment scenarios. + + +Thu May 26 22:55:26 2005 Jaiganesh B + + * DAnCE/ciao/Servant_Impl_Base.cpp: + + Added code to deactivate facets when component + is getting removed. + +Thu May 26 20:41:04 2005 Jaiganesh B + + * DAnCE/ciao/Home_Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + + Added support for the component servants to inherit + from RefCountServantBase, to allow freeing up of + servants in a more standard and effective manner. + + Added support functions in Servant_Impl_T class to + clean up the component executor memory. + + Added support functions in Home_Servant_Impl_T and + Servant_Impl_Base classes to uninstall components + by executing operations like ccm_remove () in the + right order. + + Finally fixed couple of memory leaks with respect + to cleaning up component servants and component + executors. + + Thanks to Steve Baker + for reporting the problem. + +Thu May 26 21:09:22 2005 Gan Deng + + * tools/Simple_Component_Server/Simple_Component_Server.mpc + + Put an empty IDL_Files segment in the + "Simple_Component_Server" project so the IDL + file is not picked up automatically. Thanks to Will Chai + for reporting this. + + * NEWS + * DAnCE/NEWS + + Merged these two files and deleted the DAnCE/NEWS file, + since these two files serve similar purposes. + +Thu May 26 14:46:53 CDT 2005 Will Otte + + * DAnCE/NodeManager/NodeDaemon_Impl.cpp + + Fixed a memory leak which would cause NodeManagers to leak + when destroyed. + +Thu May 26 07:53:12 UTC 2005 Johnny Willemsen + + * DAnCE/examples/Quoter/Broker/Broker.cpp: + Fixed doxygen file tag + +Wed May 25 11:05:05 2005 Ming Xiong + + * DAnCE/examples/Quoter/Stock_Base/Stock_Base.mpc: + * DAnCE/examples/Quoter/Stock_Base/Stock_Base.idl: + * DAnCE/examples/Quoter/Stock_Base/Stock_Base_svnt_export.h: + * DAnCE/examples/Quoter/Stock_Base/Stock_Base_stub_export.h: + * DAnCE/examples/Quoter/Broker/Broker.mpc: + * DAnCE/examples/Quoter/Broker/Broker.idl: + * DAnCE/examples/Quoter/Broker/Broker.cidl: + * DAnCE/examples/Quoter/Broker/Broker.cpp: + * DAnCE/examples/Quoter/Broker/Broker_exec.h: + * DAnCE/examples/Quoter/Broker/Broker_exec.cpp: + * DAnCE/examples/Quoter/Broker/Broker_svnt_export.h: + * DAnCE/examples/Quoter/Broker/Broker_stub_export.h: + * DAnCE/examples/Quoter/Broker/Broker_exec_export.h: + * DAnCE/examples/Quoter/Distributor/Distributor.mpc: + * DAnCE/examples/Quoter/Distributor/Distributor.idl: + * DAnCE/examples/Quoter/Distributor/Distributor.cidl: + * DAnCE/examples/Quoter/Distributor/Distributor.cpp: + * DAnCE/examples/Quoter/Distributor/Distributor_exec.h: + * DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp: + * DAnCE/examples/Quoter/Distributor/Distributor_svnt_export.h: + * DAnCE/examples/Quoter/Distributor/Distributor_stub_export.h: + * DAnCE/examples/Quoter/Distributor/Distributor_exec_export.h: + * DAnCE/examples/Quoter/descriptors/Broker.ccd: + * DAnCE/examples/Quoter/descriptors/Broker.cid: + * DAnCE/examples/Quoter/descriptors/Broker.cpd: + * DAnCE/examples/Quoter/descriptors/Broker_Exec.iad: + * DAnCE/examples/Quoter/descriptors/Broker_Stub.iad: + * DAnCE/examples/Quoter/descriptors/Broker_Svnt.iad: + * DAnCE/examples/Quoter/descriptors/Deployment.xsd: + * DAnCE/examples/Quoter/descriptors/Distributor.ccd: + * DAnCE/examples/Quoter/descriptors/Distributor.cid: + * DAnCE/examples/Quoter/descriptors/Distributor.cpd: + * DAnCE/examples/Quoter/descriptors/Distributor_Exec.iad: + * DAnCE/examples/Quoter/descriptors/Distributor_Stub.iad: + * DAnCE/examples/Quoter/descriptors/Distributor_Svnt.iad: + * DAnCE/examples/Quoter/descriptors/Domain.cdd: + * DAnCE/examples/Quoter/descriptors/flattened_deploymentplan.cdp: + * DAnCE/examples/Quoter/descriptors/Libraries.iad: + * DAnCE/examples/Quoter/descriptors/Modified_Deployment.xsd: + * DAnCE/examples/Quoter/descriptors/package.tpd: + * DAnCE/examples/Quoter/descriptors/runNodeDaemons.pl: + * DAnCE/examples/Quoter/descriptors/Stock.cdp: + * DAnCE/examples/Quoter/descriptors/Stock.cid: + * DAnCE/examples/Quoter/descriptors/Stock.cpd: + * DAnCE/examples/Quoter/descriptors/Stock.dat: + * DAnCE/examples/Quoter/descriptors/Stock.pcd: + * DAnCE/examples/Quoter/descriptors/XMI.xsd: + + Added a Quoter example for DAnCE + +Wed May 25 11:13:19 2005 Jaiganesh B + + * DAnCE/ciao/Servant_Impl_Base.cpp: + + Added code to call ccm_remove () on the executor + before removing the component. + + Thanks to Steven Baker for + identifying the problem. + +Wed May 25 10:52:39 2005 Cassia Tatibana + + * DAnCE/examples/Display/HUDisplay.idl: + * DAnCE/examples/Display/HUDisplay.mpc: + * DAnCE/examples/Display/HUDisplay_stub_export.h: + * DAnCE/examples/Display/HUDisplay_svnt_export.h: + * DAnCE/examples/Display/README.html: + * DAnCE/examples/Display/GPS/GPS.cidl: + * DAnCE/examples/Display/GPS/GPS.idl: + * DAnCE/examples/Display/GPS/GPS.mpc: + * DAnCE/examples/Display/GPS/GPSEI.idl: + * DAnCE/examples/Display/GPS/GPS_exec.cpp: + * DAnCE/examples/Display/GPS/GPS_exec.h: + * DAnCE/examples/Display/GPS/GPS_exec_export.h: + * DAnCE/examples/Display/GPS/GPS_stub_export.h: + * DAnCE/examples/Display/GPS/GPS_svnt_export.h: + * DAnCE/examples/Display/GPS/GPS_tracing_exec.cpp: + * DAnCE/examples/Display/GPS/GPS_tracing_exec.h: + * DAnCE/examples/Display/NavDisplay/NavDisplay.cidl: + * DAnCE/examples/Display/NavDisplay/NavDisplay.idl: + * DAnCE/examples/Display/NavDisplay/NavDisplay.mpc: + * DAnCE/examples/Display/NavDisplay/NavDisplay_exec.cpp: + * DAnCE/examples/Display/NavDisplay/NavDisplay_exec.h: + * DAnCE/examples/Display/NavDisplay/NavDisplay_exec_export.h: + * DAnCE/examples/Display/NavDisplay/NavDisplay_stub_export.h: + * DAnCE/examples/Display/NavDisplay/NavDisplay_svnt_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/Command.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/MapView.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/MapView.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/MapView_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavUnit.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/NavUnit.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/QuitCmd.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel_moc.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/Worker.cpp: + * DAnCE/examples/Display/NavDisplayGUI_exec/Worker.h: + * DAnCE/examples/Display/NavDisplayGUI_exec/trolltech.gif: + * DAnCE/examples/Display/NavDisplayGUI_exec/worldmap1.gif: + * DAnCE/examples/Display/NavDisplayGUI_exec/worldmap1.xpm: + * DAnCE/examples/Display/RateGen/RateGen.cidl: + * DAnCE/examples/Display/RateGen/RateGen.idl: + * DAnCE/examples/Display/RateGen/RateGen.mpc: + * DAnCE/examples/Display/RateGen/RateGen_exec.cpp: + * DAnCE/examples/Display/RateGen/RateGen_exec.h: + * DAnCE/examples/Display/RateGen/RateGen_exec_export.h: + * DAnCE/examples/Display/RateGen/RateGen_stub_export.h: + * DAnCE/examples/Display/RateGen/RateGen_svnt_export.h: + * DAnCE/examples/Display/RateGen/controller.cpp: + * DAnCE/examples/Display/descriptors/Deployment.xsd: + * DAnCE/examples/Display/descriptors/EM.ior: + * DAnCE/examples/Display/descriptors/GPS.ior: + * DAnCE/examples/Display/descriptors/Modified_Deployment.xsd: + * DAnCE/examples/Display/descriptors/NavDisplay.ior: + * DAnCE/examples/Display/descriptors/NavDisplayGUI.ior: + * DAnCE/examples/Display/descriptors/NodeManagerMap.dat: + * DAnCE/examples/Display/descriptors/RateGen.ior: + * DAnCE/examples/Display/descriptors/XMI.xsd: + * DAnCE/examples/Display/descriptors/basicNodeDaemon.pl: + * DAnCE/examples/Display/descriptors/flattened_deploymentplan.cdp: + + Ported the Display example in CIAO to DAnCE. + +Tue May 24 22:23:48 2005 Gan Deng + + * DAnCE/examples/Hello/step-by-step.html + + Fixed a typo in the command line option. Thanks to Will Chai + for reporting this. + +Tue May 24 00:23:26 2005 Emre Turkay + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + + Changed the mpc files to use the cidlc.mpb. + +Sun May 22 21:23:48 2005 Gan Deng + + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp + + Modified the operation from <_ciao_passivate> to + due to my earlier interface changes. + +Sun May 22 11:29:36 2005 Jaiganesh B + + * DAnCE/ciao/Container_Base.cpp: + + Fixed a memory leak in the container code to + delete the ServantActivator pointer. + +Sat May 21 16:08:48 2005 Gan Deng + + * DAnCE/ciao/Deployment_Core.idl + + Added operation on the NodeApplication interface, + which is useful for enforce the correct component deactivation + sequence. + + * DAnCE/ciao/Deployment.idl + + Moved the StopError exception definition and put into the + Deployment_Core.idl, since operation needs + such exception declaration. + + * DAnCE/ciao/CCM_Component.idl + + Added operation to the CCM_Object interface. + + * DAnCE/ciao/NodeApplication_Impl.cpp + * DAnCE/ciao/NodeApplication_Impl.h + + Implementation of the above added operation . + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Modified to call before calling . + + * DAnCE/RepositoryManager/Repository_Manager.cpp + + Modified the Repository_Manager/executor to invoke + separately from invoking finishLaunch. + + * DAnCE/ciao/Servant_Impl_Base.cpp + + Removed the call of from the + Servant_Impl_Base::remove() function since this will be + called separately on the whole assembly, i.e. passivate ALL + components in the assembly before removing components. + + * DAnCE/ciao/Servant_Impl_T.cpp + * DAnCE/ciao/Servant_Impl_T.h + + Changed the operation name from "_ciao_passivate" to + "ciao_passivate", in order to make it to be the implementation + of the operation added on the CCM_Object + interface. + +Sat May 21 14:39:48 2005 Gan Deng + + * DAnCE/ciao/Deployment_Core.idl + + Added and + operations on the NodeApplication interface, which is useful + for enforce the correct component activation operation + sequence. + + * DAnCE/ciao/NodeApplication_Impl.cpp + * DAnCE/ciao/NodeApplication_Impl.h + + Implemented the above operations. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + + Modified it to call ciao_preactivate and ciao_postactivate + on NodeApplications accordingly + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + + Modified to disable the "start" while "finishLaunch", since + it is the application developer's control to invoke start + operation in the whole assembly. + + * DAnCE/ciao/Container_Base.cpp + * DAnCE/ciao/Container_Impl.cpp + + Put some debug output into the CIAO_DebugLevel control + + * DAnCE/examples/Hello/Sender/Sender_exec.cpp + + Cosmetic changes. + +Tue May 17 20:49:48 UTC 2005 Jeff Parsons + + * tests/IDL3/ImpliedIDL/All/all.mpc: + * tests/IDL3/ImpliedIDL/All/convert.idl: + * tests/IDL3/ImpliedIDL/All/pass_through.idl: + * tests/IDL3/ImpliedIDL/All/include.idl: + * tests/IDL3/ImpliedIDL/All/README: + + New files comprising a test for the tao_idl3_to_idl2 + executable. The test executes tao_idl3_to_idl2 on the + listed IDL files, then executes the TAO IDL compiler on + the resulting IDL files. The resulting C++ code is compiled, + and if there are no errors or warnings in this last step, + the test is a success. + +Tue May 17 07:51:47 2005 Ossama Othman + + * DAnCE/Old_Config_Handlers/Process_Element.h: + * DAnCE/Old_Config_Handlers/Process_Element.cpp: + + Fixed unresolved symbol link error. + +Mon May 16 21:29:49 2005 Ossama Othman + + * DAnCE/Old_Config_Handlers/Process_Element.cpp: + * DAnCE/ciao/Home_Servant_Impl_T.cpp (remove_component): + + Fixed syntax errors. + +Mon May 16 12:06:51 2005 Ossama Othman + + * DAnCE/Config_Handlers/XSCRT/Elements.hpp (~IndentityProvider): + * DAnCE/Old_Config_Handlers/Process_Element.h (Process_Function): + * DAnCE/Old_Config_Handlers/Process_Element.cpp + (~Process_Function): + * tests/RTCCM/Priority_Test/Controllers/Pulser.h (Pulse_Handler): + * tests/RTCCM/Priority_Test/Controllers/Pulser.cpp + (~Pulse_Handler): + + Added missing virtual destructor. Fixes g++ 4.0 "class with + virtual functions but no virtual destructor" warnings. + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp (mode): + + Fixed "non-local variable uses anonymous type" g++ 4.0 warning. + + * DAnCE/ciao/Home_Servant_Impl_T.cpp (remove_component): + * tools/RTComponentServer/RTConfig_Manager.cpp + (find_threadpool_by_name): + * tools/XML_Helpers/RTConfig_Handlers.cpp (add_threadpoollane): + (add_priorityband): + + Fixed "variable may be used uninitialized" warnings. + + * tools/Assembly_Deployer/Assembly_Deployer.cpp + (teardown_assembly): + + Fixed format specifier mismatch. + +Mon May 16 11:27:30 2005 Jeff Parsons + + * CIAO-INSTALL.html: + + Added line to table about availability of binaries for MacOS + and Solaris. + +Sat May 14 06:12:44 2005 Johnny Willemsen + + * CIAO version 0.4.5 released. + +Thu May 12 10:20:55 2005 Douglas C. Schmidt + + * Updated the COPYING file to clarify some ambiguity about + proprietary usage of CIAO. + +Tue May 10 21:12:47 2005 Gan Deng + + * docs/releasenotes/dance.html: Updated this page to clearly + point out which OMG D&C specification DAnCE implements. + Thanks to Gary Duzan for requesting this. + +Tue May 10 07:49:47 2005 Douglas C. Schmidt + + * DAnCE/examples/Hello/descriptors: Changed the name of + ruNodeDaemons.pl to run_NodeDaemons.pl. Thanks to Arno Wilhelm + for reporting this. + +Sun May 8 11:07:12 UTC 2005 Johnny Willemsen + + * tests/CIDL/CodeGen/CodeGen.mpc: + Removed requires+=cidl + +Sat May 7 19:53:12 UTC 2005 Johnny Willemsen + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + Removed requires+=cidl for the NodeAppTest_RoundTrip_svnt project. + It should not be there. Thanks for Jaiganesh B + for finding out that this caused the + problems in the gcc4 build + +Fri May 6 08:15:43 2005 Jeff Parsons + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + + Changed base project lists and added explicit lists (sometimes + empty) for header and inline files. + +Wed May 4 19:27:01 2005 Jeff Parsons + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Fixed typo in generated code - changed "provides_" prefix + in component facet access operation to the correct + "provide_". Thanks to Don Busch for + pointing out the mistake. + +Tue May 03 22:42:47 2005 Nanbor Wang + + * NEWS: Updated news on upcoming real-time extension on Gan Deng's + behalf. + +Tue May 3 13:05:44 2005 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Changed the generated string (used for object id) which is passed + to the port activator constructor and to generate_reference() to + be a concatentation of the component instance name and the port + name, to ensure uniqueness in any use case. + +Mon May 2 07:19:12 UTC 2005 Johnny Willemsen + + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp: + * DAnCE/ciao/Dynamic_Component_Servant_T.cpp: + Fixed gcc 4 warnings + +Sat May 1 03:11:17 2005 Jaiganesh B + + * ciao/tools/Simple_Component_Server/Simple_Component_Server.cpp: + + Made a change to fix compile errors. + +Sat Apr 30 20:02:10 2005 Jaiganesh B + + * ciao/Container_Impl.cpp: + + Made a change to fix compile errors. + +Sat Apr 30 09:58:05 2005 Jaiganesh Balasubramanian + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Home_Servant_Impl_T.h: + + Made changes to the old CIAO infrastructure to support + passing and storing of the component instance name from the + descriptor XML file and into the component instance. + +Thu Apr 28 14:50:05 2005 Jaiganesh Balasubramanian + + * DAnCE/ciao/Dynamic_Component_Servant_T.cpp: + * DAnCE/ciao/Dynamic_Component_Servant_T.h: + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp: + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h: + + Made changes to the CIAO infrastructure that allows the + swapping capability to make use of the component instance + name when we create object references. + +Wed Apr 27 11:15:12 2005 Jeff Parsons + + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Container_Impl.cpp: + * DAnCE/ciao/Deployment_Core.idl: + * DAnCE/ciao/Home_Servant_Impl_T.cpp: + * DAnCE/ciao/Home_Servant_Impl_T.h: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + + Some cosmetic changes and changes by Jaiganesh Balasubramanian + to support the passing and storing of + the component instance name (from the descriptor XML file) in + the component instance. Also removed the gen_UUID() static + method from class Servant_Impl_Base, since it is no longer + used. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Changes to servant code generation corresponding with the + changes above. + +Tue Apr 26 18:14:01 2005 Jeff Parsons + + * docs/releasenotes/index.html: + + Updated CIDL compiler documentation, and added item about the + existing IDL3-to-IDL2 coverter. + + * tools/IDL3_to_IDL2/README: + + Updated documentation file. + +Tue Apr 26 11:34:52 2005 Nanbor Wang + + * docs/schema/CIAOServerResources.xsd: Changed some of the XML + element and type names to be more consistent with the rest of + RTCORBA spec that the following new IDL file follows. + + * DAnCE/ciao/ServerResources.idl: First cut of server + configuration information set in IDL. + +Mon Apr 25 11:07:28 2005 Jaiganesh Balasubramanian + + * DAnCE/ciao/Container_Base.cpp: + + Fixed compiler warnings in the Debian Full_Reactor build. + +Sun Apr 24 02:47:22 2005 Jaiganesh Balasubramanian + + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Swapping_Container.cpp: + * DAnCE/ciao/Swapping_Container.h: + + Made changes to fix compile errors. + +Sat Apr 23 13:54:10 2005 Jaiganesh Balasubramanian + + * DAnCE/example/Swapping/Sender/Sender_exec_1.cpp: + + Made a modification to the example to reflect changes made + in the infrastructure code. + +Sat Apr 23 13:43:22 2005 Jai Balasubramanian + + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/UpgradeableContext.idl: + * DAnCE/ciao/Upgradeable_Context_Impl_T.cpp: + * DAnCE/ciao/Upgradeable_Context_Impl_T.h: + + Made some changes to the CIAO infrastructure to efficiently + handle updating the facets when the component is swapped. + +Thu Apr 21 18:10:13 2005 Jeff Parsons + + * DAnCE/examples/Hello/Hello_Base/Hello_Base.idl: + * DAnCE/examples/HelloHello_Base/Hello_Base.mpc: + * DAnCE/examples/HelloReceiver/Receiver.idl: + * DAnCE/examples/HelloReceiver/Receiver.mpc: + * DAnCE/examples/HelloSender/Sender.idl: + * DAnCE/examples/HelloSender/Sender.mpc: + + Made cosmetic changes to all files, and added explicit + specification of header and inline files in MPC + projects. Also added -Sc command line option to the + IDL compiler, to suppress generation of the TIE + classes. + +Thu Apr 21 17:40:12 2005 Jeff Parsons + + * CCF/CCF/CIDL/Traversal/Elements.cpp: + * CCF/CCF/IDL3/Traversal/EventType.cpp: + + Removed these files, since they contain nothing but + empty namespaces. + + * CCF/CCF/CIDL/CIDL.vcproj: + * CCF/CCF/IDL3/IDL3.vcproj: + + Removed the above files from the appropriate projects. + +Thu Apr 21 14:31:21 2005 Jeff Parsons + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Changes to eliminate some warnings in the Debian LInux build. + +Thu Apr 21 09:06:58 2005 Jeff Parsons + + * Added UUID generation for the object id when creating + event consumers, similar to that already added for facets. + This change eliminates the error of repeated connection + to the same event consumer instance when multiple + instances and connections are intended. Thanks to + Steve Baker for reporting + the problem. + +Thu Apr 21 09:04:32 CDT 2005 Will Otte + + * DAnCE/examples/Hello/descriptors/TestNodeManagerMap.dat + * DAnCE/examples/Hello/descriptors/run_test.pl + + Added a NodeManagerMap specific to the test and changed the ports + that the node managers invoked by the test listen on to avoid + test failures. + +Wed Apr 20 16:14:26 CDT 2005 Will Otte + + * docs/schema/CIAOServerResources.xsd + + Fixed syntax and semantic errors. + +Wed Apr 20 12:43:53 2005 Emre Turkay + + * DAnCE/examples/Hello/descriptors/run_test.pl: + + Not all the test platforms has CIAO_ROOT environment variable + defined. Changed that dependency to ACE_ROOT in the script. + +Wed Apr 20 13:11:28 2005 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Added full scoping to a generated method call on + Servant_Impl_Base, to eliminate a warning from the + Borland compiler. + +Wed Apr 20 13:05:23 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp + * DAnCE/RepositoryManager/Update_Plan.cpp + + Fixed compile errors in Borland. + +Wed Apr 20 08:09:17 CDT 2005 Will Otte + + * DAnCE/ciao/Servant_Impl_T.cpp + + Fixed a compile error with emulated exceptions. + +Wed Apr 20 08:03:23 2005 CDT Will Otte + + * DAnCE/Config_Handlers/DP_Handler.cpp + + Silenced some compile errors in VC6. + +Tue Apr 19 23:41:02 2005 CDT Will Otte + + * DAnCE/Config_Handlers/XML_File_Intf.cpp + + Silenced some compile errors in VC6. + +Tue Apr 19 16:46:00 2005 CDT Gan Deng + + * CIAO-INSTALL.html + + Fixed this page to direct people where to download CIDLC. + +Tue Apr 19 17:33:55 2005 Nanbor Wang + + * docs/schema/ServerResourceUsage.txt: + * docs/schema/CIAOServerResources.xsd: Added the first draft + schema for DAnCE RT extension, and a file to document how I + foresee the extension can be used. + +Tue Apr 19 12:16:00 2005 CDT Will Otte + + * DAnCE/Config_Handlers/IDREF_Base.h + + Fixed a compile error on VC71. + +Mon Apr 18 12:50:51 2005 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Added '.in ()' to some _var type arguments in generated code. + +Mon Apr 18 08:38:14 2005 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Changed all instances of 'FALSE' to 'false'. + +Sun Apr 17 21:57:52 2005 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Removed unnecessary _narrow() and local variable from generated + event push operations. + +Sun Apr 17 16:05:57 CDT 2005 Will Otte + + * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp + * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp + + Fixed a compile error on platforms using emulated exceptions. + +Sun Apr 17 12:46:51 2005 Jeff Parsons + + * ciao/CCM_Event.idl: + * DAnCE/ciao/CCM_Event.idl: + + Added operation ciao_is_substitutable() to EventConsumerBase, + so we can check if there is an inheritance relationship + when a base class event consumer is passed to the subscribe() + operation for a derived eventtype. Thanks to Boris Kolpackov + for suggesting this approach. + + * CIDLC/Literals.cpp: + + Cosmetic changes. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added code generation to take advantage of the new + EventConsumerBase operation described above. + +Sat Apr 16 20:17:38 2005 Emre Turkay + + * DAnCE/examples/Hello/descriptors/run_test.pl: + + Fixed some perl errors. + +Sat Apr 16 18:31:40 2005 CDT Will Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc + + Removed typecodefactory fromt the base projects. + +Sat Apr 16 17:24:40 2005 Emre Turkay + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + + Added a missing include file. + +Sat Apr 16 17:22:42 2005 Emre Turkay + + * DAnCE/examples/Hello/descriptors/run_test.pl: + + Added code to ensure killing open processes on failure. + +Sat Apr 16 16:38:09 2005 Emre Turkay + + * DAnCE/examples/Hello/descriptors/run_test.pl: + + Added perl script running all the steps for deploying an application. + +Sat Apr 16 16:10:10 2005 Emre Turkay + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + + Added two command line options to plan_launcher to easily use in + scripts. Now the launch and destruction of the application can be + done in two steps. + +Sat Apr 16 15:00:31 2005 Emre Turkay + + * DAnCE/examples/Hello/step-by-step.html: + + Fixed typo on the documentation. + +Fri Apr 15 12:54:46 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Req_Handler.h + + Fixed a compile error on builds using -pendantic. + +Fri Apr 15 10:46:56 CDT 2005 Gan Deng + + * DAnCE/ciao/Container_Impl.cpp + + Added a condition to check whether call standard configurator. + + * DAnCE/RepositoryManager/Repository_Manager.cpp + + Modified to make it work by using ORBDebugLevel. + + * DAnCE/examples/Hello/Sender/Sender_exec.cpp + + Fixed a warning message. + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp + + This should fix the warning message on Dynamic_Hash_Op_Lookup + build. + +Thu Apr 14 10:54:56 CDT 2005 Will Otte + + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp + + Fixed a warning due to ambiguous conversion. + +Thu Apr 143 10:21:58 2005 Gan Deng + + * DAnCE/examples/Hello/Sender/Sender.idl + * DAnCE/examples/Hello/Sender/Sender_exec.cpp + * DAnCE/examples/Hello/Sender/Sender_exec.h + * DAnCE/examples/Hello/Sender/starter.cpp + * DAnCE/examples/Hello/descriptors/Hello.cid + * DAnCE/examples/Hello/descriptors/Receiver.cid + * DAnCE/examples/Hello/descriptors/Sender.cid + + Modified the Hello example to showcase the feature of setting + attributes through XML. "string" and "long" type attributes + are put into the test. + + * DAnCE/ciao/Container_Impl.cpp + + Cleaned up a little bit. + +Thu Apr 14 10:14:44 CDT 2005 Will Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Added 'naming' to the list of base projects to fix a compile + error + +Thu Apr 14 02:02:13 CDT 2005 Will Otte + + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/ciao/Context_Impl_T.cpp + * DAnCE/ciao/Dynamic_Component_Servant_Base.h + * DAnCE/ciao/Dynamic_Component_Servant_T.cpp + * DAnCE/ciao/Dynamic_Component_Servant_T.h + * DAnCE/ciao/Home_Servant_Impl_T.cpp + * DAnCE/ciao/Servant_Impl_T.cpp + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp + * DAnCE/ciao/Upgradeable_Context_Impl_T.cpp + + Fixed a number of mistakes with emulated exceptions. + +Wed Apr 13 18:55:58 2005 Gan Deng + + * DAnCE/ciao/CCM_Component.idl + * DAnCE/ciao/Container_Impl.cpp + * DAnCE/ciao/Servant_Impl_Base.cpp + * DAnCE/ciao/Servant_Impl_Base.h + + Added support for configuring component attributes through + XML tags. + + * DAnCE/RepositoryManager/Update_Plan.cpp + * DAnCE/RepositoryManager/Update_Plan.h + + Fixed to make sure correct component attributes are + populated. Thanks Jai for the fix. + +Wed Apr 13 15:14:58 2005 Emre Turkay + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + + Deleted typecodefactory base project to the mpc files. + +Wed Apr 13 11:39:58 2005 Emre Turkay + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + + Added typecodefactory base project to the mpc files. + +Tue Apr 12 17:12:35 2005 Jeff Parsons + + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + + Added a static method to generate a UUID. This method is + called by the generated servant class to create unique + object ids for port object references. Thanks to Steve + Baker for reporting the + problem of connecting to facets on multiple instances + of the same component type. + + * CIDLC/ServantSourceGenerator.cpp: + + Changed code generation for provide_*_i() to use the + new method described above. + +Tus Apr 12 16:04:21 2005 Gan Deng + + * DAnCE/Old_Config_Handlers/IAD_Handler.cpp + + Modified to ignore the tag, since this might + cause a problem where multiple _svnt or multiple _exec + libraries to be specified as implArtifacts of a component + type. + +Tue Apr 12 14:35:58 CDT 2005 Will Otte + + * CIAO-INSTALL.html + + Updated to include Xerces information. Also cleaned up the + file a bit and made it XHTML compliant. + +Tue Apr 12 11:56:26 CDT 2005 Will Otte + + * DAnCE/ciao/Dynamic_Component_Activator.cpp + * DAnCE/ciao/Servant_Activator.cpp + * DAnCE/ciao/Servant_Impl_Base.cpp + + Fixed some more compile errors with emulated exceptions. + +Tue Apr 12 11:11:41 CDT 2005 Will Otte + + * DAnCE/ciao/Servant_Impl_Base.cpp + + Fixed some compile errors with emulated exceptions. + +Mon Apr 11 23:54:21 2005 Gan Deng + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + + Fixed a bug where multiple "_svnt" and "_exec" libs for + a given MonolithicDeploymentDescription could cause + chaos while pupulating ImplementationInfo stuct. This + fix now only consides the first "_svnt" and "_exec" + libs, and ignore remaining ones. A better solution will + be enforcing any MonolithicDeploymentDescription could + only have exactly one _svnt and one _exec lib. This + will be achieved through the flattened deployment plan. + +Mon Apr 11 17:56:22 2005 Jaiganesh B + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Added typecodefactory to the list of project files. + +Mon Apr 11 13:43:47 CDT 2005 Will Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + + Corrected the ExecutionManager narrow operation. + +Mon Apr 11 08:29:50 2005 Jeff Parsons + + * DAnCE/ciao/Container_Impl.cpp: + * DAnCE/ciao/Dynamic_Component_Activator.cpp: + * DAnCE/ciao/Dynamic_Component_Activator.h: + * DAnCE/ciao/NodeApplication_Impl.cpp: + * DAnCE/ciao/NodeApplication_Impl.h: + * DAnCE/ciao/Swapping_Container.cpp: + * DAnCE/ciao/Swapping_Container.h: + + Fixed various glitches with environment variables, unused variables, + and ACE_TRY macros. + +Mon Apr 11 07:12:54 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + + Fixed a compile error. + +Sun Apr 10 18:44:22 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + * DAnCE/Config_Handlers/ccd.cpp + * DAnCE/Config_Handlers/ccd.hpp + + Regenerated the handlers to reflect the changes in the previous + commit. + +Sat Apr 09 18:35:23 CDT 2005 Will Otte + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/ccd.xsd + + Updated schemas to reflect changes made to Modified_Deployment + in conformance to the spec. + +Sat Apr 09 17:15:23 CDT 2005 Will Otte + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Changed the after clause to point to the XSC_Config_Handlers + instad of the old config handlers. + +Sat Apr 09 23:59:40 2005 Gan Deng + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp + + Fixed a bug where duplicated CORBALOC specified in the + NodeManagerMap could cause undetected exception. This fix + will allow such duplication IOR error to be detected explicitly + and error message will be printed out. Thanks Steve Baker + for report this bug. + +Fri Apr 8 14:30:52 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/cdp.cpp + * DAnCE/Config_Handlers/cdp.hpp + + Regenerated handlers to reflect schema changes. + + * docs/schema/cdp.xsd + + Updated schema to allow 0 on the realizes element. + +Fri Apr 8 13:33:24 2005 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added backend support for attribute exceptions. + +Thu Apr 07 14:49:40 2005 Gan Deng + + * DAnCE/examples/Hello/descriptors/basicNodeDaemon.pl + * DAnCE/examples/Hello/descriptors/runNodeDaemons.pl + + Removed the first file and added the second file since + the name of the first file doens't make any sense. These + two files are the same. + + * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp + * DAnCE/examples/BasicSP/descriptors/flattened_deploymentplan.cdp + + Removed the first file and added the second file since + the name of the first file contained a typo. + + * DAnCE/examples/Hello/descriptor/Modified_Deployment.xsd + + Changed the tag to allow zero + tag in the XML. + + * DAnCE/Config_Handlers/DP_Handler.cpp + * DAnCE/Config_Handlers/cdp.cpp + * DAnCE/Config_Handlers/cdp.hpp + + Modified handlers to accomodate the above change. + + * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp + + Added this file in, which is a flattened deployment plan for + for the Hello example. I will come back to remove the + tag some time later since it is useless. + + * DAnCE/examples/Hello/step-by-step.html + + Bring the documentation page up to date. + +Wed Apr 06 11:12:40 2005 Gan Deng + + * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp + + Cleaned this a little bit. Removed most and + tags from the tag. + +Wed Apr 06 10:30:40 2005 Gan Deng + + * DAnCE/examples/BasicSP/descriptors/NodeManagerMap.dat + + Modified virtual node names to make them more meaningful. + + * DAnCE/examples/BasicSP/descriptors/DeploymentPlan.cdp + + Added this file, which is a copy of the old HUDisplay.cdp + file. This is the old version deployment plan XML metadata. + + * DAnCE/examples/BasicSP/descriptors/BasicSP.cdp + * DAnCE/examples/BasicSP/descriptors/HUDisplay.cdp + + Removed these two files since they are redundant. The + former one now is "flattern_deploymentplan.cdp", + the latter one is "DeploymentPlan.cdp". + + * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp + + Fixed this file, which contains a invalid connection, i.e., + connecting a EventPublisher to a SimplexReceptacle. The root + of this problem is that "data_read" is a Facet instead of + a EventPublisher. + +Tue Apr 05 19:29:40 2005 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Fixed project dependency. + + * DAnCE/ciao/Container_Impl.cpp + + Fixed a compilation error caused by specifying a + wrong exception name. + + * DAnCE/examples/BasicSP/descriptors/NodeManagerMap.dat + + Fixed a wrong string to specify the vitual node name. + +Tue Apr 5 14:37:16 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Any_Handler.cpp + + Updated Gary's fix to work in Borland 6. + +Tue Apr 5 14:13:10 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Any_Handler.cpp + + Incorporated a fix to the Any handler from Gary Duzan. + +Tue Apr 5 11:34:32 CDT 2005 Will Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + * DAnCE/Config_Handlers/Deployment.cpp + * DAnCE/Config_Handlers/Deployment.hpp + * DAnCE/Config_Handlers/ccd.cpp + * DAnCE/Config_Handlers/ccd.hpp + * DAnCE/Config_Handlers/cdd.cpp + * DAnCE/Config_Handlers/cdd.hpp + * DAnCE/Config_Handlers/cdp.cpp + * DAnCE/Config_Handlers/cdp.hpp + * DAnCE/Config_Handlers/cid.cpp + * DAnCE/Config_Handlers/cid.hpp + * DAnCE/Config_Handlers/cpd.cpp + * DAnCE/Config_Handlers/cpd.hpp + * DAnCE/Config_Handlers/iad.cpp + * DAnCE/Config_Handlers/iad.hpp + * DAnCE/Config_Handlers/pcd.cpp + * DAnCE/Config_Handlers/pcd.hpp + * DAnCE/Config_Handlers/toplevel.cpp + * DAnCE/Config_Handlers/toplevel.hpp + * DAnCE/Config_Handlers/XMLSchema/Types.hpp + + New version of the generated XSC handlers fixing the following problems: + - Use ACE_TCHAR instead of char as the character type + - Export macros for the generated classes. + - Borland 6 support + - Misc VC6 warnings. + +Sun Apr 3 23:52:50 CDT 2005 Will Otte + + * examples/BasicSP/descriptors/flattern_deploymentplan.cdp + + Fixed a mistake in the descriptor. + +Sun Apr 3 18:08:12 UTC 2005 Johnny Willemsen + + * ciao/Container_Base.h: + * ciao/ServerActivator_Impl.h: + Added missing include of ace/Hash_Map_Manager_T.h + +Sat Apr 02 13:12:40 2005 Nanbor Wang + + * DAnCE/examples/BasicSP/README.html: Brought the documentation a + bit more up-to-date. + +Sat Apr 2 13:06:02 2005 Nanbor Wang + + * DAnCE/ciao/Container_Base.cpp: Added more debug print out + statements in install_home method. + +Sat Apr 02 11:45:52 2005 Nanbor Wang + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: Merged from xsc_handler_1 + branch. Added a missing break statement, otherwise, it will not + run. + +Thu Mar 31 20:31:12 UTC 2005 Johnny Willemsen + + * DAnCE/ciao/NodeApplication_Impl.h: + * DAnCE/ciao/Container_Base.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + Added missing include of ace/Hash_Map_Manager_T.h + +Thu Mar 31 09:45:07 2005 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.hpp: + * CCF/CCF/IDL2/Traversal/Attribute.cpp: + * CCF/CCF/IDL2/Traversal/Attribute.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Added support for raises-specification in attributes. + +Wed Mar 30 21:48:14 2005 Nanbor Wang + + * DAnCE/Config_Handlers/Deployment.hpp: Made the function + deploymentPlan an export function since it will be accessed + externally. The handler test program needed this change to + compile on Win32. + + * DAnCE/Config_Handlers/Config_Handlers.mpc: Changed to source in + the Xerces library settings from the latest xerces MPC template + that Kitty suggested. + + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp: + * DAnCE/Config_Handlers/ccd.hpp: + * DAnCE/Config_Handlers/cdd.hpp: + * DAnCE/Config_Handlers/cdp.hpp: + * DAnCE/Config_Handlers/cid.hpp: + * DAnCE/Config_Handlers/cpd.hpp: + * DAnCE/Config_Handlers/iad.hpp: + * DAnCE/Config_Handlers/pcd.hpp: + * DAnCE/Config_Handlers/toplevel.hpp: + * DAnCE/Config_Handlers/XMLSchema/Types.hpp: + * DAnCE/Config_Handlers/XSCRT/Elements.hpp: + * DAnCE/Config_Handlers/XSCRT/Parser.hpp: + * DAnCE/Config_Handlers/XSCRT/Traversal.hpp: + * DAnCE/Config_Handlers/XSCRT/Writer.hpp: + * DAnCE/Config_Handlers/XSCRT/XML.hpp: Changed all local include + files to use the right syntax. I.e., they should be in the form + of: + + #include "foo/bar.h" + + instead of + + #include + +Wed Mar 30 22:03:23 2005 Will Otte + + * docs/schema/xsc-banner.cpp + * docs/schema/xsc-banner.h + + These files are the banners that should be included at + the top of XSC generated code. + +Wed Mar 30 13:23:12 UTC 2005 Johnny Willemsen + + * ciao/ComponentsC.h: + * DAnCE/ciao/ComponentsC.h: + Fixed include of Typecode.h to TypeCode.h + +Wed Mar 30 13:20:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/DataType_Handler.cpp: + * DAnCE/Old_Config_Handlers/DT_Handler.cpp: + Fixed include of Typecode.h to TypeCode.h + +Thu Mar 24 17:02:34 Will Otte + + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp + * DAnCE/Config_Handlers/Deployment.hpp + * DAnCE/Config_Handlers/ccd.hpp + * DAnCE/Config_Handlers/cdd.hpp + * DAnCE/Config_Handlers/cdp.hpp + * DAnCE/Config_Handlers/cid.hpp + * DAnCE/Config_Handlers/cpd.hpp + * DAnCE/Config_Handlers/iad.hpp + * DAnCE/Config_Handlers/pcd.hpp + * DAnCE/Config_Handlers/toplevel.hpp + * DAnCE/Config_Handlers/XSCRT/XML.hpp + * DAnCE/Config_Handlers/vc6-4786.h + + Finally beat a big warning problem in VC6. + +Thu Mar 24 15:19:21 2005 Will Otte + + * DAnCE/Config_Handlers/XSCRT/Elements.hpp + * DAnCE/Config_Handlers/XSCRT/XML.hpp + + Moved a pragma disable from Elements.hpp to XML.hpp to + attempt to silence more warnings in VC6. + +Thu Mar 24 14:52:03 2005 Will Otte + + * DAnCE/Config_Handlers/Any_Handler.cpp + + Fixed a compile error for 64bit arch that resulted from + the earlier VC6 fix. + +Thu Mar 24 09:21:59 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Sender/Sender.mpc: + + Added the "after" clause in the MPC file to fix a + linker error. + +Thu Mar 24 08:46:07 2005 Jeff Parsons + + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + + - Added generation of ACE_UNUSED_ARG macros for local variables in + the get_registered_consumers() method for upgradeable components, + to avoid unused argument warnings if the component has no + event consumers. + + - Added predefined string literals for "ACE_UNUSED_ARG", + "ACE_CHECK_RETURN", and "ACE_THROW_RETURN". + +Wed Mar 23 19:45:32 2005 Jeff Parsons + + * CCF/CCF/IDL2/IDL2.vcpoj: + + Added more new files to the project, ValueTypeMember.hpp and + ValueTypeMember.tpp in IDL2/Traversal. + + * CIDLC/ServantSourceGenerator.cpp: + + Restored backend code that was commented out until frontend + support for traversal of valuetype/eventtype members was added. + +Wed Mar 23 13:00:32 2005 Will Otte + + * DAnCE/Config_Handlers/Any_Handler.cpp + + Fixed compile errors for VC6. + +Wed Mar 23 12:39:43 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Sender/Sender.mpc: + + Added a missing library include. + +Wed Mar 23 11:19:32 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Sender/Sender.mpc: + * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec_1.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_1_export.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec_2.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_2_export.h: + + Added new export macros to fix compiler problems in Windows + builds. + +Wed Mar 23 11:41:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp: + Fixed compile errors + +Wed Mar 23 11:22:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp: + * DAnCE/Config_Handlers/DP_Handler.cpp: + Fixed compile errors with Borland + +Tue Mar 22 21:21:12 UTC 2005 Johnny Willemsen + + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + Fixed fuzz error + +Tue Mar 22 13:08:32 2005 Will Otte + + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/ciao/Swapping_Servant_Home_Impl_Base.h + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h + * DAnCE/examples/Swapping/Sender/Sender_exec_1.h + * DAnCE/examples/Swapping/Sender/Sender_exec_2.h + + Silence some Fuzz errors. + +Tue Mar 22 11:45:57 2005 Will Otte + + * DAnCE/Config_Handlers/ADD_Handler.cpp + * DAnCE/Config_Handlers/Any_Handler.cpp + * DAnCE/Config_Handlers/CCD_Handler.cpp + * DAnCE/Config_Handlers/XSCRT/Elements.hpp + + Changes to accomodate broken compilers (VC6). + +Tue Mar 22 10:40:21 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Sender/Sender_exec.cpp: + + Made changes to fix compiler warnings. + +Tue Mar 22 10:26:18 2005 Will Otte + * DAnCE/Config_Handlers/CCD_Handler.cpp + + Silenced an error in VC6 that occured because it couldn't obey + some simple scope rules. + + * DAnCE/Config_Handlers/XSCRT/Elements.hpp + + Silenced a warning in VC6 debug builds relating to debug identifiers being + too long. + +Tue Mar 22 08:44:03 2005 Will Otte + + * DAnCE/ciao/Container_Base.cpp + + Silenced a warning. + +Tue Mar 22 08:05:57 2005 Jeff Parsons + + * CCF/CCF/IDL2/IDL2.vcproj: + + Added new ValueTypeFactory files to SemanticAction and new + ValueTypeMember files to SemanticGraph. + +Tue Mar 22 00:13:56 2005 Will Otte + + * DAnCE/Config_Handlers/Any_Handler.cpp + + Silenced warnings present in GCC >3 builds. + + * DAnCE/Config_Handlers/CCD_Handler.h + * DAnCE/Config_Handlers/Config_Handlers.mpc + * DAnCE/Config_Handlers/IDD_Handler.cpp + * DAnCE/Config_Handlers/Property_Handler.h + * DAnCE/Config_Handlers/Req_Handler.h + * DAnCE/Config_Handlers/XML_Error_Handler.h + * DAnCE/Config_Handlers/XML_File_Intf.h + + Silenced a few warnings present in the Fuzz build. + +Mon Mar 21 08:47:44 2005 Jeff Parsons + + * CCF/CCF/IDL2/IDL2.vcproj: + + Added the new ValuetypeMember files in SemanticAction to + the project. + +Mon Mar 21 16:25:07 2005 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp: + + Finished "full support" for valuetype members. It also + adds "full support" for eventtype members since it just + re-uses valuetype's rules. + + + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + + Added support for valuetype factories. + + + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/ValueType.tpp: + + Implemented support for valuetype inheritance and + support of interfaces. + + + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp: + * CCF/CCF/IDL3/Traversal/EventType.tpp: + + Implemented support for eventtype inheritance and + support of interfaces. + + + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp: + + Minor cleanups. + +Sun Mar 20 21:35:04 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Sender/Sender.mpc: + + Made a change to link to the right library. + +Sun Mar 20 21:12:55 2005 Will Otte + + * DAnCE/Config_Handlers/Config_Handlers.mpc + + Disabled the build of the test. There is no need for + this to build for the most part - as it is not a great test - + and appears to be lighting up the scoreboard for some reason. + +Sun Mar 20 14:05:08 2005 Jaiganesh B + + * DAnCE/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Domain_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.h: + * DAnCE/tests/Config_Handlers/IAD_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/PC_Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Plan_Handler_Test.cpp: + + Made changed to include the "right" config handlers + to fix the compilation errors. + +Sun Mar 20 13:57:55 2005 Jaiganesh B + + * DAnCE/Config_Handlers/XercesString.cpp: + * DAnCE/Config_Handlers/XercesString.h: + + Added these new files from the old config handlers + directory to the new config handlers directory + to fix missing includes. + +Sun Mar 20 13:54:17 2005 Jaiganesh B + + * DAnCE/Old_Config_Handlers/Process_Element_T.cpp: + + Changed a #include to fix a compilation error. + +Sun Mar 20 17:39:18 2005 Jaiganesh B + * ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_T.h: + * ciao/Servant_Impl_T.cpp: + * ciao/Home_Servant_Impl_T.cpp: + + Made changes to the older version of the ciao + infrastructure to reflect changes made in the + newer version of ciao, which is DaNCE. + +Sun Mar 20 10:09:14 2005 Will Otte + * DAnCE/Config_Handlers/Basic_Handler.cpp + * DAnCE/Config_Handlers/Basic_Handler.h + * DAnCE/Config_Handlers/CAD_Handler.cpp + * DAnCE/Config_Handlers/CAD_Handler.h + * DAnCE/Config_Handlers/CPK_Handler.cpp + * DAnCE/Config_Handlers/CPK_Handler.h + * DAnCE/Config_Handlers/CPR_Handler.cpp + * DAnCE/Config_Handlers/CPR_Handler.h + * DAnCE/Config_Handlers/Cap_Handler.cpp + * DAnCE/Config_Handlers/Cap_Handler.h + * DAnCE/Config_Handlers/CompImplDesc_Handler.cpp + * DAnCE/Config_Handlers/CompImplDesc_Handler.h + * DAnCE/Config_Handlers/CompIntrDesc_Handler.cpp + * DAnCE/Config_Handlers/CompIntrDesc_Handler.h + * DAnCE/Config_Handlers/CompPkgDesc_Handler.cpp + * DAnCE/Config_Handlers/CompPkgDesc_Handler.h + * DAnCE/Config_Handlers/Config.h + * DAnCE/Config_Handlers/Config_Error_Handler.cpp + * DAnCE/Config_Handlers/Config_Error_Handler.h + * DAnCE/Config_Handlers/Config_Handler_export.h + * DAnCE/Config_Handlers/DT_Handler.cpp + * DAnCE/Config_Handlers/DT_Handler.h + * DAnCE/Config_Handlers/Domain_Handler.cpp + * DAnCE/Config_Handlers/Domain_Handler.h + * DAnCE/Config_Handlers/IAD_Handler.cpp + * DAnCE/Config_Handlers/IAD_Handler.h + * DAnCE/Config_Handlers/IR_Handler.cpp + * DAnCE/Config_Handlers/IR_Handler.h + * DAnCE/Config_Handlers/MID_Handler.cpp + * DAnCE/Config_Handlers/MID_Handler.h + * DAnCE/Config_Handlers/NIA_Handler.cpp + * DAnCE/Config_Handlers/NIA_Handler.h + * DAnCE/Config_Handlers/PCI_Handler.cpp + * DAnCE/Config_Handlers/PCI_Handler.h + * DAnCE/Config_Handlers/PC_Handler.cpp + * DAnCE/Config_Handlers/PC_Handler.h + * DAnCE/Config_Handlers/Plan_Handler.cpp + * DAnCE/Config_Handlers/Plan_Handler.h + * DAnCE/Config_Handlers/Process_Element.cpp + * DAnCE/Config_Handlers/Process_Element.h + * DAnCE/Config_Handlers/Process_Element_T.cpp + * DAnCE/Config_Handlers/Process_Element_T.h + * DAnCE/Config_Handlers/RS_Handler.cpp + * DAnCE/Config_Handlers/RS_Handler.h + * DAnCE/Config_Handlers/RUK_Handler.cpp + * DAnCE/Config_Handlers/RUK_Handler.h + * DAnCE/Config_Handlers/Requirement_Handler.cpp + * DAnCE/Config_Handlers/Requirement_Handler.h + * DAnCE/Config_Handlers/SPK_Handler.cpp + * DAnCE/Config_Handlers/SPK_Handler.h + * DAnCE/Config_Handlers/SP_Handler.cpp + * DAnCE/Config_Handlers/SP_Handler.h + * DAnCE/Config_Handlers/TPD_Handler.cpp + * DAnCE/Config_Handlers/TPD_Handler.h + * DAnCE/Config_Handlers/Utils.cpp + * DAnCE/Config_Handlers/Utils.h + * DAnCE/Config_Handlers/XercesString.cpp + * DAnCE/Config_Handlers/XercesString.h + + Removed files unused by the new config handlers. + + * DAnCE/Config_Handlers/Config_Handlers.mpc + + Enabled the config handlers build. + +Sat Mar 19 18:19:34 2005 Will Otte + + * DAnCE/Config_Handlers/XMLSchema/Traversal.hpp + * DAnCE/Config_Handlers/XMLSchema/Traversal.ipp + * DAnCE/Config_Handlers/XMLSchema/Traversal.tpp + * DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp + * DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp + * DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp + * DAnCE/Config_Handlers/XMLSchema/Types.hpp + * DAnCE/Config_Handlers/XMLSchema/Types.ipp + * DAnCE/Config_Handlers/XMLSchema/Types.tpp + * DAnCE/Config_Handlers/XMLSchema/Writer.hpp + * DAnCE/Config_Handlers/XMLSchema/Writer.ipp + * DAnCE/Config_Handlers/XMLSchema/Writer.tpp + * DAnCE/Config_Handlers/XSCRT/Elements.hpp + * DAnCE/Config_Handlers/XSCRT/Elements.ipp + * DAnCE/Config_Handlers/XSCRT/Elements.tpp + * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp + * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp + * DAnCE/Config_Handlers/XSCRT/Parser.hpp + * DAnCE/Config_Handlers/XSCRT/Parser.ipp + * DAnCE/Config_Handlers/XSCRT/Parser.tpp + * DAnCE/Config_Handlers/XSCRT/Traversal.hpp + * DAnCE/Config_Handlers/XSCRT/Traversal.ipp + * DAnCE/Config_Handlers/XSCRT/Traversal.tpp + * DAnCE/Config_Handlers/XSCRT/Writer.hpp + * DAnCE/Config_Handlers/XSCRT/Writer.ipp + * DAnCE/Config_Handlers/XSCRT/Writer.tpp + * DAnCE/Config_Handlers/XSCRT/XML.hpp + * DAnCE/Config_Handlers/XSCRT/XML.ipp + * DAnCE/Config_Handlers/XSCRT/XML.tpp + * DAnCE/Config_Handlers/XSCRT/XMLSchema.ipp + * DAnCE/Config_Handlers/XSCRT/XMLSchema.tpp + + Completed the merge of xsc_handler_1 into main. + +Sat Mar 19 17:29:50 2005 Jaiganesh B + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + + Fixed compiler errors. + +Sat Mar 19 16:57:41 2005 Jaiganesh B + + * DAnCE/Old_Config_Handlers/Any_Handler.cpp: + * DAnCE/Old_Config_Handlers/Any_Handler.h: + * DAnCE/Old_Config_Handlers/Basic_Deployment_Data.cpp: + * DAnCE/Old_Config_Handlers/Basic_Deployment_Data.hpp: + * DAnCE/Old_Config_Handlers/Basic_Handler.cpp: + * DAnCE/Old_Config_Handlers/Basic_Handler.h: + * DAnCE/Old_Config_Handlers/CAD_Handler.cpp: + * DAnCE/Old_Config_Handlers/CAD_Handler.h: + * DAnCE/Old_Config_Handlers/CEPE_Handler.cpp: + * DAnCE/Old_Config_Handlers/CEPE_Handler.h: + * DAnCE/Old_Config_Handlers/CPK_Handler.cpp: + * DAnCE/Old_Config_Handlers/CPK_Handler.h: + * DAnCE/Old_Config_Handlers/CPR_Handler.cpp: + * DAnCE/Old_Config_Handlers/CPR_Handler.h: + * DAnCE/Old_Config_Handlers/Cap_Handler.cpp: + * DAnCE/Old_Config_Handlers/Cap_Handler.h: + * DAnCE/Old_Config_Handlers/CompImplDesc_Handler.cpp: + * DAnCE/Old_Config_Handlers/CompImplDesc_Handler.h: + * DAnCE/Old_Config_Handlers/CompIntrDesc_Handler.cpp: + * DAnCE/Old_Config_Handlers/CompIntrDesc_Handler.h: + * DAnCE/Old_Config_Handlers/CompPkgDesc_Handler.cpp: + * DAnCE/Old_Config_Handlers/CompPkgDesc_Handler.h: + * DAnCE/Old_Config_Handlers/Config.h: + * DAnCE/Old_Config_Handlers/Config_Error_Handler.cpp: + * DAnCE/Old_Config_Handlers/Config_Error_Handler.h: + * DAnCE/Old_Config_Handlers/Config_Handler_export.h: + * DAnCE/Old_Config_Handlers/Config_Handlers.mpc: + * DAnCE/Old_Config_Handlers/DT_Handler.cpp: + * DAnCE/Old_Config_Handlers/DT_Handler.h: + * DAnCE/Old_Config_Handlers/Deployment.cpp: + * DAnCE/Old_Config_Handlers/Deployment.hpp: + * DAnCE/Old_Config_Handlers/DnC_Dump.cpp: + * DAnCE/Old_Config_Handlers/DnC_Dump.h: + * DAnCE/Old_Config_Handlers/DnC_Dump_T.cpp: + * DAnCE/Old_Config_Handlers/DnC_Dump_T.h: + * DAnCE/Old_Config_Handlers/Domain_Handler.cpp: + * DAnCE/Old_Config_Handlers/Domain_Handler.h: + * DAnCE/Old_Config_Handlers/Dump_Obj.cpp: + * DAnCE/Old_Config_Handlers/Dump_Obj.h: + * DAnCE/Old_Config_Handlers/ERE_Handler.cpp: + * DAnCE/Old_Config_Handlers/ERE_Handler.h: + * DAnCE/Old_Config_Handlers/IAD_Handler.cpp: + * DAnCE/Old_Config_Handlers/IAD_Handler.h: + * DAnCE/Old_Config_Handlers/ID_Handler.cpp: + * DAnCE/Old_Config_Handlers/ID_Handler.h: + * DAnCE/Old_Config_Handlers/IR_Handler.cpp: + * DAnCE/Old_Config_Handlers/MID_Handler.cpp: + * DAnCE/Old_Config_Handlers/MID_Handler.h: + * DAnCE/Old_Config_Handlers/NIA_Handler.cpp: + * DAnCE/Old_Config_Handlers/NIA_Handler.h: + * DAnCE/Old_Config_Handlers/PCI_Handler.cpp: + * DAnCE/Old_Config_Handlers/PCI_Handler.h: + * DAnCE/Old_Config_Handlers/PC_Handler.cpp: + * DAnCE/Old_Config_Handlers/PC_Handler.h: + * DAnCE/Old_Config_Handlers/Plan_Handler.cpp: + * DAnCE/Old_Config_Handlers/Plan_Handler.h: + * DAnCE/Old_Config_Handlers/Process_Element.cpp: + * DAnCE/Old_Config_Handlers/Process_Element.h: + * DAnCE/Old_Config_Handlers/Process_Element_T.cpp: + * DAnCE/Old_Config_Handlers/Process_Element_T.h: + * DAnCE/Old_Config_Handlers/Property_Handler.cpp: + * DAnCE/Old_Config_Handlers/Property_Handler.h: + * DAnCE/Old_Config_Handlers/RS_Handler.cpp: + * DAnCE/Old_Config_Handlers/RS_Handler.h: + * DAnCE/Old_Config_Handlers/RUK_Handler.cpp: + * DAnCE/Old_Config_Handlers/RUK_Handler.h: + * DAnCE/Old_Config_Handlers/Requirement_Handler.cpp: + * DAnCE/Old_Config_Handlers/Requirement_Handler.h: + * DAnCE/Old_Config_Handlers/SPK_Handler.cpp: + * DAnCE/Old_Config_Handlers/SPK_Handler.h: + * DAnCE/Old_Config_Handlers/SP_Handler.cpp: + * DAnCE/Old_Config_Handlers/SP_Handler.h: + * DAnCE/Old_Config_Handlers/TPD_Handler.cpp: + * DAnCE/Old_Config_Handlers/TPD_Handler.h: + * DAnCE/Old_Config_Handlers/Utils.cpp: + * DAnCE/Old_Config_Handlers/Utils.h: + * DAnCE/Old_Config_Handlers/XercesString.cpp: + * DAnCE/Old_Config_Handlers/XercesString.h: + * DAnCE/Old_Config_Handlers/ccd.cpp: + * DAnCE/Old_Config_Handlers/ccd.hpp: + * DAnCE/Old_Config_Handlers/cdd.cpp: + * DAnCE/Old_Config_Handlers/cdd.hpp: + * DAnCE/Old_Config_Handlers/cdp.cpp: + * DAnCE/Old_Config_Handlers/cdp.hpp: + * DAnCE/Old_Config_Handlers/cid.cpp: + * DAnCE/Old_Config_Handlers/cid.hpp: + * DAnCE/Old_Config_Handlers/cpd.cpp: + * DAnCE/Old_Config_Handlers/cpd.hpp: + * DAnCE/Old_Config_Handlers/iad.cpp: + * DAnCE/Old_Config_Handlers/iad.hpp: + * DAnCE/Old_Config_Handlers/pcd.cpp: + * DAnCE/Old_Config_Handlers/pcd.hpp: + * DAnCE/Old_Config_Handlers/toplevel.cpp: + * DAnCE/Old_Config_Handlers/toplevel.hpp: + + Older version of config handlers. + + +Sat Mar 19 16:14:20 2005 Jaiganesh B + + * DAnCE/Config_Handlers/ccd.cpp: + * DAnCE/Config_Handlers/ccd.hpp: + * DAnCE/Config_Handlers/cdd.cpp: + * DAnCE/Config_Handlers/cdd.hpp: + * DAnCE/Config_Handlers/cdp.cpp: + * DAnCE/Config_Handlers/cdp.hpp: + * DAnCE/Config_Handlers/cid.cpp: + * DAnCE/Config_Handlers/cid.hpp: + * DAnCE/Config_Handlers/cpd.cpp: + * DAnCE/Config_Handlers/cpd.hpp: + * DAnCE/Config_Handlers/iad.cpp: + * DAnCE/Config_Handlers/iad.hpp: + * DAnCE/Config_Handlers/pcd.cpp: + * DAnCE/Config_Handlers/pcd.hpp: + * DAnCE/Config_Handlers/toplevel.cpp: + * DAnCE/Config_Handlers/toplevel.hpp: + * DAnCE/Config_Handlers/ERE_Handler.cpp: + * DAnCE/Config_Handlers/ERE_Handler.h: + * DAnCE/Config_Handlers/IDD_Handler.cpp: + * DAnCE/Config_Handlers/IDD_Handler.h: + * DAnCE/Config_Handlers/IDREF_Base.cpp: + * DAnCE/Config_Handlers/IDREF_Base.h: + * DAnCE/Config_Handlers/ID_Handler.cpp: + * DAnCE/Config_Handlers/ID_Handler.h: + * DAnCE/Config_Handlers/IRDD_Handler.cpp: + * DAnCE/Config_Handlers/IRDD_Handler.h: + * DAnCE/Config_Handlers/MDD_Handler.cpp: + * DAnCE/Config_Handlers/MDD_Handler.h: + * DAnCE/Config_Handlers/PCD_Handler.cpp: + * DAnCE/Config_Handlers/PCD_Handler.h: + * DAnCE/Config_Handlers/PSPE_Handler.cpp: + * DAnCE/Config_Handlers/PSPE_Handler.h: + * DAnCE/Config_Handlers/Property_Handler.cpp: + * DAnCE/Config_Handlers/Property_Handler.h: + * DAnCE/Config_Handlers/RDD_Handler.cpp: + * DAnCE/Config_Handlers/RDD_Handler.h: + * DAnCE/Config_Handlers/Req_Handler.cpp: + * DAnCE/Config_Handlers/Req_Handler.h: + * DAnCE/Config_Handlers/XML_Error_Handler.cpp: + * DAnCE/Config_Handlers/XML_Error_Handler.h: + * DAnCE/Config_Handlers/XML_File_Intf.cpp: + * DAnCE/Config_Handlers/XML_File_Intf.h: + * DAnCE/Config_Handlers/XML_Helper.cpp: + * DAnCE/Config_Handlers/XML_Helper.h: + * DAnCE/Config_Handlers/XercesString.cpp: + * DAnCE/Config_Handlers/XercesString.h: + * DAnCE/Config_Handlers/ADD_Handler.cpp: + * DAnCE/Config_Handlers/ADD_Handler.h: + * DAnCE/Config_Handlers/Any_Handler.cpp: + * DAnCE/Config_Handlers/Any_Handler.h: + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp: + * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp: + * DAnCE/Config_Handlers/CCD_Handler.cpp: + * DAnCE/Config_Handlers/CCD_Handler.h: + * DAnCE/Config_Handlers/CEPE_Handler.cpp: + * DAnCE/Config_Handlers/CEPE_Handler.h: + * DAnCE/Config_Handlers/CPD_Handler.cpp: + * DAnCE/Config_Handlers/CPD_Handler.h: + * DAnCE/Config_Handlers/CRDD_Handler.cpp: + * DAnCE/Config_Handlers/CRDD_Handler.h: + * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp: + * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h: + * DAnCE/Config_Handlers/Config_Handlers.mpc: + * DAnCE/Config_Handlers/Config_Handlers_Export.h: + * DAnCE/Config_Handlers/DP_Handler.cpp: + * DAnCE/Config_Handlers/DP_Handler.h: + * DAnCE/Config_Handlers/DP_PCD_Handler.cpp: + * DAnCE/Config_Handlers/DP_PCD_Handler.h: + * DAnCE/Config_Handlers/DataType_Handler.cpp: + * DAnCE/Config_Handlers/DataType_Handler.h: + * DAnCE/Config_Handlers/Deployment.cpp: + * DAnCE/Config_Handlers/Deployment.hpp: + * DAnCE/Config_Handlers/DnC_Dump.cpp: + * DAnCE/Config_Handlers/DnC_Dump.h: + * DAnCE/Config_Handlers/DnC_Dump_T.cpp: + * DAnCE/Config_Handlers/DnC_Dump_T.h: + * DAnCE/Config_Handlers/Dump_Obj.cpp: + * DAnCE/Config_Handlers/Dump_Obj.h: + + Merged branch xsc_handler_1 to main. + +Sat Mar 19 15:36:55 2005 Jaiganesh B + + * DAnCE/Config_Handlers/RDD_Handler.cpp: + * DAnCE/Config_Handlers/RDD_Handler.h: + * DAnCE/Config_Handlers/Req_Handler.cpp: + * DAnCE/Config_Handlers/Req_Handler.h: + * DAnCE/Config_Handlers/XML_Error_Handler.cpp: + * DAnCE/Config_Handlers/XML_Error_Handler.h: + * DAnCE/Config_Handlers/XML_File_Intf.cpp: + * DAnCE/Config_Handlers/XML_File_Intf.h: + * DAnCE/Config_Handlers/XML_Helper.cpp: + * DAnCE/Config_Handlers/XML_Helper.h: + + More XSC config handlers. + +Sat Mar 19 15:29:45 2005 Jaiganesh B + + * DAnCE/Config_Handlers/Any_Handler.h: + * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp: + * DAnCE/Config_Handlers/CEPE_Handler.cpp: + * DAnCE/Config_Handlers/CEPE_Handler.h: + * DAnCE/Config_Handlers/Deployment.cpp: + * DAnCE/Config_Handlers/DnC_Dump.cpp: + * DAnCE/Config_Handlers/DnC_Dump.h: + * DAnCE/Config_Handlers/DnC_Dump_T.cpp: + * DAnCE/Config_Handlers/DnC_Dump_T.h: + * DAnCE/Config_Handlers/Dump_Obj.cpp: + * DAnCE/Config_Handlers/Dump_Obj.h: + * DAnCE/Config_Handlers/ERE_Handler.cpp: + * DAnCE/Config_Handlers/ERE_Handler.h: + * DAnCE/Config_Handlers/IDD_Handler.cpp: + * DAnCE/Config_Handlers/IDD_Handler.h: + * DAnCE/Config_Handlers/IDREF_Base.cpp: + * DAnCE/Config_Handlers/IDREF_Base.h: + * DAnCE/Config_Handlers/ID_Handler.cpp: + * DAnCE/Config_Handlers/ID_Handler.h: + * DAnCE/Config_Handlers/IRDD_Handler.cpp: + * DAnCE/Config_Handlers/IRDD_Handler.h: + * DAnCE/Config_Handlers/MDD_Handler.cpp: + * DAnCE/Config_Handlers/MDD_Handler.h: + * DAnCE/Config_Handlers/Modified_Deployment.xsd: + * DAnCE/Config_Handlers/PCD_Handler.cpp: + * DAnCE/Config_Handlers/PCD_Handler.h: + * DAnCE/Config_Handlers/PSPE_Handler.cpp: + * DAnCE/Config_Handlers/PSPE_Handler.h: + + More XML config handlers. + +Sat Mar 19 15:25:17 2005 Jaiganesh B + + * DAnCE/Config_Handlers/ADD_Handler.cpp: + * DAnCE/Config_Handlers/ADD_Handler.h: + * DAnCE/Config_Handlers/BasicSP.cdp: + * DAnCE/Config_Handlers/CCD_Handler.cpp: + * DAnCE/Config_Handlers/CCD_Handler.h: + * DAnCE/Config_Handlers/CPD_Handler.cpp: + * DAnCE/Config_Handlers/CPD_Handler.h: + * DAnCE/Config_Handlers/CRDD_Handler.cpp: + * DAnCE/Config_Handlers/CRDD_Handler.h: + * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp: + * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h: + * DAnCE/Config_Handlers/Config_Handlers_Export.h: + * DAnCE/Config_Handlers/DP_Handler.cpp: + * DAnCE/Config_Handlers/DP_Handler.h: + * DAnCE/Config_Handlers/DP_PCD_Handler.cpp: + * DAnCE/Config_Handlers/DP_PCD_Handler.h: + * DAnCE/Config_Handlers/DataType_Handler.cpp: + * DAnCE/Config_Handlers/DataType_Handler.h: + + Added a XSC compiler compliant config handlers. + +Sat Mar 19 15:22:54 2005 Jaiganesh B + + * DAnCE/ExecutionManager/DAM_Map.cpp: + * DAnCE/ExecutionManager/DAM_Map.h: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + + Fixed some more compiler errors. + +Sat Mar 19 15:06:37 2005 Jaiganesh B + + * DAnCE/ExecutionManager/DAM_Map.cpp: + * DAnCE/ExecutionManager/DAM_Map.h: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + * DAnCE/NodeApplication/NodeApplication.cpp: + * DAnCE/NodeManager/NodeDaemon_Impl.cpp: + + Made changes to fix compile errors. + +Sat Mar 19 15:02:03 2005 Jaiganesh B + + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * + DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Made changes to reflect changes made to the CIAO + infrastructure to support NodeApplication instantiate + multiple containers. + + Thanks to Gan Deng for making this + change. + +Sat Mar 19 14:54:15 2005 Jaiganesh B + + * DAnCE/examples/BasicSP/descriptors/BasicSP.cdp: + * DAnCE/examples/BasicSP/descriptors/NodeManagerMap.dat: + * DAnCE/examples/BasicSP/descriptors/basicNodeDaemon.pl: + * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp: + + Added a flattened deployment plan for testing the DaNCE + infrastructure. + + Thanks to Will Otte for helping + out with this project. + +Sat Mar 19 14:23:49 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Hello_Base/Hello_Base.idl: + * DAnCE/examples/Swapping/Hello_Base/Hello_Base.mpc: + * DAnCE/examples/Swapping/Hello_Base/Hello_Base_stub_export.h: + * DAnCE/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h: + * DAnCE/examples/Swapping/Receiver/Receiver.mpc: + * DAnCE/examples/Swapping/Sender/Sender.mpc: + + Fixed few minor compiler errors. + +Sat Mar 19 13:40:30 2005 Jaiganesh B + + * DAnCE/examples/Swapping/Hello_Base/Hello_Base.idl: + * DAnCE/examples/Swapping/Hello_Base/Hello_Base.mpc: + * DAnCE/examples/Swapping/Hello_Base/Hello_Base_stub_export.h: + * DAnCE/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h: + * DAnCE/examples/Swapping/Receiver/Receiver.cidl: + * DAnCE/examples/Swapping/Receiver/Receiver.idl: + * DAnCE/examples/Swapping/Receiver/Receiver.mpc: + * DAnCE/examples/Swapping/Receiver/Receiver_exec.cpp: + * DAnCE/examples/Swapping/Receiver/Receiver_exec.h: + * DAnCE/examples/Swapping/Receiver/Receiver_exec_export.h: + * DAnCE/examples/Swapping/Receiver/Receiver_stub_export.h: + * DAnCE/examples/Swapping/Receiver/Receiver_svnt_export.h: + * DAnCE/examples/Swapping/Sender/Sender.cidl: + * DAnCE/examples/Swapping/Sender/Sender.idl: + * DAnCE/examples/Swapping/Sender/Sender.mpc: + * DAnCE/examples/Swapping/Sender/Sender_exec.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec_1.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp: + * DAnCE/examples/Swapping/Sender/Sender_exec_2.h: + * DAnCE/examples/Swapping/Sender/Sender_exec_export.h: + * DAnCE/examples/Swapping/Sender/Sender_stub_export.h: + * DAnCE/examples/Swapping/Sender/Sender_svnt_export.h: + * DAnCE/examples/Swapping/Sender/starter.cpp: + + Added a "HelloWorld" example that can test the dynamic + swapping of component implementation capability. + + Thanks to Bala Natarajan + for helping me with this project. + +Sat Mar 19 13:17:37 2005 Jaiganesh B + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + + Made changes to reflect changes made to the infrastructure + to provide the capability in the NodeApplication + to support multiple containers. + +Sat Mar 19 13:13:13 2005 Jaiganesh B + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + * DAnCE/NodeApplicationManager/ImplementationInfo.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + + Changes to reflect the infrasrtuctural changes related + to providing capability in the NodeApplication + to support multiple containers. + + Thanks to Gan Deng for + architecting and implementing this project. + +Sat Mar 19 13:08:18 2005 Jaiganesh B + + * DAnCE/ciao/NodeApplication_Impl.inl: + + Made some changes to fix compiler errors. + +Sat Mar 19 12:48:44 2005 Jaiganesh B + + * DAnCE/ciao/CCM_Core.mpc: + * DAnCE/ciao/CIAO_Config.h: + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/Container_Base.h: + * DAnCE/ciao/Container_Impl.cpp: + * DAnCE/ciao/Container_Impl.h: + * DAnCE/ciao/Container_Impl.inl: + * DAnCE/ciao/Context_Impl_T.cpp: + * DAnCE/ciao/Deployment.idl: + * DAnCE/ciao/Deployment_Core.idl: + * DAnCE/ciao/Dynamic_Component_Activator.cpp: + * DAnCE/ciao/Dynamic_Component_Activator.h: + * DAnCE/ciao/Dynamic_Component_Servant_Base.cpp: + * DAnCE/ciao/Dynamic_Component_Servant_Base.h: + * DAnCE/ciao/Dynamic_Component_Servant_T.cpp: + * DAnCE/ciao/Dynamic_Component_Servant_T.h: + * DAnCE/ciao/Home_Servant_Impl_Base.h: + * DAnCE/ciao/Home_Servant_Impl_T.cpp: + * DAnCE/ciao/Home_Servant_Impl_T.h: + * DAnCE/ciao/NodeApplication_Impl.cpp: + * DAnCE/ciao/NodeApplication_Impl.h: + * DAnCE/ciao/NodeApplication_Impl.inl: + * DAnCE/ciao/Object_Set_T.cpp: + * DAnCE/ciao/Object_Set_T.h: + * DAnCE/ciao/Object_Set_T.inl: + * DAnCE/ciao/Port_Activator_T.cpp: + * DAnCE/ciao/Servant_Activator.cpp: + * DAnCE/ciao/Servant_Activator.h: + * DAnCE/ciao/Servant_Impl_Base.cpp: + * DAnCE/ciao/Servant_Impl_Base.h: + * DAnCE/ciao/Servant_Impl_T.cpp: + * DAnCE/ciao/Servant_Impl_T.h: + * DAnCE/ciao/SwapExec.idl: + * DAnCE/ciao/Swapping_Container.cpp: + * DAnCE/ciao/Swapping_Container.h: + * DAnCE/ciao/Swapping_Container.inl: + * DAnCE/ciao/Swapping_Servant_Home_Impl_Base.cpp: + * DAnCE/ciao/Swapping_Servant_Home_Impl_Base.h: + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp: + * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h: + * DAnCE/ciao/UpgradeableContext.idl: + * DAnCE/ciao/Upgradeable_Context_Impl_T.cpp: + * DAnCE/ciao/Upgradeable_Context_Impl_T.h: + + Added CIAO infrastructure changes to allow NodeApplications + to support multi container instantiation. + + Added CIAO infrastructure changes to allow dynamic + swapping of component implementations. + + Thanks to Gan Deng and + Bala Natarajan for their + help in architecting and implementing these changes. + +Fri Mar 18 18:34:20 2005 Boris Kolpackov + + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp: + * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp: + * CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp: + * CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp: + + First part of the "full" support for members in valuetypes. + + +Thu Mar 17 10:18:33 2005 Jeff Parsons + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added command line option 'custom-container' to the CIDL + compiler backend, and code generation to execute if the + argument to the new option is 'upgradeable'. CIAO + infrastructure changes to support dynamic component + swapping will be merged from a branch shortly - these + CIDL compiler changes will not affect any existing builds + or tests since they don't use the new command line option. + +Fri Mar 11 10:33:28 2005 Will Otte + + * docs/schema/cdp.xsd + + Corrected an incorrect element in the schema. + +Fri Mar 11 12:01:12 UTC 2005 Johnny Willemsen + + * ciao/ComponentsC.h: + * ciao/ComponentsS.h: + * DAnCE/ciao/ComponentsC.h: + * DAnCE/ciao/ComponentsS.h: + * DAnCE/NodeManager/NodeDaemon_Impl.h: + * performance-tests/Benchmark/LatencyTest.h: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.h: + Changed _MSC_VER check + +Fri Mar 4 17:13:16 2005 Jeff Parsons + + * examples/Hello/Hello_Base/Hello_Base.idl: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Receiver/Receiver.idl: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + + Cosmetic changes to IDL files and changes to MPC files to + eliminate unnecessary files in a given project and bring + in missing export header files. + +Thu Mar 3 10:31:10 2005 Jeff Parsons + + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + + - Added support for .cdl file extension similar to + support already in the servant generators. + + - Fixed bug in export include generation. + + Thanks to Matt Emerson , + Ming Xiong , James Hill + and Stoyan Paunov + for reporting these + problems. + + * CIDLC/ServantSourceGenerator.cpp: + + - Replaced remaining instances of generation of 'new' with + 'ACE_NEW' and changed code generation to reduce line + lengths. + + - Changed code generation of Cookie_var for multiplex + receptacles to pass a Cookie* to ACE_NEW, then + assign to the _var, instead of passing in _var.out(), + which causes the allocation to fail on some platforms. + Thanks to Don Busch for reporting + the problem. + +Mon Mar 03 09:37:23 2005 Gan Deng + + * DAnCE/examples/Hello/descriptors/Hello.cdp + * DAnCE/examples/Hello/descriptors/hello.dat + + Remove these two files because the file name is bad. + + * DAnCE/examples/Hello/descriptors/DeploymentPlan.cdp + * DAnCE/examples/Hello/descriptors/NodeManagerMap.dat + + Added these two files. + + * DAnCE/examples/Hello/step-by-step.html + + Fixed this page to reflex the above change. + +Mon Mar 03 08:59:23 2005 Gan Deng + + * DAnCE/examples/Hello/Hello_Base/Hello_Base.mpc + + Fixed the Hello_Base_DnC_svnt project settings which + caused comilation errors. + +Wed Mar 02 11:42:12 UTC 2005 Johnny Willemsen + + * DAnCE/Config_Handlers/Config_Handlers.mpc + * DAnCE/RepositoryManager/RepositoryManager.mpc + * performance-tests/Protocols/Controller/Controller.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/RTCCM/DiffServ/Controller/Controller.mpc + Use exceptions as base project instead of requires exceptions + +Mon Mar 02 18:30:25 2005 Gan Deng + + * examples/Hello/step-by-step.html + * DAnCE/examples/Hello/step-by-step.html + + Modified these two documentation page to fix some errors. + + * DAnCE/examples/Hello/Hello_Base/Hello_Base.mpc + + Fixed wrong shared library names and project names. + +Sat Feb 26 14:38:46 2005 Arvind S. Krishna + + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC/EC/EC.mpc: + * examples/handcrafted/BasicSP_EC/BasicSP.mpc: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC2/EC/EC.mpc: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc: + * examples/handcrafted/BasicSP_EC2/BasicSP.mpc: + + Replaced all occurances of "dummy" with "dummy_label" + + * bin/replace_dummy_with_dummylabel.sh: + + Shell script that can be used to do this. In case people find it + useful. + + +Tue Feb 22 09:55:51 2005 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + + Fixed typos in code generation that were omitting a space + between the type name and '_ciao_extract_val' for enums, + structs and unions when used as component or home attributes. + Thanks to Steve Baker for + reporting the bug with enums. + +Fri Feb 18 10:11:12 UTC 2005 Johnny Willemsen + + * DAnCE/ciao/Servant_Activator.h: + * ciao/Servant_Activator.h: + Added missing includes because of POA refactoring + +Thu Feb 17 14:04:12 UTC 2005 Johnny Willemsen + + * ciao/Component_Base.idl: + Fixed typo in include of orb.idl. Thanks to Roland Schimmack + for reporting this + +Tue Feb 15 22:43:34 2005 Arvind S. Krishna + + * DAnCE/examples/BasicSP/BMDisplay_exec.h: + + Added missing export file to make things compile on Windows + platforms. Thanks to Diana Ukleja + for pointing this out. + +Mon Feb 14 14:52:32 2005 Gan Deng + + * DAnCE/NEWS + + Updated the NEWS file by adding support for parsing + hierarchical assembly of component descriptors. + +Sun Feb 13 13:25:12 UTC 2005 Johnny Willemsen + + * Release: + Removed CIAO-INSTALL from the release files. It is already + picked up because we include the complete CIAO directory + +Fri Feb 11 11:12:21 2005 Gan Deng + + * DAnCE/NEWS + + Updated the NEWS file by adding support for setting up + attribute in component configuration. + +Fri Feb 11 11:10:54 2005 Will Otte + + * docs/schema/Modified_Deployment.xsd: + + Corrected a couple mistakes in the schema. + +Thu Feb 10 07:11:04 2005 Johnny Willemsen + + * CIAO version 0.4.4 released. + +Tue Feb 08 10:04:21 2005 Gan Deng + + * DAnCE/NEWS + + Updated the NEWS file for the coming 0.4.4 release. + +Mon Feb 7 09:49:12 UTC 2005 Johnny Willemsen + + * Release: + Added CIAO-INSTALL to the release files + +Fri Feb 4 09:35:00 2005 Emre Turkay + + * DAnCE/examples/Hello/descriptors/basicNodeDaemon.pl: + The perl script to create node daemons created. + + * DAnCE/examples/Hello/step-by-step.html: + Step by step tutorial for the DAnCE. + +Fri Feb 4 12:11:12 UTC 2005 Johnny Willemsen + + * tools/RTComponentServer/RTConfig_Manager.h: + Include SString.h instead of SStringfwd.h to fix compile errors with + CBuilderX + +Thu Feb 3 20:01:12 UTC 2005 Johnny Willemsen + + * tools/Segment_Timer/Segment_Timer.mpc: + Removed TAO_ROOT again, the gnu template has been changed so that + when CIAO is detected, also TAO_ROOT is set + +Thu Feb 3 12:32:12 UTC 2005 Johnny Willemsen + + * DAnCE/ciao/NodeApplication_Impl.h: + Added include of ace/SString.h to fix compile errors with CBuilderX + +Thu Feb 3 10:11:12 UTC 2005 Johnny Willemsen + + * tools/Segment_Timer/Segment_Timer.mpc: + Added $(TAO_ROOT) so that MPC creates a correct GNU makefile + +Wed Feb 2 19:48:12 UTC 2005 Johnny Willemsen + + * rules.ciao.GNU: + Fixed error in this file + +Wed Feb 2 09:39:25 2005 Chad Elliott + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + * CIDLC/CIDLC.mpc: + + Converted includes to incorporate $(CIAO_ROOT). This allows the + GNUACEProjectCreator to recognize these projects as CIAO projects. + + * DAnCE/ciao/CCM_Core.mpc: + * ciao/CCM_Core.mpc: + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + * tools/Segment_Timer/Segment_Timer.mpc: + + Added a bogus include of $(CIAO_ROOT). This allows the + GNUACEProjectCreator to recognize these projects as CIAO projects. + +Wed Feb 2 14:33:12 UTC 2005 Johnny Willemsen + + * rules.ciao.GNU: + New rules file to set the correct SOVERSION and SONAME values + +Wed Feb 2 10:51:12 UTC 2005 Johnny Willemsen + + * ciao/Port_Activator_T.cpp: + Added include of OS_NS_string.h to get ACE_OS::strcmp + +Tue Feb 1 18:09:12 UTC 2005 Johnny Willemsen + + * ciao/CCM_Core.mpc: + * DAnCE/ciao/CCM_Core.mpc: + Removed some ciaoversion based projects I missed during my checkin + below + +Tue Feb 1 13:41:12 UTC 2005 Johnny Willemsen + + * ciao/CCM_Core.mpc: + * DAnCE/ciao/CCM_Core.mpc: + Removed ciaoversion as base project. This will be removed because it + results in the fact that each generated GNU makefile will get the + version number generated. We want that the GNU make rules get the + version number from Version.h + +Mon Jan 31 21:00:12 2005 Ossama Othman + + * CIDLC/ServantSourceGenerator.cpp (pre): + + Generate '#include "ace/OS_NS_string.h"' directive. CIAO CIDL + servant sources call ACE_OS::strcmp(), the prototype of which is + found in that header. Necessitated by inter-header dependency + reductions in ACE. + +Mon Jan 31 11:59:04 2005 Ossama Othman + + * DAnCE/Config_Handlers/Any_Handler.cpp: + * DAnCE/Config_Handlers/CPK_Handler.cpp: + * DAnCE/Config_Handlers/DT_Handler.cpp: + * DAnCE/Config_Handlers/Property_Handler.cpp: + * DAnCE/Config_Handlers/RS_Handler.cpp: + * DAnCE/Config_Handlers/Requirement_Handler.cpp: + * DAnCE/Config_Handlers/SP_Handler.cpp: + * DAnCE/ciao/Port_Activator_T.cpp: + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * ciao/Container_Impl.cpp: + * performance-tests/Protocols/Controller/Controller.cpp: + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/RTServer_Impl.cpp: + + Added missing header include directives that are necessary due + to inter-header dependency reductions in ACE. + +Sun Jan 30 20:30:46 2005 Ossama Othman + + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/ciao/Container_Base.cpp: + * DAnCE/ciao/NodeApplication_Impl.cpp: + * ciao/Container_Base.cpp: + * ciao/ServerActivator_Impl.h: + * docs/tutorial/Hello/hello_exec.cpp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * tests/RTCCM/Priority_Test/Controllers/client.cpp: + * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp: + * tools/Assembly_Deployer/Deployment_Configuration.h: + * tools/RTComponentServer/RTServer_Impl.cpp: + + Added missing header include directives that are necessary due + to inter-header dependency reductions in ACE. + +Sun Jan 23 01:49:51 2005 Marek Brudka + + * examples/OEP/Display/NavDisplayGUI_exec/README (Module): + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc (Module): + Changes related with separation of GUI reactors. + The additional information is avalaible in ChangeLog at REACTOR_SEPARATION branch (below). + + Mon Dec 6 00:39:19 2004 Marek Brudka + + * examples/OEP/Display/NavDisplayGUI_exec/README (Module): + Remove reference to ACE_HAS_QT. + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc (Module): + Removed deprecated qt_moc base project. + +Fri Jan 21 17:27:12 2005 Gan Deng + + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc + + Fixed dependency relationship by making + NodeAppTest_RoundTrip_stub depending on CIAO_DnC_Container. + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp + + Fixed warning on Debian_Full_Reactor build. The warning is + caused because of assigning "const char*" to a "char *" type. + + Thanks Johnny Willemsen for pointing + these. + +Thu Jan 20 18:29:47 2005 Ossama Othman + + * DAnCE/Config_Handlers/Any_Handler.cpp: + * DAnCE/Config_Handlers/Utils.cpp: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * tools/Daemon/Daemon_Impl.cpp: + + Converted all ACE_{static,dynamic,reinterpret,const}_cast macros + calls to their standard C++ counterparts using new + bin/ACE-casts-convert script. The ACE cast macros were + deprecated back in ACE 5.4.2. + +Thu Jan 20 09:54:04 2005 Nanbor Wang + + * examples/OEP/Display/descriptors/NOTE.txt: + * examples/OEP/Display/descriptors/NOTE-win.txt: + + Fixed the discrepancy on using Assembly_Deployer. Thanks to + Martina Yen for reporting this. + +Wed Jan 19 09:39:14 2005 Gan Deng + + * DAnCE/examples/BasicSP/BasicSP.mpc + * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc + * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc + * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc + * DAnCE/examples/BasicSP/EC/EC.mpc + + Changed the shared component library name from + _DnC_ to _, + since it doesn't make sense to let the modelers to put _DnC + trailing a component name. + + The same change applied to _svnt and _exec libraries. + + * DAnCE/examples/BasicSP/descriptors/basicNodeDaemon.pl + + Fixed this script since Some earlier cosmetic change make + this perl script broken. + + Thanks Steven Baker and + Sam Abbe to pointing errors to + run this example. + +Sat Jan 15 15:16:14 2005 Gan Deng + + * DAnCE/examples/BasicSP/README.html + + Updated this README file for instructions on running the BasicSP + example by using DAnCE. Thanks Sam Abbe + for pointing errors on this document page. This fixes bugid + 2031. + +Mon Jan 10 09:45:14 2005 Nanbor Wang + + * DAnCE/RTNodeApplication/RTServer_Impl.h: + * DAnCE/RTNodeApplication/RTServer_Impl.cpp: Removed init method + altogether. VC6 can't handle the syntax and we'll deal with + later. + +Fri Jan 7 10:02:02 2005 Nanbor Wang + + * DAnCE/RTNodeApplication/RTServer_Impl.cpp (init): Changed to + call the virtual function defined by the parent explicitly with + this pointer to work around a VC6 bug. + +Wed Jan 5 15:20:12 UTC 2005 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Deployment_Configuration.inl: + * DAnCE/tests/Config_Handlers/Handler_Test.i: + Removed inl/i file, updated h,cpp + +Wed Jan 5 14:57:12 UTC 2005 Johnny Willemsen + + * tools/Assembly_Deployer/Deployment_Configuration.{h,cpp,inl}: + * tools/XML_Helpers/XML_Utils.{h,cpp,inl}: + Removed inl file, updated h,cpp + +Wed Jan 5 10:45:12 UTC 2005 Johnny Willemsen + + * DAnCE/RTNodeApplication/RTServer_Impl.h: + Fixed compile problem in emulated exception builds due to + incorrect environment macro + +Mon Jan 3 10:01:09 2005 Nanbor Wang + + * DAnCE/RTNodeApplication/README: + * DAnCE/RTNodeApplication/NodeApplication_Task.cpp: + * DAnCE/RTNodeApplication/NodeApplication_Task.h: + * DAnCE/RTNodeApplication/NodeApplication_Task.inl: + * DAnCE/RTNodeApplication/RTNodeApplication.cpp: + * DAnCE/RTNodeApplication/RTNodeApplication.mpc: + * DAnCE/RTNodeApplication/RTServer_Impl.cpp: + * DAnCE/RTNodeApplication/RTServer_Impl.h: + * DAnCE/RTNodeApplication/RTServer_Impl.inl: + * DAnCE/RTNodeApplication/senv.sh: Added a minimal + real-time-enabled NodeApplication server. + +Mon Jan 3 12:20:12 UTC 2005 Johnny Willemsen + + * ciao/CCM_Core.mpc: + * DAnCE/ciao/CCM_Core.mpc: + Added ciaoversion as base project to all projects so that SOVERSION + is set to the correct version number in the GNU makefiles + +Thu Dec 30 13:24:16 2004 Chris Cleeland + + * CIAO version 0.4.3 released. + + diff --git a/modules/CIAO/ChangeLogs/ChangeLog-06b b/modules/CIAO/ChangeLogs/ChangeLog-06b new file mode 100644 index 00000000000..b7797cca18a --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-06b @@ -0,0 +1,2752 @@ +Fri Nov 17 16:08:43 UTC 2006 Jeff Parsons + + * performace-tests/Protocols/common/Protocols_svnt_export.h: + + Removed this file, renamed as the one added below. + + * performace-tests/Protocols/common/Protocols_skel_export.h: + + New file, renamed from the one removed above. + + * performace-tests/Protocols/Sender/Sender.idl: + * performace-tests/Protocols/Sender/Sender.mpc: + * performace-tests/Protocols/Receiver/Receiver.mpc: + * performace-tests/Protocols/Receiver/Receiver.idl: + * performace-tests/Protocols/common/Protocols.mpc: + * performace-tests/Protocols/common/Protocols.idl: + + Fixes to incorrect generation by generate_component_mpc.pl, + similar to those in + + Wed Nov 15 19:56:46 UTC 2006 Jeff Parsons + + Also removed include of Components.idl from Protocols.idl, + since it contains no component or eventtype declarations, + and added the include to Sender.idl and Receiver.idl. + +Thu Nov 16 14:41:24 UTC 2006 Jeff Parsons + + * tests/Bug_2130_Regression/interfaces/ENW_svnt_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_svnt_export.h: + + Removed these files, added as renamed below. + + * tests/Bug_2130_Regression/interfaces/ENW_skel_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h: + + New files, renamed from those removed above. + + * tests/Bug_2130_Regression/interfaces/ENW.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc: + * docs/tutorials/Quoter/Simple/Broker/Broker.mpc: + + Fixes to incorrect generation by generate_component_mpc.pl, + similar to those in + + Wed Nov 15 19:56:46 UTC 2006 Jeff Parsons + +Wed Nov 15 19:56:46 UTC 2006 Jeff Parsons + + * examples/Display/Display_Base/Display_Base_svnt_export.h: + + Removed this file, and added it as named below. + + * examples/Display/Display_Base/Display_Base_skel_export.h: + + New file, renamed from the one removed above. + + * examples/Display/Display_Base/Display_Base.mpc: + + Fixed incorrect export macros that were originally generated + by generate_component_mpc.pl. Also removed the -GT IDL + compiler command line option, which generated unnecessar + tie classes and template files (added by a base MPC project), + and made cosmetic changes to line breaks. Finally, + renamed project Display_Base_svnt to Display_Base_skel, + to eliminate confusion since the projects in this MPC + file are object-based, not component-based. The export + macros and export include files were also renamed, as + described above, consistently with these last changes. + + * examples/GPS/GPS.mpc: + * examples/NavDisplay/NavDisplay.mpc: + * examples/RateGen/RateGen.mpc: + + Renamed references to the Display_Base_svnt lib to be + consistent with the name change above, removed -GT + from the command line options passed to the IDL compiler, + and added -SS (suppress skeleton file generation) and + -St (suppress typecode and Any operator generation) from + *_svnt projects, and removed 'idlflags' line from + *_exec projects without IDL files. + +Wed Nov 15 10:30:00 UTC 2006 Simon Massey + + * NEWS: + + Entries submitted by Shanshan Jiang and Johnny Willemsen. + +Tue Nov 14 16:27:55 UTC 2006 Jeff Parsons + + * examples/Null_Component/Null_Component.mpc: + + Updated lib names in 'libs +=...' lines, overlooked in + + Mon Nov 13 16:54:47 UTC 2006 Jeff Parsons + +Tue Nov 14 09:00:00 UTC 2006 Simon Massey + + * NEWS: + + Entry submitted by Boris Kolpackov. + +Mon Nov 13 16:54:47 UTC 2006 Jeff Parsons + + * examples/Null_Component/Null_Interface_svnt_export.h: + + Removed this file, renamed as below. + + * examples/Null_Component/Null_Interface_skel_export.h: + + Added this file, renamed from removed file above. + + * examples/Null_Component/Null_Interface.mpc: + + Renamed several things corresponding to the renaming + change above and replace export macro definition in + the skel project with separate stub and skel export + macro definitions and corresponding included. Also + added typecode/Any suppression command line option + -St to IDL compiler execution for both stub and skel + projects, and reduced MPC base project dependencies + (and thus link dependencies) to a minimum. + + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/StaticDAnCEApp.mpc: + + Renamed items corresponding to change above. + +Fri Nov 10 16:10:12 UTC 2006 Johnny Willemsen + + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + Removed deprecated -Sc option from idlflags + +Wed Nov 8 20:56:12 UTC 2006 Johnny Willemsen + + * examples/Null_Component/*: + Added some modelling files I got also from Abdul and removed the .ccd file + I committed by accident + +Wed Nov 8 14:24:12 UTC 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + Fixed a small memory leaks and other problems. This fixes bugzilla + 2692. Thanks to Sowayan Abdullah + for reporting these issues. + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + A few small improvements + +Sun Nov 5 19:16:57 UTC 2006 Shanshan Jiang + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + Removed the use of STL iostream. + Use ACE DLL decorator, prefix, suffix for DLL file names. + + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + Removed the use of STL iostream. + +Fri Nov 3 03:03:24 UTC 2006 Shanshan Jiang + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/RepositoryManager/PC_Updater.cpp + Modified these files to differentiate the location field of + deploymentplan for different platforms. + +Thu Nov 2 22:54:12 UTC 2006 Jeff Parsons + + * CIDLC/ServnatSourceGenerator.cpp: + + Added generation of code to register eventtype factories with + the container ORB for components with publish and emit ports + (generation of such registration for components with consume + ports already existed). This additional registration is necessary + if the component sends an event using a CIAO Event Service + event channel that is collocated with it. + +Thu Nov 2 20:22:46 UTC 2006 Douglas C. Schmidt + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp (main): + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp (main): + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp (main): + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/NodeManager/Node_Manager.cpp (main): Replaced exit() with + ACE_OS::exit(). Thanks to Abdul Sowayan for reporting this. + This fixes bugid #2695. + +Mon Oct 30 19:13:03 UTC 2006 Jeff Parsons + + * tests/IDL3/Events/Any/EventAny.idl: + * tests/IDL3/Events/Any/Any.mpc: + * tests/IDL3/Events/Any/main.cpp: + * tests/IDL3/Events/Any/README: + * tests/IDL3/Events/Any/run_test.pl: + + New test, to ensure that IDL eventtypes are + inserted/extracted from Anys correctly, and that + the resulting Anys are marshaled/demarshaled + correctly. + + * tests/IDL3/Events/Regular/Regular.mpc: + + Added backslashes to shorted 'idlflags' line. + +Mon Oct 30 13:26:00 UTC 2006 Simon Massey + + * DAnCE/TargetManager/CmpClient.cpp + BUILDCZAR removing old scoreboard warning. + +Thu Oct 26 14:37:12 UTC 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + Use ACE_OS methods, this fixes bugzilla 2691. + Thanks to Sowayan Abdullah + for reporting this issue + +Wed Oct 25 14:54:03 UTC 2006 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp: + * CCF/CCF/CIDL/SemanticAction/Composition.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp: + * CCF/CCF/IDL3/SemanticAction/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/EventType.hpp: + * CCF/CCF/IDL3/SemanticAction/Home.hpp: + + Minor fixes and cleanups. + + * CCF/CCF/IDL2/Parsing/Recovery.hpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/CIDL/Parser.hpp: + * CCF/CCF/CIDL/Parser.cpp: + * CCF/CCF/IDL3/Parser.hpp: + * CCF/CCF/IDL3/Parser.cpp: + + Added syntax errors to every grammar rule. + +Wed Oct 25 11:02:12 UTC 2006 Johnny Willemsen + + * examples/Null_Component/StaticDAnCEApp.mpc: + Enabled this project in all builds + +Mon Oct 23 19:35:12 UTC 2006 Johnny Willemsen + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Added missing CORBA::string_dup to fix crash with BCB + +Fri Oct 20 06:41:12 UTC 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + Changed the HomeAttributes generation in such a way that it + also compiles with BCB6 + + * examples/Null_Component/*: + New example, a component with just one interface. This can be used + to analyze the core footprint and see what we can reduce + Thanks to Sowayan Abdullah + for creating this example + +Thu Oct 19 23:22:49 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/RepositoryManager.mpc + Modified this file to make sure RepositoryManager project is built + after minizip project. + +Thu Oct 19 10:47:12 UTC 2006 xiong,ming + + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp + * examples/BasicSP/EC/controller.cpp + * examples/Display/RateGen/controller.cpp + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp + Changed the naked atoi () to ACE_OS::atoi (), again thanks to Abdul + for reporiting this. + +Wed Oct 18 14:00:04 UTC 2006 Douglas C. Schmidt + + * docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp + (parse_args): Changed the naked atoi() to ACE_OS::atoi(). + Thanks to Abdul for reporting this. + +Wed Oct 18 12:05:00 UTC 2006 Simon Massey + + * DAnCE/TargetManager/DomainDataManager.cpp + Removed warnings about unused local variables (line 186 & 558) + +Wed Oct 18 09:50:00 UTC 2006 Simon Massey + + * DAnCE/TargetManager/CmpClient.cpp + Removed warning about unused local variable (line 154) + +Tue Oct 17 21:23:27 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/README + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/RepositoryManager/ZIP_Wrapper.h + Updated these files to use minizip under $ACE_ROOT/contrib/minizip. + +Tue Oct 17 13:40:12 UTC 2006 Johnny Willemsen + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Several small layout changes and use ACE_ERROR for + errors + +Tue Oct 17 13:30:12 UTC 2006 Johnny Willemsen + + * DAnCE/NodeApplication/RTNodeApp_Configurator.{h,cpp}: + Moved destructor implementation to cpp file + +Tue Oct 17 13:10:12 UTC 2006 Johnny Willemsen + + * DAnCE/NodeManager/CIAO_Monitor.h: + Doxygen improvements + + * DAnCE/NodeManager/NAM_Map.{h,cpp}: + Made is_available a const method + + * DAnCE/NodeManager/Node_Manager.cpp: + Use bool + + * DAnCE/NodeManager/Node_Manager_Impl.cpp: + Use ACE_ERROR together with LM_ERROR + +Tue Oct 17 12:32:12 UTC 2006 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + Use ACE_ERROR together with LM_ERROR + + * DAnCE/NodeApplication/NodeApplication_Impl.inl: + Initialise pointers with 0 + + * DAnCE/NodeApplication/Configurator_Factory.{h,cpp}: + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + Use bool and const improvements, doxygen improvements + +Mon Oct 16 19:52:15 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + Updated the re_launch_plan () function for Repoman integration. + + * DAnCE/RepositoryManager/README + * DAnCE/RepositoryManager/RepositoryManager.cpp + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * examples/BasicSP/RepoMan_Usage.html + Fixed some warnings on Liunx. + Fixed the "Deamon" typos. + +Mon Oct 16 15:11:40 UTC 2006 Nilabja R + + * DAnCE/TargetManager/TM_Client.mpc: + Fixed the linking error in Mac and in FC5 Static + +Mon Oct 16 11:20:00 UTC 2006 Simon Massey + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + BUILD CZAR. Due to the removal of + DAnCE/NodeApplication/NodeApp_Configurator.cpp to correct + the fuze error below, this "other" project's MPC needed to + be updated. (Why is this dependancy here?) + +Mon Oct 16 11:20:00 UTC 2006 Simon Massey + + * DAnCE/NodeApplication/NodeApp_Configurator.cpp + * DAnCE/TargetManager/DomainEvents.idl + BUILD CZAR. Removed Fuzz errors after no user action to correct. + +Mon Oct 16 08:35:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/IDREF_Base.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/RT-CCM/PS_Handler.cpp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp + * DAnCE/RepositoryManager/ + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + Use ACE_ERROR together with LM_ERROR + + * RACE/Controller/Component/Controller.idl: + Changed some comments to doxygen style + + * DAnCE/RepositoryManager/PC_Updater_T.cpp: + Const change + + * DAnCE/RepositoryManager/RepositoryManager.cpp: + Layout changes + + * DAnCE/RepositoryManager/RM_Helper.cpp: + Use strcmp to compare two strings and several layout changes + + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + Doxygen changes + + * DAnCE/RepositoryManager/RMadmin.cpp: + Documentation changes + + * DAnCE/RepositoryManager/URL_Parser.{h,cpp}: + Use bool for debug_ + + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + Initialise pointers with 0 + +Mon Oct 16 08:35:12 UTC 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl: + Simplified this file by using the new ciao_static_dnc_app base + project. + +Fri Oct 13 17:57:12 2006 John S. Kinnebrew + + * docs/schema/SANet_Network.xsd + * docs/schema/Task_Map.xsd + + Added SA-POP schemas. + +Fri Oct 13 17:54:58 UTC 2006 Nilabja Roy + + * DAnCE/TargetManager/TargetManager.mpc: + Addressed the problems coming up in Mac. Changed the project + inheritence of the TM Component. + +Fri Oct 13 17:43:29 UTC 2006 Nilabja Roy + + * DAnCE/TargetManager/DomainDataManager.cpp: + Addressed an error in the last check-in. + +Thu Oct 12 17:36:58 UTC 2006 Nilabja Roy + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/DomainEvents.idl: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.idl: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerExt.idl: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Added the functionality to detect any add/delete to the Domain. + Added the feature to relay events to anyone interested for the above. + + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl: + Changed the test script to test the above + +Tue Oct 10 19:13:12 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl: + Fixed compile error. + Thanks to Sowayan Abdullah + for reporting this. + +Tue Oct 10 17:56:51 UTC 2006 Shanshan Jiang + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + Modify these files to get the artifacts names when using http reference. + +Tue Oct 10 14:24:12 2006 Johnny Willemsen + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + Layout improvements, use ACE_ERROR with LM_ERROR + + * DAnCE/ExecutionManager/DAM_Map.cpp: + Const improvements + + * DAnCE/NodeApplicationManager/Containers_Info_Map.h: + Layout changes + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Use ACE_ERROR with LM_ERROR + + * DAnCE/NodeApplicationManager/ImplementationInfo.h: + Documentation improvements + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + Const improvements + + * DAnCE/NodeApplicationManager/HTTP_Handler.cpp: + Const improvements + +Tue Oct 10 09:28:12 2006 Johnny Willemsen + + * ciao/CCM_Base.idl: + Removed a remark about RTF 1.1, method is now according to the spec + + * ciao/CCM_Component.idl: + * ciao/CCM_Container.idl: + * ciao/CCM_Event.idl: + * ciao/Deployment.idl: + * ciao/Target_Data.idl + Updated some documentation and added some todos about things which + are CIAO specific + + * ciao/Server_init.cpp: + With LM_ERROR use ACE_ERROR + + * ciao/Dynamic_Component_Activator.{h,cpp}: + Removed some invalid comments and a mutex that was not used at all + + * ciao/Context_Impl_Base.h: + Documentation update + +Thu Oct 05 00:35:37 2006 William R. Otte wotte@dre.vanderbilt.edu + + * CIAO version 0.5.3 released. + +Wed Oct 4 08:12:24 UTC 2006 Boris Kolpackov + + * NEWS: + + Updated with entries for the CIDL compiler work. + +Tue Oct 3 15:16:40 UTC 2006 Shanshan Jiang + + * NEWS: + + Updated the NEWS to add the changes for Repoman and Plan_Generator + projects. + +Tue Oct 3 12:49:16 UTC 2006 xiong,ming + + * NEWS: + + Updated the NEWS to add the changes for CoSMIC Quoter tutorial + +Mon Oct 2 09:28:58 UTC 2006 Johnny Willemsen + + * docs/index.html: + Corrected linked to OMG spec + +Mon Oct 2 08:58:58 UTC 2006 Johnny Willemsen + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Set the nodemanager in the static nodeapplication manager. + Thanks to Sowayan Abdullah + for reporting this. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + Doxygen improvement + +Thu Sep 28 16:47:58 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + Added the base projects to Plan_Launcher_Impl project to include + required libs. Added null head files to the Plan_Launcher project to + remove the unnecessary dependency on other libs. + +Thu Sep 28 15:57:53 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + Fixed the "undefined reference" error on FC5_Static build. + + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp: + Modified this file to handle the possible RepoMan null reference error. + +Tue Sep 26 21:05:48 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Fixed the "conversion from '_var' to 'CORBA::Object*'" warning. + +Tue Sep 26 15:52:12 UTC 2006 Boris Kolpackov + + * docs/tutorials/Quoter/Simple/Broker/Broker.cidl: + * docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl: + + Added missing semicolons. + +Mon Sep 25 23:19:15 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Modified the fetch_reference_naming () to remove its arguments related + to Repoman. + + * DAnCE/Plan_Generator/PCVisitor.h: + Adjusted the order of the data members of Plan_Generator_i class. + + +Mon Sep 25 19:46:37 UTC 2006 Nishanth Shankaran + + * DAnCE/Plan_Generator/Plan_Generator.mpc (project): Fixed the MPC + file by removing the "requires += RepositoryManager" as this + project, as well as other projects that depend on this, will not + be built unless RepositoryManager=1 is set. + +Mon Sep 25 14:42:03 UTC 2006 Nishanth Shankaran + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: Fixed the mpc file. + +Mon Sep 25 13:06:05 UTC 2006 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/CIDL/SemanticAction/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Composition.hpp: + + Move some operator<< operators to the global scope so that they + do not hide others. + +Sun Sep 24 21:06:07 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + Removed the unnecessary Repoman head file. + +Sat Sep 23 04:31:13 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * DAnCE/RepositoryManager/RMadmin.cpp + * ciao/RepositoryManager.idl + Added the replace argument in installPackage () and createPackage () + functions and extend the functionalities of these two functions based + on the latest D&C spec. + +Sat Sep 23 04:07:59 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Generator + * DAnCE/Plan_Generator/PCVisitor.cpp + * DAnCE/Plan_Generator/PCVisitor.h + * DAnCE/Plan_Generator/PCVisitorBase.cpp + * DAnCE/Plan_Generator/PCVisitorBase.h + * DAnCE/Plan_Generator/PCVisitorBase.inl + * DAnCE/Plan_Generator/Plan_Generator.mpc + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp + * DAnCE/Plan_Generator/Plan_Generator_Impl.h + * DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h + Added these files which implement the Plan_Generator project. This + project is used to retrieve information from Repoman and generate/modify + DeploymentPlans based on different demands. + + * DAnCE/Planner + * DAnCE/Planner/Node_T.cpp + * DAnCE/Planner/Node_T.h + * DAnCE/Planner/Node_T.inl + * DAnCE/Planner/PCVisitor.cpp + * DAnCE/Planner/PCVisitor.h + * DAnCE/Planner/PCVisitorBase.cpp + * DAnCE/Planner/PCVisitorBase.h + * DAnCE/Planner/PCVisitorBase.inl + * DAnCE/Planner/Planner.cpp + * DAnCE/Planner/Planner.mpc + Deleted these files. The planner project has been replaced by the more + useful Plan_Generator project. + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + Modified these files. + + * DAnCE/Plan_Generator/PCVisitor.cpp + * DAnCE/Plan_Generator/PCVisitor.h + * DAnCE/Plan_Generator/PCVisitorBase.cpp + * DAnCE/Plan_Generator/PCVisitorBase.h + * DAnCE/Plan_Generator/PCVisitorBase.inl + Deleted these files. + Removed the Plan_Launcher's dependence on RepoMan. Use Plan_Generator + to retrieve information from Repoman and generate/modify DeploymentPlans. + +Fri Sep 22 09:27:25 UTC 2006 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.cpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.cpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.hpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.hpp: + * CCF/CCF/IDL2/SemanticGraph/String.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticGraph/Enum.hpp: + * CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp: + * CCF/CCF/IDL2/SemanticGraph/String.hpp: + * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp: + * CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp: + * CCF/CCF/IDL2/SemanticGraph/Name.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4: + * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp: + * CCF/CCF/IDL2/SemanticGraph/Array.hpp: + * CCF/CCF/IDL2/SemanticGraph/Name.hpp: + * CCF/CCF/IDL2/SemanticGraph/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/Native.hpp: + * CCF/CCF/IDL2/SemanticGraph/Union.hpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp: + * CCF/CCF/IDL2/SemanticGraph/Exception.hpp: + * CCF/CCF/IDL2/SemanticGraph/Translation.hpp: + * CCF/CCF/IDL2/SemanticGraph/TypeId.hpp: + * CCF/CCF/IDL2/SemanticGraph/Graph.hpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.hpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp: + * CCF/CCF/IDL2/SemanticGraph/Member.hpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4: + * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp: + * CCF/CCF/IDL2/SemanticGraph/Literals.cpp: + * CCF/CCF/IDL2/SemanticGraph/Graph.tpp: + * CCF/CCF/IDL2/SemanticGraph/Literals.hpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.hpp: + * CCF/CCF/IDL2/SemanticGraph/Module.hpp: + + * CCF/CCF/CIDL/SemanticGraph/Executor.cpp: + * CCF/CCF/CIDL/SemanticGraph/Composition.cpp: + * CCF/CCF/CIDL/SemanticGraph/Executor.hpp: + * CCF/CCF/CIDL/SemanticGraph/Composition.hpp: + + * CCF/CCF/IDL3/SemanticGraph/Component.cpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.cpp: + * CCF/CCF/IDL3/SemanticGraph/Component.hpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.hpp: + * CCF/CCF/IDL3/SemanticGraph/Home.hpp: + + + Add file name and line information to every semantic + graph node. This information is used in diagnostics. + + + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp: + + Adjust semantic actions interface to provide a way to derive + line numbers. + + + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp: + + * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp: + + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp: + + Propagate file name and line number from tokens to semantic + graph nodes. Use file and line numbers when printing error + messages. + + + * CCF/CCF/IDL2/Token.hpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/Parser.cpp: + + Fix a number of bugs in error handling and recover. + + + * CIDLC/cidlc.cpp: + + Use file name and line number when creating the translation + unit object. + + +Wed Sep 20 04:05:42 UTC 2006 xiong,ming + + * docs\tutorials\CoSMIC\02.html + + Added some useful links to various resources to help readers reduce + learning curve.Added a small section that mentions that a Node Map file + has to be created in order to get Quoter example working. Again, + Thanks to Sowayan Abdullah from LMCO for his help in improving the + cosmic documentations. + + +Mon Sep 18 03:26:22 UTC 2006 William R. Otte + + * tools/Config_Handlers/Utils/XML_Helper.h + + Fixed compile error by removing extra ;. + +Fri Sep 15 21:28:47 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * ciao/Deployment_Core.idl + + Removed the unnecessary event type definition for RTEC since + they are no longer used. + +Sun Sep 10 09:20:18 UTC 2006 William R. Otte + + * tools/Config_Handlers/Utils/XML_Helper.cpp + * tools/Config_Handlers/Utils/XML_Helper.h + + Removed workaround from previous commit, as Ossama Othman has + provided the proper fix in the G++ macros. + +Fri Sep 8 00:28:27 UTC 2006 William R. Otte + + * tools/Config_Handlers/Utils/XML_Helper.cpp + * tools/Config_Handlers/Utils/XML_Helper.h + + Made the export declaration on the singleton typedef + contingent on a Microsoft compiler, as the GCC included + with FC5 was not defining the symbol as a result. + +Fri Sep 1 03:09:38 UTC 2006 xiong,ming + + * docs\tutorials\CoSMIC\index.html + * docs\tutorials\CoSMIC\01.html + + Updated index.html to change the cosmic version.Updated 01.html + to reflect recent changes of idl_to_picml. Thanks to Sowayan Abdullah + from LMCO for his help in improving the cosmic documentations. + +Thu Aug 31 22:45:09 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/RepositoryManager.mpc + Modified this file to include $(CIAO_ROOT)/tools/Config_Handlers + in the RMAdmin project. + +Wed Aug 30 17:16:18 UTC 2006 Shanshan Jiang + + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + Added more changes to this file to fix the "reference to + ACE_Singleton + ::instance()'"warnings with FC5_Static build. + +Tue Aug 29 23:08:20 UTC 2006 Shanshan Jiang + + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + Fixed the "reference to `ACE_Singleton::instance()'"warnings with + FC5_Static build. + + * DAnCE/RepositoryManager/RMadmin.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + Removed unnecessary using of CIAO::Config_Handlers::XML_Helper. + +Mon Aug 28 12:53:12 UTC 2006 Johnny Willemsen + + * ciao/Container_Base.cpp: + Fixed some compile warnings with gcc 2.96 + +Thu Aug 24 15:44:08 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + Changed some of the command-line options. + + * examples/BasicSP/RepoMan_Usage.html + Made some minor changes. + +Thu Aug 24 000:41:16 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/PCVisitor.cpp + * DAnCE/Plan_Launcher/PCVisitor.h + * DAnCE/Plan_Launcher/PCVisitorBase.cpp + * DAnCE/Plan_Launcher/PCVisitorBase.h + Solved the "'class has virtual functions but non-virtual destructor" + warnings. + +Wed Aug 23 17:57:15 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/PCVisitorBase.h + Solved the "invalid use of undefined type 'struct PCVisitorBase'" + warnings. + +Wed Aug 23 15:22:36 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/PCVisitor.cpp + Solved the "unused parameter" warning. + +Wed Aug 23 000:04:06 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/README + Made some minor changes. + +Wed Aug 23 000:00:43 UTC 2006 Shanshan Jiang + + * examples/BasicSP/descriptors/basicNodeDaemon.pl + Use "$ENV{'ACE_ROOT'}/bin" to point to the location of lib file. + +Tue Aug 22 23:47:06 UTC 2006 Shanshan Jiang + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + Modified these files for RepoMan integration. + + * DAnCE/Plan_Launcher/PCVisitor.cpp + * DAnCE/Plan_Launcher/PCVisitor.h + * DAnCE/Plan_Launcher/PCVisitorBase.cpp + * DAnCE/Plan_Launcher/PCVisitorBase.h + * DAnCE/Plan_Launcher/PCVisitorBase.inl + Added these files for RepoMan integration. + + * examples/BasicSP/RepoMan_Usage.html + Added this file, which explains how to run the BasicSP example using + the integrated RepoMan. + +Mon Aug 21 15:19:25 UTC 2006 Nishanth Shankaran + + * examples/Hello/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: Fixed the + environment variable DANCE_ROOT to point to CIAO_ROOT/DAnCE. + +Thu Aug 17 16:09:09 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/Options.cpp + * DAnCE/RepositoryManager/RMadmin.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + Reimplemented the findNamesByType () and getAllTypes () operations + of Repository Manager, which use the newly generated + ACE_Hash_MultiMap_Manager class and its corresponding classes. + +Mon Aug 14 15:46:34 UTC 2006 William R. Otte + + * tools/Config_Handlers/Utils/XML_Helper.h + + Fixed a compile error for pedantic GCC4. + +Sun Aug 13 15:18:00 UTC 2006 Boris Kolpackov + + * CCF/CCF/CodeGenerationKit/Regex.hpp: + + Reimplemented regex wrapper to allow building CIDLC on + platforms without wchat_t support (e.g., Cygwin/Mingw). + +Fri Aug 11 11:46:17 UTC 2006 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Name.cpp: + * CCF/CCF/IDL2/SemanticGraph/Name.hpp: + + Added support for IDL (underscore) escaping. Added support + for custom name printers. + + * CIDLC/UnescapedNamePrinter.hpp: + + Name printer that prints names unescaped (without the IDL + underscore). + + * CIDLC/CxxNamePrinter.cpp: + * CIDLC/CxxNamePrinter.hpp: + + Name printer that escapes C++ keywords. + + * CIDLC/CorbaTypeNameEmitters.cpp: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/RepositoryIdGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/UtilityTypeNameEmitters.cpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/CompositionEmitter.cpp: + + Updated to handle IDL and C++ name escaping. This fixes + bugzilla bug #2427. + +Fri Aug 11 07:30:35 UTC 2006 William R. Otte + + * tools/Config_Handlers/Utils/XML_Helper.h + * DAnCE/RepositoryManager/RMadmin.cpp + + Fixes for a compiler error in the version of GCC shipped with + FC5. + +Wed Aug 9 18:53:48 UTC 2006 Jaiganesh B + + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: + examples/Hello/descriptors_RTCCM/rt-example.cdp: + examples/Hello/descriptors_RTCCM/rt-config-example.csr: + + Fixed the RT-CCM code to conform to the schema changes. Made changes + to the descriptors directory to fix the working example for RT-CCM. + + Thanks to Nanbor Wang for helping fix the codebase. + +Tue Aug 8 07:53:12 UTC 2006 Johnny Willemsen + + * CIAO-INSTALL.html: + Removed vc6 info + +Fri Aug 4 21:40:46 UTC 2006 William R. Otte + + * docs/tutorials/CoSMIC/01.html + * docs/tutorials/CoSMIC/02.html + * docs/tutorials/CoSMIC/03.html + * docs/tutorials/CoSMIC/04.html + * docs/tutorials/CoSMIC/style.css + * docs/tutorials/CoSMIC/index.html + + Style fixes, grammatical and spelling corrections, clarifications. + +Thu Aug 3 20:38:39 UTC 2006 Nanbor Wang + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Fixed RT-CCM support. + +Thu Aug 3 15:33:11 UTC 2006 Boris Kolpackov + + * docs/cidlc.html: + + Regenerated to include the -D and -I options. + +Wed Aug 2 18:52:14 UTC 2006 Boris Kolpackov + + * CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp: + + Added option types: flag or value. + + * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp: + * CCF/CCF/CodeGenerationKit/CommandLineParser.hpp: + * CCF/CCF/CodeGenerationKit/CommandLine.hpp: + + Reimplemented to use hand-coded parser instead of Spirit. The + new implementation takes into account the option types. + + * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineGrammar.cpp: + + Removed. + + * CIDLC/cidlc.cpp: + * CIDLC/ServantGenerator.hpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/DescriptorGenerator.hpp: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/ExecImplGenerator.hpp: + + Updated with the option types. This fixes bugzilla bug #2426. + + +Fri Jul 28 17:53:57 UTC 2006 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Translation.cpp: + + Reimplemented a chunk of code that resulted in what appears to + be invalid code generation by the Intel C++ compiler. This + fixes bugzilla bug #2387. + +Thu Jul 27 18:08:47 UTC 2006 William R. Otte + + * CIAO_TAO.mwc + * CIAO_TAO_DAnCE.mwc + + Replaced relative references to ACE/TAO with absolute references + using environment variables. + +Mon Jul 24 15:45:34 UTC 2006 William R. Otte + + * Subversion conversion completed at revision 73730 + +Sun Jul 23 15:44:43 UTC 2006 William R. Otte + + * Repository frozen for repository conversion + +Sat Jul 22 21:34:57 UTC 2006 Gan Deng + + * ciao/Container_Base.cpp + + Fixed a runtime Segfault bug about destroying POA. The problem + is because a Session_Container creates 2 POAs, one of which is called + facet_cons_POA which uses the Servant_Activator policy to activate component + ports (facets, consumers) on demand, then the Servant_Activator object + was deleted when the Session_Container object is out of scope in its + destructor. But when the ORB finally shuts itself down, it tries + to clean all the resources including the facet_cons_POA, since the + Servant_Activator attached to this POA is long gone, a segfault + occurs in the cleaning up phase. The right fix is to destroy all the POAs + associated with this Session_Container in its destructor together with the + Servant_Activator. Thanks Phlip for a + bug report. + +Thu Jul 20 22:03:31 UTC 2006 Nanbor Wang + + * docs/schema/ServerResourceUsage.txt: Revised the document to + change how a policy set should be hooked into a component + instance. This needs to be changed to reflect recent changed in + DnC schema. + +Thu Jul 20 01:10:58 UTC 2006 Vipul Singh + + * DAnCE/RepositoryManager/PC_Updater.cpp: Removed the variable name + from the arguments in function definition in empty functions to + fix warnings. + + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: Changed declaration + at a few places from const static to static const to fix a few + warnings, also removed an unnecessarily defined namespace. + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: Made a few + changes to fix the warnings and to keep the code in sync with + the changes made to RepositoryManager_Impl.h. Fixed code which + passed non POD types to a varargs function(ACE_DEBUG) which + resulted in aborts at runtime. + + * DAnCE/RepositoryManager/URL_Parser.cpp: Assigned value to ptr before + if condition to fix a few warnings. + +Wed Jul 19 08:00:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Config_Handlers.mpc: + Use exceptions as base project + +Mon Jul 17 17:49:41 UTC 2006 Ossama Othman + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + + Use new ACE_CString::size_type type to hold string + position/index value, instead of "int". Addresses "comparison + between signed and unsigned" warnings. + +Sat Jul 15 04:21:13 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/README.txt: + Remove this file. + + * DAnCE/RepositoryManager/README: + Add this file. + +Thu Jul 13 18:42:08 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + Fixed a minor error. + +Wed Jul 12 14:00:59 UTC 2006 Shanshan Jiang + + * DAnCE/RepositoryManager/RM_Helper.cpp: + Fixed the "comparison between signed and unsigned integer" warning. + +Tue Jul 11 23:19:58 UTC 2006 Shanshan Jiang + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + Fixed the "conversion from '__int64' to 'size_t', possible loss + of data" warnings. + +Sun Jul 09 06:01:14 2006 Johnny Willemsen + + * CIAO version 0.5.2 released. + +Wed Jul 5 15:31:18 UTC 2006 Shanshan Jiang + + * NEWS + Updated the NEWS file to add the changes of Repoman. + +Tue Jul 4 11:39:12 UTC 2006 Johnny Willemsen + + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Dynamic_Component_Servant_T.cpp: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + Fixed compile problems with VxWorks 5.5.1 and GCC 2.96 + +Tue Jul 4 06:26:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + Don't build this project in the ace_for_tao configuration + +Mon Jul 3 16:20:54 UTC 2006 Jeff Parsons + + * NEWS + + Updated the NEWS file. + +Tue Jun 27 13:37:12 UTC 2006 Johnny Willemsen + + * DAnCE/RepositoryManager/RM_Helper.cpp: + Layout changes + +Fri Jun 23 13:45:38 UTC 2006 Jeff Parsons + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Added $(TAO_ROOT) to the 'includes' line of the executable + project, due to a change in the way TAO/Version.h is + included. + +Thu Jun 22 18:47:47 UTC 2006 Jeff Parsons + + * ciao/Dynamic_Component_Servant_T.cpp: + * ciao/Dynamic_Component_Servant_T.h: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + * ciao/Swapping_Servant_Home_Impl_T.h: + + Made changes to template code corresponding to those in + + Mon Jun 19 14:52:25 UTC 2006 Jeff Parsons + +Mon Jun 19 14:52:25 UTC 2006 Jeff Parsons + + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Home_Servant_Impl_T.h: + * ciao/Servant_Impl_T.cpp + * ciao/Servant_Impl_T.h: + + Reduced the number of template parameters in + the component servant and home servant template + base classes. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Changes to generated servant code corresponding + the the changes in servant base class code + described above. + +Thu Jun 15 20:13:02 UTC 2006 Jeff Parsons + + * tools/IDL3_to_IDL2/be_helper.cpp: + + Uncommented code that outputs our copyright notice. This + change also elinates an unused arg warning for the + copyright notice string. + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Added a newline after opening the file for better readability. + +Thu Jun 15 18:37:43 UTC 2006 Jeff Parsons + + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + + Added ciao_deployment_stub as a base project for + CIAO_Events_Handlers, to eliminate 'unresolved symbol' + linking errors. Thanks to Ming Xiong + for suggesting the fix. + +Thu Jun 15 15:10:58 UTC 2006 Jeff Parsons + + * tools/IDL3_to_IDL2/be_extern.h: + * tools/IDL3_to_IDL2/be_init.cpp: + * tools/IDL3_to_IDL2/be_produce.cpp: + + Changes to keep this backend in sync with changes to the + TAO_IDL front end - see TAO ChangeLog entry of a few + minutes ago. + +Thu Jun 8 16:07:05 UTC 2006 Jeff Parsons + + * ciao/Servant_Impl_Utils_T.cpp (describe_multiplex_receptacle): + + Fixed an error in instantiation of a + Components::ConnectionDescription valuetype - the actual + constructor call should have been on the OBV_* subclass. + +Thu Jun 8 12:29:12 UTC 2006 Johnny Willemsen + + * DAnCE/Planner/PCVisitor.cpp: + Fixed parameter never used warnings + +Wed Jun 7 21:39:00 UTC 2006 William R. Otte + + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc + + Removed unneeded base projects. + +Wed Jun 7 21:07:11 UTC 2006 Jeff Parsons + + * ciao/Servant_Impl_Utils_T.cpp: + + Fixed CORBA memory management rule violations in + Servant_Impl_Base static template methods + describe_pub_event_source(), describe_simplex_receptacle() and + describe_multiplex_receptacle(). Thanks to Phlip + for reporting a problem in + get_all_receptacles() that uncovered the above violations. + +Wed Jun 7 16:52:45 UTC 2006 William R. Otte + + * tools/Config_Handlers/Config_Handlers.mpc + + Fix for linking error in Visual Studio. + +Wed Jun 7 06:04:45 UTC 2006 William R. Otte + + * CIDLC/ExecutorMappingGenerator.cpp + + Modified to generate an include of CCM_Container.idl. + + * ciao/Components.idl + * ciao/ComponentsC.h + * ciao/ComponentsS.h + + Changed Components.idl to include CCM_Component.idl instead of + CCM_Container.idl. This removes a dependancy on the container + library for stub projects. + + Note this commit may be rolled back later based on discussions + on the dance-dev list, I am making it preemptively to resolve + scoreboard problems. + +Tue Jun 6 20:32:53 UTC 2006 William R. Otte + + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/Property_Handler.h + + Compile fixes for Borland. + + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/XMLSchema/Writer.hpp + + Fixes for Borland ICEs. + +Tue Jun 6 13:48:59 UTC 2006 William R. Otte + + * tools/Config_Handlers/Config_Handlers_Common_Export.h + + Missing file from previous commit. + +Mon Jun 5 20:34:51 UTC 2006 William R. Otte + + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/TargetManager/TM_Client.mpc + * RACE/Controller/Component/Controller.mpc + * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + * examples/Display/Display_Base/Display_Base.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Swapping/Hello_Base/Hello_Base.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * performance-tests/Protocols/common/Protocols.mpc + * tests/Bug_2130_Regression/interfaces/ENW.mpc + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc + * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc + * tests/IDL3/Events/Abstract/Abstract.mpc + * tests/IDL3/Events/Regular/Regular.mpc + * tests/IDL3/Homes/Attributes/HomeAttributes.mpc + * tests/IDL3/Homes/Basic/Basic.mpc + * tests/IDL3/Homes/Factory/Factory.mpc + * tests/IDL3/Homes/Finder/Finder.mpc + * tests/IDL3/Homes/Inheritance/Inheritance.mpc + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc + * tests/IDL3/ImpliedIDL/Events/Events.mpc + * tests/IDL3/ImpliedIDL/Homes/Homes.mpc + * tests/IDL3/Lookup/lookup_test.mpc + * tests/Minimum/Minimum_Base/Minimum.mpc + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + + Fixes for linking errors/warnings in OS X. + + * tools/Config_Handlers/Any_Handler.h + * tools/Config_Handlers/CEPE_Handler.h + * tools/Config_Handlers/CPD_Handler.h + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/DataType_Handler.h + * tools/Config_Handlers/ERE_Handler.h + * tools/Config_Handlers/Req_Handler.h + * tools/Config_Handlers/SatisfierProperty_Handler.h + + Factored certain elements used by both the deployment + and packaging handlers into a seperate library, also + fixes for linking errors in OS X. + +Fri Jun 2 18:55:41 UTC 2006 Jeff Parsons + + * tools/Config_Handlers/Config_Handlers.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TM_Client.mpc: + + Shortened long lines. + +Fri Jun 2 12:17:12 UTC 2006 Johnny Willemsen + + * rules.ciao.GNU: + Added setting of TAO_IDL3_TO_IDL2 and TAO_IDL3_TO_IDL2_DEP when + they are not set, needed for cross compilation + +Thu Jun 1 21:23:51 UTC 2006 + + * examples/Hello/descriptors/run_test.pl + Changed the codes so that it will correctly destroy all + running processes upon failure. + +Thu Jun 1 16:03:26 UTC 2006 Jeff Parsons + + * DAnCE/Planner/Planner.cpp: + + Added global qualifier (double colon) to the specialization + and typedef of the planner's Node class, to avoid an + 'ambiguous symbol' error in VC8, which is presumably confusing + it with Deployment::Node. + +Thu Jun 1 15:49:47 UTC 2006 jiang,shanshan + + * DAnCE/Planner/Node_T.h + * DAnCE/Planner/Planner.cpp + + Modified some minor errors. + +Thu Jun 1 12:55:07 UTC 2006 Jeff Parsons + + * examples/Display/NavDisplay/NavDisplay.mpc: + + Fixed typo. + +Wed May 31 18:46:37 UTC 2006 Jeff Parsons + + * examples/Display/NavDisplay/NavDisplay.mpc: + + Added 'libs += Display_Base_stub' to the + Display_Base_NaviDisplay_stub project so that VC8, with its + parallel builds, will know about the dependency that VC7.1 + seems to get from the 'after' line. + +Wed May 31 18:17:11 UTC 2006 Jeff Parsons + + * DAnCE/TargetManager/TM_Client.mpc: + + Cosmetic changes. + +Wed May 31 17:08:17 UTC 2006 jiang,shanshan + + * DAnCE/Planner/Planner.mpc + * DAnCE/Planner/Planner.cpp + + Removed the generated file of Repoman (RepositoryManagerDaemonC.*) + included in the Planner project and use the RepositoryManagerC.*. + +Wed May 31 16:49:12 UTC 2006 jiang,shanshan + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + + Made some minor changes. + +Tue May 30 10:08:12 UTC 2006 Johnny Willemsen + + * DAnCE/NodeManager/MonitorController.cpp: + Fixed typo + +Tue May 30 06:16:58 UTC 2006 Boris Kolpackov + + * tools/Config_Handlers/XSCRT/Elements.hpp: + + Added a fix for Sun C++ <= 5.7 template instantiation issue. + +Tue May 30 00:00:22 UTC 2006 Stoyan Paunov + + * DAnCE/Planner/Node_T.h: + * DAnCE/Planner/Node_T.inl: + * DAnCE/Planner/Node_T.cpp: + * DAnCE/Planner/PCVisitor.h: + * DAnCE/Planner/PCVisitor.cpp: + * DAnCE/Planner/PCVisitorBase.h: + * DAnCE/Planner/PCVisitorBase.inl: + * DAnCE/Planner/PCVisitorBase.cpp: + * DAnCE/Planner/Planner.mpc: + * DAnCE/Planner/Planner.cpp: + + Checking in the Planner for DAnCE which creates a Deployment + Plan on the fly (in-memory). + + * RACE/Input_Adapters/LocationUpdater/Injector.cpp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h: + * RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable: + * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h: + * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl: + * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp: + * RACE/Input_Adapters/LocationUpdater/PlanUpdater.h: + * RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp: + * RACE/Input_Adapters/LocationUpdater/README.txt: + + Adding the LocationUpdater which is a RACE input adapter which + updates the locations of the implementation artifact to reclect + the ones available in the RepositoryManager. Please see the README + and the code for more info. + + * RACE/Input_Adapters/PlanGenerator/Injector.cpp: + * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h: + * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl: + * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h: + * RACE/Input_Adapters/PlanGenerator/README.txt: + + Adding the PlanGenerator which is a RACE input adapter which queries + the RepositoryManager for an installation name, retrieves the corresponding + PackageConfiguration, and builds the DeploymentPlan on the fly. Please see + the README and the code for more info. + +Mon May 29 21:58:18 UTC 2006 Stoyan Paunov + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + + Got rid of the code that updates the loader path for the + libraries downloaded via HTTP. Now this has to be done + manually. + + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/README.txt: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + + Changing the way library names are matched to be more general. + Some additions to the README + A minor change to one of the functions + +Mon May 29 19:07:54 UTC 2006 Jeff Parsons + + * DAnCE/NodeApplication/Configurator_Factory.cpp: + * DAnCE/NodeManager/MonitorController.cpp: + * examples/Swapping/Sender/Sender_exec.cpp: + + Changed C-style casts from void* to pointer-to-function + to two-step reinterpret_cast<>s, with ptrdiff_t as a + temporary intermediate. C++ forbids casting directly + between pointer-to-object and pointer-to-function, and + some the newer compilers are catching it. + +Mon May 29 17:44:01 UTC 2006 Jeff Parsons + + * examples/Display/Display_Base/Display_Base.mpc: + + Changed the base project of Display_Base_stub from + ciao_client_dnc to ciao_events_base_dnc, in order to pull + in a needed dependency on CIAO_DnC_Container. Thanks to + Ming Xiong for supplying the + fix. + +Mon May 29 15:32:38 UTC 2006 Jeff Parsons + + * examples/Display/NavDisplay/NavDisplay.mpc: + + Cosmetic changes (shortened long lines). + + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + + Changed 'after +=' and 'libs +=' lines to reflect recent + changes to other examples/Display projects. + +Fri May 26 13:57:38 UTC 2006 Jeff Parsons + + * DAnCE/RepositoryManager/RMAdmin.cpp(ACE_TMAIN): + + Fixed unused variable warning, cosmetic changes. + +Fri May 26 12:59:03 UTC 2006 Phil Mesnier + + * DAnCE/NodeManager/NAM_Map.cpp: + Make the equality test explicit to work with the revised octet + sequence implementation. + +Thu May 25 19:02:52 UTC 2006 Jeff Parsons + + * ciao/Container_Base.cpp(ciao_install_home): + + Changed the single-step reinterpret_cast of the component + DLL entry points to be a two-step process: first to the + integer type 'ptrdiff_t' then to the desired pointer-to- + function type. A single cast won't work because casting + from pointer-to-object (even void*) to pointer-to-function + directly is not allowed in C++. + +Thu May 25 11:50:39 UTC 2006 Phil Mesnier + + * ciao/Container_Base.cpp: + Replace the use of static_cast in ciao_install_home with + reinterpret_cast since void* sources are involved. + +Wed May 24 17:35:53 UTC 2006 Nanbor Wang + + * examples/Display/RateGen/RateGen.mpc: Fixed the project + dependency for controller. + +Tue May 23 22:46:58 UTC 2006 jiang,shanshan + + * DAnCE/RepositoryManager/Options.cpp + * DAnCE/RepositoryManager/Options.h + * DAnCE/RepositoryManager/RMadmin.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager.cpp + + Added the code to save the state of the RepoMan at exit and + load the state of it at start. + +Tue May 23 14:31:11 UTC 2006 jiang,shanshan + + * DAnCE/RepositoryManager/Options.cpp + * DAnCE/RepositoryManager/Options.h + * DAnCE/RepositoryManager/RMadmin.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager.cpp + + Added the naming service & the implementation of createPackage + function to RepoMan. + +Mon May 22 18:49:14 UTC 2006 Jeff Parsons + + * ciao/Container_Base.cpp(ciao_install_home): + + Changed C-style casts of DLL entrypoints to static_cast<>s + to the appropriate pointer to function. This change is + intended to eliminate warnings from gcc 4.0. + +Fri May 19 16:49:32 UTC 2006 Jeff Parsons + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/NodeApplicationManager/URL_Parser.cpp: + * DAnCE/NodeManager/Node_Manager.cpp: + + Minor changes to eliminate scoreboard warnings, and to bring + code in line with the ACE style guidelines. + +Thu May 18 20:28:00 UTC 2006 Roopa Pundaleeka + + * examples/Display/GPS/GPS_Impl.ccd: + * examples/Display/NavDisplay/NavDisplay_Impl.ccd: + * examples/Display/RateGen/RateGen_Impl.ccd: + + Removed these generated files from CVS. + +Thu May 18 11:28:52 UTC 2006 Phil Mesnier + + + * examples/Display/Display_Base/GNUmakefile: + * examples/Display/Display_Base/GNUmakefile.Display_Base_stub: + * examples/Display/Display_Base/GNUmakefile.Display_Base_svnt: + + Removed these files from CVS. + +Wed May 17 21:20:46 UTC 2006 Roopa Pundaleeka + + * TAO/CIAO/examples/Display: + Ported the Display example to use the new CIAO framework + + +Tue May 16 12:10:12 UTC 2006 Johnny Willemsen + + * README: + Removed mentioning of vc6 + +Mon May 15 20:48:52 UTC 2006 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp (generate): + + Removed commented-out code. + + * CIDLC/ServantHeaderGenerator.cpp (generate_facets): + + Fixed cut-and-paste error that was causing facet servant + class declaration to get skipped when the composition is + defined inside one or more IDL modules. + +Fri May 12 07:36:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Utils/Functors.h: + Added a workaround for specific for BCB6, should fix the gcc4 + internal compiler errors + +Fri May 12 07:29:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + The work around is needed for < gcc 3.3 and also BCB6, so make + it a little bit more easier to handle this. + +Thu May 11 21:24:45 UTC 2006 Jeff Parsons + + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ServantSourceGenerator.hpp: + * CIDLC/UtilityTypeNameEmitters.cpp: + * CIDLC/UtilityTypeNameEmitters.hpp: + + Change code generation for facet servant classes to be + defined in a special namespace created from a prefix + and a flattened version of the name of the scope + containing the interface that supports the facet. This + change enables facets in the same translation unit + using the same interface to use a single source code + definition (an internal check in the CIDL compiler + guarantees that the facet servant class is generated + once per interface per translation unit). The fact + that the actual facet servant class type is an instantiation + of a template class ensures that the same interface type + used as a facet in multiple translation units in a build + will not produce multiple-definition link errors, + although in this case there will be duplicated code. + Thanks to James Hill for providing + the multiple-facet-single-translation-unit use case + and to Nanbor Wang for his comments + on the proposed solution. + +Wed May 10 14:04:57 UTC 2006 William R. Otte + + * DAnCE/NodeManager/MonitorCB.cpp + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainDataManager.cpp + + Fixes for warnings. + +Mon May 8 20:41:43 UTC 2006 Stoyan Paunov + + * bin/PerlCIAO/perlciao.mpc: + + Fixing a fuzz build error due to a missing Id tag + +Mon May 8 15:33:58 UTC 2006 Stoyan Paunov + + * DAnCE/RepositoryManager/HTTP_Client.h: + * DAnCE/RepositoryManager/HTTP_Client.cpp: + * DAnCE/RepositoryManager/HTTP_Handler.h: + * DAnCE/RepositoryManager/HTTP_Handler.cpp: + * DAnCE/RepositoryManager/Options.h: + * DAnCE/RepositoryManager/Options.cpp: + * DAnCE/RepositoryManager/PC_Updater.h: + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/PC_Updater_T.h: + * DAnCE/RepositoryManager/PC_Updater_T.cpp: + * DAnCE/RepositoryManager/README.txt: + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager.cpp: + * DAnCE/RepositoryManager/RepositoryManagerDaemon.idl: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/URL_Parser.h: + * DAnCE/RepositoryManager/URL_Parser.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + + Updating the RepositoryManager with the latest changes from the + escher repository. Adding my newest changes. Adding some new + minor features. + + * bin/PerlCIAO/TestUtils.base: + * bin/PerlCIAO/TestUtils.pm: + * bin/PerlCIAO/TestUtils_Base.pm: + * bin/PerlCIAO/generate_container.pl: + * bin/PerlCIAO/perlciao.mpc: + + This is a set of test utilities tailored towards testing CIAO components. + It provides a nice and quick interface provising the common functionality + necessary to run a CIAO test and perform clean-up on failure. This utils + are a wrapper around the $ACE_ROOT/bin/PerlACE/ utilities. I will check in + an example of how test utils are used shortly. + + * tools/Config_Handlers/IDD_Handler.cpp: + + Fixing a bug in the PackageConfiguration reverse handler. + + +Fri May 5 15:36:47 2006 Douglas C. Schmidt + + * docs/cidlc.html Added documentation for the CIDL compiler. + Thanks to Boris for contributing this. + + * docs/index.html: Fixed some broken links to the tutorials and added + a link to Ming's tutorial example that shows how to use CoSMIC. + +Fri May 5 16:58:17 UTC 2006 Nishanth Shankaran + + * DAnCE/ExecutionManager/Execution_Manager.cpp (CIAO): Fixed the + parsing of command line options. + +Thu May 4 21:35:01 UTC 2006 William R. Otte + + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/DP_Handler.cpp + + Fixed a reverse handler bug. + +Thu May 4 08:33:12 UTC 2006 Johnny Willemsen + + * DAnCE/RepositoryManager/PC_Updater.cpp: + Fixed compilation error + +Wed May 3 22:11:32 UTC 2006 William R. Otte + + * docs/schema/Basic_Deployment_Data.xsd + * docs/schema/ccd.xsd + * docs/schema/cdd.xsd + * docs/schema/cdp.xsd + * docs/schema/cid.xsd + * docs/schema/cpd.xsd + * docs/schema/iad.xsd + * docs/schema/pcd.xsd + * docs/schema/toplevel.xsd + + Schema propagated from the ARMS repo. + +Wed May 3 12:53:12 UTC 2006 Johnny Willemsen + + * Config_Handlers/Utils/Functors.h: + Made the FUNC argument just return void, this fixes the errors with this + template with BCB on my system, hopefully it doesn't break other + compilers + +Tue May 2 03:04:50 UTC 2006 Nishanth Shankaran + + * DAnCE/NodeApplication/NodeApplication.cpp: Removed the code + snippet that bootstraps the NodeApplication process at a + specific OS priority. + +Wed Apr 26 21:25:26 UTC 2006 William R. Otte + + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/Property_Handler.h + * tools/Config_Handlers/SatisfierProperty_Handler.h + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * tools/Config_Handlers/Utils/Functors.h + + Introduced a workaround for a ICE in GCC 4.0.22. + +Wed Apr 26 13:10:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp: + * tools/Config_Handlers/XSCRT/XMLSchema.hpp: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/Config_Handlers/XSCRT/XML.hpp: + Removed workarounds for vc6 again + + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h: + Added missing post.h + + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h: + * tools/Config_Handlers/Package_Handlers/PC_Intf.h: + Fixed incorrect file tags + +Wed Apr 26 08:46:12 UTC 2006 Johnny Willemsen + + * DAnCE/TargetManager/DomainDataManager.h: + Fixed compile problem in gcc4 build + +Tue Apr 25 21:27:05 UTC 2006 William R. Otte + + * DAnCE/TargetManager/TargetManager.mpc + + Linking problems for Borland. + + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp + + More compile fixes for Borland. +Tue Apr 25 20:12:25 UTC 2006 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + * ciao/Deployment_Core.idl + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/CCD_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.h + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/CPD_Handler.h + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ERE_Handler.cpp + * tools/Config_Handlers/ERE_Handler.h + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/PCD_Handler.h + * tools/Config_Handlers/Property_Handler.cpp + * tools/Config_Handlers/Property_Handler.h + * tools/Config_Handlers/Req_Handler.cpp + * tools/Config_Handlers/Req_Handler.h + * tools/Config_Handlers/SatisfierProperty_Handler.cpp + * tools/Config_Handlers/SatisfierProperty_Handler.h + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/toplevel.hpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/SID_Handler.h + + Compilation fixes for borland, some cosmetic fixes as well. + +Tue Apr 25 09:00:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/CPD_Handler.h: + ComponentPortDescription is a struct, so also forward declare it + as a struct + +Mon Apr 24 18:53:22 UTC 2006 William R. Otte + + * CIDLC/ServantSourceGenerator.cpp + + Fixed a code generation problem caused by careless merging. + +Mon Apr 24 18:40:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/ID_Handler.h: + Removed incorrect semi colons + +Mon Apr 24 06:33:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/IDREF_Base.cpp: + Removed not needed semi colon that caused compile errors in some + builds + +Sun Apr 23 11:22:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Utils/XML_Helper.h: + Fixed compile error + +Sat Apr 22 21:13:10 UTC 2006 William R. Otte + + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/toplevel.hpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + + Compile errors. + +Fri Apr 21 16:24:46 UTC 2006 William R. Otte + + * Merge from the ARMS Escher repository. + + Changelog entries to follow: + + Tue Apr 11 09:29:12 UTC 2006 + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeManager/Node_Manager.cpp + + Additional debugging/compile fixes. + + Tue Apr 11 08:30:42 UTC 2006 Gan Deng + + * ciao/Deployment_Core.idl + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/ExecutionManager/ExecutionManager_Impl.h + + Modified to passivate (and reactivate later) shared components + when tearing down an assembly. + + Sun Apr 9 01:03:19 UTC 2006 + + * M APRIL_DEMO.mwc + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeManager/MonitorCB.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/Node_Manager.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + + Various compile/runtime fixes. + + Fri Apr 7 15:47:34 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Modified to enforce passivation occured on all components + before any connections are removed. + + Fri Apr 7 03:28:03 UTC 2006 Edward R. Mulholland + + * tools/Config_Handlers/Utils/XML_Helper.cpp: + + Replaced "throw;" (which Stroustrup tells us causes an abort) + with "throw 0;" (kind of like an unnamed exception, which is + clearly what the author of this code intended). + + * ciao/Packaging_Data.idl: + + I've had occasion to use this file with the IFR Service, and + I've found that the IFR Service backend chokes on a bunch of + stuff here. The stuff that it chokes on has been protected with + "#ifndef AVOID_IFR_CRASH" so that you can protect the backend + from crashing if you pass -DAVOID_IFR_CRASH to tao_ifr. + + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_Base.h: + + Implemented the add_receptacle operation. + + Fri Apr 7 02:55:37 UTC 2006 Edward R. Mulholland + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + + Added ACE_CATCHANY and ACE_CATCHALL blocks in + Plan_Launcher_i::launch_plan to avoid crashing in case of CORBA + fault. + + Fri Apr 7 02:54:29 UTC 2006 Edward R. Mulholland + + * DAnCE/NodeApplication/Configurator_Factory.cpp: + + Options beginning with "-ORB" are explicitly ignored. This + avoids having an "-ORB" option mistakenly parsed as being a + "-o " option. + + Fri Apr 7 02:51:31 UTC 2006 Edward R. Mulholland + + * CIDLC/ServantSourceGenerator.cpp: + + Added code to support "get_all_receptacles" operation. + + Fri Apr 7 02:47:02 UTC 2006 Edward R. Mulholland + + * CCF/CCF/IDL2/SemanticGraph/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp: + + Made a couple small changes that keep the CIDLC from coughing on + enums + + Fri Apr 7 02:37:34 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + + Fixed a bug in detecting External connection and Internal + connections. Earlier when an external component is detected, + not *all* connections associated with this components are + purged from the to-be-removed connections list. Added another + helper method to accomplish this task. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Modified to reuse rebind() instead of bind() to avoid + redeployment duplicate instance errors. + + Thu Apr 6 15:02:59 UTC 2006 Nishanth Shankaran + + * DAnCE/NodeApplication/NodeApplication.cpp: + + Modified the NodeApplications to up at OS priority 20 instead of + 50. + + Thu Apr 6 00:35:35 UTC 2006 Nilabja Roy + + * DAnCE/NodeManager/CIAO_Monitor.cpp: + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + Fixed the TM component removal problem. Changed/Removed + debug messages. + + Wed Apr 5 16:54:20 UTC 2006 William R. Otte + + * tools/Config_Handlers/Any_Handler.cpp + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h + + Improvements to output more information in the reverse handler. + + + Thu Mar 30 22:10:53 UTC 2006 William Otte + + * DAnCE/NodeApplication/Container_Impl.cpp + * DAnCE/NodeApplication/NodeApplication.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * ciao/Home_Servant_Impl_T.cpp + * ciao/Servant_Activator.cpp + * tools/Config_Handlers/DD_Handler.cpp + * tools/Config_Handlers/IDREF_Base.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp + + Disabled excessive debugging. + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Disabled RT-CCM support. + + * DAnCE/TargetManager/DomainDataManager.cpp + + Added error messages. + + Wed Mar 29 21:34:07 UTC 2006 Nilabja Roy + + * DAnCE/NodeManager/CIAO_Monitor.cpp: + Fixed a Access Error in the monitor. + + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Added to have graceful termination. + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Update to turn off monitors at the end. + + Mon Mar 27 22:39:25 UTC 2006 William R. Otte + + * tools/Config_Handlers/Utils/XML_Helper.cpp + * tools/Config_Handlers/Utils/XML_Helper.h + + Mon Mar 27 20:10:09 UTC 2006 Nishanth Shankaran + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp + (get_node_manager): + + Modified this method to re-throw the caught exception. + + Sun Mar 26 22:10:16 2006 Nishanth Shankaran + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + + Added code to handle exceptions while trying to connect to the + node managers in get_node_manager (). + + * DAnCE/TargetManager/DomainDataManager.cpp: + + Added debug messages. + + * RACE/Controller/Component/RACE_common.h: + + Added a new file to define the RACE_DEBUG and RACE_ERROR macros. + + Mon Mar 27 00:22:02 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Modified to allow ccm_passicate to be called on all components + before actually deactivating any components. + + Thu Mar 23 23:18:56 UTC 2006 Nishanth Shankaran + + * DAnCE/NodeManager/MonitorController.cpp (svc): + + Removed an unwanted debug statement. + + Thu Mar 23 22:54:25 UTC 2006 Nishanth Shankarn + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Removed an unwanted debug statement. + + Thu Mar 23 19:40:54 UTC 2006 Nishanth Shankarn + + * APRIL_DEMO.mwc: + * CIAO.mwc: + * CIAODAnCE.mwc: + * CIAOTAO.mwc: + * CIAO_TAO_DAnCE.mwc: + + Modified the mwc files so that they exclude the RACE/hog_string + directory. + + Thu Mar 23 18:04:58 UTC 2006 Nishanth Shankaran + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Fixed a bug in set_priority method. + + Wed Mar 22 19:32:37 UTC 2006 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Modified to make debug statements debug_level controlled. + + Wed Mar 22 00:51:11 UTC 2006 Gan Deng + + * DAnCE/NodeManager/NodeManager_Impl.cpp + + Modified to find the corresponding NAM when given a plan_uuid. + + Wed Mar 22 02:12:58 UTC 2006 Nilabja Roy + + * DAnCE/NodeManager/CIAO_Monitor.cpp: + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.cpp: + + Removed some of the debug statements + + Tue Mar 21 19:12:57 UTC 2006 Nishanth Shankarn + + * RACE/hog_string/hog.cdp: + + Fixed the plan id. + + Mon Mar 20 21:07:50 UTC 2006 Stoyan Paunov + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + + turning off the HTTP capability for Linux until I figure out why + it affects the loading of libraries. + + Mon Mar 20 20:40:37 UTC 2006 Stoyan Paunov + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + + Changed loader path delimiter on Unix-like systems from ';' to ':' + + + Mon Mar 20 17:22:22 UTC 2006 Stoyan Paunov + + * DAnCE/NodeApplicationManager/HTTP_Client.h: + * DAnCE/NodeApplicationManager/HTTP_Client.cpp: + * DAnCE/NodeApplicationManager/HTTP_Handler.h: + * DAnCE/NodeApplicationManager/HTTP_Handler.cpp: + * DAnCE/NodeApplicationManager/URL_Parser.h: + * DAnCE/NodeApplicationManager/URL_Parser.cpp: + + Oops. Forgot to add the actual HTTP code. + + Mon Mar 20 04:27:48 UTC 2006 Stoyan Paunov + + * DAnCE/NodeApplicationManager/Containers_Info_Map.h: + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + + Adding HTTP capability to DAnCE. + + * DAnCE/RepositoryManager/HTTP_Client.h: + * DAnCE/RepositoryManager/HTTP_Client.cpp: + * DAnCE/RepositoryManager/HTTP_Handler.h: + * DAnCE/RepositoryManager/HTTP_Handler.cpp: + * DAnCE/RepositoryManager/Options.h: + * DAnCE/RepositoryManager/Options.cpp: + * DAnCE/RepositoryManager/PC_Updater.h: + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/PC_Updater_T.h: + * DAnCE/RepositoryManager/PC_Updater_T.cpp: + * DAnCE/RepositoryManager/RM_Helper.h: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/RepositoryManager.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/URL_Parser.h: + * DAnCE/RepositoryManager/URL_Parser.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + + Porting the RepositoryManager to the newest XML config handlers. + Also migrating the code from the DOC repository to ensure the gap + between the code in this repository and that in cvs.doc.wustl.edu + repo is closed. + + + NOTE: I still have some testing left, but before that I need to + compile the CoSMIC version from this repository and regenerate + a bunch of descriptors because all the example descriptors are + broken. + + Sat Mar 18 22:33:10 UTC 2006 Gan Deng + + * DAnCE/Interfaces/NodeManager.idl + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + * ciao/Deployment.idl + + Put the struct Sched_Params definition outside of the NAM + interface. + Cleaned up the code a bit. + + Sun Mar 19 16:52:54 UTC 2006 Nilabja Roy + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Updated to implement the commitResource and releaseResource + function + + Sat Mar 18 19:01:18 UTC 2006 Nishanth Shankaran + + * DAnCE/NodeApplication/NodeApplication.cpp: + + Enhanced the NodeApplication to run in realtime priority mode. + + Fri Mar 17 06:36:18 UTC 2006 Nilabja Roy + + * DAnCE/Interfaces/NodeManager.idl: + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.cpp: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * ciao/Deployment.idl: + + Implemented the set_priority method on the NodeManager + and NodeApplicationManager interface. Removed some of the debug + messages + + Thu Mar 16 03:54:39 UTC 2006 Nilabja Roy + + * tools/Config_Handlers/DD_Handler.cpp: + Updated the handler to handle optional parameters + + Tue Mar 14 07:01:28 UTC 2006 Nilabja R + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + + * DAnCE/NodeManager/CIAO_Monitor.cpp: + * DAnCE/NodeManager/NodeManager_Impl.h: + Updated to make it portable in windows + + * DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp: + Fixed the entry point. + + Mon Mar 13 23:04:32 UTC 2006 + + * tools/Config_Handlers/CPD_Handler.h + * tools/Config_Handlers/DataType_Handler.h + * tools/Config_Handlers/ID_Handler.h + * tools/Config_Handlers/Property_Handler.h + * tools/Config_Handlers/Req_Handler.h + * tools/Config_Handlers/SatisfierProperty_Handler.h + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * tools/Config_Handlers/Package_Handlers/SID_Handler.h + * tools/Config_Handlers/Utils/XercesString.h + + Fixed linking/warnings on Windows. + + Mon Mar 13 18:27:27 UTC 2006 Nilabja R + + * DAnCE/TargetManager/TargetManager.mpc: + Changed the projects to depend on NodeManager_Stub. This will fix the + linking errors in Windows. + + Mon Mar 13 17:36:28 UTC 2006 Krishnakumar B + + * CIDLC/ServantSourceGenerator.cpp (namespace): Updated the + generated code to set the component id on the component context + class to allow retrieving the id at run-time from an executor + implementation. + + Mon Mar 13 17:28:44 UTC 2006 + + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + + Fixes for nameservice discovery of EM. + + * docs/schema/toplevel.xsd + + Minor correction to schema. + + Fri Mar 10 17:03:26 UTC 2006 + + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + + Fixed minor bug in URI interface. + + Thu Mar 9 22:26:17 UTC 2006 Jeff Parsons + + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_Base.h: + + Added CORBA::String_var member to store the component instance + id, also added a pair of set/get methods called _ciao_instance_id. + + Wed Mar 8 19:07:31 UTC 2006 + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + + Add error message for connection failure. + + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc + + Disabled this project. + + * DAnCE/TargetManager/TargetManager_exec.cpp + * DAnCE/TargetManager/TargetManager_exec.h + + Fix entry point problems. + + Wed Mar 8 19:29:20 UTC 2006 Nilabja R + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManagerExt.idl: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Added the structure in the TMExt interface to maintain the + mapping between hostname to NM refs. + + Wed Mar 8 14:40:41 UTC 2006 William R. Otte + + * tools//Config_Handlers/Deployment.cpp + * tools//Config_Handlers/Deployment.hpp + * tools//Config_Handlers/GNUmakefile + * tools//Config_Handlers/cdd.cpp + * tools//Config_Handlers/cdd.hpp + * tools//Config_Handlers/pcd.cpp + * tools//Config_Handlers/pcd.hpp + * tools//Config_Handlers/toplevel.cpp + * tools//Config_Handlers/toplevel.hpp + * tools//Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools//Config_Handlers/Package_Handlers/PCD_Handler.h + + New generated code. + + Wed Mar 8 03:11:02 UTC 2006 Nilabja R + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Implement the Signal Handler for the process NodeManager. And + set the option avoid_zombies=0 + + + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.cpp: + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Implement ComponentID to Process Id mapping + + Tue Mar 7 23:26:41 UTC 2006 Nilabja Roy + + * DAnCE/TargetManager/DomainDataManager.cpp + * DAnCE/TargetManager/TargetManagerExt.idl + * DAnCE/TargetManager/TargetManager.mpc: + Changed to depend on the NodeManager_Stub, so that + CIAO::NodeManager can be used. + + Tue Mar 7 03:14:50 UTC 2006 Nilabja R + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Changed to add the Comp_id to Proc_id mapping + + * DAnCE/NodeManager/CIAO_Monitor.h: + * DAnCE/NodeManager/CIAO_Monitor.cpp: + Changed to add the percentage cpu same as vmstat + + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.cpp: + Changed to add the Comp_id to Proc_id mapping + + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Changed to add the Comp_id to Proc_id mapping + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + Changed to add interface to RACE + + * DAnCE/TargetManager/TargetManagerExt.idl: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Changed to add interface to RACE + + * DAnCE/TargetManager/descriptors/Domain.cdd: + Updated to the latest xsd + + + * docs/schema/cdd.xsd: + Changed the Domain definations + + Mon Mar 6 19:46:54 UTC 2006 Nishanth Shankaran + + * DAnCE/Interfaces/NodeManager.idl + * DAnCE/NodeManager/NodeManager_Impl.h + * DAnCE/NodeManager/NodeManager_Impl.cpp: + + Added the set_priority method to modify the priority of + NodeApplication process. + + Wed Mar 1 20:56:16 UTC 2006 Nishanth Shankaran + + * DAnCE/TargetManager/TargetManager_exec.h + * DAnCE/TargetManager/TargetManager_exec.cpp + * DAnCE/TargetManager/TargetManagerExt.idl: + + Added method to TargetManagerExt interface to obtain references to + the NodeManagers. + + + Fri Feb 24 22:55:51 UTC 2006 William R. Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/CEPE_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.h + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/CPD_Handler.h + * tools/Config_Handlers/CRDD_Handler.cpp + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/DP_Handler.h + * tools/Config_Handlers/DataType_Handler.cpp + * tools/Config_Handlers/DataType_Handler.h + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/ERE_Handler.h + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/IDREF_Base.cpp + * tools/Config_Handlers/IDREF_Base.h + * tools/Config_Handlers/ID_Handler.cpp + * tools/Config_Handlers/ID_Handler.h + * tools/Config_Handlers/IRDD_Handler.cpp + * tools/Config_Handlers/IRDD_Handler.h + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/Property_Handler.h + * tools/Config_Handlers/RDD_Handler.cpp + * tools/Config_Handlers/Req_Handler.cpp + * tools/Config_Handlers/Req_Handler.h + * tools/Config_Handlers/STD_PCD_Handler.h + * tools/Config_Handlers/ccd.cpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cid.cpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.cpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.cpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.cpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/test.cdp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.h + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CID_Handler.h + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/IAD_Handler.h + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/PCD_Handler.h + * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp + * tools/Config_Handlers/Package_Handlers/PC_Intf.h + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/SID_Handler.h + * tools/Config_Handlers/Package_Handlers/test.cpp + * tools/Config_Handlers/Package_Handlers/descriptors/package.tpd + * tools/Config_Handlers/Utils/Exceptions.h + * tools/Config_Handlers/Utils/Functors.h + * tools/Config_Handlers/Utils/XML_Error_Handler.cpp + * tools/Config_Handlers/Utils/XML_Helper.h + * tools/Config_Handlers/XMLSchema/Writer.hpp + + Package handlers and changes necessary to support them. + +Fri Apr 21 08:13:12 UTC 2006 Johnny Willemsen + + * CIDLC/ServantSourceGenerator.cpp: + Removed usage of ACE_NESTED_CLASS + + * DAnCE/RepositoryManager/PC_Updater.cpp: + Fixed compile errors + +Thu Apr 20 13:14:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/DnC_Dump.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + Fixed compile error + +Thu Apr 20 09:14:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/RT-CCM/CLA_Handler.cpp: + Fixed compile error + +Wed Apr 19 19:03:12 UTC 2006 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Fixed usage of sequences. The sequences now return + a pointer on the subscript operators, not _var which was not according + to the spec. + +Wed Apr 19 14:39:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/XMLSchema/Types.hpp: + Removed vc6 workaround + +Wed Apr 19 13:43:12 UTC 2006 Johnny Willemsen + + * docs/schema/xsc-banner.h: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + Removed include of vc6-4786.h + +Wed Apr 19 13:39:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/STD_PC_Intf.cpp: + * tools/Config_Handlers/XSCRT/XMLSchema.hpp: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/Config_Handlers/XSCRT/XML.hpp: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/DP_Handler.cpp: + Removed vc6 workarounds + +Wed Apr 19 11:23:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/DnC_Dump.{h,cpp}: + Updated for string manager change in TAO + + * ciao/Servant_Impl_Base.cpp: + Updated for sequence change + +Wed Apr 19 07:48:12 UTC 2006 Johnny Willemsen + + * tools/Config_Handlers/Basic_Deployment_Data.hpp + * tools/Config_Handlers/Deployment.hpp + * tools/Config_Handlers/ccd.hpp + * tools/Config_Handlers/cdd.hpp + * tools/Config_Handlers/cdp.hpp + * tools/Config_Handlers/cid.hpp + * tools/Config_Handlers/cpd.hpp + * tools/Config_Handlers/iad.hpp + * tools/Config_Handlers/pcd.hpp + * tools/Config_Handlers/toplevel.hpp + Removed vc6 workarounds + + * tools/Config_Handlers/vc6-4786.h + Removed + +Tue Apr 18 20:55:05 2006 Wallace Zhang + + * CIAO version 0.5.1 released. + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: diff --git a/modules/CIAO/ChangeLogs/ChangeLog-07a b/modules/CIAO/ChangeLogs/ChangeLog-07a new file mode 100644 index 00000000000..613da3f1e4c --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-07a @@ -0,0 +1,1122 @@ +Mon Jan 22 23:14:56 2007 William R. Otte + + * CIAO version 0.5.5 released. + +Thu Jan 18 17:49:00 UTC 2007 Gan Deng + + * docs/index.html: + + Fixed broken links to doxygen. + +Wed Jan 10 21:35:25 UTC 2007 Jeff Parsons + + * NEWS: + + Updated with my changes since 0.5.4. + +Tue Jan 8 20:01:12 UTC 2007 Johnny Willemsen + + * RACE/common/RACE_common.idl: + Use the CORBA::StringSeq to reduce footprint + +Tue Jan 8 19:43:12 UTC 2007 Johnny Willemsen + + * ciao/CCM_CCMException.idl: + * ciao/CCM_Context.idl: + Added some commented out IDL that is part of the QoS4CCM spec + +Sun Jan 7 18:44:12 UTC 2007 Johnny Willemsen + + * DAnCE/NodeApplicationManager/URL_Parser.cpp: + No need to set members to 0 in destructor + + * DAnCE/RepositoryManager/URL_Parser.cpp: + Fixed conversion warning and memory leak + +Sun Jan 7 12:14:12 UTC 2007 Johnny Willemsen + + * ciao/CCM_ClientContainerInterceptor.idl: + * ciao/CCM_ClientContainerInterceptorRegistration.idl: + * ciao/CCM_ContainerClientRequestInfo.idl: + * ciao/CCM_ContainerInterceptor.idl: + * ciao/CCM_ContainerRequestInfo.idl: + * ciao/CCM_ContainerServantRequestInfo.idl: + * ciao/CCM_ContainerServerRequestInfo.idl: + * ciao/CCM_ContainerStubRequestInfo.idl: + * ciao/CCM_ExtensionComponent.idl: + * ciao/CCM_ExtensionContext.idl: + * ciao/CCM_InvalidRegistration.idl: + * ciao/CCM_QoS.idl: + * ciao/CCM_ServantContainerInterceptor.idl: + * ciao/CCM_ServantContainerInterceptorRegistration.idl: + * ciao/CCM_ServerContainerInterceptor.idl: + * ciao/CCM_ServerContainerInterceptorRegistration.idl: + * ciao/CCM_StubContainerInterceptor.idl: + * ciao/CCM_StubContainerInterceptorRegistration.idl: + Added interfaces from QoS for CCM spec (OMG 06-04-15). We + don't have an implementation yet, just the interfaces at + this moment + +Fri Jan 5 12:14:12 UTC 2007 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + Fixed conversion warnings + + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/URL_Parser.cpp: + Improved layout and documentation + +Wed Jan 3 19:32:05 UTC 2007 Chad Elliott + + * CIAO_TAO_DAnCE.mwc: + + Added $(ACE_ROOT)/contrib/minizip since the RepositoryManager can + use minizip if the zlib feature is enabled. + +Wed Jan 3 07:01:12 UTC 2007 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.cpp: + Fixed conversion warnings + + * DAnCE/RepositoryManager/URL_Parser.cpp: + Initialise pointer with 0 + +Wed Jan 3 16:18:36 UTC 2007 Chad Elliott + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Use the install base project instead of the deprecated core base + project. + +Thu Dec 28 12:22:12 UTC 2006 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + Doxygen improvements + +Mon Dec 25 16:19:42 UTC 2006 Douglas C. Schmidt + + * Merry Christmas everyone!!! + +Wed Dec 20 06:37:27 UTC 2006 William R. Otte + + * MPC/config/ciao_rtevent_dnc.mpb: + * MPC/config/ciao_events_dnc.mpb: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * ciao/CCM_Core.mpc: + + Fixed linking errors on OS X. + +Wed Dec 13 08:35:48 UTC 2006 Gan Deng + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp: + + Fixed warnings on NoInterceptors_Core build related to + type conversion. + +Wed Dec 13 07:57:02 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + + Fixed a fuzz error. + +Wed Dec 13 07:29:10 UTC 2006 Gan Deng + + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + + Fixed Debian_GCC_4.0 compilation error by removing + unnecessary common for enum definition. + +Wed Dec 13 07:19:13 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + + Fixed a compilation error in Win2003_VC71_Versioned_Namespace + build by removing the unnecessary declaration. + +Wed Dec 13 06:45:57 UTC 2006 Johnny Willemsen + + * examples/Swapping/Sender/Sender_exec.h: + Fixed include because of file name changes + +Tue Dec 12 20:55:02 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h: + + Modified the ciao_push_event() in this base class to fix + BCC warnings. + +Tue Dec 12 20:21:03 UTC 2006 Gan Deng + + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + + Fixed the fuzz errors. + +Tue Dec 12 20:15:57 UTC 2006 Johnny Willemsen + + * ciao/CCM_Component.idl: + * ciao/CCM_Core.mpc: + * ciao/CCM_EventBase.idl: + * ciao/CCM_EventConsumerBase.idl: + * ciao/CCM_HomeConfiguration.idl: + * ciao/CCM_HomeConfigurator.idl: + * ciao/CCM_Object.idl: + * ciao/CCM_PrimaryKeyBase.idl: + * ciao/CCM_SessionComponent.idl: + * ciao/CCM_StateIdFactory.idl: + * ciao/Servant_Impl_Base.h: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl: + * DAnCE/TargetManager/DomainEvents.idl: + Added remarks about compliance and another set of splitting + idl files in smaller ones + + * ciao/CCM_Event.idl: + * ciao/CCM_Events.idl: + Renamed Event to Events + + * ciao/CCM_HomeConfigurator.idl: + * ciao/CCM_HomeConfiguration.idl: + Renamed Configurator to Configuration + +Tue Dec 12 14:48:57 UTC 2006 Johnny Willemsen + + * ciao/CCM_Base.idl: + * ciao/CCM_CCM2Context.idl: + * ciao/CCM_ComponentId.idl: + * ciao/CCM_Configurator.idl: + * ciao/CCM_Container.idl: + * ciao/CCM_Container_Ex.idl: + * ciao/CCM_Core.mpc: + * ciao/CCM_Entity2Context.idl: + * ciao/CCM_Event.idl: + * ciao/CCM_ExecutorLocator.idl: + * ciao/CCM_HomeConfigurator.idl: + * ciao/CCM_SessionComponent.idl: + * ciao/CCM_SessionContext.idl: + * ciao/CCM_StandardConfigurator.idl: + * ciao/CCM_StateIdFactory.idl: + * ciao/Deployment_NodeApplication.idl: + Moved more interfaces to their own file + + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + Removed virtual keywords, not needed + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Const changes and improved some messages + + * DAnCE/Plan_Generator/PCVisitor.h: + * DAnCE/Plan_Generator/PCVisitorBase.h: + Doxygen changes + + * tools/Config_Handlers/DynAny_Handler.mpc: + layout changes + +Tue Dec 12 10:08:57 UTC 2006 Johnny Willemsen + + * MPC/config/taoidl3toidl2defaults.mpb: + Moved from TAO to here + +Mon Dec 11 20:55:39 UTC 2006 Gan Deng + + * ciao/CCM_Event.idl: + + Modified the "ciao_push_event" operation to pass in "source_id", + which is used to identify the sources of the publisher ports to + support event filtering mechanism. + + * ciao/Deployment_Events.idl: + + Added new IDL definitions to support RTEC federation, such as + AddrServer, UDPSender, UPDReceiver, etc. + + * ciao/Deployment_NodeApplication.idl: + + Modified the "install_es" operation to install one service object + per invocation, instead of a sequence of objects. + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + + Modified to accomodate the changes made above by adding only + one ciao event service object reference to the map. + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl: + + Removed the inheritance relationship between Consumer_Config and + Supplier_Config object. The reason why it was there is because + of a tightly coupled design long time ago. + + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h: + + Added a virtual function "ciao_push_event" and provides a + default implementation, which is essentially a no_op impl. + + * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp: + * ciaosvcs/Events/CIAO_EventService_Factory_impl.h: + + Modified the factory method "create" by passing in the + string identifier for the service object. + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl: + + Added new operations to create gateways object to support + event channel federations. + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + + Added the implementation and MPC files to support event + channel federations in CIAO_Event_Service. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Automatically generate the implementation code of + ciao_push_event for component in the servant code. + + * DAnCE/NodeApplication/NodeApplication.cpp: + + Explicitly add the init_svcs() operation to the + NA component server implementation. We should figure + out a way to see whether we can avoid doing this at + this level. + + * DAnCE/NodeManager/Node_Manager.cpp: + + Enhanced NM to pass in service configuration file explicitly. + Also fixed a bug about controlling ORBDebugLevel. + + * docs/schema/CIAOEvents.xsd: + + Enhanced the CIAOEvents schema to support event channel + federation configuration. + + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp: + + Config handlers enhancement to support the above + schema changes. + + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + + Modified to use environment variables instead of relative paths. + + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Receiver/Receiver_exec.cpp: + + Modified to explicitly print out the contents of the received msgs. + + * examples/Hello/descriptors_events/ciao-events-example-collocated.ced: + * examples/Hello/descriptors_events/ciao-events-example-with-federation.ced: + * examples/Hello/descriptors_events/ciao-events-example-with-filters.ced: + * examples/Hello/descriptors_events/ciao-events-example.ced: + * examples/Hello/descriptors_events/ciao-events-federation-mcast.ced: + * examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced: + * examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced: + * examples/Hello/descriptors_events/ciao-events-federation-udp.ced: + * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp: + * examples/Hello/descriptors_events/NodeManagerMap.dat: + * examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat: + * examples/Hello/descriptors_events/rtec.conf: + * examples/Hello/descriptors_events/run_NodeDaemons.pl: + * examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl: + * examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl: + + Added a bunch of test cases for CIAO Event Service. + +Fri Dec 8 22:59:14 UTC 2006 Jeff Parsons + + * tools/tools.mwc: + + Added IDL3_to_IDL2 directory to the list. + +Fri Dec 8 000:09:04 UTC 2006 Jeff Parsons + + * bin/generate_component_mpc.pl: + + Another typo found by Abdullah Sowayan . + +Thu Dec 7 20:22:57 UTC 2006 Jeff Parsons + + * bin/generate_component_mpc.pl: + + Fixed bug that omits necessary space between items in 'after' + line, if it contains more than one item. Thanks to Abdullah + Sowayan for reporting the bug. + +Thu Dec 7 19:15:04 UTC 2006 Jeff Parsons + + * bin/generate_component_mpc.pl: + + Fixed typo, had 'ciao_server_dnc', should have been + 'ciao_servant_dnc'. Thanks to Abdullah Sowayan + for reporting the mistake. + +Thu Dec 7 19:04:38 UTC 2006 Jeff Parsons + + * tools/Config_Handlers/DynAny_Handler.mpc: + + Removed taolib and anytypecode base projects, since they are + already pulled in by typecodefactory. + +Thu Dec 7 13:47:57 UTC 2006 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Deployment_Configuration (init): + Use ACE_Read_Buffer to read the file and parse it contents. This way + we are independent of a fixed buffer length, especially on systems + with multiple network cards and IPv6 enabled the IORs can get huge. + +Thu Dec 7 11:48:57 UTC 2006 Johnny Willemsen + + * ciao/CCM_Core.mpc: + * MPC/config/ciao_server_dnc.mpb: + Don't build DnC server with minimum corba and CORBA/e, this was + disabled in the past implicitly because we used security as + MPC base project but because that has been removed we now + have to explicitly disable this project + +Thu Dec 7 11:34:57 UTC 2006 Johnny Willemsen + + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp: + Added some todo's, check whether the narrow on the NamingContext + did succeed, use CORBA::ULong for the sequence index + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + Use a CORBA::String_var to store the uuid string + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Added some todo's, check whether the narrow on the NamingContext + did succeed, layout changes, fixed bugzilla bug 2729, thanks to Abdul + for reporting that. + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + Doxygen improvements + +Wed Dec 6 11:26:57 UTC 2006 Johnny Willemsen + + * ciao/CIAO_ServerResources.idl: + * ciao/Deployment_NodeApplicationManager.idl: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeManager/MonitorCB.h: + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/TargetManager/DomainDataManager.h: + * tools/Config_Handlers/DD_Handler.h: + Doxygen documentation updates + + * MPC/config/ciao_container_dnc.mpb: + * ciao/CCM_Core.mpc: + Added avoids_corba_e_compact as base project + +Tue Dec 5 11:45:57 UTC 2006 Johnny Willemsen + + * ciao/CCM_Core.mpc: + * MPC/config/ciao_container_dnc.mpb: + Don't build Dnc_Container with corba/e compact has been enabled + + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc: + Simplified this MPC file + +Mon Dec 4 12:14:57 UTC 2006 Johnny Willemsen + + * MPC/config/*: + All CIAO base projects are moved from + ACE_wrappers/bin/MakeProjectCreator/config to this directory + +Mon Dec 4 12:35:57 UTC 2006 Johnny Willemsen + + * DAnCE/TargetManager/TM_Client.mpc: + Simplified this file using more base projects + +Mon Dec 4 12:29:57 UTC 2006 Johnny Willemsen + + * DAnCE/TargetManager/DomainDataManager.h: + Documentation changes + + * DAnCE/TargetManager/TargetManager.mpc: + Simplified this file using more base projects + +Mon Dec 4 12:24:57 UTC 2006 Johnny Willemsen + + * MPC + * MPC/config + New directory for the base projects specifically for CIAO + +Mon Dec 4 12:16:12 UTC 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + Use include from CIAO_ROOT and removed using namespace + + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + Simplified this file + +Mon Dec 4 11:41:12 UTC 2006 Johnny Willemsen + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + Simplified by using the base projects + +Mon Dec 4 11:37:12 UTC 2006 Johnny Willemsen + + Converted the NodeApplication into a library and build + an exe using this library. Will prevent duplicate compilation + of part of the code. Fixes bugzilla bug 2739. + + * DAnCE/NodeApplication/CIAO_NodeApplication_export.h: + New export file: + + * DAnCE/NodeApplication/Configurator_Factory.h: + * DAnCE/NodeApplication/Container_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Core.h: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + Added export macro to export the class from the new NodeApplication + library. + + * DAnCE/NodeApplication/NodeApplication.mpc: + Added new library project and use this in the executable. + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + Use the new NodeApplication library and the new base projects + I added for CIAO + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.{h,cpp,inl}: + Moved destructor from inline to cpp method and small code improvements + + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + Simplified by using the new base projects + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Small improvements + +Mon Dec 4 07:35:12 UTC 2006 Johnny Willemsen + + * CIAO-INSTALL.html: + Updated build instructions + + * ciao/Dynamic_Component_Activator.cpp: + Removed not needed return statements in a void method + + * ciao/Dynamic_Component_Activator.h: + Changed guard in file to match filename + + * ciao/Home_Servant_Impl_T.cpp: + Layout changes + + * ciao/Port_Activator.{h,cpp}: + The name methods did really change oid, so renamed name + to oid and added a new name method to return the name + member + + * ciao/Servant_Activator.cpp: + Const changes and updated for Port Activator changes + + * ciao/Servant_Impl_Base.cpp: + Small code improvements + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Const changes + + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + Throw NO_MEMORY when allocation fails + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + Throw BAD_PARAM when an incorrect method parameter has been passed + + * DAnCE/NodeManager/BaseMonitor.h: + * DAnCE/NodeManager/CIAO_Monitor.h: + * DAnCE/NodeManager/NodeManager_Impl.h: + Doxygen changes + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Fixed a comment + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + Use true/false for bool + + * DAnCE/TargetManager/DomainDataManager.cpp: + Layout changes + + * DAnCE/TargetManager/TargetManager_exec.cpp: + Removed not needed includes, made messages dependent + on the debug level, added missing duplicate + + * DAnCE/TargetManager/TargetManager_exec.h: + Don't use std:: for auto_ptr + + * DAnCE/TargetManager/TargetManagerExt.idl: + Removed commented out include + + * DAnCE/TargetManager/TargetManagerImpl.idl: + Removed empty lines + + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl: + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl: + * examples/Display/descriptors/basicNodeDaemon.pl: + * examples/Display/descriptors/run_NodeDaemons.pl: + * examples/Hello/descriptors/run_NodeDaemons.pl: + Use $ACE_ROOT/bin with use lib. This fixes bugzilla bug 2737, + thanks for Abdul for reporting this. + + * docs/tutorials/Quoter/Simple/01.html: + Update from Abdul + +Fri Dec 1 16:27:34 UTC 2006 Jeff Parsons + + * bin/generate_component_mpc.pl: + + Fixed generation of export files. Thanks to Abdullah + Sowayan for reporting + the problem. + +Fri Dec 1 13:39:12 2006 Johnny Willemsen + + * docs/tutorials/CoSMIC/index.html: + * docs/tutorials/Quoter/Simple/index.html: + Updated download location of ACE/TAO/CIAO + +Fri Dec 1 11:26:12 2006 Johnny Willemsen + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + Fixed invalid check whether we have a nil POA or not + +Fri Dec 1 11:17:12 2006 Johnny Willemsen + + * DAnCE/TargetManager/Deployment_Configuration.{h,cpp}: + Removed these files, not used in the mpc file + + * DAnCE/DomainApplicationManager/Deployment_Configuration.{h,cpp}: + Close the file handle, part of the fix for bugzilla bug 2733 + + * DAnCE/TargetManager/DomainDataManager.{h,cpp}: + Const changes, sequences have a CORBA::ULong as length, not int. + Added some todo's and use a little bit more ACE + + * DAnCE/TargetManager/TargetManager.cidl: + Removed empty line + + * DAnCE/TargetManager/TargetManager_exec.cpp: + Fixed memory management and the way we check for a nil + reference + +Fri Dec 1 09:01:12 2006 Johnny Willemsen + + * bin/generate_component_mpc.pl: + Layout improvements, thanks to Abdul for making this + update. + +Thu Nov 30 12:45:12 2006 Johnny Willemsen + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + Removed not needed ACE_TRY_CHECK + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + Const improvement + + * DAnCE/RepositoryManager/RepositoryManager.cpp: + Initialise pointer with 0, removed code after return + added added a todo + + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + Doxygen improvement + + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + Lot of layout changes to make the code a little bit more + readable, more has to be done to this file + + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + Doyxgen improvements and removed not needed include + + * DAnCE/TargetManager/CmpClient.cpp: + Use true/false for a bool + + * DAnCE/TargetManager/Deployment_Configuration.cpp: + Use bool and use 0 instead of NULL + + * DAnCE/TargetManager/DomainDataManager.h: + Doxygen changes + + * DAnCE/TargetManager/DomainEvents.idl: + Removed not needed include + + * DAnCE/TargetManager/TargetManager_exec.cpp: + Layout changes + + * DAnCE/TargetManager/TM_Client.mpc: + Removed not needed includes + +Wed Nov 29 21:26:53 UTC 2006 Jeff Parsons + + * docs/generate_component_mpc.html: + + New file, documentation for the Perl script + generate_component_mpc.pl, in CIAO_ROOT/bin. + + * bin/generate_component_mpc.pl: + + Changes mainly to correct problems with MPC files + generated for non-component builds, i.e., from some IDL + file used in common by multiple component builds, such + as the definition of a port interface. Also made changes + and added a new command line option to help minimize the + amount of code generated from IDL and minimize the + dependencies of the generated makefile or project. + +Wed Nov 29 15:43:12 2006 Johnny Willemsen + + * DAnCE/NodeManager/CIAO_Monitor.cpp: + Don't use plain new, fixes bugzilla bug 2732. Thanks to Abdul + for reporting this + +Wed Nov 29 12:48:12 2006 Johnny Willemsen + + * ciao/*.idl: + Added ciao/ as prefix to the include path. This way it is clear + where we are including a file from. + +Tue Nov 28 21:38:12 2006 Johnny Willemsen + + * DAnCE/RTNodeApplication: + Zapped, not used anymore + +Tue Nov 28 19:33:12 2006 Johnny Willemsen + + * ciao/Deployment_DomainApplicationManager.idl: + Added comments about more details which are not compliant according + to the spec + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + Use native bool instead of int + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + Reordered includes and improved doxygen documentation + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Const changes, use ACE_ERROR for error messages + + * DAnCE/NodeManager/CIAO_Monitor.cpp: + Const changes, use more ACE and little cleanup + + * DAnCE/NodeManager/CIAO_Monitor.h: + Doxygen improvement + + * DAnCE/NodeManager/MonitorCB.cpp: + Code layout changes + + * DAnCE/NodeManager/MonitorCB.h: + Doxygen changes and added some todo's + + * DAnCE/NodeManager/MonitorController.cpp: + Use bool and small improvements + + * DAnCE/NodeManager/Node_Manager.cpp: + Use the correct value for the lenght of the buffer passed + to hostname + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Small improvements and added some todo's + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + Cleanup + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + Made some debug lines dependent on a debug level + +Tue Nov 28 16:11:32 UTC 2006 William R. Otte + + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * DAnCE/NodeManager/Monitor.mpc + + Fixes for link errors in OS X. + +Tue Nov 28 11:45:12 2006 Johnny Willemsen + + * CIDLC/ExecutorMappingGenerator.cpp: + Updated because of idl file rename + +Tue Nov 28 10:42:12 2006 Johnny Willemsen + + * ciao/*: + * *: + Renamed a lot of idl files, if the file contains interfaces/types + from the DAnCE spec, added Deployment_ as prefix, if they are + containing CIAO specific interfaces, added CIAO_. This way we can + more easily see if we have spec compliant IDL or not. + +Tue Nov 28 09:50:12 2006 Johnny Willemsen + + * ciao/CCM_Home.idl: + * ciao/CCM_Object.idl: + Moved CCMHome again to its own file + + * ciao/Security.idl: + CIAO uses an interface of the security service but we don't + do a thing with it, so just define a local interface within + CIAO and use that for the moment, saves 250Kb of footprint + + * ciao/CCM_Context.idl: + Use the local security interface + + * ciao/ExectionManager.idl: + Added todo + + * ciao/CCM_Core.idl: + Added new file + +Mon Nov 27 18:34:12 2006 Johnny Willemsen + + * ciao/NodeApplicationManager.idl: + * ciao/Deployment_ApplicationManager.idl: + Moved ApplicationManager interface to its own file + + * ciao/CCM_Core.mpc: + Added new file + + * ciao/DomainApplicationManager.idl: + * ciao/TargetManager.idl: + Updated includes + + * ciao/Target_Data.idl: + Moved ResourceNotAvailable also to the new + Deyloyment_ApplicationManger file + + * DAnCE/NodeManager/CIAO_Monitor.h: + Removed include of memory, not portable and not used. + Fixes bugzilla bug 2730. Thanks to Abdul for reporting + this. + +Mon Nov 27 15:41:12 2006 Johnny Willemsen + + * ciao/Deployment_Core.idl: + * ciao/Deployment_Container.idl: + * ciao/Deployment_NodeApplication.idl: + Moved types from Core to the other files and added remarks + to all CIAO specific types + + * DAnCE/NodeApplicationManager/Containers_Info_Map.h: + * DAnCE/NodeApplicationManager/ImplementationInfo.h: + Updated includes because of the move above + +Mon Nov 27 14:55:12 2006 Johnny Willemsen + + * ciao/CCM_Core.mpc: + Added new Deployment_DeploymentPlan + + * ciao/Deployment_Data.idl + * ciao/Deployment_DeploymentPlan.idl: + Moved types related to DeploymentPlan to their own file + + * ciao/Deployment_Data.idl + Removed RequirementSatisfier, it is superfluous. + + * ciao/Deployment.idl: + No need to include Deployment_Data + + * ciao/Target_Data.idl: + Removed not needed include + + * ciao/Deployment_Connection.idl: + * ciao/TargetManager.idl: + * RACE/Output_Adapters/Interface/PlanEgress.idl: + * RACE/Plan_Analyzer/Interface/PlanIngress.idl: + * RACE/Planner_Manager/Interface/Planner_Manager_I.idl: + * RACE/Planners/Interface/Planner_I.idl: + Updated include because of move above + + * tools/Config_Handlers/DnC_Dump.{h,cpp}: + Removed RequirementSatisfier + +Mon Nov 27 14:11:12 2006 Johnny Willemsen + + * ciao/Deployment.idl: + Removed LastConfiguration, it is not used and has been zapped + from the DAnCE spec + +Mon Nov 27 14:04:12 2006 Johnny Willemsen + + * ciao/Deployment_Core.idl: + * ciao/Deployment_NodeApplication.idl: + Moved ESInstallationInfo to NodeApplication file + + * ciao/Deployment.idl: + LastConfiguration doesn't seem used, added a comment to that + exception. + + * ciao/NodeApplicationManager.idl: + Doxygen improvement + +Mon Nov 27 13:23:12 2006 Johnny Willemsen + + * ciao/NodeApplicationManager.idl: + Doxygen improvement + + * ciao/Deployment_Core.idl: + Removed InvalidLocation exception, not used and not in the DAnCE + spec + +Mon Nov 27 13:10:12 2006 Johnny Willemsen + + * ciao/Deployment_Core.idl + * ciao/Deployment_Container.idl + * ciao/Deployment_NodeApplication.idl + Moved some interfaces from Core to their own files + + * ciao/CCM_Core.mpc: + Updated because of split above and added some more flags to + reduce the amount of generated files + + * ciao/DomainApplicationManager.idl: + * ciao/NodeApplication_CallBack.idl + Updated include + + * DAnCE/NodeApplication/Container_Impl.h: + * DAnCENodeApplication/NodeApplication_Impl.h: + * DAnCEtests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCEtests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCEtests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCEtests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + Updated includes because of refactoring above + +Mon Nov 27 09:40:12 2006 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + Instead of the http files in this library, use the HTTP + classes from the TAO lib + + * DAnCE/RepositoryManager/HTTP_Client.cpp + * DAnCE/RepositoryManager/HTTP_Client.h + * DAnCE/RepositoryManager/HTTP_Handler.cpp + * DAnCE/RepositoryManager/HTTP_Handler.h + Removed, not needed anymore, these files did move to the TAO + lib to support http:// ior and we are reusing them now in + CIAO + + * DAnCE/RepositoryManager/RepositoryManager.mpc + Removed the files above + +Mon Nov 27 09:36:12 2006 Johnny Willemsen + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + Instead of the http files in this library, use the HTTP + classes from the TAO lib + + * DAnCE/NodeApplicationManager/URL_Parser.h: + Doxygen improvements + + * DAnCE/NodeApplicationManager/HTTP_Client.cpp: + * DAnCE/NodeApplicationManager/HTTP_Client.h: + * DAnCE/NodeApplicationManager/HTTP_Handler.cpp: + * DAnCE/NodeApplicationManager/HTTP_Handler.h: + Removed, not needed anymore, these files did move to the TAO + lib to support http:// ior and we are reusing them now in + CIAO + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + Removed the files above + +Mon Nov 27 09:33:12 2006 Johnny Willemsen + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Removed include of errno.h. It is not portable, but it seems + it isn't needed at all. Thanks to Abdul for reporting this, + this fixes bugzilla bug 2726. + +Mon Nov 27 08:59:12 2006 Johnny Willemsen + + * docs/tutorials/Quoter: + Extended this tutorial with more documentations. Thanks to + Abdul for delivering these files. This fixes bugzilla 2717 + +Fri Nov 24 13:59:12 2006 Johnny Willemsen + + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + Added check whether we got a valid NodeImplementationInfo back + and not a nill pointer. Fixes bugzilla bug 2692 finally. + Thanks to Abdul for pointing out the need for this check + +Fri Nov 24 09:41:12 2006 Johnny Willemsen + + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + Don't build this project in ace_for_tao configuration + +Thu Nov 23 12:34:12 2006 Johnny Willemsen + + * ciao/CCM_Home.idl: + * ciao/CCM_Object.idl: + Moved CCMHome again to its own file now the idl compiler has + been fixed to handle this correctly + +Wed Nov 22 20:39:12 2006 Johnny Willemsen + + * ciao/Dynamic_Component_Servant_Base.h: + Removed the character c from the first line which drove the + compilers really crazy + +Wed Nov 22 19:31:12 2006 Johnny Willemsen + + * ciao/CCM_Home.idl: + * ciao/CCM_Object.idl: + Moved CCMHome to CCMObject, when these are in seperate files + the generated code for components is not correct. We want to have + these interfaces in seperate files but we can sort out this + later. + +Wed Nov 22 14:45:12 2006 Johnny Willemsen + + * ciao/Dynamic_Component_Servant_Base.h: + Fixed pragme once warning + +Wed Nov 22 11:05:12 2006 Johnny Willemsen + + * ciao/CCM_Base.idl + * ciao/CCM_CCM2Context.idl + * ciao/CCM_CCMException.idl + * ciao/CCM_Component.idl + * ciao/CCM_Configurator.idl + * ciao/CCM_Container.idl + * ciao/CCM_Container_Ex.idl + * ciao/CCM_Context.idl + * ciao/CCM_Cookie.idl + * ciao/CCM_Core.mpc + * ciao/CCM_EnterpriseComponent.idl + * ciao/CCM_EntityComponent.idl + * ciao/CCM_EntityContext.idl + * ciao/CCM_Enumeration.idl + * ciao/CCM_Event.idl + * ciao/CCM_Home.idl + * ciao/CCM_HomeConfigurator.idl + * ciao/CCM_HomeExecutorBase.idl + * ciao/CCM_HomeFinder.idl + * ciao/CCM_HomeRegistration.idl + * ciao/CCM_KeylessCCMHome.idl + * ciao/CCM_Navigation.idl + * ciao/CCM_Object.idl + * ciao/CCM_ProxyHomeRegistration.idl + * ciao/CCM_Receptacle.idl + * ciao/CCM_Session2Context.idl + * ciao/CCM_SessionSynchronization.idl + * ciao/CCM_StandardConfigurator.idl + * ciao/Client_init.cpp + * ciao/Components.idl + * ciao/Cookies.h + * ciao/CosPersistentState.idl + * ciao/Deployment.idl + * ciao/Deployment_Application.idl + * ciao/Deployment_Base.idl + * ciao/Deployment_Connection.idl + * ciao/Deployment_Core.idl + * ciao/Deployment_Data.idl + * ciao/Deployment_TargetData.idl + * ciao/DomainApplicationManager.idl + * ciao/Home_Servant_Impl_Base.h + * ciao/NodeApplicationManager.idl + * ciao/NodeManager.idl + * ciao/Servant_Impl_Base.h + * ciao/Servant_Impl_T.cpp + * ciao/Server_init.cpp + * ciao/StandardConfigurator_Impl.h + * ciao/SwapExec.idl + * ciao/Swapping_Servant_Home_Impl_Base.h + * ciao/Target_Data.idl + * ciao/TargetManager.idl + * ciao/UpgradeableContext.idl + Splitted the huge idl files into smaller parts. The CCM files are almost done, + the Deployment files do need some more iterations to get smaller files that + contain an interface with the types they need. This way the linker can optimize + objects out during a static compilation + + * ciao/CIAO_Value.idl: + * ciao/Container_Base.pidl: + Removed, not used at all + + * ciao/ComponentsC.h: + * ciao/ComponentsS.h: + Removed, will be generated by tao_idl + + * DAnCE/Interfaces/NodeManagerDaemon.idl + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + * DAnCE/NodeManager/MonitorController.h + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainDataManager.h + * DAnCE/TargetManager/DomainEvents.idl + * DAnCE/TargetManager/TargetManager.cidl + * DAnCE/TargetManager/TargetManager.mpc + * tools/Config_Handlers/DD_Handler.cpp + * tools/Config_Handlers/DnC_Dump.h + * examples/Hello/Sender/starter.cpp + Updated because of rename above + + * DAnCE/TargetManager/TargetManager.idl: + Renamed to TargetManagerImpl.idl, this is the interface + it contains. + + * DAnCE/NodeApplication/Container_Impl.cpp + * DAnCE/NodeApplication/Container_Impl.h + Removed get_homes(), it is not in the base idl + + * examples/Display/Display_Base/Display_Base.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/RateGen/RateGen.mpc + * RACE/common/RACE_common.mpc + * RACE/Input_Adapters/Base/Input_Adapter.mpc + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc + * RACE/Output_Adapters/Base/Output_Adapter.mpc + * RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc + * RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc + * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc + * RACE/Planner_Manager/Component/Planner_Manager.mpc + * RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc + * RACE/Planners/Base/Planner.mpc + * RACE/Planners/Interface/Planner_Interface.mpc + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc + * tests/IDL3/ImpliedIDL/All/all.mpc + * tests/IDL3/Lookup/lookup_test.mpc + * tests/Minimum/Minimum_Base/Minimum.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + Simplified these mpc files, the -GT option is not added by + orbsvcslib anymore and -Sc is deprecated + + * tests/IDL3/Events/Any/main.cpp: + * tests/IDL3/Events/Any/README: + * tests/IDL3/Events/Any/run_test.pl: + Updated this test to reproduce a problem with valuetype + insertion into an any. This test will now fail until + Jeff Parsons commits some idl compiler changes + +Mon Nov 20 08:16:34 2006 Simon McQueen + + * CIAO version 0.5.4 released. + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: + diff --git a/modules/CIAO/ChangeLogs/ChangeLog-07b b/modules/CIAO/ChangeLogs/ChangeLog-07b new file mode 100644 index 00000000000..5ffc3af510a --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-07b @@ -0,0 +1,2845 @@ +Fri Jul 27 06:50:14 CDT 2007 Johnny Willemsen + + * CIAO version 0.5.10 released. + +Tue Jul 24 20:38:50 UTC 2007 Douglas C. Schmidt + + * COPYING: Updated this file to reflect 2007. + +Tue Jul 24 16:24:58 UTC 2007 Krishnakumar B + + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/DeploymentPlan_without_ns.cdp: + + Initialized the attributes of the Sender. The test spits out an + error message if the Sender's enum attribute could not be + initialized. It is currently not possible to initialize enum + attributes in PICML. So I have modified these plans by hand for + now. + +Tue Jul 24 10:09:20 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp(can_skip_module): + + Fixed a bug in the logic, where a local or abstract interface, + or abstract eventtype, would trigger an immediate return of + 'false'. This no longer happens. + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Fixed a typo where a line was commented out inadvertently. + +Mon Jul 23 16:53:45 UTC 2007 Krishnakumar B + + * examples/Hello/descriptors/DeploymentPlan.cdp: Updated + deployment plan generated from the corresponding PICML model. + + * examples/Hello/descriptors/DeploymentPlan_without_ns.cdp: New + deployment plan which doesn't use the Naming Service. + + * examples/Hello/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: + + Updated the nightly build script to use the new deployment plans. + +Mon Jul 23 09:07:14 UTC 2007 Johnny Willemsen + + * ciao/Cookies.cpp: + Removed const in cast, not needed and fixes Intel C++ + warning + +Fri Jul 20 12:11:43 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/basic_visitor.h: + * tools/IDL3_to_IDL2/be_global.cpp: + * tools/IDL3_to_IDL2/be_produce.cpp: + * tools/IDL3_to_IDL2/be_global.h: + * tools/IDL3_to_IDL2/be_sunsoft.h: + * tools/IDL3_to_IDL2/be_helper.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/be_helper.h: + + Refactored code and other changes to make this backend more + friendly to others that extend it. No changes to generated + code or to the behavior of the backend. + +Thu Jul 19 07:50:21 UTC 2007 Johnny Willemsen + + * tools/IDL3_to_IDL2/be_global.{h,cpp}: + No need to specify "bool const" for a return value, this also + triggers a warning with the Intel C++ Compiler + +Thu Jul 19 00:50:28 UTC 2007 Krishnakumar B + + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + + Updated to remove traces of _DnC_ from the projects. + + * examples/Hello/descriptors/DeploymentPlan.cdp: Generated the + plan using the new PICML model of Hello. + + * examples/Hello/descriptors_RTCCM/rt-config-example.cdp: + * examples/Hello/descriptors_RTCCM/rt-example.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp: + * examples/Hello/descriptors_naming/deploymentplan_naming.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp: + + Removed traces of _DnC_ from these files. + + * examples/Hello/descriptors/flattened_deploymentplan.cdp: + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp: + + Removed these files as they were redundant. + +Sun Jul 15 13:06:12 UTC 2007 Abdullah Sowayan + + * CCF/Example/IDL2/CxxMapping/GeneratorImpl.hpp: + + Fixed Fuzz warnings regarding exception specification. + +Fri Jul 13 11:04:13 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/basic_visitor.h: + + New files containing a base class visitor that factors + out code common to idl3_to_idl2_visitor and others which + may be created later or link this library. + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Updated MPC file with new additions above. + + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/identifier_helper.h: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + + - Factored code out of idl3_to_idl2_visitor into basic_visitor + described above. + + - Added export macros to classes so another tool can instantiate + and inherit from them. + +Wed Jul 11 04:33:45 UTC 2007 Abdullah Sowayan + + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + + Fix fuzz warning regarding exception specification. + +Tue Jul 10 13:21:12 UTC 2007 Johnny Willemsen + + * ciao/Session_Container.cpp: + Fixed debug statements, thanks to Friedhelm Wolf + for pointing this out + +Tue Jul 10 03:53:18 UTC 2007 Abdullah Sowayan + + * CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp: + + Fixed fuzz warnings. Zap the usage of exception specification. + +Mon Jul 9 11:23:12 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.cpp: + + Added missing newline to the end of the file. + +Mon Jul 9 07:26:20 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Updated project to include new source and header files. + +Mon Jul 9 02:11:22 UTC 2007 Abdullah Sowayan + + * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp: + * CCF/CCF/CodeGenerationKit/IndentationIDL.hpp: + * CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp: + * CCF/CCF/CodeGenerationKit/IndentationXML.hpp: + * CCF/CCF/CompilerElements/Context.hpp: + * CCF/CCF/CompilerElements/Preprocessor.cpp: + * CCF/CCF/CompilerElements/PreprocessorToken.cpp: + * CCF/CCF/CompilerElements/PreprocessorToken.hpp: + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp: + * CCF/CCF/IDL2/SemanticGraph/Name.cpp: + * CCF/CCF/IDL2/SemanticGraph/Name.hpp: + * CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp: + * CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp: + * DAnCE/Utils/Plan_Handler.h: + * DAnCE/Utils/Plan_Handler.cpp: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.h: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.h: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp: + * tools/Config_Handlers/DD_Handler.h: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.h: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/ESD_Handler.h: + * tools/Config_Handlers/ESD_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.h: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/IDREF_Base.h: + * tools/Config_Handlers/IDREF_Base.cpp: + * tools/Config_Handlers/IRDD_Handler.h: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/RT-CCM/OR_Handler.h: + * tools/Config_Handlers/RT-CCM/OR_Handler.cpp: + * tools/Config_Handlers/RT-CCM/SRD_Handler.h: + * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp: + + Fixed fuzz warnings. Zap the usage of exception specification. + +Fri Jul 6 12:09:31 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.cpp: + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/identifier_helper.cpp: + * tools/IDL3_to_IDL2/identifier_helper.h: + + New files, added to help implement the new features + described below. + + * tools/IDL3_to_IDL2/be_global.cpp: + * tools/IDL3_to_IDL2/be_produce.cpp: + * tools/IDL3_to_IDL2/be_init.cpp: + * tools/IDL3_to_IDL2/be_global.h: + * tools/IDL3_to_IDL2/be_helper.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + + Changes to existing files which, along with the new files + listed above, add the following improvements to the CIAO + IDL3_to_IDL2 compiler: + + - more robust handling of escaped identifiers + - more robust handling of identifiers prefixed with _cxx_ + due to clashes with C++ keywords + - a new command line option to exclude included IDL files + from default processing, generating a corresponding + include with the name of the IDL file unchanged + - an optional alternative to regenerating an IDL file with + no IDL3 declarations, which is to simply generate an + include of the original IDL file + + Thanks for all these improvements to Hakim Souami + and his team. + +Fri Jun 29 19:23:14 UTC 2007 Johnny Willemsen + + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + Added include of Throughput_Stats.h + +Thu Jun 28 03:41:14 UTC 2007 Abdullah Sowayan + + * examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h: + * examples/Display/NavDisplayGUI_exec/Command.h: + * examples/Display/NavDisplayGUI_exec/DetailView.cpp: + * examples/Display/NavDisplayGUI_exec/QuitCmd.h: + * examples/Display/NavDisplayGUI_exec/RootPanel.cpp: + * examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h: + * examples/Display/NavDisplayGUI_exec/Worker.cpp: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * tools/Config_Handlers/Utils/XercesString.cpp: + + Fixed fuzz warnings. Replace NULL with 0 to adhere to ACE/TAO/CIAO + coding guidlines. + +Thu Jun 28 03:27:08 UTC 2007 Abdullah Sowayan + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/NodeApplication/NodeApplication.cpp: + * DAnCE/NodeManager/Node_Manager.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * examples/BasicSP/EC/client.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/Display/RateGen/controller.cpp: + * examples/Hello/Sender/starter.cpp: + * examples/Swapping/Sender/starter.cpp: + * performance-tests/Benchmark/Multi_Threaded/client.cpp: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + * performance-tests/Benchmark/server.cpp: + * performance-tests/Protocols/Controller/Controller.cpp: + * tests/IDL3/Events/Any/main.cpp: + + Fixed fuzz warnings. + Use "int ACE_TMAIN (int argc, ACE_TCHAR *argv[])" + instead of "int main (int argc, char *argv[])" to conform to ACE's + coding guidelines. + +Wed Jun 27 03:44:44 UTC 2007 Abdullah Sowayan + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/MonitorController.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/Utils/Plan_Handler.cpp: + * docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/Display/NavDisplayGUI_exec/DetailView.cpp: + * examples/Display/NavDisplayGUI_exec/NodeItem.cpp: + * tools/Config_Handlers/cdd.cpp: + * tools/IDL3_to_IDL2/be_helper.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + + Fixed ACE_OS fuzz warnings. Use ACE_OS calls instead of raw OS function + where possible. If fuzz detected a false-positive, then disable + the ACE_OS fuzz check for that section of the code. + +Wed Jun 27 01:55:29 UTC 2007 Abdullah Sowayan + + * CIDLC/AttributeHeaderEmitters.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/OperationHeaderEmitters.cpp: + + Enhance the layout of CIDLC generated code. This fixes bugilla 2949. + +Mon Jun 25 11:34:36 CDT 2007 Ciju John + + * CIAO version 0.5.9 released. + +Mon Jun 25 16:16:17 UTC 2007 Ciju John + + * NEWS: + NEWS summary contributions from Gan Deng. + +Fri Jun 22 14:58:53 UTC 2007 Ciju John + + * ChangeLog: + * PROBLEM-REPORT-FORM: + * VERSION: + * ciao/Version.h: + Revert to x.5.8 status. + +Wed Jun 6 20:00:19 UTC 2007 Gan Deng + + * examples/Null_Component/plan.h + + Fixed Sun C++ on Salaris 10 linkage warning regarding + extern "C" and extern "C++" mismatch. + +Wed Jun 6 16:52:46 UTC 2007 Gan Deng + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp + + Fixed a type conversion warning on the + WinXP_VC71_NET_Dynamic_Debug build. + +Wed Jun 6 02:04:42 UTC 2007 Phil Mesnier + + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + + Update the name of the test enum value to match the idl. + +Tue May 29 21:02:08 UTC 2007 Phil Mesnier + + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + + Added code to support the new IPv4/IPv6 capable address server. + +Sun May 27 16:20:10 UTC 2007 Abdullah Sowayan + + * ciao/Object_Set_T.cpp: + + Enhanced exception safety of this class. Look at BUG ID 2725 for + details. + +Thu May 24 14:52:18 UTC 2007 + + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp + + Reverted a change which was accidentally checked in. + +Wed May 23 20:01:49 UTC 2007 Gan Deng + + * DAnCE/Deployment/NodeApp_CB_Impl.cpp: + * DAnCE/Deployment/NodeApp_CB_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + + Removed ACE_HAS_THREADS guards. + +Wed May 23 18:36:35 UTC 2007 Gan Deng + + * MPC/config/ciao_deployment_stub.mpb: + + Added "requires += threads" to disable single threaded build. + + * DAnCE/NodeManager/Node_Manager.cpp + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/NodeManager/NodeManager_Impl.h + + Removed ACE_HAS_THREADS guards. + +Wed May 23 02:21:30 UTC 2007 Gan Deng + + * DAnCE/Deployment/NodeApp_CB_Impl.h: + + Added back #if defined (ACE_HAS_THREADS) macro to + fix error in single_threaded build. + +Mon May 21 15:46:23 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/Task_StartLaunch.h: + + Included ACE configuration header file to fix the warnigns + on the VxWorks5.5.1_x86_GCC2.96_Exceptions build. + +Sat May 19 15:59:08 UTC 2007 Gan Deng + + * DAnCE/Deployment/NodeApp_CB_Impl.cpp: + * DAnCE/Deployment/NodeApp_CB_Impl.h: + + Moved #include "ace/config-all.h" from .h file to + the .cpp file since otherwise the #if defined (ACE_HAS_THREADS) + cannot be evaluated properly. + +Fri May 18 13:46:13 UTC 2007 Gan Deng + + * DAnCE/Deployment/NodeApp_CB_Impl.cpp: + + Added #if defined (ACE_HAS_THREADS) to prevent build error + of single_threaded build. + +Thu May 17 19:53:02 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/Task_StartLaunch.cpp: + * DAnCE/DomainApplicationManager/Task_StartLaunch.h: + + Added this new class which serves as an active object when + performing startLaunch. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_ActiveObject_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_ActiveObject_Impl.h: + + This implementation of DomainApplicationManager is a subclass + of standard implementation of DomainaApplicationManager but + uses an active object based approach to handle deployment, + which essentially spawns a number of threads wich each + correponds to one node. + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + + Added the above new classes into the project file + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + + Modified to allow a new command line option "-b", which + will make the DomainApplicationManager to take an active + object based approach to handle deployment + +Thu May 17 19:02:09 UTC 2007 Gan Deng + + * DAnCE/Deployment/NodeApp_CB_Impl.h: + + Added #if defined (ACE_HAS_THREADS) to prevent build error + of single_threaded build. + +Wed May 16 17:51:57 UTC 2007 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Fixed unused variable warnings on GCC Linux build. + +Wed May 16 14:35:58 UTC 2007 Gan Deng + + * DAnCE/Deployment/NodeApp_CB_Impl.cpp: + * DAnCE/Deployment/NodeApp_CB_Impl.h: + + Implemented a NA component server callback wait strategy in + NAM, which uses conditional variable to signal the NA call + back so it can work with multi-threaded configuration, such + as thread-per-connection mode. The original implementation + uses the main thread to run the ORB event loop, which will + not work for multi-threaded environment. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl: + + Implemented the single_threaded_wait_for_callback() and + multi_threaded_wait_for_callback() methods which uses + perform_work() and conditional variable technique + respectively. + + * DAnCE/NodeManager/Node_Manager.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.h: + + Modified the Node_Manager command line option so the + user can control whether to use single threaded or + multi-threaded mode with command line option. + + * examples/Hello/descriptors/flattened_deploymentplan.cdp: + * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp: + + Modified the tag so the interface of the assembly + corresponds to some concrete ports of the components. Thanks + Santos for reporting this issue. + +Wed May 2 14:09:37 UTC 2007 Johnny Willemsen + + * examples/BasicSP/BasicSP_exec.h: + Fixed warning in VxWorks build + +Mon Apr 30 08:59:37 CDT 2007 Chad Elliott + + * CIAO version 0.5.8 released. + +Mon Apr 30 13:21:23 UTC 2007 Chad Elliott + + * NEWS: + + Added user visible changes for 0.5.8 based on ChangeLog entries. + +Thu Apr 26 15:01:17 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Fixed warning on GCC with constructor initialization list + sequence. + +Wed Apr 25 20:22:44 UTC 2007 + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Fixed warning on GCC with constructor initialization list + sequence. + + * DAnCE/Utils/Plan_Handler.cpp + * DAnCE/Utils/Plan_Handler.h + + Added a utility method to add more instances into a plan. + +Wed Apr 25 19:27:28 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMH_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMH_Impl.h + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMH_Impl.inl + + An AMH-based implementation of DomainApplicationManager. This + class duplicates *most* of code with the non-AMH based + DomainApplicationManager implementation, eventually we should + either remove one version completely or find a way to minimize + the duplicate code. The public interfaces of these two classes are + quite different. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.h + + Modified to use AMH-based DomainApplicationManager in + conjunction with the AMI. + + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + The AMI callback reply handler should work with the + AMH-based DomainApplicationManager instead of the non-AMH based + version. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + + Modified to make the construction process of the + DomainApplicationManager to be more self-contained and atomic. + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + + Modified the instantation of the DomainApplicationManager + servant so we can mix between the AMH/AMI based + DomainApplicationManager servant and the synchronous based + DomainApplicationManager servant based on the command input. + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + + Added the AMH-based DAM servant into the project. + +Tue Apr 24 17:44:22 UTC 2007 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + + Modified the debug output information to make it + better describe the program behavior. + + * examples/Hello/descriptors/run_NodeDaemons.pl + + Increased the spawn latency delay so it can handle + deployment with a large number of components, i.e., + more than one thousand. + + * examples/Hello/descriptors/svc_em.conf + + Service configuration file for ExecutionManager. + +Tue Apr 24 14:58:58 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp: + + Added a newline to the end of the file. + +Mon Apr 23 23:02:25 UTC 2007 Gan Deng + + * DAnCE/Deployment/DAnCE_Core.mpc + + Modified the IDL flag by passing -GH to generate AMH code + for Deployment_DomainApplicationManager.idl. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.h + + Added functionality to use AMH to handle StartLaunch request + processing. + + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + + Modified to notify the DAM servant object once all the + AMI callbacks are received. + +Sat Apr 21 21:26:30 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.h: + + Used raw pointer to cache the servant since no copy constructor + is defined for the Value_Ptr in ACE. + + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + Get rid of the unnecessary copy constructor. + + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplication/Container_Impl.h + * DAnCE/NodeApplication/Container_Impl.inl: + + Modified to use Auto_Ptr to cache the container pointer. + Return a duplicate pointer instead of returning a pointer + within the object. + +Fri Apr 20 19:08:43 UTC 2007 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + + Modified to make the debug message more informative. + +Thu Apr 19 23:15:10 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.h + + Added a centrallized map to track the status of the AMI callback + return status. + + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + Added a DomainApplicationManager_AMI_Impl object as a member + variable for callback purpose, i.e., notifiying this object + as soon as a AMI call returns. + + * DAnCE/ExecutionManager/Execution_Manager.cpp + + Added usage info printout about using AMI. + +Thu Apr 19 18:29:12 UTC 2007 Johnny Willemsen + + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + * examples/BasicSP/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test.pl: + * performance-tests/Benchmark/Multi_Threaded/run_test.pl: + * performance-tests/Benchmark/RoundTrip/run_test.pl: + * performance-tests/Benchmark/RoundTripClient/run_test.pl: + * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl: + Use $PerlACE::wait_interval_for_process_creation + +Sun Apr 15 19:20:32 UTC 2007 Johnny Willemsen + + * CIDLC/ServantSourceGenerator.cpp: + Fixed bug 2892, thanks to Abdul Sowayan for reporting this. + +Wed Apr 11 11:48:32 UTC 2007 Chad Elliott + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + + Removed the stray '\' I accidentally added yesterday. + +Tue Apr 10 17:23:16 UTC 2007 Krishnakumar B + + * examples/BasicSP/BasicSP.mwc: Added SVN Id tag to remove Fuzz + warning. Thanks to Chad for pointing out the error. + + * examples/BasicSP/EC/EC_exec.cpp: Removed use of + ACE_PRINT_EXCEPTION since it is deprecated. + +Tue Apr 10 15:37:24 UTC 2007 Gan Deng + + * DAnCE/ExecutionManager/ExecutionManager.mpc + + Modified to inherit from the "strategies" base project. + + * DAnCE/Utils/Plan_Handler.cpp + + Removed ACE exception macros. + +Tue Apr 10 14:13:19 UTC 2007 Chad Elliott + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + + Removed parenthesis around throw argument. + +Mon Apr 9 23:29:15 UTC 2007 Krishnakumar B + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/EC/EC.mpc: + + Updated MPC files to cleanup the generated skeleton files. + Thanks to Chad for this solution. + +Mon Apr 9 14:15:13 UTC 2007 Chad Elliott + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + + Added BasicSP_exec to the after keyword setting. + +Sat Apr 7 22:09:57 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + + Changed ACE_Thread_Mutex to ACE_SYNCH_MUTEX to fix + Singled Threaded build error. + +Fri Apr 6 03:42:04 UTC 2007 Krishnakumar B + + * examples/BasicSP/descriptors/run_test.pl: Updated the second + invocation of plan_launcher to pass in the previously generated + execution manager's IOR. The test fails on Linux without this + flag. Somehow it works on Windows without this flag; probably + due to some issue with case-sensitivity. + +Fri Apr 6 01:15:00 UTC 2007 Gan Deng + + * MPC/config/dance_utils.mpb + + Added the base project for the DAnCE utility library. + +Fri Apr 6 03:35:21 UTC 2007 Krishnakumar B + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + + Added missing dependencies on BasicSP_svnt so that the test runs + fine on Linux. + +Thu Apr 5 21:32:57 UTC 2007 Krishnakumar B + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/EC/EC.mpc: + + Fixed errors in Linux builds due to a duplicate dependency rule + added to the MPC files between a .cidl file and a E.idl file. + +Thu Apr 5 21:03:50 UTC 2007 Gan Deng + + * DAnCE/Utils/DAnCE_Utils.mpc + * DAnCE/Utils/DAnCE_Utils_Export.h + * DAnCE/Utils/Plan_Handler.cpp + * DAnCE/Utils/Plan_Handler.h + + Added the utility library to manipulate the deployment + plan, such as adding/removing instances, adding/removing + connections, and pretty print. + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp + + Modified to use the above utility class so we can + programatically scale up the deployment. + +Thu Apr 5 16:51:24 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + Changed ACE_Thread_Mutex to ACE_SYNCH_MUTEX to avoid errors + in Single_Threaded build. + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + + Added exception catching blocks to re_launch_plan operation. + +Thu Apr 5 01:07:34 UTC 2007 Krishnakumar B + + * examples/BasicSP/BMClosedED/BMClosedEDEI.idl: + * examples/BasicSP/BMDevice/BMDeviceEI.idl: + * examples/BasicSP/BMDisplay/BMDisplayEI.idl: + * examples/BasicSP/EC/ECEI.idl: + + Removed these files. + +Wed Apr 4 21:55:58 UTC 2007 Krishnakumar B + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Improved the option handling of the Execution_Manager and + plan_launcher. This includes printing meaningful usage + messages, and exiting with an error message when an error occurs + instead of silent termination etc. etc. + + * examples/BasicSP/BMClosedED/BMClosedED.cidl: + * examples/BasicSP/BMClosedED/BMClosedED.idl: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice.cidl: + * examples/BasicSP/BMDevice/BMDevice.idl: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/BasicSP/BMDisplay/BMDisplay.cidl: + * examples/BasicSP/BMDisplay/BMDisplay.idl: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BMDisplay/BMDisplay_exec.h: + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/BasicSP/BasicSP.idl: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BasicSP.mwc: + * examples/BasicSP/BasicSP_exec.h: + * examples/BasicSP/BasicSP_exec.cpp: + * examples/BasicSP/BasicSP_exec_export.h: + * examples/BasicSP/EC/EC.cidl: + * examples/BasicSP/EC/EC.idl: + * examples/BasicSP/EC/EC.mpc: + * examples/BasicSP/EC/EC_exec.h: + * examples/BasicSP/EC/EC_exec.cpp: + * examples/BasicSP/EC/client.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/BasicSP/descriptors/BasicSP.cdp: + * examples/BasicSP/descriptors/BasicSP.dat: + * examples/BasicSP/descriptors/run_test.pl: + + Updated the example to use the latest and greatest CIAO features + include --lem-force-all which gives an example of how to share + the implementation of a facet among multiple components. While + at it, make sure that the run_test.pl actually deploys and runs + the application. Now the example can be turned on for nightly + builds. + + * examples/BasicSP/descriptors/Airframe.ccd: + * examples/BasicSP/descriptors/Airframe.cid: + * examples/BasicSP/descriptors/Airframe.cpd: + * examples/BasicSP/descriptors/Airframe_Exec.iad: + * examples/BasicSP/descriptors/Airframe_Stub.iad: + * examples/BasicSP/descriptors/Airframe_Svnt.iad: + * examples/BasicSP/descriptors/DeploymentPlan.cdp: + * examples/BasicSP/descriptors/Domain.cdd: + * examples/BasicSP/descriptors/GPS.ccd: + * examples/BasicSP/descriptors/GPS.cid: + * examples/BasicSP/descriptors/GPS.cpd: + * examples/BasicSP/descriptors/GPS_Exec.iad: + * examples/BasicSP/descriptors/GPS_Stub.iad: + * examples/BasicSP/descriptors/GPS_Svnt.iad: + * examples/BasicSP/descriptors/HUDisplay.cid: + * examples/BasicSP/descriptors/HUDisplay.cpd: + * examples/BasicSP/descriptors/HUDisplay.pcd: + * examples/BasicSP/descriptors/Libraries.iad: + * examples/BasicSP/descriptors/NavDisplay.ccd: + * examples/BasicSP/descriptors/NavDisplay.cid: + * examples/BasicSP/descriptors/NavDisplay.cpd: + * examples/BasicSP/descriptors/NavDisplay_Exec.iad: + * examples/BasicSP/descriptors/NavDisplay_Stub.iad: + * examples/BasicSP/descriptors/NavDisplay_Svnt.iad: + * examples/BasicSP/descriptors/NodeManagerMap.dat: + * examples/BasicSP/descriptors/Timer.ccd: + * examples/BasicSP/descriptors/Timer.cid: + * examples/BasicSP/descriptors/Timer.cpd: + * examples/BasicSP/descriptors/Timer_Exec.iad: + * examples/BasicSP/descriptors/Timer_Stub.iad: + * examples/BasicSP/descriptors/Timer_Svnt.iad: + * examples/BasicSP/descriptors/XMI.xsd: + * examples/BasicSP/descriptors/basicNodeDaemon.pl: + * examples/BasicSP/descriptors/basicsp.dat: + * examples/BasicSP/descriptors/flattened_deploymentplan.cdp: + * examples/BasicSP/descriptors/package.tpd: + + Removed these files. + +Wed Apr 4 22:04:11 UTC 2007 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Fixed static build errors. + +Wed Apr 4 19:28:09 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + Added header file for ACE_Thread_Mutex. + +Wed Apr 4 15:55:23 UTC 2007 Gan Deng + + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + Removed unused arguments. + +Tue Apr 3 19:30:05 UTC 2007 Gan Deng + + * DAnCE/Deployment/DAnCE_Core.mpc + * MPC/config/ciao_deployment_stub.mpb + + Added "messaging.mpb" as base project for ciao_deployment_stub. + + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + + Modified to allow passing command line option to + indicate whether to use AMI or not. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.h + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp + * DAnCE/DomainApplicationManager/Reply_Handler_i.h + + Added implementation of using AMI for "startLaunch" + operation. + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/Interfaces/Interfaces.mpc + * DAnCE/NodeManager/Monitor.mpc + + Modified to accomodate the above changes. + +Tue Apr 3 18:59:38 UTC 2007 Jeff Parsons + + * CIAO_TAO_DAnCE.mwc: + * CIAO_TAO.mwc: + + In the list of directories eplaced ACE_ROOT/ace/ACEXML with + 3 subdirectories, leaving out the tests and examples + subdirectories, which aren't needed. These included ACEXML + subdirectories are now the same as in TAO_ACE.mwc. + + * tests/CIDL/CodeGen/CodeGen.mpc: + + Cosmetic changes, shortened line lengths. + +Tue Apr 3 15:19:01 UTC 2007 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp + + Removed deprecated ACE exception macros. + +Mon Apr 2 16:38:24 UTC 2007 William R. Otte + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.h + + Address virtual destructor warnings. + + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + + Address exception warnings. + +Fri Mar 30 23:10:24 UTC 2007 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.h: + + Removed the declaration and definition of the virtual + destructor since a virtual destructor has been defined + in the base class. + +Fri Mar 30 18:23:43 UTC 2007 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp + + Silenced the "unused variables" warnings. + +Fri Mar 30 18:09:55 UTC 2007 Gan Deng + + * DAnCE/ExecutionManager/ExecutionManager.mpc + + Added "rtcorba" as base project dependency. + +Fri Mar 30 18:05:06 UTC 2007 Gan Deng + + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + + Added virtual destructors into the class. + +Fri Mar 30 14:15:58 UTC 2007 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + + Removed emulated exceptions since they are no + longer supported. Also removed the exception + specification in the c++ mapping of IDL operation + since they are obsolete. + +Thu Mar 29 15:22:08 UTC 2007 Gan Deng + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Created a child POA which is configured with + Client_Propagated Priority Model. + + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + + Added a get_current_thread_priority() to get the + priority of the current thread. Also added + debug_level control so the thread priority could + be printed out. + + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Added two new methods. + The is_client_propagated_model() checks whether + the ExecutionManager exposes the CLIENT_PROPAGATED + priority model. The set_current_priority() method + will set the client thread priority if the priority + model is CLIENT_PROPAGATED on the EM side. + + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + + Added two derived classes which collect benchmarking + results of DAnCE. + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + + Added a command line argument "-z" to allow priority + to be specified on Plan_Launcher, and then propagated + to the Execution Manager. + + +Wed Mar 28 11:16:43 UTC 2007 Abdullah Sowayan + + * DAnCE/NodeApplication/NodeApp_Configurator.h: + + Partially reverted changes made in Fri Mar 23 03:13:40 UTC 2007. + VS 7.1 didn't like it. Forward declaration to Config_Manager was + removed and its header file was included again. + +Sun Mar 25 23:26:11 UTC 2007 William R. Otte + + * CCF/CCF/IDL2/Parsing/Recovery.hpp + * CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp + + An attempt to deal with copious warnings from the CIDLC + build. + +Sun Mar 25 23:07:17 UTC 2007 William R. Otte + + * CIDLC/OperationHeaderEmitters.cpp + * CIDLC/OperationHeaderEmitters.hpp + + Reverted part of previous commit which caused malformed output + in components with supported interfaces with raises clauses. + +Fri Mar 23 21:26:31 UTC 2007 Jeff Parsons + + * ciao/Cookies.h: + * ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_Utils_T.cpp: + * ciao/Cookies.cpp: + * CIDLC/OperationHeaderEmitters.cpp: + * CIDLC/OperationHeaderEmitters.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + - changed key type of ACE_Array_Map added in + + Tue Mar 6 20:21:45 UTC 2007 Jeff Parsons + + to ptrdiff_t from CORBA::ULong, so it will be + portable to 64-bit systems. + + - fixed formatting errors in generated code + for facet servant operations, and removed + unused methods from the emitter class. + +Fri Mar 23 12:46:12 UTC 2007 Johnny Willemsen + + * ciao/Session_Container.cpp: + * ciao/StandardConfigurator_Impl.cpp: + * ciao/Swapping_Container.cpp: + * examples/Null_Component/Null_Component_exec.h: + * tools/Config_Handlers/ERE_Handler.h: + Layout changes + +Fri Mar 23 06:56:38 UTC 2007 William R. Otte + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Removed emulated exception macros. + +Fri Mar 23 06:45:51 UTC 2007 William R. Otte + + * DAnCE/RepositoryManager/ZIP_Wrapper.h + + Addressed initialization warning. + +Fri Mar 23 03:13:40 UTC 2007 Abdullah Sowayan + + * DAnCE/NodeApplication/Config_Manager.h: + * DAnCE/NodeApplication/Config_Manager.cpp: + * DAnCE/NodeApplication/Config_Manager_export.h: + + Removed uncessary include files. Also, implementation of virtual + destructor should not be in header or inline file, it was moved + to a newly created cpp file and an export header was created. + This Fixes bugzilla 2858. + + * DAnCE/NodeApplication/NodeApp_Configurator.h: + * DAnCE/NodeApplication/NodeApp_Configurator.cpp: + + Don't include a header file if a forward declaration suffices. The + include of Config_Manager.h was moved from the header to the cpp file. + + * DAnCE/NodeApplication/NodeApplication.mpc: + + Added a new Config_Manager project. Also simplified this file to + utilize mpb base projects. + + * MPC/config/ciao_config_manager.mpb: + + New base project for Config_Manager. + + * MPC/config/ciao_nodeapp_configurator.mpb: + + This project now inherits from ciao_config_manager base project. + +Fri Mar 23 02:50:00 UTC 2007 Abdullah Sowayan + + * DAnCE/NodeApplication/Configurator_Factory.h: + * DAnCE/NodeApplication/Configurator_Factory.inl: + * DAnCE/NodeApplication/Configurator_Factory.cpp: + + Fixed bugzilla 2860. All inlined implementations were + moved to .inl file to follow ACE/TAO/CIAO conventions. + + Uncessary include files were removed. + + ACE_DLL was commented out since it is not used anymore. + +Thu Mar 22 19:09:35 UTC 2007 Gan Deng + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + + Reverted a change made from: + + Sun Apr 9 01:03:19 UTC 2006 + + + The old change accidentally checked in some wrong code, + which broke the ReDaC functionality when removing components. + +Wed Mar 21 12:12:26 CDT 2007 Chad Elliott + + * CIAO version 0.5.7 released. + +Wed Mar 21 14:54:24 UTC 2007 William R. Otte + + * NEWS + + Latest NEWS items. + +Tue Mar 13 20:13:09 UTC 2007 Steve Huston + + * MPC/config/cidlc.mpb: Added C4996 (deprecated CRT function) to the + list of suppressed warnings. The warnings emanate from the + ACE_wrappers/contrib/utility area, in case anyone wants to + investigate the desireability of making a change. + +Mon Mar 11 07:12:19 UTC 2007 Johnny Willemsen + + * CIDLC/ServantSourceGenerator.cpp: + Added missing .in() to the generation + +Sat Mar 10 22:49:01 UTC 2007 Steve Huston + + * MPC/config/ciao_vc8warnings.mpb: New base containing features that + turn VC8 warnings on/off. Some of these may benefit from some looking + at; if you want to see them, regenerate projects with the feature + turned off. + + * MPC/config/ciao_client_dnc.mpb: Inherit from ciao_vc8warnings to + shut off the gazillions of VC8 warnings. + +Sat Mar 10 01:11:40 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * docs/tutorials/Quoter/Simple/index.html: + + Added $Id to each file to fix fuzz errors. + +Fri Mar 9 21:11:20 UTC 2007 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Changes to code generation specific to upgradeable components + corresponding to changes in + + Tue Mar 6 20:21:45 UTC 2007 Jeff Parsons + +Fri Mar 9 15:53:02 UTC 2007 Steve Huston + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: Adjusted 3rd arg to + ACE_CString for matching change in ACE from yesterday. + +Fri Mar 9 14:09:19 UTC 2007 Johnny Willemsen + + * DAnCE/NodeApplication/RTConfig_Manager.{cpp,inl}: + Fixed ownership problems with the policy list, fixes bugzilla 2743. + Also moved destructor to cpp file + +Thu Mar 8 01:27:19 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * docs/tutorials/Quoter/Simple/index.html: + + Added link to CIDLC compiler options. + Added link to generate_component_mpc.pl options. + Made it easier to navigate between tutorial pages. + +Wed Mar 7 11:42:26 PST 2007 William R. Otte + + * NEWS: + + Updated to include some important changes in this release and + plans for next release. + + +Wed Mar 7 02:20:26 UTC 2007 Abdullah Sowayan + + * docs/tutorials/CoSMIC: + * docs/tutorials/CoSMIC/01.html: + * docs/tutorials/CoSMIC/02.html: + * docs/tutorials/CoSMIC/03.html: + * docs/tutorials/CoSMIC/04.html: + * docs/tutorials/CoSMIC/Icons: + * docs/tutorials/CoSMIC/Icons/AddConnMode.gif: + * docs/tutorials/CoSMIC/Icons/SetMode.gif: + * docs/tutorials/CoSMIC/Images: + * docs/tutorials/CoSMIC/Images/fig1.jpg: + * docs/tutorials/CoSMIC/Images/fig10.jpg: + * docs/tutorials/CoSMIC/Images/fig11.jpg: + * docs/tutorials/CoSMIC/Images/fig12.jpg: + * docs/tutorials/CoSMIC/Images/fig2.jpg: + * docs/tutorials/CoSMIC/Images/fig3.jpg: + * docs/tutorials/CoSMIC/Images/fig4.jpg: + * docs/tutorials/CoSMIC/Images/fig5.jpg: + * docs/tutorials/CoSMIC/Images/fig6.jpg: + * docs/tutorials/CoSMIC/Images/fig7.jpg: + * docs/tutorials/CoSMIC/Images/fig8.jpg: + * docs/tutorials/CoSMIC/Images/fig9.jpg: + * docs/tutorials/CoSMIC/Model: + * docs/tutorials/CoSMIC/Model/Quoter.xme: + * docs/tutorials/CoSMIC/index.html: + * docs/tutorials/CoSMIC/style.css: + + Removed these files. This tutorial has been subsumed by the + tutorial in docs/tutorials/Quoter. + +Tue Mar 6 23:43:58 UTC 2007 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Added code generation for attaching diffserv policies to + receptacle interfaces at connection time. + +Tue Mar 6 20:21:45 UTC 2007 Jeff Parsons + + * ciao/Cookies.h: + * ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_Utils_T.cpp: + * ciao/Server_init.cpp: + * ciao/Cookies.inl: + * ciao/Servant_Impl_Base.cpp: + * ciao/Cookies.cpp: + * ciao/Dynamic_Component_Servant_Base.h: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/AttributeSourceEmitters_T.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/Upcase.hpp: + * CIDLC/ServantGenerator.cpp: + + - changed the container used to hold object reference for + multiplex receptacle and event source ports from + ACE_Active_Object_Map to ACE_Array_Map + + - removed class CIAO::Map_Key_Cookie (since it encodes an + ACE_Active_Object_Map_Key, which is tightly coupled with + ACE_Active_Object_Map) and replaced it with class + Cookie_Impl, which encodes a CORBA::ULong + + - formatting and cosmetic changes to CIDLC-generated code + +Tue Mar 6 13:21:24 UTC 2007 Douglas C. Schmidt + + * COPYING: Updated this file to clarify that the CIAO license need + not be shipped with binary-only releases. Thanks to Michael + Kircher and Werner + Burger for motivating + this. + +Sun Mar 4 21:49:19 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/Icons: + * docs/tutorials/Quoter/Simple/Model: + + Added GME model of the Quoter tutorial. + +Thu Mar 1 23:05:27 UTC 2007 William R. Otte + + * docs/tutorials/Quoter/Simple/images/step6.jpg: + * docs/tutorials/Quoter/Simple/images/step1.jpg: + * docs/tutorials/Quoter/Simple/images/step2.jpg: + * docs/tutorials/Quoter/Simple/images/step3.jpg: + * docs/tutorials/Quoter/Simple/images/steps.jpg: + + Lowercased file names, removed spaces. + + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * docs/tutorials/Quoter/Simple/index.html: + + Changes to reflect above change. +Thu Mar 1 22:20:28 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplication/Container_Impl.cpp: + + A minor change to add a "_" to the receptacle name, + that is used as a key in a Hash Map storing the + receptacle policies and the receptacle name. + +Thu Mar 1 07:17:00 UTC 2007 William R. Otte + + * tools/Config_Handlers/ccd.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.cpp: + * tools/Config_Handlers/cdd.hpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/iad.hpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/pcd.hpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/iad.cpp: + + Regenrated with the latest version of XSC to pick up + bugfixes, esp for addressing warnings in Borland. + + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/RT-CCM/TP_Handler.cpp: + * tools/Config_Handlers/IRDD_Handler.h: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.cpp: + + Borland compile errors resolved. + + * tools/Config_Handlers/Property_Handler.h: + + Layout changes. + +Thu Mar 1 03:54:50 UTC 2007 William R. Otte + + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc: + + Changed base project from ciao_xml_utils to ciao_config_handlers_base + to pull in specific block that turns off visibility. + +Wed Feb 28 22:19:37 UTC 2007 Jaiganesh B + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + + Added a method to get the receptacle policy associated + with a receptacle. + +Wed Feb 28 22:04:52 UTC 2007 Jaiganesh B + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + + Added a new private variable of type ACE_Hash_Map to hold + the receptacle policy list. + + Added a set operation for setting the value of the receptacle policy + map. + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + When the Container_Impl class is created, pass on the + NA's configurator. The configurator will be used by the + Container_Impl class to identify the policies that needs to + be set on the components and their ports. Finally, the + Container_Impl class lets the container know about these policies. + + * DAnCE/NodeApplication/Container_Impl.h: + * DAnCE/NodeApplication/Container_Impl.inl: + * DAnCE/NodeApplication/Container_Impl.cpp: + + Modified the constructor to receive the NA configurator as + an input argument. + + Added capabilities to collect the policies associated with the + receptacles of the components. + +Wed Feb 28 14:30:12 UTC 2007 Johnny Willemsen + + * CIAO_TAO.mwc: + Removed RACE + +Wed Feb 28 09:33:12 UTC 2007 Johnny Willemsen + + * MPC/config/ciao_nodeapp_configurator.mpb: + New base project + + * MPC/config/ciao_nodeapplication.mpb: + Updated because of new project + + * MPC/config/ciao_race_component.mpb: + * MPC/config/ciao_race_default.mpb: + * MPC/config/ciao_race_monitor.mpb: + Removed, RACE is removed for the moment + + * DAnCE/NodeApplication/NodeApplication.mpc: + Use the new base project + + * NodeApplicationManager/NodeApplicationManager_Impl.h: + Layout changes + + * NodeApplicationManager/NodeApplicationManager_Impl.inl: + No need to use ACE_UNUSED_ARG + +Wed Feb 28 07:00:15 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication.mpc: + + Added missing includes to the .cpp file, and added + missing file for compilation in the .mpc file. + +Tue Feb 27 21:35:17 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplication/NodeApp_Configurator.h: + + Changed the current structure of the NodeApplication library + by introducing the NodeApp_Configurator, that will now be + used to manage both RT and non-RT policies using the respective + config managers. + + * DAnCE/NodeApplication/Configurator_Factory.cpp: + + Previously, when RT support was required, the Configurator + Factory would create the RT config manager. + + Instead, now the NodeApp_Configurator is created, which will + then subsequently create the RT or non-RT config managers + depending on whether RT support is required or not. + + By default a non-RT config manager is created, which will be used + to create the non-RT policies. + + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + + Made modifications to create the RT and non-RT config managers. + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/RTConfig_Manager.h: + + Made modifications to conform to the base config manager class. + + * DAnCE/NodeApplication/NodeApplication.mpc: + + Made modifications to compile the newly added files. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + + Changed the private variable type for the NA Configurator used. + +Tue Feb 27 20:11:28 UTC 2007 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed cut and paste error in code generation of type-specific + disconnect_*() method for multiplex uses ports. + +Tue Feb 27 17:44:08 UTC 2007 Jaiganesh B + + * examples/Hello/descriptors/run_test_without_ns.pl: + + Updated the script in finding the location of the Execution + Manager executable. + +Tue Feb 27 05:26:53 UTC 2007 Shanshan Jiang + + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + + Modified the remove_extracted_package () function. + Added the functionality to save the package information when + install or delete a package. + +Tue Feb 27 03:29:42 UTC 2007 William R. Otte + + * tools/Config_Handlers/DynAny_Handler.mpc + + Inherit from config_handlers_base to disable symbol visibility. + +Tue Feb 27 03:10:14 UTC 2007 William R. Otte + + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc + * tools/Config_Handlers/Config_Handlers.mpc + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc + + Changed double quotes to <%quote%> to correctly generate in + Visual Studio projects. Thanks to Kitty for suggesting the + fix. + +Tue Feb 27 03:00:25 UTC 2007 William R. Otte + + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl + * tests/Bug_2130_Regression/descriptors/run_test.pl + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl + * DAnCE/tests/NodeApplicationTest/run_test.pl + * examples/Hello/descriptors/run_NodeDaemons.pl + * examples/Hello/descriptors/run_test_without_ns.pl + * examples/Hello/descriptors/run_test.pl + * examples/Hello/descriptors_events/run_NodeDaemons.pl + * examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl + * examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl + * examples/Hello/descriptors_RTCCM/rt_run_test.pl + * examples/BasicSP/descriptors/run_test.pl + * examples/BasicSP/descriptors/basicNodeDaemon.pl + * examples/Display/descriptors/run_test_without_ns.pl + * examples/Display/descriptors/basicNodeDaemon.pl + * examples/Display/descriptors/run_NodeDaemons.pl + + Updated to reflect movement of binaries to CIAO_ROOT/bin. + +Mon Feb 26 17:21:55 UTC 2007 Adam Mitz + + * examples/Hello/descriptors_RTCCM/rt_run_test.pl: + + Locate the CIAO directory using $PerlACE::CIAO_ROOT instead of + assuming that it is nested within TAO. This change supports the + peer-style directory layout. + +Sat Feb 24 21:32:05 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/RTConfig_Manager.h: + * DAnCE/NodeApplication/NodeApp_Configurator.h: + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + * DAnCE/NodeApplication/Configurator_Factory.cpp: + + Reverted some inadvertent check-ins. + +Sat Feb 24 20:53:14 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplication/NodeApp_Configurator.h: + * DAnCE/NodeApplication/NodeApp_Configurator.cpp: + + Changed the current structure of the NodeApplication library + by introducing the NodeApp_Configurator, that will now be + used to manage both RT and non-RT policies using the respective + config managers. + + * DAnCE/NodeApplication/Configurator_Factory.cpp: + + Previously, when RT support was required, the Configurator + Factory would create the RT config manager. + + Instead, now the NodeApp_Configurator is created, which will + then subsequently create the RT or non-RT config managers + depending on whether RT support is required or not. + + By default a non-RT config manager is created, which will be used + to create the non-RT policies. + + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + + Made modifications to create the RT and non-RT config managers. + + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/RTConfig_Manager.h: + + Made modifications to conform to the base config manager class. + + * DAnCE/NodeApplication/NodeApplication.mpc: + + Made modifications to compile the newly added files. + +Sat Feb 24 19:52:49 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplication/Config_Manager.h: + + A new base class for the RT and non-RT NodeApplication + config managers, that are used by the NodeApplication + configurators. + + * DAnCE/NodeApplication/NAConfig_Manager.cpp: + * DAnCE/NodeApplication/NAConfig_Manager.h: + * DAnCE/NodeApplication/NAConfig_Manager.inl: + * DAnCE/NodeApplication/NA_Configurator_Export.h: + + A non-RT NodeApplication config manager that is being used to + create the DiffServ policies. In general, this config manager + can be used to create all the TAO-specific policies that are + created using ORB, rather than RT-ORB. + + * DAnCE/NodeApplication/NodeApplication.mpc: + + Updated the MPC file to compile the new non-RT NodeApplication + config manager library. + +Fri Feb 23 04:08:04 UTC 2007 Abdullah Sowayan + + * CIDLC/ServantGenerator.cpp: + + cidlc --help prints the following: + + [--svnt-export-macro macro] + Replace default servant DLL export macro with provided ,acro. + + Fixed the misspelling of macro in the cidlc help message. + + +Thu Feb 22 22:59:01 UTC 2007 Jaiganesh B + + * docs/schema/ServerResourceUsage.txt: + + Updated the text document with the new usage guidelines. + +Thu Feb 22 22:53:52 UTC 2007 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + + Changed in order to remove a warning in the build + +Thu Feb 22 22:22:13 UTC 2007 Jaiganesh B + + * examples/Hello/descriptors_RTCCM/rt-example.cdp: + + Updated the RT-CCM example deployment plan to conform + to the latest changes in specifying the POA policies + within the deployment plan. + + The POA policies now need to be specified with a tag name + as CIAO:InstancePolicy. + +Thu Feb 22 22:19:14 UTC 2007 Jaiganesh B + + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + + Modifications to read in DiffServ policy specifications + within the deployment plan. + +Thu Feb 22 22:18:24 UTC 2007 William R. Otte + + * CCF/CCF/CompilerElements/TokenStream.hpp + * CCF/CCF/IDL2/SemanticAction/Exception.hpp + * CCF/CCF/IDL2/SemanticAction/TypeId.hpp + * CCF/CCF/IDL2/SemanticAction/Operation.hpp + * CCF/CCF/IDL2/SemanticAction/Interface.hpp + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp + * CCF/CCF/IDL2/SemanticAction/Attribute.hpp + * CCF/CCF/IDL2/SemanticAction/Enum.hpp + * CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp + * CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp + * CCF/CCF/IDL2/SemanticAction/Member.hpp + * CCF/CCF/IDL2/SemanticAction/Elements.hpp + * CCF/CCF/IDL2/SemanticAction/ValueType.hpp + * CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp + * CCF/CCF/IDL2/SemanticAction/Include.hpp + * CCF/CCF/IDL2/SemanticAction/Struct.hpp + * CCF/CCF/IDL2/SemanticAction/Module.hpp + * CCF/CCF/IDL2/SemanticAction/Native.hpp + * CCF/CCF/IDL2/SemanticAction/Const.hpp + * CCF/CCF/IDL2/SemanticAction/Union.hpp + * CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp + * CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp + * CCF/CCF/IDL3/SemanticAction/Provides.hpp + * CCF/CCF/IDL3/SemanticAction/Consumes.hpp + * CCF/CCF/IDL3/SemanticAction/Publishes.hpp + * CCF/CCF/IDL3/SemanticAction/Uses.hpp + * CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp + * CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp + * CCF/CCF/IDL3/SemanticAction/Emits.hpp + + Addressed warnings relating to classes w/ virtual methods having + non virtual destructors. + +Thu Feb 22 21:36:35 UTC 2007 William R. Otte + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp + + Fix for compile warning. + + * tools/Config_Handlers/Basic_Deployment_Data.cpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + + Regenerated with newer version of XSC than Jai had, re-applying + fixes from + Wed Feb 21 20:30:34 UTC 2007 William R. Otte + +Thu Feb 22 17:07:08 UTC 2007 Jaiganesh B + + * tools/Config_Handlers/RT-CCM/CNPM_Handler.cpp: + + Removed a unused input argument from cnw_priority_pd () method. + +Thu Feb 22 02:30:29 UTC 2007 Jaiganesh B + + * DAnCE/Deployment/CIAO_ServerResources.idl: + + Modified the IDL to conform to the changes made in the + schema. + +Thu Feb 22 02:27:00 UTC 2007 Jaiganesh B + + * tools/Config_Handlers/RT-CCM/CNPM_Handler.h: + * tools/Config_Handlers/RT-CCM/CNPM_Handler.cpp: + * tools/Config_Handlers/RT-CCM/NPM_Handler.h: + * tools/Config_Handlers/RT-CCM/NPM_Handler.cpp: + + New config handlers for handling the DiffServ policy + additions in the CIAOServerResources schema. + + * tools/Config_Handlers/RT-CCM/PS_Handler.cpp: + + PolicySet within the CIAOServerResources schema will now + have DiffServ policy specify sub-elements. So the PolicySet + handler is modified to call the specific handlers checked-in + above. + + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc: + + Included the new files in the MPC. + +Thu Feb 22 01:26:05 UTC 2007 Jaiganesh B + + * docs/schema/CIAOServerResources.xsd: + + Added elements for representing the DiffServ policy. + + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp: + + Associated config handlers change. + +Wed Feb 21 22:01:45 UTC 2007 Jaiganesh B + + * docs/schema/Basic_Deployment_Data.xsd: + + Updated the InstanceDeploymentDescription element's + deployedResource sub-element to be a sequence. + + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/IRDD_Handler.h: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/IDD_Handler.cpp: + + Associated config handler changes. + +Wed Feb 21 20:30:34 UTC 2007 William R. Otte + + * DynAny_Handler/DynAny_Handler.cpp + * CIAO_Events/CIAOEvents.hpp + * RT-CCM/CIAOServerResources.hpp + * Basic_Deployment_Data.hpp + + Compile fixes for Borland and pedantic G++ compilers. + +Wed Feb 21 19:16:14 UTC 2007 Johnny Willemsen + + * DAnCE/TargetManager/TargetManager.mpc: + Fixed error in this file + +Wed Feb 21 19:12:14 UTC 2007 Johnny Willemsen + + * DAnCE/Deployment/Deployment_Target_Data.idl: + Removed, this file was reintroduced with the move by accident + + * DAnCE/TargetManager/TargetManagerImpl.idl: + Use full paths + +Wed Feb 21 15:49:14 UTC 2007 Johnny Willemsen + + * DAnCE/TargetManager/TargetManager.mpc: + Added missing files + +Wed Feb 21 08:30:14 UTC 2007 Johnny Willemsen + + * ciao/Swapping_Container.cpp: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Layout change + + * tools/Config_Handlers/Utils/XercesString.{h,cpp}: + Use std::swap instead of ACE_Swap + +Tue Feb 20 17:56:25 UTC 2007 Douglas C. Schmidt + + * COPYING: Clarified how the COPYING file need to be included with + any code released. Thanks to Scott Mark + for helping clarify this. + +Tue Feb 20 17:59:51 UTC 2007 William R. Otte + + * DAnCE/Deployment/Deployment_TargetManager.idl + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/TargetManager/DomainDataManager.h + * DAnCE/TargetManager/TargetManager.mpc + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/ResourceCommitmentManager.h + * DAnCE/TargetManager/TargetManagerImpl.idl + * DAnCE/NodeApplication/Container_Impl.h + * ciao/Context_Impl_Base.h + * ciao/Swapping_Container.cpp + + Cleared up compile errors from + Tue Feb 20 16:17:46 UTC 2007 William R. Otte + +Tue Feb 20 17:48:14 UTC 2007 Johnny Willemsen + + * ciao/Context_Impl_Base.h: + * DAnCE/Deployment/NodeApp_CB_Impl.{h,cpp}: + Removed ACE_THROW_SPEC + +Tue Feb 20 17:10:14 UTC 2007 Johnny Willemsen + + * ciao/Extension_Context.{h,cpp}: + Moved to ciao/extension + +Tue Feb 20 16:17:46 UTC 2007 William R. Otte + + * Merged ciao_core_2 to head. + + Tue Feb 20 16:03:02 UTC 2007 William R. Otte + + * RACE/Plan_Analyzer/Interface/PlanIngress.idl + * RACE/Planners/Interface/Planner_I.idl + * RACE/Controller/Component/Controller.idl + * RACE/Output_Adapters/Interface/PlanEgress.idl + * RACE/Planner_Manager/Interface/Planner_Manager_I.idl + + Further updates to support migration of Deployment IDL to + DAnCE/Deployment. + + Mon Feb 19 21:27:11 UTC 2007 William R. Otte + + * MPC/config/ciao_events_base_dnc.mpb + * MPC/config/ciaoexe.mpb + * MPC/config/ciao_client_dnc.mpb + * MPC/config/ciao_container_dnc.mpb + * MPC/config/ciao_servant_dnc.mpb + * MPC/config/ciao_component_dnc.mpb + * MPC/config/ciao_events_dnc.mpb + * MPC/config/ciao_server_dnc.mpb + + Removed the _DnC_ from a bunch of projects, as since we no longer have + DnC and non DnC versions of CIAO, its reall superfluous. + + * DAnCE/Deployment + * DAnCE/Deployment/Deployment_NodeApplication.idl + * DAnCE/Deployment/Deployment_Data.idl + * DAnCE/Deployment/Deployment_svnt_export.h + * DAnCE/Deployment/Deployment_Base.idl + * DAnCE/Deployment/Deployment_RepositoryManager.idl + * DAnCE/Deployment/Deployment_Packaging_Data.idl + * DAnCE/Deployment/Deployment_Target_Data.idl + * DAnCE/Deployment/CIAO_NodeApplication_CallBack.idl + * DAnCE/Deployment/Deployment_TargetData.idl + * DAnCE/Deployment/Deployment.idl + * DAnCE/Deployment/Deployment_NodeManager.idl + * DAnCE/Deployment/Deployment_TargetManager.idl + * DAnCE/Deployment/Deployment_Container.idl + * DAnCE/Deployment/NodeApp_CB_Impl.cpp + * DAnCE/Deployment/Deployment_DomainApplicationManager.idl + * DAnCE/Deployment/Deployment_Core.idl + * DAnCE/Deployment/NodeApp_CB_Impl.h + * DAnCE/Deployment/Deployment_DeploymentPlan.idl + * DAnCE/Deployment/Deployment_DomainApplication.idl + * DAnCE/Deployment/CIAO_ServerResources.idl + * DAnCE/Deployment/Deployment_stub_export.h + * DAnCE/Deployment/Deployment_ExecutionManager.idl + * DAnCE/Deployment/Deployment_ApplicationManager.idl + * DAnCE/Deployment/Deployment_Connection.idl + * DAnCE/Deployment/Deployment_Application.idl + * DAnCE/Deployment/Deployment_NodeApplicationManager.idl + * DAnCE/Deployment/Deployment_Events.idl + * DAnCE/Deployment/Deployment_common.h + + Moved these IDLs from CIAO_ROOT/ciao in an effort to isolate the + DnC IDL from the CIAO IDL and control directory size explosion of + CIAO_ROOT/ciao. + + * tools/Config_Handlers/DnC_Dump.h + * tools/Config_Handlers/DP_Handler.cpp + * tools/Config_Handlers/MDD_Handler.cpp + * tools/Config_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Property_Handler.cpp + * tools/Config_Handlers/ID_Handler.cpp + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp + * tools/Config_Handlers/Package_Handlers/test.cpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.h + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp + * tools/Config_Handlers/PCD_Handler.cpp + * tools/Config_Handlers/CRDD_Handler.cpp + * tools/Config_Handlers/DataType_Handler.h + * tools/Config_Handlers/STD_CPD_Handler.cpp + * tools/Config_Handlers/CIAO_Events/test.cpp + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp + * tools/Config_Handlers/Req_Handler.cpp + * tools/Config_Handlers/DP_PCD_Handler.cpp + * tools/Config_Handlers/RDD_Handler.cpp + * tools/Config_Handlers/STD_CID_Handler.cpp + * tools/Config_Handlers/ERE_Handler.cpp + * tools/Config_Handlers/XML_File_Intf.cpp + * tools/Config_Handlers/test.cpp + * tools/Config_Handlers/CCD_Handler.cpp + * tools/Config_Handlers/SatisfierProperty_Handler.cpp + * tools/Config_Handlers/RT-CCM/CLA_Handler.h + * tools/Config_Handlers/RT-CCM/TPL_Handler.h + * tools/Config_Handlers/RT-CCM/OC_Handler.h + * tools/Config_Handlers/RT-CCM/PM_Handler.h + * tools/Config_Handlers/RT-CCM/OR_Handler.h + * tools/Config_Handlers/RT-CCM/PS_Handler.h + * tools/Config_Handlers/RT-CCM/TP_Handler.h + * tools/Config_Handlers/RT-CCM/CB_Handler.h + * tools/Config_Handlers/RT-CCM/SRD_Handler.h + * tools/Config_Handlers/PSPE_Handler.cpp + * tools/Config_Handlers/Dump_Obj.h + * tools/Config_Handlers/ESD_Handler.cpp + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp + * tools/Config_Handlers/CEPE_Handler.cpp + * tools/Config_Handlers/STD_CID_Handler.h + * tools/Config_Handlers/IRDD_Handler.cpp + * tools/Config_Handlers/DD_Handler.cpp + * tools/Config_Handlers/ADD_Handler.cpp + * tools/Config_Handlers/IDD_Handler.cpp + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc + * ciaosvcs/Events/CIAO_Events.mpc + * DAnCE/NodeManager/MonitorController.h + * DAnCE/NodeManager/MonitorCB.h + * DAnCE/NodeManager/BaseMonitor.h + * DAnCE/Plan_Generator/PCVisitorBase.h + * DAnCE/Plan_Generator/Plan_Generator_Impl.h + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainEvents.idl + * DAnCE/TargetManager/TargetManagerImpl.idl + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp + * DAnCE/Interfaces/ExecutionManagerDaemon.idl + * DAnCE/Interfaces/NodeManagerDaemon.idl + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp + * DAnCE/NodeApplicationManager/Containers_Info_Map.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeApplicationManager/ImplementationInfo.h + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/Deployment_Configuration.h + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/NodeApplication/NodeApplication_Impl.h + * DAnCE/NodeApplication/Container_Impl.h + * DAnCE/NodeApplication/RTConfig_Manager.h + * DAnCE/NodeApplication/NodeApp_Configurator.h + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp + * DAnCE/NodeApplication/NodeApplication_Core.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/RepositoryManager/RM_Helper.h + * DAnCE/RepositoryManager/RepositoryManagerDaemon.idl + * DAnCE/RepositoryManager/PC_Updater.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/PC_Updater.h + * DAnCE/ExecutionManager/DAM_Map.h + * DAnCE/ExecutionManager/Execution_Manager_Impl.h + * DAnCE/ExecutionManager/ExecutionManager.mpc + * ciao/Swapping_Container.h + * ciao/Dynamic_Component_Activator.h + * ciao/CCM_Core.mpc + * ciao/Container_Base.h + + For the most part, modifications to support movement of DnC interfaces + to DAnCE/Deployment. One or two files were further modified to support + removal of DnC from project names. + + Mon Feb 19 19:40:19 UTC 2007 William R. Otte + + * MPC/config/ciaoexe.mpb + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/NodeApplication/NodeApplication.mpc + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + + Modified to install exes to CIAO_ROOT/bin. + + Mon Feb 19 19:33:32 UTC 2007 William R. Otte + + * DAnCE/NodeManager/MonitorCB.cpp + * DAnCE/TargetManager/DomainDataManager.cpp + + Corrected to reflect changes in IDL. + + * CCF/CCF/CodeGenerationKit/CommandLine.cpp + + Added get_all_values to support revrieval of all values for a given + option passed on the command line. + + Mon Feb 19 19:32:34 UTC 2007 William R. Otte + + * ciao/Container_Base.cpp + + Cosmetic format changes. + + * ciao/CCM_Context.idl + + re-added removed comment. + + Mon Feb 19 19:25:06 UTC 2007 William R. Otte + + * ccd.hpp + * cid.cpp + * pcd.cpp + * Deployment.hpp + * toplevel.cpp + * cdd.hpp + * Basic_Deployment_Data.cpp + * cdp.hpp + * cpd.hpp + * CIAO_Events/CIAOEvents.cpp + * CIAO_Events/CIAOEvents.hpp + * ccd.cpp + * iad.hpp + * cid.hpp + * pcd.hpp + * Deployment.cpp + * cdd.cpp + * toplevel.hpp + * RT-CCM/CIAOServerResources.hpp + * RT-CCM/CIAOServerResources.cpp + * cdp.cpp + * cpd.cpp + * Basic_Deployment_Data.hpp + * iad.cpp + + * docs/schema/cid.xsd + * docs/schema/cpd.xsd + + Changed include ordering. + + * docs/schema/Basic_Deployment_Data.xsd + + Added elements to support sequence, struct, and valuetypes + in the schema. + + Mon Feb 19 19:20:35 UTC 2007 William R. Otte + + * Package_Handlers/PCD_Handler.cpp + + Changed to reflect slight change in schema. + + * CIAO_Events/CIAO_Events_Handlers.mpc + * Config_Handlers.mpc + * RT-CCM/RT-CCM-Handlers.mpc + + Updated to include XSC generation. + + Mon Feb 19 15:30:04 UTC 2007 William R. Otte + + * MPC/config/xscdefaults.mpb + * tools/Config_Handlers/Config_Handlers.mpc + + Added a custom type to MPC to handle XSC generation. + + Wed Feb 7 21:16:36 UTC 2007 William R. Otte + + * ciao/Deployment_Data.idl + * ciao/Deployment_ApplicationManager.idl + * ciao/CCM_CCMException.idl + * ciao/Deployment_Application.idl + * ciao/Context_Impl_Base.h + * ciao/Deployment.idl + * ciao/Context_Impl_Base.cpp + * ciao/Deployment_NodeApplication.idl + * ciao/Deployment_TargetData.idl + * ciao/CCM_Events.idl + * ciao/Deployment_ExecutionManager.idl + * ciao/Deployment_NodeApplicationManager.idl + * ciao/CCM_Context.idl + * ciao/Deployment_Base.idl + * ciao/Deployment_Packaging_Data.idl + * ciao/Deployment_DomainApplicationManager.idl + * ciao/Deployment_Connection.idl + * ciao/Deployment_TargetManager.idl + * ciao/Deployment_DeploymentPlan.idl + * ciao/Deployment_NodeManager.idl + + Updated with changes to comply with the 06-02-01 version of the + DnC spec. Many of these changes would break the entire toolchain, + so they are commented out for the time being. grep for + + @@changed @@add @@delete + + to find changes. + + * ciao/CCM_Core.mpc + *ciao/Deployment_DomainApplication.idl + + Added DomainApplication interface, completely missing from our IDL. + +Tue Feb 20 14:15:14 UTC 2007 Johnny Willemsen + + * CIDLC/OperationHeaderEmitters.cpp: + * CIDLC/OperationHeaderEmitters.hpp: + * CIDLC/ServantSourceGenerator.cpp: + Override raises to get no throw spec at all + +Tue Feb 20 03:56:37 UTC 2007 Abdullah Sowayan + + * DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl: + + Added missing dependency on iortable base project. + +Mon Feb 19 20:22:14 UTC 2007 Johnny Willemsen + + * ciao/extension/*: + Moved all idl files for QoS4CCM to the new extension directory + + * caio/Session_Container.h: + Layout change + +Sat Feb 17 03:45:30 UTC 2007 Abdullah Sowayan + + * DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl: + + Updated template file to match the recent enhancements to StaticDAnCEApp.cpp + found in examples/Null_Component/StaticDAnCEApp.cpp + +Fri Feb 15 19:41:14 UTC 2007 Johnny Willemsen + + * CIDLC/AttributeHeaderEmitters.cpp: + * CIDLC/AttributeSourceEmitters_T.hpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/OperationHeaderEmitters.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + Removed generation of ACE_THROW_SPEC, maybe some raise methods can be + removed internally but that is for the next cleanup round + + * examples/Null_Component/Null_Component_exec.h: + Layout change + + * examples/Null_Component/StaticDAnCEApp.cpp: + Updated include + +Fri Feb 15 09:34:14 UTC 2007 Johnny Willemsen + + * ciao/CCM_Core.mpc: + Removed the extension context files for the moment, this needs + much more idl files + +Thu Feb 14 16:06:14 UTC 2007 Johnny Willemsen + + * ciao/Deployment_Target_Data.idl: + * ciao/Deployment_PlanError.idl: + Renamed Target_Data to PlanError + + * ciao/CCM_Core.mpc: + * ciao/Deployment.idl: + * ciao/Deployment_TargetManager.idl: + * DAnCE/TargetManager/TargetManagerImpl.idl: + Updated because of rename above + +Thu Feb 14 16:00:14 UTC 2007 Johnny Willemsen + + * ciao/CCM_CCMException.idl: + Enabled the QoS4CCM enums + + * ciao/CCM_Core.mpc: + Added ExtensionContext.cpp + + * ciao/ExtensionContext.{h,cpp}: + New file, just throw no implement in all the new methods, just + creating first the empty classes and infrastructure + +Thu Feb 14 13:05:14 UTC 2007 Johnny Willemsen + + * ciao/Context_Impl_Base.h: + * ciao/Dynamic_Component_Activator.cpp: + * ciao/Dynamic_Component_Activator.h: + * ciao/Dynamic_Component_Servant_T.h: + * ciao/Home_Servant_Impl_Base.cpp + * ciao/Home_Servant_Impl_Base.h: + * ciao/ome_Servant_Impl_T.cpp: + * ciao/Home_Servant_Impl_T.h: + * ciao/Object_Set_T.h: + * ciao/Port_Activator_T.cpp + * ciao/Port_Activator_T.h: + * ciao/Servant_Impl_Utils_T.cpp: + * ciao/StandardConfigurator_Impl.cpp: + * ciao/StandardConfigurator_Impl.h: + * ciao/Swapping_Container.cpp: + * ciao/Swapping_Servant_Home_Impl_T.h: + * ciao/Upgradeable_Context_Impl_T.h: + Layout changes + + * ciao/Cookies.cpp: + * ciao/Cookies.inl: + Don't inline virtual destructors + +Thu Feb 14 12:51:14 UTC 2007 Johnny Willemsen + + * ciao/Context_Impl_Base.cpp: + Just let resolve_service_reference throw not implemented, + need some more work + +Thu Feb 14 12:22:14 UTC 2007 Johnny Willemsen + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Session_Container.cpp: + * ciao/Session_Container.h: + * ciao/Session_Container.inl: + Moved Session_Container to its own file + + * ciao/Container_Base.inl: + Removed, not needed anymore + + * ciao/CCM_Context.idl: + Added resolve_service_reference + + * ciao/CCM_Core.mpc: + Added new Session_Container + + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_Base.h: + Layout changes and implemented resolve_service_reference + + * ciao/Context_Impl_T.cpp: + * ciao/Context_Impl_T.h: + * ciao/Port_Activator.h: + * ciao/Port_Activator_T.h: + * ciao/Servant_Impl_Base.cpp: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplication/Container_Impl.h: + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/TargetManager/TargetManager_exec.h: + Layout changes + + * ciao/Dynamic_Component_Activator.cpp: + * ciao/Dynamic_Component_Activator.h: + * ciao/Swapping_Container.cpp: + * ciao/Swapping_Container.h: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + Renamed add_servant_map to add_servant_to_map and delete_servant_map + to delete_servant_from_map + + * CIDLC/ServantHeaderGenerator.cpp: + Include Session_Container.h instead of Container_Base.h + + * DAnCE/ExecutionManager/DAM_Map.cpp: + No need to use intermediate variables + +Tue Feb 13 20:49:13 UTC 2007 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.cpp: + Changed in order to address couple of warnings in the TargetManager. + +Mon Feb 12 16:02:14 UTC 2007 Nilabja R + + * RACE: + + * RACE/Controller: + + * RACE/Controller/Component: + + * RACE/Controller/Component/Controller.cidl: + * RACE/Controller/Component/Controller.idl: + * RACE/Controller/Component/Controller.mpc: + * RACE/Controller/Component/Controller_exec.h: + * RACE/Controller/Component/Controller_exec.cpp: + * RACE/Controller/Component/Controller_exec_export.h: + * RACE/Controller/Component/Controller_stub_export.h: + * RACE/Controller/Component/Controller_svnt_export.h: + + * RACE/Input_Adapters: + + * RACE/Input_Adapters/Base: + + * RACE/Input_Adapters/Base/Input_Adapter.idl: + * RACE/Input_Adapters/Base/Input_Adapter.mpc: + * RACE/Input_Adapters/Base/Input_Adapter_stub_export.h: + * RACE/Input_Adapters/Base/Input_Adapter_svnt_export.h: + + * RACE/Input_Adapters/Interactive_Input_Adapter: + + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.cidl: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.idl: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.h: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.cpp: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec_export.h: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_stub_export.h: + * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_svnt_export.h: + + * RACE/Input_Adapters/LocationUpdater: + + * RACE/Input_Adapters/LocationUpdater/Injector.cpp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h: + * RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h: + * RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable: + * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h: + * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl: + * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp: + * RACE/Input_Adapters/LocationUpdater/PlanUpdater.h: + * RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp: + * RACE/Input_Adapters/LocationUpdater/README.txt: + + * RACE/Input_Adapters/PlanGenerator: + + * RACE/Input_Adapters/PlanGenerator/Injector.cpp: + * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h: + * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl: + * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h: + * RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h: + * RACE/Input_Adapters/PlanGenerator/README.txt: + + * RACE/Output_Adapters: + + * RACE/Output_Adapters/Base: + + * RACE/Output_Adapters/Base/Output_Adapter.idl: + * RACE/Output_Adapters/Base/Output_Adapter.mpc: + * RACE/Output_Adapters/Base/Output_Adapter_stub_export.h: + * RACE/Output_Adapters/Base/Output_Adapter_svnt_export.h: + + * RACE/Output_Adapters/Component: + + * RACE/Output_Adapters/Component/Output_Manager.idl: + + * RACE/Output_Adapters/Interface: + + * RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc: + * RACE/Output_Adapters/Interface/Output_Adapter_Interface_stub_export.h: + * RACE/Output_Adapters/Interface/Output_Adapter_Interface_svnt_export.h: + * RACE/Output_Adapters/Interface/PlanEgress.idl: + + * RACE/Output_Adapters/XML_Output_Adapter: + + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.cidl: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.idl: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.h: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.cpp: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec_export.h: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_stub_export.h: + * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_svnt_export.h: + + * RACE/Plan_Analyzer: + + * RACE/Plan_Analyzer/Component: + + * RACE/Plan_Analyzer/Component/Plan_Analyzer.cidl: + * RACE/Plan_Analyzer/Component/Plan_Analyzer.idl: + * RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc: + * RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.h: + * RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.cpp: + * RACE/Plan_Analyzer/Component/Plan_Analyzer_exec_export.h: + * RACE/Plan_Analyzer/Component/Plan_Analyzer_stub_export.h: + * RACE/Plan_Analyzer/Component/Plan_Analyzer_svnt_export.h: + + * RACE/Plan_Analyzer/Interface: + + * RACE/Plan_Analyzer/Interface/PlanIngress.idl: + * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc: + * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_stub_export.h: + * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_svnt_export.h: + + * RACE/Planner_Manager: + + * RACE/Planner_Manager/Component: + + * RACE/Planner_Manager/Component/Planner_Manager.cidl: + * RACE/Planner_Manager/Component/Planner_Manager.idl: + * RACE/Planner_Manager/Component/Planner_Manager.mpc: + * RACE/Planner_Manager/Component/Planner_Manager_exec.h: + * RACE/Planner_Manager/Component/Planner_Manager_exec.cpp: + * RACE/Planner_Manager/Component/Planner_Manager_exec_export.h: + * RACE/Planner_Manager/Component/Planner_Manager_stub_export.h: + * RACE/Planner_Manager/Component/Planner_Manager_svnt_export.h: + + * RACE/Planner_Manager/Interface: + + * RACE/Planner_Manager/Interface/Planner_Manager_I.idl: + * RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc: + * RACE/Planner_Manager/Interface/Planner_Manager_Interface_stub_export.h: + * RACE/Planner_Manager/Interface/Planner_Manager_Interface_svnt_export.h: + + * RACE/Planners: + + * RACE/Planners/Base: + + * RACE/Planners/Base/Planner.idl: + * RACE/Planners/Base/Planner.mpc: + * RACE/Planners/Base/Planner_stub_export.h: + * RACE/Planners/Base/Planner_svnt_export.h: + + * RACE/Planners/Interface: + + * RACE/Planners/Interface/Planner_I.idl: + * RACE/Planners/Interface/Planner_Interface.mpc: + * RACE/Planners/Interface/Planner_Interface_stub_export.h: + * RACE/Planners/Interface/Planner_Interface_svnt_export.h: + + * RACE/Planners/SimpleBinPacker: + + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.cidl: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.idl: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.h: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.cpp: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec_export.h: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker_stub_export.h: + * RACE/Planners/SimpleBinPacker/SimpleBinPacker_svnt_export.h: + + * RACE/common: + + * RACE/common/RACE_common.idl: + * RACE/common/RACE_common.mpc: + * RACE/common/RACE_common_stub_export.h: + * RACE/common/RACE_common_svnt_export.h: + + * RACE/descriptors: + + * RACE/descriptors/Deployment.xsd: + * RACE/descriptors/Modified_Deployment.xsd: + * RACE/descriptors/XMI.xsd: + * RACE/descriptors/deployment.dat: + * RACE/descriptors/flattened_deploymentplan.cdp: + + Removed these files. Removed the RACE implementation from the HEAD, + since this is obsolete. This module is now in the process of + re-structuring and will be checked in by Nishanth Shankaran. + +Mon Feb 12 12:53:14 UTC 2007 Johnny Willemsen + + * ciao/*.{h,cpp,inl}: + Removed ACE_THROW_SPEC, layout changes, reduced includes + +Sat Feb 10 20:16:57 UTC 2007 Nilabja R + + * DAnCE/TargetManager/ResourceCommitmentManager.h: + * DAnCE/TargetManager/ResourceCommitmentManager.cpp: + + * ciao/Deployment_ResourceCommitmentManager.idl: + Added missing Id tag + +Fri Feb 9 20:11:15 UTC 2007 Nilabja R + + * ChangeLog: + + * DAnCE/NodeManager/MonitorCB.cpp: + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/ResourceCommitmentManager.h: + * DAnCE/TargetManager/ResourceCommitmentManager.cpp: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerExt.idl: + * DAnCE/TargetManager/TargetManagerImpl.idl: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl: + + * ciao/CCM_Core.mpc: + * ciao/Deployment_ResourceCommitmentManager.idl: + * ciao/Deployment_TargetManager.idl: + + Merged in changes from the branch TargetManager_Ext to introduce new + feature complying to the spec + + Fri Feb 2 21:00:48 UTC 2007 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerImpl.idl: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + Cleaning TM code to separate CIAO-specific functionality. + + Tue Jan 16 21:18:57 UTC 2007 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManagerExt.idl: + * DAnCE/TargetManager/TargetManagerImpl.idl: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + Added some comments to decrease doxygen warnings;Changed + ACE_DEBUG in many places to ACE_ERROR;Removed a lot of unwanted + debug messages + + Fri Jan 12 22:04:14 UTC 2007 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl: + + * ciao/Deployment_TargetManager.idl: + Changed to address Johnny's comments + + Thu Dec 28 22:59:45 UTC 2006 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + * ciao/Deployment_ResourceCommitmentManager.idl: + * ciao/Deployment_TargetManager.idl: + Modified defination to ResourceCommitmentManager + + Wed Dec 27 19:59:32 UTC 2006 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + + * ciao/CCM_Core.mpc: + * ciao/Deployment_ResourceCommitmentManager.idl: + * ciao/Deployment_TargetManager.idl: + Changes made to accomodate the ResourceCommitmentManager + + Tue Dec 5 17:44:49 UTC 2006 Nilabja R + + * ciao/Deployment_TargetManager.idl: + Deleted some extraneous comments + + Tue Dec 5 06:29:22 UTC 2006 Nilabja R + + * DAnCE/TargetManager/CmpClient.cpp: + + * ciao/CCM_Core.mpc: + * ciao/Deployment_ResourceCommitmentManager.idl: + * ciao/Deployment_TargetManager.idl: + Added in order to introduce ResourceCommitmenManager + to TargetManager + +Thu Feb 8 18:35:51 UTC 2007 Johnny Willemsen + + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantSourceGenerator.cpp: + Don't generate ACE_THROW_RETURN but just throw + +Wed Feb 7 23:48:51 UTC 2007 Jeff Parsons + + * DAnCE/RepositoryManager/RepositoryManager.cpp: + + Removed an 'ex' identifier in a catch block that is + no longer referenced. + +Wed Feb 7 23:22:08 UTC 2007 Jeff Parsons + + * ciao/Context_Impl_T.h: + * ciao/Upgradeable_Context_Impl_T.h: + * ciao/Context_Impl_T.cpp: + * ciao/Upgradeable_Context_Impl_T.cpp: + + - Replaced a class template parameter in both + Context_Impl and Upgradeable_Context_Impl with + a trait in the class body. This change was + evidently overlooked when similar changes were + made to Servant_Impl and Home_Servant_Impl + pursuant to dropping support for Visual Studio 6. + + - In Upgradeable_Context_Impl, removed class members + already present in the base class Context_Impl. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + - Made changes to the generated context class corresponding + to the changes above. + + - Added code generation to check for a nil event + consumer before a push call is made on it by + an emits port. The event consumer would be nil + if a connection had not yet been made. Thanks + to James Hill for + reporting the problem. + +Fri Feb 2 15:09:14 UTC 2007 Johnny Willemsen + + * ciao/Container_Base.cpp: + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_T.cpp: + * ciao/Home_Servant_Impl_Base.cpp: + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Port_Activator_T.cpp: + * ciao/Servant_Activator.cpp: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_T.cpp: + * ciao/Swapping_Servant_Home_Impl_Base.cpp: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp: + Replaced ACE_THROW_RETURN with throw + +Fri Feb 2 13:28:14 UTC 2007 Johnny Willemsen + + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * examples/BasicSP/EC/client.cpp: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + * performance-tests/Benchmark/server.cpp: + * performance-tests/Protocols/Controller/Controller.cpp: + * RACE/Input_Adapters/LocationUpdater/Injector.cpp: + * RACE/Input_Adapters/PlanGenerator/Injector.cpp: + * tests/IDL3/Events/Any/main.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/RT-CCM/test.cpp: + * tools/Config_Handlers/test.cpp: + No need anymore to pass an empty string as orbname + +Fri Feb 2 11:48:34 UTC 2007 Simon McQueen + + * tests/IDL3/Components/SimpleComponent/SimpleComponent.idl: + + Add regression testing for bug #2790. + +Wed Jan 31 15:44:14 UTC 2007 Johnny Willemsen + + * DAnCE/Plan_Generator/PCVisitor.cpp: + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + * RACE/Controller/Component/Controller_exec.cpp: + * RACE/Controller/Component/Controller_exec.h: + +Wed Jan 31 15:03:14 UTC 2007 Johnny Willemsen + + * DAnCE/ExecutionManager/DAM_Map.{h,cpp}: + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/ExecutionManager/Execution_Manager_Impl.{h,cpp}: + Const changes, layout improvements + +Tue Jan 30 20:49:50 UTC 2007 William R. Otte + + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + + Compile fixes for FC6. + +Tue Jan 30 20:43:14 UTC 2007 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + Changed the check for the bind, with -1 return an error, with + 1 report a debug message of the reuse, else a normal debug. + Thanks to Sandro Andrade + for reporting that ReDAC was broken. + +Tue Jan 30 11:27:14 UTC 2007 Johnny Willemsen + + * ciao/Server_init.{h,cpp}: + Change argument of BindObjectPath to a _ptr. Fixes bugzilla + 2779. Thanks to Abdullah Sowayan + for reporting this. + +Mon Jan 29 19:23:14 UTC 2007 Johnny Willemsen + + * ciao/Swapping_Servant_Home_Impl_Base.{h,cpp}: + * ciao/Upgradeable_Context_Impl_T.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + Layout changes + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + Fixed parsing of node manager file + + * examples/BasicSP/descriptors/run_test.pl: + New script to run this example automatically + + * exampls/BasicSP/README.html: + Fixed incorrect path and mpc generation command + +Sun Jan 28 19:59:14 2007 William R. Otte + + * CIAO version 0.5.6 released. + +Thu Jan 25 18:18:58 UTC 2007 Chad Elliott + + * *.{h,cpp,inl}: + + Removed the majority of the ACE exception macros. The + ACE_THROW_RETURN's were left in to avoid warnings from aCC. + +Wed Jan 24 13:00:12 UTC 2007 Johnny Willemsen + + * *.{h,cpp,inl}: + Removed part of the environment macros + +Mon Jan 22 23:14:56 2007 William R. Otte + + * CIAO version 0.5.5 released. + + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: diff --git a/modules/CIAO/ChangeLogs/ChangeLog-09a b/modules/CIAO/ChangeLogs/ChangeLog-09a new file mode 100644 index 00000000000..2ac01dcc17a --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-09a @@ -0,0 +1,15360 @@ +Mon Oct 12 14:03:48 CDT 2009 Johnny Willemsen + + * CIAO version 0.7.4 released. + +Mon Oct 12 18:44:56 UTC 2009 William R. Otte + + * NEWS: + + Further describe -Glem changes. + +Fri Oct 9 09:24:08 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Don't print expected exceptions; otherwise the scoreboard will be + confused. + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: + Wait 90 sec instead of 60 sec to compleet this example. + +Fri Oct 9 06:47:29 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/descriptors/USER_QOS_PROFILES.xml: + QoS profile file for this example + +Thu Oct 8 13:02:29 UTC 2009 Marcel Smit + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Described the use of IDL3+. + +Thu Oct 8 12:32:38 UTC 2009 Marcel Smit + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Update example to meet the spec. + +Thu Oct 8 11:06:29 UTC 2009 Marcel Smit + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Extended the component section. + +Thu Oct 8 08:31:25 UTC 2009 Marcel Smit + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Some minor updates. + +Wed Oct 7 15:15:20 UTC 2009 Jeff Parsons + + * NEWS: + + Update. + +Wed Oct 7 14:41:09 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/Inherited_Component/IhC_Bar.idl + Added missing include + +Wed Oct 7 14:09:09 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + Got rid of ior file between CORBA server and client. + +Wed Oct 7 13:33:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h + Refactored the connector into a template + +Wed Oct 7 13:33:47 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp: + Renamed module interface of Hello_Base and AMI. + +Wed Oct 7 13:15:22 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Changed name of module CCM_AMI into Hello. + +Wed Oct 7 12:42:58 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl: + * connectors/ami4ccm/examples/Hello/AMI/AMI.mpc: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello.idl: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp: + Removed interface MyInterface in order to focus on the MyFoo. + + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyInterface_i.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyInterface_i.cpp: + Removed these files. + +Tue Oct 6 21:52:02 UTC 2009 Jeff Parsons + + * examples/Null_Component/Null_Component.mpc: + + Fixed build order bug. + +Tue Oct 6 12:30:44 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/PIDL_Include/PIDLInclude.mpc: + Enabled these projects + +Tue Oct 6 12:29:30 UTC 2009 Marcel Smit + + * connectors/dds4ccm/idl/dds4ccm_Base.idl3: + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3: + * connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3: + * connectors/dds4ccm/idl/dds4ccm_Writer.idl3p: + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp: + Resolved fuzz errors. + +Tue Oct 6 11:26:51 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp: + * connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Getter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p: + * connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Reader.idl3p: + * connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Updater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Writer.idl3p: + Resolved some more fuzz errors. + +Tue Oct 6 10:53:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + Moved listener into a template + +Tue Oct 6 10:16:16 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc: + AMI_Hello_lem_gen shouldn't be derived from ami. This would + result in unnecessary sendc methods in the Receiver. + + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + None of the projects shouldn't be derived from AMI. + + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + Cleanup unnecessary sendc methods. + +Tue Oct 6 09:34:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl + * connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl3 + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h + * connectors/dds4ccm/impl/ndds/Writer.tpp + Added a Stock_Info_Seq as corba sequence for the reader + +Tue Oct 6 09:30:27 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl3p: + * connectors/dds4ccm/examples/Quoter/Broker/Broker.idl3p: + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl3p: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl3p: + * connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Getter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p: + * connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Reader.idl3p: + * connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Updater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Writer.idl3p: + Resolve fuzz errors. + +Tue Oct 6 09:03:55 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: + Converted to the new test framework + +Tue Oct 6 08:37:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/Reader_T.{h,cpp}: + First version of the reader as template + +Tue Oct 6 07:48:47 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Enabled some tests for ce/labview/fuzz + + * connectors/dds4ccm/examples/Quoter/Broker/Broker.idl3: + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl3: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl3: + * connectors/dds4ccm/idl/dds4ccm_Base.idl3: + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3: + * connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3: + Resolved some fuzz errors. + + * tests/CIAO_ComponentServer/SimpleComponent/run_test.pl: + Converted to the new test framework + +Tue Oct 6 07:40:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h + * connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp + * connectors/dds4ccm/impl/ndds/ListenerControl.cpp + * connectors/dds4ccm/impl/ndds/ListenerControl.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + Implemented more functionality + +Tue Oct 6 07:06:28 UTC 2009 Marcel Smit + + * bin/ciao_tests.lst: + Enabled some tests for ce/labview/fuzz + + * tests/CIAO_ComponentServer/Activator/run_test.pl: + * tests/CIAO_ComponentServer/Basic/run_test.pl: + Converted to the new test framework + + * examples/DevGuideExamples/Messenger/Messenger.mpc: + Resolved compiler errors. + +Mon Oct 5 19:35:41 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Quoter/Distributor/controller.cpp: + Removed this file because it was empty and was generating + fuzz errors. + +Mon Oct 5 19:28:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp: + Corrected type registration + +Mon Oct 5 19:14:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp: + Register the type with rti dds + + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + Layout change + +Mon Oct 5 18:47:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc: + Updated build order and use -Glem + + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_ConnectorE.idl: + Removed from the repository + +Mon Oct 5 18:36:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h + * connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc + * connectors/dds4ccm/examples/Quoter/Broker/Broker.idl3 + * connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl3 + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_ConnectorE.idl + * connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl3 + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h + * connectors/dds4ccm/idl/dds4ccm.mpc + * connectors/dds4ccm/impl/ndds/Writer.h + Enabled the quoter example. + + * connectors/dds4ccm/impl/ndds/Builtin_Writer.h + * connectors/dds4ccm/impl/ndds/Builtin_Writer.tpp + New template for builtin types, will rework in the future, but by using + this one we don't have to rewrite the hello world example at this + moment + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl + Removed, are generate now as part of the regular build + +Mon Oct 5 16:36:33 UTC 2009 Jeff Parsons + + * tests/IDL3/ImpliedIDL/All/all.mpc: + + Fixed dependency problems, and added include.idl to + IDL_Files block, since its include is now passed + through unchanged automatically, even though include_IDL2.idl + is still generated. + +Mon Oct 5 13:24:28 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h: + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp: + * connectors/dds4ccm/examples/Quoter/Distributor/controller.cpp: + Resolved fuzz errors. + +Mon Oct 5 11:40:44 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm + * connectors/dds4ccm/docs + * connectors/dds4ccm/examples/Hello/Base + * connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl + * connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h + * connectors/dds4ccm/examples/Quoter + * connectors/dds4ccm/examples/Quoter/Base + * connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl + * connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc + * connectors/dds4ccm/examples/Quoter/Broker + * connectors/dds4ccm/examples/Quoter/Broker/Broker.idl3 + * connectors/dds4ccm/examples/Quoter/Broker/Broker.idl3p + * connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp + * connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h + * connectors/dds4ccm/examples/Quoter/Connector + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl3 + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl3p + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h + * connectors/dds4ccm/examples/Quoter/Connector/Quoter_ConnectorE.idl + * connectors/dds4ccm/examples/Quoter/descriptors + * connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl + * connectors/dds4ccm/examples/Quoter/Distributor + * connectors/dds4ccm/examples/Quoter/Distributor/controller.cpp + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl3 + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl3p + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp + * connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h + * connectors/dds4ccm/idl/dds4ccm.mpc + * connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p + * connectors/dds4ccm/impl/ndds/NDDS_Traits.h + * connectors/dds4ccm/impl/ndds/Writer.h + * connectors/dds4ccm/impl/ndds/Writer.tpp + Integrated the second proto from the ddsports branch. This is disabled + in the mpc files right now, but the branch wasn't usable because of all + lem changes in tao_idl. By merging this to head now we have a stable + base to tweak this proto + +Mon Oct 5 09:50:44 UTC 2009 Marijke Hengstmengel + + * docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat: + Changed svn properties. Added svn eol-property. + +Sun Oct 4 17:36:44 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/checking_visitor.cpp: + + Fixed FC_8 build errors/warnings. + +Fri Oct 2 18:32:21 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/be_global.cpp: + * tools/IDL3_to_IDL2/be_produce.cpp: + * tools/IDL3_to_IDL2/be_global.h: + * tools/IDL3_to_IDL2/checking_visitor.cpp: + + Replaced the -x option, which manually + excluded an IDL file include from getting its processed + name decorated with '_IDL2', with a mechanims that + detects automatically which included IDL files have + no IDL3 constructs, and skips mangling their processed + included name accordingly. + + * tests/IDL3/ImpliedIDL/All/all.mpc: + * tests/IDL3/ImpliedIDL/All/pass_through.idl: + + Minor changes to this test of idl3_to_idl2. + + * tools/IDL3_to_IDL2/README: + * docs/releasenotes/index.html: + + Updated documentation. + +Fri Oct 2 18:30:12 UTC 2009 Jeff Parsons + + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + + Fixed some dependency problems. + +Fri Oct 2 14:01:59 UTC 2009 Marcel Smit + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Update working document. + +Fri Oct 2 09:08:34 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/AMI/AMI.mpc + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc + Fix build orders and missing libraries + +Fri Oct 2 08:36:22 UTC 2009 Marcel Smit + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl: + * performance-tests/Protocols/common/Protocols.idl: + * tests/IDL_Test/Included_Component/IC_Foo.idl: + Resolved some fuzz errors/warnings. + +Fri Oct 2 08:22:34 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc + * examples/Hello/Sender/Sender.mpc + Fix build orders and missing libraries + +Fri Oct 2 07:06:34 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc: + Fixed build order + +Fri Oct 2 02:05:34 UTC 2009 William R. Otte + + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/BenchmarkE.idl: + * performance-tests/Benchmark/Benchmark_skel_export.h: + * performance-tests/Benchmark/Benchmark_stub_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip.idl: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Protocols/Receiver/Receiver.idl: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/common/Protocols.idl: + * performance-tests/Protocols/common/Protocols.mpc: + * tests/CIDL/CodeGen/Basic.mpc: + * tests/CIDL/CodeGen/CodeGen.idl: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/IDL_Test/Included_Component/IC_Bar.idl: + * tests/IDL_Test/Included_Component/IC_Foo.idl: + * tests/IDL_Test/Reused_Facet_Interface/Basic.mpc: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.idl: + * tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc: + + Additional -Glem changes. + +Thu Oct 1 20:15:35 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl: + * connectors/dds4ccm/idl/dds4ccm.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.idl: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + * examples/BasicSP/BMClosedED/BMClosedED.idl: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.idl: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * examples/DevGuideExamples/Messenger/Messenger.idl: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.idl: + * examples/Display/GPS/GPS.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Sender/Sender.idl: + * examples/Hello/Sender/Sender.mpc: + * examples/Null_Component/Null_Component.idl: + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/Null_Interface.mpc: + + -Glem changes. + +Thu Oct 1 20:14:03 UTC 2009 William R. Otte + + * examples/Swapping: + + Removed, this functionality isn't in CIAO anymore. + +Thu Oct 1 19:17:02 UTC 2009 Jeff Parsons + + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + + Fixed export macro/include in *_lem_gen project. + +Thu Oct 1 18:48:45 UTC 2009 Marcel Smit + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyInterface_i.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyInterface_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello.idl: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Fixed some compiler and fuzz errors. Also added attribute handling. + + * connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: + Changed time out to 40 sec. + +Thu Oct 1 14:52:07 UTC 2009 William R. Otte + + * connectors/ami4ccm/examples/Hello/AMI/AMI.idl: + * connectors/ami4ccm/examples/Hello/AMI/AMI.mpc: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello.idl: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.mpc: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc: + + New -Glem behavior. + +Thu Oct 1 14:32:08 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.idl: + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider.idl: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + + New -Glem behavior. + +Thu Oct 1 11:38:42 UTC 2009 Johnny Willemsen + + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc + Fixed lem generation using -Glfa + +Thu Oct 1 11:28:42 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/AMI/AMI.mpc: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc: + Fixed lem generation using -Glfa + +Thu Oct 1 10:14:42 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc + Fixed to use the new -Glfa and -Glem behaviour + +Tue Sep 29 14:37:17 UTC 2009 Vladimir Zykov + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl: + + Provided a correct fix for XMI generation for module reopening. + Fixed similar code for interface/valuetype/eventtype/struct/ + exception/union forward declarations. Extended a test for module + reopening. + +Tue Sep 29 11:57:42 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + Build order fixes + +Tue Sep 29 11:49:42 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Null_Component/Null_Interface.mpc: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + * performance-tests/Protocols/common/Protocols.mpc: + * tests/CIDL/CodeGen/Basic.mpc: + Removed duplicated base projects + +Tue Sep 29 11:36:42 UTC 2009 Johnny Willemsen + + * docs/Connectors.graffle: + * docs/OMG-CCM-Tutorial.ppt: + Added new sheets for IDL3+, Connector, DDS4CCM, and AMI4CCM + +Mon Sep 28 18:21:42 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + + Cosmetic changes. + + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * connectors/ami4ccm/examples/Hello/AMI/AMI.mpc: + * examples/Hello/Sender/Sender.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/EC/EC.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + + Config changes. + +Mon Sep 28 11:25:43 UTC 2009 Vladimir Zykov + + * tools/IDL3_to_XMI/Literals.cpp: + + Added missing comma between CORBAany and CORBAnative literals. + + * tests/IDL3_to_XMI/XMI_For_Native/test.idl: + * tests/IDL3_to_XMI/XMI_For_Native/run_test.pl: + * bin/ciao_tests.lst: + + Added a test that checks for CORBAnative in XMI file. + +Mon Sep 28 06:19:36 UTC 2009 Johnny Willemsen + + Integrated idl3_plus branch + + Thu Sep 24 17:35:36 UTC 2009 Jeff Parsons + + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + + Added separate IDL processing project. + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + + Updated base project on IDL processing project, and + cosmetic changes. + + * DAnCE/RepositoryManager/repository_manager_admin.cpp: + + Commented out or removed unused args. + + Wed Sep 23 21:50:44 UTC 2009 Jeff Parsons + + * tools/IDL3_to_XMI/IR_Simulator_visitor.cpp: + + Removed unused arg. + + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Swapping/Sender/Sender.mpc: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + * examples/Null_Component/Null_Interface.mpc: + + Fixed missing export header file generation and missing + dependency of *E.idl processing on *.idl processing. + + Wed Sep 23 21:23:19 UTC 2009 Jeff Parsons + + * tests/CIDL/CodeGen/Basic.mpc: + + Added generation of export header files. + + * tests/CIDL/CodeGen/CodeGen_exec_export.h: + * tests/CIDL/CodeGen/Basic_stub_export.h: + * tests/CIDL/CodeGen/CodeGen_svnt_export.h: + * tests/CIDL/CodeGen/Basic_skel_export.h: + * tests/CIDL/CodeGen/CodeGen_stub_export.h: + + Removed these files, now generated. + + Wed Sep 23 19:37:29 UTC 2009 Jeff Parsons + + * tools/IDL3_to_XMI/IDL3_TO_XMI.mpc: + + Removed unnecessary base project. + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/IR_Simulator_visitor.cpp: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/IR_Simulator_visitor.h: + + Updated visitors to reflect IDL3+ changes. + + Tue Sep 22 22:17:57 UTC 2009 Jeff Parsons + + * DAnCE/tests/CIAO/Components/SimpleNull_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_svnt_export.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon_stub_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_stub_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull_stub_export.h: + + Removed these files, now generated. + + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + + MPC project changes. + + Tue Sep 22 21:45:42 UTC 2009 Jeff Parsons + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_svnt_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_svnt_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h: + + Removed these files, now generated. + + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + + Config updates. + + Tue Sep 22 21:22:48 UTC 2009 Jeff Parsons + + * performance-tests/Protocols/Sender/Sender_svnt_export.h: + * performance-tests/Protocols/Sender/Sender_stub_export.h: + * performance-tests/Protocols/Sender/Sender_exec_export.h: + * performance-tests/Protocols/Receiver/Receiver_exec_export.h: + * performance-tests/Protocols/Receiver/Receiver_svnt_export.h: + * performance-tests/Protocols/Receiver/Receiver_stub_export.h: + * performance-tests/Protocols/common/Protocols_stub_export.h: + * performance-tests/Protocols/common/Protocols_skel_export.h: + + Removed these files, now generated. + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/common/Protocols.mpc: + + Addition of -Glfa IDL compiler option where necessary. + + Tue Sep 22 21:00:03 UTC 2009 Jeff Parsons + + * examples/Hello/Hello_Base/Hello_Base_stub_export.h: + * examples/Hello/Hello_Base/Hello_Base_skel_export.h: + * examples/BasicSP/BasicSP_exec_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_exec_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_stub_export.h: + * examples/BasicSP/EC/EC_exec_export.h: + * examples/BasicSP/EC/EC_svnt_export.h: + * examples/BasicSP/EC/EC_stub_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_stub_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_exec_export.h: + * examples/BasicSP/BasicSP_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice_svnt_export.h: + * examples/BasicSP/BMDevice/BMDevice_stub_export.h: + * examples/BasicSP/BMDevice/BMDevice_exec_export.h: + * examples/BasicSP/BasicSP_exec.h: + * examples/Display/Display_Base/Display_Base_stub_export.h: + * examples/Display/Display_Base/Display_Base_skel_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h: + * examples/Display/RateGen/RateGen_exec_export.h: + * examples/Display/RateGen/RateGen_svnt_export.h: + * examples/Display/RateGen/RateGen_stub_export.h: + * examples/Display/GPS/GPS_exec_export.h: + * examples/Display/GPS/GPS_svnt_export.h: + * examples/Display/GPS/GPS_stub_export.h: + * examples/Display/NavDisplay/NavDisplay_exec_export.h: + * examples/Display/NavDisplay/NavDisplay_svnt_export.h: + * examples/Display/NavDisplay/NavDisplay_stub_export.h: + * examples/Swapping/Sender/Sender_svnt_export.h: + * examples/Swapping/Sender/Sender_stub_export.h: + * examples/Swapping/Sender/Sender_exec_1_export.h: + * examples/Swapping/Sender/Sender_exec_export.h: + * examples/Swapping/Sender/Sender_exec_2_export.h: + * examples/Swapping/Receiver/Receiver_exec_export.h: + * examples/Swapping/Receiver/Receiver_svnt_export.h: + * examples/Swapping/Receiver/Receiver_stub_export.h: + * examples/Swapping/Hello_Base/Hello_Base_stub_export.h: + * examples/Swapping/Hello_Base/Hello_Base_skel_export.h: + * examples/Null_Component/Null_Component_stub_export.h: + * examples/Null_Component/Null_Component_exec_export.h: + * examples/Null_Component/Null_Component_svnt_export.h: + * examples/Null_Component/Null_Interface_skel_export.h: + * examples/Null_Component/Null_Interface_stub_export.h: + + Removed these export header files since they're now + generated. Also removed BasicSP_exec.*, and moved the + code to BMClosedED_exec.* and BMDevice_exec.*. + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + + MPC changes, and code moved from BasicSP_exec.*. + + Mon Sep 21 22:01:50 UTC 2009 Jeff Parsons + + * examples/DevGuideExamples/Messenger/Administrator_Client.cpp: + * examples/DevGuideExamples/Messenger/Receiver.mpc: + * examples/DevGuideExamples/Messenger/Receiver_exec_export.h: + * examples/DevGuideExamples/Messenger/Receiver_svnt_export.h: + + Fixed config bugs. + + * examples/DevGuideExamples/Messenger/Messenger_exec_export.h: + * examples/DevGuideExamples/Messenger/Receiver_stub_export.h: + * examples/DevGuideExamples/Messenger/Messenger_svnt_export.h: + * examples/DevGuideExamples/Messenger/Receiver_exec_export.h: + * examples/DevGuideExamples/Messenger/Administrator_stub_export.h: + * examples/DevGuideExamples/Messenger/Receiver_svnt_export.h: + * examples/DevGuideExamples/Messenger/Administrator_exec_export.h: + * examples/DevGuideExamples/Messenger/Administrator_svnt_export.h: + * examples/DevGuideExamples/Messenger/Messenger_stub_export.h: + + Removed these files from the repository, since they are now generated. + + Mon Sep 21 21:58:49 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + + Fixed bug in implied IDL generation for ports. + + Mon Sep 21 19:42:01 UTC 2009 Jeff Parsons + + * DAnCE/Deployment/Deployment_DeploymentPlan.idl: + + Fixed name clash with 'port' identifier. + + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl: + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl: + * tests/IDL3/Components/ComplexComponent/Facets/Facets.idl: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl: + + Fixed name clashes. + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + + Fixed bug in processing of valuetypes. + + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManager_exec_export.h: + * DAnCE/TargetManager/TargetManager_stub_export.h: + * DAnCE/TargetManager/TargetManager_svnt_export.h: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMClosedED/BMClosedED_exec_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_stub_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice_exec_export.h: + * examples/BasicSP/BMDevice/BMDevice_stub_export.h: + * examples/BasicSP/BMDevice/BMDevice_svnt_export.h: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BMDisplay/BMDisplay_exec_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_stub_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BasicSP_exec_export.h: + * examples/BasicSP/BasicSP_stub_export.h: + * examples/BasicSP/BasicSP_svnt_export.h: + * examples/BasicSP/EC/EC.mpc: + * examples/BasicSP/EC/EC_exec_export.h: + * examples/BasicSP/EC/EC_stub_export.h: + * examples/BasicSP/EC/EC_svnt_export.h: + * examples/DevGuideExamples/Messenger/Administrator_Client.cpp: + * examples/DevGuideExamples/Messenger/Administrator_exec_export.h: + * examples/DevGuideExamples/Messenger/Administrator_stub_export.h: + * examples/DevGuideExamples/Messenger/Administrator_svnt_export.h: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + * examples/DevGuideExamples/Messenger/Messenger_exec_export.h: + * examples/DevGuideExamples/Messenger/Messenger_stub_export.h: + * examples/DevGuideExamples/Messenger/Messenger_svnt_export.h: + * examples/DevGuideExamples/Messenger/Receiver_stub_export.h: + * examples/DevGuideExamples/Messenger/Receiver_svnt_export.h: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/GPS/GPS_exec_export.h: + * examples/Display/GPS/GPS_stub_export.h: + * examples/Display/GPS/GPS_svnt_export.h: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Display/NavDisplay/NavDisplay_exec_export.h: + * examples/Display/NavDisplay/NavDisplay_stub_export.h: + * examples/Display/NavDisplay/NavDisplay_svnt_export.h: + * examples/Display/RateGen/RateGen.mpc: + * examples/Display/RateGen/RateGen_exec_export.h: + * examples/Display/RateGen/RateGen_stub_export.h: + * examples/Display/RateGen/RateGen_svnt_export.h: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/Null_Component_exec_export.h: + * examples/Null_Component/Null_Component_stub_export.h: + * examples/Null_Component/Null_Component_svnt_export.h: + * examples/Swapping/Receiver/Receiver_exec_export.h: + * examples/Swapping/Receiver/Receiver_stub_export.h: + * examples/Swapping/Receiver/Receiver_svnt_export.h: + * examples/Swapping/Sender/Sender.mpc: + * examples/Swapping/Sender/Sender_exec_export.h: + * examples/Swapping/Sender/Sender_stub_export.h: + * examples/Swapping/Sender/Sender_svnt_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_stub_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_svnt_export.h: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/CIDL/CodeGen/CodeGen_exec_export.h: + * tests/CIDL/CodeGen/CodeGen_stub_export.h: + * tests/CIDL/CodeGen/CodeGen_svnt_export.h: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc: + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc: + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl: + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + * tests/Minimum/Receiver/Receiver_exec_export.h: + * tests/Minimum/Receiver/Receiver_stub_export.h: + * tests/Minimum/Receiver/Receiver_svnt_export.h: + * tests/Minimum/Sender/Sender.mpc: + * tests/Minimum/Sender/Sender_exec_export.h: + * tests/Minimum/Sender/Sender_stub_export.h: + * tests/Minimum/Sender/Sender_svnt_export.h: + + Added configuration changes corresponding to IDL3+ changes + to IDL compiler. + + Wed Sep 2 16:06:59 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + + Replaced commented-out gen_* methods with + corresponding visit_* methods for component ports. + + Wed Aug 26 18:29:14 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/basic_visitor.h: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/checking_visitor.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h: + + Updated visitors to include the new visit methods, + and commented out the existing methods that use + port descriptions, which have been eliminated. + + Fri Jul 17 19:07:47 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.h: + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/checking_visitor.cpp: + + Added new visit_* methods corresponding to new nodes + added in the IDL compiler front end. + + Wed Jul 8 22:44:15 UTC 2009 Jeff Parsons + + * tools/IDL3_to_IDL2/checking_visitor.h: + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/basic_visitor.h: + * tools/IDL3_to_IDL2/checking_visitor.cpp: + + Added new visit_template_interface() and + visit_porttype() methods to keep these classes up to + date with the IDL compiler frontend. The methods are + empty for now, but the IDL3_to_IDL2 visitor classes are + kept concrete and instantiable. + +Wed Sep 23 11:57:59 UTC 2009 Vladimir Zykov + + * tests/IDL3_to_XMI/XMI_For_Module_Reopen/test.idl: + * tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl: + * bin/ciao_tests.lst: + + Added a test for XMI generation in case of module reopening. + Scheduled the test for run. + +Wed Sep 23 10:50:59 UTC 2009 Vladimir Zykov + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + + Fixed XMI generation in case of module reopening. + +Tue Sep 22 07:16:55 UTC 2009 Marcel Smit + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + Replaced ACE_xxx macros with DANCE_xxx macros. + + * connectors/ami4ccm/docs/AMI4CCM-spec.odt: + Every sendc method should have it's own reply handler. + + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyFoo_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_MyInterface_i.cpp: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.h: + * connectors/ami4ccm/examples/Hello/AMI/AMI_exec.cpp: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello.idl: + * connectors/ami4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Every sendc method has it's own reply handler. + Also the implementation of the exception handling has changed. + Now an exception holder is used. + +Mon Sep 14 09:19:39 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Updated some messages to not get false positives on the scoreboard + +Fri Sep 11 02:39:39 CDT 2009 Johnny Willemsen + + * CIAO version 0.7.3 released. + +Thu Sep 10 07:05:10 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Updated some messages to not get false positives on the scoreboard + +Tue Sep 8 10:38:10 UTC 2009 Johnny Willemsen + + * bin/ciao_tests.lst: + Added ami4ccm example + +Tue Sep 8 10:17:10 UTC 2009 Johnny Willemsen + + * connectors/ami4ccm/Hello + Moved example to the new Hello subdirectory + +Tue Sep 8 10:08:10 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + Fixed compile error + +Tue Sep 8 08:38:10 UTC 2009 Johnny Willemsen + + Integrated AMI4CCM branch which shows a prototype how AMI would + look like at the CCM level + + Mon Sep 7 09:41:10 UTC 2009 Marcel Smit + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + Resolved merge conflicts to head. + + Mon Sep 7 08:28:12 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/docs: + * connectors/AMI_CCM/docs/AMI4CCM-explanation.odt: + * connectors/AMI_CCM/docs/AMI4CCM-spec.odt: + Created a subdirectory called 'docs'. Moved the + existing documents to this directory. + + * connectors/AMI_CCM/examples: + * connectors/AMI_CCM/examples/AMI: + * connectors/AMI_CCM/examples/Hello_Base: + * connectors/AMI_CCM/examples/Receiver: + * connectors/AMI_CCM/examples/Sender: + * connectors/AMI_CCM/examples/Sender/Hello_Sender.idl: + * connectors/AMI_CCM/examples/descriptors: + * connectors/AMI_CCM/AMI: + * connectors/AMI_CCM/AMI/AMI.idl: + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.h: + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.cpp: + * connectors/AMI_CCM/AMI/AMI_MyInterface_i.h: + * connectors/AMI_CCM/AMI/AMI_MyInterface_i.cpp: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI4CCM-explanation.odt: + * connectors/AMI_CCM/AMI4CCM-spec.odt: + * connectors/AMI_CCM/Hello_Base: + * connectors/AMI_CCM/Hello_Base/Hello.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.mpc: + * connectors/AMI_CCM/Receiver: + * connectors/AMI_CCM/Receiver/Hello_Receiver.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver.mpc: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender: + * connectors/AMI_CCM/Sender/Hello_Sender.idl: + * connectors/AMI_CCM/Sender/Hello_Sender.mpc: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * connectors/AMI_CCM/descriptors: + * connectors/AMI_CCM/descriptors/Plan.cdp: + * connectors/AMI_CCM/descriptors/run_test.pl: + Created a subdirectory called 'examples'. Moved + all files to this directory. + + Fri Sep 4 11:00:39 UTC 2009 Marcel Smit + + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + Improved logging. + + Thu Sep 3 14:10:17 UTC 2009 Marcel Smit + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + Improved logging. + + Thu Sep 3 13:17:52 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.mpc: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + Resolved compiler errors on Windows. + + Thu Sep 3 12:05:43 UTC 2009 Marcel Smit + + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp: + rebind (in stead of bind) is always called. + This results in an unnecessary warning. + + * ciao/Containers/Servant_Activator.cpp: + tmp was initialized but never used. + + Thu Sep 3 10:20:48 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + Resolved compiler error on windows. + + Thu Sep 3 08:19:18 UTC 2009 Marcel Smit + + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + Log message inserted. + + * DAnCE/RepositoryManager/URL_Parser.cpp: + Resolved compiler error on Windows. + + Thu Sep 3 07:48:59 UTC 2009 Marcel Smit + + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/Plan_Generator/PCVisitor.cpp: + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RepositoryManager.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/URL_Parser.h: + * DAnCE/RepositoryManager/URL_Parser.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + Replaced all ACE_ERROR-s, ACE_ERROR_RETURN-s and ACE_DEBUG-s with th + DANCE variant. + + Wed Sep 2 12:09:58 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.cpp: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Changed to meet the spec. + + Wed Sep 2 07:33:20 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI4CCM-explanation.odt: + * connectors/AMI_CCM/AMI4CCM-spec.odt: + When the rh in the sendc is nil, AMI treats + this as an oneway request. + When a rh per request is used, the 'global' rh + code should not be generated. + + Mon Aug 31 11:09:40 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI4CCM-explanation.odt: + * connectors/AMI_CCM/AMI4CCM-spec.odt: + Added. + + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Resolved bug regarding the MyInterface interface. + + Mon Aug 31 10:39:25 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Resolved some compiler errors/warnings. + + Fri Aug 28 07:29:13 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.h: + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.cpp: + * connectors/AMI_CCM/AMI/AMI_MyInterface_i.cpp: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base/Hello.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Extende the MyFoo interface with a new method. Just + to gain more inside info. + + Thu Aug 27 16:47:53 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.h: + * connectors/AMI_CCM/AMI/AMI_MyFoo_i.cpp: + * connectors/AMI_CCM/AMI/AMI_MyInterface_i.h: + * connectors/AMI_CCM/AMI/AMI_MyInterface_i.cpp: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * connectors/AMI_CCM/descriptors/run_test.pl: + Refactored code. Also expanded this + example with another interface. + + * connectors/AMI_CCM/AMI/AMI_internal_i.h: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/AMI/AMI_perform_work.h: + * connectors/AMI_CCM/AMI/AMI_perform_work.cpp: + * connectors/AMI_CCM/AMI/AMI_server.h: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + + Removed these files. + + Wed Aug 26 18:42:49 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.idl: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base/Hello.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender.idl: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * connectors/AMI_CCM/descriptors/Plan.cdp: + Set up (empty) framework in order to test one reply handler + per request. + + Wed Aug 26 13:04:12 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Removed cookie from IDL interfaces. + + Wed Aug 26 08:59:26 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.idl: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.h: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/AMI/AMI_perform_work.cpp: + * connectors/AMI_CCM/AMI/AMI_server.h: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + * connectors/AMI_CCM/Hello_Base/Hello.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.mpc: + * connectors/AMI_CCM/Receiver/Hello_Receiver.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender.idl: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Added Hello.idl to seperate AMI interfaces from + "normal" interfaces. Besides this changed naming + convention to make a distinction between AMI interfaces + and "normal" interfaces. + + Tue Aug 25 13:30:29 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_server.h: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + Removed unnecessary class variables. + + Tue Aug 25 13:03:23 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + AMI collacation set to 0 since AMI CORBA client and + AMI CORBA server are running in the same process. + + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Improved logging. + + * connectors/AMI_CCM/descriptors/run_test.pl: + Automatically remove AMI CORBA ior file. + + Tue Aug 25 09:35:49 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.idl: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Refactored exception handling a bit. An exception struct + is now passed to the exception callback. + Also shortened the time stamps. + + * connectors/AMI_CCM/descriptors/run_test.pl: + Shortened the sleep time. + + Tue Aug 25 07:19:55 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_perform_work.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.mpc: + * connectors/AMI_CCM/Receiver/Hello_Receiver.mpc: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender.mpc: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Resolved compiler errors on windows. + Resolved linker errors related to previous login. + + Tue Aug 25 05:44:12 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.h: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/AMI/AMI_perform_work.h: + * connectors/AMI_CCM/AMI/AMI_server.h: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + Removed internal IDL and use Hello base foo interface + + * connectors/AMI_CCM/Hello_Base/Hello_Base.mpc: + foo interface uses AMI. + + Mon Aug 24 13:31:57 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.h: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/AMI/AMI_server.h: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender.idl: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * connectors/AMI_CCM/descriptors/Plan.cdp: + Implemented synchronous calls from Sender to Receiver. Renamed some + interfaces to match the CORBA specs regarding AMI. + + Mon Aug 24 12:21:50 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + Removed file since this wasn't needed. + + Mon Aug 24 11:34:05 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Implemented exception handling. + + Mon Aug 24 09:25:00 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/AMI/AMI_perform_work.cpp: + CORBA callback in seperate thread. Refactored to + one reply handler per request. + + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Optimized logging. Removed sleep between calls. + Wait 5 sec. (in stead of 10) before start. + + * connectors/AMI_CCM/descriptors/run_test.pl: + Minor changes. + + Mon Aug 24 07:34:08 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + Implemented a define to switch between implementations. + Resolved some compiler warnings. + + Mon Aug 24 07:10:16 UTC 2009 Marcel Smit + + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/AMI/AMI_internal_i.h: + * connectors/AMI_CCM/AMI/AMI_internal_i.cpp: + * connectors/AMI_CCM/AMI/AMI_perform_work.h: + * connectors/AMI_CCM/AMI/AMI_perform_work.cpp: + * connectors/AMI_CCM/AMI/AMI_server.h: + * connectors/AMI_CCM/AMI/AMI_server.cpp: + First step to use CORBA AMI in the AMI component. + + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Minor changes. + + Thu Aug 20 09:56:11 UTC 2009 Marcel Smit + + * connectors: + * connectors/AMI_CCM: + * connectors/AMI_CCM/AMI: + * connectors/AMI_CCM/AMI/AMI.idl: + * connectors/AMI_CCM/AMI/AMI.mpc: + * connectors/AMI_CCM/AMI/AMI_exec.h: + * connectors/AMI_CCM/AMI/AMI_exec.cpp: + * connectors/AMI_CCM/Hello_Base: + * connectors/AMI_CCM/Hello_Base/Hello_Base.idl: + * connectors/AMI_CCM/Hello_Base/Hello_Base.mpc: + * connectors/AMI_CCM/Receiver: + * connectors/AMI_CCM/Receiver/Hello_Receiver.idl: + * connectors/AMI_CCM/Receiver/Hello_Receiver.mpc: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * connectors/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * connectors/AMI_CCM/Sender: + * connectors/AMI_CCM/Sender/Hello_Sender.idl: + * connectors/AMI_CCM/Sender/Hello_Sender.mpc: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.h: + * connectors/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * connectors/AMI_CCM/descriptors: + * connectors/AMI_CCM/descriptors/Plan.cdp: + * connectors/AMI_CCM/descriptors/run_test.pl: + Moved this example from tests to this location. Just to + be consistent with dds4ccm. + + * tests/AMI_CCM: + * tests/AMI_CCM/AMI: + * tests/AMI_CCM/AMI/AMI.idl: + * tests/AMI_CCM/AMI/AMI.mpc: + * tests/AMI_CCM/AMI/AMI_exec.h: + * tests/AMI_CCM/AMI/AMI_exec.cpp: + * tests/AMI_CCM/Hello_Base: + * tests/AMI_CCM/Hello_Base/Hello_Base.idl: + * tests/AMI_CCM/Hello_Base/Hello_Base.mpc: + * tests/AMI_CCM/Receiver: + * tests/AMI_CCM/Receiver/Hello_Receiver.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver.mpc: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender: + * tests/AMI_CCM/Sender/Hello_Sender.idl: + * tests/AMI_CCM/Sender/Hello_Sender.mpc: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * tests/AMI_CCM/descriptors: + * tests/AMI_CCM/descriptors/Plan.cdp: + * tests/AMI_CCM/descriptors/run_test.pl: + Removed these files. + + Thu Aug 20 09:24:04 UTC 2009 Marcel Smit + + * tests/AMI_CCM/AMI/AMI_exec.cpp: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Improved log messages. + + * tests/AMI_CCM/descriptors/run_test.pl: + Changed to meet the latest version. + + Thu Aug 20 08:54:46 UTC 2009 Marcel Smit + + * tests/AMI_CCM/AMI/AMI_exec.h: + * tests/AMI_CCM/AMI/AMI_exec.cpp: + * tests/AMI_CCM/Hello_Base/Hello_Base.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + The basic version of AMI seems to work. The AMI component + determines a cookie and spawns a thread per request. + The thread handles the request and calls the callback + function of the sender. + + Wed Aug 19 09:07:17 UTC 2009 Marcel Smit + + * tests/AMI_CCM/AMI/AMI_exec.h: + * tests/AMI_CCM/AMI/AMI_exec.cpp: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + The Sender component is now able to pass a string through the + AMI component to the Receiver component. + + Wed Aug 19 07:58:49 UTC 2009 Marcel Smit + + * tests/AMI_CCM/AMI: + * tests/AMI_CCM/AMI/AMI.idl: + * tests/AMI_CCM/AMI/AMI.mpc: + * tests/AMI_CCM/AMI/AMI_exec.h: + * tests/AMI_CCM/AMI/AMI_exec.cpp: + * tests/AMI_CCM/Hello_Base/Hello_Base.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver.mpc: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender.idl: + * tests/AMI_CCM/Sender/Hello_Sender.mpc: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * tests/AMI_CCM/descriptors/Plan.cdp: + Changed to deploy the third component (AMI). None of the + executors are implemented yet. Deploymentplan and IDL files + are prepared to deploy the AMI component. + + Tue Aug 18 09:59:07 UTC 2009 Marcel Smit + + * tests/AMI_CCM/Hello_Base/Hello_Base.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender.idl: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * tests/AMI_CCM/descriptors/Plan.cdp: + * tests/AMI_CCM/descriptors/run_test.pl: + Baseline for AMI implementation. Sender and Receiver + components are deployable and runable. + + Fri Jul 24 11:54:48 UTC 2009 Marcel Smit + + * tests/AMI_CCM/Hello_Base/Hello_Base.mpc: + * tests/AMI_CCM/Receiver/Hello_Receiver.mpc: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender.mpc: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + Rerun example. + + * tests/AMI_CCM/descriptors/Plan.cdp: + Added connectors. Now both components + can be deployed. + + Fri Jul 24 07:34:04 UTC 2009 Marcel Smit + + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * tests/AMI_CCM/descriptors/Plan.cdp: + Changed naming convention regarding entry points + + Thu Jul 23 18:53:34 UTC 2009 Marcel Smit + + * tests/AMI_CCM/descriptors/Plan.cdp: + * tests/AMI_CCM/descriptors/run_test.pl: + Few minor changes regarding names of IOR and + dll's. + + Thu Jul 23 15:31:09 UTC 2009 Marcel Smit + + * tests/AMI_CCM/Hello_Base/Hello_Base.mpc: + * tests/AMI_CCM/Receiver/Hello_Receiver.mpc: + * tests/AMI_CCM/Sender/Hello_Sender.mpc: + Added library paths. + + * tests/AMI_CCM/descriptors/Plan.cdp: + Renaming. + + Thu Jul 23 14:20:55 UTC 2009 Marcel Smit + + * tests/AMI_CCM: + * tests/AMI_CCM/Hello_Base: + * tests/AMI_CCM/Hello_Base/Hello_Base.idl: + * tests/AMI_CCM/Hello_Base/Hello_Base.mpc: + * tests/AMI_CCM/Receiver: + * tests/AMI_CCM/Receiver/Hello_Receiver.idl: + * tests/AMI_CCM/Receiver/Hello_Receiver.mpc: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.h: + * tests/AMI_CCM/Receiver/Hello_Receiver_exec.cpp: + * tests/AMI_CCM/Sender: + * tests/AMI_CCM/Sender/Hello_Sender.idl: + * tests/AMI_CCM/Sender/Hello_Sender.mpc: + * tests/AMI_CCM/Sender/Hello_Sender_exec.h: + * tests/AMI_CCM/Sender/Hello_Sender_exec.cpp: + * tests/AMI_CCM/descriptors: + * tests/AMI_CCM/descriptors/Plan.cdp: + * tests/AMI_CCM/descriptors/run_test.pl: + Added as a starter for ami4ccm + +Fri Aug 14 13:27:29 UTC 2009 Johnny Willemsen + + * MPC/config/ciao_vcwarnings.mpb: + Use prop:microsoft + +Fri Aug 14 10:12:29 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Disabled some code for CB2009 + +Fri Aug 14 09:28:29 UTC 2009 Johnny Willemsen + + * ciao/Servants/Servant_Impl_Base.cpp: + Use global scope explicitly + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Use <<= for DDS_Time + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + Removed commented out include + +Fri Aug 14 02:25:41 UTC 2009 William R. Otte + + * MPC/config/ciao_cs_client.mpb: + + Static linking fix. + +Thu Aug 13 18:07:29 UTC 2009 Johnny Willemsen + + * dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Some more code in read_one_history + +Thu Aug 13 12:58:29 UTC 2009 Johnny Willemsen + + * dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Start with read_one_history implementation + +Thu Aug 13 11:51:29 UTC 2009 Johnny Willemsen + + * dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Added some commented out test code to test the reader code. + This uncovered an issue with the spec, what should the reader + do when there is no data + +Thu Aug 13 10:31:29 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Fized fuzz/borland errors + +Thu Aug 13 08:57:29 UTC 2009 Johnny Willemsen + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + Fixed compile error + +Thu Aug 13 07:56:29 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Removed code for vc6 + +Thu Aug 13 01:23:29 UTC 2009 William R. Otte + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + + Unicode compile errors. + +Wed Aug 12 18:26:09 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication.mpc: + * MPC/config/ciao_cs_client.mpb: + + try to fix link problems introduced by + Tue Aug 11 11:51:29 UTC 2009 ChangeLog + +Wed Aug 12 18:00:56 UTC 2009 William R. Otte + + * tools/Config_Handlers/XMLSchema/Traversal.hpp: + * tools/Config_Handlers/XMLSchema/Types.hpp: + + Integrated more cleanly the changes from XSC XSCRT/XMLSchema. + +Wed Aug 12 13:30:50 UTC 2009 William R. Otte + + * tools/Config_Handlers/XMLSchema/Traversal.hpp: + * tools/Config_Handlers/XMLSchema/Traversal.ipp: + * tools/Config_Handlers/XMLSchema/Traversal.tpp: + * tools/Config_Handlers/XMLSchema/TypeInfo.ipp: + * tools/Config_Handlers/XMLSchema/TypeInfo.tpp: + * tools/Config_Handlers/XMLSchema/Types.hpp: + * tools/Config_Handlers/XMLSchema/Types.ipp: + * tools/Config_Handlers/XMLSchema/Types.tpp: + * tools/Config_Handlers/XMLSchema/Writer.hpp: + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp: + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp: + * tools/Config_Handlers/XSCRT/Parser.hpp: + * tools/Config_Handlers/XSCRT/Traversal.hpp: + * tools/Config_Handlers/XSCRT/Traversal.tpp: + * tools/Config_Handlers/XSCRT/Writer.hpp: + * tools/Config_Handlers/XSCRT/XML.hpp: + + Rolled back the XSC update, it didn't include a number of fixes + necessary for Borland and Xerces2/3. + +Wed Aug 12 10:21:10 UTC 2009 Johnny Willemsen + + * docs/OMG-CCM-Tutorial.ppt: + Small updates regarding to CORBA usage and the official OMG + spec document numbers + +Wed Aug 12 07:27:10 UTC 2009 Johnny Willemsen + + * MPC/config/dds4ccm_base.mpb: + Added after of DDS4CCM_lem_gen + +Wed Aug 12 07:06:10 UTC 2009 Johnny Willemsen + + * DAnCE/Logger/File_Logger_Backend.cpp: + Unicode compile error fix + +Tue Aug 11 17:48:10 UTC 2009 William R. Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/XMI.cpp: + + Fix warnings. + + * tools/Config_Handlers/XMLSchema/Traversal.hpp: + * tools/Config_Handlers/XMLSchema/Traversal.ipp: + * tools/Config_Handlers/XMLSchema/Traversal.tpp: + * tools/Config_Handlers/XMLSchema/TypeInfo.ipp: + * tools/Config_Handlers/XMLSchema/TypeInfo.tpp: + * tools/Config_Handlers/XMLSchema/Types.hpp: + * tools/Config_Handlers/XMLSchema/Types.ipp: + * tools/Config_Handlers/XMLSchema/Types.tpp: + * tools/Config_Handlers/XMLSchema/Writer.hpp: + * tools/Config_Handlers/XMLSchema/id_map.hpp: + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp: + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp: + * tools/Config_Handlers/XSCRT/Parser.hpp: + * tools/Config_Handlers/XSCRT/Traversal.hpp: + * tools/Config_Handlers/XSCRT/Traversal.tpp: + * tools/Config_Handlers/XSCRT/Writer.hpp: + * tools/Config_Handlers/XSCRT/XML.hpp: + + Pull in new version of XMLSchema and XSCRT. + +Tue Aug 11 11:51:29 UTC 2009 ChangeLog + + * DAnCE/MPC/config/dance_deployment_svnt.mpb: + * DAnCE/MPC/config/dance_plan_launcher_base.mpb: + * DAnCE/NodeManager/NodeManager.mpc: + * MPC/config/ccm_componentserver_svnt.mpb: + * MPC/config/ciao_cs_client.mpb: + + Link fixes for an ARM cross compile. + +Tue Aug 11 08:55:12 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XML_File_Intf.cpp: + Improved error debug statements + +Mon Aug 10 17:46:12 UTC 2009 William R. Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/RepositoryManager/repository_manager_admin.cpp: + * DAnCE/TargetManager/Target_Manager_Module.h: + * DAnCE/TargetManager/Target_Manager_Module.cpp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + * DAnCE/tests/DeploymentTest1/test.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/File_Logger_Backend.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp: + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/Any_Handler.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/CCD_Handler.cpp: + * tools/Config_Handlers/CEPE_Handler.cpp: + * tools/Config_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/CRDD_Handler.cpp: + * tools/Config_Handlers/Common.h: + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/Deployment.hpp: + * tools/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp: + * tools/Config_Handlers/ERE_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/IDREF_Base.h: + * tools/Config_Handlers/IDREF_Base.cpp: + * tools/Config_Handlers/ID_Handler.cpp: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/MDD_Handler.cpp: + * tools/Config_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/PSPE_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.h: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.h: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.h: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp: + * tools/Config_Handlers/Property_Handler.cpp: + * tools/Config_Handlers/RDD_Handler.cpp: + * tools/Config_Handlers/Req_Handler.cpp: + * tools/Config_Handlers/SatisfierProperty_Handler.cpp: + * tools/Config_Handlers/Utils/Exceptions.h: + * tools/Config_Handlers/Utils/Functors.h: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/XMI.hpp: + * tools/Config_Handlers/XMLSchema/id_map.hpp: + * tools/Config_Handlers/XML_File_Intf.h: + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/ccd.hpp: + * tools/Config_Handlers/cdd.hpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/iad.hpp: + * tools/Config_Handlers/pcd.hpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/XML/XML_Helper.tpp: + * tools/XML/XercesString.h: + * tools/XML/XercesString.cpp: + + Unicode compile fixes. + +Mon Aug 10 14:23:39 UTC 2009 Johnny Willemsen + + * dds4ccm/examples/Hello/descriptors/run_1_to_5.pl + * dds4ccm/examples/Hello/descriptors/run_5_to_1.pl + * dds4ccm/examples/Hello/descriptors/run_5_to_5.pl + * dds4ccm/examples/Hello/descriptors/run_test.pl + Added missing \n + +Mon Aug 10 14:12:39 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + Fixed layout of debug message + +Mon Aug 10 12:59:21 UTC 2009 William R. Otte + + * DAnCE/Logger/File_Logger_Backend.h: + * DAnCE/Logger/Logger_Service.cpp: + + Unicoe fixes. + +Mon Aug 10 10:53:39 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.idl + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.h + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser.idl + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser.mpc + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp + * DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.h + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NilFacet.cdp + Added a new test for the case where the component that + provides return a nil object reference. The caller should + then get an INV_OBJREF exception, not a crash. + + The CCM spec says in 6.4.2: + In general, a component instance shall be prepared to return object + references for facets throughout the instance's life + cycle. A component implementation may, as part of its advertised + behavior, return a nil object reference as the result of + a provide_ operation + + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp + Catch as const + + * DAnCE/tests/DeploymentPlanDump/test.cpp: + Layout change + + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + Type, unicode changes + + * DAnCE/tests/NameServiceTest/clt_main.cpp: + Unicode fix + + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + Layout change + +Mon Aug 10 09:00:39 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp: + Unicode fixes + +Mon Aug 10 08:53:39 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl + * connectors/dds4ccm/impl/ndds/RawListener.h + Fixed fuzz errors + +Mon Aug 10 07:44:39 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl + * connectors/dds4ccm/idl/dds4ccm.mpc + * connectors/dds4ccm/impl/ndds/Duration_t.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/RawListener.cpp + * connectors/dds4ccm/impl/ndds/Reader.cpp + * connectors/dds4ccm/impl/ndds/Reader.h + * connectors/dds4ccm/impl/ndds/SampleLostStatus.h + * connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h + * connectors/dds4ccm/impl/ndds/Time_t.h + * connectors/dds4ccm/impl/ndds/Utils.h + Fixed fuzz errors + +Sun Aug 9 20:20:39 UTC 2009 William R. Otte + + * .: + * CIAO-INSTALL.html: + * CIAO.mwc: + * CIAO_DAnCE.mwc: + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + * COPYING: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/RepositoryManager: + * DAnCE/tests/CIAO/Components/ProcessColocation.idl: + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/TwoComponentsOneHome.cdp: + * MPC: + * MPC/config/ciao_dds4ccm_ndds_impl.mpb: + * MPC/config/ciao_example_output.mpb: + * NEWS: + * bin: + * bin/ciao_tests.lst: + * ccm/ComponentServer/CCM_ComponentServer.idl: + * ccm/ComponentServer/CCM_ComponentServer.mpc: + * ccm/ComponentServer/CCM_ComponentServer_Base.idl: + * ccm/ComponentServer/CCM_ComponentServer_Client.idl: + * ciao: + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Servant_Impl_Base.cpp: + * connectors: + * connectors/dds4ccm: + * connectors/dds4ccm/examples: + * connectors/dds4ccm/examples/Hello: + * connectors/dds4ccm/examples/Hello/DDS_Receiver: + * connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp: + * connectors/dds4ccm/examples/Hello/DDS_Sender: + * connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc: + * connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp: + * connectors/dds4ccm/examples/Hello/Receiver: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl3p: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/dds4ccm/examples/Hello/descriptors: + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + * connectors/dds4ccm/id3p_test: + * connectors/dds4ccm/id3p_test/Multiple_Reader_Ports: + * connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p: + * connectors/dds4ccm/idl: + * connectors/dds4ccm/idl/dds4ccm.mpc: + * connectors/dds4ccm/idl/dds4ccm_Base.idl3: + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3: + * connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Getter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3: + * connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3: + * connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p: + * connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Reader.idl3p: + * connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Updater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Writer.idl3p: + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl: + * connectors/dds4ccm/impl: + * connectors/dds4ccm/impl/ndds: + * connectors/dds4ccm/impl/ndds/DataReader.h: + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/DataReaderListener.h: + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp: + * connectors/dds4ccm/impl/ndds/DataWriter.h: + * connectors/dds4ccm/impl/ndds/DataWriter.cpp: + * connectors/dds4ccm/impl/ndds/DataWriterListener.h: + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipant.h: + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp: + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h: + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp: + * connectors/dds4ccm/impl/ndds/Duration_t.h: + * connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h: + * connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h: + * connectors/dds4ccm/impl/ndds/InstanceHandle_t.h: + * connectors/dds4ccm/impl/ndds/ListenerControl.h: + * connectors/dds4ccm/impl/ndds/ListenerControl.cpp: + * connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h: + * connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h: + * connectors/dds4ccm/impl/ndds/NDDS_Traits.h: + * connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h: + * connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h: + * connectors/dds4ccm/impl/ndds/PortStatusListener.h: + * connectors/dds4ccm/impl/ndds/PortStatusListener.cpp: + * connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h: + * connectors/dds4ccm/impl/ndds/Publisher.h: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/PublisherListener.h: + * connectors/dds4ccm/impl/ndds/PublisherListener.cpp: + * connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h: + * connectors/dds4ccm/impl/ndds/QueryCondition.h: + * connectors/dds4ccm/impl/ndds/QueryCondition.cpp: + * connectors/dds4ccm/impl/ndds/RawListener.h: + * connectors/dds4ccm/impl/ndds/RawListener.cpp: + * connectors/dds4ccm/impl/ndds/ReadCondition.h: + * connectors/dds4ccm/impl/ndds/ReadCondition.cpp: + * connectors/dds4ccm/impl/ndds/Reader.h: + * connectors/dds4ccm/impl/ndds/Reader.cpp: + * connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h: + * connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h: + * connectors/dds4ccm/impl/ndds/SampleLostStatus.h: + * connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h: + * connectors/dds4ccm/impl/ndds/StatusCondition.h: + * connectors/dds4ccm/impl/ndds/StatusCondition.cpp: + * connectors/dds4ccm/impl/ndds/Subscriber.h: + * connectors/dds4ccm/impl/ndds/Subscriber.cpp: + * connectors/dds4ccm/impl/ndds/SubscriberListener.h: + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp: + * connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h: + * connectors/dds4ccm/impl/ndds/Time_t.h: + * connectors/dds4ccm/impl/ndds/Topic.h: + * connectors/dds4ccm/impl/ndds/Topic.cpp: + * connectors/dds4ccm/impl/ndds/TopicDescription.h: + * connectors/dds4ccm/impl/ndds/TopicDescription.cpp: + * connectors/dds4ccm/impl/ndds/Utils.h: + * connectors/dds4ccm/impl/ndds/Utils.cpp: + * connectors/dds4ccm/impl/ndds/Writer.h: + * connectors/dds4ccm/impl/ndds/Writer.tpp: + * connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h: + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc: + * docs: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + * etc/ciao.doxygen: + * etc/ciao_DAnCE.doxygen: + * etc/ciao_config_handlers.doxygen: + * examples: + * examples/DevGuideExamples: + * examples/Hello/descriptors/Aliased_Map.dat: + * examples/Hello/descriptors/run_test_alias.pl: + * examples/Null_Component/descriptors/run_test.pl: + * performance-tests: + * rules.ciao.GNU: + * tests: + * tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc: + * tools: + * tools/Config_Handlers/XMLSchema/id_map.hpp: + * DAnCE/MPC/config/dance_plan_launcher_base.mpb: + * MPC/config/example_output.mpb: + + Merged in branch dds_ports. Changelog entries: + + Fri Aug 7 19:46:43 UTC 2009 William R. Otte + + * bin/ciao_tests.lst: + + Added dds4ccm tests. + + * connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp: + + Added 2 second delay after initialization and before sending. + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + + Configure dds during configuration_complete, to ensure delayed initialization + doesn't mees up our receiver counts. + + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp: + + initialize expected_samples attribute to correctly account for the + expected number of senders. + + Fri Aug 7 19:15:30 UTC 2009 William R. Otte + + * tools/Config_Handlers/XMLSchema/id_map.hpp: + + Compile fixes for sun studio 12. + + Fri Aug 7 14:21:34 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: + + 5_to_5 behavior. This deploys the senders/receivers as part of + separate plans. It seems that the delayed servant activation may be + causing problems with discovery, leaving the receivers recieving less + than 50 messages each. + + Fri Aug 7 14:00:45 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + + Added name attribute to identify receivers. + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + + Increased wait time before starting sending task to allow + more time for discovery. + + * connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: + + Test for 1 to 5 communication. + + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + + Increased timeouts. + + Fri Aug 7 13:50:19 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Use ACE_NEW_NORETURN in the get entry point method so that we only + have one exit point + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + Comment out the multiwriter code, just for testing + + Fri Aug 7 13:21:19 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Use the safer set_session_context as now generated by TAO_IDL + + Fri Aug 7 12:57:19 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + Fixed typo in debug statements + + * ciao/Containers/Session/Session_Container.cpp: + Improved debug statements + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + Use CCM_DDS::DataReader directly, saves an indirection step + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + Added some comments + + * connectors/dds4ccm/impl/ndds/DataWriter.h: + Get the DDSDataWriter from the global scope + + Fri Aug 7 11:44:30 UTC 2009 William R. Otte + + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Servants/Servant_Impl_Base.cpp: + + Re-implemented the servant activator to address a crash at + teardown. + + Fri Aug 7 11:11:19 UTC 2009 Johnny Willemsen + + * ciao/Servants/Servant_Impl_Base.cpp: + Some more defensive programming and pluged a memory leak + + Thu Aug 6 15:32:19 UTC 2009 William R. Otte + + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + + Second part of fix for + Thu Aug 6 01:46:32 UTC 2009 William R. Otte , + now bug 3725. Homes how keep an increasing serial counter of the home + instances they create, and append this number to the instance ID passed + to the component servant when it is instantiated. + + Thu Aug 6 13:46:11 UTC 2009 William R. Otte + + * ciao/Containers/Servant_Activator.cpp: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + + Various logging improvements, as well as a *partial* fix for + Thu Aug 6 01:46:32 UTC 2009 William R. Otte , + allowing multiple homes of the *same type* to deploy/manage a single component + each. Part of the problem was memory corruption in the home/component instance + name, which has been resolved by using ACE_CString instead of naked char *s to + store these. + + Homes which host multiple components are still broken, as the facet ObjectID, + while no longer garbage, is the same for all instances managed by that home. + + * ciao/Containers/Session/Session_Container.cpp: + + Newline on log message. + + Thu Aug 6 13:39:16 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp: + + Updated to use separate homes for each sender/connector to workaround + the bug checked in with: + + Thu Aug 6 01:46:32 UTC 2009 William R. Otte + + Thu Aug 6 11:29:35 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_Container_Impl.cpp + * ciao/Containers/Session/Session_Container.cpp + * ciao/Servants/Servant_Impl_Base.cpp + More defensive programming against nil object references + + Thu Aug 6 08:43:35 UTC 2009 Johnny Willemsen + + * ciao/Containers/Servant_Activator.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h + Fixed compile warnings + + Thu Aug 6 01:46:32 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/TwoComponentsOneHome.cdp: + + Added test plan that exhibits a problem when the same home is used + to deploy two components that provide facets. The problem is that + the servant activator/port activator only really tracks a SINGLE + facet instance PER HOME. This would produce runtime side effects + for components with stateful facet executors, but especially causes + a problem during teardown, when the container attempts to + repeatedly deactivate the single facet servant. + + Wed Aug 5 18:58:35 UTC 2009 Johnny Willemsen + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + Improved debug messages + + Wed Aug 5 18:05:29 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: + + Plan modifications/test script for many to one communication. + This appears to expose another bug in CIAO, investigating. + + Wed Aug 5 17:44:03 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + + Log message tweak. + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + + Spawn a thread to do sending, necessary to multiple sender tests, + as ccm_activate would block until completion. + + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + + Added a sleep between deployment/teardown to accomodate + new sender behavior. + + * connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp: + + Plan that deploys 5 to 1 communication. + + Wed Aug 5 14:39:36 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp: + + Changed severity of logging for replacement of already present + artifact info. + + Wed Aug 5 14:38:22 UTC 2009 William R. Otte + + * ciao/Containers/Servant_Activator.cpp: + + Fixed bug whereby the port activator for a servant would never be found. + + Wed Aug 5 14:25:09 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + + Added some configuration attributes to provide a hint to the receiver as to + how many samples it should be receiving. + + Wed Aug 5 14:00:06 UTC 2009 William R. Otte + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + + Fixed a couple bugs whereby homed and unhomed components didn't + have their end of lifecycle events (passivate/remove) invoked + during teardown. + + Wed Aug 5 08:18:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + Use "" instead of '' + + Wed Aug 5 08:13:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Implemented more methods + + * connectors/dds4ccm/idl/dds4ccm_Base.idl3: + Use DDS sequences + + * connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h: + Use a template for the conversion, we need to factor out conversion of all + sequences + + Tue Aug 4 16:00:02 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: + + Added plan/test script to deploy only a receiver component and + send messages using the RTI DDS sender. + + Tue Aug 4 15:04:21 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp: + + Add command line parameter to automatically shut down after a given + number of samples. + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + + Added configuration attributes for number of samples and message. + + * connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: + + Added plan/test script to deploy only a Sender component and receive + messages using the raw DDS_Receiver. + + * connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h: + * connectors/dds4ccm/impl/ndds/Writer.h: + + Compile fixes. + + Tue Aug 4 12:27:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h + Started with the QueryFilter support + + Tue Aug 4 12:05:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + Implement a few more methods + + Mon Aug 3 14:00:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp + * connectors/dds4ccm/impl/ndds/Writer.h + * connectors/dds4ccm/impl/ndds/Writer.tpp + Added write with a set for the MultiWriter + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h + Start with the reader implementation + + Mon Aug 3 12:46:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + Moved HelloListener to the cpp file. Added an enabled flag to + be able to stop publishing data, default is now true, + should be modified to false later + + Fri Jul 31 14:27:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/QueryCondition.cpp + More glue code + + Fri Jul 31 13:46:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/InstanceHandle_t.h + * connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h + Added InstanceHandleSeq support. Note that we have added a new + trait to the CORBA sequences, knowing _size_type. + + Fri Jul 31 12:43:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Topic.cpp + More methods and more states + + Fri Jul 31 12:12:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.h + * connectors/dds4ccm/impl/ndds/Writer.tpp + Fixed some small bugs, the example compiles again + + Fri Jul 31 11:41:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp + * connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h + * connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h + * connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h + * connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h + DataWriterListener is now implemented + + Fri Jul 31 11:26:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h + * connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h + DataReaderListener is now fully implemented + + Fri Jul 31 11:13:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h + * connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h + Added some more status conversions + + Fri Jul 31 11:05:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataReader.h + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.h + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/Publisher.h + * connectors/dds4ccm/impl/ndds/PublisherListener.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener.h + * connectors/dds4ccm/impl/ndds/QueryCondition.cpp + * connectors/dds4ccm/impl/ndds/QueryCondition.h + * connectors/dds4ccm/impl/ndds/ReadCondition.cpp + * connectors/dds4ccm/impl/ndds/ReadCondition.h + * connectors/dds4ccm/impl/ndds/StatusCondition.cpp + * connectors/dds4ccm/impl/ndds/StatusCondition.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.h + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.h + * connectors/dds4ccm/impl/ndds/Topic.cpp + * connectors/dds4ccm/impl/ndds/Topic.h + * connectors/dds4ccm/impl/ndds/TopicDescription.cpp + * connectors/dds4ccm/impl/ndds/TopicDescription.h + * connectors/dds4ccm/impl/ndds/Writer.h + Renamed the member to impl_, that way we can more easily copy + code from one wrapper to another + + Fri Jul 31 10:49:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h + * connectors/dds4ccm/impl/ndds/PortStatusListener.h + * connectors/dds4ccm/impl/ndds/Publisher.h + * connectors/dds4ccm/impl/ndds/PublisherListener.h + * connectors/dds4ccm/impl/ndds/QueryCondition.h + * connectors/dds4ccm/impl/ndds/ReadCondition.h + * connectors/dds4ccm/impl/ndds/StatusCondition.h + * connectors/dds4ccm/impl/ndds/Subscriber.h + * connectors/dds4ccm/impl/ndds/SubscriberListener.h + * connectors/dds4ccm/impl/ndds/Topic.h + * connectors/dds4ccm/impl/ndds/TopicDescription.h + Use localobject + + Fri Jul 31 08:57:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.h + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/DataWriter.h + * connectors/dds4ccm/impl/ndds/DataWriterListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h + * connectors/dds4ccm/impl/ndds/Duration_t.h + * connectors/dds4ccm/impl/ndds/InstanceHandle_t.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/PortStatusListener.h + * connectors/dds4ccm/impl/ndds/Publisher.h + * connectors/dds4ccm/impl/ndds/PublisherListener.h + * connectors/dds4ccm/impl/ndds/QueryCondition.h + * connectors/dds4ccm/impl/ndds/ReadCondition.h + * connectors/dds4ccm/impl/ndds/SampleLostStatus.h + * connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h + * connectors/dds4ccm/impl/ndds/StatusCondition.h + * connectors/dds4ccm/impl/ndds/Subscriber.h + * connectors/dds4ccm/impl/ndds/SubscriberListener.h + * connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h + * connectors/dds4ccm/impl/ndds/Time_t.h + * connectors/dds4ccm/impl/ndds/Topic.h + * connectors/dds4ccm/impl/ndds/TopicDescription.h + * connectors/dds4ccm/impl/ndds/Writer.h + Added defines to prevent redefinitions, added same file + header + + Fri Jul 31 08:28:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Time_t.h + * connectors/dds4ccm/impl/ndds/Topic.cpp + * connectors/dds4ccm/impl/ndds/TopicDescription.cpp + More methods implemented + + Thu Jul 30 13:54:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.h + Implement more listen methods + + Thu Jul 30 11:47:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + Implemented some more methods + + Thu Jul 30 11:34:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/QueryCondition.cpp + * connectors/dds4ccm/impl/ndds/QueryCondition.h + Added QueryCondition + + Thu Jul 30 11:18:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/InstanceHandle_t.h + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Topic.cpp + Implemented all get_instance_handle methods + + Thu Jul 30 11:05:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataReader.h + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + Changed InstanceHandle_t to a struct that contains in the case of + RTI DDS an octet[16] and an unsigned long. The DDS spec gives + long as example but it can be vendor dependent. The problem with long + is that it is passed by value, a struct is const&. In case a different + vendor has to be used, change the NativeInstanceHandle_t struct + to contain a long, than all interfaces stay const& + + Thu Jul 30 09:15:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + Added SampleRejectedStatus + + Thu Jul 30 09:03:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h + Added SubscriptionMatchedStatus conversion + + Thu Jul 30 08:16:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/Duration_t.h + * connectors/dds4ccm/impl/ndds/Publisher.cpp + Added DDS_Duration_t conversion + + Wed Jul 29 18:49:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/SampleLostStatus.h + * connectors/dds4ccm/impl/ndds/Topic.cpp + Added SampleLostStatus + + Wed Jul 29 18:16:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/Topic.cpp + * connectors/dds4ccm/impl/ndds/TopicDescription.cpp + * connectors/dds4ccm/impl/ndds/TopicDescription.h + Added TopicDescription + + Wed Jul 29 13:36:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + Port status listener implemented here, not to add that to the ndds + wrapper + + Wed Jul 29 12:58:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Topic.cpp + The RTI_DDSDataReaderListener is now derived from the RTI base + class and is then passed to DDS. DDS then invokes back on this + RTI listener, this then delegates to the CORBA defined IDL + interface + + Tue Jul 28 19:16:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl: + corrected a few types, need to regenerate the E file + + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/Topic.cpp + Implemented another set of methods + + Tue Jul 28 17:06:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener.h + added publisherlistener + + Tue Jul 28 15:30:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/Publisher.cpp + Again some more methods + + Tue Jul 28 15:21:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/Publisher.cpp + Implement some more methods, just the basic ones that don't need + any conversion/wrapping + + Tue Jul 28 15:09:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp + * connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp + Use ndds_namespace_cpp.h so that we get everything in the DDS namespace + + Tue Jul 28 15:00:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataWriter.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.cpp + * connectors/dds4ccm/impl/ndds/DataWriterListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipant.h + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Participant.cpp + * connectors/dds4ccm/impl/ndds/Participant.h + * connectors/dds4ccm/impl/ndds/ParticipantFactory.cpp + * connectors/dds4ccm/impl/ndds/ParticipantFactory.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Topic.h + Added DataWriterListener and added Domain prefix to the participant + files + + Tue Jul 28 14:46:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReader.cpp: + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc: + * connectors/dds4ccm/impl/ndds/ReadCondition.cpp: + * connectors/dds4ccm/impl/ndds/ReadCondition.h: + * connectors/dds4ccm/impl/ndds/StatusCondition.h: + Added ReadCondition + + Tue Jul 28 14:19:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + Use the NDDS wrapper for the listener, that part is now working + again. + + Tue Jul 28 13:25:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderListener.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Publisher.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + Added DDS::DataReaderListener + + Tue Jul 28 13:10:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Participant.cpp + * connectors/dds4ccm/impl/ndds/StatusCondition.cpp + * connectors/dds4ccm/impl/ndds/StatusCondition.h + Added DDS:StatusCondition + + Tue Jul 28 12:26:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Participant.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener.h + Added part of subscriber listener + + Tue Jul 28 12:01:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + Implement a few more methods. We need to convert each time between the RTI DDS + types and the CORBA types. This gets very ugly in the executor itself. This + all should be done in the impl/ndds directory which I now need to extend + + * connectors/dds4ccm/impl/ndds/DataReader.cpp + * connectors/dds4ccm/impl/ndds/DataReader.h + * connectors/dds4ccm/impl/ndds/DataWriter.h + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/NDDS_Traits.h + * connectors/dds4ccm/impl/ndds/Participant.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.cpp + * connectors/dds4ccm/impl/ndds/Subscriber.h + Added some more wrapper interfaces with just a few methods implemented + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + Prefix increment + + Tue Jul 28 08:08:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + The CCM receiver listener component now gets called. + + Mon Jul 27 10:42:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp: + * connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp: + Fixed incorrect comparison + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl: + Fixed issue related to lem generation + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + Added missing library + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + Create an subscribe a listener to see if we get some data from DDS + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + Implemented on_data_available + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + Catch exceptions as const + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h: + configure_dds is a private method + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + Added an ACE_DEBUG to show we send a message + + * connectors/dds4ccm/id3p_test + * connectors/dds4ccm/id3p_test/Multiple_Reader_Ports + * connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p + * connectors/dds4ccm/impl/ndds/Participant.cpp + First start with IDL3+ tests for dds4ccm + + Mon Jul 27 06:58:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/DDS_Receiver + * connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc + * connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp + * connectors/dds4ccm/examples/Hello/DDS_Sender + * connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc + * connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp + Receiver and sender to send plain strings as addition to the CCM based + sender/receiver. These programs use RTI DDS + + Fri Jul 24 19:20:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + More base project fixes + + * connectors/dds4ccm/impl/ndds/Utils.cpp: + Simplified the conversion of return codes to string + + Fri Jul 24 18:34:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + * connectors/dds4ccm/idl/dds4ccm.mpc + * connectors/dds4ccm/idl/dds_rtf2_dcpsE.idl + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc + * connectors/dds4ccm/impl/ndds/Utils.h + * MPC/config/ciao_dds4ccm_ndds_impl.mpb + Various compile fixes for windows. Added base projects, afters, etc + + Fri Jul 24 12:55:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc: + Fixed link problems + + * connectors/dds4ccm/idl/dds_rtf2_dcpsE.idl: + Include StringSeq.pidl directly + + Fri Jul 24 12:37:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds_rtf2_dcpsE.idl: + Add this file for the moment to the repository + + Fri Jul 24 12:32:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp + Various changes to get the code to compile on windows + + Fri Jul 24 10:49:35 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + * MPC/config/ciao_example_output.mpb + * MPC/config/example_output.mpb + Renamed example_output to ciao_example_output + + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl: + Added include of StringSeq.pidl + + Fri Jul 24 09:18:35 UTC 2009 Johnny Willemsen + + * CIAO_TAO.mwc: + Added connectors directory + + Fri Jul 10 17:13:35 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp: + * connectors/dds4ccm/idl/dds4ccm.mpc: + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl: + + Various compile fixes, link fixes, along with initial implementation of the + sender connector and the sender component. When deployed, the sender connector + will register with DDS, and the sender component will use dds4ccm defined interfaces + to send a series of messages. Currently, this can be tested by using the ndds + Hello_simple example. + + It should be noted that Hello_Sender_ConnectorE.idl IS checked in because it + is hand-modified to remove the CCM_DataWriter interface until such a time + as the support for lem force all can be worked out. + + * connectors/dds4ccm/impl/ndds/DataWriter.h: + * connectors/dds4ccm/impl/ndds/DataWriter.cpp: + * connectors/dds4ccm/impl/ndds/ListenerControl.h: + * connectors/dds4ccm/impl/ndds/ListenerControl.cpp: + * connectors/dds4ccm/impl/ndds/NDDS_Traits.h: + * connectors/dds4ccm/impl/ndds/Participant.h: + * connectors/dds4ccm/impl/ndds/Participant.cpp: + * connectors/dds4ccm/impl/ndds/ParticipantFactory.h: + * connectors/dds4ccm/impl/ndds/ParticipantFactory.cpp: + * connectors/dds4ccm/impl/ndds/Publisher.h: + * connectors/dds4ccm/impl/ndds/Publisher.cpp: + * connectors/dds4ccm/impl/ndds/Topic.h: + * connectors/dds4ccm/impl/ndds/Topic.cpp: + * connectors/dds4ccm/impl/ndds/Utils.h: + * connectors/dds4ccm/impl/ndds/Utils.cpp: + * connectors/dds4ccm/impl/ndds/Writer.h: + * connectors/dds4ccm/impl/ndds/Writer.tpp: + * connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h: + * connectors/dds4ccm/impl/ndds/ndds_impl.mpc: + + Initial implementation of the DataWriter, and a minimum of the IDL-defined + DDS DCPS interfaces as a wrapper facade for RTI DDS as needed to implement + basic writing functionality. + + * connectors/dds4ccm/impl/ndds/ListnerControl.h: + * connectors/dds4ccm/impl/ndds/ListnerControl.cpp: + * connectors/dds4ccm/impl/ndds/Writer.cpp: + + Removed these files. + + Wed Jul 8 17:30:09 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds4ccm.mpc: + Added anytypecode to resolve link problems with msvc + + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl: + Added include of tao sequence file to resolve link problems with mwvc + + Wed Jul 8 15:12:09 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc + Layout + + Wed Jul 8 12:12:59 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + + Change project names to not clash. + + Tue Jul 7 19:14:09 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp: + * connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: + + Components now deploy. + + Tue Jul 7 18:17:19 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + + Added homes. + + Tue Jul 7 18:05:15 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + + Compile/linking problems now taken care of. + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl3: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl3: + + Removed these files. + + Tue Jul 7 00:49:09 UTC 2009 William R. Otte + + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl3: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + + Added missing files. + + * connectors/dds4ccm/idl/dds4ccm.mpc: + + corrected spelling error. + + * connectors/dds4ccm/examples/Hello/Sender/Sender_exec_export.h: + * connectors/dds4ccm/examples/Hello/Sender/Sender_stub_export.h: + * connectors/dds4ccm/examples/Hello/Sender/Sender_svnt_export.h: + + Removed these files. + + Tue Jul 7 00:14:45 UTC 2009 William R. Otte + + * connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Getter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p: + * connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Reader.idl3p: + * connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Updater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Writer.idl3p: + + fixed malformed include guards. + + Tue Jul 7 00:07:13 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl3: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp: + * connectors/dds4ccm/examples/Hello/Sender/Sender_exec_export.h: + * connectors/dds4ccm/examples/Hello/Sender/Sender_stub_export.h: + * connectors/dds4ccm/examples/Hello/Sender/Sender_svnt_export.h: + + Example now compiles, but there is no business logic yet. + There are still missing symbols that I need to ferret out. + + * connectors/dds4ccm/idl/dds4ccm.mpc: + * connectors/dds4ccm/idl/dds4ccm_Base.idl3: + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3: + * connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3: + * connectors/dds4ccm/idl/dds_rtf2_dcps.idl: + + Malformed include guards, and small updates to go with standard. + + * connectors/dds4ccm/examples/Hello/Hello_Base: + * connectors/dds4ccm/examples/Hello/Hello_Base.idl3: + * connectors/dds4ccm/examples/Hello/Hello_Base.idl3p: + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base.idl: + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base.mpc: + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base_skel_export.h: + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base_stub_export.h: + * connectors/dds4ccm/examples/Hello/Hello_Receiver.idl3: + * connectors/dds4ccm/examples/Hello/Hello_Receiver.idl3p: + * connectors/dds4ccm/examples/Hello/Receiver/Receiver.idl: + * connectors/dds4ccm/examples/Hello/Receiver/Receiver.mpc: + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec.h: + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec.cpp: + * connectors/dds4ccm/idl/dds4ccm_ListnerControl.idl3: + + Removed these files. + + Thu Jul 2 01:47:53 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Receiver.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + + Tue Jun 30 19:11:28 UTC 2009 William R. Otte + + * connectors/dds4ccm/idl/dds4ccm.mpc: + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3: + + Added last remanining non-idl3p dds4ccm item into the mpc file. + + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3p: + + Removed this file. + + Tue Jun 30 17:49:49 UTC 2009 William R. Otte + + * connectors/dds4ccm/impl: + * connectors/dds4ccm/impl/ndds: + * connectors/dds4ccm/impl/ndds/ListnerControl.h: + * connectors/dds4ccm/impl/ndds/ListnerControl.cpp: + * connectors/dds4ccm/impl/ndds/PortStatusListener.h: + * connectors/dds4ccm/impl/ndds/PortStatusListener.cpp: + * connectors/dds4ccm/impl/ndds/RawListener.h: + * connectors/dds4ccm/impl/ndds/RawListener.cpp: + * connectors/dds4ccm/impl/ndds/Reader.h: + * connectors/dds4ccm/impl/ndds/Reader.cpp: + * connectors/dds4ccm/impl/ndds/Writer.h: + * connectors/dds4ccm/impl/ndds/Writer.cpp: + + implementation stubs. + + Tue Jun 30 17:39:21 UTC 2009 William R. Otte + + * connectors/dds4ccm/idl/dds4ccm.mpc: + * connectors/dds4ccm/idl/dds4ccm_ListnerControl.idl3: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3: + + Generate/compile idl necessary for hello example. + + * connectors/dds4ccm/idl/dds4ccm_ListnerControl.idl3p: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3p: + + Removed these files. + + Mon Jun 22 09:22:17 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Receiver.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + + Updated base projects + + Fri Jun 19 18:15:10 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p: + Corrected this connector based on OMG issue 13953 + + Thu Jun 18 13:37:02 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + + Compile fixes + + Thu Jun 18 13:34:02 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec.h + + Compile fixes + + Thu Jun 18 13:17:02 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec.h + + Compile fixes + + Thu Jun 18 13:00:05 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + Compile fixes + + Thu Jun 18 09:32:05 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base.idl + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base.mpc + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base_skel_export.h + * connectors/dds4ccm/examples/Hello/Hello_Base/Hello_Base_stub_export.h + * connectors/dds4ccm/examples/Hello/Receiver/Receiver.idl + * connectors/dds4ccm/examples/Hello/Receiver/Receiver.mpc + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec.cpp + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec.h + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_exec_export.h + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_stub_export.h + * connectors/dds4ccm/examples/Hello/Receiver/Receiver_svnt_export.h + Put these under version control. Copy of regular hello world + + Wed Jun 17 18:07:10 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.cidl: + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.cidl: + + Removed these files. + + Wed Jun 17 10:07:19 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc + * connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc + + Zap ciaocidldefaults from the MPC files. Everything has to be rebuild to + sort out the compile/link issues, but at least now cidlc is not used anymore + + Wed Jun 10 18:31:15 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/descriptors: + * connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp: + + First pass at deployment plan. + + Fri Jun 5 20:10:11 UTC 2009 William R. Otte + + * connectors/dds4ccm/examples/Hello/Hello_Base.idl3: + * connectors/dds4ccm/examples/Hello/Hello_Receiver.idl3: + * connectors/dds4ccm/examples/Hello/Hello_Sender.idl3: + + Finished the by-hand translation to idl3. + + Tue Jun 2 03:43:30 UTC 2009 William R. Otte + + * connectors: + * connectors/dds4ccm: + * connectors/dds4ccm/example: + * connectors/dds4ccm/example/Hello: + * connectors/dds4ccm/example/Hello/Hello_Base.idl3: + * connectors/dds4ccm/example/Hello/Hello_Base.idl3p: + * connectors/dds4ccm/example/Hello/Hello_Receiver.idl3: + * connectors/dds4ccm/example/Hello/Hello_Receiver.idl3p: + * connectors/dds4ccm/example/Hello/Hello_Sender.idl3: + * connectors/dds4ccm/example/Hello/Hello_Sender.idl3p: + + Outline of a driving use case for phase 1. Note that the + idl3p files are the IDL3+ for the components/connector, and the + idl3 files are my best guess at the implied IDL3 mapping. + + * connectors/dds4ccm/idl: + * connectors/dds4ccm/idl/dds4ccm_Base.idl3: + * connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Getter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_ListnerControl.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p: + * connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p: + * connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Reader.idl3p: + * connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Updater.idl3p: + * connectors/dds4ccm/idl/dds4ccm_Writer.idl3p: + + DDS4CCM IDL. + + +Mon Aug 3 22:54:37 UTC 2009 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl: + + Set DANCE_ROOT environment variable. + +Wed Jul 29 11:40:12 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Another hpux fix + +Mon Jul 27 12:09:12 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Fixed compile error by invalid character at the top of the file + +Sun Jul 26 07:51:12 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Updated for Sun Studio 12 + +Sat Jul 25 13:05:03 UTC 2009 William R. Otte + + * tests/IDL_Test/Inherited_Component/IhC_Foo.mpc: + + Add -Gex. + +Fri Jul 24 11:26:23 UTC 2009 William R. Otte + + * tests/IDL_Test/Inherited_Component/IhC_Bar.mpc: + + Disabled this test until its fixed. + +Fri Jul 24 10:59:12 UTC 2009 Johnny Willemsen + + * tests/IDL_Test/PIDL_Include/PIDLInclude.idl: + * tests/IDL_Test/PIDL_Include/PIDLInclude.mpc: + New test to reproduce a problem when including pidl files + +Thu Jul 23 16:26:17 UTC 2009 William R. Otte + + * tests/IDL_Test/Inherited_Component: + * tests/IDL_Test/Inherited_Component/IhC_Bar.idl: + * tests/IDL_Test/Inherited_Component/IhC_Bar.mpc: + * tests/IDL_Test/Inherited_Component/IhC_Foo.idl: + * tests/IDL_Test/Inherited_Component/IhC_Foo.mpc: + + Test which demonstrates an inability to generate code properly + for inherited components. + +Thu Jul 23 17:48:12 UTC 2009 Johnny Willemsen + + * NEWS: + Updated for next release + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + Compile fixes for HPUX + +Thu Jul 23 02:11:02 CDT 2009 Johnny Willemsen + + * CIAO version 0.7.2 released. + +Wed Jul 22 08:06:47 UTC 2009 Johnny Willemsen + + * bin/ciao_tests.lst: + NodeManager-Deployments is known to fail + +Tue Jul 21 17:38:47 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/Dump_Obj.cpp: + * tools/Config_Handlers/Dump_Obj.h: + Moved include to header file to fix compile errors with CB2009 + +Tue Jul 21 13:48:47 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Backported some CB2009 fixes + +Tue Jul 21 10:51:47 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Fixed compile error on HPUX + +Tue Jul 21 02:23:41 UTC 2009 William R. Otte + + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + + Avoids minimum corba. + +Tue Jul 21 01:43:50 UTC 2009 William R. Otte + + * tests/IDL3/ImpliedIDL/All/all.mpc: + + Disabled this on MFC systems due to the fact that it produces + errors in newer VS compilers due to the mixing in of c# language + elements. + +Mon Jul 20 11:16:47 UTC 2009 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Fixed compile error on HPUX + +Mon Jul 20 11:13:53 UTC 2009 Marcel Smit + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + Reverted an unicode change. + +Mon Jul 20 10:55:13 UTC 2009 Marcel Smit + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.h: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeApplication/Name_Utilities.h: + * DAnCE/NodeApplication/Name_Utilities.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Starter/Starter.h: + * DAnCE/Starter/Starter.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/File_Logger_Backend.cpp: + Reverted some unicode changes. + +Mon Jul 20 10:50:47 UTC 2009 Johnny Willemsen + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + Also disabled svnt projects with ace_for_tao + +Mon Jul 20 10:32:47 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Removed old msvc checks + +Mon Jul 20 07:02:47 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + Use bool for rt_support_ and added a default value to the constructor + to resolve problems with older gcc versions + +Sun Jul 19 18:25:47 UTC 2009 Johnny Willemsen + + * DAnCE/Logger/Logger_Service.cpp: + * DAnCE/Logger/Logger_Service.h: + Unicode fixes + +Sun Jul 19 17:22:08 UTC 2009 William R. Otte + + * tests/IDL_Test/Keywords/Keywords.mpc: + + avoids mfc, as building with mfc enabled causes 'interface' + to become a language keyword, where it otherwise would not be. + +Sun Jul 19 09:50:47 UTC 2009 Johnny Willemsen + + * ciao/Servants/Port_Activator_T.cpp: + Layout change + + * ciao/Servants/Servants.mpc: + Port_Activator_T is a template file, not a source file + +Sun Jul 19 09:46:47 UTC 2009 Johnny Willemsen + + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + Layout changes + + * DAnCE/DomainApplication/Domain_Application_Impl.h: + Made startLaunch public + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + Layout, const, datatype changes + + * DAnCE/MPC/config/dance_repositorymanagerbase.mpb: + Added after JAWS + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Layout changes + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + Layout, datatype, const changes + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + Layout changes + + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp: + Corrected messages + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp: + Unicode fix + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + JAWS is added by the base project + + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + Corrected base class + +Sat Jul 18 22:33:47 UTC 2009 William R. Otte + + * DAnCE/Starter/Starter.mpc: + + Temporarily disable this project, there's no way it works properly + at run-time, even if it compiles. We will take another look at this + after 0.7.2. + +Sat Jul 18 17:41:10 UTC 2009 William R. Otte + + * tools/XML/XML_Schema_Resolver.cpp: + + Rolling back changes from + Fri Jul 17 11:50:08 UTC 2009 Marcel Smit + Fri Jul 17 10:26:28 UTC 2009 Marcel Smit + + as they broke all tests involving XMl. + +Sat Jul 18 17:19:49 UTC 2009 William R. Otte + + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + + avoids_ace_for_tao. + +Sat Jul 18 15:56:16 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeManager/NodeManager.mpc: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/Sender/Sender.mpc: + + avoids_ace_for_tao. + +Sat Jul 18 09:34:30 UTC 2009 Marcel Smit + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + Corrected a coding error during last commit. + +Sat Jul 18 09:20:47 UTC 2009 Marcel Smit + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Starter/Starter.h: + * DAnCE/Starter/Starter.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + Fixed UNICODE compiler errors. + +Sat Jul 18 05:12:00 UTC 2009 William R. Otte + + * DAnCE/Logger/Logger_Service.cpp: + + stab at some unicode problems on Windows. + +Sat Jul 18 05:01:32 UTC 2009 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/MPC/config/dance_tm_daemon.mpb: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + + Static linking fixes. + +Sat Jul 18 00:50:20 UTC 2009 William R. Otte + + * DAnCE/Deployment/CIAO_Interfaces.mpc: + + linker fixes. + + * examples/Hello/Receiver/Receiver.mpc: + + this mpc specified more than was generated, causing it to be + re-run. + +Fri Jul 17 21:18:11 UTC 2009 William R. Otte + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + + Disabled this. there's lots wrong with it. + +Fri Jul 17 18:06:48 UTC 2009 William R. Otte + + * DAnCE/DomainApplication/DomainApplication.mpc: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + + Linking fixes for Windows. + + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/Deployment.hpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/XMI.hpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/XMLSchema/id_map.hpp: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/ccd.hpp: + * tools/Config_Handlers/cdd.hpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/iad.hpp: + * tools/Config_Handlers/pcd.hpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.cpp: + * tools/Config_Handlers/toplevel.hpp: + + Updated generated code to 1) update to latest version of XSC, + 2) resolve unicode errors in the generator. + +Fri Jul 17 14:41:29 UTC 2009 Marcel Smit + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeApplication/Name_Utilities.h: + * DAnCE/NodeApplication/Name_Utilities.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + Resolved some unicode compiler errors. + +Fri Jul 17 13:35:03 UTC 2009 Marcel Smit + + * ciao/Logger/File_Logger_Backend.h: + Resolved UNICODE compiler errors. + +Fri Jul 17 12:48:09 UTC 2009 Marcel Smit + + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cpd.cpp: + Resolved UNICODE compiler errors. + +Fri Jul 17 12:09:55 UTC 2009 Marcel Smit + + * tools/Config_Handlers/XMI.cpp: + Resolved UNICODE compiler errors. + +Fri Jul 17 11:50:08 UTC 2009 Marcel Smit + + * ciao/Containers/Session/Session_Container.cpp: + * tools/XML/XML_Schema_Resolver.cpp: + Resolved UNICODE compiler errors. + +Fri Jul 17 10:26:28 UTC 2009 Marcel Smit + + * tools/XML/XML_Schema_Resolver.cpp: + Resolved UNICODE compiler errors. + +Fri Jul 17 07:06:08 UTC 2009 Marcel Smit + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.h: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * ciao/Logger/File_Logger_Backend.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + Resolved UNICODE compiler errors. + + * docs/tutorials/Quoter/Simple/02.html: + Removed reference toe CIDL. + +Wed Jul 15 15:51:36 UTC 2009 William R. Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/XSCRT/XML.hpp: + + Compile warning fixes. + +Wed Jul 15 14:20:19 UTC 2009 Johnny Willemsen + + * examples/Hello/Sender/starter.cpp: + Fixed wchar problem + +Wed Jul 15 13:17:19 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/DAnCE_Core.mpc: + Fixed build orders + +Tue Jul 14 20:34:19 UTC 2009 Johnny Willemsen + + * MPC/config/viao_vcwarnings.mpb: + Added vc10 + +Tue Jul 14 20:31:19 UTC 2009 Johnny Willemsen + + * MPC/config/dance_plan_launcher_base.mpc: + * DAnCE/MPC/config/dance_plan_launcher_base.mpb: + Moved to DAnCE and corrected extension + +Tue Jul 14 20:14:19 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/MPC/config/dance_domainapplicationmanager_skel.mpb + * DAnCE/MPC/config/dance_domainapplicationmanager_stub.mpb + * DAnCE/MPC/config/dance_nodeapplicationmanager_skel.mpb + * DAnCE/MPC/config/dance_nodeapplicationmanager_stub.mpb + Shortened some project names to fix fuzz errors + +Tue Jul 14 17:56:19 UTC 2009 Marcel Smit + + * ciao/Logger/File_Logger_Backend.cpp: + + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp: + +Tue Jul 14 14:24:08 UTC 2009 Marcel Smit + + * DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl: + * DAnCE/Deployment/CIAO_NodeManagerDaemon.idl: + * DAnCE/MPC/config/dance_targetmanager.mpb: + * DAnCE/RepositoryManager/repository_manager_admin.h: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + * DAnCE/TargetManager/TargetManager.idl: + * MPC/config/ciao_connector_base.mpb: + * MPC/config/connectoridldefaults.mpb: + * MPC/config/dds4ccm_base.mpb: + * MPC/config/dds4ccm_skel.mpb: + * MPC/config/example_output.mpb: + * tests/IDL_Test/Keywords/Keyword_Clash.idl: + * tools/Config_Handlers/PL_Handler.h: + * tools/Config_Handlers/PL_Handler.cpp: + Resolved Fuzz errors. + +Tue Jul 14 11:11:57 UTC 2009 William R. Otte + + * .: + * CIAO-INSTALL.html: + * CIAO.mwc: + * CIAO_DAnCE.mwc: + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + * COPYING: + * DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl: + * DAnCE/Deployment/CIAO_Interfaces.mpc: + * DAnCE/Deployment/CIAO_NodeManagerDaemon.idl: + * DAnCE/Deployment/DAnCE_Core.mpc: + * DAnCE/Deployment/Deployment.idl: + * DAnCE/Deployment/Deployment_Application.idl: + * DAnCE/Deployment/Deployment_ApplicationManager.idl: + * DAnCE/Deployment/Deployment_Connection.idl: + * DAnCE/Deployment/Deployment_Data.idl: + * DAnCE/Deployment/Deployment_DeploymentPlan.idl: + * DAnCE/Deployment/Deployment_DomainApplication.idl: + * DAnCE/Deployment/Deployment_DomainApplicationManager.idl: + * DAnCE/Deployment/Deployment_ExecutionManager.idl: + * DAnCE/Deployment/Deployment_NodeApplication.idl: + * DAnCE/Deployment/Deployment_NodeApplicationManager.idl: + * DAnCE/Deployment/Deployment_NodeManager.idl: + * DAnCE/Deployment/Deployment_Packaging_Data.idl: + * DAnCE/Deployment/Deployment_PlanError.idl: + * DAnCE/Deployment/Deployment_StartError.idl: + * DAnCE/Deployment/Deployment_StopError.idl: + * DAnCE/Deployment/Deployment_TargetManager.idl: + * DAnCE/Deployment/Module_Main.h: + * DAnCE/DomainApplication/DomainApplication.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/Logger/File_Logger_Backend.cpp: + * DAnCE/Logger/Logger.mpc: + * DAnCE/Logger/Logger_Service.cpp: + * DAnCE/MPC: + * DAnCE/MPC/config: + * DAnCE/MPC/config/ciao_executionmanager_skel.mpb: + * DAnCE/MPC/config/ciao_executionmanager_stub.mpb: + * DAnCE/MPC/config/ciao_nodeapplication.mpb: + * DAnCE/MPC/config/ciao_nodeapplicationmanager.mpb: + * DAnCE/MPC/config/ciao_nodemanager_skel.mpb: + * DAnCE/MPC/config/ciao_nodemanager_stub.mpb: + * DAnCE/MPC/config/ciao_plan_generator.mpb: + * DAnCE/MPC/config/ciao_targetmanager_stub.mpb: + * DAnCE/MPC/config/ciao_targetmanager_svnt.mpb: + * DAnCE/MPC/config/dance.mpb: + * DAnCE/MPC/config/dance_cdmw_idl.mpb: + * DAnCE/MPC/config/dance_component_server.mpb: + * DAnCE/MPC/config/dance_component_server_svnt.mpb: + * DAnCE/MPC/config/dance_deployment_stub.mpb: + * DAnCE/MPC/config/dance_deployment_svnt.mpb: + * DAnCE/MPC/config/dance_domainapplication.mpb: + * DAnCE/MPC/config/dance_domainapplication_skel.mpb: + * DAnCE/MPC/config/dance_domainapplication_stub.mpb: + * DAnCE/MPC/config/dance_domainapplicationmanager.mpb: + * DAnCE/MPC/config/dance_domainapplicationmanager_skel.mpb: + * DAnCE/MPC/config/dance_domainapplicationmanager_stub.mpb: + * DAnCE/MPC/config/dance_exe.mpb: + * DAnCE/MPC/config/dance_executionmanager_skel.mpb: + * DAnCE/MPC/config/dance_executionmanager_stub.mpb: + * DAnCE/MPC/config/dance_extension_stub.mpb: + * DAnCE/MPC/config/dance_lib.mpb: + * DAnCE/MPC/config/dance_logger.mpb: + * DAnCE/MPC/config/dance_mocks.mpb: + * DAnCE/MPC/config/dance_nodeapplication.mpb: + * DAnCE/MPC/config/dance_nodeapplication_skel.mpb: + * DAnCE/MPC/config/dance_nodeapplication_stub.mpb: + * DAnCE/MPC/config/dance_nodeapplicationmanager.mpb: + * DAnCE/MPC/config/dance_nodeapplicationmanager_skel.mpb: + * DAnCE/MPC/config/dance_nodeapplicationmanager_stub.mpb: + * DAnCE/MPC/config/dance_nodemanager.mpb: + * DAnCE/MPC/config/dance_nodemanager_skel.mpb: + * DAnCE/MPC/config/dance_nodemanager_stub.mpb: + * DAnCE/MPC/config/dance_nodemanager_svnt.mpb: + * DAnCE/MPC/config/dance_plan_generator.mpb: + * DAnCE/MPC/config/dance_redirectionservice.mpb: + * DAnCE/MPC/config/dance_repositorymanager.mpb: + * DAnCE/MPC/config/dance_repositorymanager_skel.mpb: + * DAnCE/MPC/config/dance_repositorymanager_stub.mpb: + * DAnCE/MPC/config/dance_repositorymanagerbase.mpb: + * DAnCE/MPC/config/dance_targetmanager.mpb: + * DAnCE/MPC/config/dance_targetmanager_skel.mpb: + * DAnCE/MPC/config/dance_targetmanager_stub.mpb: + * DAnCE/MPC/config/dance_utils.mpb: + * DAnCE/NodeApplication/ComponentAttributesSetter.h: + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Generator/PCVisitorBase.h: + * DAnCE/Plan_Generator/Plan_Generator.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.h: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + * DAnCE/Plan_Launcher/launcher.cpp: + * DAnCE/RepositoryManager: + * DAnCE/RepositoryManager/PC_Updater.h: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Admin_Export.h: + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + * DAnCE/RepositoryManager/repository_manager_admin.h: + * DAnCE/RepositoryManager/repository_manager_admin.cpp: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DAnCE_TargetManagerDaemon.idl: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/ResourceCommitmentManager.h: + * DAnCE/TargetManager/ResourceCommitmentManager.cpp: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.idl: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManager_Impl.h: + * DAnCE/TargetManager/TargetManager_Impl.cpp: + * DAnCE/TargetManager/TargetManager_Impl_export.h: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + * DAnCE/TargetManager/Target_Manager_Exec.cpp: + * DAnCE/TargetManager/Target_Manager_Module.h: + * DAnCE/TargetManager/Target_Manager_Module.cpp: + * DAnCE/TargetManager/Target_Manager_Module_export.h: + * DAnCE/Utils/Plan_Handler.h: + * DAnCE/tests/CIAO/Components/ProcessColocation.idl: + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc: + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleNull.mpc: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc: + * DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc: + * DAnCE/tests/NodeApplicationManager-NodeApplication/NAM_NA.mpc: + * DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc: + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + * MPC: + * MPC/config/ciao_connector_base.mpb: + * MPC/config/ciao_servant.mpb: + * MPC/config/ciao_server.mpb: + * MPC/config/ciaoidldefaults.mpb: + * MPC/config/componentidldefaults.mpb: + * MPC/config/connectoridldefaults.mpb: + * MPC/config/dds4ccm_base.mpb: + * MPC/config/dds4ccm_skel.mpb: + * MPC/config/example_output.mpb: + * NEWS: + * bin: + * bin/ciao_tests.lst: + * bin/generate_component_mpc.pl: + * bin/update_package.py: + * ccm/CCM.mpc: + * ccm/CCM_Configurator.idl: + * ccm/CCM_Cookie.idl: + * ccm/CCM_Enumeration.idl: + * ccm/CCM_EventBase.idl: + * ccm/CCM_EventConsumerBase.idl: + * ccm/CCM_Events.idl: + * ccm/CCM_Exceptions.idl: + * ccm/CCM_Home.idl: + * ccm/CCM_HomeConfiguration.idl: + * ccm/CCM_HomeFinder.idl: + * ccm/CCM_Homes.idl: + * ccm/CCM_KeylessCCMHome.idl: + * ccm/CCM_Navigation.idl: + * ccm/CCM_Object.idl: + * ccm/CCM_Receptacle.idl: + * ccm/CCM_StandardConfigurator.idl: + * ccm/ComponentServer/CCM_ComponentServer.idl: + * ccm/ComponentServer/CCM_ComponentServer.mpc: + * ccm/ComponentServer/CCM_ComponentServer_Base.idl: + * ccm/ComponentServer/CCM_ComponentServer_Client.idl: + * ciao: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Servants/Servant_Impl_Utils_T.cpp: + * docs: + * docs/OMG-CCM-Tutorial.ppt: + * docs/TODO.html: + * docs/generate_component_mpc.html: + * docs/index.html: + * docs/schema/06-04-02.xsd: + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/cdp.xsd: + * docs/schema/cid.xsd: + * docs/schema/cpd.xsd: + * docs/schema/toplevel.xsd: + * docs/schema/unused_06-04-02.xsd: + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + * docs/tutorials/Quoter/Simple/Model/Quoter.xme: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + * docs/tutorials/Quoter/Simple/descriptors/Domain.cdd: + * docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat: + * docs/tutorials/Quoter/Simple/descriptors/Plan.cdp: + * docs/tutorials/Quoter/Simple/images/fig10.jpg: + * docs/tutorials/Quoter/Simple/images/fig11.jpg: + * docs/tutorials/Quoter/Simple/images/fig12.jpg: + * docs/tutorials/Quoter/Simple/images/fig2.jpg: + * docs/tutorials/Quoter/Simple/images/fig3.jpg: + * docs/tutorials/Quoter/Simple/images/fig4.jpg: + * docs/tutorials/Quoter/Simple/images/fig5.jpg: + * docs/tutorials/Quoter/Simple/images/fig5a.jpg: + * docs/tutorials/Quoter/Simple/images/fig6.jpg: + * docs/tutorials/Quoter/Simple/images/fig7.jpg: + * docs/tutorials/Quoter/Simple/images/fig8.jpg: + * docs/tutorials/Quoter/Simple/images/fig9.jpg: + * docs/value_factory_registration.html: + * etc/ciao.doxygen: + * etc/ciao_DAnCE.doxygen: + * etc/ciao_config_handlers.doxygen: + * examples: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMDevice/BMDevice.idl: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDisplay/BMDisplay.idl: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BMDisplay/BMDisplay_exec.h: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BasicSP_exec.h: + * examples/BasicSP/EC/EC.idl: + * examples/BasicSP/EC/EC.mpc: + * examples/BasicSP/EC/EC_exec.h: + * examples/DevGuideExamples: + * examples/DevGuideExamples/Messenger/Administrator.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.h: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * examples/DevGuideExamples/Messenger/History_exec_i.h: + * examples/DevGuideExamples/Messenger/History_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.h: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Publication_exec_i.h: + * examples/DevGuideExamples/Messenger/Publication_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Receiver.mpc: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.h: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Runnable_exec_i.h: + * examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/GPS/GPS_exec.h: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Display/NavDisplay/NavDisplay_exec.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/Display/RateGen/RateGen.mpc: + * examples/Display/RateGen/RateGen_exec.h: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Sender/Sender.idl: + * examples/Hello/Sender/Sender.mpc: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/descriptors/Aliased_Map.dat: + * examples/Hello/descriptors/DeploymentPlan_without_ns.cdp: + * examples/Hello/descriptors/run_NodeDaemons.pl: + * examples/Hello/descriptors/run_test.pl: + * examples/Hello/descriptors/run_test_alias.pl: + * examples/Hello/descriptors/run_test_without_ns.pl: + * examples/Hello/step-by-step.html: + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/Null_Component_exec.h: + * examples/Null_Component/Null_Component_exec.cpp: + * examples/Null_Component/Null_Interface.mpc: + * examples/Null_Component/descriptors/run_test.pl: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Sender/Sender.mpc: + * performance-tests: + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + * performance-tests/Protocols/Controller/Controller.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/Receiver/Receiver_exec.h: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Protocols/Sender/Sender_exec.h: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/Protocols/common/Protocols.mpc: + * rules.ciao.GNU: + * tests: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + * tests/Bug_2130_Regression/interfaces/ENW.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp: + * tests/CIDL/CodeGen/Basic.idl: + * tests/CIDL/CodeGen/Basic.mpc: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/IDL_Test: + * tests/IDL_Test/Cornucopia: + * tests/IDL_Test/Cornucopia/Cornucopia.idl: + * tests/IDL_Test/Cornucopia/Cornucopia.mpc: + * tests/IDL_Test/Cornucopia/README: + * tests/IDL_Test/Included_Component: + * tests/IDL_Test/Included_Component/IC_Bar.idl: + * tests/IDL_Test/Included_Component/IC_Bar.mpc: + * tests/IDL_Test/Included_Component/IC_Foo.idl: + * tests/IDL_Test/Included_Component/IC_Foo.mpc: + * tests/IDL_Test/Keywords: + * tests/IDL_Test/Keywords/Keyword_Clash.idl: + * tests/IDL_Test/Keywords/Keywords.mpc: + * tests/IDL_Test/Lem_Specific_Export: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export.idl: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.h: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.cpp: + * tests/IDL_Test/Reused_Facet_Interface: + * tests/IDL_Test/Reused_Facet_Interface/Basic.idl: + * tests/IDL_Test/Reused_Facet_Interface/Basic.mpc: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.idl: + * tests/IDL_Test/Reused_Facet_Interface/README: + * tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc: + * tests/Minimum/Minimum_Base/Minimum_Base.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + * tests/Minimum/Receiver/Receiver_exec.h: + * tests/Minimum/Receiver/Receiver_exec.cpp: + * tests/Minimum/Sender/Sender.mpc: + * tests/Minimum/Sender/Sender_exec.h: + * tests/Minimum/Sender/Sender_exec.cpp: + * tools: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/DataType_Handler.cpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/DnC_Dump.h: + * tools/Config_Handlers/Dump_Obj.h: + * tools/Config_Handlers/Dump_Obj.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp: + * tools/Config_Handlers/PL_Handler.h: + * tools/Config_Handlers/PL_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + * tools/Config_Handlers/Req_Handler.cpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/Config_Handlers/toplevel.cpp: + * tools/XML/XML_Helper.tpp: + * CCF: + * CCF/Bootstrap.rules: + * CCF/CCF: + * CCF/CCF/CIDL: + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CIDL/LexicalAnalyzer.cpp: + * CCF/CCF/CIDL/LexicalAnalyzer.hpp: + * CCF/CCF/CIDL/Parser.cpp: + * CCF/CCF/CIDL/Parser.hpp: + * CCF/CCF/CIDL/SemanticAction: + * CCF/CCF/CIDL/SemanticAction.hpp: + * CCF/CCF/CIDL/SemanticAction/Composition.hpp: + * CCF/CCF/CIDL/SemanticAction/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Elements.hpp: + * CCF/CCF/CIDL/SemanticAction/Factory.hpp: + * CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl: + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp: + * CCF/CCF/CIDL/SemanticGraph: + * CCF/CCF/CIDL/SemanticGraph.hpp: + * CCF/CCF/CIDL/SemanticGraph/Composition.hpp: + * CCF/CCF/CIDL/SemanticGraph/Composition.cpp: + * CCF/CCF/CIDL/SemanticGraph/Elements.hpp: + * CCF/CCF/CIDL/SemanticGraph/Elements.cpp: + * CCF/CCF/CIDL/SemanticGraph/Executor.hpp: + * CCF/CCF/CIDL/SemanticGraph/Executor.cpp: + * CCF/CCF/CIDL/Token.hpp: + * CCF/CCF/CIDL/Traversal: + * CCF/CCF/CIDL/Traversal.hpp: + * CCF/CCF/CIDL/Traversal/Composition.hpp: + * CCF/CCF/CIDL/Traversal/Composition.tpp: + * CCF/CCF/CIDL/Traversal/Elements.hpp: + * CCF/CCF/CIDL/Traversal/Executor.hpp: + * CCF/CCF/CIDL/Traversal/Executor.cpp: + * CCF/CCF/CodeGenerationKit: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/CodeGenerationKit/CommandLine.hpp: + * CCF/CCF/CodeGenerationKit/CommandLine.cpp: + * CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineParser.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp: + * CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp: + * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp: + * CCF/CCF/CodeGenerationKit/IndentationIDL.hpp: + * CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp: + * CCF/CCF/CodeGenerationKit/IndentationJava.hpp: + * CCF/CCF/CodeGenerationKit/IndentationXML.hpp: + * CCF/CCF/CodeGenerationKit/Regex.hpp: + * CCF/CCF/CompilerElements: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/CompilerElements/Context.hpp: + * CCF/CCF/CompilerElements/Diagnostic.hpp: + * CCF/CCF/CompilerElements/ExH.hpp: + * CCF/CCF/CompilerElements/FileSystem.hpp: + * CCF/CCF/CompilerElements/Introspection.hpp: + * CCF/CCF/CompilerElements/Introspection.cpp: + * CCF/CCF/CompilerElements/Preprocessor.cpp: + * CCF/CCF/CompilerElements/Preprocessor.hpp: + * CCF/CCF/CompilerElements/PreprocessorToken.hpp: + * CCF/CCF/CompilerElements/PreprocessorToken.cpp: + * CCF/CCF/CompilerElements/ReferenceCounting.hpp: + * CCF/CCF/CompilerElements/TokenStream.hpp: + * CCF/CCF/IDL2: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/Parsing: + * CCF/CCF/IDL2/Parsing/Action.hpp: + * CCF/CCF/IDL2/Parsing/Elements.hpp: + * CCF/CCF/IDL2/Parsing/Recovery.hpp: + * CCF/CCF/IDL2/SemanticAction: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticAction/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Const.hpp: + * CCF/CCF/IDL2/SemanticAction/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Exception.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp: + * CCF/CCF/IDL2/SemanticAction/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Interface.hpp: + * CCF/CCF/IDL2/SemanticAction/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Module.hpp: + * CCF/CCF/IDL2/SemanticAction/Native.hpp: + * CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp: + * CCF/CCF/IDL2/SemanticAction/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Struct.hpp: + * CCF/CCF/IDL2/SemanticAction/TypeId.hpp: + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Union.hpp: + * CCF/CCF/IDL2/SemanticAction/ValueType.hpp: + * CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp: + * CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp: + * CCF/CCF/IDL2/SemanticGraph: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/SemanticGraph/Array.hpp: + * CCF/CCF/IDL2/SemanticGraph/Array.cpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.tpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Enum.hpp: + * CCF/CCF/IDL2/SemanticGraph/Enum.cpp: + * CCF/CCF/IDL2/SemanticGraph/Exception.cpp: + * CCF/CCF/IDL2/SemanticGraph/Exception.hpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.m4: + * CCF/CCF/IDL2/SemanticGraph/Graph.hpp: + * CCF/CCF/IDL2/SemanticGraph/Graph.tpp: + * CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp: + * CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.cpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.hpp: + * CCF/CCF/IDL2/SemanticGraph/Literals.hpp: + * CCF/CCF/IDL2/SemanticGraph/Literals.cpp: + * CCF/CCF/IDL2/SemanticGraph/Member.hpp: + * CCF/CCF/IDL2/SemanticGraph/Member.cpp: + * CCF/CCF/IDL2/SemanticGraph/Module.cpp: + * CCF/CCF/IDL2/SemanticGraph/Module.hpp: + * CCF/CCF/IDL2/SemanticGraph/Name.hpp: + * CCF/CCF/IDL2/SemanticGraph/Name.cpp: + * CCF/CCF/IDL2/SemanticGraph/Native.cpp: + * CCF/CCF/IDL2/SemanticGraph/Native.hpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.hpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.cpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp: + * CCF/CCF/IDL2/SemanticGraph/String.cpp: + * CCF/CCF/IDL2/SemanticGraph/String.hpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.cpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.hpp: + * CCF/CCF/IDL2/SemanticGraph/Translation.hpp: + * CCF/CCF/IDL2/SemanticGraph/Translation.ipp: + * CCF/CCF/IDL2/SemanticGraph/Translation.cpp: + * CCF/CCF/IDL2/SemanticGraph/TypeId.hpp: + * CCF/CCF/IDL2/SemanticGraph/TypeId.cpp: + * CCF/CCF/IDL2/SemanticGraph/Union.hpp: + * CCF/CCF/IDL2/SemanticGraph/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp: + * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp: + * CCF/CCF/IDL2/Token.cpp: + * CCF/CCF/IDL2/Token.hpp: + * CCF/CCF/IDL2/Traversal: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/Traversal/Array.hpp: + * CCF/CCF/IDL2/Traversal/Array.cpp: + * CCF/CCF/IDL2/Traversal/Attribute.hpp: + * CCF/CCF/IDL2/Traversal/Attribute.cpp: + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CCF/CCF/IDL2/Traversal/Elements.tpp: + * CCF/CCF/IDL2/Traversal/Elements.cpp: + * CCF/CCF/IDL2/Traversal/Enum.hpp: + * CCF/CCF/IDL2/Traversal/Enum.cpp: + * CCF/CCF/IDL2/Traversal/Exception.cpp: + * CCF/CCF/IDL2/Traversal/Exception.hpp: + * CCF/CCF/IDL2/Traversal/Fundamental.hpp: + * CCF/CCF/IDL2/Traversal/Fundamental.cpp: + * CCF/CCF/IDL2/Traversal/IntExpression.hpp: + * CCF/CCF/IDL2/Traversal/Interface.hpp: + * CCF/CCF/IDL2/Traversal/Interface.tpp: + * CCF/CCF/IDL2/Traversal/Interface.cpp: + * CCF/CCF/IDL2/Traversal/Member.cpp: + * CCF/CCF/IDL2/Traversal/Member.hpp: + * CCF/CCF/IDL2/Traversal/Module.cpp: + * CCF/CCF/IDL2/Traversal/Module.hpp: + * CCF/CCF/IDL2/Traversal/Native.cpp: + * CCF/CCF/IDL2/Traversal/Native.hpp: + * CCF/CCF/IDL2/Traversal/Operation.hpp: + * CCF/CCF/IDL2/Traversal/Operation.tpp: + * CCF/CCF/IDL2/Traversal/Operation.cpp: + * CCF/CCF/IDL2/Traversal/Sequence.hpp: + * CCF/CCF/IDL2/Traversal/Sequence.cpp: + * CCF/CCF/IDL2/Traversal/String.cpp: + * CCF/CCF/IDL2/Traversal/String.hpp: + * CCF/CCF/IDL2/Traversal/Struct.cpp: + * CCF/CCF/IDL2/Traversal/Struct.hpp: + * CCF/CCF/IDL2/Traversal/Translation.hpp: + * CCF/CCF/IDL2/Traversal/Translation.cpp: + * CCF/CCF/IDL2/Traversal/TypeId.hpp: + * CCF/CCF/IDL2/Traversal/TypeId.cpp: + * CCF/CCF/IDL2/Traversal/Union.hpp: + * CCF/CCF/IDL2/Traversal/Union.cpp: + * CCF/CCF/IDL2/Traversal/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/ValueType.cpp: + * CCF/CCF/IDL2/Traversal/ValueType.tpp: + * CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp: + * CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp: + * CCF/CCF/IDL3: + * CCF/CCF/IDL3/IDL3.mpc: + * CCF/CCF/IDL3/LexicalAnalyzer.hpp: + * CCF/CCF/IDL3/LexicalAnalyzer.cpp: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/IDL3/Parser.hpp: + * CCF/CCF/IDL3/SemanticAction: + * CCF/CCF/IDL3/SemanticAction.hpp: + * CCF/CCF/IDL3/SemanticAction/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/Consumes.hpp: + * CCF/CCF/IDL3/SemanticAction/Elements.hpp: + * CCF/CCF/IDL3/SemanticAction/Emits.hpp: + * CCF/CCF/IDL3/SemanticAction/EventType.hpp: + * CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Home.hpp: + * CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp: + * CCF/CCF/IDL3/SemanticAction/Provides.hpp: + * CCF/CCF/IDL3/SemanticAction/Publishes.hpp: + * CCF/CCF/IDL3/SemanticAction/Uses.hpp: + * CCF/CCF/IDL3/SemanticGraph: + * CCF/CCF/IDL3/SemanticGraph.hpp: + * CCF/CCF/IDL3/SemanticGraph/Component.hpp: + * CCF/CCF/IDL3/SemanticGraph/Component.cpp: + * CCF/CCF/IDL3/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL3/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.hpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.cpp: + * CCF/CCF/IDL3/SemanticGraph/Home.cpp: + * CCF/CCF/IDL3/SemanticGraph/Home.hpp: + * CCF/CCF/IDL3/Token.hpp: + * CCF/CCF/IDL3/Traversal: + * CCF/CCF/IDL3/Traversal.hpp: + * CCF/CCF/IDL3/Traversal/Component.hpp: + * CCF/CCF/IDL3/Traversal/Component.tpp: + * CCF/CCF/IDL3/Traversal/Component.cpp: + * CCF/CCF/IDL3/Traversal/Elements.hpp: + * CCF/CCF/IDL3/Traversal/EventType.hpp: + * CCF/CCF/IDL3/Traversal/EventType.tpp: + * CCF/CCF/IDL3/Traversal/Home.hpp: + * CCF/CCF/IDL3/Traversal/Home.cpp: + * CCF/Config.rules: + * CCF/Documentation: + * CCF/Documentation/Build.html: + * CCF/Documentation/DesignNotes: + * CCF/Documentation/TODO: + * CCF/Example: + * CCF/Example/CIDL: + * CCF/Example/CIDL/LocalExecutorMapping: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/test-0.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig: + * CCF/Example/CIDL/LocalExecutorMapping/test-1.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig: + * CCF/Example/CIDL/LocalExecutorMapping/test-2.cidl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + * CCF/Example/CodeGenerationKit: + * CCF/Example/CodeGenerationKit/Indentation: + * CCF/Example/CodeGenerationKit/Indentation/IDL: + * CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp: + * CCF/Example/CodeGenerationKit/Indentation/XML: + * CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp: + * CCF/Example/ComponentDeploymentDescriptor: + * CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp: + * CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.cpp: + * CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp: + * CCF/Example/ComponentDeploymentDescriptor/Traversal.cpp: + * CCF/Example/ComponentDeploymentDescriptor/cdd.cpp: + * CCF/Example/IDL2: + * CCF/Example/IDL2/CxxMapping: + * CCF/Example/IDL2/CxxMapping/Generator.cpp: + * CCF/Example/IDL2/CxxMapping/Generator.hpp: + * CCF/Example/IDL2/CxxMapping/GeneratorImpl.hpp: + * CCF/Example/IDL2/CxxMapping/driver.cpp: + * CCF/Example/IDL2/CxxMapping/test.idl: + * CCF/Test: + * CCF/Test/CIDL: + * CCF/Test/CIDL/Compiler: + * CCF/Test/CIDL/Compiler/Generator.cpp: + * CCF/Test/CIDL/Compiler/Generator.hpp: + * CCF/Test/CIDL/Compiler/GeneratorImpl.hpp: + * CCF/Test/CIDL/Compiler/driver.cpp: + * CCF/Test/CIDL/Compiler/result.cidl.orig: + * CCF/Test/CIDL/Compiler/test.cidl: + * CCF/Test/CompilerElements: + * CCF/Test/CompilerElements/CPP: + * CCF/Test/CompilerElements/CPP/driver.cpp: + * CCF/Test/IDL2: + * CCF/Test/IDL2/Compiler: + * CCF/Test/IDL2/Compiler/driver.cpp: + * CCF/Test/IDL2/Compiler/result.idl.orig: + * CCF/Test/IDL2/Compiler/test.idl: + * CCF/Test/IDL2/LexicalAnalyzer: + * CCF/Test/IDL2/LexicalAnalyzer/Coverage.idl: + * CCF/Test/IDL2/Parser: + * CCF/Test/IDL2/Parser/Recovery: + * CCF/Test/IDL2/Parser/Recovery/interface.idl: + * CCF/Test/IDL2/Parser/Recovery/module.idl: + * CCF/Test/IDL2/SemanticGraph: + * CCF/Test/IDL2/SemanticGraph/HandBuilt: + * CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp: + * CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.hpp: + * CCF/Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp: + * CCF/Test/IDL2/Traversal: + * CCF/Test/IDL2/Traversal/Recreate: + * CCF/Test/IDL2/Traversal/Recreate/Generator.cpp: + * CCF/Test/IDL2/Traversal/Recreate/Generator.hpp: + * CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp: + * CCF/Test/IDL2/Traversal/Recreate/recreate.cpp: + * CCF/Test/IDL3: + * CCF/Test/IDL3/Compiler: + * CCF/Test/IDL3/Compiler/Generator.hpp: + * CCF/Test/IDL3/Compiler/Generator.cpp: + * CCF/Test/IDL3/Compiler/GeneratorImpl.hpp: + * CCF/Test/IDL3/Compiler/driver.cpp: + * CCF/Test/IDL3/Compiler/result.idl.orig: + * CCF/Test/IDL3/Compiler/test.idl: + * CCF/Version: + * CIDLC: + * CIDLC/AttributeHeaderEmitters.hpp: + * CIDLC/AttributeHeaderEmitters.cpp: + * CIDLC/AttributeSourceEmitters_T.hpp: + * CIDLC/CIDLC.mpc: + * CIDLC/CIDLC.mwc: + * CIDLC/Collectors.hpp: + * CIDLC/CompositionEmitter.cpp: + * CIDLC/CompositionEmitter.hpp: + * CIDLC/CorbaTypeNameEmitters.cpp: + * CIDLC/CorbaTypeNameEmitters.hpp: + * CIDLC/CxxNamePrinter.hpp: + * CIDLC/CxxNamePrinter.cpp: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/DescriptorGenerator.hpp: + * CIDLC/EmitterBase.cpp: + * CIDLC/EmitterBase.hpp: + * CIDLC/EmitterContext.hpp: + * CIDLC/EmitterContext.cpp: + * CIDLC/ExecImplGenerator.hpp: + * CIDLC/ExecImplGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.hpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.hpp: + * CIDLC/ExecutorMappingGenerator.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/InterfaceEmitter.cpp: + * CIDLC/InterfaceEmitter.hpp: + * CIDLC/Literals.hpp: + * CIDLC/Literals.cpp: + * CIDLC/ModuleEmitter.hpp: + * CIDLC/ModuleEmitter.cpp: + * CIDLC/OperationHeaderEmitters.cpp: + * CIDLC/OperationHeaderEmitters.hpp: + * CIDLC/ParameterEmitter_T.hpp: + * CIDLC/README.html: + * CIDLC/RepositoryIdGenerator.hpp: + * CIDLC/RepositoryIdGenerator.cpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantGenerator.hpp: + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ServantSourceGenerator.hpp: + * CIDLC/SizeTypeCalculator.hpp: + * CIDLC/SizeTypeCalculator.cpp: + * CIDLC/UnescapedNamePrinter.hpp: + * CIDLC/Upcase.hpp: + * CIDLC/UtilityTypeNameEmitters.cpp: + * CIDLC/UtilityTypeNameEmitters.hpp: + * CIDLC/Version: + * CIDLC/cidlc.cpp: + * DAnCE/Deployment/Deployment_Core.idl: + * DAnCE/Interfaces: + * DAnCE/Interfaces/ExecutionManagerDaemon.idl: + * DAnCE/Interfaces/ExecutionManager_stub_export.h: + * DAnCE/Interfaces/Interfaces.mpc: + * DAnCE/Interfaces/NodeManagerDaemon.idl: + * DAnCE/Interfaces/NodeManager_stub_export.h: + * DAnCE/Interfaces/NodeManager_svnt_export.h: + * DAnCE/Interfaces/README: + * DAnCE/RepositoryManager/Options.h: + * DAnCE/RepositoryManager/Options.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/TargetManager/TargetManager.cidl: + * DAnCE/TargetManager/TargetManagerImpl.idl: + * DAnCE/TargetManager/TargetManager_exec_export.h: + * DAnCE/TargetManager/TargetManager_stub_export.h: + * DAnCE/TargetManager/TargetManager_svnt_export.h: + * DAnCE/TargetManager/descriptors: + * DAnCE/TargetManager/descriptors/Domain.cdd: + * DAnCE/TargetManager/descriptors/NodeDetails.dat: + * DAnCE/TargetManager/descriptors/NodeManagerMap.dat: + * DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp: + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl: + * DAnCE/tests/CIAO/Components/SimpleAttribute.cidl: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer.cidl: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter.cidl: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull.cidl: + * DAnCE/tests/CIAO/Components/SimpleNull_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider.cidl: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher.cidl: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_stub_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_svnt_export.h: + * MPC/config/ciao_executionmanager_stub.mpb: + * MPC/config/ciao_nodeapplication.mpb: + * MPC/config/ciao_nodeapplicationmanager.mpb: + * MPC/config/ciao_nodemanager_stub.mpb: + * MPC/config/ciao_nodemanager_svnt.mpb: + * MPC/config/ciao_plan_generator.mpb: + * MPC/config/ciao_targetmanager_stub.mpb: + * MPC/config/ciao_targetmanager_svnt.mpb: + * MPC/config/ciaocidldefaults.mpb: + * MPC/config/cidlc.mpb: + * MPC/config/dance.mpb: + * MPC/config/dance_cdmw_idl.mpb: + * MPC/config/dance_component_server.mpb: + * MPC/config/dance_component_server_svnt.mpb: + * MPC/config/dance_deployment_stub.mpb: + * MPC/config/dance_deployment_svnt.mpb: + * MPC/config/dance_domain_application.mpb: + * MPC/config/dance_domain_application_manager.mpb: + * MPC/config/dance_exe.mpb: + * MPC/config/dance_executionmanager_stub.mpb: + * MPC/config/dance_extension_stub.mpb: + * MPC/config/dance_lib.mpb: + * MPC/config/dance_logger.mpb: + * MPC/config/dance_mocks.mpb: + * MPC/config/dance_node_application.mpb: + * MPC/config/dance_node_application_manager.mpb: + * MPC/config/dance_node_manager.mpb: + * MPC/config/dance_nodemanager_stub.mpb: + * MPC/config/dance_nodemanager_svnt.mpb: + * MPC/config/dance_plan_generator.mpc: + * MPC/config/dance_redirection_service.mpb: + * MPC/config/dance_repository_manager.mpb: + * MPC/config/dance_repository_manager_base.mpb: + * MPC/config/dance_utils.mpb: + * bin/msvc_cidlc.pl: + * bin/replace_dummy_with_dummylabel.sh: + * docs/cidlc.html: + * docs/tutorials/Quoter/Simple/Broker/StockBroker.cidl: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_stub_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_svnt_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.cidl: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_svnt_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h: + * examples/BasicSP/BMClosedED/BMClosedED.cidl: + * examples/BasicSP/BMClosedED/BMClosedED_exec_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_stub_export.h: + * examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h: + * examples/BasicSP/BMDevice/BMDevice.cidl: + * examples/BasicSP/BMDevice/BMDevice_exec_export.h: + * examples/BasicSP/BMDevice/BMDevice_stub_export.h: + * examples/BasicSP/BMDevice/BMDevice_svnt_export.h: + * examples/BasicSP/BMDisplay/BMDisplay.cidl: + * examples/BasicSP/BMDisplay/BMDisplay_exec_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_stub_export.h: + * examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h: + * examples/BasicSP/BasicSP_exec_export.h: + * examples/BasicSP/BasicSP_stub_export.h: + * examples/BasicSP/BasicSP_svnt_export.h: + * examples/BasicSP/EC/EC.cidl: + * examples/BasicSP/EC/EC_exec_export.h: + * examples/BasicSP/EC/EC_stub_export.h: + * examples/BasicSP/EC/EC_svnt_export.h: + * examples/DevGuideExamples/Messenger/Administrator.cidl: + * examples/DevGuideExamples/Messenger/Administrator_exec_export.h: + * examples/DevGuideExamples/Messenger/Administrator_stub_export.h: + * examples/DevGuideExamples/Messenger/Administrator_svnt_export.h: + * examples/DevGuideExamples/Messenger/Messenger.cidl: + * examples/DevGuideExamples/Messenger/Messenger_exec_export.h: + * examples/DevGuideExamples/Messenger/Messenger_stub_export.h: + * examples/DevGuideExamples/Messenger/Messenger_svnt_export.h: + * examples/DevGuideExamples/Messenger/Receiver.cidl: + * examples/DevGuideExamples/Messenger/Receiver_exec_export.h: + * examples/DevGuideExamples/Messenger/Receiver_stub_export.h: + * examples/DevGuideExamples/Messenger/Receiver_svnt_export.h: + * examples/Display/Display_Base/Display_Base_skel_export.h: + * examples/Display/Display_Base/Display_Base_stub_export.h: + * examples/Display/GPS/GPS.cidl: + * examples/Display/GPS/GPS_exec_export.h: + * examples/Display/GPS/GPS_stub_export.h: + * examples/Display/GPS/GPS_svnt_export.h: + * examples/Display/NavDisplay/NavDisplay.cidl: + * examples/Display/NavDisplay/NavDisplay_exec_export.h: + * examples/Display/NavDisplay/NavDisplay_stub_export.h: + * examples/Display/NavDisplay/NavDisplay_svnt_export.h: + * examples/Display/RateGen/RateGen.cidl: + * examples/Display/RateGen/RateGen_exec_export.h: + * examples/Display/RateGen/RateGen_stub_export.h: + * examples/Display/RateGen/RateGen_svnt_export.h: + * examples/Hello/Receiver/Receiver.cidl: + * examples/Hello/Receiver/Receiver_exec_export.h: + * examples/Hello/Receiver/Receiver_stub_export.h: + * examples/Hello/Receiver/Receiver_svnt_export.h: + * examples/Hello/Sender/Sender.cidl: + * examples/Hello/Sender/Sender_exec_export.h: + * examples/Hello/Sender/Sender_stub_export.h: + * examples/Hello/Sender/Sender_svnt_export.h: + * examples/Null_Component/Null_Component.cidl: + * examples/Null_Component/Null_Component_exec_export.h: + * examples/Null_Component/Null_Component_stub_export.h: + * examples/Null_Component/Null_Component_svnt_export.h: + * examples/Null_Component/Null_Interface_skel_export.h: + * examples/Null_Component/Null_Interface_stub_export.h: + * examples/Swapping/Receiver/Receiver.cidl: + * examples/Swapping/Receiver/Receiver_exec_export.h: + * examples/Swapping/Receiver/Receiver_stub_export.h: + * examples/Swapping/Receiver/Receiver_svnt_export.h: + * examples/Swapping/Sender/Sender.cidl: + * examples/Swapping/Sender/Sender_exec_export.h: + * examples/Swapping/Sender/Sender_stub_export.h: + * examples/Swapping/Sender/Sender_svnt_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip.cidl: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h: + * performance-tests/Protocols/Receiver/Receiver.cidl: + * performance-tests/Protocols/Receiver/Receiver_exec_export.h: + * performance-tests/Protocols/Receiver/Receiver_stub_export.h: + * performance-tests/Protocols/Receiver/Receiver_svnt_export.h: + * performance-tests/Protocols/Sender/Sender.cidl: + * performance-tests/Protocols/Sender/Sender_exec_export.h: + * performance-tests/Protocols/Sender/Sender_stub_export.h: + * performance-tests/Protocols/Sender/Sender_svnt_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.cidl: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_stub_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_svnt_export.h: + * tests/CIDL/CodeGen/CodeGen.cidl: + * tests/CIDL/CodeGen/CodeGen_exec_export.h: + * tests/CIDL/CodeGen/CodeGen_stub_export.h: + * tests/CIDL/CodeGen/CodeGen_svnt_export.h: + * tests/Minimum/Receiver/Receiver.cidl: + * tests/Minimum/Receiver/Receiver_exec_export.h: + * tests/Minimum/Receiver/Receiver_stub_export.h: + * tests/Minimum/Receiver/Receiver_svnt_export.h: + * tests/Minimum/Sender/Sender.cidl: + * tests/Minimum/Sender/Sender_exec_export.h: + * tests/Minimum/Sender/Sender_stub_export.h: + * tests/Minimum/Sender/Sender_svnt_export.h: + + Merged in dds_ports branch, full changelogs pasted below. + + Fri Jul 10 18:02:14 UTC 2009 Marcel Smit + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/Logger/File_Logger_Backend.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/launcher.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + * DAnCE/TargetManager/Target_Manager_Module.cpp: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + Got rid of ace/OS.h. Made these includes more specific. + + * DAnCE/Logger/Logger_Service.cpp: + Used the default way of parsing command line arguments. + + Fri Jul 10 17:23:09 UTC 2009 Johnny Willemsen + + * DAnCE/MPC/config/dance_targetmanager.mpb: + Updated base + + Fri Jul 10 07:17:09 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/DataType_Handler.cpp + * tools/Config_Handlers/Dump_Obj.cpp + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h + * tools/Config_Handlers/Req_Handler.cpp + Fixed includes because of refactoring of the deployment idl + + Thu Jul 9 18:04:09 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/MPC/config/dance_repository_manager.mpb + * DAnCE/MPC/config/dance_repository_manager_base.mpb + * DAnCE/MPC/config/dance_repositorymanager.mpb + * DAnCE/MPC/config/dance_repositorymanager_skel.mpb + * DAnCE/MPC/config/dance_repositorymanager_stub.mpb + * DAnCE/MPC/config/dance_repositorymanagerbase.mpb + * DAnCE/MPC/config/dance_target_manager.mpb + * DAnCE/MPC/config/dance_targetmanager.mpb + * DAnCE/MPC/config/dance_targetmanager_skel.mpb + * DAnCE/MPC/config/dance_targetmanager_stub.mpb + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp + * DAnCE/NodeApplication/ComponentAttributesSetter.h + * DAnCE/RepositoryManager/RepositoryManager.mpc + * DAnCE/TargetManager/DAnCE_TargetManagerDaemon.idl + * DAnCE/TargetManager/TargetManager.mpc + * DAnCE/TargetManager/TargetManagerDaemon.idl + Splitted target and repository manager in seperate projects + + Thu Jul 9 13:23:09 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/CIAO_ExecutionManager_stub_export.h + * DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl + * DAnCE/Deployment/CIAO_Interfaces.mpc + * DAnCE/Deployment/CIAO_NodeManager_skel_export.h + * DAnCE/Deployment/CIAO_NodeManager_stub_export.h + * DAnCE/Deployment/CIAO_NodeManagerDaemon.idl + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/Deployment/Deployment_DomainApplication_skel_export.h + * DAnCE/Deployment/Deployment_DomainApplication_stub_export.h + * DAnCE/Deployment/Deployment_DomainApplicationManager.idl + * DAnCE/Deployment/Deployment_ExecutionManager_skel_export.h + * DAnCE/Deployment/Deployment_ExecutionManager_stub_export.h + * DAnCE/Deployment/Deployment_NodeApplicationManager_skel_export.h + * DAnCE/Deployment/Deployment_NodeApplicationManager_stub_export.h + * DAnCE/Deployment/Deployment_NodeManager_skel_export.h + * DAnCE/Deployment/Deployment_NodeManager_stub_export.h + * DAnCE/DomainApplication/DomainApplication.mpc + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/ExecutionManager/ExecutionManager_Impl.h + * DAnCE/Interfaces/ExecutionManager_stub_export.h + * DAnCE/Interfaces/ExecutionManagerDaemon.idl + * DAnCE/Interfaces/Interfaces.mpc + * DAnCE/Interfaces/NodeManager_stub_export.h + * DAnCE/Interfaces/NodeManager_svnt_export.h + * DAnCE/Interfaces/NodeManagerDaemon.idl + * DAnCE/Interfaces/README + * DAnCE/Logger/Logger.mpc + * DAnCE/MPC + * DAnCE/MPC/config + * DAnCE/NodeApplication/NodeApplication.mpc + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h + * DAnCE/TargetManager/TargetManager.mpc + * MPC/config/ciao_executionmanager_skel.mpb + * MPC/config/ciao_executionmanager_stub.mpb + * MPC/config/ciao_nodemanager_skel.mpb + * MPC/config/ciao_nodemanager_stub.mpb + * MPC/config/ciao_nodemanager_svnt.mpb + * MPC/config/dance_domain_application.mpb + * MPC/config/dance_domain_application_manager.mpb + * MPC/config/dance_domainapplication.mpb + * MPC/config/dance_domainapplicationmanager.mpb + * MPC/config/dance_domainapplicationmanager_skel.mpb + * MPC/config/dance_domainapplicationmanager_stub.mpb + * MPC/config/dance_executionmanager_stub.mpb + * MPC/config/dance_extension_stub.mpb + * MPC/config/dance_node_application.mpb + * MPC/config/dance_node_application_manager.mpb + * MPC/config/dance_node_manager.mpb + * MPC/config/dance_nodeapplication.mpb + * MPC/config/dance_nodeapplication_skel.mpb + * MPC/config/dance_nodeapplication_stub.mpb + * MPC/config/dance_nodeapplicationmanager.mpb + * MPC/config/dance_nodeapplicationmanager_skel.mpb + * MPC/config/dance_nodeapplicationmanager_stub.mpb + * MPC/config/dance_nodemanager.mpb + * MPC/config/dance_nodemanager_skel.mpb + * MPC/config/dance_nodemanager_stub.mpb + * MPC/config/dance_nodemanager_svnt.mpb + Major splitting up in seperate libraries + + Thu Jul 9 13:00:47 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + Changed to meet the latest version of Dance. + + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + Changed help text to meet the actual value of the IOR files. + + * docs/tutorials/Quoter/Simple/descriptors/Domain.cdd: + * docs/tutorials/Quoter/Simple/descriptors/Plan.cdp: + Changed to meet the latest version of dance + + Thu Jul 9 11:02:09 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/Deployment/Deployment.idl + * DAnCE/Deployment/Deployment_Application.idl + * DAnCE/Deployment/Deployment_ApplicationManager.idl + * DAnCE/Deployment/Deployment_Connection.idl + * DAnCE/Deployment/Deployment_Core.idl + * DAnCE/Deployment/Deployment_Data.idl + * DAnCE/Deployment/Deployment_DomainApplication.idl + * DAnCE/Deployment/Deployment_DomainApplicationManager.idl + * DAnCE/Deployment/Deployment_ExecutionManager.idl + * DAnCE/Deployment/Deployment_NodeApplication.idl + * DAnCE/Deployment/Deployment_NodeApplicationManager.idl + * DAnCE/Deployment/Deployment_NodeManager.idl + * DAnCE/Deployment/Deployment_PlanError.idl + * DAnCE/Deployment/Deployment_StartError.idl + * DAnCE/Deployment/Deployment_StopError.idl + * DAnCE/Deployment/Deployment_TargetManager.idl + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/Plan_Generator/PCVisitorBase.h + * DAnCE/Utils/Plan_Handler.h + * tools/Config_Handlers/DnC_Dump.h + First step in refactoring all DAnCE IDL in seperate files + and create more seperate dlls + + Wed Jul 8 18:51:09 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/03.html: + Updated picl_to_idl command line parameters + + Wed Jul 8 15:12:09 UTC 2009 Johnny Willemsen + + * ccm/CCM.mpc + * ccm/CCM_Configurator.idl + * ccm/CCM_Cookie.idl + * ccm/CCM_Enumeration.idl + * ccm/CCM_EventBase.idl + * ccm/CCM_EventConsumerBase.idl + * ccm/CCM_Events.idl + * ccm/CCM_Exceptions.idl + * ccm/CCM_Home.idl + * ccm/CCM_HomeConfiguration.idl + * ccm/CCM_HomeFinder.idl + * ccm/CCM_Homes.idl + * ccm/CCM_KeylessCCMHome.idl + * ccm/CCM_Navigation.idl + * ccm/CCM_Object.idl + * ccm/CCM_Receptacle.idl + * ccm/CCM_StandardConfigurator.idl + * ccm/ComponentServer/CCM_ComponentServer.idl + * ciao/ComponentServer/CIAO_ComponentServer.idl + Moved CCM_Homes to their own file and added to each header whether + they are compliant or not and which section of the OMG spec 06-04-01 + they are defined in + + Wed Jul 8 14:08:09 UTC 2009 Marcel Smit + + * bin/generate_component_mpc.pl: + _lem_stub must not be created when -n is used as a command + line parameter. + Besides this, there were some dependency error. + Also added -o option. This option allows the user to specify + a library output dir. This dir is set to all projects. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + Updated using the latest version of generate_component_mpc.pl. + + Wed Jul 8 11:48:45 UTC 2009 William R. Otte + + * MPC/config/dds4ccm_skel.mpb: + * MPC/config/example_output.mpb: + + Missing base projects. + + Tue Jul 7 18:32:03 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + + Properly init the UUID generator. + + Tue Jul 7 18:05:15 UTC 2009 William R. Otte + + * bin/generate_component_mpc.pl: + + Further updates. + + Tue Jul 7 17:31:48 UTC 2009 William R. Otte + + * bin/generate_component_mpc.pl: + + Updated to create a separate E.idl lib. + + * tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.h: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.cpp: + + Added exec implementation. + + Tue Jul 7 16:31:47 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Included_Component/IC_Foo.mpc: + * tests/IDL_Test/Included_Component/IC_Bar.mpc: + + Added 'after' lines for *_svnt projects, and add executor + projects. + + Tue Jul 7 15:43:57 UTC 2009 William R. Otte + + * tests/IDL_Test/Lem_Specific_Export: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export.idl: + * tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc: + + Test which apparently shows the export file not being + generated for a LEM project. + + Tue Jul 7 00:10:41 UTC 2009 William R. Otte + + * MPC/config/ciao_connector_base.mpb: + * MPC/config/connectoridldefaults.mpb: + * MPC/config/dds4ccm_base.mpb: + + Adding new base projects. + + Mon Jul 6 19:47:03 UTC 2009 William R. Otte + + + * tests/IDL_Test/Included_Component: + * tests/IDL_Test/Included_Component/IC_Bar.idl: + * tests/IDL_Test/Included_Component/IC_Bar.mpc: + * tests/IDL_Test/Included_Component/IC_Foo.idl: + * tests/IDL_Test/Included_Component/IC_Foo.mpc: + + New test. Codegen for IC_Bar attempts to generate + IC_Foo elements. + + * tests/IDL_Test/Forward_Declared_Ports: + * tests/IDL_Test/Forward_Declared_Ports/FDP_Bar.idl: + * tests/IDL_Test/Forward_Declared_Ports/FDP_Bar.mpc: + * tests/IDL_Test/Forward_Declared_Ports/FDP_Bar_exec.h: + * tests/IDL_Test/Forward_Declared_Ports/FDP_Bar_exec.cpp: + * tests/IDL_Test/Forward_Declared_Ports/FDP_Foo.idl: + * tests/IDL_Test/Forward_Declared_Ports/FDP_Foo.mpc: + + Removed these files, was determined this test case was + invalid. + + Mon Jul 6 13:47:09 UTC 2009 Marcel Smit + + * DAnCE/Deployment/Module_Main.h: + No error message when ORB couldn't start. This should + be clear when reading the previous (error) messages. + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + Displaying help message without any other + (error) messages. + + * DAnCE/TargetManager/Target_Manager_Module.cpp: + Displaying help message without any other + (error) messages. Also checked parsed command line + options. + + Fri Jul 3 01:13:13 UTC 2009 William R. Otte + + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/XMI.cpp: + + Error/warning fixes. + + Thu Jul 2 01:47:53 UTC 2009 Johnny Willemsen + + * bin/generate_component_mpc.pl + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc + * DAnCE/tests/CIAO/Components/SimpleNull.mpc + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc + * DAnCE/tests/CIAO/Components/SimpleUser.mpc + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc + * examples/Display/GPS/GPS.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Null_Component/Null_Component.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/IDL_Test/Cornucopia/Cornucopia.mpc + * tests/IDL_Test/Keywords/Keywords.mpc + * tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + Changed project names *_idle_gen to *_lem_gen. + + Wed Jul 1 22:18:53 UTC 2009 Jeff Parsons + + * performance-tests/Protocols/Receiver/Receiver.mpc: + * tests/Minimum/Minimum_Base/Minimum_Base.mpc: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/Display/RateGen/RateGen.mpc: + * examples/Display/NavDisplay/NavDisplay.mpc: + + Changed project names *_idle_gen to *_lem_gen. + + Wed Jul 1 21:36:05 UTC 2009 Johnny Willemsen + + * examples/Display/GPS/GPS.mpc: + * examples/Swapping/Sender/Sender.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Protocols/Sender/Sender.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + + Fixed missing afters + + Wed Jul 1 17:08:05 UTC 2009 Marcel Smit + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + Resolved compiler issues on Windows + + * docs/generate_component_mpc.html: + Removed CIDL stuff. + + Wed Jul 1 16:27:07 UTC 2009 Jeff Parsons + + * TAO_IDL/be/be_visitor_component.cpp: + * TAO_IDL/be/be_visitor_component/component_svs.cpp: + + Conditionalized generation of value factory registration + with a check to see if the eventtype in question has a + concrete factory. Registration macro should be generated + only if this check returns true. + + Wed Jul 1 16:10:49 UTC 2009 Jeff Parsons + + * NEWS: + * docs/value_factory_registration.html: + + Updated to reflect removal of CIDL compiler. + + * MPC/config/ciao_server.mpb: + + Removed repeated occurrence ciao_client base project. + + Wed Jul 1 13:34:09 UTC 2009 Marcel Smit + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + No DLINFO in trace messages. + + * bin/generate_component_mpc.pl: + No CIDL_Files in mpc files anymore. Prevents mpc from + generating project files/make files. + + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/04.html: + Mentioned the tutorials library path in MPC-file's. + + * docs/tutorials/Quoter/Simple/02.html: + Changed $CIAO_ROOT into %CIAO_ROOT%. This was intended in this + tutorial. + + Tue Jun 30 21:32:28 UTC 2009 Johnny Willemsen + + * docs/tutorials/Quoter/Simple/04.html: + Fixed typo + + Tue Jun 30 17:19:44 UTC 2009 Jeff Parsons + + * examples/DevGuideExamples/Messenger/Receiver.mpc: + * examples/DevGuideExamples/Messenger/Administrator.mpc: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + + Changed project names for consistency. + + Tue Jun 30 15:56:11 UTC 2009 William R. Otte + + * bin/update_package.py: + + Old script that updates implementations in a package, can be + used as a basis for a better packaging script. + + Tue Jun 30 15:22:44 UTC 2009 Jeff Parsons + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/EC/EC.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + + Changes to project names for consistency and to + dependencies for completeness. + + Mon Jun 29 23:11:25 UTC 2009 Jeff Parsons + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.idl: + * examples/BasicSP/EC/EC.idl: + * examples/BasicSP/BMDevice/BMDevice.idl: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice.mpc: + + Modified example to use the newly added TAO IDL + compiler feature of generating facet servant code + for each interface, rather than navigating to each + interface from a component's list of provides ports. + This option is necessary in this example, since + two components use the same interface as a facet, + and now the generated facet servant code can be + shared. + + Mon Jun 29 19:43:45 UTC 2009 William R. Otte + + * docs/OMG-CCM-Tutorial.ppt: + + OMG tutorial slides. + + Mon Jun 29 18:49:06 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/Model/Quoter.xme: + Updated to meet the work listed in the HTML files. + + Mon Jun 29 00:31:31 UTC 2009 William R. Otte + + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + + Updates to remove lateral references to export files and CIDLC. + + Fri Jun 26 22:47:14 UTC 2009 Johnny Willemsen + + * docs/tutorials/Quoter/Simple/01.html: + Updated link to MPC chapter, it is available in the MPC directory + + * docs/tutorials/Quoter/Simple/03.html: + Updated CIAO chapter + + Fri Jun 26 14:15:14 UTC 2009 Marcel Smit + + * DAnCE/TargetManager/TargetManager.mpc: + Added Dance_logger library to Dance_TargetManager_exec project. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_stub_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_svnt_export.h: + Removed these files since they are create by the IDL compiler + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_svnt_export.h: + Removed these files since they are create by the IDL compiler + + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h: + Removed these files since they are create by the IDL compiler + + Fri Jun 26 08:26:00 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/images/fig7.jpg: + * docs/tutorials/Quoter/Simple/03.html: + Added modelling of IOR files. + + Fri Jun 26 07:13:00 UTC 2009 Marcel Smit + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Resolved a minor copy paste error. + + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/Target_Manager_Module.cpp: + Resolved some linker errors on windows. + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + In trace message one shouldn't use the CLINFO or DLINFO define. + + * docs/tutorials/Quoter/Simple/03.html: + Described how to connect a component factory to a component. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + In the current tutorial we're deploying unhomed components. To do that, + the appropriate functions should be added. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_stub_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_svnt_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_svnt_export.h: + Used the latest version of the IDL compiler + + + Thu Jun 25 15:11:59 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc: + * tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc: + + Renamed first file as second file, to avoid problems on some + platforms when .mpc files have the same name. + + * tests/CIDL/CodeGen/CodeGen.mpc: + + Fixed IDL flags in Reused_Facet_Interface_idl_gen project. + + Wed Jun 24 15:51:23 UTC 2009 William R. Otte + + * DAnCE/TargetManager/descriptors: + + Removed this file. + + Wed Jun 24 15:50:36 UTC 2009 William R. Otte + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManager_Impl.h: + * DAnCE/TargetManager/TargetManager_Impl_export.h: + + Stab at fixing linking problems. + + Wed Jun 24 13:56:48 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/images/fig4.jpg: + * docs/tutorials/Quoter/Simple/images/fig5a.jpg: + Updated to meet the latest version of the DAnCE spec. + + Wed Jun 24 07:31:43 UTC 2009 Marcel Smit + + * DAnCE/TargetManager/TargetManager.mpc: + Resolved typo (RepositoryManager_IDL=>TargetManager_IDL). + + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + Added lib path (like Hello example). + + * docs/tutorials/Quoter/Simple/descriptors/Plan.cdp: + Should match the current DAnCE spec. + + Tue Jun 23 18:11:56 UTC 2009 William R. Otte + + * DAnCE/Deployment/Deployment_TargetManager.idl: + + bring in line with spec. + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/ResourceCommitmentManager.h: + * DAnCE/TargetManager/ResourceCommitmentManager.cpp: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerDaemon.idl: + * DAnCE/TargetManager/TargetManager_Impl.h: + * DAnCE/TargetManager/TargetManager_Impl.cpp: + * DAnCE/TargetManager/Target_Manager_Exec.cpp: + * DAnCE/TargetManager/Target_Manager_Module.h: + * DAnCE/TargetManager/Target_Manager_Module.cpp: + * DAnCE/TargetManager/Target_Manager_Module_export.h: + * MPC/config/dance_target_manager.mpb: + + Initial pass at porting the TargetManager. Work is by no means + complete or workable. TargetManager will no longer be deployed as a component. + + * DAnCE/TargetManager/descriptors/Domain.cdd: + * DAnCE/TargetManager/descriptors/NodeDetails.dat: + * DAnCE/TargetManager/descriptors/NodeManagerMap.dat: + * DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp: + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl: + + Removed these files. + + Mon Jun 22 09:22:17 UTC 2009 Johnny Willemsen + + * bin/generate_component_mpc.pl: + Update for the fact that avoids_ace_for_tao and anytypecode moved to the + base projects + + * bin/msvc_cidlc.pl: + * bin/replace_dummy_with_dummylabel.sh + * docs/cidlc.html + Deleted, not needed + + * CIAO-INSTALL.html: + * docs/index.html + * docs/TODO.html + Partly updated for CIDLC removal + + * ciao/ComponentServer/CIAO_ComponentServer.mpc + * DAnCE/TargetManager/TargetManager.mpc + * DAnCE/TargetManager/TM_Client.mpc + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc + * DAnCE/tests/CIAO/Components/SimpleNull.mpc + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc + * DAnCE/tests/CIAO/Components/SimpleUser.mpc + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + * examples/DevGuideExamples/Messenger/Administrator.mpc + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc + * examples/DevGuideExamples/Messenger/Messenger.mpc + * examples/DevGuideExamples/Messenger/Receiver.mpc + * examples/Display/Display_Base/Display_Base.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Display/RateGen/RateGen.mpc + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Null_Component/Null_Component.mpc + * examples/Null_Component/Null_Interface.mpc + * examples/Swapping/Hello_Base/Hello_Base.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * MPC/config/componentidldefaults.mpb + * performance-tests/Benchmark/Benchmark.mpc + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc + * performance-tests/Protocols/common/Protocols.mpc + * performance-tests/Protocols/Controller/Controller.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc + * tests/CIDL/CodeGen/Basic.mpc + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/IDL_Test/Cornucopia/Cornucopia.mpc + * tests/IDL_Test/Keywords/Keywords.mpc + * tests/IDL_Test/Reused_Facet_Interface/Basic.mpc + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc + * tests/Minimum/Minimum_Base/Minimum_Base.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + Updated base projects + + * examples/Hello/Receiver/Receiver_exec_export.h + * examples/Hello/Receiver/Receiver_stub_export.h + * examples/Hello/Receiver/Receiver_svnt_export.h + * examples/Hello/Sender/Sender_exec_export.h + * examples/Hello/Sender/Sender_stub_export.h + * examples/Hello/Sender/Sender_svnt_export.h + Removed + + Fri Jun 19 19:40:21 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Cornucopia/Cornucopia.mpc: + * tests/IDL_Test/Keywords/Keywords.mpc: + * tests/IDL_Test/Reused_Facet_Interface/Basic.mpc: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc: + + Added IDL compiler options to generate all export + header files. + + * tests/IDL_Test/Reused_Facet_Interface/Basic_stub_export.h: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen_svnt_export.h: + * tests/IDL_Test/Reused_Facet_Interface/Basic_skel_export.h: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen_stub_export.h: + * tests/IDL_Test/Reused_Facet_Interface/CodeGen_exec_export.h: + * tests/IDL_Test/Cornucopia/Cornucopia_svnt_export.h: + * tests/IDL_Test/Cornucopia/Cornucopia_stub_export.h: + * tests/IDL_Test/Cornucopia/Cornucopia_skel_export.h: + * tests/IDL_Test/Cornucopia/Cornucopia_exec_export.h: + * tests/IDL_Test/Keywords/Keyword_Clash_stub_export.h: + * tests/IDL_Test/Keywords/Keyword_Clash_exec_export.h: + * tests/IDL_Test/Keywords/Keyword_Clash_svnt_export.h: + + Removed export header files, they're now generated. + + Fri Jun 19 18:03:10 UTC 2009 Johnny Willemsen + + * performance-tests/Protocols/Receiver/Receiver_exec.cpp + * performance-tests/Protocols/Receiver/Receiver_exec.h + * performance-tests/Protocols/Sender/Sender_exec.cpp + * performance-tests/Protocols/Sender/Sender_exec.h + Fixed compile errors + + Fri Jun 19 17:58:03 UTC 2009 William R. Otte + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + + Basic RM functionality appears to be restored. HTTP not yet tested. + + * tools/XML/XML_Helper.tpp: + + Removed Xerces init logging. + + Fri Jun 19 12:19:38 UTC 2009 William R. Otte + + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/cdp.xsd: + * docs/schema/cid.xsd: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/Config_Handlers/toplevel.cpp: + + Fixed the wchar issue in bugzilla 3691. + + Fri Jun 19 07:47:10 UTC 2009 Johnny Willemsen + + * MPC/config/componentidldefaults.mpb: + Added -Glem + + Thu Jun 18 18:52:10 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc: + + Fixed dependency mistakes. + + * tests/IDL_Test/Keywords/*.*: + + New test, covering all CIAO-related code generation when + the IDL file contains C++ keywords and escaped IDL + keywords. + + Thu Jun 18 18:48:02 UTC 2009 Johnny Willemsen + + * performance-tests/Protocols/Sender/Sender_exec.h + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc + Compile fixes + + Thu Jun 18 16:51:02 UTC 2009 Johnny Willemsen + + * CIAO_TAO.mwc: + Added performance-tests directory, removed CCF + + Thu Jun 18 14:35:02 UTC 2009 Johnny Willemsen + + * MPC/config/cidlc.mpb: + Deleted + + * MPC/config/dance_plan_generator.mpb + * MPC/config/dance_plan_generator.mpc + Renamed mpc to mpb + + Thu Jun 18 14:25:45 UTC 2009 William R. Otte + + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/cdp.xsd: + * docs/schema/cid.xsd: + * docs/schema/toplevel.xsd: + + Changes from 06-04-02. Shouldn't break existing plans. + + * docs/schema/unused_06-04-02.xsd: + + Unused elements from 06-04-02. + + Thu Jun 18 14:24:10 UTC 2009 William R. Otte + + * CCF: + * CIDLC: + + Removed these files. + + Thu Jun 18 13:54:43 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/Model/Quoter.xme: + Used to latest version of COSMIC to create this Quoter.xme + + Thu Jun 18 13:37:02 UTC 2009 Johnny Willemsen + + * examples/BasicSP/BasicSP.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender_exec.h + Compile fixes + + Thu Jun 18 13:34:02 UTC 2009 Johnny Willemsen + + * examples/BasicSP/EC/EC_exec.h + * examples/Display/GPS/GPS_exec.h + * examples/Display/NavDisplay/NavDisplay_exec.h + * examples/Display/RateGen/RateGen_exec.h + * performance-tests/Protocols/Sender/Sender_exec.h + Compile fixes + + Thu Jun 18 13:17:02 UTC 2009 Johnny Willemsen + + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDisplay/BMDisplay_exec.h + * examples/Display/GPS/GPS_exec.h + * examples/Display/NavDisplay/NavDisplay_exec.h + * examples/Display/RateGen/RateGen_exec.h + * performance-tests/Protocols/Receiver/Receiver.mpc + Compile fixes + + Thu Jun 18 13:04:02 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/04.html: + Updated to meet the latest versions + of GME/COSMIC/CIAO/DANCE + + * docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat: + NodeManager should be specific: i.e. Broker.NodeManager. + + Thu Jun 18 13:02:07 UTC 2009 Marcel Smit + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + * docs/tutorials/Quoter/Simple/04.html: + + * docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat: + + Thu Jun 18 13:00:05 UTC 2009 Johnny Willemsen + + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/EC/EC_exec.h + * examples/Display/GPS/GPS_exec.h + * examples/Display/NavDisplay/NavDisplay_exec.h + * examples/Display/RateGen/RateGen_exec.h + * examples/Swapping/Receiver/Receiver.mpc + Compile fixes + + Thu Jun 18 10:24:43 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/descriptors/Plan.cdp: + * docs/tutorials/Quoter/Simple/images/fig10.jpg: + * docs/tutorials/Quoter/Simple/images/fig11.jpg: + * docs/tutorials/Quoter/Simple/images/fig12.jpg: + Updated to meet the latest versions + of GME/COSMIC/CIAO/DANCE + + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + Stock_Base_StockBroker_idle_gen project should be build + after Stock_Base_StockBroker_idl_gen project. + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + Stock_Base_StockDistributor_idle_gen project should be build + after Stock_Base_StockDistributor_idl_gen project. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + Naming convention of namespace is different now since CIDL + compiler is removed. + + Thu Jun 18 06:48:05 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/03.html: + + Updated to meet the current status of CIAO/DAnCE. + + * docs/tutorials/Quoter/Simple/images/fig2.jpg: + * docs/tutorials/Quoter/Simple/images/fig3.jpg: + * docs/tutorials/Quoter/Simple/images/fig5.jpg: + * docs/tutorials/Quoter/Simple/images/fig6.jpg: + * docs/tutorials/Quoter/Simple/images/fig7.jpg: + * docs/tutorials/Quoter/Simple/images/fig8.jpg: + * docs/tutorials/Quoter/Simple/images/fig9.jpg: + + Updated to meet the current status of GME/COSMIC + + Thu Jun 18 02:52:44 UTC 2009 William R. Otte + + * docs/schema/06-04-02.xsd + + Schema from the standard. Note that this is non-normative, and the + fact that we deviate from it is fine. + + Wed Jun 17 19:37:54 UTC 2009 William R. Otte + + * DAnCE/Logger/Logger_Service.cpp: + + Removed the short options from the logger. + + Wed Jun 17 18:07:10 UTC 2009 William R. Otte + + * docs/tutorials/Quoter/Simple/Broker/StockBroker.cidl: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.cidl: + * examples/BasicSP/BMClosedED/BMClosedED.cidl: + * examples/BasicSP/BMDevice/BMDevice.cidl: + * examples/BasicSP/BMDisplay/BMDisplay.cidl: + * examples/BasicSP/EC/EC.cidl: + * examples/DevGuideExamples/Messenger/Administrator.cidl: + * examples/DevGuideExamples/Messenger/Messenger.cidl: + * examples/DevGuideExamples/Messenger/Receiver.cidl: + * examples/Display/GPS/GPS.cidl: + * examples/Display/NavDisplay/NavDisplay.cidl: + * examples/Display/RateGen/RateGen.cidl: + * examples/Null_Component/Null_Component.cidl: + * examples/Swapping/Receiver/Receiver.cidl: + * examples/Swapping/Sender/Sender.cidl: + * performance-tests/Benchmark/RoundTrip/RoundTrip.cidl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl: + * performance-tests/Protocols/Receiver/Receiver.cidl: + * performance-tests/Protocols/Sender/Sender.cidl: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.cidl: + * tests/CIDL/CodeGen/CodeGen.cidl: + * tests/Minimum/Receiver/Receiver.cidl: + * tests/Minimum/Sender/Sender.cidl: + + Removed these files. + + Wed Jun 17 18:04:28 UTC 2009 William R. Otte + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp: + * tests/Minimum/Receiver/Receiver_exec.h: + * tests/Minimum/Receiver/Receiver_exec.cpp: + * tests/Minimum/Sender/Sender_exec.h: + * tests/Minimum/Sender/Sender_exec.cpp: + + Compile fixes. + + Wed Jun 17 10:07:19 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc + * DAnCE/tests/CIAO/Components/SimpleNull.mpc + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc + * DAnCE/tests/CIAO/Components/SimpleUser.mpc + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + * examples/DevGuideExamples/Messenger/Administrator.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Display/RateGen/RateGen.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Null_Component/Null_Component.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * MPC/config/ciao_servant.mpb + * MPC/config/ciaocidldefaults.mpb + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc + * tests/CIDL/CodeGen/Basic.idl + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/IDL_Test/Cornucopia/Cornucopia.mpc + * tests/IDL_Test/Reused_Facet_Interface/CodeGen.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + * tools/Config_Handlers/XML_File_Intf.cpp + Zap ciaocidldefaults from the MPC files. Everything has to be rebuild to + sort out the compile/link issues, but at least now cidlc is not used anymore + + Wed Jun 17 08:43:19 UTC 2009 Marcel Smit + + * CIAO_TAO.mwc: + * CIAO_TAO_DanCE.mwc: + Removed CIDL + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + Repositorymanager uses ciaodefaults instead of ciaobasedefaults + + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/TargetManager.idl: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + Changed because the CIDL compiler was removed. + Changed TargetManagerImpl into TargetManager. + + * docs/tutorials/Quoter/Simple/03.html: + Minor changes. + + * DAnCE/TargetManager/TargetManager.cidl: + * DAnCE/TargetManager/TargetManagerImpl.idl: + Removed these files because the cidl compiler is not in use + anymore. + + Wed Jun 17 02:15:33 UTC 2009 William R. Otte + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/repository_manager_admin.cpp: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + + Fleshed out the implementation of dance_rm_admin. + + Tue Jun 16 20:37:23 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Reused_Facet_Interface/*.*: + + New test, with a variety of IDL3 constructs but mostly + focused on an interface that is used in two separate + facets. The test will ensure that the facet servant + class and the facet executor IDL interface are + generated only once. + + Tue Jun 16 20:28:43 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp: + + added planlocality elements. + + * ciao/Containers/Session/Session_Container.cpp: + + Add newline to a log message. + + * tools/Config_Handlers/DP_Handler.cpp: + + Fix problem with parsing plan locality. + + Tue Jun 16 19:20:32 UTC 2009 William R. Otte + + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + * DAnCE/RepositoryManager: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/Repository_Manager_Admin_Export.h: + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + * DAnCE/RepositoryManager/repository_manager_admin.h: + * DAnCE/RepositoryManager/repository_manager_admin.cpp: + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp: + + Merge in from my RepositoryManager sprint branch. + + * DAnCE/RepositoryManager/Options.h: + * DAnCE/RepositoryManager/Options.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + + Removed these files. + + Tue Jun 16 19:11:49 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Fix for a segmentation fault with unhomed components. + + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp: + + Simple test to determine if PlanLocality constraints work or not. Note + that as this support has yet to be implemented, this test is currently designed + to fail. + + Tue Jun 16 18:46:22 UTC 2009 Johnny Willemsen + + * examples/DevGuideExamples/Messenger/Administrator.mpc + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp + * examples/DevGuideExamples/Messenger/Administrator_exec_i.h + * examples/DevGuideExamples/Messenger/History_exec_i.cpp + * examples/DevGuideExamples/Messenger/History_exec_i.h + * examples/DevGuideExamples/Messenger/Messenger.mpc + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp + * examples/DevGuideExamples/Messenger/Messenger_exec_i.h + * examples/DevGuideExamples/Messenger/Publication_exec_i.cpp + * examples/DevGuideExamples/Messenger/Publication_exec_i.h + * examples/DevGuideExamples/Messenger/Receiver.mpc + * examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp + * examples/DevGuideExamples/Messenger/Receiver_exec_i.h + * examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp + * examples/DevGuideExamples/Messenger/Runnable_exec_i.h + * examples/Hello/Receiver/Receiver.mpc + Zap usage of cidlc + + Tue Jun 16 18:30:46 UTC 2009 Jeff Parsons + + * tests/IDL_Test/Cornucopia/*.*: + + New subdirectory (IDL_Test) for tests of the IDL + compiler's recently added code generation of CIAO + servants, executor IDL and executor implementation + stencil classes. Also new test (Cornupcopia), which + includes IDL3 constructs, scoping relationships, + and build configurations not covered in other CIAO + tests or examples. + + Tue Jun 16 18:19:31 UTC 2009 William R. Otte + + * tools/Config_Handlers/PL_Handler.cpp: + + Addedmissing file. + + Tue Jun 16 17:59:43 UTC 2009 William R. Otte + + * ciao/Containers/Session/Session_Container.cpp: + + Removed misc debug statements. + + Tue Jun 16 17:49:18 UTC 2009 William R. Otte + + * MPC/config/ciaoidldefaults.mpb: + * MPC/config/componentidldefaults.mpb: + + Massaged the base projects a bit more. + + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc: + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc: + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleNull.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc: + * DAnCE/tests/CIAO/Components/SimpleUser.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + * bin/generate_component_mpc.pl: + + Updated to reflect the base project changes. + + Tue Jun 16 14:28:55 UTC 2009 William R. Otte + + * MPC/config/ciaoidldefaults.mpb: + + Added -Gsv. Thanks to MArcel for pointing out the omission. + + Tue Jun 16 13:34:22 UTC 2009 Johnny Willemsen + + * examples/Null_Component/Null_Component.mpc + * examples/Null_Component/Null_Component_exec.cpp + * examples/Null_Component/Null_Component_exec.h + Zapp cidlc + + Tue Jun 16 13:26:22 UTC 2009 William R. Otte + + * tools/Config_Handlers/PL_Handler.h: + + Missing from a prior commit. + + Tue Jun 16 12:55:09 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + + Reverting a mistaken commit. + + * DAnCE/tests/CIAO/Components/SimpleAttribute.cidl: + * DAnCE/tests/CIAO/Components/SimpleConsumer.cidl: + * DAnCE/tests/CIAO/Components/SimpleEmitter.cidl: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleNull.cidl: + * DAnCE/tests/CIAO/Components/SimpleProvider.cidl: + * DAnCE/tests/CIAO/Components/SimplePublisher.cidl: + * DAnCE/tests/CIAO/Components/SimpleUser.cidl: + * examples/Hello/Sender/Sender.cidl + * examples/Hello/Receiver/Receiver.cidl + + Removed these files, no longer needed. + + Tue Jun 16 12:50:52 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/ProcessColocation.idl: + * DAnCE/tests/CIAO/Components/ProcessColocation.mpc: + * DAnCE/tests/CIAO/Components/ProcessColocation_exec_export.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_stub_export.h: + * DAnCE/tests/CIAO/Components/ProcessColocation_svnt_export.h: + + New component to test process colocation capabilities of CIAO/DAnCE. + + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + + Re-added business logic accidentally removed. + + Tue Jun 16 12:45:52 UTC 2009 William R. Otte + + * MPC/config/ciaoidldefaults.mpb: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + + MPC base project for new tao_idl based container generation. + + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/cpd.cpp: + + Updated XSC code for updated schema. + + Tue Jun 16 09:18:07 UTC 2009 Johnny Willemsen + + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Receiver/Receiver_exec.cpp + * examples/Hello/Receiver/Receiver_exec.h + * examples/Hello/Sender/Sender.mpc + * examples/Hello/Sender/Sender_exec.cpp + * examples/Hello/Sender/Sender_exec.h + Ported to IDL compiler + + * examples/Hello/descriptors/run_test.pl + Reduced timeouts + + Mon Jun 15 19:20:07 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc: + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleNull.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc: + * DAnCE/tests/CIAO/Components/SimpleUser.mpc: + + Removed -Gex. Thanks to Jeff both for the initial porting work + and for pointing out the lingering -Gex. + + Mon Jun 15 14:52:10 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + + Checked in ported exec code from a misapplied patch. + + Mon Jun 15 14:41:02 UTC 2009 William R. Otte + + * docs/schema/Basic_Deployment_Data.xsd: + + Correction to schema. + + Mon Jun 15 14:37:09 UTC 2009 William R. Otte + + * examples/Hello/descriptors/run_test_without_ns.pl: + + Removed --instance-nc command line options. + + Mon Jun 15 14:05:45 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleNull.mpc: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + + Ported to use IDL compiler instead of CIDL compiler. + + * examples/Hello/descriptors/DeploymentPlan_without_ns.cdp: + * examples/Hello/descriptors/run_test_without_ns.pl: + + Ported to new DAnCE. + + * bin/ciao_tests.lst + + Added run_test_without_ns. + + Sat Jun 13 01:35:43 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + + Fixed a memory management error. Thanks to Jeff for pointing it out. + + Wed Jun 10 17:53:10 UTC 2009 William R. Otte + + * DAnCE/Deployment/Deployment_DeploymentPlan.idl: + * DAnCE/Deployment/Deployment_Packaging_Data.idl: + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/cid.xsd: + * docs/schema/cpd.xsd: + + Updated to match new structures defined by the DDS4CCM spec. + New generated XSC code/config handler implementation is forthcoming. + + Wed Jun 10 14:01:33 UTC 2009 Marcel Smit + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + Normalized "usage" texts. + + * DAnCE/TargetManager/DomainDataManager.h: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/TargetManager/ResourceCommitmentManager.cpp: + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + DomainDataManager is now an ACE_Singleton class. + Removed function like create-, get- and destroy + data manager. + + * examples/Hello/step-by-step.html: + Used "DANCE_ROOT" in stead of CIAO_ROOT/DAnCE" and + changed the domain-nc value. + + Mon Jun 8 15:27:56 UTC 2009 Marcel Smit + + * examples/Hello/descriptors_naming/deploymentplan_naming.cdp: + Changed to meet the current XML schema's. + + * examples/Hello/step-by-step.html: + Changes regarding the use of the naming server. + + Mon Jun 8 09:58:27 UTC 2009 Marcel Smit + + * DAnCE/Logger/File_Logger_Backend.cpp: + Fixed Bugzilla #3692 - Incorrect behaviour of DANCE_LOG_FILE + variable when used globally. + Open DAnCE logfile with a+ in stead off w. + + Mon Jun 8 09:43:49 UTC 2009 Marcel Smit + + * DAnCE/Logger/File_Logger_Backend.cpp: + Added new line after log messages. + + * examples/Hello/step-by-step.html: + Made changes regarding the use of the naming server. + + Mon Jun 8 09:12:13 UTC 2009 Marcel Smit + + * examples/Hello/Receiver/Receiver.cidl: + Changed #ifndef SENDER_CIDL to #ifndef RECEIVER_CIDL. + + * examples/Hello/Sender/Sender.idl: + Changed CIAO_SENDER_IDL into SENDER_IDL (same format as + RECEIVER.IDL). + + * examples/Hello/descriptors/run_NodeDaemons.pl: + Making use of DANCE_ROOT environment variable. Using the + same command line parameters as in run_test.pl. + + * examples/Hello/step-by-step.html: + Adapted to the current status. + + Fri Jun 5 19:48:15 UTC 2009 William R. Otte + + * DAnCE/Logger/Logger_Service.cpp: + + Now swallows any command line arguments it finds. + + Tue Jun 2 03:43:30 UTC 2009 Marcel Smit + + * DAnCE/Deployment/Module_Main.h + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp + + Added \n to debug statements. + + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + + In a DANCE_DEBUG statement, an %C was declared without an input variable. + This results in an exception. + + * DAnCE/Plan_Launcher/Plan_Launcher.cpp + * DAnCE/Plan_Launcher/Plan_Launcher.h + + Changed code outlining. + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + + When logging the command line parameters in a logfile, every line is prefixed + with a timestamp, hostid, ...... This results in a log line which is hard to read. + The command line parameters are now logged using several lines. + + * examples/Hello/descriptors/run_test.pl + + Added logging regarding processes and commandline parameters + + +Tue Jul 14 02:45:22 UTC 2009 Phil Mesnier + + * NEWS: + updated new release. + +Mon Jul 13 12:32:13 CDT 2009 Phil Mesnier + + * CIAO version 0.7.1 released. + +Tue Jun 23 15:08:50 UTC 2009 Phil Mesnier + + * NEWS: + Added space for 0.7 -> 0.7.1 changes. + +Mon Jun 22 09:33:40 CDT 2009 Phil Mesnier + + * CIAO version 0.7 released. + +Thu Jun 18 23:03:06 UTC 2009 Phil Mesnier + + * tools/Config_Handlers/IRDD_Handler.h: + * tools/XML/XML_Schema_Resolver.cpp: + + There is a curious order-of-inclusion problem on macosx-leopoard + builds whereby including a non-ACE header before something that + includes ace/config.h causes a compiler error in + OS_NS_stdlib.inl. It seems that on that platform, the signature + of ::unsetenv() varies. I think this should be looked into in + greater depth after releasing x.7.0. + +Tue Jun 16 00:55:21 UTC 2009 William R. Otte + + * MPC/config/dance_plan_generator.mpc: + * MPC/config/dance_plan_launcher_base.mpc: + + Linking fixes for RACE. + +Mon Jun 15 02:22:01 UTC 2009 William R. Otte + + * CIAO-INSTALL.html: + * NEWS: + Minor updates. + +Sun Jun 14 06:58:05 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Updated for CB2009 Update 3 + +Thu Jun 11 19:32:56 UTC 2009 Steven Stallion + + * PROBLEM-REPORT-FORM: + + Added additional PRF question about build method (commit performed + on behalf of Chris Cleeland). + +Mon Jun 8 09:45:05 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp + * ciao/Logger/File_Logger_Backend.cpp + * ciao/Server_init.cpp + * ciao/Server_init.h + * DAnCE/Deployment/Module_Main.h + * DAnCE/DomainApplication/Domain_Application_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/Node_Locator.cpp + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp + * DAnCE/ExecutionManager/ExecutionManager_Module.h + * DAnCE/Logger/Log_Macros.h + * DAnCE/Logger/Logger_Service.cpp + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp + * DAnCE/NodeApplication/Name_Utilities.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/NodeManager/Node_Manager_Module.cpp + * DAnCE/NodeManager/Node_Manager_Module.h + * DAnCE/NodeManager/NodeManager_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp + * DAnCE/RedirectionService/NameServiceRedirection.cpp + * DAnCE/RedirectionService/RedirectionService.cpp + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp + * DAnCE/RepositoryManager/Repository_Manager_Module.h + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp + * DAnCE/RepositoryManager/RepositoryManager_Impl.h + * DAnCE/RepositoryManager/RMadmin.cpp + * DAnCE/RepositoryManager/URL_Parser.cpp + * DAnCE/RepositoryManager/URL_Parser.h + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/Starter/Starter.cpp + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainDataManager.cpp + Unicode changes + +Sun Jun 7 17:58:05 2009 Johnny Willemsen + + * ciao/Server_init.cpp + * DAnCE/NodeApplication/Name_Utilities.cpp + Added include of Tokenizer_T.h + +Fri Jun 5 18:17:06 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/CIAO_ComponentServer.h + * ciao/Logger/File_Logger_Backend.cpp + * ciao/Server_init.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * tools/XML/XML_Schema_Resolver.h + Unicode fixes + +Thu Jun 4 19:12:06 UTC 2009 Johnny Willemsen + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp + * DAnCE/NodeManager/Node_Manager_Module.cpp + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp + Unicode fixes + +Thu Jun 4 14:06:06 UTC 2009 William R. Otte + + * NEWS: + + News updates for next release. + +Mon Jun 1 20:29:12 UTC 2009 William R. Otte + + * CIDLC/cidlc.cpp: + * MPC/config/ciaocidldefaults.mpb: + + Added two options: --suppress-lem and --suppress-svnt, which will + suppress generation of the local executor mapping and servant code, + respectively. + +Fri May 29 00:48:01 UTC 2009 William R. Otte + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Some tweaks to the generated _svnt files to properly compile with + the changes introduced in the previous commit . + +Thu May 28 19:07:27 UTC 2009 Jeff Parsons + + * CIDLC/ExecutorMappingGenerator.cpp: + + More tweaks to the application of the command line option + added in + + Thu May 28 14:01:45 UTC 2009 Jeff Parsons + +Thu May 28 18:52:27 UTC 2009 Jeff Parsons + + * CIDLC/ExecutorMappingGenerator.cpp: + + Applied check for the command line option added in + + Thu May 28 14:01:45 UTC 2009 Jeff Parsons + + in several places needed for correct generation of + the executor IDL file. + +Thu May 28 14:01:45 UTC 2009 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed cut/paste error in comment. + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + + Added command line option to generate an IDL module that + encloses the entire executor IDL file, and + corresponding 'using namespace' declarations in the + servant and executor impl header files. This change is + a temporary fix for build errors occurring when facet + executor IDL generation is duplicated across IDL files + for components which have an inheritance relationship + but are located in separate translation units. Thanks + to Will Otte for reporting + the problem and suggesting the fix. + +Wed May 27 23:58:23 UTC 2009 William R. Otte + + * DAnCE/Plan_Generator/Plan_Generator.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * MPC/config/ciao_plan_generator.mpb: + + Updates for RACE. + +Fri May 22 12:58:33 UTC 2009 William R. Otte + + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/XMI.cpp: + + Warning fixes. + +Thu May 21 01:13:28 UTC 2009 Phil Mesnier + + * tools/Config_Handlers/ERE_Handler.h: + + fix fuzz. + +Wed May 20 01:41:39 UTC 2009 William R. Otte + + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerExt.idl: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/ERE_Handler.h: + * tools/Config_Handlers/Utils/Functors.h: + * tools/Config_Handlers/XMLSchema/Types.hpp: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/Literals.h: + * tools/XML/XML_Schema_Resolver.tpp: + * tools/XML/XercesString.h: + + Updates for borland. + +Thu May 14 19:12:56 UTC 2009 Abdullah Sowayan + + * MPC/config/cidlc.mpb: + + Replaced: specific(nmake, vc71, vc8, vc9, vc10) + With: specific(prop:microsoft) + +Tue May 12 19:04:31 UTC 2009 William R. Otte + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + + Compile fix. + +Fri May 8 16:30:19 UTC 2009 William R. Otte + + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/CCD_Handler.cpp: + * tools/Config_Handlers/CEPE_Handler.cpp: + * tools/Config_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/CRDD_Handler.cpp: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/Deployment.hpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp: + * tools/Config_Handlers/ERE_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/MDD_Handler.cpp: + * tools/Config_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/PSPE_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp: + * tools/Config_Handlers/RDD_Handler.cpp: + * tools/Config_Handlers/Req_Handler.cpp: + * tools/Config_Handlers/Utils/Functors.h: + * tools/Config_Handlers/XMI.hpp: + * tools/Config_Handlers/XMLSchema/Types.hpp: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/ccd.hpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdd.hpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/iad.hpp: + * tools/Config_Handlers/pcd.hpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/Config_Handlers/toplevel.cpp: + + New version of XSC generated code, and necessary porting in the handlers + as a potential fix for BCB2009 compilation issues. + +Mon May 4 15:52:14 UTC 2009 Phil Mesnier + + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + + Fuzz fix. + +Wed Apr 29 02:27:23 UTC 2009 William R. Otte + + * MPC/config/xscdefaults.mpb: + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/cid.xsd: + * docs/schema/pcd.xsd: + * docs/schema/toplevel.xsd: + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/Deployment.hpp: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/MDD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/XMI.hpp: + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/ccd.hpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdd.hpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/iad.hpp: + * tools/Config_Handlers/pcd.hpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/Config_Handlers/toplevel.cpp: + + Updates to work with SVN Head version of XSC. + +Fri Apr 24 09:18:44 UTC 2009 Vladimir Zykov + + * tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl: + + Extended a bit error reporting so that errors are not + missed in the final log. + +Thu Apr 23 11:07:37 UTC 2009 Johnny Willemsen + + * DAnCE/TargetManager/CmpClient.cpp + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp + Removed not needed unicode to ascii conversions + +Thu Apr 23 08:06:25 UTC 2009 Vladimir Zykov + + * bin/ciao_tests.lst: + * tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp: + * tests/IDL3_to_XMI/IDL2XMI_Test/IDL2XMI_Test.mpc: + * tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.h: + * tests/IDL3_to_XMI/IDL2XMI_Test/xmlvalidator.cpp: + * tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl: + + Added and enabled a test for bug#3616. It's marked as + unfixed since currently there is a problem with XML + generation for anonymous types. + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + + Fixed a compilation error for bug#3607. + +Wed Apr 22 14:56:08 UTC 2009 Vladimir Zykov + + * tests/IDL3_to_XMI/XMI_For_Array/test.idl: + * tests/IDL3_to_XMI/XMI_For_Array/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Array/run_test.pl: + * tests/IDL3_to_XMI/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Included_File/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Sequence/test.idl: + * tests/IDL3_to_XMI/XMI_For_Sequence/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl: + * tests/IDL3_to_XMI/Bug_3607_Regression/test.idl: + * tests/IDL3_to_XMI/Bug_3607_Regression/XMI.dtd: + * tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl: + + Extended and updated the tests. Now they share XMI.dtd which + is the same for all of them. + +Wed Apr 22 14:34:02 UTC 2009 Vladimir Zykov + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/be_global.cpp: + * tools/IDL3_to_XMI/Literals.cpp: + * tools/IDL3_to_XMI/Literals.h: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + + Fixed bug#3607. This also fixes a number of other things. In + particular XML generation for module reopening and forward + declared types. Proper xmi.id generation in a number of places. + XML generation for native types. Proper generation of associations + for arrays and sequences. Fixed several typos and beautified the + code. + +Tue Apr 21 06:50:32 UTC 2009 Johnny Willemsen + + * docs/fm/*: + Added FrameMaker 8 files for the CIAO pdf file. When making changes + make sure track changes is enabled. + + This documentation is based on original work contributed by + Object Computing, Inc. (OCI), St. Louis, MO, USA, + http://www.ociweb.com. + +Thu Apr 16 16:13:22 UTC 2009 Phil Mesnier + + * NEWS: + + Added new section anticipating version 0.7. + +Tue Apr 14 10:06:19 CDT 2009 Phil Mesnier + + * CIAO version 0.6.9 released. + +Tue Apr 14 13:57:16 UTC 2009 Phil Mesnier + + * NEWS: + + Reworded entries to be consistent with release note. + +Mon Apr 13 15:03:24 UTC 2009 Phil Mesnier + + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + + Scoreboard clean-up to avoid minimum corba builds for this test. + +Sun Apr 12 18:55:13 UTC 2009 Phil Mesnier + + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/EC/EC.mpc: + + Scoreboard clean-up ACE_FOR_TAO does not build CIDLC which is + required for these examples. + +Sun Apr 12 01:58:41 UTC 2009 William R. Otte + + * MPC/config/dance_repository_manager.mpb: + + Linking error on static builds. + +Fri Apr 10 17:36:19 UTC 2009 Phil Mesnier + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + + Add dependency on IORTable so that the ExecutionMangaer_Module + builds on clean environments. + +Fri Apr 10 03:10:46 UTC 2009 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + + ace_for_tao fixes. + +Thu Apr 9 20:54:33 UTC 2009 William R. Otte + + * MPC/config/ciao_client.mpb: + + static linking error. + +Thu Apr 9 20:44:31 UTC 2009 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/RedirectionService/RedirectionService.mpc: + + avoids minimum corba. + +Thu Apr 9 14:57:50 UTC 2009 Abdullah Sowayan + + * docs/CIAO.pdf: + + Updated the CIAO chapter of the Dev Guide. + +Thu Apr 9 13:20:22 UTC 2009 Johnny Willemsen + + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp + * examples/Hello/Sender/starter.cpp + * performance-tests/Protocols/Controller/Controller.cpp + Unicode changes + +Wed Apr 8 23:11:22 UTC 2009 William R. Otte + + * examples/Hello/descriptors/DeploymentPlan.cdp: + + Removed some unicode characters that may be causing problems + on some platforms. + +Wed Apr 8 18:14:30 UTC 2009 William R. Otte + + * ciao/Containers/Servant_Activator.cpp: + + I'm not sure the absent port activator is an error, changing it to + a warning. I'll investigate later. + +Wed Apr 8 05:09:48 UTC 2009 James H. Hill + + * docs/Porting_Hints.txt: + + Reformatted the document so that the text wraps around the + 80th column. + +Tue Apr 7 14:40:41 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Fuzz error. + +Tue Apr 7 14:37:18 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + + Compile error. + +Mon Apr 6 18:18:58 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/Name_Utilities.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Stab at a fix for a memory corruption during deployment. + +Mon Apr 6 13:26:08 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + + Fixed compile error. + +Sun Apr 5 20:34:22 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc: + + Changed parent from ciao_logger to dance_logger. + + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + + Properly check if _var is nil. + +Sat Apr 4 15:30:13 UTC 2009 Phil Mesnier + + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + Fix fuzz errors. + +Sat Apr 4 03:39:28 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + + Fixed a couple memory management issues. + +Mon Mar 23 12:51:22 UTC 2009 Johnny Willemsen + + * ciao/Logger/File_Logger_Backend.h + * ciao/Logger/Logger_Service.cpp + * ciao/Logger/Logger_Service.h + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp + * tests/CIAO_ComponentServer/Basic/client.cpp + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp + Fixed unicode compile problems + +Fri Mar 20 19:00:22 UTC 2009 Johnny Willemsen + + * DAnCE/DomainApplicationManager/Node_Locator.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + * DAnCE/tests/NameServiceTest/srv_main.cpp + * performance-tests/Benchmark/RoundTrip/client.cpp + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp + * performance-tests/Protocols/Controller/Controller.cpp + * performance-tests/Protocols/Receiver/Receiver_exec.cpp + * performance-tests/Protocols/Sender/Sender_exec.cpp + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp + * tests/CIAO_ComponentServer/Basic/client.cpp + * tools/Config_Handlers/Basic_Deployment_Data.hpp + Fixed unicode compile problems + +Fri Mar 20 15:54:22 UTC 2009 Johnny Willemsen + + * DAnCE/RedirectionService/CCMObjectLocator.h: + Added missing export macro to resolve link problems + with CB2009 + + * DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.h: + Layout changes + +Mon Mar 16 20:11:22 UTC 2009 Johnny Willemsen + + * DAnCE/RedirectionService/CCMObjectLocator.h: + Made destructor virtual + + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.h: + Layout changes + + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + Added naming + +Sun Mar 15 19:28:54 UTC 2009 Johnny Willemsen + + * MPC/config/ciao_executor.mpb: + Added ciao_container_base as base project, the generated svnt.h + files includes the EC.h file which includes the Container_BaseC.h + file. + +Fri Mar 13 08:00:54 UTC 2009 Johnny Willemsen + + * DAnCE/Starter/Starter.mpc: + Don't build with minimum corba + +Wed Mar 11 18:54:54 UTC 2009 Johnny Willemsen + + * MPC/config/ciaoidldefaults.mpb: + Added build_files as base project, that way also the mpc/mwc + files are added to the generated solution. This way we see + in the ms ide also for custom cidl projects the mpc files. + Thanks to Adam Mitz for suggesting this solution + +Wed Mar 11 12:40:08 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Updated workaround for cb2009 + +Tue Mar 10 13:03:08 UTC 2009 Johnny Willemsen + + * examples/Display/NavDisplayGUI_exec/RootPanel.cpp: + Fixed compile warning + +Tue Mar 10 11:39:08 UTC 2009 Johnny Willemsen + + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Utils_T.cpp: + * CIDLC/ServantSourceGenerator.cpp: + Moved static methods to CIAO::Servant namespace to fix + linker problems with the CB2009 compiler. + +Tue Mar 10 11:01:08 UTC 2009 Johnny Willemsen + + * DAnCE/TargetManager/TargetManager.mpc: + Added missing base project + +Mon Mar 9 13:39:08 UTC 2009 Johnny Willemsen + + * etc/*: + Added all CIAO doxygen files + +Mon Mar 8 12:50:15 UTC 2009 Johnny Willemsen + + * ciao/Containers/CIAO_Servant_Activator.mpc: + * MPC/config/ciao_servant_activator.mpb: + Disabled with minimum corba + +Mon Mar 8 12:42:15 UTC 2009 Johnny Willemsen + + * bin/generate_component_mpc.pl + * ciao/ComponentServer/CIAO_ComponentServer.mpc + * DAnCE/TargetManager/TargetManager.mpc + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc + * DAnCE/tests/CIAO/Components/SimpleNull.mpc + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc + * DAnCE/tests/CIAO/Components/SimpleUser.mpc + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc + * examples/DevGuideExamples/Messenger/Administrator.mpc + * examples/DevGuideExamples/Messenger/Messenger.mpc + * examples/DevGuideExamples/Messenger/Receiver.mpc + * examples/Display/Display_Base/Display_Base.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Display/RateGen/RateGen.mpc + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Null_Component/Null_Component.mpc + * examples/Null_Component/Null_Interface.mpc + * examples/Swapping/Hello_Base/Hello_Base.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * MPC/config/ciao_cs_client.mpb + * performance-tests/Benchmark/Benchmark.mpc + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/common/Protocols.mpc + * performance-tests/Protocols/Controller/Controller.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc + * tests/CIDL/CodeGen/Basic.mpc + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/Minimum/Minimum_Base/Minimum_Base.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + Use avoids_ace_for_tao as base project + +Mon Mar 8 10:38:15 UTC 2009 Johnny Willemsen + + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + * tools/IDL3_to_XMI/be_sunsoft.cpp: + Use the ACE format specifiers, migrated this from the tao_idl + compiler be_sunsoft.cpp to these files + +Mon Mar 8 09:44:15 UTC 2009 Johnny Willemsen + + * tests/IDL3_to_XMI/Bug_3607_Regression/*: + new test for 3607 + + * bin/ciao_tests.lst: + Added new test and enabled other idl3_to_xmi tests for fuzz + +Mon Mar 8 09:12:15 UTC 2009 Johnny Willemsen + + * bin/generate_component_mpc.pl: + Generate a seperate project for compiling the E.idl file, makes + it easier for parallel builds and incredibuild + + * examples/Hello/Receiver/Receiver.mpc: + Updated to use a seperate project for the E.idl file + + * MPC/config/cidlc.mpb: + Added support for vc10 + + * tools/Config_Handlers/XSCRT/Traversal.hpp: + Removed commented out code + +Mon Mar 8 08:31:15 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * MPC/config/ciao_cs_client.mpb: + ciao_cs_client_svnt needs threads + +Mon Mar 8 08:29:15 UTC 2009 Johnny Willemsen + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + * tools/IDL3_to_XMI/IDL3_TO_XMI.mpc: + Put the executables in CIAO_ROOT/bin, not ACE_ROOT/bin + + * MPC/config/taoidl3toidl2defaults.mpb: + * tests/IDL3_to_XMI/XMI_For_Array/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl: + updated because these executables are now put in CIAO_ROOT/bin + +Mon Mar 8 08:19:15 UTC 2009 Johnny Willemsen + + * examples/DevGuideExamples/Messenger/Messenger.mpc: + Removed not needed line + + * examples/DevGuideExamples/Messenger/Messenger_exec_i.h: + Updated include + +Sat Mar 7 15:40:15 UTC 2009 Johnny Willemsen + + * ciao/Logger/Logger_Service.cpp + * DAnCE/Starter/Starter.cpp + * DAnCE/Starter/Starter.h + * DAnCE/tests/NameServiceTest/srv_main.cpp + * examples/BasicSP/EC/controller.cpp + Unicode fixes + +Fri Mar 6 20:17:32 UTC 2009 Abdullah Sowayan + + * docs/CIAO.pdf: + + This work is based on the TAO 1.4a TAO Developers Guide chapter + on CIAO published by OCI, with some modification to bring the material + up to date. This is a continuing, the goal is to improve this + document with time to serve as the authoritative reference/documentation + for CIAO users. + + Thanks to OCI for making this chapter publicly available and allowing + us to modify it. + + +Fri Mar 6 18:54:15 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + Use ciao_logger as base project + + * examples/DevGuideExamples/Messenger/Messenger.mpc: + Layout changes + +Fri Mar 6 14:26:15 UTC 2009 Johnny Willemsen + + * DAnCE/TargetManager/DomainDataManager.cpp: + Resolve compile warnings + + * MPC/config/ciao_nodemanager_stub.mpb: + Use base project + +Fri Mar 6 12:01:15 UTC 2009 Johnny Willemsen + + * DAnCE/TargetManager/DomainDataManager.cpp + * DAnCE/TargetManager/ResourceCommitmentManager.cpp + layout changes + + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + Moved moc files to their own project to resolve build problems + build incredibuild + +Fri Mar 6 08:27:15 UTC 2009 Marcel Smit + + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * examples/Display/README.html: + Addapted to the new naming convention of + the dance executables. + +Thu Mar 5 18:22:15 UTC 2009 Johnny Willemsen + + * DAnCE/Deployment/DAnCE_Core.mpc: + Removed commented out line + + * DAnCE/TargetManager/CmpClient.cpp: + Datatype fix + + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TM_Client.mpc: + Updated to new CIAO + + * DAnCE/TargetManager/TargetManager_exec.cpp: + * DAnCE/TargetManager/TargetManager_exec.h: + Made compiling again, no testing has been done yet + + * DAnCE/TargetManager/TargetManagerExt.idl: + Doxygen change + + * tools/Config_Handlers/Config_Handlers.mpc: + No need to set dynamic flags + +Tue Mar 3 07:56:15 UTC 2009 Johnny Willemsen + + * examples/DevGuideExamples/Messenger/History_exec_i.cpp + * examples/DevGuideExamples/Messenger/History_exec_i.h + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp + * examples/DevGuideExamples/Messenger/Publication_exec_i.cpp + * examples/DevGuideExamples/Messenger/Publication_exec_i.h + * examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp + * examples/DevGuideExamples/Messenger/Runnable_exec_i.h + Fixed fuzz error + + * examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl + * examples/DevGuideExamples/Messenger/descriptors/run_test.pl + Fixed typo + +Mon Mar 2 09:48:15 UTC 2009 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * MPC/config/dance_repository_manager.mpb: + RepositoryManager requires zlib + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + Generate void as empty argument name to generate code that + follows the ACE coding conventions + + * tools/Config_Handlers/DnC_Dump.h: + Layout change + +Mon Mar 2 10:05:15 UTC 2009 Johnny Willemsen + + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp + * examples/DevGuideExamples/Messenger/descriptors/run_test.pl + * examples/DevGuideExamples/Messenger/History_exec_i.cpp + * examples/DevGuideExamples/Messenger/History_exec_i.h + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp + * examples/DevGuideExamples/Messenger/Messenger_exec_i.h + * examples/DevGuideExamples/Messenger/Publication_exec_i.cpp + * examples/DevGuideExamples/Messenger/Publication_exec_i.h + * examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp + * examples/DevGuideExamples/Messenger/Receiver_exec_i.h + * examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp + * examples/DevGuideExamples/Messenger/Runnable_exec_i.h + Minor improvements and simplification of this code + +Fri Feb 27 12:51:15 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + Fixed compile error + +Thu Feb 26 20:42:57 UTC 2009 Phil Mesnier + + * DAnCE/Logger/Logger_Service.cpp: + + Fix for TCHAR ambiguity. + +Tue Feb 24 16:00:32 UTC 2009 William R. Otte + + * examples/Hello/descriptors/NodeManagerMap.dat: + + Added some random newlines to make sure the EM doesn't crash + while parsing the NM file. + +Tue Feb 24 15:57:43 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * ciao/ComponentServer/CIAO_CS_Client.idl: + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h: + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_Properties.idl: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + + Added the ComponentInstallation and implementation to the CIAO + componentserver framework. + +Tue Feb 24 12:32:15 UTC 2009 Johnny Willemsen + + * DAnCE/Logger/Logger_Service.cpp: + * DAnCE/Starter/Starter.cpp: + Unicode fixes + +Tue Feb 24 10:47:54 UTC 2009 Marcel Smit + + * CIAO_DAnCE.mwc: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + Resolved linker errors. + +Mon Feb 23 16:06:15 UTC 2009 Johnny Willemsen + + * examples/Display/NavDisplayGUI_exec/Command.h + * examples/Display/NavDisplayGUI_exec/DetailView.cpp + * examples/Display/NavDisplayGUI_exec/DetailView.h + * examples/Display/NavDisplayGUI_exec/MapView.cpp + * examples/Display/NavDisplayGUI_exec/MapView.h + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp + * examples/Display/NavDisplayGUI_exec/NodeItem.cpp + * examples/Display/NavDisplayGUI_exec/NodeItem.h + * examples/Display/NavDisplayGUI_exec/RootPanel.cpp + * examples/Display/NavDisplayGUI_exec/RootPanel.h + * examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp + * examples/Display/NavDisplayGUI_exec/Worker.cpp + Converting this project to Qt4, compiles now + + * ciao/Servants/Swapping/Dynamic_Component_Servant_T.cpp: + Removed commented out code + +Mon Feb 23 16:03:15 UTC 2009 Johnny Willemsen + + * config/qt4_qt3support.mpb: + Added base project for qt4_qt3support + +Mon Feb 23 15:02:15 UTC 2009 Johnny Willemsen + + * examples/Display/Display_Base/Display_Base.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/lib + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc + * examples/Display/RateGen/RateGen.mpc + Put all libs in a new lib directory + +Mon Feb 23 14:42:15 UTC 2009 Johnny Willemsen + + * tests/Bug_2130_Regression/descriptors/run_test.pl: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + Made this test compile again + +Mon Feb 23 13:58:15 UTC 2009 Johnny Willemsen + + * DAnCE/TargetManager/TargetManager_exec.cpp + * DAnCE/TargetManager/TargetManager_exec.h + Removed ciao_preactivate/ciao_postactivate + +Mon Feb 23 13:25:15 UTC 2009 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + Use seperate idl project and removed dummy label, it compiles, testing + has still to be done + +Mon Feb 23 11:30:15 UTC 2009 Johnny Willemsen + + * ciao/Servants/Home_Servant_Impl_T.cpp: + Const change + + * DAnCE/TargetManager/CmpClient.cpp: + Fixed compile error + + * DAnCE/TargetManager/DomainDataManager.cpp: + Fixed some errors and commented out some code blocks that + have to be reworked + + * DAnCE/TargetManager/DomainDataManager.h: + Updated to the new ciao, partly disabled + + * DAnCE/TargetManager/DomainEvents.idl: + Updated include + + * DAnCE/TargetManager/ResourceCommitmentManager.cpp: + Const change + + * DAnCE/TargetManager/TargetManager_exec.cpp: + * DAnCE/TargetManager/TargetManager_exec.h: + Fixed compile errors + + * DAnCE/TargetManager/TargetManagerExt.idl: + Fixed type + + * DAnCE/TargetManager/TargetManagerImpl.idl: + Fixed include + + * DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc: + * DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc + Don't use ciao_output for a test + + * MPC/config/dance_domain_application_manager.mpb: + Add naming as base + +Mon Feb 23 09:52:15 UTC 2009 Johnny Willemsen + + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/descriptors/run_test.pl + * examples/BasicSP/EC/EC.mpc + * examples/BasicSP/lib: + Put all libs in the new lib directory + +Mon Feb 23 09:29:15 UTC 2009 Johnny Willemsen + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + Updated because of the fact that libs are not put in ACE_ROOT/lib + anymore + +Mon Feb 23 09:22:15 UTC 2009 Johnny Willemsen + + * examples/Null_Component/descriptors/run_test.pl: + Added libpath + +Mon Feb 23 08:19:15 UTC 2009 Johnny Willemsen + + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc + Fixed build order + +Sun Feb 22 16:34:18 UTC 2009 Marcel Smit + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp + Resolved a few typos. + + * examples/Hello/descriptors/run_NodeDaemons.pl + * examples/Hello/step-by-step.html + Adapted to match with the current status. + +Sun Feb 22 07:27:18 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp + * ciao/Containers/Container_Base.cpp + * ciao/Containers/Servant_Activator.cpp + * ciao/Containers/Servant_Activator.h + * ciao/Containers/Session/Session_Container.cpp + * ciao/Contexts/Context_Impl_T.cpp + * ciao/Server_init.cpp + * DAnCE/DomainApplication/Domain_Application_Impl.cpp + * DAnCE/NodeApplication/NodeApplication_Impl.cpp + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp + * DAnCE/RepositoryManager/Options.cpp + * DAnCE/RepositoryManager/RMadmin.cpp + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/TargetManager/DomainDataManager.cpp + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp + * examples/BasicSP/BMDevice/BMDevice_exec.cpp + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp + * examples/BasicSP/EC/client.cpp + * examples/BasicSP/EC/controller.cpp + * examples/Display/RateGen/controller.cpp + * examples/Hello/Sender/Sender_exec.cpp + * examples/Hello/Sender/starter.cpp + * examples/Swapping/Receiver/Receiver_exec.cpp + * examples/Swapping/Sender/Sender_exec.cpp + * examples/Swapping/Sender/Sender_exec_1.cpp + * examples/Swapping/Sender/Sender_exec_2.cpp + * examples/Swapping/Sender/starter.cpp + * performance-tests/Benchmark/Multi_Threaded/client.cpp + * performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp + * tools/Config_Handlers/DnC_Dump.cpp + * tools/Config_Handlers/DnC_Dump_T.cpp + * tools/Config_Handlers/IDD_Handler.cpp + * tools/Config_Handlers/MDD_Handler.cpp + * tools/IDL3_to_XMI/be_helper.cpp + Updated debug statements + +Sun Feb 22 07:15:18 UTC 2009 Johnny Willemsen + + * examples/Hello/descriptors/run_test.pl + * examples/Hello/descriptors/run_test_without_ns.pl + * examples/Hello/descriptors_RTCCM/rt_run_test.pl + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/lib + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + Put all libs in a project specific lib directory and then add + this directory to the libpath in the perl scripts. + +Sat Feb 21 20:06:18 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp + * examples/Display/GPS/GPS_exec.cpp + * examples/Hello/Sender/Sender_exec.cpp + * examples/Swapping/Sender/Sender_exec.cpp + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp + Updated debug statements + + * examples/Hello/descriptors/DeploymentPlan.cdp + Reverted accident checkin + +Sat Feb 21 19:53:18 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + Small improvements to debug statements and nil usage + + * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl + * examples/BasicSP/descriptors/run_test.pl + * examples/Display/descriptors/basicNodeDaemon.pl + * examples/Display/descriptors/run_NodeDaemons.pl + * examples/Display/descriptors/run_test_without_ns.pl + * examples/Hello/descriptors/DeploymentPlan.cdp + * examples/Hello/descriptors/run_NodeDaemons.pl + * examples/Hello/descriptors/run_test.pl + * examples/Hello/descriptors/run_test_without_ns.pl + * examples/Hello/descriptors_RTCCM/rt_run_test.pl + * examples/Null_Component/descriptors/run_test.pl + * tests/Bug_2130_Regression/descriptors/run_test.pl + Use DANCE_ROOT and dance_node_manager + +Fri Feb 20 14:49:18 UTC 2009 Johnny Willemsen + + * ccm/CCM.mpc + * ccm/ComponentServer/CCM_ComponentServer.mpc + * ciao/ComponentServer/CIAO_ComponentServer.mpc + * ciao/Contexts/Context.mpc + * ciao/Servants/Servants.mpc + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/DomainApplication/DomainApplication.mpc + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc + * DAnCE/ExecutionManager/ExecutionManager.mpc + * DAnCE/Plan_Launcher/Plan_Launcher.mpc + * DAnCE/RedirectionService/RedirectionService.mpc + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc + * DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc + * DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * MPC/config/ccm_stub.mpb + * MPC/config/ciao_client.mpb + * MPC/config/ciao_output.mpb + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc + * performance-tests/Protocols/common/Protocols.mpc + * performance-tests/Protocols/Controller/Controller.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc + * tools/IDL3_to_XMI/IDL3_TO_XMI.mpc + Added a ciao_output which is used by the core CIAO/DAnCE libraries and + then only these are installed under ACE_ROOT/lib, all examples/tests + just put their libs in the current directory. That fixes the clash + of creating the same dll's for different tests that are all placed + in ACE_ROOT/lib + +Fri Feb 20 12:36:18 UTC 2009 Marcel Smit + + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/EC/EC.mpc: + Removed 'cidlflags -= --' and 'cidlflags += .... --'. + See also Bugzilla #3520 + + * examples/Hello/step-by-step.html: + Changed CVS in SVN. + Hello example is located in $CIAO_ROOT/examples. + +Fri Feb 20 11:11:18 UTC 2009 Johnny Willemsen + + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + Fixed this MPC file + +Fri Feb 20 09:53:18 UTC 2009 Johnny Willemsen + + * MPC/config/taoidl3toidl2defaults.mpb: + Updated to get CIAO_ROOT + +Thu Feb 19 22:54:14 UTC 2009 Phil Mesnier + + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h: + + Fuzz fix. + +Thu Feb 19 19:21:46 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h: + * ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp: + * DAnCE/NodeApplication/ComponentInstallation_Impl.h: + * DAnCE/NodeApplication/ComponentInstallation_Impl.cpp: + + Moved these files to CIAO. + +Thu Feb 19 15:18:18 UTC 2009 Johnny Willemsen + + * MPC/config/ccm_stub.mpb + * MPC/config/taoidl3toidl2defaults.mpb: + Updated to get CIAO_ROOT/ccm + +Thu Feb 19 13:13:18 UTC 2009 Johnny Willemsen + + * MPC/config/ciaoidldefaults.mpb: + New base project for ciao projects that use idl. This adds CIAO_ROOT + and CIAO_ROOT/ccm to the idl compiler inclues + + * MPC/config/ciaolib_with_idl.mpb: + New ciao base project + + * bin/generate_component_mpc.pl + * ccm/CCM.mpc + * ccm/ComponentServer/CCM_ComponentServer.mpc + * ciao/CIAO.mpc + * ciao/ComponentServer/CIAO_ComponentServer.mpc + * ciao/Containers/CIAO_Servant_Activator.mpc + * ciao/Servants/Servants.mpc + * DAnCE/Deployment/DAnCE_Core.mpc + * DAnCE/Interfaces/Interfaces.mpc + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc + * DAnCE/tests/CIAO/Components/SimpleNull.mpc + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc + * DAnCE/tests/CIAO/Components/SimpleUser.mpc + * DAnCE/tests/NameServiceTest/NameServiceTest.mpc + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc + * examples/BasicSP/BasicSP.mpc + * examples/BasicSP/BMClosedED/BMClosedED.mpc + * examples/BasicSP/BMDevice/BMDevice.mpc + * examples/BasicSP/BMDisplay/BMDisplay.mpc + * examples/BasicSP/EC/EC.mpc + * examples/DevGuideExamples/Messenger/Administrator.mpc + * examples/DevGuideExamples/Messenger/Messenger.mpc + * examples/DevGuideExamples/Messenger/Receiver.mpc + * examples/Display/Display_Base/Display_Base.mpc + * examples/Display/GPS/GPS.mpc + * examples/Display/NavDisplay/NavDisplay.mpc + * examples/Display/RateGen/RateGen.mpc + * examples/Hello/Hello_Base/Hello_Base.mpc + * examples/Hello/Receiver/Receiver.mpc + * examples/Hello/Sender/Sender.mpc + * examples/Null_Component/Null_Component.mpc + * examples/Null_Component/Null_Interface.mpc + * examples/Null_Component/StaticDAnCEApp.mpc + * examples/Swapping/Hello_Base/Hello_Base.mpc + * examples/Swapping/Receiver/Receiver.mpc + * examples/Swapping/Sender/Sender.mpc + * performance-tests/Benchmark/Benchmark.mpc + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc + * performance-tests/Protocols/common/Protocols.mpc + * performance-tests/Protocols/Receiver/Receiver.mpc + * performance-tests/Protocols/Sender/Sender.mpc + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc + * tests/CIDL/CodeGen/Basic.mpc + * tests/CIDL/CodeGen/CodeGen.mpc + * tests/Minimum/Minimum_Base/Minimum_Base.mpc + * tests/Minimum/Receiver/Receiver.mpc + * tests/Minimum/Sender/Sender.mpc + * tools/Config_Handlers/DynAny_Handler/test.mpc + Use the new base projects + +Thu Feb 19 12:25:18 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/DataType_Handler.cpp: + Fixed GCC warning + +Thu Feb 19 09:27:18 UTC 2009 Marcel Smit + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + Resolved linking error. + +Wed Feb 18 20:52:18 UTC 2009 Johnny Willemsen + + * DAnCE/RepositoryManager/RepositoryManager.mpc: + use the new minizip base project + +Wed Feb 18 20:45:18 UTC 2009 Johnny Willemsen + + * ciao/Containers/CIAO_Servant_Activator.mpc + Set correct -I option + +Wed Feb 18 20:26:18 UTC 2009 Johnny Willemsen + + * ccm/ComponentServer/CCM_ComponentServer.mpc + Set correct -I option + +Wed Feb 18 20:21:18 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + Set correct -I option + +Wed Feb 18 20:01:18 UTC 2009 Johnny Willemsen + + * ccm/CCM.mpc: + Set correct -I option + +Wed Feb 18 12:31:18 UTC 2009 Marcel Smit + + * CIAO-INSTALL.html: + To build CIAO using Xerces one has to set xerces3=1 or + xerces2=1 in default.features. + +Wed Feb 18 08:51:18 UTC 2009 Marcel Smit + + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + * MPC/config/dance_repository_manager.mpb: + * MPC/config/dance_repository_manager_base.mpb: + Resolved minor fuzz errors. + +Wed Feb 18 00:52:18 UTC 2009 William R. Otte + + * DAnCE/Deployment/Deployment_RepositoryManager.idl: + * DAnCE/RepositoryManager/DAnCE_RepositoryManager_Module_Export.h: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/RepositoryManager/RepositoryManager_Impl.h: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Exec.cpp: + * DAnCE/RepositoryManager/Repository_Manager_Module.h: + * DAnCE/RepositoryManager/Repository_Manager_Module.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.h: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + * MPC/config/dance_repository_manager.mpb: + * MPC/config/dance_repository_manager_base.mpb: + + Initial porting work. Still untested, so it will remain + disabled for the time being using dummy_label. + +Mon Feb 16 12:53:37 UTC 2009 Marcel Smit + + * CIAO-INSTALL.html: + Updated because "Boost System" and "Boost Regex" were also + needed to compile CIAO with Visual Studio. + +Mon Feb 16 09:55:37 UTC 2009 Johnny Willemsen + + * CIAO_DAnCE.mwc: + Updated because of the refactoring + +Fri Feb 13 19:58:37 UTC 2009 William R. Otte + + * DAnCE/Plan_Generator/Plan_Generator.mpc: + * MPC/config/dance_plan_generator.mpc: + + Re-enabled the plan generator. + +Fri Feb 13 18:20:14 UTC 2009 William R. Otte + + * bin/ciao_tests.lst: + + Fixed tests. + +Fri Feb 13 13:58:38 UTC 2009 William R. Otte + + * MPC/config/ciao_client.mpb: + + linking error. + +Fri Feb 13 13:21:48 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + + Compilation fix. + +Fri Feb 13 13:14:27 UTC 2009 William R. Otte + + * DAnCE/Deployment.mwc: + + Removed this file. + +Fri Feb 13 01:37:22 UTC 2009 William R. Otte + + * ciao/Version.h: + + Version string was incorrect. + +Fri Feb 13 01:30:34 UTC 2009 William R. Otte + + * MPC/config/ciao_componentserver_stub.mpb: + * MPC/config/ciao_session_container.mpb: + + Additional compile fixes. + +Fri Feb 13 01:00:01 UTC 2009 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/NodeManager/NodeManager.mpc: + * MPC/config/ciao_componentserver_stub.mpb: + * MPC/config/dance_node_application.mpb: + * MPC/config/dance_node_application_manager.mpb: + * MPC/config/dance_node_manager.mpb: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + + Additional compile fixes. + +Thu Feb 12 22:47:28 UTC 2009 William R. Otte + + * DAnCE/Starter/Starter.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + + Compile fixes. + +Thu Feb 12 19:05:41 UTC 2009 William R. Otte + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + + Compile fix. + +Thu Feb 12 18:37:35 UTC 2009 William R. Otte + + * DAnCE/DomainApplication/Domain_Application_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/RedirectionService/RedirectionService.h: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + + Compile fixes. + +Thu Feb 12 18:33:59 UTC 2009 William R. Otte + + * DAnCE/RedirectionService/NameServiceRedirection.h: + + Compile fixes. + +Thu Feb 12 18:31:40 UTC 2009 William R. Otte + + * DAnCE/Logger/Logger_Service.h: + * DAnCE/Logger/Logger_Service.cpp: + * ciao/Logger/Logger_Service.h: + * ciao/Logger/Logger_Service.cpp: + + Compile fixes. + +Thu Feb 12 17:48:35 UTC 2009 William R. Otte + + * examples/DevGuideExamples/Messenger/Receiver.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + + Linking fixes. + +Thu Feb 12 16:52:56 UTC 2009 William R. Otte + + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + + Compile fixes. + +Thu Feb 12 16:18:49 UTC 2009 William R. Otte + + * DAnCE/Logger/DAnCELoggerFactory.h: + * DAnCE/Logger/Logger_Service.h: + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + + Compile/link fixes. + + * MPC/config/ciao_config_manager.mpb: + + Removed svn:executable property. + + * MPC/config/ciaocidldefaults.mpb: + + Ported in pre-merge fixes. + + * DAnCE/Starter/DAnCELoggerFactory.h: + + Removed this file. + +Thu Feb 12 15:52:16 UTC 2009 William R. Otte + + * DAnCE/RedirectionService/RedirectionService.mpc: + + Linking error. + +Thu Feb 12 15:15:11 UTC 2009 William R. Otte + + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * MPC/config/ciao_logger.mpb: + * MPC/config/dance_logger.mpb: + + Ordering/linking/build issues. + +Thu Feb 12 13:34:33 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/NodeApplicationManager-NodeApplication/NAM_NA.mpc: + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + + Fuzz fixes. + + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/Display/RateGen/RateGen.mpc: + + Disabled this example until it can be ported. + + * DAnCE/tests/NodeApplicationManager-NodeApplication/NodeApplicationManager-NodeApplication.mpc: + + Removed this file. + +Thu Feb 12 10:36:44 UTC 2009 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + Fixed fuzz errors + +Wed Feb 11 20:56:24 UTC 2009 William R. Otte + + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_domainapplicationmanager_dnc.mpb: + * MPC/config/ciao_events_base_dnc.mpb: + * MPC/config/ciao_events_dnc.mpb: + * MPC/config/ciao_rtevent_dnc.mpb: + * MPC/config/ciao_servant_dnc.mpb: + * MPC/config/ciao_static_dnc_app.mpb: + + _dnc_ projects are obsolete. + + * tools/Config_Handlers/CIAO_Events: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h: + * tools/Config_Handlers/CIAO_Events/test.cpp: + + These handlers are obsolete, and have been removed along with + ciaosvcs. This infrastructure will hopefully be replaced soon + with the connector framework. + +Wed Feb 11 20:01:10 UTC 2009 William R. Otte + + * docs/Porting_Hints.txt: + * NEWS: + + Porting hints for the new DAnCE. + +Wed Feb 11 19:33:59 UTC 2009 William R. Otte + + * ChangeLog: + * DAnCE/DomainApplication/Domain_Application_Impl.h: + * DAnCE/Logger/File_Logger_Backend.h: + * DAnCE/Logger/File_Logger_Backend.cpp: + * DAnCE/Logger/Log_Macros.h: + * DAnCE/Logger/Logger_Service.h: + * DAnCE/Logger/Logger_Service.cpp: + * DAnCE/NodeApplication/Name_Utilities.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/RedirectionService/RedirectionService.h: + * DAnCE/Starter/DAnCELoggerFactory.h: + * DAnCE/Starter/Starter.h: + * DAnCE/Starter/Starter.mpc: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + * DAnCE/tests/DeploymentPlanDump/DeploymentPlanDump.mpc: + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc: + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + * DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc: + * DAnCE/tests/DeploymentTest1/test.cpp: + * DAnCE/tests/MocksTest/MockObjectHome.h: + * DAnCE/tests/MocksTest/MockObjectHome.cpp: + * DAnCE/tests/MocksTest/MocksTest.cpp: + * DAnCE/tests/NameServiceTest/DummyImpl.h: + * DAnCE/tests/NameServiceTest/DummyImpl.cpp: + * DAnCE/tests/NameServiceTest/RegistrationPath.h: + * DAnCE/tests/NameServiceTest/clt_main.cpp: + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication/NodeApplicationManager-NodeApplication.mpc: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + * DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc: + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.h: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp: + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + * DAnCE/tests/ObjectLocatorTest/RegistrationPath.h: + * DAnCE/tests/ObjectLocatorTest/clt_main.cpp: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.h: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp: + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * DAnCE/tests/RedirectionServiceTest/RegistrationPath.h: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + * MPC/config/ciao_logger.mpb: + * MPC/config/dance_logger.mpb: + * ciao/CIAO.mpc: + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/Configurator_Factory.h: + * ciao/ComponentServer/Configurator_Factory.cpp: + * ciao/ComponentServer/Configurators/Config_Manager.cpp: + * ciao/ComponentServer/Configurators/Configurators.mpc: + * ciao/ComponentServer/Configurators/NoOp/NoOp_Configurator.mpc: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/CIAOLoggerFactory.h: + * ciao/Logger/File_Logger_Backend.h: + * ciao/Logger/File_Logger_Backend.cpp: + * ciao/Logger/Log_Macros.h: + * ciao/Logger/Logger_Service.h: + * ciao/Logger/Logger_Service.cpp: + * ciao/Servants/Servants.mpc: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp: + * tests/CIAO_ComponentServer/Activator/Activator.mpc: + * tests/CIAO_ComponentServer/Basic/Basic.mpc: + * tools/XML/XML_Schema_Resolver.cpp: + + Fuzz errors. + +Wed Feb 11 19:21:09 UTC 2009 William R. Otte + + * NEWS: + + Updated news file. + +Wed Feb 11 19:05:10 UTC 2009 William R. Otte + + * tools/XML/XML_Helper.tpp: + + Ported writing code to xerces 3. + +Wed Feb 11 16:19:40 UTC 2009 William R. Otte + + * CIAO_TAO.mwc: + + Added ccm to this workspace. + +Wed Feb 11 16:01:21 UTC 2009 William R. Otte + + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + + Removed ciaosvcs. + +Wed Feb 11 15:57:38 UTC 2009 William R. Otte + + * MPC/config/ciaocidldefaults.mpb: + + Fixed build order. + + * MPC/config/cidlc.mpb: + + Removed boost_system from the base projects. + + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp: + * tools/XML/XML_Helper.tpp: + + Warning fixes. + +Wed Feb 11 14:46:15 UTC 2009 William R. Otte + + * CCF: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/Documentation/Build.html: + * CIAO-INSTALL.html: + * CIAO.mwc: + * CIAO_DAnCE.mwc: + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + * CIDLC: + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * COPYING: + * ChangeLog: + * DAnCE/Deployment: + * DAnCE/Deployment.mwc: + * DAnCE/Deployment/DAnCE_Core.mpc: + * DAnCE/Deployment/DAnCE_Loader.h: + * DAnCE/Deployment/DAnCE_Properties.idl: + * DAnCE/Deployment/Deployment.idl: + * DAnCE/Deployment/Deployment_Application.idl: + * DAnCE/Deployment/Deployment_ApplicationManager.idl: + * DAnCE/Deployment/Deployment_Base.idl: + * DAnCE/Deployment/Deployment_Connection.idl: + * DAnCE/Deployment/Deployment_Core.idl: + * DAnCE/Deployment/Deployment_Data.idl: + * DAnCE/Deployment/Deployment_DeploymentPlan.idl: + * DAnCE/Deployment/Deployment_DomainApplication.idl: + * DAnCE/Deployment/Deployment_DomainApplicationManager.idl: + * DAnCE/Deployment/Deployment_ExecutionManager.idl: + * DAnCE/Deployment/Deployment_NodeApplication.idl: + * DAnCE/Deployment/Deployment_NodeApplicationManager.idl: + * DAnCE/Deployment/Deployment_NodeManager.idl: + * DAnCE/Deployment/Deployment_Packaging_Data.idl: + * DAnCE/Deployment/Deployment_PlanError.idl: + * DAnCE/Deployment/Deployment_RepositoryManager.idl: + * DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl: + * DAnCE/Deployment/Deployment_TargetData.idl: + * DAnCE/Deployment/Deployment_TargetManager.idl: + * DAnCE/Deployment/Deployment_common.h: + * DAnCE/Deployment/Deployment_stub_export.h: + * DAnCE/Deployment/Deployment_svnt_export.h: + * DAnCE/Deployment/Module_Main.h: + * DAnCE/DomainApplication: + * DAnCE/DomainApplication/DomainApplication.mpc: + * DAnCE/DomainApplication/Domain_Application_Export.h: + * DAnCE/DomainApplication/Domain_Application_Impl.h: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager: + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.h: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager: + * DAnCE/ExecutionManager/DAnCE_ExecutionManager_Module_Export.h: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager_Export.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Exec.cpp: + * DAnCE/Interfaces: + * DAnCE/Interfaces/ExecutionManagerDaemon.idl: + * DAnCE/Interfaces/ExecutionManager_stub_export.h: + * DAnCE/Interfaces/Interfaces.mpc: + * DAnCE/Interfaces/NodeManagerDaemon.idl: + * DAnCE/Interfaces/NodeManager_stub_export.h: + * DAnCE/Interfaces/NodeManager_svnt_export.h: + * DAnCE/Interfaces/README: + * DAnCE/Logger: + * DAnCE/Logger/DAnCE_Logger_Export.h: + * DAnCE/Logger/File_Logger_Backend.h: + * DAnCE/Logger/File_Logger_Backend.cpp: + * DAnCE/Logger/Log_Macros.h: + * DAnCE/Logger/Logger.mpc: + * DAnCE/Logger/Logger_Service.h: + * DAnCE/Logger/Logger_Service.cpp: + * DAnCE/NodeApplication: + * DAnCE/NodeApplication/ComponentAttributesSetter.h: + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + * DAnCE/NodeApplication/ComponentInstallation_Impl.h: + * DAnCE/NodeApplication/ComponentInstallation_Impl.cpp: + * DAnCE/NodeApplication/Name_Utilities.h: + * DAnCE/NodeApplication/Name_Utilities.cpp: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/NodeApplication_Export.h: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/ServerActivator_Impl.h: + * DAnCE/NodeApplication/ServerActivator_Impl.cpp: + * DAnCE/NodeApplicationManager: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Export.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager: + * DAnCE/NodeManager/DAnCE_NodeManager_Module_Export.h: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/NodeManager_Export.h: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Exec.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/NodeManager/README: + * DAnCE/Plan_Generator/Plan_Generator.mpc: + * DAnCE/Plan_Launcher: + * DAnCE/Plan_Launcher/Plan_Launcher.h: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl_Export.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module_Export.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module_Export.h: + * DAnCE/Plan_Launcher/launcher.cpp: + * DAnCE/RedirectionService: + * DAnCE/RedirectionService/CCMObjectLocator.h: + * DAnCE/RedirectionService/CCMObjectLocator.cpp: + * DAnCE/RedirectionService/NameServiceRedirection.h: + * DAnCE/RedirectionService/NameServiceRedirection.cpp: + * DAnCE/RedirectionService/RedirectionService.h: + * DAnCE/RedirectionService/RedirectionService.cpp: + * DAnCE/RedirectionService/RedirectionService.mpc: + * DAnCE/RedirectionService/RedirectionService_Export.h: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/Starter: + * DAnCE/Starter/DAnCELoggerFactory.h: + * DAnCE/Starter/Starter.h: + * DAnCE/Starter/Starter.cpp: + * DAnCE/Starter/Starter.mpc: + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/Utils: + * DAnCE/Utils/DAnCE_Utils.mpc: + * DAnCE/Utils/DAnCE_Utils_Export.h: + * DAnCE/Utils/Plan_Handler.h: + * DAnCE/Utils/Plan_Handler.cpp: + * DAnCE/bin: + * DAnCE/bin/.empty: + * DAnCE/bin/PythonDAnCE: + * DAnCE/bin/PythonDAnCE/__init__.py: + * DAnCE/bin/PythonDAnCE/generator: + * DAnCE/bin/PythonDAnCE/generator/__init__.py: + * DAnCE/bin/PythonDAnCE/generator/_path.py: + * DAnCE/bin/PythonDAnCE/generator/artifact.py: + * DAnCE/bin/PythonDAnCE/generator/comp_impl.py: + * DAnCE/bin/PythonDAnCE/generator/comp_inst.py: + * DAnCE/bin/PythonDAnCE/generator/footer.py: + * DAnCE/bin/PythonDAnCE/generator/header.py: + * DAnCE/bin/PythonDAnCE/generator/home_impl.py: + * DAnCE/bin/PythonDAnCE/generator/home_inst.py: + * DAnCE/bin/PythonDAnCE/generator/homed_comp_impl.py: + * DAnCE/bin/PythonDAnCE/generator/homed_comp_inst.py: + * DAnCE/bin/PythonDAnCE/generator/templet.py: + * DAnCE/bin/generate_plan.py: + * DAnCE/lib: + * DAnCE/lib/.empty: + * DAnCE/tests: + * DAnCE/tests/CIAO: + * DAnCE/tests/CIAO/Components: + * DAnCE/tests/CIAO/Components/SimpleAttribute.cidl: + * DAnCE/tests/CIAO/Components/SimpleAttribute.idl: + * DAnCE/tests/CIAO/Components/SimpleAttribute.mpc: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleAttribute_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleAttribute_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon.idl: + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * DAnCE/tests/CIAO/Components/SimpleCommon_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer.cidl: + * DAnCE/tests/CIAO/Components/SimpleConsumer.idl: + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter.cidl: + * DAnCE/tests/CIAO/Components/SimpleEmitter.idl: + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.idl: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull.cidl: + * DAnCE/tests/CIAO/Components/SimpleNull.idl: + * DAnCE/tests/CIAO/Components/SimpleNull.mpc: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleNull_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleNull_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider.cidl: + * DAnCE/tests/CIAO/Components/SimpleProvider.idl: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher.cidl: + * DAnCE/tests/CIAO/Components/SimplePublisher.idl: + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_stub_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleUser.idl: + * DAnCE/tests/CIAO/Components/SimpleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_svnt_export.h: + * DAnCE/tests/CIAO/ExecutionManager-Deployments: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments: + * DAnCE/tests/CIAO/NodeManager-Deployments/EmitsConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/MultiplexConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/PublishConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleAttributeExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + * DAnCE/tests/DeploymentPlanDump: + * DAnCE/tests/DeploymentPlanDump/CcmDance2-host1.cdp: + * DAnCE/tests/DeploymentPlanDump/CcmDance2-host2.cdp: + * DAnCE/tests/DeploymentPlanDump/CcmDance2.cdp: + * DAnCE/tests/DeploymentPlanDump/CcmDance4-host1.cdp: + * DAnCE/tests/DeploymentPlanDump/CcmDance4-host2.cdp: + * DAnCE/tests/DeploymentPlanDump/DeploymentPlanDump.mpc: + * DAnCE/tests/DeploymentPlanDump/NewCcmDance1.cdp: + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/DeploymentPlanTestReferences: + * DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc: + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + * DAnCE/tests/DeploymentTest1: + * DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc: + * DAnCE/tests/DeploymentTest1/test.cpp: + * DAnCE/tests/MocksTest: + * DAnCE/tests/MocksTest/MockObjectHome.h: + * DAnCE/tests/MocksTest/MockObjectHome.cpp: + * DAnCE/tests/MocksTest/MockTest.cdp: + * DAnCE/tests/MocksTest/MockTest.mpc: + * DAnCE/tests/MocksTest/MocksTest.cpp: + * DAnCE/tests/MocksTest/MocksTest_Export.h: + * DAnCE/tests/MocksTest/plCommand.In: + * DAnCE/tests/MocksTest/run_test.pl: + * DAnCE/tests/NameServiceTest: + * DAnCE/tests/NameServiceTest/Dummy.idl: + * DAnCE/tests/NameServiceTest/DummyImpl.h: + * DAnCE/tests/NameServiceTest/DummyImpl.cpp: + * DAnCE/tests/NameServiceTest/NameServiceTest.mpc: + * DAnCE/tests/NameServiceTest/RegistrationPath.h: + * DAnCE/tests/NameServiceTest/clt_main.cpp: + * DAnCE/tests/NameServiceTest/run_test.pl: + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication: + * DAnCE/tests/NodeApplicationManager-NodeApplication/NodeApplicationManager-NodeApplication.mpc: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + * DAnCE/tests/NodeManager-NodeApplicationManager: + * DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc: + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + * DAnCE/tests/ObjectLocatorTest: + * DAnCE/tests/ObjectLocatorTest/Dummy.idl: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.h: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp: + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + * DAnCE/tests/ObjectLocatorTest/RegistrationPath.h: + * DAnCE/tests/ObjectLocatorTest/clt_main.cpp: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest: + * DAnCE/tests/RedirectionServiceTest/Dummy.idl: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.h: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp: + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * DAnCE/tests/RedirectionServiceTest/RegistrationPath.h: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + * DAnCE/tests/scripts: + * DAnCE/tests/scripts/BasicSP: + * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl: + * DAnCE/tests/scripts/BasicSP/basicsp.dat: + * MPC: + * MPC/config/ccm.mpb: + * MPC/config/ccm_componentserver_stub.mpb: + * MPC/config/ccm_componentserver_svnt.mpb: + * MPC/config/ccm_configvalue.mpb: + * MPC/config/ccm_cookie.mpb: + * MPC/config/ccm_executor.mpb: + * MPC/config/ccm_stub.mpb: + * MPC/config/ccm_svnt.mpb: + * MPC/config/ciao.mpb: + * MPC/config/ciao_client.mpb: + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_componentserver_configurator.mpb: + * MPC/config/ciao_componentserver_stub.mpb: + * MPC/config/ciao_componentserver_svnt.mpb: + * MPC/config/ciao_config_handlers.mpb: + * MPC/config/ciao_config_handlers_base.mpb: + * MPC/config/ciao_config_manager.mpb: + * MPC/config/ciao_container_base.mpb: + * MPC/config/ciao_context_impl.mpb: + * MPC/config/ciao_cs_client.mpb: + * MPC/config/ciao_domainapplicationmanager_dnc.mpb: + * MPC/config/ciao_events_base_dnc.mpb: + * MPC/config/ciao_events_dnc.mpb: + * MPC/config/ciao_exe.mpb: + * MPC/config/ciao_executionmanager_stub.mpb: + * MPC/config/ciao_executor.mpb: + * MPC/config/ciao_lib.mpb: + * MPC/config/ciao_logger.mpb: + * MPC/config/ciao_nodeapplication.mpb: + * MPC/config/ciao_nodemanager_stub.mpb: + * MPC/config/ciao_noop_configurator.mpb: + * MPC/config/ciao_port_activator_stub.mpb: + * MPC/config/ciao_servant.mpb: + * MPC/config/ciao_servant_activator.mpb: + * MPC/config/ciao_servant_dnc.mpb: + * MPC/config/ciao_server.mpb: + * MPC/config/ciao_session_container.mpb: + * MPC/config/ciao_targetmanager_stub.mpb: + * MPC/config/ciao_targetmanager_svnt.mpb: + * MPC/config/ciao_vcwarnings.mpb: + * MPC/config/ciaocidldefaults.mpb: + * MPC/config/cidlc.mpb: + * MPC/config/dance.mpb: + * MPC/config/dance_cdmw_idl.mpb: + * MPC/config/dance_component_server.mpb: + * MPC/config/dance_component_server_svnt.mpb: + * MPC/config/dance_deployment_stub.mpb: + * MPC/config/dance_deployment_svnt.mpb: + * MPC/config/dance_domain_application.mpb: + * MPC/config/dance_domain_application_manager.mpb: + * MPC/config/dance_exe.mpb: + * MPC/config/dance_executionmanager_stub.mpb: + * MPC/config/dance_extension_stub.mpb: + * MPC/config/dance_lib.mpb: + * MPC/config/dance_logger.mpb: + * MPC/config/dance_mocks.mpb: + * MPC/config/dance_node_application.mpb: + * MPC/config/dance_node_application_manager.mpb: + * MPC/config/dance_node_manager.mpb: + * MPC/config/dance_nodemanager_stub.mpb: + * MPC/config/dance_nodemanager_svnt.mpb: + * MPC/config/dance_redirection_service.mpb: + * MPC/config/dance_utils.mpb: + * NEWS: + * bin: + * bin/ciao_tests.lst: + * bin/generate_component_mpc.pl: + * ccm: + * ciao: + * ciao/CIAO.mpc: + * ciao/CIAO_FailureReasons.idl: + * ciao/CIAO_common.h: + * ciao/Client_init.h: + * ciao/Client_init.cpp: + * ciao/ComponentServer: + * ciao/ComponentServer/CIAO_CS_Client.idl: + * ciao/ComponentServer/CIAO_CS_Client_svnt_export.h: + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_ComponentServer_stub_export.h: + * ciao/ComponentServer/CIAO_ComponentServer_svnt_export.h: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_Properties.idl: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerResources.idl: + * ciao/ComponentServer/Configurator_Factory.h: + * ciao/ComponentServer/Configurator_Factory.cpp: + * ciao/ComponentServer/Configurators: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.h: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.inl: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp: + * ciao/ComponentServer/Configurators/Basic_Config_Manager_export.h: + * ciao/ComponentServer/Configurators/Basic_Configurator_export.h: + * ciao/ComponentServer/Configurators/ComponentServer_Configurator_export.h: + * ciao/ComponentServer/Configurators/Config_Manager.h: + * ciao/ComponentServer/Configurators/Config_Manager.cpp: + * ciao/ComponentServer/Configurators/Configurators.mpc: + * ciao/ComponentServer/Configurators/NA_Configurator_Export.h: + * ciao/ComponentServer/Configurators/NoOp: + * ciao/ComponentServer/Configurators/NoOp/NoOp_Configurator.h: + * ciao/ComponentServer/Configurators/NoOp/NoOp_Configurator.cpp: + * ciao/ComponentServer/Configurators/NoOp/NoOp_Configurator.mpc: + * ciao/ComponentServer/Configurators/NoOp/NoOp_Configurator_export.h: + * ciao/ComponentServer/Configurators/RT: + * ciao/ComponentServer/Configurators/RT/RTConfig_Manager.h: + * ciao/ComponentServer/Configurators/RT/RTConfig_Manager.inl: + * ciao/ComponentServer/Configurators/RT/RTConfig_Manager.cpp: + * ciao/ComponentServer/Configurators/RT/RTNA_Configurator_Export.h: + * ciao/ComponentServer/Configurators/RTNodeApp_Configurator.h: + * ciao/ComponentServer/Configurators/RTNodeApp_Configurator.cpp: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + * ciao/Containers: + * ciao/Containers/CIAO_Servant_Activator.idl: + * ciao/Containers/CIAO_Servant_Activator.mpc: + * ciao/Containers/CIAO_Servant_Activator_export.h: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Container_Base.inl: + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Container_Base_export.h: + * ciao/Containers/Containers.mpc: + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.idl: + * ciao/Containers/Session/Session_Container.inl: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Containers/Session/Session_Container.mpc: + * ciao/Containers/Session/Session_Container_export.h: + * ciao/Containers/Swapping: + * ciao/Containers/Swapping/Dynamic_Component_Activator.h: + * ciao/Containers/Swapping/Dynamic_Component_Activator.inl: + * ciao/Containers/Swapping/Dynamic_Component_Activator.cpp: + * ciao/Containers/Swapping/Swapping_Container.h: + * ciao/Containers/Swapping/Swapping_Container.inl: + * ciao/Containers/Swapping/Swapping_Container.cpp: + * ciao/Containers/Swapping/Swapping_Container.mpc: + * ciao/Containers/Swapping/Swapping_Container_export.h: + * ciao/Contexts: + * ciao/Contexts/Context.mpc: + * ciao/Contexts/Context_Impl_Base.h: + * ciao/Contexts/Context_Impl_Base.inl: + * ciao/Contexts/Context_Impl_Base.cpp: + * ciao/Contexts/Context_Impl_T.h: + * ciao/Contexts/Context_Impl_T.cpp: + * ciao/Contexts/Context_Impl_export.h: + * ciao/Contexts/Swapping: + * ciao/Contexts/Swapping/CIAO_UpgradeableContext.idl: + * ciao/Contexts/Swapping/Upgradeable_Context_Impl_T.h: + * ciao/Contexts/Swapping/Upgradeable_Context_Impl_T.cpp: + * ciao/Logger: + * ciao/Logger/CIAOLoggerFactory.h: + * ciao/Logger/CIAO_Logger_Export.h: + * ciao/Logger/File_Logger_Backend.h: + * ciao/Logger/File_Logger_Backend.cpp: + * ciao/Logger/Log_Macros.h: + * ciao/Logger/Logger.mpc: + * ciao/Logger/Logger_Service.h: + * ciao/Logger/Logger_Service.cpp: + * ciao/Servants: + * ciao/Servants/CIAO_Port_Activator.idl: + * ciao/Servants/CIAO_Port_Activator_export.h: + * ciao/Servants/CIAO_Servant_Impl_export.h: + * ciao/Servants/Home_Servant_Impl_Base.h: + * ciao/Servants/Home_Servant_Impl_Base.cpp: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Port_Activator.inl: + * ciao/Servants/Port_Activator.cpp: + * ciao/Servants/Port_Activator_T.h: + * ciao/Servants/Port_Activator_T.cpp: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_T.h: + * ciao/Servants/Servant_Impl_T.cpp: + * ciao/Servants/Servant_Impl_Utils_T.cpp: + * ciao/Servants/Servants.mpc: + * ciao/Servants/StandardConfigurator_Impl.h: + * ciao/Servants/StandardConfigurator_Impl.cpp: + * ciao/Servants/Swapping: + * ciao/Servants/Swapping/CIAO_SwapExec.idl: + * ciao/Servants/Swapping/CIAO_Swapping_Servant_export.h: + * ciao/Servants/Swapping/Dynamic_Component_Servant_Base.h: + * ciao/Servants/Swapping/Dynamic_Component_Servant_Base.cpp: + * ciao/Servants/Swapping/Dynamic_Component_Servant_T.h: + * ciao/Servants/Swapping/Dynamic_Component_Servant_T.cpp: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_Base.h: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_Base.cpp: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_T.h: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_T.cpp: + * ciao/Servants/Swapping/Swapping_Servants.mpc: + * ciao/Server_init.h: + * ciao/Server_init.cpp: + * ciao/Valuetype_Factories: + * ciao/Valuetype_Factories/ConfigValue.h: + * ciao/Valuetype_Factories/ConfigValue.cpp: + * ciao/Valuetype_Factories/ConfigValue_Export.h: + * ciao/Valuetype_Factories/Cookie_Export.h: + * ciao/Valuetype_Factories/Cookies.h: + * ciao/Valuetype_Factories/Cookies.inl: + * ciao/Valuetype_Factories/Cookies.cpp: + * ciao/Valuetype_Factories/Factories.mpc: + * ciao/Version.h: + * docs: + * docs/CIAO_Style_Guide.txt: + * docs/TODO.html: + * docs/schema: + * docs/schema/Basic_Deployment_Data.xsd: + * docs/schema/CIAOEvents.xsd: + * docs/schema/CIAOServerResources.xsd: + * docs/schema/Deployment.xsd: + * docs/schema/Modified_Deployment.xsd: + * docs/schema/README.html: + * docs/schema/SANet_Network.xsd: + * docs/schema/ServerResourceUsage.txt: + * docs/schema/Spec_Defined_Deployment.xsd: + * docs/schema/Spec_Defined_XMI.xsd: + * docs/schema/Task_Map.xsd: + * docs/schema/XMI.xsd: + * docs/schema/ccd.xsd: + * docs/schema/cdd.xsd: + * docs/schema/cdp.xsd: + * docs/schema/ciaopolicy.xsd: + * docs/schema/cid.xsd: + * docs/schema/cpd.xsd: + * docs/schema/iad.xsd: + * docs/schema/pcd.xsd: + * docs/schema/toplevel.xsd: + * docs/schema/unused_elements.xsd: + * docs/schema/xsc-banner.h: + * docs/schema/xsc-banner.cpp: + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + * examples: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BMDisplay/BMDisplay_exec.h: + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/EC/EC.mpc: + * examples/BasicSP/EC/EC_exec.h: + * examples/BasicSP/EC/EC_exec.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/BasicSP/descriptors/BasicSP.dat: + * examples/BasicSP/descriptors/BasicSP_Homed.cdp: + * examples/BasicSP/descriptors/BasicSP_Unhomed.cdp: + * examples/BasicSP/descriptors/run_test.pl: + * examples/DevGuideExamples: + * examples/DevGuideExamples/CIAO.mwc: + * examples/DevGuideExamples/Messenger: + * examples/DevGuideExamples/Messenger/Administrator.cidl: + * examples/DevGuideExamples/Messenger/Administrator.idl: + * examples/DevGuideExamples/Messenger/Administrator.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client.cpp: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.cpp: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.cpp: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + * examples/DevGuideExamples/Messenger/Administrator_exec_export.h: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.h: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Administrator_stub_export.h: + * examples/DevGuideExamples/Messenger/Administrator_svnt_export.h: + * examples/DevGuideExamples/Messenger/History.idl: + * examples/DevGuideExamples/Messenger/History_exec_i.h: + * examples/DevGuideExamples/Messenger/History_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Message.idl: + * examples/DevGuideExamples/Messenger/Messenger.cidl: + * examples/DevGuideExamples/Messenger/Messenger.idl: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + * examples/DevGuideExamples/Messenger/Messenger_exec_export.h: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.h: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Messenger_stub_export.h: + * examples/DevGuideExamples/Messenger/Messenger_svnt_export.h: + * examples/DevGuideExamples/Messenger/Publication.idl: + * examples/DevGuideExamples/Messenger/Publication_exec_i.h: + * examples/DevGuideExamples/Messenger/Publication_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Receiver.cidl: + * examples/DevGuideExamples/Messenger/Receiver.idl: + * examples/DevGuideExamples/Messenger/Receiver.mpc: + * examples/DevGuideExamples/Messenger/Receiver_exec_export.h: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.h: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Receiver_stub_export.h: + * examples/DevGuideExamples/Messenger/Receiver_svnt_export.h: + * examples/DevGuideExamples/Messenger/Runnable.idl: + * examples/DevGuideExamples/Messenger/Runnable_exec_i.h: + * examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp: + * examples/DevGuideExamples/Messenger/StaticDAnCE: + * examples/DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc: + * examples/DevGuideExamples/Messenger/StaticDAnCE/README.txt: + * examples/DevGuideExamples/Messenger/StaticDAnCE/StaticDAnCEApp.cpp: + * examples/DevGuideExamples/Messenger/StaticDAnCE/plan.h: + * examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl: + * examples/DevGuideExamples/Messenger/descriptors: + * examples/DevGuideExamples/Messenger/descriptors/Administrator.ccd: + * examples/DevGuideExamples/Messenger/descriptors/Administrator.cid: + * examples/DevGuideExamples/Messenger/descriptors/Administrator.cpd: + * examples/DevGuideExamples/Messenger/descriptors/Administrator_Exec.iad: + * examples/DevGuideExamples/Messenger/descriptors/Administrator_Stub.iad: + * examples/DevGuideExamples/Messenger/descriptors/Administrator_Svnt.iad: + * examples/DevGuideExamples/Messenger/descriptors/Application-flattened.cdp: + * examples/DevGuideExamples/Messenger/descriptors/Application.cdp: + * examples/DevGuideExamples/Messenger/descriptors/Application.pcd: + * examples/DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat: + * examples/DevGuideExamples/Messenger/descriptors/Deployment.xsd: + * examples/DevGuideExamples/Messenger/descriptors/Domain.cdd: + * examples/DevGuideExamples/Messenger/descriptors/Libraries.iad: + * examples/DevGuideExamples/Messenger/descriptors/Messenger.ccd: + * examples/DevGuideExamples/Messenger/descriptors/Messenger.cid: + * examples/DevGuideExamples/Messenger/descriptors/Messenger.cpd: + * examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.ccd: + * examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cid: + * examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cpd: + * examples/DevGuideExamples/Messenger/descriptors/Messenger_Exec.iad: + * examples/DevGuideExamples/Messenger/descriptors/Messenger_Stub.iad: + * examples/DevGuideExamples/Messenger/descriptors/Messenger_Svnt.iad: + * examples/DevGuideExamples/Messenger/descriptors/README_15a: + * examples/DevGuideExamples/Messenger/descriptors/Receiver.ccd: + * examples/DevGuideExamples/Messenger/descriptors/Receiver.cid: + * examples/DevGuideExamples/Messenger/descriptors/Receiver.cpd: + * examples/DevGuideExamples/Messenger/descriptors/Receiver_Exec.iad: + * examples/DevGuideExamples/Messenger/descriptors/Receiver_Stub.iad: + * examples/DevGuideExamples/Messenger/descriptors/Receiver_Svnt.iad: + * examples/DevGuideExamples/Messenger/descriptors/XMI.xsd: + * examples/DevGuideExamples/Messenger/descriptors/admin.dat: + * examples/DevGuideExamples/Messenger/descriptors/package.tpd: + * examples/DevGuideExamples/Messenger/descriptors/run_test.pl: + * examples/DevGuideExamples/readme.txt: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/GPS/GPS_exec.h: + * examples/Display/GPS/GPS_exec.cpp: + * examples/Display/GPS/GPS_tracing_exec.h: + * examples/Display/GPS/GPS_tracing_exec.cpp: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Display/NavDisplay/NavDisplay_exec.h: + * examples/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/Display/RateGen/RateGen.mpc: + * examples/Display/RateGen/RateGen_exec.h: + * examples/Display/RateGen/RateGen_exec.cpp: + * examples/Display/RateGen/controller.cpp: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Sender/Sender.mpc: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/starter.cpp: + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/NodeManagerMap.dat: + * examples/Hello/descriptors/run_test.pl: + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/Null_Component_exec.h: + * examples/Null_Component/Null_Component_exec.cpp: + * examples/Null_Component/Null_Interface.mpc: + * examples/Null_Component/StaticDAnCEApp.mpc: + * examples/Null_Component/descriptors/NodeMap.dat: + * examples/Null_Component/descriptors/Null_Homed.cdp: + * examples/Null_Component/descriptors/Null_Unhomed.cdp: + * examples/Null_Component/descriptors/run_test.pl: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Receiver/Receiver_exec.h: + * examples/Swapping/Receiver/Receiver_exec.cpp: + * examples/Swapping/Sender/Sender.mpc: + * examples/Swapping/Sender/Sender_exec.h: + * examples/Swapping/Sender/Sender_exec.cpp: + * examples/Swapping/Sender/Sender_exec_1.h: + * examples/Swapping/Sender/Sender_exec_1.cpp: + * examples/Swapping/Sender/Sender_exec_2.h: + * examples/Swapping/Sender/Sender_exec_2.cpp: + * performance-tests: + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTripEI.idl: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp: + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + * performance-tests/Protocols/Controller/Controller.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/Receiver/Receiver_exec.h: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Protocols/Sender/Sender_exec.h: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/Protocols/common/Protocols.mpc: + * rules.ciao.GNU: + * tests: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + * tests/Bug_2130_Regression/interfaces/ENW.mpc: + * tests/CIAO_ComponentServer: + * tests/CIAO_ComponentServer/Activator: + * tests/CIAO_ComponentServer/Activator/Activator.mpc: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/Activator/run_test.pl: + * tests/CIAO_ComponentServer/Basic: + * tests/CIAO_ComponentServer/Basic/Basic.mpc: + * tests/CIAO_ComponentServer/Basic/client.cpp: + * tests/CIAO_ComponentServer/Basic/run_test.pl: + * tests/CIAO_ComponentServer/SimpleComponent: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.cidl: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.idl: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_stub_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_svnt_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/run_test.pl: + * tests/CIDL/CodeGen/Basic.mpc: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc: + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc: + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc: + * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc: + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc: + * tests/IDL3/Events/Abstract/Abstract.mpc: + * tests/IDL3/Events/Any/Any.mpc: + * tests/IDL3/Events/Regular/Regular.mpc: + * tests/IDL3/Homes/Attributes/HomeAttributes.mpc: + * tests/IDL3/Homes/Basic/Basic.mpc: + * tests/IDL3/Homes/Factory/Factory.mpc: + * tests/IDL3/Homes/Finder/Finder.mpc: + * tests/IDL3/Homes/Inheritance/Inheritance.mpc: + * tests/IDL3/ImpliedIDL/All/all.mpc: + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc: + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc: + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc: + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc: + * tests/IDL3/ImpliedIDL/Events/Events.mpc: + * tests/IDL3/ImpliedIDL/Homes/Homes.mpc: + * tests/IDL3/Lookup/lookup_test.mpc: + * tests/Minimum/Minimum_Base/Minimum_Base.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + * tests/Minimum/Receiver/Receiver_exec.h: + * tests/Minimum/Receiver/Receiver_exec.cpp: + * tests/Minimum/Sender/Sender.mpc: + * tests/Minimum/Sender/Sender_exec.h: + * tests/Minimum/Sender/Sender_exec.cpp: + * tools: + * tools/Config_Handlers: + * tools/Config_Handlers/ADD_Handler.h: + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/Any_Handler.h: + * tools/Config_Handlers/Any_Handler.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.hpp: + * tools/Config_Handlers/CCD_Handler.h: + * tools/Config_Handlers/CCD_Handler.cpp: + * tools/Config_Handlers/CEPE_Handler.h: + * tools/Config_Handlers/CEPE_Handler.cpp: + * tools/Config_Handlers/CIAO_Events: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h: + * tools/Config_Handlers/CIAO_Events/test.cpp: + * tools/Config_Handlers/CPD_Handler.h: + * tools/Config_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/CRDD_Handler.h: + * tools/Config_Handlers/CRDD_Handler.cpp: + * tools/Config_Handlers/Common.h: + * tools/Config_Handlers/ComponentPropertyDescription_Handler.h: + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp: + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/Config_Handlers_Common_Export.h: + * tools/Config_Handlers/Config_Handlers_Export.h: + * tools/Config_Handlers/DD_Handler.h: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.h: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/DP_PCD_Handler.h: + * tools/Config_Handlers/DP_PCD_Handler.cpp: + * tools/Config_Handlers/DataType_Handler.h: + * tools/Config_Handlers/DataType_Handler.cpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/Deployment.hpp: + * tools/Config_Handlers/DnC_Dump.h: + * tools/Config_Handlers/DnC_Dump.cpp: + * tools/Config_Handlers/DnC_Dump_T.h: + * tools/Config_Handlers/DnC_Dump_T.cpp: + * tools/Config_Handlers/Dump_Obj.h: + * tools/Config_Handlers/Dump_Obj.cpp: + * tools/Config_Handlers/DynAny_Handler: + * tools/Config_Handlers/DynAny_Handler.mpc: + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAlias_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h: + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynStruct_Handler.h: + * tools/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/dynany_test.idl: + * tools/Config_Handlers/DynAny_Handler/test.cpp: + * tools/Config_Handlers/DynAny_Handler/test.mpc: + * tools/Config_Handlers/ERE_Handler.h: + * tools/Config_Handlers/ERE_Handler.cpp: + * tools/Config_Handlers/ESD_Handler.h: + * tools/Config_Handlers/ESD_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.h: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/IDREF_Base.h: + * tools/Config_Handlers/IDREF_Base.cpp: + * tools/Config_Handlers/ID_Handler.h: + * tools/Config_Handlers/ID_Handler.cpp: + * tools/Config_Handlers/IRDD_Handler.h: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/MDD_Handler.h: + * tools/Config_Handlers/MDD_Handler.cpp: + * tools/Config_Handlers/PCD_Handler.h: + * tools/Config_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/PSPE_Handler.h: + * tools/Config_Handlers/PSPE_Handler.cpp: + * tools/Config_Handlers/Package_Handlers: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.h: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.h: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.h: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.h: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PC_Intf.h: + * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp: + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + * tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h: + * tools/Config_Handlers/Package_Handlers/SID_Handler.h: + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/Property_Handler.h: + * tools/Config_Handlers/Property_Handler.cpp: + * tools/Config_Handlers/RDD_Handler.h: + * tools/Config_Handlers/RDD_Handler.cpp: + * tools/Config_Handlers/RT-CCM: + * tools/Config_Handlers/RT-CCM/CB_Handler.h: + * tools/Config_Handlers/RT-CCM/CB_Handler.cpp: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp: + * tools/Config_Handlers/RT-CCM/CLA_Handler.h: + * tools/Config_Handlers/RT-CCM/CLA_Handler.cpp: + * tools/Config_Handlers/RT-CCM/CNPM_Handler.h: + * tools/Config_Handlers/RT-CCM/CNPM_Handler.cpp: + * tools/Config_Handlers/RT-CCM/NPM_Handler.h: + * tools/Config_Handlers/RT-CCM/NPM_Handler.cpp: + * tools/Config_Handlers/RT-CCM/OC_Handler.h: + * tools/Config_Handlers/RT-CCM/OC_Handler.cpp: + * tools/Config_Handlers/RT-CCM/OR_Handler.h: + * tools/Config_Handlers/RT-CCM/OR_Handler.cpp: + * tools/Config_Handlers/RT-CCM/PM_Handler.h: + * tools/Config_Handlers/RT-CCM/PM_Handler.cpp: + * tools/Config_Handlers/RT-CCM/PS_Handler.h: + * tools/Config_Handlers/RT-CCM/PS_Handler.cpp: + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc: + * tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h: + * tools/Config_Handlers/RT-CCM/SRD_Handler.h: + * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp: + * tools/Config_Handlers/RT-CCM/TPL_Handler.h: + * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp: + * tools/Config_Handlers/RT-CCM/TP_Handler.h: + * tools/Config_Handlers/RT-CCM/TP_Handler.cpp: + * tools/Config_Handlers/RT-CCM/input.csr: + * tools/Config_Handlers/RT-CCM/test.cpp: + * tools/Config_Handlers/Req_Handler.h: + * tools/Config_Handlers/Req_Handler.cpp: + * tools/Config_Handlers/STD_CID_Handler.h: + * tools/Config_Handlers/STD_CID_Handler.cpp: + * tools/Config_Handlers/STD_CPD_Handler.h: + * tools/Config_Handlers/STD_CPD_Handler.cpp: + * tools/Config_Handlers/STD_IAD_Handler.h: + * tools/Config_Handlers/STD_IAD_Handler.cpp: + * tools/Config_Handlers/STD_PCD_Handler.h: + * tools/Config_Handlers/STD_PCD_Handler.cpp: + * tools/Config_Handlers/STD_PC_Intf.h: + * tools/Config_Handlers/STD_PC_Intf.cpp: + * tools/Config_Handlers/SatisfierProperty_Handler.h: + * tools/Config_Handlers/SatisfierProperty_Handler.cpp: + * tools/Config_Handlers/Utils: + * tools/Config_Handlers/Utils/Exceptions.h: + * tools/Config_Handlers/Utils/Functors.h: + * tools/Config_Handlers/XMI.hpp: + * tools/Config_Handlers/XMI.cpp: + * tools/Config_Handlers/XMLSchema: + * tools/Config_Handlers/XMLSchema/Traversal.hpp: + * tools/Config_Handlers/XMLSchema/Traversal.ipp: + * tools/Config_Handlers/XMLSchema/Traversal.tpp: + * tools/Config_Handlers/XMLSchema/TypeInfo.hpp: + * tools/Config_Handlers/XMLSchema/TypeInfo.ipp: + * tools/Config_Handlers/XMLSchema/TypeInfo.tpp: + * tools/Config_Handlers/XMLSchema/Types.hpp: + * tools/Config_Handlers/XMLSchema/Types.ipp: + * tools/Config_Handlers/XMLSchema/Types.tpp: + * tools/Config_Handlers/XMLSchema/Writer.hpp: + * tools/Config_Handlers/XMLSchema/Writer.ipp: + * tools/Config_Handlers/XMLSchema/Writer.tpp: + * tools/Config_Handlers/XML_File_Intf.h: + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/Config_Handlers/XML_Typedefs.h: + * tools/Config_Handlers/XML_Typedefs.cpp: + * tools/Config_Handlers/XSCRT: + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/Config_Handlers/XSCRT/Elements.ipp: + * tools/Config_Handlers/XSCRT/Elements.tpp: + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp: + * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp: + * tools/Config_Handlers/XSCRT/Parser.hpp: + * tools/Config_Handlers/XSCRT/Parser.ipp: + * tools/Config_Handlers/XSCRT/Parser.tpp: + * tools/Config_Handlers/XSCRT/Traversal.hpp: + * tools/Config_Handlers/XSCRT/Traversal.ipp: + * tools/Config_Handlers/XSCRT/Traversal.tpp: + * tools/Config_Handlers/XSCRT/Writer.hpp: + * tools/Config_Handlers/XSCRT/Writer.ipp: + * tools/Config_Handlers/XSCRT/Writer.tpp: + * tools/Config_Handlers/XSCRT/XML.hpp: + * tools/Config_Handlers/XSCRT/XML.ipp: + * tools/Config_Handlers/XSCRT/XML.tpp: + * tools/Config_Handlers/XSCRT/XMLSchema.hpp: + * tools/Config_Handlers/XSC_XML_Handlers_Export.h: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/ccd.hpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/cdd.hpp: + * tools/Config_Handlers/cdp.hpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/cid.hpp: + * tools/Config_Handlers/cpd.hpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/iad.cpp: + * tools/Config_Handlers/iad.hpp: + * tools/Config_Handlers/pcd.hpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/test.cdp: + * tools/Config_Handlers/test.cpp: + * tools/Config_Handlers/toplevel.cpp: + * tools/Config_Handlers/toplevel.hpp: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/IR_Simulator_visitor.h: + * tools/XML: + * tools/XML/CIAO_XML_Utils_Export.h: + * tools/XML/XML.mpc: + * tools/XML/XML_Error_Handler.h: + * tools/XML/XML_Error_Handler.cpp: + * tools/XML/XML_Helper.h: + * tools/XML/XML_Helper.tpp: + * tools/XML/XML_Schema_Resolver.h: + * tools/XML/XML_Schema_Resolver.tpp: + * tools/XML/XML_Schema_Resolver.cpp: + * tools/XML/XercesString.h: + * tools/XML/XercesString.cpp: + * tools/tools.mwc: + + Merged in from prism_import branch. + + * DAnCE/Deployment/CIAO_NodeApplication_CallBack.idl: + * DAnCE/Deployment/CIAO_ServerResources.idl: + * DAnCE/Deployment/Deployment_Container.idl: + * DAnCE/Deployment/Deployment_Events.idl: + * DAnCE/Deployment/NodeApp_CB_Impl.h: + * DAnCE/Deployment/NodeApp_CB_Impl.cpp: + * DAnCE/DomainApplicationManager/Deployment_Configuration.h: + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMH_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMH_Impl.inl: + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMH_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_AMI_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_ActiveObject_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_ActiveObject_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl: + * DAnCE/DomainApplicationManager/Reply_Handler_i.h: + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp: + * DAnCE/DomainApplicationManager/Task_StartLaunch.h: + * DAnCE/DomainApplicationManager/Task_StartLaunch.cpp: + * DAnCE/ExecutionManager/DAM_Map.h: + * DAnCE/ExecutionManager/DAM_Map.cpp: + * DAnCE/ExecutionManager/Execution_Manager.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Impl.h: + * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp: + * DAnCE/NodeApplication/CIAO_NodeApplication_export.h: + * DAnCE/NodeApplication/Config_Manager.h: + * DAnCE/NodeApplication/Config_Manager.cpp: + * DAnCE/NodeApplication/Config_Manager_export.h: + * DAnCE/NodeApplication/Configurator_Factory.h: + * DAnCE/NodeApplication/Configurator_Factory.inl: + * DAnCE/NodeApplication/Configurator_Factory.cpp: + * DAnCE/NodeApplication/Container_Impl.h: + * DAnCE/NodeApplication/Container_Impl.inl: + * DAnCE/NodeApplication/Container_Impl.cpp: + * DAnCE/NodeApplication/NAConfig_Manager.h: + * DAnCE/NodeApplication/NAConfig_Manager.inl: + * DAnCE/NodeApplication/NAConfig_Manager.cpp: + * DAnCE/NodeApplication/NA_Configurator_Export.h: + * DAnCE/NodeApplication/NoOp_Configurator.h: + * DAnCE/NodeApplication/NoOp_Configurator.cpp: + * DAnCE/NodeApplication/NoOp_Configurator_export.h: + * DAnCE/NodeApplication/NodeApp_Configurator.h: + * DAnCE/NodeApplication/NodeApp_Configurator.cpp: + * DAnCE/NodeApplication/NodeApp_Configurator_Export.h: + * DAnCE/NodeApplication/NodeApplication.cpp: + * DAnCE/NodeApplication/NodeApplication_Core.h: + * DAnCE/NodeApplication/NodeApplication_Core.inl: + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.inl: + * DAnCE/NodeApplication/RTConfig_Manager.h: + * DAnCE/NodeApplication/RTConfig_Manager.inl: + * DAnCE/NodeApplication/RTConfig_Manager.cpp: + * DAnCE/NodeApplication/RTNA_Configurator_Export.h: + * DAnCE/NodeApplication/RTNodeApp_Configurator.h: + * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: + * DAnCE/NodeApplicationManager/CIAO_NAM_Export.h: + * DAnCE/NodeApplicationManager/Containers_Info_Map.h: + * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: + * DAnCE/NodeApplicationManager/ImplementationInfo.h: + * DAnCE/NodeApplicationManager/ImplementationInfo.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl: + * DAnCE/NodeApplicationManager/URL_Parser.h: + * DAnCE/NodeApplicationManager/URL_Parser.cpp: + * DAnCE/NodeManager/BaseMonitor.h: + * DAnCE/NodeManager/CIAO_Monitor.h: + * DAnCE/NodeManager/CIAO_Monitor.cpp: + * DAnCE/NodeManager/Monitor.mpc: + * DAnCE/NodeManager/MonitorCB.h: + * DAnCE/NodeManager/MonitorCB.cpp: + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.cpp: + * DAnCE/NodeManager/NAM_Map.h: + * DAnCE/NodeManager/NAM_Map.cpp: + * DAnCE/NodeManager/Node_Manager.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Benchmark_Impl.cpp: + * DAnCE/tests/NodeApplicationTest: + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * DAnCE/tests/NodeApplicationTest/README: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h: + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + * DevGuideExamples: + * DevGuideExamples/CIAO.mwc: + * DevGuideExamples/Messenger: + * DevGuideExamples/Messenger/Administrator.cidl: + * DevGuideExamples/Messenger/Administrator.idl: + * DevGuideExamples/Messenger/Administrator.mpc: + * DevGuideExamples/Messenger/Administrator_Client.cpp: + * DevGuideExamples/Messenger/Administrator_Client_IDL2.cpp: + * DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * DevGuideExamples/Messenger/Administrator_Client_IDL3.cpp: + * DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + * DevGuideExamples/Messenger/Administrator_exec_export.h: + * DevGuideExamples/Messenger/Administrator_exec_i.h: + * DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * DevGuideExamples/Messenger/Administrator_stub_export.h: + * DevGuideExamples/Messenger/Administrator_svnt_export.h: + * DevGuideExamples/Messenger/History.idl: + * DevGuideExamples/Messenger/History_exec_i.h: + * DevGuideExamples/Messenger/History_exec_i.cpp: + * DevGuideExamples/Messenger/Message.idl: + * DevGuideExamples/Messenger/Messenger.cidl: + * DevGuideExamples/Messenger/Messenger.idl: + * DevGuideExamples/Messenger/Messenger.mpc: + * DevGuideExamples/Messenger/Messenger_exec_export.h: + * DevGuideExamples/Messenger/Messenger_exec_i.h: + * DevGuideExamples/Messenger/Messenger_exec_i.cpp: + * DevGuideExamples/Messenger/Messenger_stub_export.h: + * DevGuideExamples/Messenger/Messenger_svnt_export.h: + * DevGuideExamples/Messenger/Publication.idl: + * DevGuideExamples/Messenger/Publication_exec_i.h: + * DevGuideExamples/Messenger/Publication_exec_i.cpp: + * DevGuideExamples/Messenger/Receiver.cidl: + * DevGuideExamples/Messenger/Receiver.idl: + * DevGuideExamples/Messenger/Receiver.mpc: + * DevGuideExamples/Messenger/Receiver_exec_export.h: + * DevGuideExamples/Messenger/Receiver_exec_i.h: + * DevGuideExamples/Messenger/Receiver_exec_i.cpp: + * DevGuideExamples/Messenger/Receiver_stub_export.h: + * DevGuideExamples/Messenger/Receiver_svnt_export.h: + * DevGuideExamples/Messenger/Runnable.idl: + * DevGuideExamples/Messenger/Runnable_exec_i.h: + * DevGuideExamples/Messenger/Runnable_exec_i.cpp: + * DevGuideExamples/Messenger/StaticDAnCE: + * DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc: + * DevGuideExamples/Messenger/StaticDAnCE/README.txt: + * DevGuideExamples/Messenger/StaticDAnCE/StaticDAnCEApp.cpp: + * DevGuideExamples/Messenger/StaticDAnCE/plan.h: + * DevGuideExamples/Messenger/StaticDAnCE/run_test.pl: + * DevGuideExamples/Messenger/descriptors: + * DevGuideExamples/Messenger/descriptors/Administrator.ccd: + * DevGuideExamples/Messenger/descriptors/Administrator.cid: + * DevGuideExamples/Messenger/descriptors/Administrator.cpd: + * DevGuideExamples/Messenger/descriptors/Administrator_Exec.iad: + * DevGuideExamples/Messenger/descriptors/Administrator_Stub.iad: + * DevGuideExamples/Messenger/descriptors/Administrator_Svnt.iad: + * DevGuideExamples/Messenger/descriptors/Application-flattened.cdp: + * DevGuideExamples/Messenger/descriptors/Application.cdp: + * DevGuideExamples/Messenger/descriptors/Application.pcd: + * DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat: + * DevGuideExamples/Messenger/descriptors/Deployment.xsd: + * DevGuideExamples/Messenger/descriptors/Domain.cdd: + * DevGuideExamples/Messenger/descriptors/Libraries.iad: + * DevGuideExamples/Messenger/descriptors/Messenger.ccd: + * DevGuideExamples/Messenger/descriptors/Messenger.cid: + * DevGuideExamples/Messenger/descriptors/Messenger.cpd: + * DevGuideExamples/Messenger/descriptors/MessengerAssembly.ccd: + * DevGuideExamples/Messenger/descriptors/MessengerAssembly.cid: + * DevGuideExamples/Messenger/descriptors/MessengerAssembly.cpd: + * DevGuideExamples/Messenger/descriptors/Messenger_Exec.iad: + * DevGuideExamples/Messenger/descriptors/Messenger_Stub.iad: + * DevGuideExamples/Messenger/descriptors/Messenger_Svnt.iad: + * DevGuideExamples/Messenger/descriptors/README_15a: + * DevGuideExamples/Messenger/descriptors/Receiver.ccd: + * DevGuideExamples/Messenger/descriptors/Receiver.cid: + * DevGuideExamples/Messenger/descriptors/Receiver.cpd: + * DevGuideExamples/Messenger/descriptors/Receiver_Exec.iad: + * DevGuideExamples/Messenger/descriptors/Receiver_Stub.iad: + * DevGuideExamples/Messenger/descriptors/Receiver_Svnt.iad: + * DevGuideExamples/Messenger/descriptors/XMI.xsd: + * DevGuideExamples/Messenger/descriptors/admin.dat: + * DevGuideExamples/Messenger/descriptors/package.tpd: + * DevGuideExamples/Messenger/descriptors/run_test.pl: + * DevGuideExamples/readme.txt: + * MPC/config/ciao_component_dnc.mpb: + * MPC/config/ciao_container_dnc.mpb: + * MPC/config/ciao_deployment_stub.mpb: + * MPC/config/ciao_deployment_svnt.mpb: + * MPC/config/ciao_server_dnc.mpb: + * ciao/CCM_Base.idl: + * ciao/CCM_CCM2Context.idl: + * ciao/CCM_CCMException.idl: + * ciao/CCM_Component.idl: + * ciao/CCM_ComponentId.idl: + * ciao/CCM_Configurator.idl: + * ciao/CCM_Container.idl: + * ciao/CCM_Container_Ex.idl: + * ciao/CCM_Context.idl: + * ciao/CCM_Cookie.idl: + * ciao/CCM_Core.mpc: + * ciao/CCM_EnterpriseComponent.idl: + * ciao/CCM_Entity2Context.idl: + * ciao/CCM_EntityComponent.idl: + * ciao/CCM_EntityContext.idl: + * ciao/CCM_Enumeration.idl: + * ciao/CCM_EventBase.idl: + * ciao/CCM_EventConsumerBase.idl: + * ciao/CCM_Events.idl: + * ciao/CCM_ExecutorLocator.idl: + * ciao/CCM_Home.idl: + * ciao/CCM_HomeConfiguration.idl: + * ciao/CCM_HomeExecutorBase.idl: + * ciao/CCM_HomeFinder.idl: + * ciao/CCM_HomeRegistration.idl: + * ciao/CCM_KeylessCCMHome.idl: + * ciao/CCM_Navigation.idl: + * ciao/CCM_Object.idl: + * ciao/CCM_PrimaryKeyBase.idl: + * ciao/CCM_ProxyHomeRegistration.idl: + * ciao/CCM_Receptacle.idl: + * ciao/CCM_Session2Context.idl: + * ciao/CCM_SessionComponent.idl: + * ciao/CCM_SessionContext.idl: + * ciao/CCM_SessionSynchronization.idl: + * ciao/CCM_StandardConfigurator.idl: + * ciao/CCM_StateIdFactory.idl: + * ciao/CCM_Transaction.idl: + * ciao/CIAO_SwapExec.idl: + * ciao/CIAO_UpgradeableContext.idl: + * ciao/Components.idl: + * ciao/Container_Base.h: + * ciao/Container_Base.inl: + * ciao/Container_Base.cpp: + * ciao/Context_Impl_Base.h: + * ciao/Context_Impl_Base.inl: + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_T.h: + * ciao/Context_Impl_T.cpp: + * ciao/Cookies.h: + * ciao/Cookies.inl: + * ciao/Cookies.cpp: + * ciao/CosPersistentState.idl: + * ciao/Dynamic_Component_Activator.h: + * ciao/Dynamic_Component_Activator.inl: + * ciao/Dynamic_Component_Activator.cpp: + * ciao/Dynamic_Component_Servant_Base.h: + * ciao/Dynamic_Component_Servant_Base.cpp: + * ciao/Dynamic_Component_Servant_T.h: + * ciao/Dynamic_Component_Servant_T.cpp: + * ciao/Home_Servant_Impl_Base.h: + * ciao/Home_Servant_Impl_Base.cpp: + * ciao/Home_Servant_Impl_T.h: + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Object_Set_T.h: + * ciao/Object_Set_T.inl: + * ciao/Object_Set_T.cpp: + * ciao/Port_Activator.h: + * ciao/Port_Activator.inl: + * ciao/Port_Activator.cpp: + * ciao/Port_Activator_T.h: + * ciao/Port_Activator_T.cpp: + * ciao/Security.idl: + * ciao/Servant_Activator.h: + * ciao/Servant_Activator.cpp: + * ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_T.h: + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_Utils_T.cpp: + * ciao/Session_Container.h: + * ciao/Session_Container.inl: + * ciao/Session_Container.cpp: + * ciao/StandardConfigurator_Impl.h: + * ciao/StandardConfigurator_Impl.cpp: + * ciao/Swapping_Container.h: + * ciao/Swapping_Container.inl: + * ciao/Swapping_Container.cpp: + * ciao/Swapping_Servant_Home_Impl_Base.h: + * ciao/Swapping_Servant_Home_Impl_Base.cpp: + * ciao/Swapping_Servant_Home_Impl_T.h: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + * ciao/Upgradeable_Context_Impl_T.h: + * ciao/Upgradeable_Context_Impl_T.cpp: + * ciao/extension: + * ciao/extension/CCM_ClientContainerInterceptor.idl: + * ciao/extension/CCM_ClientContainerInterceptorRegistration.idl: + * ciao/extension/CCM_ContainerClientRequestInfo.idl: + * ciao/extension/CCM_ContainerInterceptor.idl: + * ciao/extension/CCM_ContainerRequestInfo.idl: + * ciao/extension/CCM_ContainerServantRequestInfo.idl: + * ciao/extension/CCM_ContainerServerRequestInfo.idl: + * ciao/extension/CCM_ContainerStubRequestInfo.idl: + * ciao/extension/CCM_ExtensionComponent.idl: + * ciao/extension/CCM_ExtensionContext.idl: + * ciao/extension/CCM_InvalidRegistration.idl: + * ciao/extension/CCM_QoS.idl: + * ciao/extension/CCM_ServantContainerInterceptor.idl: + * ciao/extension/CCM_ServantContainerInterceptorRegistration.idl: + * ciao/extension/CCM_ServerContainerInterceptor.idl: + * ciao/extension/CCM_ServerContainerInterceptorRegistration.idl: + * ciao/extension/CCM_StubContainerInterceptor.idl: + * ciao/extension/CCM_StubContainerInterceptorRegistration.idl: + * ciao/extension/ExtensionContext.h: + * ciao/extension/ExtensionContext.cpp: + * ciaosvcs: + * ciaosvcs/Events: + * ciaosvcs/Events/CIAO_EventService_Factory_impl.h: + * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp: + * ciaosvcs/Events/CIAO_Events.mpc: + * ciaosvcs/Events/CIAO_Events_Base: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h: + * ciaosvcs/Events/CIAO_Events_Export.h: + * ciaosvcs/Events/CIAO_RTEC: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + * docs/schema/CIAOEvents.txt: + * examples/BasicSP/descriptors/BasicSP.cdp: + * examples/Hello/ReDaC-Usage.html: + * examples/Hello/descriptors/Hello.cid: + * examples/Hello/descriptors/Hello.cpd: + * examples/Hello/descriptors/Libraries.iad: + * examples/Hello/descriptors/Receiver.ccd: + * examples/Hello/descriptors/Receiver.cid: + * examples/Hello/descriptors/Receiver.cpd: + * examples/Hello/descriptors/Receiver_Exec.iad: + * examples/Hello/descriptors/Receiver_Stub.iad: + * examples/Hello/descriptors/Receiver_Svnt.iad: + * examples/Hello/descriptors/Sender.ccd: + * examples/Hello/descriptors/Sender.cid: + * examples/Hello/descriptors/Sender.cpd: + * examples/Hello/descriptors/Sender_Exec.iad: + * examples/Hello/descriptors/Sender_Stub.iad: + * examples/Hello/descriptors/Sender_Svnt.iad: + * examples/Hello/descriptors_ReDaC: + + * examples/Hello/descriptors_ReDaC/deploymentplan.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp: + * examples/Hello/descriptors_events: + * examples/Hello/descriptors_events/NodeManagerMap.dat: + * examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat: + * examples/Hello/descriptors_events/NodeManagerMap_collocated.dat: + * examples/Hello/descriptors_events/README: + * examples/Hello/descriptors_events/RunEventTest.pm: + * examples/Hello/descriptors_events/ciao-events-example-collocated.ced: + * examples/Hello/descriptors_events/ciao-events-example-with-federation.ced: + * examples/Hello/descriptors_events/ciao-events-example-with-filters.ced: + * examples/Hello/descriptors_events/ciao-events-example.ced: + * examples/Hello/descriptors_events/ciao-events-federation-mcast.ced: + * examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced: + * examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced: + * examples/Hello/descriptors_events/ciao-events-federation-udp.ced: + * examples/Hello/descriptors_events/deploymentplan_events.cdp: + * examples/Hello/descriptors_events/deploymentplan_events_collocated.cdp: + * examples/Hello/descriptors_events/deploymentplan_federation.cdp: + * examples/Hello/descriptors_events/deploymentplan_federation_mcast.cdp: + * examples/Hello/descriptors_events/deploymentplan_federation_udp.cdp: + * examples/Hello/descriptors_events/deploymentplan_federation_udp_collocated.cdp: + * examples/Hello/descriptors_events/deploymentplan_federation_udp_two_hosts.cdp: + * examples/Hello/descriptors_events/deploymentplan_multiple_senders.cdp: + * examples/Hello/descriptors_events/deploymentplan_with_filters.cdp: + * examples/Hello/descriptors_events/rtec.conf: + * examples/Hello/descriptors_events/run_NodeDaemons.pl: + * examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl: + * examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl: + * examples/Hello/descriptors_events/run_test.pl: + * examples/Hello/descriptors_events/run_test_collocated.pl: + * examples/Hello/descriptors_events/run_test_federated.pl: + * examples/Hello/descriptors_events/run_test_filtered.pl: + * examples/Hello/descriptors_events/run_test_multicast.pl: + * examples/Hello/descriptors_events/run_test_multiple_senders.pl: + * examples/Hello/descriptors_events/run_test_simple.pl: + * examples/Hello/descriptors_events/run_test_udp.pl: + * examples/Hello/descriptors_events/run_test_udp_collocated.pl: + * examples/Hello/descriptors_shared_components: + * examples/Hello/descriptors_shared_components/deploymentplan.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp: + * examples/Null_Component/descriptors/Deployment.xsd: + * examples/Null_Component/descriptors/Domain.cdd: + * examples/Null_Component/descriptors/Null_Assembly.cid: + * examples/Null_Component/descriptors/Null_Assembly_Package.cpd: + * examples/Null_Component/descriptors/Null_Component.ccd: + * examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid: + * examples/Null_Component/descriptors/Null_Component_Package.cpd: + * examples/Null_Component/descriptors/Null_Component_exec.iad: + * examples/Null_Component/descriptors/Null_Component_stub.iad: + * examples/Null_Component/descriptors/Null_Component_svnt.iad: + * examples/Null_Component/descriptors/PackageConfiguration.pcd: + * examples/Null_Component/descriptors/Plan.cdp: + * examples/Null_Component/descriptors/TopLevelPackage.tpd: + * examples/Null_Component/descriptors/XMI.xsd: + * tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h: + * tools/Config_Handlers/Utils/Utils.mpc: + * tools/Config_Handlers/Utils/XML_Error_Handler.h: + * tools/Config_Handlers/Utils/XML_Error_Handler.cpp: + * tools/Config_Handlers/Utils/XML_Helper.h: + * tools/Config_Handlers/Utils/XML_Helper.tpp: + * tools/Config_Handlers/Utils/XML_Helper.cpp: + * tools/Config_Handlers/Utils/XML_Schema_Resolver.h: + * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp: + * tools/Config_Handlers/Utils/XercesString.h: + * tools/Config_Handlers/Utils/XercesString.cpp: + + Removed these files. + +Wed Feb 11 13:35:59 UTC 2009 William R. Otte + + * Merged in from prism_import branch + + Wed Feb 11 02:15:21 UTC 2009 William R. Otte + + * CIAO-INSTALL.html: + * CIAO.mwc: + * CIAO_DAnCE.mwc: + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + * COPYING: + * ChangeLogs: + * NEWS: + * PROBLEM-REPORT-FORM: + * README: + * Release: + * VERSION: + * bin: + * bin/ciao_tests.lst: + * ciaosvcs: + * examples: + * examples/BasicSP/EC/client.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/DevGuideExamples: + * examples/Display/GPS/GPS_exec.cpp: + * examples/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/Display/RateGen/controller.cpp: + * examples/Hello/Sender/starter.cpp: + * examples/Null_Component/StaticDAnCEApp.cpp: + * examples/Null_Component/descriptors/run_test.pl: + * examples/Swapping/Sender/starter.cpp: + * performance-tests: + * performance-tests/Benchmark/Multi_Threaded/client.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTripEI.idl: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Protocols/Controller/Controller.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/mico/mico-thrput-st/client.cc: + * rules.ciao.GNU: + + Merged in changes from HEAD. + + Wed Feb 11 01:36:39 UTC 2009 William R. Otte + + * DAnCE/Logger/Logger.mpc: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc: + * MPC/config/dance_logger.mpb: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * examples/Hello/Sender/Sender_exec.h: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/Basic/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + * tests/Minimum/Receiver/Receiver.mpc: + + Windows fixes. + + Wed Feb 11 00:18:44 UTC 2009 William R. Otte + + * CCF: + * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp: + * CCF/CCF/CodeGenerationKit/IndentationJava.hpp: + * CIDLC: + * CIDLC/AttributeHeaderEmitters.cpp: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/Literals.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/SizeTypeCalculator.cpp: + * CIDLC/cidlc.cpp: + * docs: + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + * tools/IDL3_to_IDL2: + + Merged changes in from trunk + + Tue Feb 10 23:31:09 UTC 2009 William R. Otte + + * DAnCE/TargetManager/TargetManager.mpc: + + Disabled this for now. + + Tue Feb 10 19:13:45 UTC 2009 William R. Otte + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * ciao/Containers/Session/Session_Container.cpp: + + Loffinf changes. + + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + + compile fixes to the last commit. + + * VERSION: + * ciao/Version.h: + + Updated version number to current. + + * examples/DevGuideExamples: + * examples/DevGuideExamples/Messenger/Administrator.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.h: + * examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Messenger.mpc: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.h: + * examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp: + * examples/DevGuideExamples/Messenger/Receiver.mpc: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.h: + * examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp: + * examples/DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc: + * examples/DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat: + * examples/DevGuideExamples/Messenger/descriptors/run_test.pl: + + Partially ported this example. + + Tue Feb 10 18:18:41 UTC 2009 William R. Otte + + * DAnCE/Deployment/Deployment.idl: + * DAnCE/Deployment/Deployment_Application.idl: + * DAnCE/Deployment/Deployment_ApplicationManager.idl: + * DAnCE/Deployment/Deployment_Base.idl: + * DAnCE/Deployment/Deployment_Connection.idl: + * DAnCE/Deployment/Deployment_Core.idl: + * DAnCE/Deployment/Deployment_Data.idl: + * DAnCE/Deployment/Deployment_DeploymentPlan.idl: + * DAnCE/Deployment/Deployment_DomainApplication.idl: + * DAnCE/Deployment/Deployment_DomainApplicationManager.idl: + * DAnCE/Deployment/Deployment_ExecutionManager.idl: + * DAnCE/Deployment/Deployment_NodeApplication.idl: + * DAnCE/Deployment/Deployment_NodeApplicationManager.idl: + * DAnCE/Deployment/Deployment_NodeManager.idl: + * DAnCE/Deployment/Deployment_Packaging_Data.idl: + * DAnCE/Deployment/Deployment_RepositoryManager.idl: + * DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl: + * DAnCE/Deployment/Deployment_TargetData.idl: + * DAnCE/Deployment/Deployment_TargetManager.idl: + * DAnCE/Deployment/Deployment_common.h: + * DAnCE/DomainApplication/Domain_Application_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/NodeApplication/ComponentInstallation_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h: + * DAnCE/RedirectionService/CCMObjectLocator.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + * DAnCE/Utils/Plan_Handler.h: + * DAnCE/Utils/Plan_Handler.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + * DAnCE/tests/DeploymentTest1/test.cpp: + * DAnCE/tests/MocksTest/MocksTest.cpp: + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + * DAnCE/tests/ObjectLocatorTest/Dummy.idl: + * DAnCE/tests/ObjectLocatorTest/clt_main.cpp: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/Dummy.idl: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + * ccm/ComponentServer/CCM_ComponentServer.idl: + * ccm/ComponentServer/CCM_ComponentServer_Base.idl: + * ccm/ComponentServer/CCM_ComponentServer_Client.idl: + * ciao/CIAO_FailureReasons.idl: + * ciao/Client_init.h: + * ciao/Client_init.cpp: + * ciao/ComponentServer/CIAO_CS_Client.idl: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_Properties.idl: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.h: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp: + * ciao/ComponentServer/Configurators/RT/RTConfig_Manager.h: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + * ciao/Containers/CIAO_Servant_Activator.idl: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.idl: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Contexts/Context.mpc: + * ciao/Servants/CIAO_Port_Activator.idl: + * ciao/Servants/Home_Servant_Impl_Base.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_Utils_T.cpp: + * ciao/Server_init.cpp: + * ciao/Valuetype_Factories/Factories.mpc: + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/BasicSP/EC/EC_exec.cpp: + * examples/BasicSP/EC/client.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/Display/GPS/GPS_exec.cpp: + * examples/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/Null_Component/StaticDAnCEApp.cpp: + * examples/Swapping/Sender/starter.cpp: + * ofccm/Cdmw/CDMW_Deployment.idl: + * ofccm/NodeApplication/ComponentInstallation_Impl.h: + * performance-tests/Benchmark/Multi_Threaded/client.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTripEI.idl: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/mico/mico-thrput-st/client.cc: + * performance-tests/mico/mico-thrput-st/server.cc: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + * tools/Config_Handlers/Any_Handler.h: + * tools/Config_Handlers/Any_Handler.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp: + * tools/Config_Handlers/CIAO_Events/test.cpp: + * tools/Config_Handlers/DD_Handler.h: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/DP_Handler.h: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/dynany_test.idl: + * tools/Config_Handlers/DynAny_Handler/test.cpp: + * tools/Config_Handlers/DynAny_Handler/test.mpc: + * tools/Config_Handlers/ESD_Handler.h: + * tools/Config_Handlers/ESD_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.h: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/IDREF_Base.h: + * tools/Config_Handlers/IDREF_Base.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/RT-CCM/OR_Handler.h: + * tools/Config_Handlers/RT-CCM/OR_Handler.cpp: + * tools/Config_Handlers/RT-CCM/SRD_Handler.h: + * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp: + * tools/Config_Handlers/RT-CCM/test.cpp: + * tools/Config_Handlers/XML_Typedefs.h: + * tools/Config_Handlers/test.cpp: + * tools/IDL3_to_IDL2/cdmw_idl.cpp: + * tools/XML/XercesString.cpp: + + Fuzz. + + Fri Feb 6 22:06:51 UTC 2009 William R. Otte + + * bin/ciao_tests.lst: + + Added in tests that have been ported. + + Fri Feb 6 20:28:09 UTC 2009 William R. Otte + + * DAnCE/bin/PythonDAnCE/generator/comp_impl.py: + + Fixes that should have been in previous commit. + + * examples/Null_Component/Null_Component_exec.h: + * examples/Null_Component/Null_Component_exec.cpp: + * examples/Null_Component/descriptors/NodeMap.dat: + * examples/Null_Component/descriptors/Null_Homed.cdp: + * examples/Null_Component/descriptors/Null_Unhomed.cdp: + * examples/Null_Component/descriptors/run_test.pl: + + Ported this example to new CIAO/DAnCE. + + * examples/Null_Component/descriptors/Deployment.xsd: + * examples/Null_Component/descriptors/Domain.cdd: + * examples/Null_Component/descriptors/Null_Assembly.cid: + * examples/Null_Component/descriptors/Null_Assembly_Package.cpd: + * examples/Null_Component/descriptors/Null_Component.ccd: + * examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid: + * examples/Null_Component/descriptors/Null_Component_Package.cpd: + * examples/Null_Component/descriptors/Null_Component_exec.iad: + * examples/Null_Component/descriptors/Null_Component_stub.iad: + * examples/Null_Component/descriptors/Null_Component_svnt.iad: + * examples/Null_Component/descriptors/PackageConfiguration.pcd: + * examples/Null_Component/descriptors/Plan.cdp: + * examples/Null_Component/descriptors/TopLevelPackage.tpd: + * examples/Null_Component/descriptors/XMI.xsd: + + Removed these files. + + Fri Feb 6 19:51:02 UTC 2009 William R. Otte + + * DAnCE/bin/PythonDAnCE/generator/comp_impl.py: + * DAnCE/bin/PythonDAnCE/generator/home_impl.py: + * DAnCE/bin/generate_plan.py: + + Fixes to better handle namespaces components may be declared in. + + * examples/BasicSP/descriptors/run_test.pl: + + Will run plan specified on commad line. + + * examples/BasicSP/descriptors/BasicSP_Homed.cdp: + + Same as the _Unhomed plan, except all components are explicitly homed. + + Fri Feb 6 19:36:03 UTC 2009 William R. Otte + + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/BasicSP/EC/EC_exec.cpp: + + Raised the priority of logging messages so they would appear + without CIAO_LOG_LEVEL being set. + + * examples/BasicSP/EC/controller.cpp: + * examples/BasicSP/descriptors/BasicSP_Unhomed.cdp: + * examples/BasicSP/descriptors/run_test.pl: + + Fixes necessary to make this test work. + + Fri Feb 6 19:22:40 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Better exception handling. + + Fri Feb 6 18:26:39 UTC 2009 William R. Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Better exception handling. + + * DAnCE/bin/PythonDAnCE/generator/artifact.py: + * DAnCE/bin/PythonDAnCE/generator/comp_impl.py: + * DAnCE/bin/PythonDAnCE/generator/header.py: + * DAnCE/bin/generate_plan.py: + + Bugfixes for plangenerator. + + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/BasicSP/BMDisplay/BMDisplay_exec.h: + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/BasicSP/EC/EC_exec.h: + * examples/BasicSP/EC/EC_exec.cpp: + + Added component servant and executor factory operations. + + * examples/BasicSP/descriptors/BasicSP.dat: + * examples/BasicSP/descriptors/BasicSP_Unhomed.cdp: + * examples/BasicSP/descriptors/run_test.pl: + + Ported to new version of DAnCE. test script still needs to invoke correct controller. + + * examples/BasicSP/descriptors/BasicSP.cdp: + + Removed obsolete plan. + + Fri Feb 6 13:44:54 UTC 2009 William R. Otte + + * DAnCE/bin/PythonDAnCE: + * DAnCE/bin/PythonDAnCE/__init__.py: + * DAnCE/bin/PythonDAnCE/generator: + * DAnCE/bin/PythonDAnCE/generator/__init__.py: + * DAnCE/bin/PythonDAnCE/generator/_path.py: + * DAnCE/bin/PythonDAnCE/generator/artifact.py: + * DAnCE/bin/PythonDAnCE/generator/comp_impl.py: + * DAnCE/bin/PythonDAnCE/generator/comp_inst.py: + * DAnCE/bin/PythonDAnCE/generator/footer.py: + * DAnCE/bin/PythonDAnCE/generator/header.py: + * DAnCE/bin/PythonDAnCE/generator/home_impl.py: + * DAnCE/bin/PythonDAnCE/generator/home_inst.py: + * DAnCE/bin/PythonDAnCE/generator/homed_comp_impl.py: + * DAnCE/bin/PythonDAnCE/generator/homed_comp_inst.py: + * DAnCE/bin/PythonDAnCE/generator/templet.py: + * DAnCE/bin/generate_plan.py: + + First cut implementation of a very simple cdp generator. + + Thu Feb 5 19:36:49 UTC 2009 William R. Otte + + * ofccm/DAnCE_Scripts: + * ofccm/DAnCE_Scripts/em-log.conf: + * ofccm/DAnCE_Scripts/em.conf: + * ofccm/DAnCE_Scripts/integ_deployment.sh: + * ofccm/DAnCE_Scripts/integ_deployment.xsl: + * ofccm/DAnCE_Scripts/logger.conf: + * ofccm/DAnCE_Scripts/pl-log.conf: + * ofccm/DAnCE_Scripts/pl.conf: + * ofccm/DAnCE_Scripts/plb-log.conf: + * ofccm/DAnCE_Scripts/plb.conf: + * ofccm/DAnCE_Scripts/start_ExecutionManager.sh: + * ofccm/DAnCE_Scripts/start_PlanLauncher.sh: + * ofccm/DAnCE_Scripts/start_PlanLauncherBase.sh: + * ofccm/DAnCE_Scripts/start_demo_1.sh: + + * DAnCE/bin/em-log.conf: + * DAnCE/bin/em.conf: + * DAnCE/bin/integ_deployment.sh: + * DAnCE/bin/integ_deployment.xsl: + * DAnCE/bin/logger.conf: + * DAnCE/bin/pl-log.conf: + * DAnCE/bin/pl.conf: + * DAnCE/bin/plb-log.conf: + * DAnCE/bin/plb.conf: + * DAnCE/bin/start_ExecutionManager.sh: + * DAnCE/bin/start_PlanLauncher.sh: + * DAnCE/bin/start_PlanLauncherBase.sh: + * DAnCE/bin/start_demo_1.sh: + + Moved OFCCM specific scripts over to the ofccm directory. + + Thu Feb 5 19:07:02 UTC 2009 William R. Otte + + * tests/IDL3_to_XMI: + * tools/IDL3_to_XMI: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/IR_Simulator_visitor.h: + + Ported this tool, and associated tests in from head. + + Thu Feb 5 18:37:55 UTC 2009 William R. Otte + + * bin/ciao_tests.lst: + + Ported this file in from trunk. + + * DAnCE/tests/NodeApplicationTest: + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl: + * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * DAnCE/tests/NodeApplicationTest/README: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h: + * DAnCE/tests/NodeApplicationTest/run_test.pl: + * DAnCE/tests/NodeApplicationTest/run_test_ex.pl: + * DAnCE/tests/NodeApplicationTest/run_test_simple.pl: + + Removed obsolete test. + + Thu Feb 5 18:30:34 UTC 2009 William R. Otte + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added component factory functions, similar to those already generated for + Homes. + + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + + Added in generated factory functions from above. + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + + Added ability to run a single plan by passing it as a command line + arguments. + + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp: + + Test for unhomed components. + + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + + Fixes for unhomed components. + + Thu Feb 5 16:03:59 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + + First cut implementation of unhomed component deployment. Untested as yet. + + Thu Feb 5 14:40:18 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NS.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * tools/Config_Handlers/ERE_Handler.cpp: + + Fixes to enable external reference connections for non-provider connections. + + Thu Feb 5 00:39:48 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + + Fixed a segmentation fault. + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + + Tests similar to those in NodeManager-Deployments, except across two nodes. + + Wed Feb 4 22:08:09 UTC 2009 William R. Otte + + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + + Removed CLINFO from the logging messages. + + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + + Test script to execute all deployments in this directory + + * tools/XML/XML_Helper.tpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + + Reduced logging. + + Wed Feb 4 21:18:18 UTC 2009 William R. Otte + + * ciao/Containers/Container_Base.cpp: + + Demoted the logging priority of failure to find a receptacle policy. + + * examples/Hello/descriptors/run_test.pl: + + removed some extraneous logging. + + Wed Feb 4 19:07:27 UTC 2009 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * examples/Hello/descriptors/run_test.pl: + + fixing nameservice support. + + Wed Feb 4 01:26:49 UTC 2009 William R. Otte + + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + + Added TAO_ROOT/utils. + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Logging changes. + + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + + Compile fixes. + + * DAnCE/NodeApplication/Name_Utilities.cpp: + + Fixed segmentation faults. + + * DAnCE/tests/MocksTest/MockTest.mpc: + + Disabled. + + * examples/Hello/descriptors/run_test.pl: + + Fixes to use correct binaries and arguments. This test now runs. + + Tue Feb 3 14:24:17 UTC 2009 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * examples/Hello/descriptors/run_test.pl: + + Migrating changes to a new workspace. + + Mon Jan 12 17:41:29 UTC 2009 Abdullah Sowayan + + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + + Use var types to encapsulates memory management instead + of using ptr types. This closes bugzilla 3538. + + Thu Dec 11 5:05:57 UTC 2008 Johnny Willemsen + + * ccm/CCM_KeylessCCMHome.idl: + Updated include + + * ccm/ComponentServer/CCM_ComponentServer.idl: + * ccm/ComponentServer/CCM_ComponentServer_Client.idl: + * ciao/Containers/Session/Session_Container.h: + Layout changes + + * ciao/Containers/Session/Session_Container.cpp: + const/initialise pointer with 0 + + Fri Nov 28 16:05:57 UTC 2008 Johnny Willemsen + + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + Added missing include + + Wed Nov 26 16:17:57 UTC 2008 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication.mpc: + Layout changes + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + Layout changes to the help message + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Sender/starter.cpp: + Unicode changes + + Wed Nov 26 15:04:57 UTC 2008 Johnny Willemsen + + * ciao/ComponentServer/Configurators/NoOp/NoOp_Configurator.mpc: + Added dynamic flags + + * ciao/Contexts/Swapping/CIAO_UpgradeableContext.idl: + Updated include + + * CIDLC/ExecutorMappingGenerator.cpp: + Update the include being generated + + * DAnCE/tests/NameServiceTest/clt_main.cpp: + * DAnCE/tests/NameServiceTest/Dummy.idl: + * DAnCE/tests/NameServiceTest/NameServiceTest.mpc: + * DAnCE/tests/NameServiceTest/run_test.pl: + Cleanup and wchar + + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + Fixed warning + + * examples/Swapping/Receiver/Receiver.mpc: + Disabled some projects + + * ofccm/NodeApplication/NodeApplication_Impl.h: + Updated include + + * tests/CIAO_ComponentServer/Basic/client.cpp: + Unicode changes + + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + Updated + + Wed Nov 26 14:22:57 UTC 2008 Johnny Willemsen + + * DAnCE/TargetManager/TargetManager.mpc: + Disabled a few projects + + * DAnCE/tests/MocksTest/MocksTest.cpp: + Unicode change + + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + Fixed compile errors with msvc + + * examples/BasicSP/BasicSP.mpc: + Refactored this file a little bit. With msvc I do see that cidl + is each time executed even when nothing changes. This has to be fixed + + * MPC/config/dance_cdmw_idl.mpb: + Fixed after + + * ofccm/Cdmw/CDMW_Deployment.idl: + * ofccm/Cdmw/CDMW_IDL_Ext.idl: + Updated includes + + * ofccm/Cdmw/CDMW_IDL.mpc: + Use seperate idl project + + * ofccm/NodeApplication/ServerActivator_Impl.h: + Updated include + + Tue Nov 25 15:55:57 UTC 2008 Johnny Willemsen + + * ccm/ComponentServer/CCM_ComponentServer.idl: + * ccm/ComponentServer/CCM_ComponentServer.mpc: + * ccm/ComponentServer/CCM_ComponentServer_Base.idl: + * ccm/ComponentServer/CCM_ComponentServer_Client.idl: + * ccm/ComponentServer/ComponentServer.idl: + * ccm/ComponentServer/ComponentServer.mpc: + * ccm/ComponentServer/ComponentServer_Base.idl: + * ccm/ComponentServer/ComponentServer_Client.idl: + Renamed with CCM prefix + + * ccm/CCM_Enumeration.idl: + * ccm/CCM_Object.idl: + Moved sequence CCMObjectSeq to CCM_Object + + * ciao/ComponentServer/CIAO_ComponentServer.idl: + Use CCMObjectSeq + + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + Use CCMObjectSeq + + * ciao/ComponentServer/CIAO_CS_Client.idl: + * ciao/Containers/Session/Session_Container.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * ofccm/Cdmw/CDMW_IDL.idl + Updated include + + * examples/Swapping/Sender/Sender.mpc: + Disabled these projects + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + Explicitly list export header files + + Tue Nov 25 14:30:57 UTC 2008 Johnny Willemsen + + * ccm/ComponentServer/ComponentServer.mpc: + Only compile the IDL files as part of one project + + * ciao/Servants/Servants.mpc: + Move template files to seperate group + + * DAnCE/NodeApplication/Name_Utilities.cpp: + Fixed warning + + * ofccm/NodeApplication/NodeApplication_Impl.cpp: + Initialise pointers with 0 + + Tue Nov 25 08:30:57 UTC 2008 Johnny Willemsen + + * ciao/Servants/Swapping/CIAO_SwapExec.idl: + * ciao/Servants/Swapping/Dynamic_Component_Servant_Base.cpp + * ciao/Servants/Swapping/Dynamic_Component_Servant_Base.h + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_Base.h + * examples/Swapping/Receiver/Receiver_exec.h + * examples/Swapping/Sender/Sender_exec_1.h + * examples/Swapping/Sender/Sender_exec_2.h + * ofccm/NodeApplication/ComponentInstallation_Impl.h + * ofccm/NodeApplication/NodeApplication_Impl.cpp + * ofccm/NodeApplication/NodeApplication_Impl.h + * ofccm/NodeApplication/ServerActivator_Impl.cpp + * ofccm/NodeApplication/ServerActivator_Impl.h + Updated includes + + * ciao/Servants/Swapping/Swapping_Servants.mpc + * ciao/Servants/Swapping/CIAO_Swapping_Servant_export.h + New files + + Mon Nov 24 20:08:57 UTC 2008 Johnny Willemsen + + * ciao/Servants/Home_Servant_Impl_T.cpp: + Fixed compile error + + * ciao/Servants/Port_Activator_T.cpp: + * ciao/Servants/Port_Activator_T.h: + Fixed signature deactivate + + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + Datatype/const changs + + * DAnCE/NodeApplication/Name_Utilities.cpp: + * DAnCE/NodeApplication/Name_Utilities.h: + Unicode changes + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Layout changes + + * DAnCE/RedirectionService/CCMObjectLocator.cpp: + Datatype changes + + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + Fixed compile error + + * examples/Swapping/Sender/Sender_exec.h: + Fixed include + + Mon Nov 24 19:48:57 UTC 2008 Johnny Willemsen + + * ccm/ComponentServer/ComponentServer.mpc + Layout change + + * ciao/Containers/Session/Session_Container.cpp: + Catch exceptions as const + + * ciao/Contexts/Context_Impl_Base.h: + Updated include + + * ciao/Servants/Home_Servant_Impl_Base.h: + Include Container_BaseC.h, the forward declaration + gives problems with msvc8 + + * ciao/Servants/Port_Activator.h: + Corrected signature so that we match the base class + + * ciao/Servants/Servant_Impl_T.h: + Removed not needed forward declaration + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + Unicode changes + + * DAnCE/NodeApplication/ServerActivator_Impl.cpp: + Const change + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + Unicode and layout changes + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + Layout changes and initialise pointer with 0 + + * examples/Hello/Sender/Sender_exec.cpp: + Unicode change + + * ofccm/Cdmw/CDMW_Deployment.idl: + * ofccm/Cdmw/CDMW_IDL_Ext.idl: + Updated includes + + Mon Nov 24 16:06:57 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/Name_Utilities.h: + * DAnCE/NodeApplication/Name_Utilities.cpp: + + Files missing from last commit. + + Sun Nov 23 23:59:50 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Properties.idl: + + Rearranged, organized + + * DAnCE/DomainApplicationManager/Node_Locator.h: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + + Improved NameService support. + + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/run_test.pl: + + Updates to work with new DAnCE. + + * tools/Config_Handlers/XSCRT/Elements.hpp: + * tools/XML/XML_Helper.h: + + Compile fixes. + + * examples/Hello/ReDaC-Usage.html: + * examples/Hello/descriptors/Hello.cid: + * examples/Hello/descriptors/Hello.cpd: + * examples/Hello/descriptors/Libraries.iad: + * examples/Hello/descriptors/Receiver.ccd: + * examples/Hello/descriptors/Receiver.cid: + * examples/Hello/descriptors/Receiver.cpd: + * examples/Hello/descriptors/Receiver_Exec.iad: + * examples/Hello/descriptors/Receiver_Stub.iad: + * examples/Hello/descriptors/Receiver_Svnt.iad: + * examples/Hello/descriptors/Sender.ccd: + * examples/Hello/descriptors/Sender.cid: + * examples/Hello/descriptors/Sender.cpd: + * examples/Hello/descriptors/Sender_Exec.iad: + * examples/Hello/descriptors/Sender_Stub.iad: + * examples/Hello/descriptors/Sender_Svnt.iad: + * examples/Hello/descriptors_ReDaC: + * examples/Hello/descriptors_events: + * examples/Hello/descriptors_shared_components: + + Removed these files. + + Fri Nov 21 16:58:00 UTC 2008 William R. Otte + + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + + Better support for the naming service. + + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/run_test.pl: + + ported to new DAnCE. + + * examples/Hello/descriptors/Hello.cid: + * examples/Hello/descriptors/Hello.cpd: + * examples/Hello/descriptors/Libraries.iad: + * examples/Hello/descriptors/Receiver.ccd: + * examples/Hello/descriptors/Receiver.cid: + * examples/Hello/descriptors/Receiver.cpd: + * examples/Hello/descriptors/Receiver_Exec.iad: + * examples/Hello/descriptors/Receiver_Stub.iad: + * examples/Hello/descriptors/Receiver_Svnt.iad: + * examples/Hello/descriptors/Sender.ccd: + * examples/Hello/descriptors/Sender.cid: + * examples/Hello/descriptors/Sender.cpd: + * examples/Hello/descriptors/Sender_Exec.iad: + * examples/Hello/descriptors/Sender_Stub.iad: + * examples/Hello/descriptors/Sender_Svnt.iad: + + Removed superfluous files. + + * examples/Hello/descriptors_ReDaC: + * examples/Hello/descriptors_events: + * examples/Hello/descriptors_shared_components: + * examples/Hello/ReDaC-Usage.html: + + Removed these files, as these features are no longer supported. + + Tue Nov 18 15:40:23 UTC 2008 Johnny Willemsen + + * CIDLC/Literals.cpp: + Generate CIAO version info in the header of the generated file + + Tue Nov 18 15:22:23 UTC 2008 Johnny Willemsen + + * DAnCE/Utils/DAnCE_Utils.mpc: + * DAnCE/Utils/Plan_Handler.cpp: + Fixed compilation + + Tue Nov 18 15:15:23 UTC 2008 Johnny Willemsen + + * ciao/Servants/Servant_Impl_Base.h: + * DAnCE/Deployment/Deployment_TargetManager.idl: + * DAnCE/TargetManager/DomainDataManager.h: + Layout changes + + * DAnCE/TargetManager/CmpClient.cpp: + wchar changes + + * DAnCE/TargetManager/DomainEvents.idl: + Updated includes + + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/TargetManager/TargetManagerImpl.idl + Updated for all refactoring + + * MPC/config/ciao_nodemanager_stub.mpb: + * MPC/config/ciao_targetmanager_stub.mpb: + * MPC/config/ciao_targetmanager_svnt.mpb: + * MPC/config/dance_nodemanager_stub.mpb: + * MPC/config/dance_nodemanager_svnt.mpb: + Updated these with unique lib names and correct aftes + + Tue Nov 18 14:55:23 UTC 2008 Johnny Willemsen + + * DAnCE/Interfaces/Interfaces.mpc: + Added custom idl projects and added DAnCE_NodeManager_svnt + + Tue Nov 18 14:16:23 UTC 2008 Johnny Willemsen + + * ciao/Contexts/Context.mpc: + Added missing dynamicflags + + * ciao/Servants/Servant_Impl_Utils_T.cpp: + Layout change + + * MPC/config/ciao_context_impl.mpb: + New base project + + * MPC/config/ciao_servant.mpb: + Use ciao_context_impl + + Mon Nov 17 16:08:23 UTC 2008 Johnny Willemsen + + * CCF/CCF/IDL2/Parser.hpp: + Undef interface when it is defined + + * DAnCE/DomainApplication/Domain_Application_Impl.cpp + * DAnCE/DomainApplication/Domain_Application_Impl.h + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h + * DAnCE/DomainApplicationManager/Node_Locator.cpp + * DAnCE/DomainApplicationManager/Node_Locator.h + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/ExecutionManager/ExecutionManager_Module.h + * DAnCE/NodeApplication/ServerActivator_Impl.cpp + * DAnCE/NodeApplication/ServerActivator_Impl.h + * DAnCE/NodeManager/Node_Manager_Exec.cpp + * DAnCE/NodeManager/Node_Manager_Module.cpp + * DAnCE/NodeManager/Node_Manager_Module.h + Various cleanup/layout changes + + Mon Nov 17 15:03:23 UTC 2008 Johnny Willemsen + + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/CIAO_ComponentServer.h + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp + * ciao/ComponentServer/CIAO_Container_Impl.h + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h + * ciao/ComponentServer/CIAO_ServerResources.idl + * ciao/Containers/Container_Base.cpp + * ciao/Containers/Container_Base.h + * ciao/Containers/Servant_Activator.cpp + * ciao/Containers/Servant_Activator.h + * ciao/Containers/Session/Session_Container.cpp + * ciao/Containers/Session/Session_Container.h + Layout changes + + * ciao/ComponentServer/Configurator_Factory.cpp + * ciao/ComponentServer/Configurator_Factory.h + No need to have a member variable + + Mon Nov 17 14:34:23 UTC 2008 Johnny Willemsen + + * ciao/Client_init.cpp + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp + * ciao/ComponentServer/CIAO_Container_Impl.cpp + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp + * ciao/ComponentServer/Configurators/RT/RTConfig_Manager.cpp + * ciao/ComponentServer/Configurators/RTNodeApp_Configurator.cpp + * ciao/Containers/Container_Base.cpp + * ciao/Containers/Servant_Activator.cpp + * ciao/Containers/Session/Session_Container.cpp + * ciao/Servants/Servant_Impl_Base.cpp + * ciao/Server_init.cpp + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp + * CIDLC/ServantSourceGenerator.cpp + * DAnCE/DomainApplication/Domain_Application_Impl.cpp + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp + * DAnCE/DomainApplicationManager/Node_Locator.cpp + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp + Layout, %s->%C changes + + Mon Nov 17 14:17:23 UTC 2008 Johnny Willemsen + + * DAnCE/Deployment/DAnCE_Core.mpc: + Removed -Gos, this has to be enabled in the default.features + file through gen_ostream=1 + + Sun Nov 16 22:12:23 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Properties.idl: + + Added naming service and component IOR properties. + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/RedirectionService/NameServiceRedirection.cpp: + + Logging/layout changes. + + Fri Nov 14 22:18:16 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Core.mpc: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + + Support for dumping deployment plan at deployment time based on presence + of the gen_ostream MPC feature. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Logging improvements. + + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/NodeManagerMap.dat: + + Porting of the basic Hello example to the new CIAO/DAnCE. + + Fri Nov 14 18:51:35 UTC 2008 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/Starter/Starter.cpp: + * DAnCE/tests/DeploymentTest1/test.cpp: + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + * DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + * MPC/config/ciao_componentserver_svnt.mpb: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/Containers/Swapping/Swapping_Container.cpp: + + Warning fixes on Linux. + + Thu Nov 13 22:58:42 UTC 2008 William R. Otte + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/DomainApplicationManager/Node_Locator.h: + * DAnCE/DomainApplicationManager/Node_Locator.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + + Refactored support for finding IORs of NodeManagers + to support Node Maps and NameService. + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp: + * DAnCE/Deployment/Module_Main.h: + + dance_plan_launcher executable. + + Wed Nov 12 21:26:14 UTC 2008 William R. Otte + + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + + Log message fixes. + + Wed Nov 12 21:22:43 UTC 2008 William R. Otte + + * DAnCE/Deployment/Module_Main.h: + + Fix to prevent a segmentation fault. + + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/ExecutionManager/Execution_Manager_Exec.cpp: + + Fixes to enable running EM as a standalone executable and enable + EM driven deployments. + + * DAnCE/NodeManager/Node_Manager_Module.cpp: + + Minor log message fix. + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc: + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp: + + Text excercising EM controlled deployment of a single component to single node. + + Wed Nov 12 19:53:23 UTC 2008 William R. Otte + + * DAnCE/tests/CIAO/ExecutionManager-Deployments: + + Destination for EM included tests. + + * DAnCE/tests/CIAO/NodeManager-Deployments/MultiplexConnectionExplicitHome.cdp: + + Test verifying multiplex facet connections. + + * DAnCE/tests/CIAO/NodeManager-Deployments/Components: + * DAnCE/tests/CIAO/Components: + + Moved components directory up one level. + + Wed Nov 12 19:35:47 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + + Improved exception handling. + + Wed Nov 12 19:30:30 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/ComponentAttributesSetter.h: + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Changes necessary to support attribiute initialization. + + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute.cidl: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute.idl: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute_exec.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute_exec_export.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute_stub_export.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleAttribute_svnt_export.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleAttributeExplicitHome.cdp: + + Test that excercises the setting of attributes on homes and components + during deployment. + + Wed Nov 12 18:06:10 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Properties.idl: + + Added naming service integration properties. + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleUser_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp: + + Changes necessary to get simplex facet/receptacle connections working. + + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + + Removed some extra output. + + Wed Nov 12 17:14:28 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleUser_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp: + Changes for facet/receptacle connections, not finished yet - + moving to different machine. + + Fri Nov 7 18:46:09 UTC 2008 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/EmitsConnectionExplicitHome.cdp: + + Fiexes for enabling connection of a standard emits/sub connection. + + Fri Nov 7 18:28:14 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimplePublisher_exec.cpp: + + Fixes for enabling connection of a standard pub/sub connection. + + Fri Nov 7 15:10:58 UTC 2008 William R. Otte + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/Traversal/Array.cpp: + * CCF/CCF/IDL3/IDL3.mpc: + * CIDLC/CIDLC.mwc: + + Reverted to revision 80830, as changes proposed in bug #3849 + caused a segmentation fault in Linux. + + Fri Nov 7 14:57:53 UTC 2008 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/PublishConnectionExplicitHome.cdp: + Test plan that will excercise a publish/subscribe connection. + + Thu Nov 6 20:55:19 UTC 2008 William R. Otte + + * CCF/CCF/CIDL/CIDL.mpc: + + Added reference to '.' in Source_Files accidentally (?) removed + by Tue Nov 4 10:10:28 UTC 2008 Johnny Willemsen . + + Thu Nov 6 20:25:28 UTC 2008 Johnny Willemsen + + * CCF/CCF/IDL2/IDL2.mpc + * CCF/CCF/IDL3/IDL3.mpc + Set /P flag for the archiver with bmake + + Thu Nov 6 19:25:22 UTC 2008 William R. Otte + + * tools/Config_Handlers/XSCRT/XML.hpp: + * tools/XML/XML_Schema_Resolver.cpp: + + Added support for xerces versions < 3.0. + + Thu Nov 6 18:47:56 UTC 2008 William R. Otte + + * DAnCE/Logger/Log_Macros.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Servants/Servant_Impl_Base.cpp: + + Warning fixes for Linux. + + Thu Nov 6 16:35:22 UTC 2008 William R. Otte + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + + Disabled this build. + + * tests/CIAO_ComponentServer/SimpleComponent/run_test.pl: + + Minor fixes. + + * tools/Config_Handlers/IRDD_Handler.h: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/XML_Typedefs.h: + * tools/Config_Handlers/XML_Typedefs.cpp: + * tools/XML/XML_Helper.tpp: + + Compilation fixes. + + Thu Nov 6 15:28:10 UTC 2008 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleConsumer.idl: + * DAnCE/tests/NameServiceTest/NameServiceTest.mpc: + * DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc: + * ciao/Containers/Swapping/Dynamic_Component_Activator.h: + + Compilation fixes. + + * tests/CIAO_ComponentServer/SimpleComponent/run_test.pl: + + Added a run_test script. + + Wed Nov 5 20:08:28 UTC 2008 Johnny Willemsen + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + Various changes for CB2009 support + + Tue Nov 4 10:10:28 UTC 2008 Johnny Willemsen + + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp: + Fixed ambiguity problems with CodeGear C++ Builder 2009 + + * CCF/CCF/CIDL/CIDL.mpc + Set /P flag for the archiver with bmake + + Mon Nov 3 19:56:29 UTC 2008 William R. Otte + + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleConsumer.idl: + * ciao/Containers/Session/Session_Container.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + * tools/XML/XML_Error_Handler.cpp: + * tools/XML/XML_Helper.tpp: + + Compile/link fixes on linux. + + Mon Nov 3 18:32:28 UTC 2008 Johnny Willemsen + + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc + * DAnCE/NodeManager/Node_Manager_Module.cpp + * DAnCE/NodeManager/NodeManager.mpc + * DAnCE/Starter/Starter.h + * MPC/config/cidlc.mpb + * MPC/config/dance_node_manager.mpb + * tools/XML/XML.mpc + Fixed various compile/link problems + + Mon Nov 3 17:13:28 UTC 2008 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication.mpc: + Added missing base project + + Thu Oct 23 09:25:28 UTC 2008 Johnny Willemsen + + * ciao/Containers/Container_Base.h + * ciao/Containers/Servant_Activator.h + * ciao/Containers/Session/Session_Container.h + * ciao/Containers/Swapping/Dynamic_Component_Activator.h + * ciao/Contexts/Context_Impl_T.h + * CIDLC/ExecImplHeaderGenerator.cpp + * DAnCE/TargetManager/TargetManager_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleConsumer_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleEmitter_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleMultipleUser_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleProvider_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimplePublisher_exec.h + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleUser_exec.h + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h + * examples/BasicSP/BasicSP_exec.h + * examples/BasicSP/BMClosedED/BMClosedED_exec.h + * examples/BasicSP/BMDevice/BMDevice_exec.h + * examples/BasicSP/BMDisplay/BMDisplay_exec.h + * examples/BasicSP/EC/EC_exec.h + * examples/Display/GPS/GPS_exec.h + * examples/Display/GPS/GPS_tracing_exec.h + * examples/Display/NavDisplay/NavDisplay_exec.h + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h + * examples/Display/RateGen/RateGen_exec.h + * examples/Hello/Receiver/Receiver_exec.h + * examples/Hello/Sender/Sender_exec.h + * examples/Null_Component/Null_Component_exec.h + * examples/Swapping/Receiver/Receiver_exec.h + * examples/Swapping/Sender/Sender_exec.h + * examples/Swapping/Sender/Sender_exec_1.h + * examples/Swapping/Sender/Sender_exec_2.h + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h + * performance-tests/Protocols/Receiver/Receiver_exec.h + * performance-tests/Protocols/Sender/Sender_exec.h + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h + * tests/Minimum/Receiver/Receiver_exec.h + * tests/Minimum/Sender/Sender_exec.h + Use ::CORBA::LocalObject + + Wed Oct 22 13:07:28 UTC 2008 William R. Otte + + * ciao/Servants/Home_Servant_Impl_T.cpp: + + Removed debug change that caused segfault. + + Wed Oct 22 12:48:37 UTC 2008 William R. Otte + + * DAnCE/Starter/Starter.cpp: + * DAnCE/Starter/Starter.mpc: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + + Compilation fixes. + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Containers.mpc: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Servants/Home_Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_T.h: + * ciao/Servants/Servant_Impl_T.cpp: + + Fixes to have the container properly manage the lifecycle of + components during the teardown phase, so that the + SimpleComponentExplicitHome plan properly teardown. + + * ciao/Logger/Log_Macros.h: + + Removed non-interpreted flags from CIAO_TRACE macros. + + Tue Oct 21 19:23:20 UTC 2008 Johnny Willemsen + + * DAnCE/DomainApplication/Domain_Application_Impl.h: + Added missing post.h + + Tue Oct 21 18:51:20 UTC 2008 Johnny Willemsen + + * ccm/CCM.mpc: + Make sure CIAO_ROOT is added to the include dirs + + Fri Oct 10 01:02:20 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Core.mpc: + * DAnCE/Deployment/DAnCE_Properties.idl: + + Codify DAnCE configuration property names in IDL. + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Implemented passivation, removal, and destruction logic. + + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + + Added new command line options. + + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull.cidl: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull.idl: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull.mpc: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull_exec.cpp: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull_exec_export.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull_stub_export.h: + * DAnCE/tests/CIAO/NodeManager-Deployments/Components/SimpleNull_svnt_export.h: + + Component with no ports to test lifecycle operations. + + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleHome.cdp: + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp: + + Fixes for test passing. + + * ccm/CCM_Object.idl: + + Removed CIAO-specific interfaces. + + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_Properties.idl: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Servants/Home_Servant_Impl_Base.cpp: + + Fixes for proper component/servant lifecycle management. + + Tue Oct 7 19:20:38 UTC 2008 William R. Otte + + * DAnCE/tests/CIAO/NodeManager-Deployments/Components: + * DAnCE/tests/CIAO/Components: + + Moved Components subdirectory to the NodeManager-Deployments + directory. + + Tue Oct 7 19:16:06 UTC 2008 William R. Otte + + * DAnCE/tests/CIAO/Components: + * DAnCE/tests/CIAO/Components/SimpleCommon.idl: + * DAnCE/tests/CIAO/Components/SimpleCommon.mpc: + * DAnCE/tests/CIAO/Components/SimpleCommon_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleCommon_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer.cidl: + * DAnCE/tests/CIAO/Components/SimpleConsumer.idl: + * DAnCE/tests/CIAO/Components/SimpleConsumer.mpc: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleConsumer_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleConsumer_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter.cidl: + * DAnCE/tests/CIAO/Components/SimpleEmitter.idl: + * DAnCE/tests/CIAO/Components/SimpleEmitter.mpc: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleEmitter_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleEmitter_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.idl: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleMultipleUser_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider.cidl: + * DAnCE/tests/CIAO/Components/SimpleProvider.idl: + * DAnCE/tests/CIAO/Components/SimpleProvider.mpc: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleProvider_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleProvider_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher.cidl: + * DAnCE/tests/CIAO/Components/SimplePublisher.idl: + * DAnCE/tests/CIAO/Components/SimplePublisher.mpc: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp: + * DAnCE/tests/CIAO/Components/SimplePublisher_exec_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_stub_export.h: + * DAnCE/tests/CIAO/Components/SimplePublisher_svnt_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser.cidl: + * DAnCE/tests/CIAO/Components/SimpleUser.idl: + * DAnCE/tests/CIAO/Components/SimpleUser.mpc: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.h: + * DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp: + * DAnCE/tests/CIAO/Components/SimpleUser_exec_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_stub_export.h: + * DAnCE/tests/CIAO/Components/SimpleUser_svnt_export.h: + + Several components that individually test a single port type. + + Tue Oct 7 14:50:57 UTC 2008 William R. Otte + + * DAnCE/Logger/Log_Macros.h: + * DAnCE/Logger/Logger_Service.cpp: + + Missing from previous commit. + + * DAnCE/tests/CIAO: + * tests/DAnCE: + * tests/DAnCE/NodeManager-Deployments: + * tests/DAnCE/NodeManager-Deployments/SimpleHome.cdp: + * tests/DAnCE/NodeManager-Deployments/nm_launcher.mpc: + * tests/DAnCE/NodeManager-Deployments/simple_nm_launcher.cpp: + + Moved test under DAnCE tree. + + Tue Oct 7 14:37:30 UTC 2008 William R. Otte + + * DAnCE/Logger/Log_Macros.h: + * DAnCE/Logger/Logger_Service.cpp: + + Bugfixes. + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + + Fixes necessary to pass NodeManager-Deployments/SimpleHome.cdp. + + * DAnCE/RedirectionService/RedirectionService.cpp: + + Improved logging. + + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp: + * tests/DAnCE/NodeManager-Deployments: + * tests/DAnCE/NodeManager-Deployments/SimpleHome.cdp: + * tests/DAnCE/NodeManager-Deployments/nm_launcher.mpc: + * tests/DAnCE/NodeManager-Deployments/simple_nm_launcher.cpp: + + Simple test to excercise installation of a single home. + + Mon Oct 6 15:12:49 UTC 2008 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_Properties.idl: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + + Codified some component server configvalue names in IDL. + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + + Fixed a couple bugs w.r.t respecting default vs. custom server timeouts. + + Wed Oct 1 20:42:34 UTC 2008 William R. Otte + + * ciao/Logger/Logger_Service.cpp: + + Enabling tracing inadvertantly disabled logging. + + Wed Oct 1 20:27:33 UTC 2008 William R. Otte + + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/XML/XML_Helper.h: + * tools/XML/XML_Helper.tpp: + + Fixed some incompatibilities with Xerces 3.0, and improved logging in the + XML_File_Intf. + + Wed Oct 1 02:08:47 UTC 2008 William R. Otte + + * DAnCE/Deployment/Deployment_common.h: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + + Changes necessary for NodeApplicationManager-NodeApplication test to pass. + + Tue Sep 30 14:52:09 UTC 2008 William R. Otte + + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + + Changes necessary to pass NodeManager-NodeApplicationManager test. + + Tue Sep 30 14:32:34 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Loader.h: + * DAnCE/Deployment/Module_Main.h: + * DAnCE/Logger/Log_Macros.h: + * DAnCE/Logger/Logger_Service.h: + * DAnCE/Logger/Logger_Service.cpp: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Exec.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Starter/Starter.h: + * DAnCE/Starter/Starter.cpp: + + Fixed logging infrastructure, enableed NodeManager binary and ensured + its ability to start up. + + * ciao/Logger/Log_Macros.h: + + Fixed tracing facility. + + Mon Sep 29 17:26:48 UTC 2008 William R. Otte + + * DAnCE/Deployment/Deployment_Connection.idl: + * DAnCE/Deployment/Deployment_common.h: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/RedirectionService/NameServiceRedirection.h: + * DAnCE/RedirectionService/RedirectionService.h: + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + * DAnCE/tests/DeploymentTest1/test.cpp: + * DAnCE/tests/MocksTest/MocksTest.cpp: + * DAnCE/tests/NameServiceTest/clt_main.cpp: + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + * DAnCE/tests/ObjectLocatorTest/clt_main.cpp: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/RegistrationPath.h: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + * MPC/config/ccm_svnt.mpb: + * MPC/config/ciao_executor.mpb: + * MPC/config/ciao_servant.mpb: + * MPC/config/dance_exe.mpb: + * ciao/Client_init.h: + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/Configurator_Factory.cpp: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.h: + * ciao/ComponentServer/Configurators/Config_Manager.h: + * ciao/ComponentServer/Configurators/RTConfig_Manager.h: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + * ciao/Containers/CIAO_Servant_Activator.idl: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/Logger_Service.cpp: + * ciao/Servants/CIAO_Port_Activator.idl: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Server_init.h: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + * examples/Display/NavDisplay/NavDisplay_exec.h: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * ofccm/Cdmw/CDMW_IDL.mpc: + * ofccm/NodeApplication/ComponentAttributesSetter.cpp: + * ofccm/NodeApplication/NodeApplication.mpc: + * ofccm/NodeApplication/ServerActivator_Impl.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/Basic/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + * tests/Minimum/Sender/Sender.mpc: + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Compile fixes, converted from <> includes to "" includes where appropriate. + + Tue Jun 3 14:01:08 UTC 2008 William R. Otte + + * DAnCE/Deployment/Deployment_Connection.idl: + * DAnCE/Deployment/Deployment_common.h: + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + * DAnCE/NodeApplication/ServerActivator_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/RedirectionService/NameServiceRedirection.h: + * DAnCE/RedirectionService/RedirectionService.h: + * DAnCE/tests/MocksTest/MocksTest.cpp: + * DAnCE/tests/RedirectionServiceTest/RegistrationPath.h: + * ciao/Client_init.h: + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/Configurator_Factory.cpp: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.h: + * ciao/ComponentServer/Configurators/Config_Manager.h: + * ciao/ComponentServer/Configurators/RTConfig_Manager.h: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + * ciao/Containers/CIAO_Servant_Activator.idl: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/Logger_Service.cpp: + * ciao/Servants/CIAO_Port_Activator.idl: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Server_init.h: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + * ofccm/NodeApplication/ComponentAttributesSetter.cpp: + * ofccm/NodeApplication/ServerActivator_Impl.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/Basic/client.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Fixed includes. + + Sun May 25 22:53:30 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Stripped much of the functionality to prepare for CIAO-specific implementation. + + * DAnCE/Deployment/Deployment_common.h: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/RedirectionService/CCMObjectLocator.h: + * MPC/config/ciao_servant.mpb: + * MPC/config/cidlc.mpb: + * MPC/config/dance_component_server_svnt.mpb: + * MPC/config/dance_node_application.mpb: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc: + + compile/link errors. + + Tue May 20 18:43:42 UTC 2008 William R. Otte + + * CIDLC/ExecImplSourceGenerator.cpp: + + Fixed spelling error. + + * DAnCE/Deployment/Deployment_common.h: + + Added PROPERTY_MAP typedef, a hash map translating names to property values. + + * MPC/config/ciao_servant.mpb: + * MPC/config/cidlc.mpb: + * MPC/config/dance_component_server_svnt.mpb: + * MPC/config/dance_node_application.mpb: + * ciao/CIAO.mpc: + * ciao/Client_init.cpp: + * ciao/Contexts/Context.mpc: + * ciaosvcs/Events/CIAO_Events.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + * ofccm/NodeApplication/NodeApplication.mpc: + * tests/CIAO_ComponentServer/Activator/Activator.mpc: + + Compile/link fixes. + + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/Logger_Service.h: + * ciao/Logger/Logger_Service.cpp: + + Compile fixes/bugfixes for bugs exposed by SimpleComponent unit test. + + * tests/CIAO_ComponentServer/Basic/run_test.pl: + + slight bugfix. + + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.cidl: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.idl: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_stub_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_svnt_export.h: + * tests/CIAO_ComponentServer/SimpleComponent/client.cpp: + + Simple unit test which manually deploys a simple component into the + CIAO_ComponentServer. + + * tools/Config_Handlers/XSCRT/XML.hpp: + * tools/XML/XML_Error_Handler.h: + * tools/XML/XML_Error_Handler.cpp: + * tools/XML/XML_Helper.tpp: + * tools/XML/XML_Schema_Resolver.h: + * tools/XML/XML_Schema_Resolver.tpp: + * tools/XML/XML_Schema_Resolver.cpp: + + Updates for Xerces 2.0 + + Thu Apr 10 23:44:01 UTC 2008 William R. Otte + + * MPC/config/ciao_cs_client.mpb: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + + Bugfixes necessary to make the ServerActivator test work. + + * tests/CIAO_ComponentServer/Activator: + * tests/CIAO_ComponentServer/Activator/Activator.mpc: + * tests/CIAO_ComponentServer/Activator/client.cpp: + * tests/CIAO_ComponentServer/Activator/run_test.pl: + + A simple exceercise of the CIAO ServerActivator, that + spawns component servers then uses them to create + containers. + + Wed Apr 9 20:08:07 UTC 2008 William R. Otte + + * MPC/config/ciao_exe.mpb: + + Make sure CIAO executables are installed to CIAO_ROOT/bin + + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/Configurators/Configurators.mpc: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Logger/Log_Macros.h: + * ciao/Servants/Port_Activator.cpp: + + Fixes to make the Basic component server test work. + + * tests/CIAO_ComponentServer: + * tests/CIAO_ComponentServer/Basic: + * tests/CIAO_ComponentServer/Basic/Basic.mpc: + * tests/CIAO_ComponentServer/Basic/client.cpp: + * tests/CIAO_ComponentServer/Basic/run_test.pl: + + Simple test that excercises creating and removing containers. + + Thu Apr 3 21:14:56 UTC 2008 William R. Otte + + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp: + * ciao/ComponentServer/Configurators/Configurators.mpc: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + + Fixes necessary to allow the componentserver executable to start up + in standalone mode (i.e., without a managing ServerActivator). + + Also, the name of the executable has changed to entirely lower-case. + + * ofccm/NodeApplication/NodeApplication.mpc: + + Renamed a project to avoid a duplicate name. + + Wed Apr 2 21:23:12 UTC 2008 William R. Otte + + * ccm/CCM.mpc: + * ccm/CCM_Exceptions.idl: + * ccm/CCM_Home.idl: + + Moved some exceptions to a new file, CCM_Exceptions.idl. + + * ciao/CIAO.mpc: + * ciao/CIAO_FailureReasons.idl: + + Created IDL representing CIAO failure reasons for inclusion in exceptions + thrown from CIAO. + + * MPC/config/ciao_server.mpb: + * ciao/Client_init.h: + * ciao/Client_init.cpp: + * ciao/Server_init.h: + * ciao/Server_init.cpp: + + Moved a bunch of stuff from Server_init to Client_init, in particular, + the server init funciton is now implemented in terms of the + client's. Also moved the configvalue map functions over. + + * ciao/ComponentServer/CIAO_ServerActivator_Impl.h: + * ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp: + + Fully implemented ServerActivator implementation that spawns new + processes. This class is for the most part implemented using + the template method pattern, with a little effort it could be + extended to support other spawning models. + + * ciao/ComponentServer/CIAO_CS_Client.idl: + * ciao/ComponentServer/CIAO_CS_Client_svnt_export.h: + * ciao/ComponentServer/CIAO_ComponentServer.h: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + + Moved the CIAO-specific derivations of the component + server-related interfaces to CIAO::Deployment module. + + Thu Mar 27 19:26:18 UTC 2008 William R. Otte + + * ofccm/Cdmw: + * DAnCE/Cdmw: + + Moved to ofccm specific directory. + + Thu Mar 27 19:09:00 UTC 2008 William R. Otte + + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + + Compile fixes, runtime functionality not expected. + + Thu Mar 27 18:30:16 UTC 2008 William R. Otte + + * DAnCE/NodeManager/NodeManager_Impl.cpp: + + Logging/format changes, don't expect this to compile, mostly + a bookmark before I start the real work. + + Thu Mar 27 18:13:07 UTC 2008 William R. Otte + + * DAnCE/DomainApplication/Domain_Application_Impl.h: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + + Logging/format changes, don't expect this to compile, mostly + a bookmark before I start the real work. + + Thu Mar 27 15:09:33 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + + Formatting and logging changes. I don't expect this to compile, + just bookmarking for future reference. + + * MPC/config/ciao_session_container.mpb: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.h: + * ciao/Servants/Servants.mpc: + * ciao/Server_init.h: + + Linux compile error fixes. + + Mon Mar 24 16:18:46 UTC 2008 William R. Otte + + * DAnCE/Logger/Log_Macros.h: + * ciao/Containers/Session/Session_Container.idl: + * ciao/Logger/Log_Macros.h: + + Files missing from previous commit. + + Thu Mar 20 13:04:53 UTC 2008 William R. Otte + + * DAnCE/Deployment/Deployment_RepositoryManager.idl: + * DAnCE/bin/integ_deployment.xsl: + + Added missing newlines at end of file. + + * DAnCE/Logger/Logger_Service.cpp: + + Added DANCE_ logging macros to match ACE_, so we can later have + DAnCE use a log handler that is separate from ACE. + + * DAnCE/Logger/File_Logger_Backend.cpp: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeApplication/ComponentAttributesSetter.cpp: + * DAnCE/NodeApplication/ComponentInstallation_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/ServerActivator_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + * DAnCE/RedirectionService/CCMObjectLocator.cpp: + * DAnCE/RedirectionService/NameServiceRedirection.cpp: + * DAnCE/RedirectionService/RedirectionService.cpp: + * DAnCE/RepositoryManager/PC_Updater.cpp: + * DAnCE/RepositoryManager/RM_Helper.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/RepositoryManager/RepositoryManager.cpp: + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + * DAnCE/RepositoryManager/URL_Parser.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + * DAnCE/Starter/Starter.cpp: + * DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl: + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + * DAnCE/TargetManager/CmpClient.cpp: + * DAnCE/TargetManager/DomainDataManager.cpp: + * DAnCE/Utils/Plan_Handler.cpp: + * DAnCE/tests/DeploymentPlanDump/test.cpp: + * DAnCE/tests/DeploymentPlanTestReferences/test.cpp: + * DAnCE/tests/DeploymentTest1/test.cpp: + * DAnCE/tests/MocksTest/plCommand.In: + * DAnCE/tests/MocksTest/run_test.pl: + * DAnCE/tests/NameServiceTest/clt_main.cpp: + * DAnCE/tests/NameServiceTest/srv_main.cpp: + * DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp: + * DAnCE/tests/ObjectLocatorTest/clt_main.cpp: + * DAnCE/tests/ObjectLocatorTest/srv_main.cpp: + * DAnCE/tests/RedirectionServiceTest/clt_main.cpp: + * DAnCE/tests/RedirectionServiceTest/srv_main.cpp: + + Use DANCE_ debug and error macros for diagnostics. + + * ciao/Logger/Logger_Service.cpp: + + Created CIAO_ debug/error macros, so the ciao logger can be replaced + later to not use the default ACE logger. + + * ciao/Logger/File_Logger_Backend.cpp: + * ciao/CIAO_common.h: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp: + * ciao/ComponentServer/Configurators/RTConfig_Manager.cpp: + * ciao/ComponentServer/Configurators/RTNodeApp_Configurator.cpp: + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + * ciao/Containers/CIAO_Servant_Activator.idl: + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Containers/Swapping/Dynamic_Component_Activator.inl: + * ciao/Containers/Swapping/Swapping_Container.cpp: + * ciao/Servants/CIAO_Port_Activator.idl: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Server_init.cpp: + + Use CIAO_ error/debug macros instead of ACE. + + Thu Mar 20 10:53:58 UTC 2008 William R. Otte + + * DAnCE/NodeApplication/NodeApplication.mpc: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/Contexts/Context.mpc: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Servants.mpc: + + Linking/compile errors that didn't crop up until a realclean. + + Tue Mar 18 23:08:36 UTC 2008 William R. Otte + + * ofccm: + * ofccm/NodeApplication: + + Copy of the OFCCM compatible NodeApplication logic. + + Tue Mar 18 22:29:19 UTC 2008 William R. Otte + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Port_Activator.inl: + * ciao/Servants/Port_Activator.cpp: + * ciao/Servants/Port_Activator_T.cpp: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_T.h: + * ciao/Servants/Servant_Impl_T.cpp: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/Containers/Containers.mpc: + + Removed ciao_{post,pre}activate, and addressed some fallout from the + container refactoring. + + * ccm/CCM_SessionComponent.idl: + + Added configuration_complete to this local interface. The CCM spec does not + have this operation defined, only having it on the executor locator, which is not + a required way to implement executors (and, I believe, excluded by LWCCM!). + + + * DAnCE/TargetManager/TargetManager_exec.h: + * DAnCE/TargetManager/TargetManager_exec.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp: + * ccm/CCM_Object.idl: + * docs/TODO.html: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + * examples/BasicSP/BMClosedED/BMClosedED_exec.h: + * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/BasicSP/BMDevice/BMDevice_exec.h: + * examples/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/BasicSP/BMDisplay/BMDisplay_exec.h: + * examples/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/BasicSP/EC/EC_exec.h: + * examples/BasicSP/EC/EC_exec.cpp: + * examples/Display/GPS/GPS_exec.h: + * examples/Display/GPS/GPS_exec.cpp: + * examples/Display/GPS/GPS_tracing_exec.h: + * examples/Display/GPS/GPS_tracing_exec.cpp: + * examples/Display/NavDisplay/NavDisplay_exec.h: + * examples/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/Display/RateGen/RateGen_exec.h: + * examples/Display/RateGen/RateGen_exec.cpp: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Null_Component/Null_Component_exec.h: + * examples/Null_Component/Null_Component_exec.cpp: + * examples/Null_Component/StaticDAnCEApp.mpc: + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Receiver/Receiver_exec.h: + * examples/Swapping/Receiver/Receiver_exec.cpp: + * examples/Swapping/Sender/Sender.mpc: + * examples/Swapping/Sender/Sender_exec.h: + * examples/Swapping/Sender/Sender_exec.cpp: + * examples/Swapping/Sender/Sender_exec_1.h: + * examples/Swapping/Sender/Sender_exec_1.cpp: + * examples/Swapping/Sender/Sender_exec_2.h: + * examples/Swapping/Sender/Sender_exec_2.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.h: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.h: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp: + * tests/Minimum/Receiver/Receiver_exec.h: + * tests/Minimum/Receiver/Receiver_exec.cpp: + * tests/Minimum/Sender/Sender_exec.h: + * tests/Minimum/Sender/Sender_exec.cpp: + + Fallout from removing ciao_{pre,post}activate and replacing it with + standards based configuration_complete. + + Mon Mar 17 03:49:06 UTC 2008 William R. Otte + + * MPC/config/ciao_servant_activator.mpb: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Container_Base.inl: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.inl: + * ciao/Containers/Session/Session_Container.cpp: + + Compile error fallout from previous commits. + + * docs/CIAO_Style_Guide.txt: + + Added guidance for allocation and guards. + + Tue Mar 11 06:34:45 UTC 2008 William R. Otte + + * ciao/Containers/CIAO_Servant_Activator.idl: + * ciao/Containers/CIAO_Servant_Activator_export.h: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.idl: + * ciao/Containers/Container_Base.inl: + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Containers.mpc: + * ciao/Containers/Servant_Activator.h: + * ciao/Containers/Servant_Activator.cpp: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.inl: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Contexts/Context_Impl_Base.h: + * ciao/Contexts/Context_Impl_Base.inl: + * ciao/Contexts/Context_Impl_Base.cpp: + * ciao/Contexts/Context_Impl_T.h: + * ciao/Contexts/Context_Impl_T.cpp: + * ciao/Servants/CIAO_Port_Activator.idl: + * ciao/Servants/CIAO_Port_Activator_export.h: + * ciao/Servants/Home_Servant_Impl_Base.h: + * ciao/Servants/Home_Servant_Impl_Base.cpp: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Port_Activator.inl: + * ciao/Servants/Port_Activator.cpp: + * ciao/Servants/Port_Activator_T.h: + * ciao/Servants/Port_Activator_T.cpp: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_T.h: + * ciao/Servants/Servant_Impl_T.cpp: + * ciao/Servants/Servants.mpc: + + Refactored the container interface in substantial ways. First, the containers should + now be implemented as locality constrained objects based on the Container_Base.idl + interface. This interface now contains _all_ methods that are used by servants during + deployment and teardown, as well as interfaces intended to be used by the external container + interface to initiate copmonent and home installations. + + The goal here is to remove any need to have component servants dependent on specific container + implementation at all. + + Note that there is still quite some implementation required here - new methods and changes to + old ones. Everything at least compiles, which is a start. + + Changes to existing clients of the internal container interface should be plug-n-pray, + modulo changing pointer to vars. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Codegen changes for above. Servants for Hello and BasicSP compile. + + * MPC/config/ciao_port_activator_stub.mpb: + * MPC/config/ciao_servant_activator.mpb: + + Base projects for above. + + * ciao/Servants/Servant_Activator.h: + * ciao/Servants/Servant_Activator.cpp: + + Moved to container directory. + + Mon Mar 10 17:41:46 UTC 2008 William R. Otte + + * MPC/config/ccm.mpb: + * MPC/config/ccm_executor.mpb: + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_executor.mpb: + * MPC/config/ciao_servant.mpb: + * MPC/config/dance_component_server_svnt.mpb: + + MPC files which should have been in previous commit. + + Mon Mar 10 15:45:57 UTC 2008 William R. Otte + + * CIAO_TAO_DAnCE.mwc: + + * DAnCE/Cdmw/CDMW_Deployment.idl: + * DAnCE/Cdmw/CDMW_IDL.idl: + * DAnCE/Cdmw/CDMW_IDL.mpc: + * DAnCE/Cdmw/CDMW_IDL_Ext.idl: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/Logger/Logger.mpc: + * DAnCE/NodeApplication/ComponentAttributesSetter.h: + * DAnCE/NodeApplication/ComponentInstallation_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * MPC/config/ccm_componentserver_stub.mpb: + * MPC/config/ccm_componentserver_svnt.mpb: + * ccm/ComponentServer/ComponentServer.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + * tools/XML/XML.mpc: + + Changes to fix compilation from previous refactoring + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/Containers/Containers.mpc: + + Addidional container implementation. + + * ciao/Server_init.h: + * ciao/Server_init.cpp: + + ditched the CaMelCaSe in the name utility class. + + Mon Mar 10 00:57:38 UTC 2008 William R. Otte + + * DAnCE/Deployment/DAnCE_Core.mpc: + * DAnCE/Plan_Generator/Plan_Generator.mpc: + * DAnCE/RepositoryManager/RepositoryManager.mpc: + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + * DAnCE/TargetManager/TM_Client.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/tests/NodeApplicationManager-NodeApplication/NodeApplicationManager-NodeApplication.mpc: + * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc: + * DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc: + * MPC/config/dance_mocks.mpb: + * MPC/config/dance_node_application.mpb: + * bin/generate_component_mpc.pl: + * ccm/ComponentServer/ComponentServer.mpc: + * ciao/CIAO.mpc: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/Containers/Containers.mpc: + * ciao/Contexts/Context.mpc: + * ciao/Servants/Servants.mpc: + * ciao/Valuetype_Factories/Factories.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + * examples/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/BasicSP/BMDevice/BMDevice.mpc: + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/BasicSP/BasicSP.mpc: + * examples/BasicSP/EC/EC.mpc: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/Display/RateGen/RateGen.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/Null_Interface.mpc: + * examples/Null_Component/StaticDAnCEApp.mpc: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Sender/Sender.mpc: + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + * performance-tests/Protocols/Controller/Controller.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Protocols/common/Protocols.mpc: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc: + * tests/Bug_2130_Regression/interfaces/ENW.mpc: + * tests/CIDL/CodeGen/Basic.mpc: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc: + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc: + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc: + * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc: + * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc: + * tests/IDL3/Events/Abstract/Abstract.mpc: + * tests/IDL3/Events/Any/Any.mpc: + * tests/IDL3/Events/Regular/Regular.mpc: + * tests/IDL3/Homes/Attributes/HomeAttributes.mpc: + * tests/IDL3/Homes/Basic/Basic.mpc: + * tests/IDL3/Homes/Factory/Factory.mpc: + * tests/IDL3/Homes/Finder/Finder.mpc: + * tests/IDL3/Homes/Inheritance/Inheritance.mpc: + * tests/IDL3/ImpliedIDL/All/all.mpc: + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc: + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc: + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc: + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc: + * tests/IDL3/ImpliedIDL/Events/Events.mpc: + * tests/IDL3/ImpliedIDL/Homes/Homes.mpc: + * tests/IDL3/Lookup/lookup_test.mpc: + * tests/Minimum/Minimum_Base/Minimum_Base.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + * tests/Minimum/Sender/Sender.mpc: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/DynAny_Handler.mpc: + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc: + * tools/XML/XML.mpc: + + Adjusting for the deep-sixing of ciao_server_dnc, ciao_component_dnc, + and ciao_client_dnc. This probably breaks a bunch of stuff. + + Mon Mar 10 00:37:35 UTC 2008 William R. Otte + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Updates for ccm refactoring. + + * MPC/config/ccm_stub.mpb: + * MPC/config/ciao_events_base_dnc.mpb: + * MPC/config/ciao_events_dnc.mpb: + * MPC/config/dance_deployment_stub.mpb: + + MPC generation errors. + + Sun Mar 9 22:28:28 UTC 2008 William R. Otte + + * MPC/config/ciao_client.mpb: + * MPC/config/ciao_componentserver_stub.mpb: + * MPC/config/ciao_componentserver_svnt.mpb: + * MPC/config/ciao_config_manager.mpb: + * MPC/config/ciao_container_base.mpb: + * MPC/config/ciao_server.mpb: + * MPC/config/ciao_session_container.mpb: + + MPC build fixes. + + * ciao/CIAO.mpc: + * ciao/Client_init.cpp: + * ciao/ComponentServer/CIAO_CS_Client.idl: + * ciao/ComponentServer/CIAO_ComponentServer.cpp: + * ciao/ComponentServer/CIAO_ComponentServer.idl: + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.h: + * ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp: + * ciao/ComponentServer/CIAO_Container_Impl.h: + * ciao/ComponentServer/CIAO_Container_Impl.cpp: + * ciao/ComponentServer/CIAO_ServerResources.idl: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.h: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.inl: + * ciao/ComponentServer/Configurators/Basic_Config_Manager.cpp: + * ciao/ComponentServer/Configurators/Config_Manager.h: + * ciao/ComponentServer/Configurators/Configurators.mpc: + * ciao/ComponentServer/Configurators/NoOp_Configurator.h: + * ciao/ComponentServer/Configurators/RTConfig_Manager.h: + * ciao/ComponentServer/Configurators/Server_Configurator.h: + * ciao/ComponentServer/Configurators/Server_Configurator.cpp: + * ciao/Valuetype_Factories/Factories.mpc: + + Compile fixes for previous refactoring. + + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Containers.mpc: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + + Updated forward declarations to handle new component server. + + * ciao/Server_init.h: + * ciao/Server_init.cpp: + + Merged functions from CIAO_Utils. + + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_container_dnc.mpb: + * MPC/config/ciao_server_dnc.mpb: + * MPC/config/ciaodll.mpb: + * ciao/CCM_Core.mpc: + * ciao/CIAO_Core.mpc: + * ciao/CIAO_ServerResources.idl: + * ciao/CIAO_Utils.h: + * ciao/CIAO_Utils.cpp: + * ciao/CIAO_Utils_export.h: + * ciao/ComponentServer/Configurators/NAConfig_Manager.h: + * ciao/ComponentServer/Configurators/NAConfig_Manager.inl: + * ciao/ComponentServer/Configurators/NAConfig_Manager.cpp: + + Removed these files. + + Sun Mar 9 21:12:29 UTC 2008 William R. Otte + + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Container_Base_export.h: + * ciao/Containers/Containers.mpc: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Containers/Session/Session_Container_export.h: + * ciao/Contexts/Context.mpc: + * ciao/Contexts/Context_Impl_Base.h: + * ciao/Contexts/Context_Impl_Base.cpp: + * ciao/Contexts/Context_Impl_export.h: + * MPC/config/ciao_session_container.mpb + * MPC/config/ciao_container_base.mpb + + MPC file, changes to logging, new, and guard macros + to comply with new CIAO style guidelines. + + * ciao/Servants/Servants.mpc: + * MPC/config/ciao_servant_activator.mpb + + Split activator out to its own lib. + + Sun Mar 9 20:38:52 UTC 2008 William R. Otte + + * ccm/ComponentServer: + * ccm/ComponentServer/ComponentServer.idl: + * ccm/ComponentServer/ComponentServer.mpc: + * ccm/ComponentServer/ComponentServer_Base.idl: + * ccm/ComponentServer/ComponentServer_Client.idl: + * MPC/config/ccm_componentserver_stub.mpb: + * MPC/config/ccm_componentserver_svnt.mpb: + + Moved ComponentServer IDLS from DAnCE to CCM. + + * ciao/CIAO_common.h: + + Removed ciao_debug_level, the full range of debug message levels + should be used instead. + + * ciao/ComponentServer/CIAO_ComponentServer.mpc: + + Updated to reflect ComponentServer move above. + + * ciao/Servants/CIAO_Servant_Impl_export.h: + * ciao/Servants/Home_Servant_Impl_Base.h: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Port_Activator_T.h: + * ciao/Servants/Servant_Activator.h: + * ciao/Servants/Servant_Activator.cpp: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_T.cpp: + * ciao/Servants/Servant_Impl_Utils_T.cpp: + * ciao/Servants/Servants.mpc: + * ciao/Servants/StandardConfigurator_Impl.h: + + MPC file, changes to logging, and updated + to use _THROW_EX versions of new and guard macros. + + * docs/CIAO_Style_Guide.txt: + + Some additional style requirements for CIAO. + + * DAnCE/ComponentServer: + * DAnCE/ComponentServer/ComponentServer.idl: + * DAnCE/ComponentServer/ComponentServer.mpc: + * DAnCE/ComponentServer/ComponentServer_Base.idl: + * DAnCE/ComponentServer/ComponentServer_Client.idl: + * DAnCE/ComponentServer/DAnCE_ComponentServer_stub_export.h: + * DAnCE/ComponentServer/DAnCE_ComponentServer_svnt_export.h: + * MPC/config/dance_component_server_stub.mpb: + * MPC/config/dance_component_server_svnt.mpb: + + Removed these files. + + Sun Mar 9 17:04:55 UTC 2008 William R. Otte + + * MPC/config/ccm_stub.mpb: + + Updated to comply with previous commit. + + Sun Mar 9 16:59:05 UTC 2008 William R. Otte + + * ciao/ComponentServer: + * DAnCE/CIAO_ComponentServer: + + Moved CIAO component server to ciao source tree, where it should be. + + * ciao/ccm + * ccm + + Moved CCM idl directory to root, to better indicate its non-dependency + on CIAO, the CCM implementation. + + Sun Mar 9 16:56:42 UTC 2008 William R. Otte + + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.cpp: + + Additional fleshing of the Container implementation, note this is + not expected to compile, simply being committed to complete the + directory structure refactoring. + + Sun Mar 9 16:47:24 UTC 2008 William R. Otte + + * MPC/config/ccm_configvalue.mpb: + * MPC/config/ccm_cookie.mpb: + * MPC/config/ccm_stub.mpb: + * MPC/config/ccm_svnt.mpb: + + New base projects for the refactord CCM idls and valuetypes. + + * ciao/CIAO_Utils.h: + * ciao/CIAO_Utils.cpp: + * ciao/CIAO_Utils_export.h: + + Utility functions useful just about everywhere. + + * ciao/Logger: + + Renamed from CIAO_Logger + + * ciao/CCM_Core.mpc: + * ciao/CIAO_Core.mpc: + * ciao/Containers: + * ciao/Containers/Container_Base.h: + * ciao/Containers/Container_Base.inl: + * ciao/Containers/Container_Base.cpp: + * ciao/Containers/Session: + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.inl: + * ciao/Containers/Session/Session_Container.cpp: + * ciao/Containers/Swapping: + * ciao/Containers/Swapping/Dynamic_Component_Activator.h: + * ciao/Containers/Swapping/Dynamic_Component_Activator.inl: + * ciao/Containers/Swapping/Dynamic_Component_Activator.cpp: + * ciao/Containers/Swapping/Swapping_Container.h: + * ciao/Containers/Swapping/Swapping_Container.inl: + * ciao/Containers/Swapping/Swapping_Container.cpp: + * ciao/Contexts: + * ciao/Contexts/Context_Impl_Base.h: + * ciao/Contexts/Context_Impl_Base.inl: + * ciao/Contexts/Context_Impl_Base.cpp: + * ciao/Contexts/Context_Impl_T.h: + * ciao/Contexts/Context_Impl_T.cpp: + * ciao/Contexts/Swapping: + * ciao/Contexts/Swapping/CIAO_UpgradeableContext.idl: + * ciao/Contexts/Swapping/Upgradeable_Context_Impl_T.h: + * ciao/Contexts/Swapping/Upgradeable_Context_Impl_T.cpp: + * ciao/Servants: + * ciao/Servants/Home_Servant_Impl_Base.h: + * ciao/Servants/Home_Servant_Impl_Base.cpp: + * ciao/Servants/Home_Servant_Impl_T.h: + * ciao/Servants/Home_Servant_Impl_T.cpp: + * ciao/Servants/Port_Activator.h: + * ciao/Servants/Port_Activator.inl: + * ciao/Servants/Port_Activator.cpp: + * ciao/Servants/Port_Activator_T.h: + * ciao/Servants/Port_Activator_T.cpp: + * ciao/Servants/Servant_Activator.h: + * ciao/Servants/Servant_Activator.cpp: + * ciao/Servants/Servant_Impl_Base.h: + * ciao/Servants/Servant_Impl_Base.cpp: + * ciao/Servants/Servant_Impl_T.h: + * ciao/Servants/Servant_Impl_T.cpp: + * ciao/Servants/Servant_Impl_Utils_T.cpp: + * ciao/Servants/StandardConfigurator_Impl.h: + * ciao/Servants/StandardConfigurator_Impl.cpp: + * ciao/Servants/Swapping: + * ciao/Servants/Swapping/CIAO_SwapExec.idl: + * ciao/Servants/Swapping/Dynamic_Component_Servant_Base.h: + * ciao/Servants/Swapping/Dynamic_Component_Servant_Base.cpp: + * ciao/Servants/Swapping/Dynamic_Component_Servant_T.h: + * ciao/Servants/Swapping/Dynamic_Component_Servant_T.cpp: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_Base.h: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_Base.cpp: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_T.h: + * ciao/Servants/Swapping/Swapping_Servant_Home_Impl_T.cpp: + * ciao/Valuetype_Factories: + * ciao/Valuetype_Factories/ConfigValue.h: + * ciao/Valuetype_Factories/ConfigValue.cpp: + * ciao/Valuetype_Factories/ConfigValue_Export.h: + * ciao/Valuetype_Factories/Cookie_Export.h: + * ciao/Valuetype_Factories/Cookies.h: + * ciao/Valuetype_Factories/Cookies.inl: + * ciao/Valuetype_Factories/Cookies.cpp: + * ciao/Valuetype_Factories/Factories.mpc: + + Refactoring of the directory structure bloodbath. MPC files will come in + next commit. + + * ciao/ccm/CCM.mpc: + * ciao/ccm/CCM_Base.idl: + * ciao/ccm/CCM_CCM2Context.idl: + * ciao/ccm/CCM_CCMException.idl: + * ciao/ccm/CCM_Component.idl: + * ciao/ccm/CCM_ComponentId.idl: + * ciao/ccm/CCM_Configurator.idl: + * ciao/ccm/CCM_Container.idl: + * ciao/ccm/CCM_Container_Ex.idl: + * ciao/ccm/CCM_Context.idl: + * ciao/ccm/CCM_Cookie.idl: + * ciao/ccm/CCM_EnterpriseComponent.idl: + * ciao/ccm/CCM_Entity2Context.idl: + * ciao/ccm/CCM_EntityComponent.idl: + * ciao/ccm/CCM_EntityContext.idl: + * ciao/ccm/CCM_Enumeration.idl: + * ciao/ccm/CCM_EventBase.idl: + * ciao/ccm/CCM_EventConsumerBase.idl: + * ciao/ccm/CCM_Events.idl: + * ciao/ccm/CCM_ExecutorLocator.idl: + * ciao/ccm/CCM_Home.idl: + * ciao/ccm/CCM_HomeConfiguration.idl: + * ciao/ccm/CCM_HomeExecutorBase.idl: + * ciao/ccm/CCM_HomeFinder.idl: + * ciao/ccm/CCM_HomeRegistration.idl: + * ciao/ccm/CCM_KeylessCCMHome.idl: + * ciao/ccm/CCM_Navigation.idl: + * ciao/ccm/CCM_Object.idl: + * ciao/ccm/CCM_PrimaryKeyBase.idl: + * ciao/ccm/CCM_ProxyHomeRegistration.idl: + * ciao/ccm/CCM_Receptacle.idl: + * ciao/ccm/CCM_Session2Context.idl: + * ciao/ccm/CCM_SessionComponent.idl: + * ciao/ccm/CCM_SessionContext.idl: + * ciao/ccm/CCM_SessionSynchronization.idl: + * ciao/ccm/CCM_StandardConfigurator.idl: + * ciao/ccm/CCM_StateIdFactory.idl: + * ciao/ccm/CCM_Stub_Export.h: + * ciao/ccm/CCM_Svnt_Export.h: + * ciao/ccm/CCM_Transaction.idl: + * ciao/ccm/Components.idl: + * ciao/ccm/CosPersistentState.idl: + * ciao/ccm/Security.idl: + * ciao/ccm/extension: + + All spec defined IDLs were moved to ccm subdirectory. + + * ciao/CCM_Base.idl: + * ciao/CCM_CCM2Context.idl: + * ciao/CCM_CCMException.idl: + * ciao/CCM_Component.idl: + * ciao/CCM_ComponentId.idl: + * ciao/CCM_Configurator.idl: + * ciao/CCM_Container.idl: + * ciao/CCM_Container_Ex.idl: + * ciao/CCM_Context.idl: + * ciao/CCM_Cookie.idl: + * ciao/CCM_EnterpriseComponent.idl: + * ciao/CCM_Entity2Context.idl: + * ciao/CCM_EntityComponent.idl: + * ciao/CCM_EntityContext.idl: + * ciao/CCM_Enumeration.idl: + * ciao/CCM_EventBase.idl: + * ciao/CCM_EventConsumerBase.idl: + * ciao/CCM_Events.idl: + * ciao/CCM_ExecutorLocator.idl: + * ciao/CCM_Home.idl: + * ciao/CCM_HomeConfiguration.idl: + * ciao/CCM_HomeExecutorBase.idl: + * ciao/CCM_HomeFinder.idl: + * ciao/CCM_HomeRegistration.idl: + * ciao/CCM_KeylessCCMHome.idl: + * ciao/CCM_Navigation.idl: + * ciao/CCM_Object.idl: + * ciao/CCM_PrimaryKeyBase.idl: + * ciao/CCM_ProxyHomeRegistration.idl: + * ciao/CCM_Receptacle.idl: + * ciao/CCM_Session2Context.idl: + * ciao/CCM_SessionComponent.idl: + * ciao/CCM_SessionContext.idl: + * ciao/CCM_SessionSynchronization.idl: + * ciao/CCM_StandardConfigurator.idl: + * ciao/CCM_StateIdFactory.idl: + * ciao/CCM_Transaction.idl: + * ciao/CIAO_Logger: + * ciao/CIAO_Logger/CIAOLoggerFactory.h: + * ciao/CIAO_Logger/CIAO_Logger_Export.h: + * ciao/CIAO_Logger/File_Logger_Backend.h: + * ciao/CIAO_Logger/File_Logger_Backend.cpp: + * ciao/CIAO_Logger/Logger.mpc: + * ciao/CIAO_Logger/Logger_Service.h: + * ciao/CIAO_Logger/Logger_Service.cpp: + * ciao/CIAO_SwapExec.idl: + * ciao/CIAO_UpgradeableContext.idl: + * ciao/Components.idl: + * ciao/ConfigValue.h: + * ciao/ConfigValue.cpp: + * ciao/Container_Base.h: + * ciao/Container_Base.inl: + * ciao/Container_Base.cpp: + * ciao/Context_Impl_Base.h: + * ciao/Context_Impl_Base.inl: + * ciao/Context_Impl_Base.cpp: + * ciao/Context_Impl_T.h: + * ciao/Context_Impl_T.cpp: + * ciao/Cookies.h: + * ciao/Cookies.inl: + * ciao/Cookies.cpp: + * ciao/CosPersistentState.idl: + * ciao/Dynamic_Component_Activator.h: + * ciao/Dynamic_Component_Activator.inl: + * ciao/Dynamic_Component_Activator.cpp: + * ciao/Dynamic_Component_Servant_Base.h: + * ciao/Dynamic_Component_Servant_Base.cpp: + * ciao/Dynamic_Component_Servant_T.h: + * ciao/Dynamic_Component_Servant_T.cpp: + * ciao/Home_Servant_Impl_Base.h: + * ciao/Home_Servant_Impl_Base.cpp: + * ciao/Home_Servant_Impl_T.h: + * ciao/Home_Servant_Impl_T.cpp: + * ciao/Object_Set_T.h: + * ciao/Object_Set_T.inl: + * ciao/Object_Set_T.cpp: + * ciao/Port_Activator.h: + * ciao/Port_Activator.inl: + * ciao/Port_Activator.cpp: + * ciao/Port_Activator_T.h: + * ciao/Port_Activator_T.cpp: + * ciao/Security.idl: + * ciao/Servant_Activator.h: + * ciao/Servant_Activator.cpp: + * ciao/Servant_Impl_Base.h: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Impl_T.h: + * ciao/Servant_Impl_T.cpp: + * ciao/Servant_Impl_Utils_T.cpp: + * ciao/Session_Container.h: + * ciao/Session_Container.inl: + * ciao/Session_Container.cpp: + * ciao/StandardConfigurator_Impl.h: + * ciao/StandardConfigurator_Impl.cpp: + * ciao/Swapping_Container.h: + * ciao/Swapping_Container.inl: + * ciao/Swapping_Container.cpp: + * ciao/Swapping_Servant_Home_Impl_Base.h: + * ciao/Swapping_Servant_Home_Impl_Base.cpp: + * ciao/Swapping_Servant_Home_Impl_T.h: + * ciao/Swapping_Servant_Home_Impl_T.cpp: + * ciao/Upgradeable_Context_Impl_T.h: + * ciao/Upgradeable_Context_Impl_T.cpp: + * ciao/extension: + * ciao/extension/CCM_ClientContainerInterceptor.idl: + * ciao/extension/CCM_ClientContainerInterceptorRegistration.idl: + * ciao/extension/CCM_ContainerClientRequestInfo.idl: + * ciao/extension/CCM_ContainerInterceptor.idl: + * ciao/extension/CCM_ContainerRequestInfo.idl: + * ciao/extension/CCM_ContainerServantRequestInfo.idl: + * ciao/extension/CCM_ContainerServerRequestInfo.idl: + * ciao/extension/CCM_ContainerStubRequestInfo.idl: + * ciao/extension/CCM_ExtensionComponent.idl: + * ciao/extension/CCM_ExtensionContext.idl: + * ciao/extension/CCM_InvalidRegistration.idl: + * ciao/extension/CCM_QoS.idl: + * ciao/extension/CCM_ServantContainerInterceptor.idl: + * ciao/extension/CCM_ServantContainerInterceptorRegistration.idl: + * ciao/extension/CCM_ServerContainerInterceptor.idl: + * ciao/extension/CCM_ServerContainerInterceptorRegistration.idl: + * ciao/extension/CCM_StubContainerInterceptor.idl: + * ciao/extension/CCM_StubContainerInterceptorRegistration.idl: + * ciao/extension/ExtensionContext.h: + * ciao/extension/ExtensionContext.cpp: + + Removed these files. + + Sun Mar 9 05:25:41 UTC 2008 William R. Otte + + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.mpc: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.cpp: + * DAnCE/CIAO_ComponentServer/Configurator_Factory.cpp: + + Updates for moves below. + + * DAnCE/CIAO_ComponentServer/Configurators: + * DAnCE/CIAO_ComponentServer/Configurators/Basic_Config_Manager_export.h: + * DAnCE/CIAO_ComponentServer/Configurators/Basic_Configurator_export.h: + * DAnCE/CIAO_ComponentServer/Configurators/ComponentServer_Configurator_export.h: + * DAnCE/CIAO_ComponentServer/Configurators/Config_Manager.h: + * DAnCE/CIAO_ComponentServer/Configurators/Config_Manager.cpp: + * DAnCE/CIAO_ComponentServer/Configurators/Configurators.mpc: + * DAnCE/CIAO_ComponentServer/Configurators/NAConfig_Manager.h: + * DAnCE/CIAO_ComponentServer/Configurators/NAConfig_Manager.inl: + * DAnCE/CIAO_ComponentServer/Configurators/NAConfig_Manager.cpp: + * DAnCE/CIAO_ComponentServer/Configurators/NoOp_Configurator.h: + * DAnCE/CIAO_ComponentServer/Configurators/NoOp_Configurator.cpp: + * DAnCE/CIAO_ComponentServer/Configurators/NoOp_Configurator_export.h: + * DAnCE/CIAO_ComponentServer/Configurators/RTConfig_Manager.h: + * DAnCE/CIAO_ComponentServer/Configurators/RTConfig_Manager.inl: + * DAnCE/CIAO_ComponentServer/Configurators/RTConfig_Manager.cpp: + * DAnCE/CIAO_ComponentServer/Configurators/RTNA_Configurator_Export.h: + * DAnCE/CIAO_ComponentServer/Configurators/RTNodeApp_Configurator.h: + * DAnCE/CIAO_ComponentServer/Configurators/RTNodeApp_Configurator.cpp: + * DAnCE/CIAO_ComponentServer/Configurators/Server_Configurator.h: + * DAnCE/CIAO_ComponentServer/Configurators/Server_Configurator.cpp: + + Moved all configurator related logic to subdirectory; imported + config managers from trunk. + + * MPC/config/ciao_componentserver_svnt.mpb: + * MPC/config/ciao_config_manager.mpb: + * MPC/config/ciao_servant_dnc.mpb: + * MPC/config/ciao_server_dnc.mpb: + * MPC/config/dance_deployment_stub.mpb: + * MPC/config/dance_deployment_svnt.mpb: + + Removed dependencies on events, as it won't work anyway until it is + re-implemented. + + * ciao/CIAO_ServerResources.idl: + + Renamed DAnCE namespace to Deployment to be consistent. + + * DAnCE/CIAO_ComponentServer/ComponentServer_Configurator_export.h: + * DAnCE/CIAO_ComponentServer/Config_Manager.h: + * DAnCE/CIAO_ComponentServer/Server_Configurator.h: + * DAnCE/CIAO_ComponentServer/Server_Configurator.cpp: + + Removed these files. + + Sat Mar 8 19:45:47 UTC 2008 William R. Otte + + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.h: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.mpc: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.cpp: + * DAnCE/CIAO_ComponentServer/ComponentServer_Configurator_export.h: + * DAnCE/CIAO_ComponentServer/Config_Manager.h: + * DAnCE/CIAO_ComponentServer/Configurator_Factory.h: + * DAnCE/CIAO_ComponentServer/Configurator_Factory.cpp: + * DAnCE/CIAO_ComponentServer/Server_Configurator.h: + * DAnCE/CIAO_ComponentServer/Server_Configurator.cpp: + + Fleshed out the container implementation a bit, pulled in some elements for + RTCORBA configuration from the trunk NodeApplication. + + * ciao/CCM_Core.mpc: + * ciao/CIAO_ServerResources.idl: + + Server resources IDL pulled in from trunk. + + Fri Mar 7 03:39:10 UTC 2008 William R. Otte + + * CIAO_TAO_DAnCE.mwc: + + Added DII libraries for attribute setter. + + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.idl: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.mpc: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.h: + * DAnCE/Cdmw/CDMW_IDL.idl: + * DAnCE/ComponentServer/ComponentServer.idl: + * DAnCE/ComponentServer/ComponentServer_Client.idl: + * DAnCE/DomainApplication/DomainApplication.mpc: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager.mpc: + * DAnCE/Logger/File_Logger_Backend.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/ServerActivator_Impl.cpp: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Starter/Starter.cpp: + * ciao/CIAO_Logger/File_Logger_Backend.h: + * ciao/CIAO_Logger/File_Logger_Backend.cpp: + * tools/Config_Handlers/XML_Typedefs.h: + + VC8 compiler error/warnings. + + Thu Mar 6 18:24:12 UTC 2008 William R. Otte + + * MPC/config/dance_component_server_svnt.mpb: + + Adding this long missing base project. + + Thu Mar 6 17:45:05 UTC 2008 William R. Otte + + * DAnCE/CIAO_ComponentServer/CIAO_CS_Client.idl: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.h: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.idl: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ServerActivator_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_ServerActivator_Impl.cpp: + + Component Server implementation, no-op implementations + for all servants. + + * DAnCE/ComponentServer/ComponentServer_Client.idl: + + Added newline at end of file. + + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + + Warning fix. + + * MPC/config/ciao.mpb: + * MPC/config/ciao_exe.mpb: + * MPC/config/ciao_lib.mpb: + + Added ciao base projects to mirror dance base projects of similar name. + They are currently identical, but will be changed when the directory + restructuring proposal comes to consensus. + + * ciao/CIAO_Logger: + * ciao/CIAO_Logger/CIAOLoggerFactory.h: + * ciao/CIAO_Logger/CIAO_Logger_Export.h: + * ciao/CIAO_Logger/File_Logger_Backend.h: + * ciao/CIAO_Logger/File_Logger_Backend.cpp: + * ciao/CIAO_Logger/Logger.mpc: + * ciao/CIAO_Logger/Logger_Service.h: + * ciao/CIAO_Logger/Logger_Service.cpp: + + CIAO logger based on logger implemented for DAnCE. + + * ciao/CIAO_common.h: + + Added CLINFO define, which provides the default decorators + for all CIAO logging messages. + + Thu Mar 6 05:52:09 UTC 2008 William R. Otte + + * DAnCE/CIAO_ComponentServer/CIAO_CS_Client.idl: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.idl: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer.mpc: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_Impl.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_stub_export.h: + * DAnCE/CIAO_ComponentServer/CIAO_ComponentServer_svnt_export.h: + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_Container_Impl.cpp: + * DAnCE/CIAO_ComponentServer/CIAO_ServerActivator_Impl.h: + * DAnCE/CIAO_ComponentServer/CIAO_ServerActivator_Impl.cpp: + * MPC/config/ciao_componentserver_stub.mpb + + Implementation skeletons for the CIAO component server. + + * DAnCE/ComponentServer/ComponentServer.idl: + * DAnCE/ComponentServer/ComponentServer.mpc: + * DAnCE/ComponentServer/ComponentServer_Base.idl: + * DAnCE/ComponentServer/ComponentServer_Client.idl: + + Refactored for some preliminary footprint optimizations. + + Wed Mar 5 16:48:16 UTC 2008 William R. Otte + + * tools/IDL3_to_IDL2/CdmwBE.cpp: + * tools/IDL3_to_IDL2/CdmwBEExtern.hpp: + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + * tools/IDL3_to_IDL2/be_extern.h: + * tools/IDL3_to_IDL2/be_init.cpp: + + Fixed to comply with new interfaces exptected by the IDL + compiler. Thanks to Jeff Parsons for the fixes. + + Wed Mar 5 16:09:13 UTC 2008 William R. Otte + + * ChangeLog: + + Cleared out non-branch changelog entries. + + Wed Mar 5 16:06:07 UTC 2008 William R. Otte + + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/RedirectionService/CCMObjectLocator.cpp: + * DAnCE/Starter/Starter.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/XMI.cpp: + + Warning fixes. + + Tue Mar 4 22:29:37 UTC 2008 William R. Otte + + * DAnCE/Cdmw/CDMW_Deployment.idl: + * DAnCE/Cdmw/CDMW_IDL.idl: + * DAnCE/Cdmw/CDMW_IDL.mpc: + * DAnCE/Cdmw/CDMW_IDL_Ext.idl: + * DAnCE/ComponentServer: + * DAnCE/ComponentServer/ComponentServer.idl: + * DAnCE/ComponentServer/ComponentServer.mpc: + * DAnCE/ComponentServer/DAnCE_ComponentServer_stub_export.h: + * DAnCE/ComponentServer/DAnCE_ComponentServer_svnt_export.h: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/ServerActivator_Impl.h: + * MPC/config/dance_component_server.mpb: + * MPC/config/dance_component_server_stub.mpb: + * ciao/Session_Container.cpp: + + Refactored generic component server interface into its + own directory and IDL files. + + * DAnCE/Logger/File_Logger_Backend.h: + * DAnCE/Logger/File_Logger_Backend.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/DnC_Dump.h: + * tools/Config_Handlers/DnC_Dump.cpp: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/MDD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp: + + Changes necessary to cope with changes in ACE/TAO. + + * MPC/config/dance_deployment_stub.mpb: + * MPC/config/dance_deployment_svnt.mpb: + + Pulled over from OFDAnCE. + + * ciao/CCM_Core.mpc: + * ciao/CCM_Home.idl: + * ciao/ConfigValue.h: + * ciao/ConfigValue.cpp: + + Add an IDL type and config value factory from OFDAnCE. + + + * tools/IDL3_to_IDL2/CdmwBE.cpp: + * tools/IDL3_to_IDL2/CdmwBEExtern.hpp: + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Some changes here I can't figure out, need Jeff to look. + Disabled until then. + + * tools/XML: + * tools/XML/CIAO_XML_Utils_Export.h: + * tools/XML/XML.mpc: + * tools/XML/XML_Error_Handler.h: + * tools/XML/XML_Error_Handler.cpp: + * tools/XML/XML_Helper.h: + * tools/XML/XML_Helper.tpp: + * tools/XML/XML_Schema_Resolver.h: + * tools/XML/XML_Schema_Resolver.cpp: + * tools/XML/XML_Schema_Resolver.tpp: + * tools/XML/XercesString.h: + * tools/XML/XercesString.cpp: + * MPC/config/ciao_config_handlers.mpb: + * MPC/config/ciao_config_handlers_base.mpb: + + Pulled XML utils over from OFDAnCE, missed in initial import. + + Tue Mar 4 05:39:19 UTC 2008 William R. Otte + + * MPC/config/ciao_config_manager.mpb: + * MPC/config/ciao_domainapplicationmanager_dnc.mpb: + * MPC/config/ciao_executionmanager_stub.mpb: + * MPC/config/ciao_nodeapplication.mpb: + * MPC/config/ciao_nodemanager_stub.mpb: + * MPC/config/ciao_noop_configurator.mpb: + * MPC/config/ciao_servant_dnc.mpb: + * MPC/config/ciao_server_dnc.mpb: + * MPC/config/ciaodll.mpb: + * MPC/config/dance_cdmw_idl.mpb: + * MPC/config/dance_deployment_stub.mpb: + * MPC/config/dance_deployment_svnt.mpb: + * MPC/config/dance_domain_application.mpb: + * MPC/config/dance_domain_application_manager.mpb: + * MPC/config/dance_exe.mpb: + * MPC/config/dance_executionmanager_stub.mpb: + * MPC/config/dance_extension_stub.mpb: + * MPC/config/dance_lib.mpb: + * MPC/config/dance_logger.mpb: + * MPC/config/dance_mocks.mpb: + * MPC/config/dance_node_application.mpb: + * MPC/config/dance_node_application_manager.mpb: + * MPC/config/dance_node_manager.mpb: + * MPC/config/dance_nodemanager_stub.mpb: + * MPC/config/dance_redirection_service.mpb: + * MPC/config/dance_utils.mpb: + + Pulled necessary mpb files from OFDAnCE to allow generation of + makefiles. + + * ciao/CCM_Core.mpc: + + ciao_deployment_*.mpb changes to dance_deployment_*.mpb. + + Tue Mar 4 05:19:46 UTC 2008 William Otte + + * MPC/config: + recovered from trunk. + + Tue Mar 4 05:10:21 UTC 2008 William R. Otte + + * DAnCE/DomainApplication/Domain_Application_Impl.h: + * DAnCE/DomainApplication/Domain_Application_Impl.cpp: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h: + * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Impl.h: + * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp: + * DAnCE/ExecutionManager/ExecutionManager_Module.h: + * DAnCE/ExecutionManager/ExecutionManager_Module.cpp: + * DAnCE/NodeApplication/ComponentInstallation_Impl.h: + * DAnCE/NodeApplication/ComponentInstallation_Impl.cpp: + * DAnCE/NodeApplication/NodeApplication_Impl.h: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/NodeApplication/ServerActivator_Impl.h: + * DAnCE/NodeApplication/ServerActivator_Impl.cpp: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp: + * DAnCE/NodeManager/NodeManager_Impl.h: + * DAnCE/NodeManager/NodeManager_Impl.cpp: + * DAnCE/NodeManager/Node_Manager_Module.h: + * DAnCE/NodeManager/Node_Manager_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.h: + * DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp: + * DAnCE/RedirectionService/CCMObjectLocator.h: + * DAnCE/RedirectionService/CCMObjectLocator.cpp: + * DAnCE/tests/MocksTest/MockObjectHome.h: + * DAnCE/tests/MocksTest/MockObjectHome.cpp: + * DAnCE/tests/NameServiceTest/DummyImpl.h: + * DAnCE/tests/NameServiceTest/DummyImpl.cpp: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.h: + * DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.h: + * DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp: + + Removed emulated exception macros using rm_exception_macros.pl + + Tue Mar 4 03:48:11 UTC 2008 William Otte + + * DAnCE: + * tools: + * docs/schema: + + Imports from OFDAnCE. + + Tue Mar 4 03:24:45 UTC 2008 William Otte + + * DAnCE: + * tools: + * docs/schema: + * MPC/config: + + Remove to make way for versions from OFDAnCE. + +Wed Feb 11 07:21:28 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Removed old code + +Tue Feb 10 05:39:28 UTC 2009 Phil Mesnier + + * NEWS: + revision bump. + +Mon Feb 09 12:01:28 CST 2009 Phil Mesnier + + * CIAO version 0.6.8 released. + +Fri Jan 30 11:59:52 UTC 2009 Johnny Willemsen + + * DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + Added missing after + +Wed Jan 28 20:22:52 UTC 2009 Adam Mitz + + * bin/ciao_tests.lst: + + This file moved here from $ACE_ROOT/bin, see bug 2748 and the + ACE ChangeLog entry for Wed Jan 28 20:22:45 UTC 2009. + +Mon Jan 12 19:14:46 UTC 2009 Johnny Willemsen + + * tools/Config_Handlers/Config_Handlers.mpc: + Don't add template files to the source files + +Fri Jan 9 22:18:07 UTC 2009 Abdullah Sowayan + + * tests/Minimum/Receiver/Receiver.mpc: + * tests/Minimum/Sender/Sender.mpc: + + Append "Minimum_" to the name of the generated libraries. The generated + libraries had the same name as those in $CIAO_ROOT/DevGuideExamples/Messenger + which cause some regression tests to fail. + +Wed Jan 7 15:11:48 UTC 2009 Abdullah Sowayan + + * DevGuideExamples/Messenger/Administrator.mpc: + * DevGuideExamples/Messenger/Receiver.mpc: + + Fixed build order dependency. + +Tue Jan 6 20:45:19 UTC 2009 Abdullah Sowayan + + * DevGuideExamples/Messenger/Administrator_exec_export.h: + * DevGuideExamples/Messenger/Administrator_stub_export.h: + * DevGuideExamples/Messenger/Administrator_svnt_export.h: + * DevGuideExamples/Messenger/Messenger_exec_export.h: + * DevGuideExamples/Messenger/Messenger_stub_export.h: + * DevGuideExamples/Messenger/Messenger_svnt_export.h: + * DevGuideExamples/Messenger/Receiver_exec_export.h: + * DevGuideExamples/Messenger/Receiver_stub_export.h: + * DevGuideExamples/Messenger/Receiver_svnt_export.h: + + Regenerate export files. + + * DevGuideExamples/Messenger/Administrator.cidl: + * DevGuideExamples/Messenger/Administrator.idl: + * DevGuideExamples/Messenger/Messenger.cidl: + * DevGuideExamples/Messenger/Messenger.idl: + * DevGuideExamples/Messenger/Receiver.cidl: + * DevGuideExamples/Messenger/Receiver.idl: + + use #include "" instead of #include <> + + * DevGuideExamples/Messenger/Administrator.mpc: + * DevGuideExamples/Messenger/Messenger.mpc: + * DevGuideExamples/Messenger/Receiver.mpc: + + Updated the files to remove the executor dependency on the servant. + + * DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc: + * DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc: + * DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc: + + Removed "requires += cidl" from the files above. We should be able + to build the example without needing to build the CIDLC compiler. + + * DevGuideExamples/Messenger/Administrator_exec_i.h: + * DevGuideExamples/Messenger/Administrator_exec_i.cpp: + * DevGuideExamples/Messenger/History.idl: + * DevGuideExamples/Messenger/History_exec_i.h: + * DevGuideExamples/Messenger/Messenger_exec_i.h: + * DevGuideExamples/Messenger/Messenger_exec_i.cpp: + * DevGuideExamples/Messenger/Publication_exec_i.h: + * DevGuideExamples/Messenger/Receiver_exec_i.h: + * DevGuideExamples/Messenger/Receiver_exec_i.cpp: + * DevGuideExamples/Messenger/Runnable_exec_i.h: + + Updated the files above. The executor now does not depend + on the servant. + + * DevGuideExamples/Messenger/descriptors/run_test.pl: + + Use the executables in $CIAO_ROOT/bin. + +Fri Dec 26 12:22:14 UTC 2008 Vladimir Zykov + + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + + Reverted my previous change (Thu Dec 25 15:38:41 UTC 2008). + It was wrong to fix the linker errors that way. + + * tools/Config_Handlers/Utils/XML_Helper.cpp: + * tools/Config_Handlers/Utils/XML_Helper.tpp: + * tools/Config_Handlers/Utils/XML_Helper.h: + * tools/Config_Handlers/Utils/Utils.mpc: + + Provided a proper fix for the linker problem on Windows. + +Thu Dec 25 15:38:41 UTC 2008 Vladimir Zykov + + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + + Fixed linker errors on Windows. + + * tools/Config_Handlers/Utils/XML_Helper.cpp: + + Fixed a compile warning about unused variable. + +Wed Dec 24 16:09:22 UTC 2008 Vladimir Zykov + + * tools/IDL3_to_XMI/Literals.cpp: + * tools/IDL3_to_XMI/Literals.h: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + + Fixed more name clashes with macros, now on Windows. + +Wed Dec 24 11:00:29 UTC 2008 Vladimir Zykov + + * tools/Config_Handlers/Utils/XML_Helper.h: + * tools/Config_Handlers/Utils/XML_Schema_Resolver.h: + + Fixed compile errors on Windows. + + * tools/IDL3_to_XMI/IDL3_TO_XMI.mpc: + + Fixed link errors on static builds. + + * tools/IDL3_to_XMI/Literals.cpp: + * tools/IDL3_to_XMI/Literals.h: + + Fixed a clash with macro on SunOS compilers. + + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + + Fixed compile warnings. + +Tue Dec 23 15:11:07 UTC 2008 Vladimir Zykov + + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp: + * tools/Config_Handlers/Any_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/test.cpp: + * tools/Config_Handlers/RT-CCM/test.cpp: + + Fixed memory leaks in the tests and made few more TCHAR + related changes. + + * tools/Config_Handlers/Utils/XercesString.cpp: + * tools/Config_Handlers/Utils/XercesString.h: + + XStr now can be constructed from ACE_TCHAR. + + * tools/Config_Handlers/Utils/XML_Helper.cpp: + * tools/Config_Handlers/Utils/XML_Helper.h: + * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp: + * tools/Config_Handlers/Utils/XML_Schema_Resolver.h: + * tools/Config_Handlers/Utils/XML_Error_Handler.h: + * tools/Config_Handlers/Utils/Utils.mpc: + + Refactored the code so that XML_Helper now is a bit more + flexible in setting xml error handler and xml schema + resolver. + + * tools/tools.mwc: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h: + * tools/IDL3_to_XMI/be_global.cpp: + * tools/IDL3_to_XMI/be_produce.cpp: + * tools/IDL3_to_XMI/IDL3_TO_XMI.mpc: + * tools/IDL3_to_XMI/be_sunsoft.cpp: + * tools/IDL3_to_XMI/be_init.cpp: + * tools/IDL3_to_XMI/CIAO_IDL3_TO_XMI_Export.h: + * tools/IDL3_to_XMI/be_global.h: + * tools/IDL3_to_XMI/be_sunsoft.h: + * tools/IDL3_to_XMI/Literals.cpp: + * tools/IDL3_to_XMI/be_extern.h: + * tools/IDL3_to_XMI/identifier_helper.cpp: + * tools/IDL3_to_XMI/Literals.h: + * tools/IDL3_to_XMI/be_helper.cpp: + * tools/IDL3_to_XMI/identifier_helper.h: + * tools/IDL3_to_XMI/IR_Simulator_visitor.cpp: + * tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp: + * tools/IDL3_to_XMI/be_helper.h: + * tools/IDL3_to_XMI/IR_Simulator_visitor.h: + + Made public an idl3_to_xmi utility for mapping IDL3 to + XML Metadata Interchange (XMI) format. + + * tests/IDL3_to_XMI/XMI_For_Array/test.idl: + * tests/IDL3_to_XMI/XMI_For_Array/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Array/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Included_File/File1.idl: + * tests/IDL3_to_XMI/XMI_For_Included_File/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Included_File/File2.idl: + * tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl: + * tests/IDL3_to_XMI/XMI_For_Sequence/test.idl: + * tests/IDL3_to_XMI/XMI_For_Sequence/XMI.dtd: + * tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl: + + Added 3 tests for the idl3_to_xmi itility. + +Thu Dec 18 19:42:06 UTC 2008 Jeff Parsons + + * CIDLC/AttributeHeaderEmitters.cpp: + + Fixed formatting error in code generation for readonly + attributes. + +Thu Dec 18 19:01:19 UTC 2008 Jeff Parsons + + * CIAO_TAO_DAnCE.mwc: + + Replaced lines 'CCF' and 'CIDLC' with 'CIDLC/CIDLC.mwc' + so the big build can pick up the special options needed + to build CIDLC. + +Thu Dec 18 17:48:00 UTC 2008 Jeff Parsons + + * CIAO_TAO_DAnCE.mwc: + + Removed the line '$ACE_ROOT/contrib/minizip/minizip.mpc' + since it conflicts with the line '$ACE_ROOT/contrib'. + +Mon Dec 15 09:36:58 UTC 2008 Olli Savia + + * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: + Updated to use ACE::isdotdir(). + +Fri Nov 28 11:36:00 UTC 2008 Johnny Willemsen + + * DAnCE/NodeApplication/NodeApplication.cpp: + Unicode changes + + * DAnCE/RepositoryManager/RepositoryManager.cpp: + Corrected string test + + * DevGuideExamples/Messenger/Administrator_exec_i.h: + layout change + + * MPC/config/ciao_vcwarnings.mpb: + Added vc10 + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + Use ascii format specifiers + +Thu Nov 27 04:09:39 CST 2008 Simon Massey + + * CIAO version 0.6.7 released. + +Tue Nov 25 15:55:00 UTC 2008 Simon Massey + + * DevGuideExamples/Messenger/Receiver.mpc + Windows DLL import/export issue with CIDL generated bits. + +Mon Nov 17 15:58:12 UTC 2008 Johnny Willemsen + + * CCF/CCF/IDL2/Parser.hpp: + When interface is a define, undef it. Fixes bugzilla 3512 + +Fri Nov 14 23:11:35 UTC 2008 Adam Mitz + + * rules.ciao.GNU: + + Translate \ to / in $(CIAO_ROOT). + +Fri Nov 14 13:53:49 UTC 2008 Vladimir Zykov + + * tools/Config_Handlers/cid.cpp: + * tools/Config_Handlers/DP_Handler.cpp: + * tools/Config_Handlers/MDD_Handler.cpp: + * tools/Config_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/pcd.cpp: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp: + * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp: + * tools/Config_Handlers/Property_Handler.cpp: + * tools/Config_Handlers/ID_Handler.cpp: + * tools/Config_Handlers/toplevel.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/NIA_Handler.h: + * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + * tools/Config_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/CRDD_Handler.cpp: + * tools/Config_Handlers/Basic_Deployment_Data.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp: + * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp: + * tools/Config_Handlers/Req_Handler.cpp: + * tools/Config_Handlers/ccd.cpp: + * tools/Config_Handlers/RDD_Handler.cpp: + * tools/Config_Handlers/ERE_Handler.cpp: + * tools/Config_Handlers/Utils/XML_Helper.cpp: + * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp: + * tools/Config_Handlers/Utils/Functors.h: + * tools/Config_Handlers/XML_File_Intf.cpp: + * tools/Config_Handlers/Deployment.cpp: + * tools/Config_Handlers/CCD_Handler.cpp: + * tools/Config_Handlers/cdd.cpp: + * tools/Config_Handlers/SatisfierProperty_Handler.cpp: + * tools/Config_Handlers/RT-CCM/PS_Handler.cpp: + * tools/Config_Handlers/RT-CCM/TP_Handler.cpp: + * tools/Config_Handlers/RT-CCM/CB_Handler.cpp: + * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp: + * tools/Config_Handlers/RT-CCM/CLA_Handler.cpp: + * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp: + * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp: + * tools/Config_Handlers/PSPE_Handler.cpp: + * tools/Config_Handlers/cdp.cpp: + * tools/Config_Handlers/cpd.cpp: + * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp: + * tools/Config_Handlers/CEPE_Handler.cpp: + * tools/Config_Handlers/IRDD_Handler.cpp: + * tools/Config_Handlers/DD_Handler.cpp: + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/iad.cpp: + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + * tools/IDL3_to_IDL2/be_init.cpp: + * tools/IDL3_to_IDL2/be_extern.h: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp: + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp: + * ciao/Client_init.cpp: + + Made wchar related changes. + +Tue Nov 11 16:07:06 UTC 2008 James H. Hill + + * CIDLC/ServantHeaderGenerator.cpp: + + Apparently, some compilers didn't like my updates below. The + problem was caused by not adding a space between the '<' and + '::' for a template class. + +Mon Nov 10 23:03:45 UTC 2008 James H. Hill + + * MPC/config/ciaocidldefaults.mpb: + + Fixed file formating. + +Mon Nov 10 23:00:09 UTC 2008 James H. Hill + + * MPC/config/ciaocidldefaults.mpb: + + Updated the CIDL custom define to append the '_Impl.ccd' + extension on the *documentation_outputext* attribute if + --gen-desc-file flag is specified on the command-line for + the CIDL compiler. + +Mon Nov 10 22:37:23 UTC 2008 James H. Hill + + * CIDLC/cidlc.cpp: + * CIDLC/DescriptorGenerator.cpp: + + Added a new command-line options --gen-desc-file for specifying the + filename of the component descriptor (.ccd) file. + + * CIDLC/ServantHeaderGenerator.cpp: + + Updated the servant header generator to produce type definitions + that map to traits in its context implementation subclass. + + * ciao/Context_Impl_T.h: + * ciao/Upgradeable_Context_Impl_T.h: + + Added type definitions for the different parameter types of the + template class. This will increase support for using such classes + in generative programming applications. + +Mon Nov 3 12:37:00 UTC 2008 Johnny Willemsen + + * DevGuidExamplesMessenger/StaticDAnCE/Messenger_StaticDAnCE.mpc: + For the moment disable this project until there is some more + time to sort out the link problems + +Thu Oct 30 12:56:00 UTC 2008 Johnny Willemsen + + * DAnCE/TargetManager/CmpClient.cpp: + Use %C to log ascii strings instead of using %s with + ACE_TEXT_CHAR_TO_TCHAR + +Thu Oct 30 10:30:00 UTC 2008 Simon Massey + + * NEWS + Updated. + +Wed Oct 29 14:25:00 UTC 2008 Simon Massey + + * DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc + change libpath to libpaths + + * DevGuideExamples/ChangeLog: + Incorperated into this file. + +Wed Oct 29 13:25:00 UTC 2008 Simon Massey + + * NEWS + Updated. + +Tue Oct 28 11:04:00 UTC 2008 Simon Massey + + * DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc + Add libpath += .. + +Sun Oct 26 20:00:00 UTC 2008 Johnny Willemsen + + * DevGuideExamples/Messenger/StaticDAnCE/plan.h + Added missing include + +Thu Oct 23 11:49:00 UTC 2008 Johnny Willemsen + + * DevGuideExamples/Messenger/Administrator_exec_i.h + * DevGuideExamples/Messenger/History_exec_i.h + * DevGuideExamples/Messenger/Messenger_exec_i.h + * DevGuideExamples/Messenger/Publication_exec_i.h + * DevGuideExamples/Messenger/Receiver_exec_i.h + * DevGuideExamples/Messenger/Runnable_exec_i.h + Don't use deprecated TAO_Local_RefCounted_Object + +Wed Oct 22 16:24:21 UTC 2008 Abdullah Sowayan + + * Messenger/Administrator_exec_i.h: + * Messenger/History_exec_i.h: + * Messenger/Messenger_exec_i.h: + * Messenger/Messenger_exec_i.cpp: + * Messenger/Publication_exec_i.h: + * Messenger/Runnable_exec_i.h: + + Fixed fuzz errors. When including files from ACE/TAO/CIAO, use "" instead of <>. + + Example: #include was changed to "ace/OS.h" + +Wed Oct 22 14:50:02 UTC 2008 Simon Massey + + * CIAO.mwc: + + Fixed fuzz errors by adding "// $Id $" to the top of each file. + +Wed Oct 22 14:15:02 UTC 2008 Abdullah Sowayan + + * Messenger/Administrator.cidl: + * Messenger/Administrator.idl: + * Messenger/Administrator.mpc: + * Messenger/Administrator_Client.cpp: + * Messenger/Administrator_Client_IDL2.cpp: + * Messenger/Administrator_Client_IDL2.mpc: + * Messenger/Administrator_Client_IDL3.cpp: + * Messenger/Administrator_Client_IDL3.mpc: + * Messenger/History.idl: + * Messenger/Message.idl: + * Messenger/Messenger.cidl: + * Messenger/Messenger.idl: + * Messenger/Messenger.mpc: + * Messenger/Publication.idl: + * Messenger/Receiver.cidl: + * Messenger/Receiver.idl: + * Messenger/Receiver.mpc: + * Messenger/Runnable.idl: + * Messenger/StaticDAnCE/README.txt: + * Messenger/StaticDAnCE/plan.h: + * Messenger/StaticDAnCE/run_test.pl: + * Messenger/descriptors/run_test.pl: + + Fixed fuzz errors by adding "// $Id $" to the top of each file. + +Wed Oct 22 14:06:39 UTC 2008 Abdullah Sowayan + + * readme.txt: + + Added a readme file. + +Wed Oct 22 13:11:00 UTC 2008 Simon Massey + + * Messenger/Messenger.idl: + * Messenger/StaticDAnCE/plan.h: + + Fixed tabs found fuzz errors. + + * Messenger/Administrator_Client.cpp: + * Messenger/StaticDAnCE/StaticDAnCEApp.cpp: + + Lack of ACE_TMAIN and specified ORB_init default parameters. + +Wed Oct 22 08:52:00 UTC 2008 Johnny Willemsen + + * DevGuideExamples/*: + Added examples of OCI TAO Developers Guide + +Tue Sep 16 12:46:00 UTC 2008 Johnny Willemsen + + * tools/Config_Handlers/XSCRT/Elements.hpp: + Added missing include, thanks to Mark Hebbel + for reporting this + +Tue Sep 16 12:15:00 UTC 2008 Johnny Willemsen + + * DAnCE/ExecutionManager/Execution_Manager.cpp + * DAnCE/NodeManager/Node_Manager.cpp + * DAnCE/RepositoryManager/RepositoryManager.cpp + * DAnCE/TargetManager/CmpClient.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp + * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp + * examples/BasicSP/EC/controller.cpp + * examples/Display/RateGen/controller.cpp + * examples/Hello/Sender/starter.cpp + * examples/Swapping/Sender/starter.cpp + * performance-tests/Benchmark/RoundTrip/client.cpp + * performance-tests/Protocols/Controller/Controller.cpp + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp + * tools/Config_Handlers/CIAO_Events/test.cpp + * tools/Config_Handlers/Package_Handlers/test.cpp + * tools/Config_Handlers/RT-CCM/test.cpp + * tools/Config_Handlers/test.cpp + ACE_TCHAR changes + +Mon Sep 15 16:34:00 UTC 2008 Simon Massey + + * NEWS: + Updated for x.6.6 + +Mon Sep 15 11:08:04 UTC 2008 Simon Massey + + * CIAO version 0.6.6 released. + +Tue Aug 5 15:13:53 UTC 2008 Jeff Parsons + + * performance-tests/Benchmark/RoundTrip/client.cpp: + + Replace a char type local variable with an int. On some + platforms, chars are unsigned - in such cases, checks for + < 0 or > 0 cause warnings because theya re always true or + always false. + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Added dance_utils.mpb as a base project to get the Dance_Utils + lib in the link list. The plan launcher executable doesn't + need it directly, but some versions of gcc are problematic, + giving warnings if such indirect linkings aren't in the + makefile explicitly. + +Thu Jul 31 17:17:06 UTC 2008 William R. Otte + + * tools/Config_Handlers/XSCRT/Elements.hpp: + + Stab at fixing a problem on Rawhide. + +Fri Jul 25 21:37:24 UTC 2008 James H. Hill + + * CIDLC/Literals.cpp: + + Bug fix related to ChangeLog entry + + Tue Jul 22 07:50:38 UTC 2008 James H. Hill + + This was resolved by converting C++ style comments that + preceded a close bracket '}' to a C style comment so that it + would force a newline to be generated, instead of thinking + the bracket was part of the comment (since there is no way to + really tell in this case). + +Fri Jul 25 16:05:00 UTC 2008 Simon Massey + + * NEWS: + + Tidied this up a little. + +Tue Jul 22 07:50:38 UTC 2008 James H. Hill + + * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp: + + Bug fix where using a curly brace, i.e., '{' or '}', inside a + string or comment caused the code generator to treat it as a + regular curly brace. This meant the code generator inserted a + newline when it was not supposed to. + +Fri Jul 04 10:43:00 UTC 2008 Simon Massey + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Remove extrainious character from Will's commit below. + +Thu Jul 3 19:21:37 UTC 2008 William R. Otte + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Added a strict ordering dependency with TAO_IDL_EXE, as some builds + appear to have a race between these two, causing some errors. + +Wed Jul 2 12:45:53 UTC 2008 Douglas C. Schmidt + + * Updated the COPYING file to make it consistent with what's on the website. + +Mon Jun 30 15:41:05 UTC 2008 Jeff Parsons + + * CIDLC/SizeTypeCalculator.cpp: + + Added missing support for bounded sequences. + +Wed Jun 25 11:53:00 UTC 2008 Simon Massey + + * DAnCE/TargetManager/CmpClient.cpp: + + Remove redundant "" 3rd parameter (orbID) from ORB_init() calls. + +Tue Jun 24 12:23:00 UTC 2008 Simon Massey + + * tools/Config_Handlers/test.cpp: + * tools/Config_Handlers/RT-CCM/test.cpp: + * tools/Config_Handlers/Package_Handlers/test.cpp: + * tools/Config_Handlers/CIAO_Events/test.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + * DAnCE/TargetManager/CmpClient.cpp: + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + * performance-tests/mico/mico-thrput-st/server.cc: + * performance-tests/mico/mico-thrput-st/client.cc: + + Fix fuzz errors incorrect ACE_TMAIN/main use. + +Mon Jun 23 13:55:00 UTC 2008 Simon Massey + + * tools/IDL3_TO_IDL2/IDL3_TO_IDL2.mpc: + + Backed out change, this is not the reason. + +Fri Jun 20 08:50:00 UTC 2008 Simon Massey + + * tools/IDL3_TO_IDL2/IDL3_TO_IDL2.mpc: + + Added missing source dependancy. + +Thu Jun 19 14:11:00 UTC 2008 Simon Massey + + * DAnCE/NodeApplication/NodeApplication_Core.cpp: + * DAnCE/NodeManager/Node_Manager.cpp: + * DAnCE/Plan_Launcher/Plan_Launcher.cpp: + * DAnCE/RepositoryManager/RMadmin.cpp: + * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp: + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + * examples/BasicSP/EC/client.cpp: + * examples/BasicSP/EC/controller.cpp: + * examples/Display/RateGen/controller.cpp: + * examples/Hello/Sender/starter.cpp: + * examples/Null_Component/StaticDAnCEApp.cpp: + * examples/Swapping/Sender/starter.cpp: + * performance-tests/Benchmark/Multi_Threaded/client.cpp: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Protocols/Receiver/Receiver_exec.cpp: + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp: + + Remove redundant "" 3rd parameter (orbID) from ORB_init() calls. + +Mon Jun 16 19:04:42 UTC 2008 Abdullah Sowayan + + * tools/Config_Handlers/Utils/Functors.h: + + Untabify. + +Mon Jun 16 18:37:32 UTC 2008 Abdullah Sowayan + + * examples/Display/GPS/GPS_exec.cpp: + * examples/Display/NavDisplay/NavDisplay_exec.cpp: + + Untabify. + +Mon Jun 16 12:45:00 UTC 2008 Simon Massey + + * CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl: + * CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl: + + Un-tabify. + +Sat May 31 23:31:20 UTC 2008 William R. Otte + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Modified to take advantage of MCPP preprocessing. + +Mon May 19 02:53:21 CDT 2008 Johnny Willemsen + + * CIAO version 0.6.5 released. + +Sun May 11 14:57:47 UTC 2008 James H. Hill + + * CCF/CCF/CodeGenerationKit/IndentationJava.hpp: + + Simple indentation implanter for Java source files. + +Wed May 7 06:53:02 UTC 2008 William R. Otte + + * DAnCE/Deployment/Deployment_common.h: + + Qualified equality operator with const to fix error with + Unbounded_Set. + +Thu May 1 00:48:38 UTC 2008 Abdullah Sowayan + + * CIAO_TAO.mwc: + + The location of ETCL moved from $ACE_ROOT to $ACE_ROOT/ace. + +Wed Apr 30 22:16:13 UTC 2008 James H. Hill + + * CIAO_TAO_DAnCE.mwc: + + The location of ETCL moved from $ACE_ROOT to $ACE_ROOT/ace. + +Mon Apr 28 14:27:32 UTC 2008 Johnny Willemsen + + * ciao/Context_Impl_T.h + * ciao/Dynamic_Component_Activator.h + * ciao/Servant_Activator.h + * CIDLC/ExecImplHeaderGenerator.cpp + * DAnCE/TargetManager/TargetManager_exec.h + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h + * examples/BasicSP/BasicSP_exec.h + * examples/BasicSP/BMClosedED/BMClosedED_exec.h + * examples/BasicSP/BMDevice/BMDevice_exec.h + * examples/BasicSP/BMDisplay/BMDisplay_exec.h + * examples/BasicSP/EC/EC_exec.h + * examples/Display/GPS/GPS_exec.h + * examples/Display/GPS/GPS_tracing_exec.h + * examples/Display/NavDisplay/NavDisplay_exec.h + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h + * examples/Display/RateGen/RateGen_exec.h + * examples/Hello/Receiver/Receiver_exec.h + * examples/Hello/Sender/Sender_exec.h + * examples/Null_Component/Null_Component_exec.h + * examples/Swapping/Receiver/Receiver_exec.h + * examples/Swapping/Sender/Sender_exec.h + * examples/Swapping/Sender/Sender_exec_1.h + * examples/Swapping/Sender/Sender_exec_2.h + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h + * performance-tests/Protocols/Receiver/Receiver_exec.h + * performance-tests/Protocols/Sender/Sender_exec.h + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h + * tests/Minimum/Receiver/Receiver_exec.h + * tests/Minimum/Sender/Sender_exec.h + Don't use TAO_Local_RefCounted_Object but ::CORBA::LocalObject now + LocalObject is also refcounted. Users can still sue TAO_Local_RefCounted_Object, + it just does nothing, actions have been takin in LocalObject.h + to prevent the usage of TAO_Local_RefCounted_Object in the + TAO distribution itself + + * CIAO_TAO.mwc + * CIAO_TAO_DAnCE.mwc + Added ETCL and monitoring + +Wed Apr 23 01:53:32 CDT 2008 Johnny Willemsen + + * CIAO version 0.6.4 released. + +Thu Mar 27 18:51:13 UTC 2008 William R. Otte + + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + + Added minizip in ACE/contrib for RM. + +Thu Mar 27 14:12:41 UTC 2008 William R. Otte + + * MPC/config/ciaocidldefaults.mpb: + + Projects that use CILC should build after CIDLC. + +Wed Mar 26 15:27:44 UTC 2008 Adam Mitz + + * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc: + + Removed invalid and unneeded VPATH setting with the verbatim section. + +Mon Mar 24 02:25:23 UTC 2008 Douglas C. Schmidt + + * COPYING: Updated the license a bit based on feedback from Tom + Callaway . These changes will + enable ACE+TAO to be shipped with Fedora. + +Sun Mar 23 01:55:11 UTC 2008 William R. Otte + + * CIAO_TAO.mwc: + * CIAO_TAO_DAnCE.mwc: + + Add CIDLC to these workspaces. + +Wed Feb 27 16:07:39 UTC 2008 Abdullah Sowayan + + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: + * CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp: + * CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp: + * CCF/Example/ComponentDeploymentDescriptor/cdd.cpp: + * CCF/Example/IDL2/CxxMapping/driver.cpp: + * CCF/Test/CIDL/Compiler/driver.cpp: + * CCF/Test/CompilerElements/CPP/driver.cpp: + * CCF/Test/IDL2/Compiler/driver.cpp: + * CCF/Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp: + * CCF/Test/IDL2/Traversal/Recreate/recreate.cpp: + * CCF/Test/IDL3/Compiler/driver.cpp: + * CIDLC/cidlc.cpp: + + Disable check_for_improper_main_declaration fuzz check on these + files. The files have no dependency on ACE, thus they shouldn't + use ACE_TMAIN. + +Thu Feb 21 02:34:37 CST 2008 Johnny Willemsen + + * CIAO version 0.6.3 released. + +Tue Feb 12 19:29:09 UTC 2008 Johnny Willemsen + + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + Fixed bug in thos MPC file + +Tue Feb 12 14:27:09 UTC 2008 Simon McQueen + + * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc: + * DAnCE/Interfaces/Interfaces.mpc: + * DAnCE/NodeApplication/NodeApplication.mpc: + * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc: + * DAnCE/NodeManager/Monitor.mpc: + * DAnCE/NodeManager/NodeManager.mpc: + * DAnCE/Plan_Generator/Plan_Generator.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + * DAnCE/TargetManager/TargetManager.mpc: + * DAnCE/Utils/DAnCE_Utils.mpc: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + * tools/Config_Handlers/Config_Handlers.mpc: + + Add specific base projects to direct libraries into $ACE_ROOT/lib. + + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_component_dnc.mpb: + + Cop out and add tao_output into the dependency of these two projects. + These two are on the inheritance hierarchy of all CIAO test; example; + or tutorial libraries it seems so this should direct them all back + into $ACE_ROOT/lib where they were before. + +Tue Feb 12 10:18:14 UTC 2008 Simon McQueen + + * DAnCE/Deployment/DAnCE_Core.mpc: + * ciao/CCM_Core.mpc: + * ciaosvcs/Events/CIAO_Events.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc: + * tools/Config_Handlers/Config_Handlers.mpc: + * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc: + * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc: + * tools/Config_Handlers/Utils/Utils.mpc: + + Add specific tao_output base project dependencies to direct libraries + into $ACE_ROOT/lib. See bug #3192. + +Wed Jan 30 23:20:05 UTC 2008 Jeff Parsons + + * tools/IDL3_to_IDL2/be_produce.cpp: + + Changed use of exception FE_Bailout to Bailout, reflecting + the corresponding name change of the front end exception class. + +Fri Jan 11 18:02:07 UTC 2008 William R. Otte + + * MPC/config/cidlc.mpb: + Make sure CIDLC bits don't build on cross-compile targets. + +Wed Jan 9 17:55:33 UTC 2008 William R. Otte + + * CIAO_TAO_DAnCE.mwc: + Fix for MPC warning. + +Mon Dec 17 08:17:12 UTC 2007 Johnny Willemsen + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + Fixed compile error + +Sat Dec 15 15:02:12 UTC 2007 Johnny Willemsen + + * bin/PerlCIAO/perlciao.mpc + Use custom_only=1 for this MPC file + +Fri Dec 14 02:48:57 CST 2007 Johnny Willemsen + + * CIAO version 0.6.2 released. + +Tue Dec 11 13:49:18 UTC 2007 Jeff Parsons + + * NEWS: + + Updated file with my checkins since the last beta. + +Fri Dec 7 06:27:54 UTC 2007 Johnny Willemsen + + * bin/PerlCIAO/perlciao.mpc: + With vc9 set ConfigurationType to 10 to disable the creation + of the manifest file which fails because these projects don't + have source code + +Thu Dec 6 17:56:35 UTC 2007 Will Otte + + * CCF/CCF/CIDL/SemanticAction/Composition.cpp: + * CCF/CCF/IDL2/SemanticAction/Operation.cpp: + * CIDLC/CxxNamePrinter.cpp: + + Fixed warnings manifesting on Debian Etch. + +Mon Dec 3 17:42:25 UTC 2007 Abdullah Sowayan + + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + + Replaced ACE_Thread_Mutex with TAO_SYNCH_MUTEX to comply with CIAO + coding standards and to silence fuzz warnings. + +Mon Dec 3 17:10:04 UTC 2007 Abdullah Sowayan + + + * docs/templates: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/Executor.idl: + * docs/templates/cidl_template.cidl: + + Removed these files. They are outdated and we don't need them anymore + since we now have a fully functinoal CIDLC compiler. + +Mon Dec 3 16:30:11 UTC 2007 Abdullah Sowayan + + * docs/templates/CIAO_Glue_Session_Template.h: + + Parts of CIAO use TAO_SYNCH_MUTEX while other parts use ACE_SYNCH_MUTEX. + All occurrences of ACE_SYNCH_MUTEX were replaced with TAO_SYNCH_MUTEX for + consistency. + +Mon Dec 3 16:07:59 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/03.html: + + Fixed image links that were borken due to directory name case sensitivity, + this caused the images not to display in non-windows operating systems. + Thanks to Ashley Sterritt (sterrita at cs dot tc dot ie) for pointing + out the problem. + +Fri Nov 30 22:11:41 UTC 2007 Abdullah Sowayan + + * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h: + + Replaced ACE_Thread_Mutex with TAO_SYNCH_MUTEX to allow this code + to work in single-threaded builds. + +Fri Nov 30 19:06:05 UTC 2007 Abdullah Sowayan + + * DAnCE/Deployment/NodeApp_CB_Impl.h: + * DAnCE/Deployment/NodeApp_CB_Impl.cpp: + * DAnCE/DomainApplicationManager/Reply_Handler_i.h: + * DAnCE/DomainApplicationManager/Reply_Handler_i.cpp: + * DAnCE/NodeManager/MonitorController.h: + * DAnCE/NodeManager/MonitorController.cpp: + * ciao/Dynamic_Component_Activator.h: + * ciao/Dynamic_Component_Servant_T.h: + * ciao/Home_Servant_Impl_T.h: + * ciao/Servant_Activator.h: + * ciao/Session_Container.h: + * ciao/Session_Container.cpp: + * ciao/Swapping_Container.h: + * ciao/Swapping_Container.cpp: + * ciao/Swapping_Servant_Home_Impl_T.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h: + + Parts of CIAO use TAO_SYNCH_MUTEX while other parts use ACE_SYNCH_MUTEX. + All occurrences of ACE_SYNCH_MUTEX were replaced with TAO_SYNCH_MUTEX for + consistency. + +Mon Nov 26 16:57:33 UTC 2007 Abdullah Sowayan + + * ciao/Servant_Activator.h: + + The incarnate and etherealize (inherited from PortableServer::ServantActivator) + were implicitly virtual, made those methods explicitly virtual by using the virtual + key word. This is a cosmetic change to comply with ACE/TAO/CIAO coding standards. + + * ciao/Servant_Activator.cpp: + + Minor cosmetic changes. + +Fri Nov 23 19:29:54 UTC 2007 Johnny Willemsen + + * ciao/Servant_Impl_Base.cpp: + Layout change + + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_vc8warnings.mpb: + * MPC/config/ciao_vcwarnings.mpb: + Renamed vc8warnings to vcwarnings, this file is also for vc9 from now + +Thu Nov 22 15:41:13 UTC 2007 Abdullah Sowayan + + * ciao/Dynamic_Component_Activator.inl: + + New file. Inlined short methods to comply with ACE/TAO/CIAO + coding standards. + + * ciao/Dynamic_Component_Activator.h: + * ciao/Dynamic_Component_Activator.cpp: + + Minor changes necessary for the new inline file mentioned above. + + * ciao/Dynamic_Component_Activator.h: + + The incarnate and etherealize (inherited from PortableServer::ServantActivator) + were implicitly virtual, made those methods explicitly virtual by using the virtual + key word. This is a cosmetic change to comply with ACE/TAO/CIAO coding standards. + +Wed Nov 21 17:41:14 UTC 2007 Abdullah Sowayan + + * ciao/Context_Impl_Base.inl: + + New file. Inlined short methods to comply with ACE/TAO/CIAO + coding standards. + + * ciao/Context_Impl_Base.h: + * ciao/Context_Impl_Base.cpp: + + Minor changes necessary for the new inline file mentioned above. + + * ciao/Context_Impl_Base.cpp: + * ciao/Dynamic_Component_Servant_Base.cpp: + + Added a comment on why we have unecessary default constructor. + The default constructor is here to keep MSVC happy and should + not be used at all. The default constructor should be removed + in the future. Until then, ACE_ASSERT is used in the default + constructor to detect a runtime call to the default constructor. + +Wed Nov 21 16:36:28 UTC 2007 Abdullah Sowayan + + * ciao/Container_Base.inl: + + New file. Inlined short methods to comply with ACE/TAO/CIAO + coding standards. + + * ciao/Container_Base.h: + * ciao/Container_Base.cpp: + + Minor changes necessary for the new inline file mentioned above. + +Tue Nov 20 15:43:25 UTC 2007 Abdullah Sowayan + + * ciao/Port_Activator.inl: + + New file. Inlined short methods to comply with ACE/TAO/CIAO + coding standards. + + * ciao/Port_Activator.h: + * ciao/Port_Activator.cpp: + + Minor changes necessary for the new inline file mentioned above. + +Mon Nov 12 19:10:36 UTC 2007 Jeff Parsons + + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + + Fixed incorrect path to generated executor stub in + source file list. + +Mon Nov 12 18:54:48 UTC 2007 Jeff Parsons + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * examples/Hello/Sender/Sender.mpc: + * examples/Display/RateGen/RateGen.mpc: + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + * docs/tutorials/Quoter/Simple/Broker/StockDistributor.mpc: + + Added line 'avoids += ace_tao_tao' in driver/client projects. + + * examples/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/Display/NavDisplay/NavDisplay_exec.h: + + Cosmetic changes (line lengths, ACE style guidelines). + +Fri Nov 9 15:06:04 UTC 2007 Jeff Parsons + + * MPC/config.ciaocidldefaults.mpb: + + Added a line to ensure that the XML descriptor generated by the + CIDL compiler gets cleaned up similarly to the other generated + files upon a 'make clean' operation. Thanks to Adam Mitz + for supplying the fix. + +Tue Nov 6 20:31:09 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/04.html: + + All DAnCE executables are placed in $CIAO_ROOT/bin when built. Updated + the tutorial to reflect the fact that the executables are in $CIAO_ROOT/bin + +Fri Nov 2 16:41:48 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/descriptors/Plan.cdp: + + Reverted what seems to be an accidental commit made at: + Mon Oct 29 16:40:08 UTC 2007 Friedhelm Wolf + + The changes causes the tutorial to not work (plan launcher fails). + +Mon Oct 29 19:10:34 UTC 2007 Jeff Parsons + + * examples/Display/NavDisPlayGUI/NavDisplayGUI.mpc: + + Modified exec project to reflect recent dependency changes, + and added svnt project that links to the GUI version of the + exec lib. + + * examples/Display/NavDisPlayGUI/NavDisplayGUI_exec.cpp: + * examples/Display/NavDisPlayGUI/NavDisplayGUI_exec.h: + + Cosmetic changes. + + * examples/Display/NavDisPlayGUI/NavDisplayGUI_exec_stub_export.h: + * examples/Display/NavDisPlayGUI/NavDisplayGUI_exec_exec_export.h: + * examples/Display/NavDisPlayGUI/NavDisplayGUI_svnt_export.h: + * examples/Display/NavDisPlayGUI/NavDisplayGUI_exec_svnt_export.h: + * examples/Display/NavDisPlayGUI/NavDisplayGUI_stub_export.h: + + Removed these unused files. + +Mon Oct 29 17:45:24 UTC 2007 Abdullah Sowayan + + * examples/Hello/descriptors_ReDaC/deploymentplan.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp: + * examples/Hello/descriptors_naming/deploymentplan_naming.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan.cdp: + + Corrected some entries, according to recent changes in library + names of the Hello example, so that the tests succeed. + +Mon Oct 29 16:40:08 UTC 2007 Friedhelm Wolf + + * examples/Hello/descriptors_events: + + Renamed deployment descriptor files and corrected some entries, + according to recent changes in library names of the Hello example, + so that the tests succeed. + +Mon Oct 29 01:37:04 UTC 2007 Abdullah Sowayan + + * examples/Hello/descriptors_RTCCM/rt-config-example.cdp: + * examples/Hello/descriptors_RTCCM/rt-example.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_multiple_senders.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp: + * examples/Hello/descriptors_naming/deploymentplan_naming.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp: + + Recent changes to MPC files changed library names. As such, + the example was failing. Correct the library names in the files above. + +Sun Oct 28 19:11:39 UTC 2007 Abdullah Sowayan + + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/DeploymentPlan_without_ns.cdp: + * examples/Hello/descriptors/Receiver_Exec.iad: + * examples/Hello/descriptors/Receiver_Stub.iad: + * examples/Hello/descriptors/Receiver_Svnt.iad: + * examples/Hello/descriptors/Sender_Exec.iad: + * examples/Hello/descriptors/Sender_Stub.iad: + * examples/Hello/descriptors/Sender_Svnt.iad: + + Recent changes to MPC files changed library names. As such, + the example was failing. Correct the library names in the files above. + +Fri Oct 26 13:15:24 UTC 2007 Friedhelm Wolf + + * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp: + + Removed some code, that accidentially was commited + +Fri Oct 26 01:01:37 UTC 2007 Friedhelm Wolf + + * examples/Hello/descriptors_events: + + Changed test scripts to perl and make them autobuild conform + +Thu Oct 25 21:28:13 UTC 2007 Jeff Parsons + + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Sender/Sender.mpc: + + Fixed mismatches of lib names. + +Thu Oct 25 15:44:50 UTC 2007 Friedhelm Wolf + + * examples/Hello/descriptors_events: + + Added scripts and README files for documentation purposes + +Wed Oct 24 16:17:41 UTC 2007 Abdullah Sowayan + + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + + Made the implementation of these files look like what is currently + generated by the CIDLC compiler. It seems that the files in question + were completley handwritten. The changes affects the signitures of + the entry point functions, and the implementation of the entry point + functions and factories. + + * examples/Hello/descriptors/DeploymentPlan.cdp: + * examples/Hello/descriptors/DeploymentPlan_without_ns.cdp: + * examples/Hello/descriptors/Receiver_Exec.iad: + * examples/Hello/descriptors/Sender_Exec.iad: + * examples/Hello/descriptors_RTCCM/rt-config-example.cdp: + * examples/Hello/descriptors_RTCCM/rt-example.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp: + * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp: + * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp: + * examples/Hello/descriptors_naming/deploymentplan_naming.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan.cdp: + * examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp: + + Modified the entry point functions' signitures as per the comment above. + +Tue Oct 23 20:25:53 UTC 2007 Abdullah Sowayan + + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Hello_Base/Hello_Base_skel_export.h: + + Minor cosmetic changes. + + * examples/Hello/Sender/Sender.mpc: + + Change 'after' lines to match recent changes to project names. + +Tue Oct 23 14:50:48 UTC 2007 Jeff Parsons + + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + + Fixed typo in IDL filename. + +Tue Oct 23 14:37:05 UTC 2007 Abdullah Sowayan + + * tests/CIDL/CodeGen/Basic.mpc: + * tests/CIDL/CodeGen/Basic_skel_export.h: + * tests/CIDL/CodeGen/Basic_stub_export.h: + * tests/CIDL/CodeGen/CodeGen.mpc: + * tests/CIDL/CodeGen/CodeGen_exec_export.h: + * tests/CIDL/CodeGen/CodeGen_stub_export.h: + * tests/CIDL/CodeGen/CodeGen_svnt_export.h: + + - Modified MPC files to reverse + the exec->svnt dependency. Also moved generated + EC.{h, inl, cpp} files from svnt buidl to + exec build. + + - Added file names to MPC projects so that all build files + are displayed in IDEs. + + - For non-component builds, changed _svnt suffix to _skel + for project names, library names, and export header file + names. + + - Separated IDL and CIDL/executor IDL processing into + separate projects. + + * tests/CIDL/CodeGen/Basic_svnt_export.h: + + Removed this file. + +Tue Oct 23 14:27:18 UTC 2007 Abdullah Sowayan + + * tests/Minimum/Receiver/Receiver_exec.h: + * tests/Minimum/Sender/Sender_exec.h: + + Removed dependency on including Servant header files. + + * tests/Minimum/Sender/Sender_exec.cpp: + * tests/Minimum/Receiver/Receiver_exec.cpp: + + The generate context is a var type now (it used to be a pointer). + Do not compare it directly with 0, use CORBA::is_nil instead. + + Effectively, we just renegerated the executor files with a newer + cidlc compiler. + +Mon Oct 22 18:54:03 UTC 2007 Jeff Parsons + + * performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.cpp: + * performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.h: + + New files, factored out of existing files. + + * performance-tests/Benchmark/Benchmark_skel_export.h: + * tests/Minimum/Minimum_Base/Minimum_Base.mpc: + * tests/Minimum/Minimum_Base/Minimum_Base_skel_export.h: + * examples/Hello/Hello_Base/Hello_Base_skel_export.h: + * examples/Swapping/Hello_Base/Hello_Base_skel_export.h: + + New files, renamed from corresponding files removed, as + listed below. + + * performance-tests/Benchmark/Benchmark_svnt_export.h: + * tests/Minimum/Minimum_Base/Minimum_Base_svnt_export.h: + * tests/Minimum/Minimum_Base/Minimum.mpc: + * examples/Hello/Hello_Base/Hello_Base_svnt_export.h: + * examples/Swapping/Hello_Base/Hello_Base_svnt_export.h: + + Removed files, renamed as described above. + + * performance-tests/Protocols/Sender/Sender_exec.cpp: + * performance-tests/Protocols/Sender/Sender.mpc: + * performance-tests/Protocols/Controller/Controller.mpc: + * performance-tests/Protocols/Receiver/Receiver.mpc: + * performance-tests/Protocols/common/Protocols.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/server.cpp: + * performance-tests/Benchmark/Multi_Threaded/client.cpp: + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + * performance-tests/Benchmark/README + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + * tests/Minimum/Sender/Sender_exec.cpp: + * tests/Minimum/Sender/Sender_exec.h: + * tests/Minimum/Sender/Sender.mpc: + * tests/Minimum/Receiver/Receiver.mpc: + * tests/Minimum/Receiver/Receiver_exec.cpp: + * tests/Minimum/Receiver/Receiver_exec.h: + * examples/Hello/Sender/Sender.mpc: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Display/Display_Base/Display_Base.mpc: + * examples/Display/RateGen/RateGen.mpc: + * examples/Display/GPS/GPS.mpc: + * examples/Display/NavDisplay/NavDisplay.mpc: + * examples/Swapping/Sender/Sender.mpc: + * examples/Swapping/Receiver/Receiver.mpc: + * examples/Swapping/Hello_Base/Hello_Base.mpc: + + - Modified *_exec.{h, cpp} files and MPC files to reverse + the exec->svnt dependency. Also moved generated + EC.{h, inl, cpp} files from svnt build to + exec build. + + - Added file names to MPC projects so that all build files + are displayed in IDEs. + + - For non-component builds, changed _svnt suffix to _skel + for project names, library names, and export header file + names. + + - Separated IDL and CIDL/executor IDL processing into + separate projects. + +Fri Oct 19 18:19:12 UTC 2007 Abdullah Sowayan + + * DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl: + + Updated this template implementation to reflect enhancement done by: + Fri Oct 19 15:22:36 UTC 2007 Jeff Parsons + +Fri Oct 19 18:04:13 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/images/fig10.jpg: + * docs/tutorials/Quoter/Simple/images/fig11.jpg: + * docs/tutorials/Quoter/Simple/images/fig12.jpg: + * docs/tutorials/Quoter/Simple/images/fig2.jpg: + * docs/tutorials/Quoter/Simple/images/fig3.jpg: + * docs/tutorials/Quoter/Simple/images/fig4.jpg: + * docs/tutorials/Quoter/Simple/images/fig5.jpg: + * docs/tutorials/Quoter/Simple/images/fig6.jpg: + * docs/tutorials/Quoter/Simple/images/fig7.jpg: + * docs/tutorials/Quoter/Simple/images/fig8.jpg: + * docs/tutorials/Quoter/Simple/images/fig9.jpg: + + Update the images to reflect what the user would see + in CoSMIC 0.6 + + * docs/tutorials/Quoter/Simple/03.html: + + Slight modification to make the images appear pretty. + +Fri Oct 19 17:56:34 UTC 2007 Jeff Parsons + + * ciao/IFR_Base.idl: + + Removed this file - see below. + + * ciao/CCM_Home.idl: + * ciao/CCM_Core.mpc: + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_events_dnc.mpb: + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Reverted all changes that attempted to replace dependency + on IFR_Client library with a dummy interface. The fact + that one or more config handlers must depend on IFR_Client + makes linking clashes between the dummy and real interfaces + unavoidable. + +Fri Oct 19 15:35:13 UTC 2007 Jeff Parsons + + * examples/Null_Component/StaticDAnCEApp.mpc: + * examples/Null_Component/Null_Component.mpc: + + Change 'after' lines to match recent changes to project names. + +Fri Oct 19 15:22:36 UTC 2007 Jeff Parsons + + * examples/Null_Component/plan.h: + * examples/Null_Component/StaticDAnCEApp.cpp: + + Reordered and reduced #includes, cosmetic changes. + + * examples/Null_Component/StaticDAnCEApp.mpc: + + Changed dependency to reflect recent changes in Null_Component.mpc, + added Header_File and Inline_File blocks to eliminate the + appearance of unwanted files in IDEs. + +Thu Oct 18 21:17:45 UTC 2007 Abdullah Sowayan + + * examples/Null_Component/Null_Component.mpc: + * examples/Null_Component/StaticDAnCEApp.mpc: + + Fixed fuzz warnings. Apparently, project and file names that are + longer than 38 charachters are not portable on all operating + systems. Thanks to Johnny Willemsen for explaining why fuzz + complains about long project and file names. + +Thu Oct 18 20:58:54 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/01.html: + * docs/tutorials/Quoter/Simple/02.html: + * docs/tutorials/Quoter/Simple/03.html: + * docs/tutorials/Quoter/Simple/04.html: + * docs/tutorials/Quoter/Simple/index.html: + + Updated the tutorial. + + * docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat: + + Changed the name of this file to NodeMap.dat from Stock.dat + Naming everything Stock is confusing. + + * docs/tutorials/Quoter/Simple/descriptors/Stock.dat: + + Removed this file. + +Thu Oct 18 20:19:39 UTC 2007 Jeff Parsons + + * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc: + * DAnCE/Plan_Launcher/Plan_Launcher.mpc: + + Removed unneeded lib TAO_IFR_Client from list, to avoid clash with + dummy IRObject interface added for CIAO_Client, CIAO_Container, + and CIAO_Server in + + Wed Oct 17 15:24:13 UTC 2007 Jeff Parsons + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + * ciaosvcs/Events/CIAO_Events.mpc: + + Reverted changed inadvertently checked in with + + Wed Oct 17 15:24:13 UTC 2007 Jeff Parsons + +Thu Oct 18 19:29:01 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + + Fixed fuzz errors. + +Thu Oct 18 18:21:18 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/Model/Quoter.xme: + + The entry points for the Servant and Executor were messed up. New + releases of CoSMIC generate the proper entry point signitures. + This change fixes the entry point signitures. + + * docs/tutorials/Quoter/Simple/descriptors/Broker.cpd: + * docs/tutorials/Quoter/Simple/descriptors/Default.pcd: + * docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd: + * docs/tutorials/Quoter/Simple/descriptors/Domain.cdd: + * docs/tutorials/Quoter/Simple/descriptors/Plan.cdp: + * docs/tutorials/Quoter/Simple/descriptors/StockBroker.ccd: + * docs/tutorials/Quoter/Simple/descriptors/StockBrokerMonolithicImpl.cid: + * docs/tutorials/Quoter/Simple/descriptors/StockBroker_exec.iad: + * docs/tutorials/Quoter/Simple/descriptors/StockBroker_stub.iad: + * docs/tutorials/Quoter/Simple/descriptors/StockBroker_svnt.iad: + * docs/tutorials/Quoter/Simple/descriptors/StockDistributor.ccd: + * docs/tutorials/Quoter/Simple/descriptors/StockDistributorMonolithicImpl.cid: + * docs/tutorials/Quoter/Simple/descriptors/StockDistributor_exec.iad: + * docs/tutorials/Quoter/Simple/descriptors/StockDistributor_stub.iad: + * docs/tutorials/Quoter/Simple/descriptors/StockDistributor_svnt.iad: + * docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cid: + * docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cpd: + * docs/tutorials/Quoter/Simple/descriptors/TopLevelPackage.tpd: + + Regenerated descriptors. Older descriptors were hand written, + we want users to use CoSMIC for this sort of stuff, especially + in the tutorial. + + * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl: + + Increased spawn dealy for NodeApplication in order to have + this tutorial work on slower systems. + + * docs/tutorials/Quoter/Simple/descriptors/Broker.ccd: + * docs/tutorials/Quoter/Simple/descriptors/Broker.cid: + * docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad: + * docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad: + * docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad: + * docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd: + * docs/tutorials/Quoter/Simple/descriptors/Distributor.cid: + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad: + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad: + * docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad: + * docs/tutorials/Quoter/Simple/descriptors/Libraries.iad: + * docs/tutorials/Quoter/Simple/descriptors/Stock.cdp: + * docs/tutorials/Quoter/Simple/descriptors/Stock.cid: + * docs/tutorials/Quoter/Simple/descriptors/Stock.cpd: + * docs/tutorials/Quoter/Simple/descriptors/Stock.pcd: + * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp: + * docs/tutorials/Quoter/Simple/descriptors/package.tpd: + + Removed these files. + +Thu Oct 18 18:13:35 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/Broker/StockBroker.cidl: + * docs/tutorials/Quoter/Simple/Broker/StockBroker.idl: + + Use include guards, as is done with other IDL files in the distribution. + + Renamed the IDL files to exactly match the name of the component. The + name of the component and the IDL file must match, if they don't, one + has to do more work in CoSMIC to resolve conflicts. + + * docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp: + + Renamed from Broker.cpp. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc: + + Rengerate the MPC files with the new generate_component_mpc.pl + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp: + + Renamed for the reason mentioned above. Also, regenerated the autogenerated + code parts to leverage recent changes to CIDLC generated code. The executors + now have no dependency on the servants. + + * docs/tutorials/Quoter/Simple/Broker/StockBroker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_stub_export.h: + * docs/tutorials/Quoter/Simple/Broker/StockBroker_svnt_export.h: + + Regenerated. + + * docs/tutorials/Quoter/Simple/Broker/Broker.cidl: + * docs/tutorials/Quoter/Simple/Broker/Broker.cpp: + * docs/tutorials/Quoter/Simple/Broker/Broker.idl: + * docs/tutorials/Quoter/Simple/Broker/Broker.mpc: + * docs/tutorials/Quoter/Simple/Broker/Broker_exec.h: + * docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp: + * docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h: + * docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h: + + Removed these files per the changes above. + +Thu Oct 18 17:45:41 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.cidl: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.idl: + + Use include guards, as is done with other IDL files in the distribution. + + Renamed the IDL files to exactly match the name of the component. The + name of the component and the IDL file must match, if they don't, one + has to do more work in CoSMIC to resolve conflicts. + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp: + + Renamed from Distributor.cpp. + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc: + + Rengerate the MPC files with the new generate_component_mpc.pl + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp: + + Renamed for the reason mentioned above. Also, regenerated the autogenerated + code parts to leverage recent changes to CIDLC generated code. The executors + now have no dependency on the servants. + + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/StockDistributor_svnt_export.h: + + Regenerated. + + * docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl: + * docs/tutorials/Quoter/Simple/Distributor/Distributor.idl: + * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc: + * docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h: + + Removed these files per the changes above. + +Thu Oct 18 17:42:58 UTC 2007 Abdullah Sowayan + + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl: + + Use include guards, as is done with other IDL files in + the distribution. + + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc: + + Rengerate the MPC files with the new generate_component_mpc.pl + +Wed Oct 17 20:20:34 UTC 2007 Jeff Parsons + + * tests/IDL3/Events/Any/main.cpp: + + Added #include of Any.h. + +Wed Oct 17 18:47:50 UTC 2007 Jeff Parsons + + * ciao/Swapping_Servant_Home_Impl_T.h: + * ciao/Upgradeable_Context_Impl_T.cpp: + + Restored included files needed at instantiation time. + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp(create_rt_event_channel): + + Commented out unused arg. + +Wed Oct 17 17:18:04 UTC 2007 Abdullah Sowayan + + * DAnCE/TargetManager/descriptors/NodeDetails.dat: + * DAnCE/TargetManager/descriptors/NodeManagerMap.dat: + * DAnCE/tests/scripts/BasicSP/basicsp.dat: + * docs/tutorials/Quoter/Simple/descriptors/Stock.dat: + * examples/BasicSP/descriptors/BasicSP.dat: + * examples/Display/descriptors/NodeManagerMap.dat: + * examples/Hello/descriptors/NodeManagerMap.dat: + * examples/Hello/descriptors_RTCCM/NodeManagerMap.dat: + * examples/Hello/descriptors_events/NodeManagerMap.dat: + * examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat: + * performance-tests/Benchmark/descriptors/test-multi-process.dat: + * performance-tests/Benchmark/descriptors/test.dat: + * performance-tests/Protocols/descriptors/test.dat: + * tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat: + + Removed blank lines. Blank lines now cause the deployment to fail. + +Wed Oct 17 15:28:42 UTC 2007 Jeff Parsons + + * MPC/config/ciao_client_dnc.mpb: + * MPC/config/ciao_events_dnc.mpb: + + Removed ifr_client from base project list. + +Wed Oct 17 15:24:13 UTC 2007 Jeff Parsons + + * CIAO_TAO_DAnCE.mwc: + + Removed unnecessary directories, removing 24 unused builds. + + * ciao/IFR_Base.idl: + + New file, containing a dummy IRObject interface, to be used + as the return type for an unimplemented operation in CCM_Home. + + * ciao/CCM_Home.idl: + + Changed include of IFR_Base.idl from the one in + TAO_ROOT/tao/IFR_Client to the new file above. + + * ciao/CCM_Core.mpc: + + Removed dependency on IFR_Client lib from all projects. + + * ciao/Server_init.h: + * ciao/Client_init.cpp: + * ciao/Cookies.h: + * ciao/Servant_Impl_Base.h: + * ciao/StandardConfigurator_Impl.cpp: + * ciao/Swapping_Servant_Home_Impl_T.h: + * ciao/Swapping_Servant_Home_Impl_Base.cpp: + * ciao/Dynamic_Component_Activator.cpp: + * ciao/Server_init.cpp: + * ciao/Servant_Impl_Base.cpp: + * ciao/Servant_Activator.cpp: + * ciao/Swapping_Container.h: + * ciao/StandardConfigurator_Impl.h: + * ciao/Dynamic_Component_Activator.h: + * ciao/Dynamic_Component_Servant_Base.cpp: + * ciao/Servant_Activator.h: + * ciao/Context_Impl_Base.h: + * ciao/Container_Base.cpp: + * ciao/Session_Container.h: + * ciao/Cookies.cpp: + * ciao/Port_Activator.h: + * ciao/Client_init.h: + * ciao/Dynamic_Component_Servant_Base.h: + * ciao/Home_Servant_Impl_Base.h: + * ciao/Container_Base.h: + * ciao/Swapping_Servant_Home_Impl_Base.h: + * ciao/Session_Container.cpp: + * ciao/Upgradeable_Context_Impl_T.h: + * ciao/CIAO_common.h: + * ciao/Swapping_Container.cpp: + * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp: + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h: + * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h: + * ciaosvcs/Events/CIAO_EventService_Factory_impl.h: + + Removed unnecessary #includes, and general cleanup of + formatting and #includes to follow ACE style guidelines. + + * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc: + * ciaosvcs/Events/CIAO_Events.mpc: + + Added export header files to projects, so they will be seen + by developers using IDEs. + +Wed Oct 17 14:02:41 UTC 2007 Abdullah Sowayan + + * examples/Null_Component/plan.h: + + Fixed fuzz warning. + +Tue Oct 16 20:49:21 UTC 2007 Abdullah Sowayan + + * examples/Null_Component/Null_Component.cidl: + * examples/Null_Component/Null_Component.idl: + + Slight name fixes to make CIDLC and CoSMIC happy. For details, + check bugzilla 3086. + + * examples/Null_Component/Null_Component_exec.h: + * examples/Null_Component/Null_Component_exec.cpp: + + Renegerated the empty executor files. + + * examples/Null_Component/Null_Interface.mpc: + * examples/Null_Component/Null_Component.mpc: + + Regenerate with the newer generate_component_mpc.pl. + + * examples/Null_Component/Null_Interface_skel_export.h: + + Autogenerated. + + * examples/Null_Component/model/Null_Component.xme: + + Updated the model to take advantage of recent fixes to CoSMIC. For details, + check the CoSMIC ChangLog entry: + + Thu Oct 4 11:27:17 UTC 2007 Jeff Parsons + + * examples/Null_Component/descriptors/NodeMap.dat: + + Removed blank lines. Blank lines now cause the deployment to fail. + + * examples/Null_Component/descriptors/Domain.cdd: + * examples/Null_Component/descriptors/Null_Assembly.cid: + * examples/Null_Component/descriptors/Null_Assembly_Package.cpd: + * examples/Null_Component/descriptors/Null_Component.ccd: + * examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid: + * examples/Null_Component/descriptors/Null_Component_Package.cpd: + * examples/Null_Component/descriptors/Null_Component_exec.iad: + * examples/Null_Component/descriptors/Null_Component_stub.iad: + * examples/Null_Component/descriptors/Null_Component_svnt.iad: + * examples/Null_Component/descriptors/PackageConfiguration.pcd: + * examples/Null_Component/descriptors/Plan.cdp: + * examples/Null_Component/descriptors/TopLevelPackage.tpd: + + Updated descriptors to reflect changes made to CoSMIC model. + + * examples/Null_Component/plan.h: + + Update plan to reflect changes made to CoSMIC model. + + * examples/Null_Component/descriptors/package.tpd: + * examples/Null_Component/model/Null_Component.mga: + + Removed these files. + +Tue Oct 2 20:34:15 UTC 2007 Abdullah Sowayan + + * bin/generate_component_mpc.pl: + + Enhanced user displayed message. + +Tue Oct 2 19:52:30 UTC 2007 Abdullah Sowayan + + * docs/generate_component_mpc.html: + + Changed documentation to match changes made in: + Fri Sep 28 19:37:39 UTC 2007 Jeff Parsons + +Fri Sep 28 19:58:52 UTC 2007 Jeff Parsons + + * CIDLC/UtilityTypeNameEmitters.hpp: + + For some unknown reason, a class declaration was missing from + this file in updating on other machines, checking it in + explicitly to make sure. + +Fri Sep 28 19:37:39 UTC 2007 Jeff Parsons + + * CIDLC/CorbaTypeNameEmitters.cpp: + + Fixed incorrect code generation for a null return of an enum type. + + * CIDLC/ServantSourceGenerator.cpp: + + Changed generated include of Cookies.h to ciao/Cookies.h. + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + + Changed generated context member type from Foo_Context* to + CCM_Foo_Context_var. Also replaced include of Foo_svnt.h with + FooEC.h. These changes reverse the existing dependency of + the executor DLL on the servant DLL, which makes more sense + since the servant delegates to the executor, which should + not be coupled with any specific CCM implementation. + + * bin/generate_component_mpc.pl: + + Changed the script to generate default MPC files to reflect the + dependency changes above. Also split the IDL and CIDL processing + into separate projects. + +Fri Sep 21 22:11:16 UTC 2007 Friedhelm Wolf + + * docs/schema/CIAOEvents.txt: + + Added information about naming conventions for filter declaration. + +Mon Sep 3 14:49:07 UTC 2007 Douglas C. Schmidt + + * tools/Config_Handlers/IDD_Handler.cpp (CIAO): + * tools/Config_Handlers/IDD_Handler.cpp (CIAO): + * tools/Config_Handlers/ADD_Handler.cpp (CIAO): + * tools/Config_Handlers/MDD_Handler.cpp (CIAO): Changed + generateUUID() to generate_UUID() to match new ACE-ification of + the UUID class. + +Wed Sep 19 04:10:15 CDT 2007 Johnny Willemsen + + * CIAO version 0.6.1 released. + +Tue Sep 18 15:13:37 UTC 2007 Abdullah Sowayan + + * DAnCE/NodeApplication/NodeApp_Configurator.cpp: + + StaticDAnCE applications stopped working since the introduction + of this file. This change fixes the problem. For details look + into Bugzilla 3073. Thanks to William R. Otte for providing + the patch. + +Fri Sep 14 15:19:17 UTC 2007 Abdullah Sowayan + + * DAnCE/ExecutionManager/Execution_Manager.cpp: + + Fixed a couple of spelling errors to user diplayed messages. + +Fri Sep 14 14:42:06 UTC 2007 Friedhelm Wolf + + * docs/schema/CIAOEvents.txt: + Added information about supported federation types. + +Wed Sep 12 22:18:03 UTC 2007 Friedhelm Wolf + + * docs/schema/CIAOEvents.txt: + Added documentation about how to integrat TAO Real-Time Event Service + into an CIAO based deployment. + +Tue Sep 4 14:25:24 UTC 2007 Abdullah Sowayan + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + Untabify. + +Mon Sep 03 02:50:30 CDT 2007 Johnny Willemsen + + * CIAO version 0.6 released. + +Mon Aug 27 23:04:36 UTC 2007 Nilabja R + + * ciao/Servant_Impl_Base.h: + Deleted the Private Constructor in the class Servant_Impl_Base. + This strangely solves the problem on Bug 3060. + +Mon Aug 27 13:21:14 UTC 2007 Abdullah Sowayan + + * tools/Config_Handlers/ADD_Handler.cpp: + * tools/Config_Handlers/Any_Handler.h: + * tools/Config_Handlers/CCD_Handler.cpp: + * tools/Config_Handlers/CEPE_Handler.h: + * tools/Config_Handlers/CPD_Handler.h: + * tools/Config_Handlers/DP_PCD_Handler.h: + * tools/Config_Handlers/DP_PCD_Handler.cpp: + * tools/Config_Handlers/ERE_Handler.h: + * tools/Config_Handlers/IDD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.h: + * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp: + * tools/Config_Handlers/Package_Handlers/SID_Handler.h: + * tools/Config_Handlers/Property_Handler.h: + * tools/Config_Handlers/RT-CCM/TPL_Handler.h: + * tools/Config_Handlers/Req_Handler.h: + * tools/Config_Handlers/Req_Handler.cpp: + * tools/Config_Handlers/STD_CID_Handler.cpp: + * tools/Config_Handlers/SatisfierProperty_Handler.h: + * tools/Config_Handlers/Utils/XML_Helper.h: + * tools/Config_Handlers/XSCRT/Traversal.hpp: + Untabify. + +Fri Aug 24 14:23:06 UTC 2007 Abdullah Sowayan + + * examples/BasicSP/EC/controller.cpp: + * examples/Display/NavDisplayGUI_exec/DetailView.cpp: + * examples/Display/NavDisplayGUI_exec/MapView.cpp: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Sender/starter.cpp: + * examples/Null_Component/plan.h: + * examples/Swapping/Receiver/Receiver_exec.h: + * examples/Swapping/Sender/starter.cpp: + Untabify. + +Thu Aug 23 22:21:16 UTC 2007 Abdullah Sowayan + + * DAnCE/Deployment/CIAO_NodeApplication_CallBack.idl: + * DAnCE/NodeApplication/NodeApplication_Impl.cpp: + * DAnCE/RepositoryManager/ZIP_Wrapper.cpp: + Untabify. + +Tue Aug 21 14:43:24 UTC 2007 Abdullah Sowayan + + * DAnCE/Interfaces/ExecutionManager_stub_export.h: + * DAnCE/Interfaces/NodeManager_stub_export.h: + * DAnCE/Interfaces/NodeManager_svnt_export.h: + * DAnCE/NodeApplication/CIAO_NodeApplication_export.h: + * DAnCE/NodeApplication/NA_Configurator_Export.h: + * DAnCE/NodeApplication/NoOp_Configurator_export.h: + * DAnCE/NodeApplication/NodeApp_Configurator_Export.h: + * DAnCE/NodeApplication/RTNA_Configurator_Export.h: + * DAnCE/NodeApplicationManager/CIAO_NAM_Export.h: + * DAnCE/TargetManager/TargetManager_exec_export.h: + * DAnCE/TargetManager/TargetManager_stub_export.h: + * DAnCE/TargetManager/TargetManager_svnt_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h: + * DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h: + * ciao/CIAO_Client_Export.h: + * ciao/CIAO_Container_Export.h: + * ciao/CIAO_Server_Export.h: + * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h: + * ciaosvcs/Events/CIAO_Events_Export.h: + * docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h: + * docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h: + * docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h: + * docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h: + * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h: + * examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h: + * examples/Display/RateGen/RateGen_exec_export.h: + * examples/Hello/Hello_Base/Hello_Base_stub_export.h: + * examples/Hello/Hello_Base/Hello_Base_svnt_export.h: + * examples/Hello/Receiver/Receiver_exec_export.h: + * examples/Hello/Receiver/Receiver_stub_export.h: + * examples/Hello/Receiver/Receiver_svnt_export.h: + * examples/Hello/Sender/Sender_exec_export.h: + * examples/Hello/Sender/Sender_stub_export.h: + * examples/Hello/Sender/Sender_svnt_export.h: + * examples/Swapping/Hello_Base/Hello_Base_stub_export.h: + * examples/Swapping/Hello_Base/Hello_Base_svnt_export.h: + * examples/Swapping/Receiver/Receiver_exec_export.h: + * examples/Swapping/Receiver/Receiver_stub_export.h: + * examples/Swapping/Receiver/Receiver_svnt_export.h: + * examples/Swapping/Sender/Sender_exec_1_export.h: + * examples/Swapping/Sender/Sender_exec_2_export.h: + * examples/Swapping/Sender/Sender_exec_export.h: + * examples/Swapping/Sender/Sender_stub_export.h: + * examples/Swapping/Sender/Sender_svnt_export.h: + * performance-tests/Benchmark/Benchmark_stub_export.h: + * performance-tests/Benchmark/Benchmark_svnt_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h: + * performance-tests/Protocols/Receiver/Receiver_exec_export.h: + * performance-tests/Protocols/Receiver/Receiver_stub_export.h: + * performance-tests/Protocols/Receiver/Receiver_svnt_export.h: + * performance-tests/Protocols/Sender/Sender_exec_export.h: + * performance-tests/Protocols/Sender/Sender_stub_export.h: + * performance-tests/Protocols/Sender/Sender_svnt_export.h: + * performance-tests/Protocols/common/Protocols_skel_export.h: + * performance-tests/Protocols/common/Protocols_stub_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h: + * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h: + * tests/Bug_2130_Regression/interfaces/ENW_skel_export.h: + * tests/Bug_2130_Regression/interfaces/ENW_stub_export.h: + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h: + * tests/IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h: + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h: + * tests/IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h: + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h: + * tests/IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h: + * tests/IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h: + * tests/IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h: + * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h: + * tests/IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h: + * tests/IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h: + * tests/IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h: + * tests/IDL3/Events/Abstract/Abstract_stub_export.h: + * tests/IDL3/Events/Abstract/Abstract_svnt_export.h: + * tests/IDL3/Events/Regular/Regular_stub_export.h: + * tests/IDL3/Events/Regular/Regular_svnt_export.h: + * tests/IDL3/Homes/Attributes/HomeAttributes_stub_export.h: + * tests/IDL3/Homes/Attributes/HomeAttributes_svnt_export.h: + * tests/IDL3/Homes/Basic/Basic_stub_export.h: + * tests/IDL3/Homes/Basic/Basic_svnt_export.h: + * tests/IDL3/Homes/Factory/Factory_stub_export.h: + * tests/IDL3/Homes/Factory/Factory_svnt_export.h: + * tests/IDL3/Homes/Finder/Finder_stub_export.h: + * tests/IDL3/Homes/Finder/Finder_svnt_export.h: + * tests/IDL3/Homes/Inheritance/Inheritance_stub_export.h: + * tests/IDL3/Homes/Inheritance/Inheritance_svnt_export.h: + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h: + * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h: + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h: + * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h: + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_stub_export.h: + * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_svnt_export.h: + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_stub_export.h: + * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_svnt_export.h: + * tests/IDL3/ImpliedIDL/Events/Events_stub_export.h: + * tests/IDL3/ImpliedIDL/Events/Events_svnt_export.h: + * tests/IDL3/ImpliedIDL/Homes/Homes_stub_export.h: + * tests/IDL3/ImpliedIDL/Homes/Homes_svnt_export.h: + * tests/Minimum/Minimum_Base/Minimum_Base_stub_export.h: + * tests/Minimum/Minimum_Base/Minimum_Base_svnt_export.h: + * tests/Minimum/Receiver/Receiver_exec_export.h: + * tests/Minimum/Receiver/Receiver_stub_export.h: + * tests/Minimum/Receiver/Receiver_svnt_export.h: + * tests/Minimum/Sender/Sender_exec_export.h: + * tests/Minimum/Sender/Sender_stub_export.h: + * tests/Minimum/Sender/Sender_svnt_export.h: + * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h: + * tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h: + * tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h: + * tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h: + * tools/Config_Handlers/XSC_XML_Handlers_Export.h: + * tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h: + + Regenerated export files to address compile-time problems + for static MSVC71 builds. + +Mon Aug 20 12:38:12 UTC 2007 Johnny Willemsen + + * docs/tutorials/Quoter/Simple/03.html: + Corrected invalid hyperlink + +Wed Aug 8 13:41:12 UTC 2007 Johnny Willemsen + + * performance-tests/Protocols/Sender/Sender_exec.cpp: + Added needed include due to refactoring + +Wed Aug 8 07:03:33 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/identifier_helper.cpp (original_local_name): + + To the code that removes a prepended '_cxx_' from an indentifier, + added a check to make sure it was added automatically to avoid + a C++ keyword clash, and not by the user. + +Tue Aug 7 08:57:46 UTC 2007 Jeff Parsons + + * tests/IDL3/ImpliedIDL/All/include.idl: + * tests/IDL3/ImpliedIDL/All/raw_include.idl: + * tests/IDL3/ImpliedIDL/All/pass_through.idl: + + Added #ifndef guards. + +Mon Aug 6 13:00:10 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/identifier_helper.cpp (orig_sn): + + Fixed a problem with Borland BCB6 Pro not finding an implicit + conversion from ACE_CString to char*. + +Fri Aug 3 07:40:11 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/README: + * tests/IDL3/ImpliedIDL/All/README: + + Updated documentation in these directories. + +Fri Aug 3 07:01:35 UTC 2007 Jeff Parsons + + * tools/IDL3_to_IDL2/basic_visitor.cpp: + * tools/IDL3_to_IDL2/basic_visitor.h: + * tools/IDL3_to_IDL2/be_sunsoft.cpp: + * tools/IDL3_to_IDL2/be_sunsoft.h: + * tools/IDL3_to_IDL2/identifier_helper.cpp: + * tools/IDL3_to_IDL2/be_helper.cpp: + * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp: + * tools/IDL3_to_IDL2/identifier_helper.h: + * tools/IDL3_to_IDL2/be_helper.h: + + - Changes incorporating enhancements by folks at Thales ATM to + better handle the mapping of escaped identifiers (masking + IDL keywords) and identifiers that are C++ keywords from + IDL3 to IDL2. Thanks to Hakim Souami + for leading this + effort. + + - Further changes to build on those above by adding keyword + handling support for scoped names and component port names. + + - Addition of the capability, also from Thales ATM, to + optionally generate #includes of IDL files without the + addition of the default '_IDL2' suffix. This feature is + necessary when included IDL files aren't available for + conversion or when 'system' IDL files are included and + contain only IDL declarations with no 'implied IDL' + mapping. It is also handy for users who may have similar + IDL files included and don't wish to run the conversion + on them needlessly. While Thales ATM's version of this + feature uses a list of 'excluded' filenames in a text + file, the feature in this version uses a command line + option '-x ' for each file to be excluded. + + * tests/IDL3/ImpliedIDL/All/raw_include.idl: + * tests/IDL3/ImpliedIDL/All/keyword_clash.idl: + + New files that expand the test coverage to include the new + festures described above. + + * tests/IDL3/ImpliedIDL/All/all.mpc: + * tests/IDL3/ImpliedIDL/All/pass_through.idl: + + Changes to existing test files to make use of the new files + listed above. + +Thu Aug 2 03:37:40 UTC 2007 Krishnakumar B + + * examples/BasicSP/BMDisplay/BMDisplay.mpc: + + Added a dependency from BMDisplay_exec to BasicSP_exec. Fixes + problems due to build order. Thanks to Johnny and Gan for + reporting the problem. + +Fri Jul 27 06:50:14 CDT 2007 Johnny Willemsen + + * CIAO version 0.5.10 released. + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: diff --git a/modules/CIAO/ChangeLogs/ChangeLog-pre_release b/modules/CIAO/ChangeLogs/ChangeLog-pre_release new file mode 100644 index 00000000000..5f7b2769f7c --- /dev/null +++ b/modules/CIAO/ChangeLogs/ChangeLog-pre_release @@ -0,0 +1,6202 @@ +Fri Apr 02 13:41:09 2004 Balachandran + + * CIAO version 0.4.1 released. + +Fri Apr 2 13:05:56 2004 Balachandran Natarajan + + * NEWS: + + Updated with the latest developments just prior to BFO. + +Wed Mar 31 23:03:59 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Added code emitter to generate includes of *S.h corresponding to + IDL files included in the CIDL file. Thanks to Gary Duzan + for pointing out the problem. + +Wed Mar 31 17:59:12 2004 Balachandran Natarajan + + * tools/static_configurator/Static_Configurator.mpc: + + Fixed fuzz warnings. + +Mon Mar 29 11:00:00 2004 Jeff Parsons + + * CIDLC/CIDLC.vcproj: + + Excluded the file RepositoryIdGenerator.cpp from the Release build, + as it has already been excluded from the Debug build. Thanks to + Marek Brudka for reporting the problem. + +Sun Mar 28 23:51:17 2004 Balachandran Natarajan + + * TAO/CIAO/tools/RTComponentServer/Makefile.RTComponentServer: + + Updated dependencies. + + * TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h: + + Removed inclusion of Functor.h. + +Mon Mar 29 05:46:58 2004 Balachandran Natarajan + + * TAO/CIAO/tools/RTComponentServer/Makefile.RTComponentServer: + + Updated dependencies. + + * TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h: + + + +Tue Mar 23 14:34:06 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Modified code generated by FacetEmitter class to generate + the _Servant class for a facet in the scope where the IDL + interface the facet employs is defined, as mandated by the + CCM spec. + + * CIDLC/ServantSourceGenerator.cpp: + + Change generation of the declaration of a local variable + which is a _var of the executor class for a facet to match the + scope of the declaration of the executor class itself, which + must be, as mentioned above, in the same scope as the declaration + of the IDL interface used by the facet. + + Thanks to Jessica Pistole for + sending the example IDL/CIDL files that demostrated the + problem. + +Tue Mar 16 11:22:44 2004 Venkita Subramonian + + * docs/static_ciao_contents.html: + * docs/static_config_example.html: + * docs/index.html: + + Fixed webpage for unnecessary whitespace characters. Fixed links + to images. Thanks to Tao Lu for pointing out. + +Tue Mar 16 10:34:41 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Added instantiation of generators for regular and readonly + attributes in interfaces supported by components. The + corresponding code generation in the servant source file + was already there. + +Tue Mar 16 10:36:21 2004 Tao Lu + + * CIAO-INSTALL.html: + + Added the support for CIDL with MPC on Linux. + +Tue Mar 16 10:52:21 2004 Venkita Subramonian + + * docs/static_config_example.html: + * docs/static_ciao_contents.html: + * docs/static_ciao_toc.html: + + Made some modifications to include an example run. + + * docs/index.html: + + Added link from the CIAO main page to the static config + documentation. + +Sun Mar 14 00:23:02 2004 Tao Lu + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + * CCF/CCF/CIDL/CodeGenerationKit.mpc: + * CCF/CCF/CIDL/CompilerElements.mpc: + + Removed the * to disable the duplicated words in the + project/makefile. + +Sun Mar 14 00:16:46 2004 Tao Lu + + * CIDLC/CIDLC.mpc: + + Removed the * to disable the duplicated words in the + project/makefile. + +Mon Mar 15 10:14:16 2004 Boris Kolpackov + + * CIDLC/cidlc.cpp: + + Temporary fix for the wrong return code in CIDL compiler. + Thanks to Gary Duzan for reporting this. + +Fri Mar 12 11:03:38 2004 Jeff Parsons + + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added missing operations to generate enum type names. Thanks to + Jessica Pistole for reporting + the missing type names in generated servant glue code. + +Thu Mar 11 16:30:45 2004 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + + Added support for bounded string and wstring. + + * CCF/Documentation/TODO: + + Reflected new achievement. + + * CIDLC/cidlc.cpp: + + Cosmetic changes. + +2004-03-11 Venkita Subramonian + + * ciao/Container_Base.cpp: Removed an ACE_DEBUG statement which + got in by mistake. + +Wed Mar 10 14:59:19 2004 Venkita Subramonian + + * docs/static_ciao_toc.html: + * docs/static_ciao_contents.html: + * docs/static_ciao_index.html: Updated documentation. Renamed + static_ciao.html to static_ciao_contents.html. + +Wed Mar 10 12:36:01 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added code generator instantiations to handle multiple nested + modules. + + * CIDLC/cidlc.cpp: + + Fixed typo in usage message. + +Tue Mar 9 23:18:22 2004 Venkita Subramonian + + * tools/static_configurator/Static_Assembly_Parser.cpp: + + Made a minor fix to eliminate unnecessary command line option + processing. + + * tools/static_configurator/README: Added this file. + +Tue Mar 9 22:48:10 2004 Venkita Subramonian + + * docs/static_ciao.html: + * docs/imgs/ciao-static1.jpg: + * docs/imgs/ciao-static2.jpg: + * docs/imgs/ciao-dynamic1.jpg: + * docs/imgs/ciao-dynamic2.jpg: + * docs/imgs/ciao-static-vs-dynamic.jpg: Added documentation for + CIAO static configuration. + +Mon Mar 8 14:57:39 2004 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + + Added inclusion of the source file when compiling with + --lem-force-all option. + +Mon Mar 8 13:54:16 2004 Balachandran Natarajan + + * NEWS: + + Added a NEWS file which tracks user visible changes between + every beta. Thanks to Olli Savia and Gary Duzan for motivating + this. + +Wed Mar 3 14:30:53 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added code generation for operations corresponding to + attributes in facets and supported interfaces. Thanks to + Praveen K Sharma for reporting the bug. + This closes [BUGID:1756]. + +Tue Mar 2 19:50:50 2004 Balachandran Natarajan + + * DnC/Node/NodeApplicationManager_Impl.h: + + Added @@Tao comments. + +Tue Mar 2 15:08:39 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed code generation in the body of an operation. This + body just delegates to the executor, so we have to + generate the argument list again (just the names, not + the types), but we don't have to generate the raises + list again. The front end Traversal raises() method + was getting executed, no code generated, but it was + picking up the overridden comma() method used for the + arg list. So we had to override raises() itself to + do nothing. Thanks to Boris for his help with this. + +Tue Mar 2 01:34:18 2004 Tao Lu + + * DnC/Node: + * DnC/Node/NodeApplication_Impl.h: + * DnC/Node/NodeApplication_Impl.h: + + Added the prototype definition files of + NodeApplication and NodeApplicationManager. + +Sun Feb 29 20:57:40 2004 Venkita Subramonian + + * tools/static_configurator/Static_Configurator.h: + * tools/static_configurator/Static_Configurator.cpp: + * tools/static_configurator/Static_Assembly_Parser.cpp: Fixed + compile errors in builds with native exceptions disabled. + + * tools/static_configurator/Static_Assembly_Visitors.cpp: Fixed + compile errors in gcc 3.3.2. Thanks to Bala for pointing out. + +Sat Feb 28 15:42:22 2004 Balachandran Natarajan + + * tools/static_configurator/Static_Assembly_Visitors.cpp: + + Fixed a couple of small errors. But this file still doeasn't + compile with gcc 3.3.2. Sending Venkita note. + +Fri Feb 27 11:35:41 2004 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Fixed code generation errors reported by Edward Mulholland + . + +Thu Feb 26 14:21:48 2004 Balachandran Natarajan + + * CIAOTAO.mwc: + + An mwc file for CIAO with its dependencies on ACE+TAO. Folks can + now run $ACE_ROOT/bin/mwc.pl CIAOTAO.mwc in $CIAO_ROOT and + invoke "make" from $CIAO_ROOT. Thanks to Brian Mendel and Ed + Mulholland for motivating this. + +Tue Feb 24 18:00:44 2004 Tao Lu + + * DnC/Deployment.idl: Removed + * DnC/DnC_Deployment.idl + * DnC/DnC_Element.idl + * DnC/DnC_Resource.idl + + Deployment.idl is splited into 3 parts now. + +Mon Feb 23 15:04:26 2004 Boris Kolpackov + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added generation of a top-level namespaces with the name + derived from composition. Plus all the necessary modifications + in generated code to adopt this scheme. + +Mon Feb 23 13:54:19 2004 Tao Lu + + * CIDLC/CIDLC.vcproj: + + Added ".\Literals.cpp" into the project. + +Mon Feb 23 13:34:20 2004 Tao Lu + + * CIDLC/CIDLC.vcproj: + + Reversed the change. + +Thu Feb 19 11:07:35 2004 Tao Lu + + * docs/index.html: + + Added the parts listing area. Added a few relative links. + +Wed Feb 18 13:05:35 2004 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Name.cpp: + + Added missing header inclusion. + +Wed Feb 18 10:43:54 2004 Tao Lu + + * docs/index.html: + + Added the tutorial section in this file. + +Wed Feb 18 10:11:42 2004 Tao Lu + + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + + Changed these MPC files to specify the output lib path. + +Wed Feb 18 14:05:13 UTC 2004 Johnny Willemsen + + * CCF/CCF/CCF.mwc: + Removed this file, it has an error and is not needed. + +Tue Feb 17 01:18:16 2004 Balachandran Natarajan + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/OEP/Display/RateGen/RateGen_exec.cpp: + * examples/OEP/Display/RateGen/client.cpp: + * examples/OEP/Display/RateGen/controller.cpp: + + Fixed the code for exception safety when exceptions are + disabled. I don't claim that I have caught everything, but + should have most of the problems. Another pass is required to fix + the remaining problems. + +Mon Feb 16 20:01:19 2004 Balachandran Natarajan + + * CIDLC/CIDLC.mwc: + + Added the mpc files from CCF in there. This will make it easier + for the users. Users just need to go to $CIAO_ROOT/CIDLC and + type mwc.pl CIDLC.mwc and then a make. They need not go to go + and build CCF specifically. But this has a hitch that Tao needs + to fix. The CCF libraries should be installed in $CIAO_ROOT/lib + for this to work fine. Tao has accepted to fix this. + + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Bunch of wrong environment macro usage. This should fix the + problems that Brian Mendel reported. Thanks to Brian for + reporting this. + + These fixes wouldn't have taken so long. The CIDLC linking takes + a really really long time! + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/starter.cpp: + * examples/OEP/BasicSP/EC/EC_exec.cpp: + * examples/OEP/BasicSP/EC/client.cpp: + * examples/OEP/BasicSP/EC/controller.cpp: + + Fixes to the executor code to get it compiling on platforms with + exceptions disabled. + +Mon Feb 16 16:32:11 UTC 2004 Johnny Willemsen + + * CCF/CCF/CCF.mwc: + Fixed typo in this file, this fixes the problems out VC71 build has + +Fri Feb 13 11:51:17 2004 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + + Added generation of file caption to local executor mapping. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed bug in name generation when decalartions are in file + scope. + + * CIDLC/DescriptorGenerator.cpp: + + Fixed inconsistent tags. + + * CIDLC/Literals.cpp: + * CIDLC/Literals.hpp: + + Split literals into header and source. + + * CIDLC/CIDLC.mpc: + * CIDLC/CIDLC.vcproj: + * CIDLC/Makefile: + * CIDLC/Makefile.alt: + + Added Literals.cpp + +Thu Feb 12 17:40:33 2004 Tao Lu + + * CIDLC/CIDLC.mwc: + * CIDLC/CIDLC.mpc: + + Updated these two files. + Note: Only linux with boost/utility installed as package/rpm is + tested. + +Thu Feb 12 11:00:39 2004 Tao Lu + + * CIAO-INSTALL.html + * CCF/CCF/CIDL/CIDL.mpc + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc + * CCF/CCF/CompilerElements/CompilerElements.mpc + * CCF/CCF/IDL2/IDL2.mpc + * CCF/CCF/IDL3/IDL3.mpc + + Updated these files to set the static linkage. + +Thu Feb 12 10:31:23 2004 Tao Lu + + * CCF/CCF/CCF.mwc: + + Added this workspace file. + +Wed Feb 11 19:17:54 2004 Tao Lu + + * CIAO-INSTALL.html: + + Added this file for CIAO install/build instructions. + +Wed Feb 11 12:05:59 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Updated URLs to the Boost website. Fixed incorrect build + instruction for Windows. + +Wed Feb 11 11:36:08 2004 Balachandran Natarajan + + * examples/Hello/descriptors/run_test_debug.pl: + + A new script that uses -ORBdebuglevel while running the + component server. + + * examples/Hello/step-by-step.html: + + Added a pointer to the above script. + + Thanks to Gary Duzan and Praveen Sharma + for motivating this. + +Tue Feb 10 18:15:59 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Fixed bugs and updated links. + +Tue Feb 10 16:44:33 2004 Tao Lu + + * CIDLC/CIDLC.vcproj: + + Changed the include path. + +Tue Feb 10 16:28:53 2004 Jeff Parsons + + * cidlc/CIDLC.vcproj: + + Added '..' to include paths, to pick up inclusion of + ciao/Version.h. + + * cidlc/ServantHeaderGenerator.cpp: + * cidlc/ServantSourceGenerator.cpp: + + Fixed errors in generated environment variables. Thanks to + Edward Mulholland for reporting the + problems. + +Tue Feb 10 14:54:48 2004 Venkita Subramonian + + * ciao/Container_Impl.h: + * ciao/Container_Base.h: Changes to fix compile errors by adding + default arguments for static configuration related paramters in + the constructor. + + +Tue Feb 10 11:35:47 2004 Tao Lu + + * DnC/Deployment.idl: + + Added this file for the new DnC spec. + +Tue Feb 10 10:41:48 2004 Venkita Subramonian + + * tools/static_configurator/Static_Assembly_Visitors.{cpp,h}: + * tools/static_configurator/Static_Assembly_Parser.cpp: + * tools/static_configurator/Static_Assembly.h: Offline static + configuration parser to parse XML files into an intermediate C++ + header file which will be included by the online configuration + engine. + + * tools/static_configurator/Static_Configurator.mpc: + * tools/static_configurator/Static_Configurator.{h,cpp}: Online + configuration engine that reads the intermediate table created + by the offline parser. This is responsible for creating + component servers, homes, containers, components and + establishing connections between components. + + * ciao/Container_Base.{h,cpp}: Modifications for static + configuration. While installing a home, instead of loading the + entry point symbol from a DLL, the entry point function pointer + is obtained from a hashmap which is passed to the + container. This hashmap contains the name of the entry point and + the entry point function pointer. + + * ciao/Container_Impl.{h,cpp,inl}: + * ciao/ComponentServer_Impl.{h,cpp,inl}: Changed constructor + signatures to add a flag for static configuration and a hashmap + containing the static entry function pointers. These are + defaulted to 0. + +Fri Feb 6 15:54:26 2004 Jeff Parsons + + * examples/Hello/Hello_Base/Hello_Base.idl: + * examples/OEP/BasicSP/BasicSP.idl: + * examples/OEP/Display/HUDisplay.idl: + * performance-tests/Benchmark/RoundTrip/RoundTrip.idl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: + + Removed the 'ciao/' path prefix from inclusions of + Components.idl. + +Fri Feb 6 14:49:48 2004 Tao Lu + + * CIDLC/CIDLC.mpc: + * CCF/CCF/CIDL/CIDL.mpc + * CCF/CCF/IDL2/IDL2.mpc + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc + * CCF/CCF/CompilerElements/CompilerElements.mpc + * CCF/CCF/IDL3/IDL3.mpc + + Added reqires cidl in these mpc files. By default + cidl is not turned on, so MPC won't generate makefiles. + +Thu Feb 5 12:58:14 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + * CIDLC/README.html: + + Updated all URLs to point to the 'central location'. + +Wed Feb 4 14:58:05 2004 Tao Lu + + * ./CIDLC/CIDLC.mpc: + * ./CCF/CCF/CIDL/CIDL.mpc + * ./CCF/CCF/IDL2/IDL2.mpc + * ./CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc + * ./CCF/CCF/CompilerElements/CompilerElements.mpc + * ./CCF/CCF/IDL3/IDL3.mpc + + Added these mpc files to build CIDLC compiler. + The libpath of Boost and Utility is not fixed yet. + Need to test all the mpc files on both Linux/Windows. + +Wed Feb 4 13:58:36 2004 Jeff Parsons + + * ciao/CCM_Base.idl: + * ciao/CCM_Container.idl: + * ciao/CCM_Core.mpc: + * ciao/CCM_Deployment.idl: + * examples/Hello/Hello_Base/Hello_Base.idl: + * examples/OEP/BasicSP/BasicSP.idl: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp: + * examples/OEP/Display/HUDisplay.idl: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/server.cpp: + * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTrip.idl: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + * tests/temp/assembly/client.cpp: + * tests/temp/assembly/control.idl: + * tests/temp/assembly/control.mpc: + * tests/temp/assembly/server.cpp: + * tools/Assembly_Deployer/Assembly_Deployer.cpp: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Impl.h: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Service.idl: + * tools/Assembly_Deployer/Assembly_Visitors.h: + * tools/Assembly_Deployer/Deployment_Configuration.h: + * tools/ComponentServer/ComponentServer.cpp: + * tools/ComponentServer/ComponentServer_test_client.cpp: + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/Daemon_Commands.cpp: + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/Daemon_Commands.cpp: + * tools/ServerActivator/ServerActivator.cpp: + * tools/ServerActivator/ServerActivator_test_client.cpp: + * tools/XML_Helpers/XMLHelpers.mpc: + * tools/XML_Helpers/XML_Utils.h: + + - Removed all include paths except TAO_ROOT and CIAO_ROOT + for C++ and IDL compilers, from MPC files. + + - Modified includes in source and header files as necessary, + per the above changes. + + - Added missing ACE_ROOT/ace includes. + + - Made other modifications as necessary to MPC files to + eliminate build errors. + +Mon Feb 2 20:07:41 2004 Balachandran Natarajan + + * tools/XML_Helpers/Makefile.XML_Helpers: + + Removed RTConfiguration_Stub.cpp and included + RTConfigurationC.cpp for compilation. + +Mon Feb 2 20:00:07 2004 Balachandran Natarajan + + * tools/XML_Helpers/RTConfiguration.idl: + + Include RTCORBA_include.pidl instead of RTCORBA.pidl. + + * tools/XML_Helpers/RTConfiguration_Stubs.cpp: + + Removed the hacks in this file since they are no longer + necessary. + + * tools/XML_Helpers/XMLHelpers.mpc: + + Changed the order of inheritance to get the libraries in the + right order. + + All these should fix a problem reported by Diego Sevilla Ruiz + and as always thanks to him for reporting it. + +Sat Jan 31 18:26:24 2004 Balachandran Natarajan + + * tools/XML_Helpers/RTConfiguration.idl: + + Appended "tao" to the path for RTCORBA.pidl. + +Thu Jan 29 14:03:42 2004 Chad Elliott + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * tools/XML_Helpers/XMLHelpers.mpc: + + Updated these mpc files to work with IDL_Files as a custom build + type instead of a built-in build type. + +Thu Jan 29 12:30:52 2004 Tao Lu + + * step-by-step.html: + * Receiver/Receiver.mpc: + * Receiver/Receiver_exec.cpp: + * Receiver/Receiver_exec.h: + * Sender/Sender.mpc: + * Sender/Sender_exec.cpp: + * Sender/Sender_exec.h: + * descriptors/default.cad: + * descriptors/multi-receivers-default.cad: + * descriptors/run_test_multirecv.pl: + + Following changes have been added to resolve the EI.idl problem. + 1. All *EI.idl are removed. + 2. All provided facets are implemented by the way of + "composition". + 3. Added one more deployment scenario which has 2 instances of + the Receiver. + +Thu Jan 29 11:00:50 2004 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + + Reverted some more changes since they caused the C++ generated + code to break. + +Thu Jan 29 10:03:42 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Debian package libboost-dev apparently does not include regex. + Instead regex is provided as a separate libboost-regex-dev. + Added libboost-regex-dev as a required package to build CCF. + Thanks to Hans-Peter Bock + for reporting this. + +Wed Jan 28 17:49:06 2004 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + + Reverted back to SessionContext since it would be very hard + to fix C++ code to conform to this change. Will have to + do it later as part of C++ code refactoring. + +Wed Jan 28 13:21:00 2004 Chad Elliott + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + + Use the new qt and qt_moc base projects. The qt-min* base + projects have been removed and the functionality moved into qt and + qt_moc. The original qt and qt_moc base projects were dispersed + and became different base projects. + +Wed Jan 28 13:02:28 2004 Boris Kolpackov + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Implemented generation of additional interfaces that allow + separation between executor interfaces and composition type. + +Tue Jan 27 12:05:13 2004 Boris Kolpackov + + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/Sender_exec.h: + + New EI-less implementation. + + * CIDLC/CIDLC.sln: + * CIDLC/CIDLC.vcproj: + + Updated projects to compile with boost out-of-the-box. + +Tue Jan 27 11:33:39 2004 Tao Lu + + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/Sender.idl: + * examples/Hello/Sender/starter.cpp: + + Updated these files. + +Tue Jan 27 10:15:59 2004 Tao Lu + + * examples/Hello/step-by-step.html: + + Some format and trivial fix. + +Mon Jan 26 20:33:31 2004 Tao Lu + + * examples/Hello/step-by-step.html: + + Updated this file with new font. + +Fri Jan 23 10:36:27 2004 Boris Kolpackov + + * CCF/CCF/CCF.sln: + * CCF/CCF/CIDL/CIDL.vcproj: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + * CCF/CCF/CompilerElements/CompilerElements.vcproj: + * CCF/CCF/IDL2/IDL2.vcproj: + * CCF/CCF/IDL3/IDL3.vcproj: + + Updated projects to compile with boost out-of-the-box. + + * CCF/Documentation/Build.html: + + Added step-by-step instructions for building CCF on + Windows. Thanks to Tao Lu for helping me with this. + +Thu Jan 22 23:38:32 2004 Tao Lu + + * examples/OEP/Display/descriptors/DualDisplay.cad: + + Changed the name of the file. + +Wed Jan 21 11:16:31 2004 Boris Kolpackov + + * CCF/CCF/IDL2/Parsing/Recovery.hpp: + * CCF/CCF/IDL2/Traversal/ValueType.tpp: + * CCF/CCF/IDL3/Traversal/EventType.tpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Cosmetic changes. + +Wed Jan 21 10:17:22 2004 Boris Kolpackov + + * CCF/Makefile: + * CCF/CCF/Makefile: + * CCF/CCF/CIDL/Makefile: + * CCF/CCF/CIDL/Makefile.alt: + * CCF/CCF/CIDL/Makefile.archive: + * CCF/CCF/CIDL/Makefile.archive.alt: + * CCF/CCF/CIDL/SemanticAction/Makefile: + * CCF/CCF/CIDL/SemanticAction/Makefile.alt: + * CCF/CCF/CIDL/SemanticAction/Makefile.object: + * CCF/CCF/CIDL/SemanticAction/Makefile.object.alt: + * CCF/CCF/CIDL/SemanticAction/Impl/Makefile: + * CCF/CCF/CIDL/SemanticGraph/Makefile: + * CCF/CCF/CIDL/Traversal/Makefile: + * CCF/CCF/CodeGenerationKit/Makefile: + * CCF/CCF/CompilerElements/Makefile: + * CCF/CCF/IDL2/Makefile: + * CCF/CCF/IDL2/Makefile.alt: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/Makefile.archive.alt: + * CCF/CCF/IDL2/SemanticAction/Makefile: + * CCF/CCF/IDL2/SemanticAction/Makefile.alt: + * CCF/CCF/IDL2/SemanticAction/Makefile.object: + * CCF/CCF/IDL2/SemanticAction/Makefile.object.alt: + * CCF/CCF/IDL2/SemanticAction/Impl/Makefile: + * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL2/SemanticGraph/Makefile: + * CCF/CCF/IDL2/Traversal/Makefile: + * CCF/CCF/IDL2/Traversal/Makefile.alt: + * CCF/CCF/IDL3/Makefile: + * CCF/CCF/IDL3/Makefile.alt: + * CCF/CCF/IDL3/Makefile.archive: + * CCF/CCF/IDL3/Makefile.archive.alt: + * CCF/CCF/IDL3/SemanticAction/Makefile: + * CCF/CCF/IDL3/SemanticAction/Impl/Makefile: + * CCF/CCF/IDL3/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL3/SemanticGraph/Makefile: + * CCF/CCF/IDL3/Traversal/Makefile: + * CIDLC/Makefile: + + Added ACE-style makefiles. + + * CCF/CCF/CIDL/Parser.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/Token.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Exception.hpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.hpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.hpp: + * CCF/CCF/IDL2/SemanticGraph/Translation.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL3/SemanticGraph/Component.hpp: + * CCF/CCF/IDL3/SemanticGraph/Home.hpp: + + Cosmetic changes. + + * CCF/Documentation/Build.html: + + Fixed a typo. + +Mon Jan 19 10:08:15 2004 Boris Kolpackov + + * CIDLC/Makefile.alt: + * CIDLC/cidlc.cpp: + + Added --version command line option to CIDL compiler. Thanks + to Craig Rodrigues for the suggestion. + +Thu Jan 15 20:17:17 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Fixed some typos. Thanks to Craig Rodrigues for reporting + them. + +Thu Jan 15 17:53:38 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Updated build instructions for Debian GNU/Linux and RedHat + OS family. + +Thu Jan 15 14:39:35 2004 Boris Kolpackov + + * CCF/Config.rules: + + Fixed incorrect initialization of UTILITY_BUILD_RULES when + UTILITY_ROOT is set. Thanks to Gary Duzan + for reporting this. + +Thu Jan 15 14:30:44 2004 Balachandran Natarajan + + * README: + + Updated the file with information about CIDLC. Thanks to Gary + Duzan for motivating this. + +Wed Jan 14 18:50:00 2004 Balachandran + + * CIAO version 0.4 released. + +Wed Jan 14 15:22:13 2004 Balachandran Natarajan + + * CIDLC/README + * CIDLC/README.html: + + HTML'ised README into a new file README.html and removed the + ascii equivalent of it. + +Wed Jan 14 11:30:58 2004 Balachandran Natarajan + + * docs/releasenotes/index.html: + * docs/index.html: + + Updated releasenotes. + +Wed Jan 14 10:59:10 2004 Balachandran Natarajan + + * docs/releasenotes: + + New directory. + + * docs/releasenotes/index.html: + + The actual document is placed here to be consistent with TAO. + + * docs/releasenotes.html: + + Removed the file since it has been moved into a new directory. + +Tue Jan 13 20:54:31 2004 Balachandran Natarajan + + * ChangeLog: + + Lots of entries had gotten removed. Fixed them. + +Tue Jan 13 11:24:55 2004 Boris Kolpackov + + * CCF/Config.rules: + + Added 'default-if-not-set' value for UTILITY_BUILD_RULES to + look into well-known location where RedHat and Debian packages + are installed. + +Sat Jan 10 11:58:05 2004 Balachandran Natarajan + + * CIAO.mwc: + + Fixed a typo in the previous checkin. + +Sat Jan 10 11:08:42 2004 Balachandran Natarajan + + * CIAO.mwc: + + We removed all the mpc files for CIDLC. Needed to remove that + from the workspace file too. + +Fri Jan 9 16:01:55 2004 Jeff Parsons + + * CIDLC/cidlc.cpp: + + Changed the error return value from -1 to 1. For some reason, + Visual Studio does not detect the -1 return value and thinks + everything is fine. + +Fri Jan 9 15:45:33 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Added some clarifications suggested by Tao Lu. + +Fri Jan 9 14:46:41 2004 Jeff Parsons + + * CCF/CCF/CIDL/CIDL.vcproj: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + * CCF/CCF/IDL2/IDL2.vcproj: + + Added new files for union support and updated other project + settings. + + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/izeTypeCalculator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added support for unions to the back end, and fixed a bug in + generating the servant name when the component is declared at + file scope. + +Fri Jan 9 12:25:37 2004 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp: + + Fixed a bug with union member handling in semantic + actions. + +Fri Jan 9 12:20:32 2004 Boris Kolpackov + + * CCF/Config.rules: + * CCF/Makefile.alt: + * CCF/CCF/Makefile.alt: + * CCF/CCF/CIDL/Makefile.alt: + * CCF/CCF/CIDL/Makefile.archive: + * CCF/CCF/CIDL/SemanticAction/Makefile.alt: + * CCF/CCF/CIDL/SemanticAction/Makefile.object: + * CCF/CCF/CIDL/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/CIDL/SemanticGraph/Makefile.alt: + * CCF/CCF/CIDL/Traversal/Makefile.alt: + * CCF/CCF/CodeGenerationKit/Makefile.alt: + * CCF/CCF/CompilerElements/Makefile.alt: + * CCF/CCF/IDL2/Makefile.alt: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/SemanticAction/Makefile.alt: + * CCF/CCF/IDL2/SemanticAction/Makefile.object: + * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL2/SemanticGraph/Makefile.alt: + * CCF/CCF/IDL2/Traversal/Makefile.alt: + * CCF/CCF/IDL3/Makefile.alt: + * CCF/CCF/IDL3/Makefile.archive: + * CCF/CCF/IDL3/SemanticAction/Makefile.alt: + * CCF/CCF/IDL3/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL3/SemanticGraph/Makefile.alt: + * CCF/CCF/IDL3/Traversal/Makefile.alt: + * CCF/Documentation/Build.html: + * CCF/Example/Makefile.alt: + * CCF/Example/CIDL/Makefile.alt: + * CCF/Example/CIDL/LocalExecutorMapping/Makefile.alt: + * CCF/Example/CodeGenerationKit/Makefile.alt: + * CCF/Example/CodeGenerationKit/Indentation/Makefile.alt: + * CCF/Example/CodeGenerationKit/Indentation/IDL/Makefile.alt: + * CCF/Example/CodeGenerationKit/Indentation/XML/Makefile.alt: + * CCF/Example/ComponentDeploymentDescriptor/Makefile.alt: + * CCF/Example/IDL2/Makefile.alt: + * CCF/Example/IDL2/CxxMapping/Makefile.alt: + * CCF/Test/Makefile.alt: + * CCF/Test/CIDL/Makefile.alt: + * CCF/Test/CIDL/Compiler/Makefile.alt: + * CCF/Test/CompilerElements/Makefile.alt: + * CCF/Test/CompilerElements/CPP/Makefile.alt: + * CCF/Test/IDL2/Makefile.alt: + * CCF/Test/IDL2/Compiler/Makefile.alt: + * CCF/Test/IDL2/SemanticGraph/Makefile.alt: + * CCF/Test/IDL2/SemanticGraph/HandBuilt/Makefile.alt: + * CCF/Test/IDL2/Traversal/Makefile.alt: + * CCF/Test/IDL2/Traversal/Recreate/Makefile.alt: + * CCF/Test/IDL3/Makefile.alt: + * CCF/Test/IDL3/Compiler/Makefile.alt: + * CIDLC/Makefile.alt: + + Added 'flexibility' variables to Config.rules and + updated makefiles to reflect this change. + +Thu Jan 8 15:33:31 2004 Tao Lu + + * CCF/CCF/CCF.mwc + * CCF/CCF/CIDL/CIDL.mpc + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc + * CCF/CCF/CompilerElements/CompilerElements.mpc + * CCF/CCF/IDL2/IDL2.mpc + * CCF/CCF/IDL3/IDL3.mpc + * CCF/CCF.mwc + * CCF/Example/CIDL/CIDL.mwc + * CCF/Example/CIDL/LocalExecutorMapping/LocalExecutorMapping.mpc + * CCF/Example/Example.mwc + * CCF/Example/CodeGenerationKit/Indentation/IDL/IDL.mpc + * CCF/Example/CodeGenerationKit/Indentation/XML/XML.mpc + * CCF/Example/CodeGenerationKit/Indentation/Indentation.mwc + * CCF/Example/CodeGenerationKit/CodeGenerationKit.mwc + * CIDLC/cidlc.mpc + + Removed all these MPC files since CIDL is not working with MPC yet. + +Thu Jan 8 15:10:24 2004 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Union.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp: + * CCF/CCF/IDL2/SemanticGraph/Makefile.alt: + * CCF/CCF/IDL2/SemanticGraph/Union.cpp: + * CCF/CCF/IDL2/SemanticGraph/Union.hpp: + * CCF/CCF/IDL2/Traversal/Struct.hpp: + * CCF/CCF/IDL2/Traversal/Union.cpp: + * CCF/CCF/IDL2/Traversal/Union.hpp: + + Added support for union. + +Thu Jan 8 14:47:22 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Changed default suffix for generating #include of C++ header + file generated from executor mapping IDL file, similar to the + change in + + Thu Jan 8 12:00:16 2004 Jeff Parsons . + +Thu Jan 8 13:49:10 2004 Jeff Parsons + + * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/OEP/BasicSP/BMDevice/BMDevice.mpc: + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/BasicSP/EC/EC.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: + + Reverted the changes in + + Wed Jan 7 11:20:13 2004 Jeff Parsons + + since these command line options (include paths) are now part of + the default command line. + +Thu Jan 8 12:00:16 2004 Jeff Parsons + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Changed default suffix for the generated executor mapping IDL file + from '_exec.idl' to 'E.idl'. + + * ciao/CCM_Core.mpc: + + Added header files that are unmatched by a corresponding .cpp file. + +Wed Jan 7 11:20:13 2004 Jeff Parsons + + * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/OEP/BasicSP/BMDevice/BMDevice.mpc: + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/BasicSP/EC/EC.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: + + Added include path command line options for the CIDL compiler. + +Wed Jan 7 09:56:39 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Fixed a typo. + +Tue Jan 6 18:25:24 2004 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + + Fixed bug in Scope::add_edge_right (Extends&). + +Tue Jan 6 17:26:33 2004 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp: + + Added support for lookup in inherited/supported + scopes. + +Tue Jan 6 11:35:27 2004 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantSourceGenerator.hpp: + + Added virtual destructors to classes ServantHeaderEmitter and + ServantSourceEmitter to eliminate warnings on g++ 3.3. + +Tue Jan 6 11:23:29 2004 Jeff Parsons + + * examples/OEP/BasicSP/EC/client.cpp: + * examples/OEP/BasicSP/EC/controller.cpp: + + Replaced occurrences of cerr with ACE_ERROR_RETURN. + + * examples/OEP/Display/GPS/GPS_exec.cpp: + * examples/OEP/Display/GPS/GPS_tracing_exec.cpp: + + Added #include of ace/OS_NS_time.h. + +Tue Jan 6 10:16:51 2004 Balachandran Natarajan + + * tools/Assembly_Deployer/Assembly_Manager.cpp: + + Fixed a warning using _var. + +Mon Jan 5 21:38:53 2004 Boris Kolpackov + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Fixed uninitialized variable bug that resulted in generation + of unused modules. + + * CCF/Example/CIDL/LocalExecutorMapping/test-0.idl: + + Added unused module to the test case. + + * CIDLC/cidlc.cpp: + + Cosmetic chnages. + +Mon Jan 5 20:31:18 2004 Jeff Parsons + + * CIDLC/RepositoryIdGenerator.cpp: + * CIDLC/RepositoryIdGenerator.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed typos in servant code generation. + +Mon Jan 5 19:34:44 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Updated Utility library url. + +Mon Jan 5 19:16:40 2004 Boris Kolpackov + + * CIDLC/Makefile.alt: + + Added updated generators to the build. + +Mon Jan 5 18:48:54 2004 Boris Kolpackov + + * CCF/Test/IDL2/Traversal/Recreate/Makefile.alt: + + Fixed a typo. + +Mon Jan 5 18:27:12 2004 Boris Kolpackov + + * CCF/Config.rules: + + Added default values to the paths. + +Mon Jan 5 15:47:04 2004 Boris Kolpackov + + * CIDLC/README: + + Updated build instructions. + +Mon Jan 5 14:32:17 2004 Boris Kolpackov + + * CCF/Documentation/Build.html: + + Updated build instructions. + +Mon Jan 5 01:44:13 2004 Jeff Parsons + + * CCF/CCF/CompilerElements/CompilerElements.vcproj: + * CCF/CCF/IDL2/IDL2.vcproj: + * CCF/CCF/IDL3/IDL3.vcproj: + + Added files recently checked in to projects. + + * CIDLC/CIDLC.vcproj: + * CIDLC/Collectors.hpp: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/DescriptorGenerator.hpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantGenerator.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ServantSourceGenerator.hpp: + * CIDLC/SizeTypeCalculator.cpp: + * CIDLC/SizeTypeCalculator.hpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + * CIDLC/cidlc.cpp: + + Overhauled the entire backend to integrate with the new + frontend traversal framework, and with recently supported + features. + +Sun Jan 4 17:48:50 2004 Balachandran Natarajan + + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/RTComponentServer/RTConfig_Manager.cpp: + + Fixed warnings with g++ builds. + +Sat Jan 3 16:34:35 2004 Boris Kolpackov + + * CCF/CCF/IDL2/Traversal/Operation.hpp: + * CCF/CCF/IDL2/Traversal/Operation.tpp: + * CCF/CCF/IDL3/Traversal/Home.cpp: + * CCF/CCF/IDL3/Traversal/Home.hpp: + + Added receives_none() member function. + +Fri Jan 2 16:09:32 2004 Balachandran Natarajan + + * ciao/Container_Base.cpp: + + Fixed a compile error in single threaded configuration. + + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/ComponentServer/ComponentServer.cpp: + * tools/XML_Helpers/RTConfig_Handlers.cpp: + + Fixed more warnings with g++, mostly from the wrong usage of + _var's. + +Fri Jan 2 15:36:07 2004 Boris Kolpackov + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.hpp: + + Changed pass-by-value to pass-by-const-ref for fs::path argument. + +Fri Jan 2 14:41:35 2004 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + + Fixed small recognition bug. + + * CCF/CCF/IDL2/Traversal/Attribute.cpp: + * CCF/CCF/IDL2/Traversal/Attribute.hpp: + + Added traversal or readonly attribute. + + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + + Added support for readonly attribute. + + * CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig: + * CCF/Example/CIDL/LocalExecutorMapping/test-1.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig: + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + + Updated tests and results. + + * CIDLC/ExecutorMappingGenerator.cpp: + + Added support for readonly attribute. + +Fri Jan 2 13:44:06 2004 Boris Kolpackov + + * CCF/CCF/CompilerElements/Preprocessor.cpp: + + Removed debug print. + + * CCF/Documentation/TODO: + + Updated. + +Fri Jan 2 12:59:05 2004 Chad Elliott + + * performance-tests/Benchmark/Benchmark.mpc: + + Prefixed the project name with the '*' operator to avoid project + name conflicts. + +Thu Jan 1 20:27:30 2004 Balachandran Natarajan + + * ciao/Makefile: + + Updated dependancies since we have now have the Makefiles in the + repo. + +Thu Jan 1 19:58:26 2004 Balachandran Natarajan + + * tools/XML_Helpers/Cascadable_DocHandler.cpp: + + Fixed typo. + +Thu Jan 1 20:12:03 2004 Balachandran Natarajan + + * tools/XML_Helpers/XML_Utils.cpp: + + Fixed a unused variable warning. + +Thu Jan 1 20:05:59 2004 Balachandran Natarajan + + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/ComponentServer/ComponentServer.cpp: + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/Daemon_Impl.cpp: + * tools/Daemon/controller_i.cpp: + * tools/RTComponentServer/ComponentServer_Task.cpp: + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/RTComponentServer/RTServer_Impl.cpp: + * tools/ServerActivator/ServerActivator.cpp: + * tools/Simple_Component_Server/Simple_Component_Server.cpp: + * tools/Simple_Component_Server/Simple_Server_i.cpp: + * tools/Simple_Component_Server/sample_client.cpp: + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/Assembly_Spec.cpp: + * tools/XML_Helpers/Assembly_Spec.h: + * tools/XML_Helpers/Cascadable_DocHandler.cpp: + + More fixes to remove compile errors when exceptions are set + to 0. + +Thu Jan 1 19:32:23 2004 Balachandran Natarajan + + * ciao/ComponentServer_Impl.cpp: + + Fixed typo in the last checkin. + +Thu Jan 1 19:28:58 2004 Balachandran Natarajan + + * ciao/ComponentInstallation_Impl.cpp: + * ciao/ComponentServer_Impl.cpp: + * ciao/Container_Base.cpp: + * ciao/Container_Base.inl: + * ciao/Container_Impl.cpp: + * ciao/Container_Impl.inl: + * ciao/Cookies.cpp: + * ciao/ServerActivator_Impl.cpp: + + Bunch of fixes to remove compile errors when exceptions are set + to 0. + +Thu Jan 1 18:46:02 2004 Balachandran Natarajan + + * tools/XML_Helpers/Cascadable_DocHandler.i: + + Fixed compile errors when exceptions are turned off. + +Thu Jan 1 18:41:06 2004 Balachandran Natarajan + + * Makefile: + + Do not compile CIAO with static_libs_only=1. + +Thu Jan 1 13:53:53 2004 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp (class Nameable) + + Added support for iteration over Names edges. + + +Thu Jan 1 17:23:44 UTC 2004 Don Hinton + + * Makefile: + Moved coreclean target to bottom of file so that the all target + will come first. Added ALT_DIRS variable that contains CIDLC, + examples, and tests directories that should not be built by + default. Set the DIRS variable = CORE_DIRS by default and add + ALT_DIRS only if BOOST_ROOT and UTILITY_ROOT have been set. + This will need to be adjusted a bit, since the ALT_DIRS don't + have regular Makefiles right now, but it's a start and will + allow all the *nix builds to start building the CORE_DIRS in the + regular autobuilds. + + * ciao/Makefile: + * ciao/Makefile.CIAO_Client: + * ciao/Makefile.CIAO_Container: + * ciao/Makefile.CIAO_Server: + * tools/Makefile: + * tools/Assembly_Deployer/Makefile: + * tools/Assembly_Deployer/Makefile.Assembly_Deployer: + * tools/Assembly_Deployer/Makefile.Assembly_Manager: + * tools/ComponentServer/Makefile: + * tools/ComponentServer/Makefile.ComponentServer: + * tools/ComponentServer/Makefile.ComponentServer_test_client: + * tools/Daemon/Makefile: + * tools/Daemon/Makefile.CIAO_Daemon: + * tools/Daemon/Makefile.DaemonController: + * tools/RTComponentServer/Makefile: + * tools/RTComponentServer/Makefile.RTComponentServer: + * tools/ServerActivator/Makefile: + * tools/ServerActivator/Makefile.ServerActivator: + * tools/ServerActivator/Makefile.ServerActivator_test_client: + * tools/Simple_Component_Server/Makefile: + * tools/Simple_Component_Server/Makefile.Simple_Component_Server: + * tools/Simple_Component_Server/Makefile.Simple_Component_Server_test_client: + * tools/Simple_Component_Server/Makefile.Simple_Server_Stub: + * tools/XML_Helpers/Makefile: + * tools/XML_Helpers/Makefile.Helper_Test: + * tools/XML_Helpers/Makefile.XML_Helpers: + Added new Makefiles generated by MPC and lightly modified to + remove unneeded variables and targets (mainly realclean, and idl + related ones that are OBE due to recent fixes to the underlying + make system.). + +Wed Dec 31 18:13:21 2003 Boris Kolpackov + + * CCF/CCF/CompilerElements/Preprocessor.cpp: + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Exception.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Interface.hpp: + * CCF/CCF/IDL2/SemanticAction/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Module.hpp: + * CCF/CCF/IDL2/SemanticAction/Native.hpp: + * CCF/CCF/IDL2/SemanticAction/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Struct.hpp: + * CCF/CCF/IDL2/SemanticAction/TypeId.hpp: + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/ValueType.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Exception.cpp: + * CCF/CCF/IDL2/SemanticGraph/Exception.hpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp: + * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4: + * CCF/CCF/IDL2/SemanticGraph/Interface.cpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.hpp: + * CCF/CCF/IDL2/SemanticGraph/Member.cpp: + * CCF/CCF/IDL2/SemanticGraph/Module.cpp: + * CCF/CCF/IDL2/SemanticGraph/Name.cpp: + * CCF/CCF/IDL2/SemanticGraph/Name.hpp: + * CCF/CCF/IDL2/SemanticGraph/Native.cpp: + * CCF/CCF/IDL2/SemanticGraph/Native.hpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.cpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.hpp: + * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.cpp: + * CCF/CCF/IDL2/SemanticGraph/Translation.cpp: + * CCF/CCF/IDL2/SemanticGraph/Translation.hpp: + * CCF/CCF/IDL2/SemanticGraph/TypeId.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp: + * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CCF/CCF/IDL2/Traversal/Interface.tpp: + * CCF/CCF/IDL2/Traversal/ValueType.cpp: + * CCF/CCF/IDL2/Traversal/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/ValueType.tpp: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/IDL3/SemanticAction/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/Consumes.hpp: + * CCF/CCF/IDL3/SemanticAction/Emits.hpp: + * CCF/CCF/IDL3/SemanticAction/EventType.hpp: + * CCF/CCF/IDL3/SemanticAction/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Home.hpp: + * CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp: + * CCF/CCF/IDL3/SemanticAction/Provides.hpp: + * CCF/CCF/IDL3/SemanticAction/Publishes.hpp: + * CCF/CCF/IDL3/SemanticAction/Uses.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp: + * CCF/CCF/IDL3/SemanticGraph/Component.hpp: + * CCF/CCF/IDL3/SemanticGraph/Elements.cpp: + * CCF/CCF/IDL3/SemanticGraph/EventType.cpp: + * CCF/CCF/IDL3/SemanticGraph/Home.hpp: + * CCF/CCF/IDL3/Traversal/EventType.tpp: + * CCF/CCF/CIDL/SemanticAction/Composition.hpp: + * CCF/CCF/CIDL/SemanticAction/Factory.hpp: + * CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp: + * CCF/CCF/CIDL/SemanticGraph/Elements.cpp: + * CCF/CCF/CIDL/SemanticGraph/Executor.cpp: + * CCF/Documentation/TODO: + + Minor cosmetic changes and cleanups. + + +Wed Dec 31 12:27:16 2003 Tao Lu + + * docs/tutorial/Hello/hello.mpc: + Updated this file to avoid duplicated project names in + MPC generated solution file for VC. + +Wed Dec 31 10:16:17 2003 Boris Kolpackov + + * CIAO/ciao/Component_Base.idl: + + Replaced inclusion of IFR_Client/Interface.pidl with orb.idl + since it has all that's needed. + +Tue Dec 30 17:47:49 2003 Boris Kolpackov + + * ciao/CCM_Base.idl: + + Temporarily commented import declaration even though it is + conditionally commented out. Current CIDLC's preprocessor + does not handle conditional compilation. + +Tue Dec 30 17:03:27 2003 Boris Kolpackov + + * CCF/CCF/CompilerElements/Diagnostic.hpp: + * CCF/CCF/CompilerElements/TokenStream.hpp: + + Cosmetic changes. + + + * CCF/CCF/CompilerElements/Makefile.alt: + * CCF/CCF/CompilerElements/Preprocessor.cpp: + * CCF/CCF/CompilerElements/Preprocessor.hpp: + * CCF/CCF/CompilerElements/PreprocessorToken.cpp: + * CCF/CCF/CompilerElements/PreprocessorToken.hpp: + + New (though not very capable) preprocessor for the time being. + + + * CCF/CCF/IDL2/SemanticAction/Native.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp: + * CCF/CCF/IDL2/SemanticGraph/Native.cpp: + * CCF/CCF/IDL2/SemanticGraph/Native.hpp: + * CCF/CCF/IDL2/Traversal/Native.cpp: + * CCF/CCF/IDL2/Traversal/Native.hpp: + + Added support for IDL2 native feature. + + * CCF/CCF/IDL2/SemanticAction/ValueType.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp: + + Extended support for IDL2 valuetype feature. + + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Interface.hpp: + * CCF/CCF/IDL2/SemanticAction/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp: + * CCF/CCF/IDL2/SemanticGraph/Makefile.alt: + * CCF/CCF/IDL2/SemanticGraph/Operation.cpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.hpp: + * CCF/CCF/IDL2/Traversal/Fundamental.hpp: + * CCF/CCF/IDL2/Traversal/Makefile.alt: + + Cosmetic changes. + + + * CCF/CCF/IDL3/SemanticAction/EventType.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp: + + Added support for IDL3 eventtype feature. + + * CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp: + + Added support for IDL3 home finder feature. + + * CCF/CCF/IDL3/LexicalAnalyzer.cpp: + * CCF/CCF/IDL3/LexicalAnalyzer.hpp: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/IDL3/Parser.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp: + + Cosmetic changes. + + + * CCF/CCF/CIDL/LexicalAnalyzer.cpp: + * CCF/CCF/CIDL/LexicalAnalyzer.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/CIDL/SemanticGraph/Composition.cpp: + * CCF/CCF/CIDL/SemanticGraph/Composition.hpp: + + Cosmetic changes. + + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/Makefile.alt: + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + * CCF/Example/IDL2/CxxMapping/Makefile.alt: + * CCF/Example/IDL2/CxxMapping/driver.cpp: + * CCF/Test/Makefile.alt: + * CCF/Test/CIDL/Compiler/GeneratorImpl.hpp: + * CCF/Test/CIDL/Compiler/Makefile.alt: + * CCF/Test/CIDL/Compiler/driver.cpp: + * CCF/Test/CompilerElements/Makefile.alt: + * CCF/Test/CompilerElements/CPP/Makefile.alt: + * CCF/Test/CompilerElements/CPP/driver.cpp: + * CCF/Test/IDL2/Compiler/Makefile.alt: + * CCF/Test/IDL2/Compiler/driver.cpp: + * CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp: + * CCF/Test/IDL3/Compiler/Makefile.alt: + * CCF/Test/IDL3/Compiler/driver.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/cidlc.cpp: + + Updated to reflect changes above. + + + * CCF/Documentation/TODO: + + Reflected new achievements. + + +Tue Dec 30 13:53:20 2003 Tao Lu + + * examples/Philosophers/Philosophers.idl: + * examples/Philosophers/README: + Moved this unfinished example from examples/handcrafted here. + +Tue Dec 30 13:39:00 2003 Tao Lu + + * ChangeLog: + Updated my ChangeLog entries to the correct format. + Thanks for the help from Bala and Boris. + +Tue Dec 30 11:42:08 2003 Tao Lu + + * examples/handcrafted/examples.mwc: + Removed this file since MPC works recursively now. + +Tue Dec 30 11:28:43 2003 Tao Lu + + * exmaples/handcrafted/BasicSP: + Removed this directory. This example has been moved to + examples/OEP/BasicSP and been modified to use the CIDL compiler. + +Tue Dec 30 11:26:24 2003 Tao Lu + + * examples/handcrafted/Philosophers: + Removed this directory. + +Tue Dec 30 11:20:39 2003 Tao Lu + + * examples/handcrafted/Hello: + Removed this directory. This example has been moved to + docs/tutorial/Hello and been modified to use the CIDL compiler. + +Tue Dec 30 10:56:03 2003 Tao Lu + + * examples/handcrafted/Display: + Removed this directory. This example has been moved to + examples/OEP/Display and been modified to use the CIDL compiler. + +Tue Dec 23 16:26:19 2003 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/Operation.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp: + * CCF/CCF/IDL2/SemanticGraph/Interface.hpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.cpp: + * CCF/CCF/IDL2/SemanticGraph/Operation.hpp: + * CCF/CCF/IDL2/Traversal/Operation.cpp: + * CCF/CCF/IDL2/Traversal/Operation.hpp: + * CCF/CCF/IDL2/Traversal/Operation.tpp: + * CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp: + + Added support for oneway operations. + + * CCF/CCF/IDL3/LexicalAnalyzer.cpp: + * CCF/CCF/IDL3/Makefile.archive: + * CCF/CCF/IDL3/Parser.cpp: + * CCF/CCF/IDL3/Parser.hpp: + * CCF/CCF/IDL3/SemanticAction.hpp: + * CCF/CCF/IDL3/SemanticAction/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Makefile.alt: + * CCF/CCF/IDL3/SemanticGraph/Home.cpp: + * CCF/CCF/IDL3/SemanticGraph/Home.hpp: + + Added support for home finders. + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + + Added support for feature mentioned above. + + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + + Added coverage for features mentioned above. + + * CCF/Documentation/TODO: + + Reflected new achievements. + +Tue Dec 23 12:03:27 2003 Boris Kolpackov + + * CIDLC/CIDLC.vcproj: + + Updated VC7.1 projects. Also temporarily excluded from the + build generators that are still to be ported. + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.cpp: + + Changed 'interface' to 'interface_' since VC7.1 naively believes + that interface is an alias for struct. + +Tue Dec 23 11:34:56 2003 Boris Kolpackov + + * CCF/CCF/CIDL/CIDL.vcproj: + * CCF/CCF/IDL2/IDL2.vcproj: + * CCF/CCF/IDL3/IDL3.vcproj: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + * CCF/CCF/CompilerElements/CompilerElements.vcproj: + + Updated VC7.1 projects. + + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/CCF/IDL2/SemanticGraph/Elements.hpp: + * CCF/CCF/IDL2/SemanticGraph/Graph.hpp: + * CCF/CCF/IDL2/SemanticGraph/Graph.tpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp: + + Got rid of some warnings. + +Tue Dec 23 10:03:38 2003 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SemanticGraph.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticGraph/Enum.cpp: + * CCF/CCF/IDL2/SemanticGraph/Enum.hpp: + * CCF/CCF/IDL2/SemanticGraph/Makefile.alt: + * CCF/CCF/IDL2/Traversal/Enum.cpp: + * CCF/CCF/IDL2/Traversal/Enum.hpp: + + Added support for IDL enum type. + + * CCF/CCF/IDL2/SemanticGraph/Member.hpp: + * CCF/CCF/IDL2/SemanticGraph/Struct.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp: + * CCF/CCF/IDL2/Traversal/Attribute.hpp: + + Cosmetic changes. + +Mon Dec 22 16:50:18 2003 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.hpp: + + New version of local executor mapping generator. + + * CIDLC/cidlc.cpp: + + New version of CIDL compiler driver with temporarily disabled + generators that require porting. + + * CIDLC/Makefile.alt: + + Temporarily disabled generators that require porting. + +Mon Dec 22 16:26:21 2003 Boris Kolpackov + + * CCF: + + Added new version of CCF. + +Mon Dec 22 15:35:19 2003 Boris Kolpackov + + * CCF: + + Removed (through cvs, not physically) previous version in + preparation for commitment of the new version. + +Thu Dec 18 09:57:50 2003 Balachandran + + * CIAO version 0.3.6 released. + +2003-12-17 Tao Lu + + * examples/Hello/step-by-step.html: + + Added this html file for explaination of the step by step tutorial. + +Tue Dec 16 18:25:01 2003 Tao Lu + + * docs/tutorial/Hello/README: + * docs/tutorial/Hello/config: + * docs/tutorial/Hello/CIAO_Installation_Data.ini: + * docs/tutorial/Hello/hello.idl: + * docs/tutorial/Hello/hello.cidl: + * docs/tutorial/Hello/hello.mpc: + * docs/tutorial/Hello/hello.csd: + * docs/tutorial/Hello/hello.ssd: + * docs/tutorial/Hello/hello_exec.cpp: + * docs/tutorial/Hello/hello_exec.h: + * docs/tutorial/Hello/hello_stub_export.h: + * docs/tutorial/Hello/hello_svnt_export.h: + * docs/tutorial/Hello/hello_exec_export.h: + * docs/tutorial/Hello/client.cpp: + * docs/tutorial/Hello/simple_client.cpp: + * docs/tutorial/Hello/run_test.pl: + * docs/tutorial/Hello/run_simple_test.pl: + + Changed Nanbor's handcrafted helloworld example to use the CIDL compiler. + Stardard CIAO naming is used (_svnt, _exec etc.). + +Tue Dec 16 14:14:59 2003 Tao Lu + + * docs/tutorial/hello/index.html: + + Removed this file. We will use Nanbor's Hello example in the tutorial. + The step-by-step example will use another name and be kept in CIAO/examples. + +Mon Dec 8 16:14:59 2003 Balachandran Natarajan + + * docs/todo.html: + * docs/RT-Extension.html: + + Updated files. + +2003-12-08 Tao Lu + + * examples/Hello/Receiver/Receiver_svnt.h: + * examples/Hello/Sender/Sender_svnt.h: + + Removed two generated files. + +Sun Dec 7 20:38:55 2003 Balachandran Natarajan + + * examples/Hello/Sender/starter.cpp: + * examples/Hello/Hello_Base/Hello_Base.idl: + + Fixed fuzz errors. + +Sun Dec 7 20:32:41 2003 Balachandran Natarajan + + * examples/Hello/Receiver/Receiver_svnt.h: + * examples/Hello/Sender/Sender_svnt.h: + * examples/Hello/descriptors/run_test_default.pl: + + Fixed fuzz errors. + +Wed Dec 3 10:55:41 2003 Arvind S. Krishna + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: + Changed comment to indicate that the interface uses a reference and + not porvides it. Thanks to Gautam Thaker for pointing this out. + +Wed Dec 3 12:25:20 2003 Arvind S. Krishna + + * performance-tests/Benchmark/NOTE.txt: + * performance-tests/Benchmark/descriptors/NOTE.txt: + Moved file to the right directory and updated name of the .cad file + to the right one. Thanks to Gautam Thaker for pointing this out. + + +Tue Dec 2 18:40:59 2003 Tao Lu + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/descriptors/run_test_default.pl: + * examples/Hello/descriptors/run_test_remote.pl: + Added two auto run perl scripts and fixed the bug in the + Receiver_exec which caused the OBV run time error when + the Sender and the Receiver are not collocated. + +Tue Dec 2 18:32:23 2003 Tao Lu + + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/descriptors/run_test_default.pl: + * examples/Hello/descriptors/run_test_remote.pl: + Added two auto run perl scripts and fixed the bug in the + Receiver_exec which caused the OBV run time error when + the Sender and the Receiver are not collocated. + +Mon Dec 1 17:49:43 2003 Tao Lu + + * examples/Hello/descriptors/remote.cad: + * examples/Hello/descriptors/remote.dat: + Added these 2 files for the example to run on remote setting. + +Mon Dec 1 02:35:18 2003 Tao Lu + + * examples/Hello/Sender/Sender.mpc: + Added the empty IDL_Files part in the starter project to get rid + of the linking error(MPC generates makefile which links in + unnecessary linkage reqirements). Also deleted all the Makefiles + in the example. The user should run mwc.pl to regenerate the + Makefile before building the project. + +Sun Nov 30 20:51:06 2003 Tao Lu + + * examples/Hello/Sender/Makefile.Hello_Starter: + Added this makefile which will make the starter program. + +Sun Nov 30 11:47:29 2003 Tao Lu + + * examples/Hello: + Moved the starter.cpp into the Sender project to so the + dependency will be set correctly. + +Sat Nov 29 15:57:54 UTC 2003 Johnny Willemsen + + * examples/handcrafted/BasicSP/*.mpc: + * examples/handcrafted/Display/*.mpc: + Removed all MPC files for this directory and sub directories + because these examples are going to be removed and at this moment + these MPC files cause problems with the MPC generation because + of duplicate names. + +Fri Nov 28 14:09:56 2003 Tao Lu + + * examples/Hello/README: + * examples/Hello/Makefile: + * examples/Hello/Hello_Base/Hello_Base_stub_export.h: + * examples/Hello/Hello_Base/Makefile.Hello_Base_stub: + * examples/Hello/Hello_Base/Hello_Base.idl: + * examples/Hello/Hello_Base/Hello_Base_svnt_export.h: + * examples/Hello/Hello_Base/Makefile.Hello_Base_svnt: + * examples/Hello/Hello_Base/Hello_Base.mpc: + * examples/Hello/Hello_Base/Makefile: + * examples/Hello/Sender/Sender.cidl: + * examples/Hello/Sender/Sender_exec.h: + * examples/Hello/Sender/Makefile: + * examples/Hello/Sender/Sender.idl: + * examples/Hello/Sender/Sender_exec_export.h: + * examples/Hello/Sender/Makefile.Hello_Base_Sender_exec: + * examples/Hello/Sender/Sender.mpc: + * examples/Hello/Sender/Sender_stub_export.h: + * examples/Hello/Sender/Makefile.Hello_Base_Sender_stub + * examples/Hello/Sender/SenderEI.idl: + * examples/Hello/Sender/Sender_svnt.h: + * examples/Hello/Sender/Makefile.Hello_Base_Sender_svnt: + * examples/Hello/Sender/Sender_exec.cpp: + * examples/Hello/Sender/Sender_svnt_export.h: + * examples/Hello/Receiver/ReceiverEI.idl: + * examples/Hello/Receiver/Makefile: + * examples/Hello/Receiver/Receiver_Impl.ccd: + * examples/Hello/Receiver/Makefile.Hello_Base_Receiver_exec: + * examples/Hello/Receiver/Receiver_exec.cpp: + * examples/Hello/Receiver/Makefile.Hello_Base_Receiver_stub: + * examples/Hello/Receiver/Receiver_exec.h: + * examples/Hello/Receiver/Makefile.Hello_Base_Receiver_svnt: + * examples/Hello/Receiver/Receiver_exec_export.h: + * examples/Hello/Receiver/Receiver.cidl: + * examples/Hello/Receiver/Receiver_stub_export.h: + * examples/Hello/Receiver/Receiver.idl: + * examples/Hello/Receiver/Receiver_svnt.h: + * examples/Hello/Receiver/Receiver.mpc: + * examples/Hello/Receiver/Receiver_svnt_export.h: + * examples/Hello/starter/Makefile: + * examples/Hello/starter/Makefile.Hello_Starter: + * examples/Hello/starter/starter.cpp: + * examples/Hello/starter/starter.mpc: + * examples/Hello/descriptors/CIAO_Installation_Data.ini: + * examples/Hello/descriptors/Receiver.ssd: + * examples/Hello/descriptors/default.cad: + * examples/Hello/descriptors/test.dat: + * examples/Hello/descriptors/Sender.csd: + * examples/Hello/descriptors/Receiver.csd: + * examples/Hello/descriptors/Sender.ssd: + + Added the files for Hello example. + +Fri Nov 28 13:58:58 2003 Tao Lu + + * examples/Hello: + + Added the Hello example to CIAO. Thanks nanbor for the + handcrafted examples from which I learned to program do CIAO + programming. This example is meant to be used a step-by-step + tutorial for CIAO. + +Wed Nov 26 22:16:34 2003 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + + Changed generated exception list of disconnect_* operation for + an emits declaration to match the correct exception list + generated in ServantSourceGenerator.cpp. + +Tue Nov 25 19:46:07 2003 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.hpp: + + Corrected a comment. + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed servant code generation to output only for components + and homes that are used in a CIDL composition. Thanks to + Gary Duzan for reporting the problem. Also + added support for attributes declared in a home. + +Tue Nov 25 15:39:51 2003 Boris Kolpackov + + * CCF/CCF/CompilerElements/FileSystem.hpp: + + Made normalize() function use 'native' path type when + constructing the path. + +Tue Nov 25 15:06:02 2003 Boris Kolpackov + + * CIDLC/cidlc.cpp: + + Some code to support #include handling. + +Tue Nov 25 14:47:18 2003 Boris Kolpackov + + * CCF/CCF/CodeGenerationKit/CommandLine.hpp: + + Added capability to iterate over options. + + * CCF/CCF/CompilerElements/FileSystem.hpp: + + Added normalize() function to normalize absolute paths. + + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Include.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp: + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: + + Added #include handling. + + * CCF/Test/IDL2/Parser/Include/root.idl: + * CCF/Test/IDL2/Parser/Include/bar/bar.idl: + * CCF/Test/IDL2/Parser/Include/bar/baz.idl: + * CCF/Test/IDL2/Parser/Include/foo/foo.idl: + + Simple test for #include. + +Tue Nov 25 09:34:10 2003 Arvind S. Krishna + + * performance-tests/Benchmark/RoundTrip/run_test.pl + Changed the script to take the right svc.conf file + +Mon Nov 24 19:24:42 2003 Balachandran Natarajan + + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/handcrafted/BasicSP/BMClosedED/BMClosedED_exec.cpp: + * examples/handcrafted/BasicSP/BMDevice/BMDevice_exec.cpp: + + Cosmetic fixes. + +Mon Nov 24 16:37:12 2003 Balachandran Natarajan + + * ciao/ComponentsC.h: + + Removed unneeded inclusion of ComponentsC.i + +Mon Nov 24 14:48:09 2003 Jeff Parsons + + * ciao/ComponentsS.h: + + Removed unneeded inclusion of ComponentsS_T.h. + +Mon Nov 24 14:41:22 2003 Jeff Parsons + + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Visitors.cpp: + * tools/Assembly_Deployer/Deployment_Configuration.cpp: + * tools/Daemon/DaemonController.cpp: + * tools/Daemon/controller_i.cpp: + * tools/ServerActivator/ServerActivator.cpp: + * tools/ServerActivator/ServerActivator_test_client.cpp: + * tools/Simple_Component_Server/Simple_Component_Server.cpp: + + Added missing ACE file includes. + +Mon Nov 24 14:21:58 2003 Jeff Parsons + + * ciao/Container_Base.cpp: + * ciao/ServerActivator_Impl.cpp: + * ciao/Server_init.cpp: + + Added missing ACE includes. + +Mon Nov 24 13:39:43 2003 Jeff Parsons + + * CIDLC/Collectors.hpp: + + Cosmetic changes. + + * CIDLC/Literals.hpp: + + Added /* */ in a string literal around an arg name which + is never used in generated methods where it appears in the + argument list. + + * CIDLC/ServantSourceGenerator.cpp: + + Commented out some unused arg names, and removed some extra + newlines. In the connect() operation generated for a + component, added ACE_UNUSED_ARG() for an argument which is + unused if the component has no receptacles declared. + + * CCF/CCF/IDL2/SyntaxTree/TranslationCtor.cpp: + + New file with a dummy class and constructor, added as a workaround + for errors related to the protected default constructor of the + real TranslationRegion class, simlar to what has already been + added for the Elements, Interface and Valuetype classes in + IDL2::SyntaxTree. + + * CCF/CCF/IDL2/SyntaxTree/IDL2.mpc: + + Updated with recently added files. + +Thu Nov 20 20:05:34 2003 Balachandran Natarajan + + * ciao/ComponentsS.h: + * ciao/ComponentsS_T.h: + + Removed wrong includes. + +Thu Nov 20 17:50:55 2003 Balachandran Natarajan + + * tools/RTComponentServer/RTComponentServer.mpc: + + Inherit the project form ACEXML since we need that. + +Thu Nov 6 07:55:20 2003 Balachandran Natarajan + + * Makefile: + + Added coreclean target for doing realclean on a core set of + directories in the nightly build. + +Wed Nov 5 14:07:06 2003 Boris Kolpackov + + * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp: + + Got rid of some warnings. + + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/Parsing/Recovery.hpp: + * CCF/CCF/IDL2/SyntaxTree/Elements.hpp: + + Added a work-around to subvert constness of descriptor + member in spirit::parser_error. Joel de Guzman acknowledged + that this is an architectural error but unfortunately it + doesn't seem he is going to fix it any time soon (even though + patch is available). + +Tue Nov 4 21:21:06 2003 Balachandran Natarajan + + * ciao/ComponentsC.h: + * ciao/ComponentsS.h; + + Regenerated these files. Not sure why this is maintained in the + repo. + + * examples/handcrafted/Hello/hello_executors.h: + + #include "tao/LocalObject.h" + +Tue Nov 04 19:35:10 2003 Nanbor Wang + + * COPYING: Added ACE/TAO/CIAO Copyright disclaimer. Thanks to + Roland Schimmack for motivating the change. + +Tue Nov 4 17:11:06 2003 Balachandran Natarajan + + * tools/Daemon/CIAO_Daemon.cpp: Fixed warnings from g++. + +Tue Nov 4 16:51:22 2003 Balachandran Natarajan + + * tools/Daemon/controller_i.cpp: + + #included "ace/OS_NS_strings.h" + + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/ServerActivator/ServerActivator.cpp: + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/RTConfig_Handlers.cpp: + * tools/XML_Helpers/Softpkg_Handlers.cpp: + * tools/XML_Helpers/XML_Utils.cpp: + + #included "ace/OS_String.h" to get the above files compiling + with g++. We still get a link error that Don is looking at. + +Tue Nov 4 16:34:45 2003 Balachandran Natarajan + + * ciao/Active_Objref_Map.h: + * ciao/Client_init.h: + * ciao/Object_Set_T.h: + * ciao/Server_init.h: + + Added new includes that are needed to get them compiling. + +Wed Oct 29 16:39:48 2003 Jeff Parsons + + * CIDLC/ServantSourceGenerator.cpp: + + Removed extra generated close brace. + +Wed Oct 29 15:56:33 2003 Jeff Parsons + + * CCF/CCF/IDL2/Traversal/Interface.hpp: + * CCF/CCF/IDL2/Traversal/Struct.hpp: + + Cosmetic changes. + + * CIDLC/CIDLC.vcproj: + + Added SizeTypeCalculator.{h,cpp} to project. + + * CIDLC/Literals.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Fixed bugs in code generation - missing 'Consumer' appended + to eventtype name, and event typename used for concatenation + of operation name instead of event identifier name. + + * CIDLC/SizeTypeCalculator.cpp: + + Added support for wstrings, sequences and interfaces. + + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added support for typedefs, structs, sequences and interfaces. + + * CIDLC/cidlc.cpp: + + Added instantiation and launch of SizeTypeCalculator. + +Wed Oct 29 15:19:07 2003 Boris Kolpackov + + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4: + * CCF/CCF/IDL2/SyntaxTree/Elements.hpp: + * CCF/CCF/IDL2/SyntaxTree/Interface.hpp: + * CCF/CCF/IDL2/SyntaxTree/Sequence.hpp: + * CCF/CCF/IDL2/SyntaxTree/Struct.hpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.cpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp: + * CCF/CCF/IDL3/SyntaxTree/Component.hpp: + * CCF/CCF/IDL3/SyntaxTree/EventType.hpp: + * CCF/CCF/IDL3/SyntaxTree/Home.hpp: added support for sharing + context by typedef temporary and principal syntax tree node. + +Wed Oct 29 13:36:47 2003 Boris Kolpackov + + * CCF/CCF/IDL2/Traversal/Elements.cpp: + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CCF/CCF/IDL2/Traversal/Typedef.hpp: fixed bug in typedef + traversal scheme. + +Fri Oct 24 19:16:21 2003 Boris Kolpackov + + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CCF/CCF/IDL2/Traversal/Typedef.hpp: Fixed inheritance ambiguity. + + * CIDLC/Makefile.alt: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: Added some functions for + typedef testing. + + * CIDLC/SizeTypeCalculator.cpp: + * CIDLC/SizeTypeCalculator.hpp: Added initial implementation + of fixed/variable type size calculation. + +Fri Oct 24 18:17:21 2003 Jeff Parsons + + * CCF/CCF/IDL2/IDL2.vcproj: + + Added new front end files to the project. + + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/CCF/IDL2/SyntaxTree/ElementsCtor.cpp: + * CCF/CCF/IDL2/SyntaxTree/InterfaceCtor.cpp: + * CCF/CCF/IDL2/SyntaxTree/Struct.cpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp: + * CCF/CCF/IDL2/SyntaxTree/ValueTypeCtor.cpp: + + Fixed various minor errors, such as removal of unused argument + identifiers, and addition of 'using std". + + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + Added case for sequences, and typedefs of string and wstring. + +Fri Oct 24 17:14:51 2003 Boris Kolpackov + + * CCF/CCF/IDL2/Traversal/Typedef.hpp: New implementation of + typedef traverser. + +Fri Oct 24 11:31:34 2003 Venkita Subramonian + + * CIAO version 0.3.5 released. + +Thu Oct 16 16:45:35 2003 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: + * CCF/CCF/IDL2/SyntaxTree.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Struct.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp: + * CCF/CCF/IDL2/SyntaxTree/Makefile.alt: + * CCF/CCF/IDL2/SyntaxTree/Member.cpp: + * CCF/CCF/IDL2/SyntaxTree/Member.hpp: + * CCF/CCF/IDL2/SyntaxTree/Operation.hpp: + * CCF/CCF/IDL2/SyntaxTree/Struct.cpp: + * CCF/CCF/IDL2/SyntaxTree/Struct.hpp: + * CCF/CCF/IDL2/Traversal/Makefile.alt: + * CCF/CCF/IDL2/Traversal/Member.cpp: + * CCF/CCF/IDL2/Traversal/Member.hpp: + * CCF/CCF/IDL2/Traversal/Struct.cpp: + * CCF/CCF/IDL2/Traversal/Struct.hpp: + * CCF/CCF/IDL2/Traversal/Typedef.hpp: + * CCF/CCF/IDL3/SyntaxTree/Operation.hpp: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + Added support for struct. + + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + Added a few structs for testing. + + * CCF/Documentation/TODO: Marked some items as done or + partially done. + +Thu Oct 16 12:55:06 2003 Boris Kolpackov + + * CCF/CCF/IDL2/SyntaxTree/ElementsCtor.cpp: + * CCF/CCF/IDL2/SyntaxTree/InterfaceCtor.cpp: + * CCF/CCF/IDL2/SyntaxTree/ValueTypeCtor.cpp: Added fake ctor + definition for some compilers (like MSVC) that insist they + should be defined (even though never used). + +Thu Oct 16 12:07:01 2003 Boris Kolpackov + + * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.cpp: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.cpp.m4: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.m4: + * CCF/CCF/IDL2/SyntaxTree/Elements.cpp: + * CCF/CCF/IDL2/SyntaxTree/Elements.hpp: + * CCF/CCF/IDL2/SyntaxTree/Interface.cpp: + * CCF/CCF/IDL2/SyntaxTree/Interface.hpp: + * CCF/CCF/IDL2/SyntaxTree/Sequence.hpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.cpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp: + * CCF/CCF/IDL2/SyntaxTree/ValueType.cpp: + * CCF/CCF/IDL2/SyntaxTree/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/BuiltIn.hpp: + * CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4: + * CCF/CCF/IDL2/Traversal/Elements.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp: + * CCF/CCF/IDL3/SyntaxTree/Component.cpp: + * CCF/CCF/IDL3/SyntaxTree/Component.hpp: + * CCF/CCF/IDL3/SyntaxTree/EventType.hpp: + * CCF/CCF/IDL3/SyntaxTree/Home.hpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp: Added the + SyntaxTree::ForwardDeclarableTypeDecl base class and moved + there {virtual bool defined () const;}. Added + {virtual bool complete () const;} to TypeDecl to reflect type + completeness. Also changed some type names for consistency. + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: Minor changes to + reflect above. + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + * CIDLC/cidlc.cpp: Minor changes to reflect above. + +Wed Oct 15 15:43:13 2003 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/Makefile.archive: + * CCF/CCF/IDL2/Parser.cpp: + * CCF/CCF/IDL2/Parser.hpp: + * CCF/CCF/IDL2/SyntaxTree.hpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/CCF/IDL2/SyntaxTree/Makefile.alt: + * CCF/CCF/IDL2/SyntaxTree/Sequence.cpp: + * CCF/CCF/IDL2/SyntaxTree/Sequence.hpp: + * CCF/CCF/IDL2/Traversal/Makefile.alt: + * CCF/CCF/IDL2/Traversal/Sequence.cpp: + * CCF/CCF/IDL2/Traversal/Sequence.hpp: Added support for + unbounded sequence. + + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + Added a few sequences for testing. + +Wed Oct 15 13:59:33 2003 Boris Kolpackov + + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp: + * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4: + * CCF/CCF/IDL2/SyntaxTree/Elements.hpp: + * CCF/CCF/IDL2/SyntaxTree/Interface.hpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.cpp: + * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp: + * CCF/CCF/IDL2/SyntaxTree/ValueType.hpp: + * CCF/CCF/IDL2/Traversal/Elements.cpp: + * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp: + * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp: + * CCF/CCF/IDL3/SyntaxTree/Component.hpp: + * CCF/CCF/IDL3/SyntaxTree/EventType.hpp: + * CCF/CCF/IDL3/SyntaxTree/Home.hpp: + * CCF/CCF/IDL3/Traversal/Operation.cpp: Second part of + typedef-related infrastructure. + + * CCF/Example/CIDL/LocalExecutorMapping/test-0.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig: + * CCF/Example/CIDL/LocalExecutorMapping/test-1.idl: Added a few + typedef's for testing. + + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/Makefile.alt: + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: Some minor + clean-up's. + + * CCF/Documentation/TODO: Added a few more items. + +Tue Oct 14 22:44:43 2003 Nanbor Wang + + * examples/handcrafted/Hello/simple_client.cpp: + * examples/handcrafted/Hello/client.cpp: Added the missing streams + header file. + +Tue Oct 14 17:18:43 2003 Boris Kolpackov + + * CIDLC/Makefile.alt: Added alternative (to mpc) means of + building CIDL compiler. + +Tue Oct 14 16:57:54 2003 Boris Kolpackov + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/RepositoryIdGenerator.cpp: Some minor clean-up's. + +Tue Oct 14 16:41:41 2003 Boris Kolpackov + + * CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/IDL2/Makefile.archive: + * CCF/IDL2/Parser.cpp: + * CCF/IDL2/Parser.hpp: + * CCF/IDL2/SemanticAction.hpp: + * CCF/IDL2/SyntaxTree.hpp: + * CCF/IDL2/Traversal.hpp: + * CCF/IDL2/SemanticAction/Factory.hpp: + * CCF/IDL2/SemanticAction/Typedef.hpp: + * CCF/IDL2/SemanticAction/Impl/Factory.hpp: + * CCF/IDL2/SemanticAction/Impl/Interface.hpp: + * CCF/IDL2/SemanticAction/Impl/Typedef.cpp: + * CCF/IDL2/SemanticAction/Impl/Typedef.hpp: + * CCF/IDL2/SyntaxTree/BuiltIn.hpp: + * CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4: + * CCF/IDL2/SyntaxTree/Elements.cpp: + * CCF/IDL2/SyntaxTree/Elements.hpp: + * CCF/IDL2/SyntaxTree/Elements.tpp: + * CCF/IDL2/SyntaxTree/Interface.hpp: + * CCF/IDL2/SyntaxTree/Makefile.alt: + * CCF/IDL2/SyntaxTree/Module.hpp: + * CCF/IDL2/SyntaxTree/Operation.hpp: + * CCF/IDL2/SyntaxTree/Translation.cpp: + * CCF/IDL2/SyntaxTree/Translation.hpp: + * CCF/IDL2/SyntaxTree/TypeId.cpp: + * CCF/IDL2/SyntaxTree/Typedef.cpp: + * CCF/IDL2/SyntaxTree/Typedef.hpp: + * CCF/IDL2/SyntaxTree/ValueType.hpp: + * CCF/IDL2/Traversal/BuiltIn.hpp: + * CCF/IDL2/Traversal/BuiltIn.hpp.m4: + * CCF/IDL2/Traversal/Elements.cpp: + * CCF/IDL2/Traversal/Elements.hpp: + * CCF/IDL2/Traversal/Interface.hpp: + * CCF/IDL2/Traversal/Module.hpp: + * CCF/IDL2/Traversal/Operation.hpp: + * CCF/IDL2/Traversal/Translation.hpp: + * CCF/IDL2/Traversal/TypeId.hpp: + * CCF/IDL2/Traversal/Typedef.cpp: + * CCF/IDL2/Traversal/Typedef.hpp: + * CCF/IDL3/SyntaxTree/Component.hpp: + * CCF/IDL3/SyntaxTree/EventType.hpp: + * CCF/IDL3/SyntaxTree/Home.hpp: + * CCF/IDL3/SyntaxTree/Operation.hpp: + * CCF/IDL3/Traversal/Component.hpp: + * CCF/IDL3/Traversal/EventType.hpp: + * CCF/IDL3/Traversal/Home.hpp: + * CCF/IDL3/Traversal/Operation.hpp: + * CCF/CIDL/SyntaxTree/Composition.hpp: + * CCF/CIDL/SyntaxTree/HomeExecutor.hpp: + * CCF/CIDL/Traversal/Composition.hpp: + * CCF/CIDL/Traversal/HomeExecutor.hpp: First part of + typedef-related infrastructure. + + * CCF/CodeGenerationKit/IndentationIDL.hpp: + * CCF/CompilerElements/Preprocessor.hpp: + * Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + * Example/CIDL/LocalExecutorMapping/cidlc.cpp: + * Example/CIDL/LocalExecutorMapping/test-0.idl: Some minor + clean-up's. + + * Documentation/TODO: Added a few more items. + +Tue Oct 14 00:54:10 2003 Nanbor Wang + + * performance-tests/Benchmark/RoundTrip/svc.conf: + Changed to load Advanced_Resource_Factory dynamically. + + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.h: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + Changed to implement the Benchmark::Latency_Test interface + instead of the Latency_Test interface. Otherwise, we won't be + able to connect the interface to a receptacle expecting another + interface type. + +Tue Oct 14 00:54:10 2003 Nanbor Wang + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + Fixed a minor compilation problem. + + * performance-tests/Benchmark/descriptors/Test-ior.cad: + * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + + Changed to output IOR to a fixed file named "rtserver.ior" and + refer to the object as file://rtserver.ior in the cad file + +Mon Oct 13 23:41:10 2003 Nanbor Wang + + * examples/handcrafted/Display/RateGen/controller.cpp: + * examples/handcrafted/Display/RateGen/client.cpp: Added inclusion + of "ace/streams.h" to make them compile. + +Mon Oct 13 22:31:10 2003 Nanbor Wang + + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp: + Fixed a fuzz warning. + +Mon Oct 13 16:49:00 2003 Venkita Subramonian + + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/ComponentServer_Task.h: + Added /**/ to fix Fuzz errors. + +Sun Oct 12 20:44:41 2003 Jeff Parsons + + * CIDLC/Collectors.hpp: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/DescriptorGenerator.hpp: + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ExecutorMappingGenerator.hpp: + * CIDLC/Literals.hpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantGenerator.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ServantSourceGenerator.hpp: + Changed top of files to match the title/author/cvs id format for + all other CCF and CIDLC files. + + * CIDLC/TypeNameEmitter.cpp: + * CIDLC/TypeNameEmitter.hpp: + + New files, adding support for all basic IDL types, and factoring + out the typename emitter classes for operation return types and + parameters into a separate translation unit, to eliminate the + duplication in ServantHeaderGenerator.cpp and + ServantSourceGenerator.cpp. + + * CIDLC/cidlc.mpc: + * CIDLC/CIDLC.vcproj: + + Updated with the new files above. + +Sun Oct 12 18:36:16 2003 Arvind S. Krishna + + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/Benchmark.idl: + * performance-tests/Benchmark/server.cpp: + * performance-tests/Benchmark/svc.conf: + * performance-tests/Benchmark/LatencyTest.h: + * performance-tests/Benchmark/LatencyTest.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip.idl: + Added test scenario in which a CORBA component interacts with + a CORBA server. + +Sat Oct 11 00:18:13 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: My previous change didn't + completely fix the script. It was using the obsolet dependency + MPC keyword "depends" instead of "after", and the dependencies + was partially broken. + +Fri Oct 10 18:39:18 2003 Jeff Parsons + + * CIDLC/CIDLC.vcproj: + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/Literals.hpp: + * CIDLC/RepositoryIdGenerator.cpp: + * CIDLC/RepositoryIdGenerator.hpp: + * CIDLC/cidlc.cpp: + + Added backend support for typeid and typeprefix, used in + computing the repository id string. + +Fri Oct 10 15:54:00 2003 Boris Kolpackov + + * CCF/CCF/IDL2/LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/SyntaxTree/BuildIn.m4: + * CCF/CCF/IDL2/SyntaxTree/BuildIn.hpp: + * CCF/CCF/IDL2/SyntaxTree/BuildIn.hpp.m4: + * CCF/CCF/IDL2/SyntaxTree/BuildIn.cpp: + * CCF/CCF/IDL2/SyntaxTree/BuildIn.cpp.m4: + * CCF/CCF/IDL2/Traversal/BuildIn.hpp: + * CCF/CCF/IDL2/Traversal/BuildIn.hpp.m4: + * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl: + * CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig: + * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig: + * CIDLC/cidlc.cpp: Added support for all built-in types (spec + calls them 'base types') in CCF and in CIDL compiler driver. + + * CCF/Documentation/TODO: marked corresponding item as done. + +Thu Oct 09 00:50:24 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: Minor enhancement to the previous + change. This script now allows an optional project name prefix + to be define via the [-u] flag. If this flag is not used, the + dependent component's name will be used as project name prefix. + Since there are possibly many component depending on the same + component, using the depending componant name may not help much. + If neither -u and -p flag are used, no project name prefix will + be added (the redundant leading underscore from the previous + change has been removed.) + +Fri Oct 6 10:00:12 2003 Boris Kolpackov + + * CCF/Documentation/TODO: merged items from my off-line TODO. + +Fri Oct 03 22:45:43 2003 Chris Cleeland + + * CIAO version 0.3.4 released. + +Fri Oct 03 11:07:20 2003 Nanbor Wang + + * docs/releasenotes.html: Updated the release notes with more + recent news. + +Fri Oct 3 08:14:26 2003 Balachandran Natarajan + + * examples/handcrafted/BasicSP_EC/EC/EC.mpc: Fixed a problem with + the MPC file. Thanks to Johnny Willemsen for poitning this out. + +Thu Oct 2 15:02:10 2003 Boris Kolpackov + + * CCF/CCF/IDL2/Traversal/TypeId.hpp: + * CCF/CCF/IDL2/Traversal/TypeId.cpp: + * CCF/CCF/IDL2/Traversal.hpp: + * CCF/CCF/IDL2/SyntaxTree.hpp: + * CCF/CCF/IDL2/SemanticAction.hpp: Added missing pieces for + typeid/typeprefix support. + +Wed Oct 1 14:26:09 2003 Boris Kolpackov + + * CCF/CCF/CompilerElements/Context.hpp: added count () member + function. + + * CIDLC/RepositoryIdGenerator.hpp: + * CIDLC/RepositoryIdGenerator.cpp: implemented first phase of + repository id generation. + +Tue Sep 30 09:52:13 2003 Balachandran Natarajan + + * performance-tests/mico/mico-thrput-st/client.cc: + * performance-tests/mico/mico-thrput-st/server.cc: + + Fixed fuzz errors. + + +Fri Sep 26 12:13:44 2003 Nanbor Wang + + * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl: + Changed to deploy Test-IOR.cad instead of + Test-Name-Service.cad. + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h: + Fixed some extra line-breaks that were causing compilation errors. + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + Fixed a compilation error. + + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + Removed a redundant comma. + + * tools/ComponentServer/ComponentServer.cpp: + Fixed execution error in "debug mode." + +Wed Sep 24 20:59:09 2003 Balachandran Natarajan + + * examples/handcrafted/BasicSP_EC2/EC/EC.mpc: Fixed problems that + missed my last checkiin "Sun Sep 21 17:07:45 2003 Balachandran + Natarajan ". + +Sun Sep 21 17:15:24 2003 Balachandran Natarajan + + * bin/generate_component_mpc.pl: Appended the value provided to + the -p option to the project names. + +Sun Sep 21 17:07:45 2003 Balachandran Natarajan + + * examples/handcrafted/BasicSP_EC/BasicSP.mpc: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC/EC/EC.mpc + * examples/handcrafted/BasicSP_EC2/BasicSP.mpc: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc: + Changed the project file names so that they don't clash with the + project names in examples/handcrafted/BasicSP. This shold get + rid of warning in VC7 builds hosted by remedy. + +Fri Sep 19 14:27:57 2003 Arvind S. Krishna + + * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: + Fixed to adhere to latest mpc changes. This also ensured proper + make files to be generated. + +Fri Sep 19 13:31:50 2003 Arvind S. Krishna + + * performance-tests/Benchmark/descriptors/Test-IOR.cad: + cad file to test CORBA server with Component client + * performance-tests/Benchmark/RoundTripClient/run_test_ior.pl: + Perl script to run the benchmark + * performance-tests/Benchmark/RounTrip_server: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp: + * performance-tests/Benchmark/RoundTripServer/LatencyTest.h: + * performance-tests/Benchmark/RoundTripServer.mpc: + * performance-tests/Benchmark/RoundTripServer/server.cpp: + * performance-tests/Benchmark/RoundTripServer/Test.idl: + A server to communicate with CIAO client, implementing the same + interface needed. + +Tue Sep 16 14:04:06 2003 Boris Kolpackov + + * CCF/Example/ComponentDeploymentDescriptor: Added small example + that shows how syntax tree traversal mechanism can be used in + different code generation tasks. + +Thu Aug 28 12:30:10 2003 Boris Kolpackov + + * CCF/CFF/IDL2/SyntaxTree/Elements.*: Made SyntaxTree::Node + capable of holding arbitrary context information (see + SyntaxTree::Node::context ()). Plus some minor architectural + changes. + + * CCF/CFF/IDL2/SyntaxTree/TypeId.* + * CCF/CFF/IDL2/SemanticAction/TypeId.* + * CCF/CFF/IDL2/SemanticAction/Impl/TypeId.* + * CCF/CFF/IDL2/LexicalAnalyzer.* + * CCF/CFF/IDL2/Parser.*: Added support for typeid and typeprefix. + +Tue Aug 26 16:59:49 2003 Nanbor Wang + + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/RTComponentServer/RTConfig_Manager.inl: + * tools/RTComponentServer/RTServer_Impl.cpp: + * tools/RTComponentServer/RTServer_Impl.h: + * tools/XML_Helpers/RTConfig_Handlers.cpp: Fixed compilation + problem on Linux. + +Tue Aug 26 10:14:03 2003 Diego Sevilla + + * CIDLC/ServantSourceGenerator.cpp: Correctly generate get and set + operations for attributes in the servant code. An error in how + I built the traverse was preventing that. + +Tue Aug 26 09:27:17 2003 Jeff Parsons + + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Changed the constructor of SetAttributeEmitter to take + INArgTypeNameEmitter as a delegate instead of + ReturnTypeNameEmitter, which was previously the case, causing + the code generation to emit the return type char* instead + of the correct IN argument type const char*. Thanks to + Roland Schimmack for reporting the bug. + +Mon Aug 25 09:47:19 2003 Nanbor Wang + + * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h: Fixed a + compilation error by adding inclusion of "ace/Null_Mutex.h" and + define QT_GENUINE_STR. + +Mon Aug 25 07:42:14 2003 Nanbor Wang + + * tools/RTComponentServer/ComponentServer_Task.cpp: + * tools/RTComponentServer/ComponentServer_Task.h: + * tools/RTComponentServer/RTConfig_Manager.h: Fixed merge errors + by adding inclusion of "tao/ORB.h", "ace/Null_Mutex.h" and + such. + +Sun Aug 24 22:03:55 2003 Nanbor Wang + + Merged the RTCIAO-0 branch into main trunk. + + Sun Aug 24 21:45:33 2003 Nanbor Wang + + * tools/Assembly_Deployer/Assembly_Deployer.mpc: + * tools/Daemon/Daemon.mpc: Both CIAO_Daemon and Assembly_Manager + depend on RTCORBA library now because they both required to + handle RTCORBA related types. + + * tools/Assembly_Deployer/Assembly_Visitors.cpp: + * tools/Assembly_Deployer/Assembly_Visitors.h: Decoupled the + container creation functionality from the creation of + ComponentServer into a separate method. This allows us to + better manage the type of container and the associating policy + sets. + + * tools/Assembly_Deployer/Deployment_Configuration.cpp: + * tools/Assembly_Deployer/Deployment_Configuration.h: Changed the + get_activator[_ior] functions to return default activator where + there's no valid activator id available instead of throwing an + exception. + + * tools/ComponentServer/ComponentServer.cpp: Invoke the init + method of ComponentServer servant. This function is now + supported. + + * tools/RTComponentServer/ComponentServer_Task.cpp: + * tools/RTComponentServer/ComponentServer_Task.h: + * tools/RTComponentServer/RTComponentServer.cpp: + * tools/RTComponentServer/RTComponentServer.mpc: + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/RTServer_Impl.cpp: + * tools/RTComponentServer/RTServer_Impl.h: + * tools/RTComponentServer/RTServer_Impl.inl: Added/Changed to + properly support the real-time ComponentServer implementation. + + * tools/ServerActivator/ServerActivator.cpp: Fixed a fuzz error. + + * tools/XML_Helpers/Assembly_Spec.inl: Changed to return 0 if + rtcad_filename and rtpolicyset_ref is not specified in the + original XML file. + + Thu Aug 14 16:27:52 2003 Nanbor Wang + + * tools/XML_Helpers/RTCAD-example.rtd: + * tools/XML_Helpers/RTCAD-example.cad: Added new file to show some + example cad and rtd files. + + * tools/XML_Helpers/main.cpp: + * tools/XML_Helpers/XML_Utils.cpp: Extended to invoke the RTCAD + handler. + + * tools/XML_Helpers/RTConfig_Handlers.h: + * tools/XML_Helpers/RTConfig_Handlers.cpp: Fixed run-time errors. + + Wed Aug 13 01:48:46 2003 Nanbor Wang + + * tools/RTComponentServer/RTComponentServer.mpc: Added dependency + to XML_Helpers library. + + * tools/XML_Helpers/XML_Utils.h: Added parse_rtcad_extension + static method. This is yet to be implemented. + + * tools/XML_Helpers/RTConfig_Handlers.h: + * tools/XML_Helpers/RTConfig_Handlers.inl: + * tools/XML_Helpers/RTConfig_Handlers.cpp: Added new files for + parsing RTConfig extention. + + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/XML_Helpers/RTConfiguration.idl: Renamed + RTORB_Resources_Info to RTORB_Resource_Info. + + * tools/XML_Helpers/XMLHelper.mpc: Added rtcorba as a base + project. We now depend on RTCORBA. + + Sun Aug 10 13:50:15 2003 Nanbor Wang + + * tools/RTComponentServer/RTConfiguration.idl: + * tools/RTComponentServer/RTConfigurationClient.cpp: + * tools/RTComponentServer/RTComponentServer.mpc: Removed + RTConfiguration.idl and the stub wrapper + RTConfigurationClient.cpp. They have been moved to XML_Helpers + library. + + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/RTConfig_Manager.cpp: Changed to include + RTConfigurationC.h from XML_Helpers subdir and make sure + RTCORBA.h is included before RTConfigurationC.h. + + * tools/XML_Helpers/XMLHelpers.mpc: + * tools/XML_Helpers/RTConfiguration.idl: + * tools/XML_Helpers/RTConfiguration_Stubs.cpp: Added + RTConfiguration info and its wrapper cpp file. This wrapper cpp + file is used to ensure that RTCORBA.h is included before + RTConfigurationC.h. + + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/Assembly_Handlers.h: + * tools/XML_Helpers/Assembly_Handlers.inl: + * tools/XML_Helpers/Assembly_Spec.h: + * tools/XML_Helpers/Assembly_Spec.inl: Extended to parse and store + information in and + . + + Wed Aug 06 17:02:02 2003 Nanbor Wang + + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/RTConfig_Manager.cpp: Added support for + keeping PriorityBands information. + + Sun Aug 3 23:12:20 2003 Nanbor Wang + + * tools/RTComponentServer/RTConfig_Manager.cpp: Fixed mismatched + throw specifications. Added inclusion of "ace/SString.h" as ACE + now only includes "ace/SStringfwd.h". + + Sun Aug 03 00:45:59 2003 Nanbor Wang + + * tools/RTComponentServer/RTConfig_Manager.cpp: Fixed some + accidental pastings of code. + + Fri Aug 01 13:50:34 2003 Nanbor Wang + + * tools/RTComponentServer/RTComponentServer.mpc: + * tools/RTComponentServer/RTConfig_Manager.cpp: + * tools/RTComponentServer/RTConfig_Manager.h: + * tools/RTComponentServer/RTConfig_Manager.inl: + * tools/RTComponentServer/RTConfiguration.idl: Added code for + managing named collection of RTCORBA related policies. + + Sun Jul 06 21:37:22 2003 Nanbor Wang + + * tools/RTComponentServer/ComponentServer_Task.cpp (svc): Changed + to take advantage of CIAO::Activator_Callback interface change + for getting back our own ConfigValues. We will need to use + these configuration values in the future. + + Sun Jul 06 11:50:48 2003 Nanbor Wang + + * tools/RTComponentServer/ComponentServer_Task.cpp: + * tools/RTComponentServer/ComponentServer_Task.h: + * tools/RTComponentServer/ComponentServer_Task.inl: + * tools/RTComponentServer/README: + * tools/RTComponentServer/RTComponentServer.cpp: + * tools/RTComponentServer/RTComponentServer.mpc: Added the + skeleton of RTComponentServer. + + Sun Jul 06 11:33:55 2003 Nanbor Wang + + * Added: this temporary ChangeLog file for changes within the + RTComponentServer. + + +Sun Aug 24 21:38:24 2003 Nanbor Wang + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: Added an extra argument of type + CORBA::PolicyList to the init method which we can use to pass + extra RTCORBA policies into the RT Container. + + * ciao/Container_Impl.cpp: + * ciao/Container_Impl.h: Fixed memory management of cached + ConfigValue valuetype. + + * ciao/ServerActivator_Impl.h: + * ciao/ServerActivator_Impl.cpp: Extended the server activator to + specify RTCAD filename when instantiating a RTComponentServer. + + * examples/OEP/Display/descriptors/HUDisplay-rtcad.cad: + * examples/OEP/Display/descriptors/NOTE-win.txt: + * examples/OEP/Display/descriptors/RTsvc.conf: + * examples/OEP/Display/descriptors/test.rtd: + * examples/OEP/Display/descriptors/svcmap.dat: Added an RTCCM + example. + +Wed Aug 20 17:44:29 2003 Diego Sevilla + + * CIDLC/DescriptorGenerator.cpp: Small fix to make it compile + under linux also. + +Wed Aug 20 17:36:02 2003 Arvind S. Krishna + + * performance-tests/mico: + Directory where mico specific tests will be added + + * performance-tests/mico/mico-thrput-st: + Single threaded throughput tests for the MICO ORB + + * performance-tests/mico/mico-thrput-st/server.cc: + * performance-tests/mico/mico-thrput-st/client.cc: + * performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc: + * performance-tests/mico/mico-thrput-st/RoundTrip_impl.h: + * performance-tests/mico/mico-thrput-st/Makefile: + * performance-tests/mico/mico-thrput-st/mico-env: + * performance-tests/mico/mico-thrput-st/RoundTrip.idl: + Single threaded througput test for MICO ORB. This experiment + uses the same interface as the one used in TAO for generating + daily performance stats. Further, the test also uses ACE for + generating results. + +Wed Aug 20 17:19:52 2003 Jeff Parsons + + * CIDLC/cidlc.mpc: + + Added new and missing files. + +Wed Aug 20 17:09:18 2003 Jeff Parsons + + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + + Added missing header files to the project. + + * CCF/CCF/CodeGenerationKit/Regex.hpp: + + Boris Kolpackov's change + to allow a choice of delimiters when passing a + regular expression string to the perl_s() method. + + * CIDLC/ExecutorMappingGenerator.cpp: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Minor cosmetic changes. + + * CIDLC/DescriptorGenerator.cpp: + * CIDLC/DescriptorGenerator.hpp: + + New files, containing code for an XML generator, the + CORBA Component Descriptor .ccd file. + + * CIDLC/CIDLC.vcproj: + * CIDLC/cidlc.cpp: + + Updated these files to recognize the new generator. + Also changed the output directory of the executable + to be CIAO_ROOT/bin. + +Wed Aug 20 14:48:15 2003 Diego Sevilla + + * CCF/Example/CodeGenerationKit/Indentation/XML/Makefile.alt: + * CCF/Example/CodeGenerationKit/Indentation/XML/XML.mpc: + * CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp: + Added example of usage for the XML indenter. + + * CCF/CCF/CodeGenerationKit/IndentationXML.hpp: Added XML + indenter. + +Tue Aug 19 16:06:01 2003 Diego Sevilla + + * CIDLC/cidlc.mpc: Some cleaning of the MPC file: Removed unneeded + Instrocpection and added the CompilerElements library. + +Mon Aug 18 14:08:05 2003 Arvind S. Krishna + + * performance-tests/Benchmark/descriptors/test-multi-process.dat: + This file contains host port locations for running components + in multiple hosts/processes. Will be used as an example + scenario for benchmarking experiments + +Mon Aug 18 12:11:55 2003 Arvind S. Krishna + + * performance-tests/Benchmar/Multi_Threaded/NOTE.txt: + Updated information on pre-conditions necessary to run the + experiment + +Mon Aug 18 12:01:37 2003 Arvind S. Krishna + + * performance-tests/Benchmar/Multi_Threaded/Multi_Threaded.mpc: + * performance-tests/Benchmar/Multi_Threaded/client.cpp: + * performance-tests/Benchmar/Multi_Threaded/Client_Task.h: + * performance-tests/Benchmar/Multi_Threaded/Client_Task.cpp: + * performance-tests/Benchmar/Multi_Threaded/run_test.pl: + * performance-tests/Benchmar/Multi_Threaded/svc.conf: + * performance-tests/Benchmar/Multi_Threaded/NOTE.txt: + * performance-tests/Benchmar/Multi_Threaded/README: + Test that measures round-trip latency behavior using a + multi-threaded client. + + * performance-tests/Benchmark/descriptors/Multi_Threaded.cad: + * performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini: + Appropriate CAD file to configure the above experiment + +Sun Aug 17 22:43:55 2003 Nanbor Wang + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Container_Impl.cpp: Changed the signature of + CIAO::Container to pass in a CORBA::PolicyList. We will need + this to initialize RT_Session_Container and the future + unclassified container. + + * docs/ConfigValues.html: + * docs/XML/ciao_rt_cad_ext.dtd: + * docs/XML/componentassembly.dtd: Updated documentation on + extension element usage, RTCAD extension usage and recognizable + ConfigValues names. + + * examples/OEP/Display/RateGen/client.cpp: + * examples/OEP/Display/RateGen/controller.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h: + * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h: + * examples/OEP/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp: + Reordered order of inclusion to make sure ACE headers are seen + by the compiler first. + +Sun Aug 17 09:53:57 2003 Diego Sevilla + + * CCF/CCF/CCF.mwc: Fixed a bug in the name of a file that was + preventing the build in VC71. + +Fri Aug 15 16:26:03 2003 Jeff Parsons + + * CIAO/CCF/CCF/CIDL/CIDL.vcproj: + * CIAO/CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + * CIAO/CCF/CCF/CompilerElements/CompilerElements.vcproj: + * CIAO/CCF/CCF/IDL2/IDL2.vcproj: + * CIAO/CCF/CCF/IDL3/IDL3.vcproj: + * CIAO/CIDLC/CIDLC.vcproj: + + Turned off detection of 64-bit portability issues in these + projects. There are places in the Boost library where they + play fast and loose with conversions in this area, which + leads to many warnings. + +Fri Aug 15 15:18:37 2003 Boris Kolpackov + + * CCF: + * CIDLC: + + Added VC7.1 Solutions and Projects. + +Wed Aug 13 17:37:30 2003 George Edwards + + * examples/handcrafted/BasicSP_EC/BasicSP.mpc: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC/EC/EC.mpc: + + Updated library linkage and library paths. + + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedEDE.idl: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.cpp: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDeviceE.idl: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.cpp: + * examples/handcrafted/BasicSP_EC/EC/ECE.idl: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp: + * examples/handcrafted/BasicSP_EC/EC/EC_exec.h: + * examples/handcrafted/BasicSP_EC/EC/controller.cpp: + * examples/handcrafted/BasicSP_EC/EC/client.cpp: + + Added new Cookie implementation. + Use new method _ciao_the_ORB () to get container's ORB reference in + subscribe () and unsubscribe () methods. + +Wed Aug 13 16:23:02 2003 George Edwards + + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.h: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp: + + Fixed memory management and added comments. + +Wed Aug 13 13:25:14 2003 Diego Sevilla + + * CIDLC/cidlc.mpc: Reordered static library list to suit + dependencies. + +Wed Aug 13 12:20:12 2003 George Edwards + + * tools/XML_Helpers/Cascadable_DocHandler.cpp: + + Added #include ace/Log_Msg.h to fix compilation error. + +Wed Aug 13 10:49:14 2003 George Edwards + + * ciao/Container_Base.h: + * ciao/Container_Base.cpp: + * ciao/Container_Base.inl: + + Added _ciao_the_ORB () method to CIAO::Container to access the + container's underlying ORB. + Changed the_POA () method to _ciao_the_POA (). + +Wed Aug 13 10:42:12 2003 George Edwards + + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay_svnt.h: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay_svnt.h: + * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.h: + + Added /**/ to pre.h and post.h includes. + +Tue Aug 12 21:56:42 2003 Arvind S. Krishna + + * tools/XML_Helper/Assembly_Spec.h: + Fixed compilation error from a missing + #include "ace/Null_Mutex.h". + +2003-08-12 Diego Sevilla + + * CIAO.mwc: Removed CCF MPC files as they still don't work the way + I expected it to. + +2003-08-11 Diego Sevilla + + * CIDLC/ServantGenerator.cpp: Removed commented code. + +2003-08-07 Diego Sevilla + + * CCF/Example/CodeGenerationKit/Indentation/IDL/IDL.mpc: + * CCF/Example/CodeGenerationKit/Indentation/Indentation.mwc: + * CCF/Example/CodeGenerationKit/CodeGenerationKit.mwc: + * CCF/Example/CIDL/LocalExecutorMapping/LocalExecutorMapping.mpc: + * CCF/Example/CIDL/CIDL.mwc: + * CCF/Example/Example.mwc: + * CCF/CCF/CompilerElements/CompilerElements.mpc: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc: + * CCF/CCF/IDL3/IDL3.mpc: + * CCF/CCF/IDL2/IDL2.mpc: + * CCF/CCF/CIDL/CIDL.mpc: + * CCF/CCF/CCF.mwc: + * CCF/CCF.mwc: + CCF Makefiles to MPC. + + * CIDLC/cidlc.mpc: Adapted to the new structure of the CIDL + compiler. + + * CIDLC/README: Updated the information regarding the new + libraries and how to build the CIDL compiler now. + + * CIDLC/parser_examples/*.*: Removed old parser examples code. + +Tue Aug 12 20:18:23 2003 George Edwards + + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.idl: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.cpp: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.idl: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.cpp: + * examples/handcrafted/BasicSP_EC2/EC/EC.idl: + * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.cpp: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.idl: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventServiceEI.idl: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.h: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.cpp: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.h: + * examples/handcrafted/BasicSP_EC2/BasicSP.idl: + + Updated handcrafted event channel example; components now provide and use the + RtecEventChannelAdmin::EventChannel interface. + +2003-08-11 Arvind S. Krishna + + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTrip/svc.conf: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTrip/run_test.pl: + The client was not using the proper svc conf file to run in + "single-threaded" mode. Added proper svc.conf file and support + code in the client. The .mpc file was modified to add client's + dependency with TAO_Strategies library. + +Thu Aug 07 16:46:42 2003 Nanbor Wang + + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + Changed to use base project qt-min_moc as we don't need to use + ACE_QtReactor. + +Wed Aug 06 17:00:05 2003 Nanbor Wang + + * docs/XML/ciao_rt_cad_ext.dtd: Added DTD for RT extension to cad + file. + +2003-08-06 Arvind S. Krishna + + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTrip/run_test.pl: + Fixed problems relating to parsing arguments when the number of + iterations is specified from the command line. + +Tue Aug 05 17:25:45 2003 George Edwards + + * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP_EC2/EC/EC.mpc: + * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc: + * examples/handcrafted/BasicSP_EC2/BasicSP.mpc: + + Added library include paths and additional library to MPC + files. + + Removed file: + * examples/handcrafted/BasicSP_EC2/EC/config: + + Removed unnecessary file. + + * examples/handcrafted/BasicSP_EC2/EC/controller.cpp: + * examples/handcrafted/BasicSP_EC2/EC/client.cpp: + + Included ace/Streams.h. + +Tue Aug 05 13:23:12 2003 George Edwards + + Added files: + * examples/handcrafted/BasicSP_EC2/*.*: + * examples/handcrafted/BasicSP_EC2/BMClosedED/*.*: + * examples/handcrafted/BasicSP_EC2/BMDevice/*.*: + * examples/handcrafted/BasicSP_EC2/EC/*.*: + * examples/handcrafted/BasicSP_EC2/descriptors/*.*: + * examples/handcrafted/BasicSP_EC2/BMDisplay/*.*: + * examples/handcrafted/BasicSP_EC2/RTEventService/*.*: + + Added new event channel example. The event service is + integrated as a separate component. + +2003-08-04 Arvind S. Krishna + + * performance-tests/Benchmark/RountTripClient/run_test.pl: + * performance-tests/Benchmark/RountTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RountTrip/RoundTrip_exec.cpp: + Fixed errors in the perl file for running the example. Corrected + the way in which throughput is measured within the client + component. Also added code to enable tests to be run in the + super user mode. + +2003-08-04 Diego Sevilla + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Benchmark/RoundTripClient/run_test.pl: + * performance-tests/Benchmark/descriptors/RoundTripClient.cad: + * performance-tests/Benchmark/descriptors/RoundTripClient.csd: + * performance-tests/Benchmark/descriptors/RoundTripClient.ssd: + Made the test to run. Fixed some problems with UUID. Made the + client to correctly expect a component instance instead of a + home. + +Mon Jul 7 23:35:14 2003 Nanbor Wang + + * tools/RTComponentServer/ComponentServer_Task.inl: + * tools/Simple_Component_Server/Simple_Component_Server.cpp: Fixed + compilation errors/warnings on Linux. + +Fri Aug 01 23:34:38 2003 Nanbor Wang + + * tools/Simple_Component_Server/sample_client.cpp: + * tools/Assembly_Deployer/Assembly_Deployer.cpp: Fixed compilation + errors. We need to include "ace/streams.h" explicitly if we + want to use iostream stuff. + +2003-08-01 Diego Sevilla + + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + Small bug fix. + + * performance-tests/Benchmark/Benchmark.idl: Added missing + Controller interface. + +2003-07-31 Diego Sevilla + + * performance-tests/Benchmark/Benchmark.idl: + * performance-tests/Benchmark/Benchmark.mpc: + * performance-tests/Benchmark/BenchmarkE.idl: + * performance-tests/Benchmark/Benchmark_stub_export.h: + * performance-tests/Benchmark/Benchmark_svnt_export.h: + * performance-tests/Benchmark/NOTE.txt: + * performance-tests/Benchmark/README: + * performance-tests/Benchmark/RoundTrip/README: + * performance-tests/Benchmark/RoundTrip/RoundTrip.cidl: + * performance-tests/Benchmark/RoundTrip/RoundTrip.idl: + * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc: + * performance-tests/Benchmark/RoundTrip/RoundTripEI.idl: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h: + * performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h: + * performance-tests/Benchmark/RoundTrip/client.cpp: + * performance-tests/Benchmark/RoundTrip/run_test.pl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc: + * performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h: + * performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h: + * performance-tests/Benchmark/RoundTripClient/client.cpp: + * performance-tests/Benchmark/RoundTripClient/run_test.pl: + * performance-tests/Benchmark/descriptors/Benchmark.cad: + * performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini: + * performance-tests/Benchmark/descriptors/RoundTrip.csd: + * performance-tests/Benchmark/descriptors/RoundTrip.ssd: + * performance-tests/Benchmark/descriptors/RoundTripClient.cad: + * performance-tests/Benchmark/descriptors/RoundTripClient.csd: + * performance-tests/Benchmark/descriptors/RoundTripClient.ssd: + * performance-tests/Benchmark/descriptors/test.dat: + Added files for the performance tests Arvind and I are + developing. + + * CIDLC/ServantHeaderGenerator.cpp: Removed usage of Traversal + namespace to avoid name clashing. + + * CIDLC/ExecutorMappingGenerator.cpp: + * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: + Generate SessionContext by now instead of CCMContext for local + interfaces. + +Thu Jul 31 16:50:29 2003 George Edwards + + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h: + * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.cpp: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h: + * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.cpp: + + Made modifications requested. Added @@ Bala comments to + indicate changes. + +2003-07-31 Diego Sevilla + + * examples/OEP/BasicSP/EC/EC_exec.{cpp,h}: Changed the exception + specification for the new_EC method (explicit home operations + don't throw CCMException.) + + * examples/OEP/Display/RateGen/RateGen_exec.{cpp,h}: Ditto. + + * CIDLC/*: Adapted the CIDL compiler to work with the new CCF + library. Basically the same code is generated with small bugs + fixed. + +Wed Jul 30 07:26:29 2003 Balachandran Natarajan + + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h: + * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp: Added @@ George + comments for George. This is a code review. Same comments apply + to other components. + +Tue Jul 29 15:36:20 2003 Boris Kolpackov + + * CCF/*.*: Replaced old version with a new one. + +Thu Jul 24 16:22:27 2003 George Edwards + + Added new files: + * examples/handcrafted/BasicSP_EC/*.*: + * examples/handcrafted/BasicSP_EC/BMClosedED/*.*: + * examples/handcrafted/BasicSP_EC/BMDevice/*.*: + * examples/handcrafted/BasicSP_EC/BMDisplay/*.*: + * examples/handcrafted/BasicSP_EC/descriptors/*.*: + * examples/handcrafted/BasicSP_EC/EC/*.*: + + Modified BasicSP example to use TAO's RT event channel for + event propagation. This involved modifications to each + component's servant header and source files, which are normally + generated by the CIDL compiler. + +Sun Jul 13 20:14:42 2003 Nanbor Wang + + * README: Updated information on MPC tools. ACE/TAO are in + transition to use MPC based solution exclusively (like what CIAO + is doing already.) There are currently some mismatch between + MPC genearted Makefile/project files and the stock ones. Be + caution. + + Once we switch to all MPC based approach, this will no longer be + a problem. + +Wed Jul 09 21:06:12 2003 Nanbor Wang + + * tools/ServerActivator/ServerActivator.cpp: Fixed compilation due + to earlier change in the signature of ServerActivator_Impl::init + method. + +Tue Jul 08 10:52:56 2003 Nanbor Wang + + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/README: Reverted the previous documentation change, + instead, register the daemon interface as "CIAODaemon" in the + internal IOR table. This provides a more consistent naming + scheme throughout. Thanks to Roland Schimmack + for motivating this change. + +Tue Jul 08 07:11:23 2003 Nanbor Wang + + * tools/Daemon/README: Fixed discrepancy in document. The + IOR-Table entry for daemon interface should be "CIAO-Daemon" + instead of "CIAODaemon". Thanks to Roland Schimmack + for reporting this. + +Sun Jul 06 21:40:39 2003 Nanbor Wang + + There are two major changes in this entry. + + 1. A scheme for associating component server with a logical + configuration and to map the logical name to a real svc.conf + file. Each local CIAO_Daemon can determine what default + svc.conf file to use, if none specified, and how logical + names map to actual svc.conf files. + + 2. Added mechanism to pass the ConfigValues from + Components::Deployment::ServerActivator::create_component_server + to a Components::Deployment::ComponentServer instance which it + can later use for futher configure the ComponentServer. + + * ciao/Server_init.cpp: + * ciao/Server_init.h: Added a new Utility namespace for commonly + used server side functions. Currently only a write_IOR + method is available. + + * ciao/CIAO_Servers.idl: Updated + CIAO::Activator_Callback::register_component_server method to + pass back ComponentServer's ConfigValues. + + * docs/ConfigValues.html: Docuement the new ConfigValue name + ("CIAO-svcconf-id") that CIAO recognize. + + * ciao/ServerActivator_Impl.cpp: + * ciao/ServerActivator_Impl.h: + * ciao/ServerActivator_Impl.inl: Changed to support: + + Activator_Callback change. + + Mechanisms to maintain an (id, svc.conf) mapping, and keeping a + default svc.conf file. + + * ciao/ComponentServer_Impl.h: + * ciao/ComponentServer_Impl.inl: Changed to update the + ConfigValues when calling back to the ServerActivator. + + * examples/OEP/Display/descriptors/svcmap.dat: Added an example + svcconf-id to svc.conf filename mapping file. + + * tools/Assembly_Deployer/Assembly_Visitors.cpp: Extend the the + syntax of tag. It can now contain an optional '|' + delimited svc.conf id to provide the CIAO Daemon the logical + svc.conf file should use. + + * tools/Assembly_Deployer/Deployment_Configuration.cpp: Enhanced + to provide a more comprehensive error message. + + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/README: Extended CIAODaemon's command line options + to pass in the default svc.conf filename and the (id, svc.conf) + mapping data file. + + * tools/ComponentServer/ComponentServer.cpp: Changed to update + this component server's ConfigValues after calling back to the + ServerActivator. Removed the old write_IOR function and changed + to use the global function in CIAO::Utility namespace. + + * tools/Simple_Component_Server/Simple_Component_Server.cpp: Some + minor memory leaks were identified in this file, but I didn't + have time to fix them yet. So added comments to identify them. + +Sun Jul 06 19:41:06 2003 Nanbor Wang + + * examples/OEP/Display/NavDisplayGUI_exec/README: Documented how + one can generate a project that work for this component. + +Thu Jul 03 16:04:35 2003 Nanbor Wang + + * ciao/CCM_Core.mpc: Fixed compilation errors by + + . Including $(TAO_ROOT)/orbsvcs/orbsvcs to IDL and C++ include + paths. It's necessary to do this because security idl files + includes other stuff in that subdir. + + . Adding dependency to ifr_client to CIAO_Container library. + +Wed Jul 02 14:57:00 2003 Justin Michel + + * CIAO.mwc + * CIDLC/cidlc.mpc + * CIDLC/parser_examples/examples.mwc + * examples/OEP/examples.mwc + * examples/handcrafted/examples.mwc + * examples/handcrafted/BasicSP/EC/EC.mpc + * examples/handcrafted/Hello/hello.mpc + * tests/tests.mwc + * tools/tools.mwc + + Added workspaces and updated projects files to use + the latest MPC features. + +Wed Jun 25 11:00:00 2003 Justin Michel + + * ciao/CCM_Core.mpc: + * examples/OEP/BasicSP/BasicSP.mpc: + * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/OEP/BasicSP/BMDevice/BMDevice.mpc: + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/BasicSP/EC/EC.mpc: + * examples/OEP/Display/HUDisplay.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: + * examples/handcrafted/BasicSP/BasicSP.mpc: + * examples/handcrafted/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/BasicSP/EC/EC.mpc: + * examples/handcrafted/Display/HUDisplay.mpc: + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/handcrafted/Display/RateGen/RateGen.mpc: + * examples/handcrafted/Hello/hello.mpc: + * tools/Assembly_Deployer/Assembly_Deployer.mpc: + * tools/ComponentServer/ComponentServer.mpc: + * tools/Daemon/Daemon.mpc: + * tools/ServerActivator/ServerActivator.mpc: + * tools/Simple_Component_Server/Simple_Component_Server.mpc: + * tools/XML_Helpers/XMLHelpers.mpc: + + Added and updated mpc files to use the latest + features and make use of base projects. + + +Tue Jun 24 15:42:46 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: Updated mpc file generator to + take advantage of the new CIDL rules. + + * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/OEP/BasicSP/BMDevice/BMDevice.mpc: + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/BasicSP/EC/EC.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: + * examples/handcrafted/BasicSP/BasicSP.mpc: + * examples/handcrafted/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/handcrafted/BasicSP/BMDevice/BMDevice.mpc: + * examples/handcrafted/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/handcrafted/Display/HUDisplay.mpc: + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/handcrafted/Display/RateGen/RateGen.mpc: + * examples/handcrafted/Hello/hello.mpc: Updated mpc files to take + advantage of the new CIDL build rules, and to use the new + ciao_servant mpc template for building servant DLLs and + ciao_component mpc template for building component executor + DLLs.. + +Sun Jun 22 15:23:00 2003 Nanbor Wang + + * examples/OEP/BasicSP/EC/EC.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: Renamed projects named + "controller" to resolve project name conflicts. + +Sun Jun 22 09:03:57 2003 Nanbor Wang + + * ciao/diffs/*: Removed obsolete diff files. + +Sat Jun 21 10:30:24 2003 Nanbor Wang + + * examples/OEP/BasicSP/BasicSP.mpc: + * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc: + * examples/OEP/BasicSP/BMDevice/BMDevice.mpc: + * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc: + * examples/OEP/BasicSP/EC/EC.mpc: Added new MPC files. + + * examples/OEP/BasicSP/BasicSP.dsw: + * examples/OEP/BasicSP/BasicSP_stub.dsp: + * examples/OEP/BasicSP/BasicSP_svnt.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_stub.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_svnt.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt.dsp: + * examples/OEP/BasicSP/EC/EC_client.dsp: + * examples/OEP/BasicSP/EC/EC_exec.dsp: + * examples/OEP/BasicSP/EC/EC_stub.dsp: + * examples/OEP/BasicSP/EC/EC_svnt.dsp: + * examples/OEP/BasicSP/EC/controller.dsp: Removed these + handcrafted projects/workspaces now that we genertae them via MPC. + +Sat Jun 21 09:50:37 2003 Nanbor Wang + + * examples/OEP/Display/HUDisplay.mpc: + * examples/OEP/Display/GPS/GPS.mpc: + * examples/OEP/Display/NavDisplay/NavDisplay.mpc: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/OEP/Display/RateGen/RateGen.mpc: Added new MPC files + that can handle CIDL and Qt files. + + * examples/OEP/Display/Display.dsw: + * examples/OEP/Display/HUDisplay_stub.dsp: + * examples/OEP/Display/HUDisplay_svnt.dsp: + * examples/OEP/Display/GPS/GPS_exec.dsp: + * examples/OEP/Display/GPS/GPS_stub.dsp: + * examples/OEP/Display/GPS/GPS_svnt.dsp: + * examples/OEP/Display/GPS/GPS_tracing_exec.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_stub.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp: + * examples/OEP/Display/RateGen/RateGen_client.dsp: + * examples/OEP/Display/RateGen/RateGen_exec.dsp: + * examples/OEP/Display/RateGen/RateGen_stub.dsp: + * examples/OEP/Display/RateGen/RateGen_svnt.dsp: + * examples/OEP/Display/RateGen/controller.dsp: Removed handcrafted + projects/workspaces now that we can generate them with MPC + files. + +Fri Jun 20 21:06:23 2003 Nanbor Wang + + * examples/OEP/Display/HUDisplay_stub.dsp: + * examples/OEP/Display/HUDisplay_svnt.dsp: Fixed incorrect usages + of environment variables in project files. + +Fri Jun 20 11:41:50 2003 Nanbor Wang + + * ciao/ServerActivator_Impl.cpp (create_component_server): + Added more code to generate debug info when things go wrong. + Thanks to Emre Turkay for + motivating this. + +Fri Jun 20 10:21:10 2003 Chad Elliott + + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + + Added inheritance from qt_moc and removed the custom definition + for MOC_Files. + +Thu Jun 19 07:54:42 2003 Chad Elliott + + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + + Added 'specific' scopes to take into account the different qt + library names on different platforms. + +Tue Jun 17 11:02:19 2003 Nanbor Wang + + * examples/handcrafted/Hello/README: Updated the obsolete + instructions to test run this component. Thanks to Jesse + Greenwald for reporting this. + +Mon Jun 16 11:16:52 2003 Chris Cleeland + + * CIAO version 0.3.3 released. + +Sun Jun 08 10:42:15 2003 Nanbor Wang + + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: Added code + to registered the ValueFactory with the ORB so we can deploy + this component independent of others in this example. Enhanced + the debug output a bit. + + * docs/releasenote.html: Added info on CIDL compiler. + + * exampels/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp: + Really checked in the following change. + + Mon Jun 02 23:36:29 2003 Nanbor Wang + +Tue Jun 03 07:55:01 2003 Simon McQueen + + * CIAO version 0.3.2 released. + +Tue Jun 3 01:26:04 2003 Jeff Parsons + + * examples/OEP/BasicSP/BasicSP.dsw: + * examples/OEP/BasicSP/BasicSP_stub.dsp: + * examples/OEP/BasicSP/BasicSP_svnt.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub.dsp: + * examples/OEP/BasicSP/EC/EC_stub.dsp: + * examples/OEP/Display/HUDisplay_stub.dsp: + * examples/OEP/Display/HUDisplay_svnt.dsp: + + Updated settings in these files. + + * examples/OEP/BasicSP/NOTE.txt: + + Fixed typos. + + * examples/OEP/BasicSP/descriptors/daemon.ior: + + Removed this file from the repository - it's just a temporary. + +Mon Jun 02 23:36:29 2003 Nanbor Wang + + * exampels/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp: + Regenerated and hand modified the project file. + +Mon Jun 2 22:45:05 2003 Jeff Parsons + + * ciao/ComponentsC.h: + * ciao/ComponentsS.h: + + Contains the *C.h and *S.h corresponding to the include in Components.idl. + +Mon Jun 02 12:47:50 2003 Nanbor Wang + + * README: Revised the root readme file. + +Mon Jun 2 12:42:10 2003 Jeff Parsons + + * CCF/External/Utility/Documentation/Build.html: + + New file containing build information for the CIDL compiler. + + * CIDLC/README: + + Updated file to point to the new file above and other + documentation files in that same directory. + +Mon Jun 2 02:00:04 2003 Jeff Parsons + + * examples/OEP/BasicSP/BasicSP.dsw: + * examples/OEP/BasicSP/BasicSP_stub.dsp: + * examples/OEP/BasicSP/BasicSP_svnt.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub.dsp: + * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_exec.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_stub.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_svnt.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt.dsp: + * examples/OEP/BasicSP/EC/EC_client.dsp: + * examples/OEP/BasicSP/EC/EC_exec.dsp: + * examples/OEP/BasicSP/EC/EC_stub.dsp: + * examples/OEP/BasicSP/EC/EC_svnt.dsp: + * examples/OEP/BasicSP/EC/controller.dsp: + * examples/OEP/Display/Display.dsw: + * examples/OEP/Display/HUDisplay_stub.dsp: + * examples/OEP/Display/HUDisplay_svnt.dsp: + * examples/OEP/Display/GPS/GPS_exec.dsp: + * examples/OEP/Display/GPS/GPS_stub.dsp: + * examples/OEP/Display/GPS/GPS_svnt.dsp: + * examples/OEP/Display/GPS/GPS_tracing_exec.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_stub.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp: + * examples/OEP/Display/NavDisplayGUI_exec/README + * examples/OEP/Display/RateGen/RateGen_client.dsp: + * examples/OEP/Display/RateGen/RateGen_exec.dsp: + * examples/OEP/Display/RateGen/RateGen_stub.dsp: + * examples/OEP/Display/RateGen/RateGen_svnt.dsp: + * examples/OEP/Display/RateGen/controller.dsp: + + Fixed project and workspace settings for the generated + version of the HUDisplay and BasicSP examples. + +Sun Jun 1 23:00:53 2003 Balachandran Natarajan + + * Makefile: Added the path to the RELEASE_FILES + +Sun Jun 1 19:07:49 2003 Jeff Parsons + + * CIDLC/README: + * examples/OEP?BasicSP/README: + * examples/OEP/Display/README: + + Updated these files with info about the URL for downloading + CIDL compiler binaries. + +Sun Jun 1 14:30:53 2003 Jeff Parsons + + * docs/releasenotes.html: + * docs/todo.html: + + Added items related to the CIDL compiler. + +Sat May 31 10:54:11 2003 Balachandran Natarajan + + * Makefile: We dont have any special files like INSTALL that needs + specila attention during the release. + +Fri May 30 19:33:36 2003 Jeff Parsons + + * CCF/DesignNotes: + * CCF/Makefile: + * CCF/Version: + * CCF/CCF/CCF.sln: + * CCF/CCF/Makefile: + * CCF/CCF/CIDL/CIDL.cpp: + * CCF/CCF/CIDL/CIDL.vcproj: + * CCF/CCF/CIDL/CIDL_LexicalAnalyzer.hpp: + * CCF/CCF/CIDL/CIDL_Parser.hpp: + * CCF/CCF/CIDL/CIDL_SemanticAction.hpp: + * CCF/CCF/CIDL/CIDL_SemanticActionImpl.hpp: + * CCF/CCF/CIDL/CIDL_SyntaxTree.cpp: + * CCF/CCF/CIDL/CIDL_SyntaxTree.hpp: + * CCF/CCF/CIDL/CIDL_SyntaxTreeFwd.hpp: + * CCF/CCF/CIDL/CIDL_Traversal.cpp: + * CCF/CCF/CIDL/CIDL_Traversal.hpp: + * CCF/CCF/CIDL/MSVC_Pragmas.hpp: + * CCF/CCF/CIDL/Makefile: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.cpp: + * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj: + * CCF/CCF/CodeGenerationKit/CommandLine.cpp: + * CCF/CCF/CodeGenerationKit/CommandLine.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineGrammar.cpp: + * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp: + * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp: + * CCF/CCF/CodeGenerationKit/CommandLineParser.hpp: + * CCF/CCF/CodeGenerationKit/IDLStream.hpp: + * CCF/CCF/CodeGenerationKit/MSVC_Pragmas.hpp: + * CCF/CCF/CodeGenerationKit/Makefile: + * CCF/CCF/CodeGenerationKit/Regex.hpp: + * CCF/CCF/CompilerElements/DiagnosticStream.cpp: + * CCF/CCF/CompilerElements/DiagnosticStream.hpp: + * CCF/CCF/CompilerElements/ExH.hpp: + * CCF/CCF/CompilerElements/FileSystem.hpp: + * CCF/CCF/CompilerElements/MSVC_Pragmas.hpp: + * CCF/CCF/CompilerElements/Parser.hpp: + * CCF/CCF/CompilerElements/Preprocessor.hpp: + * CCF/CCF/CompilerElements/ReferenceCounting.hpp: + * CCF/CCF/CompilerElements/SemanticAction.hpp: + * CCF/CCF/CompilerElements/Token.hpp: + * CCF/CCF/CompilerElements/TokenStream.hpp: + * CCF/CCF/CompilerElements/Traversal.hpp: + * CCF/CCF/IDL2/IDL2.cpp: + * CCF/CCF/IDL2/IDL2.vcproj: + * CCF/CCF/IDL2/IDL2_LexicalAnalyzer.cpp: + * CCF/CCF/IDL2/IDL2_LexicalAnalyzer.hpp: + * CCF/CCF/IDL2/IDL2_Parser.hpp: + * CCF/CCF/IDL2/IDL2_SemanticAction.hpp: + * CCF/CCF/IDL2/IDL2_SemanticActionImpl.hpp: + * CCF/CCF/IDL2/IDL2_SyntaxTree.cpp: + * CCF/CCF/IDL2/IDL2_SyntaxTree.hpp: + * CCF/CCF/IDL2/IDL2_SyntaxTree.tpp: + * CCF/CCF/IDL2/IDL2_SyntaxTreeFwd.hpp: + * CCF/CCF/IDL2/IDL2_SyntaxTree_BuiltIn.cpp: + * CCF/CCF/IDL2/IDL2_SyntaxTree_BuiltIn.hpp: + * CCF/CCF/IDL2/IDL2_SyntaxTree_Value.hpp: + * CCF/CCF/IDL2/IDL2_Traversal.cpp: + * CCF/CCF/IDL2/IDL2_Traversal.hpp: + * CCF/CCF/IDL2/MSVC_Pragmas.hpp: + * CCF/CCF/IDL2/Makefile: + * CCF/CCF/IDL3/IDL3.cpp: + * CCF/CCF/IDL3/IDL3.vcproj: + * CCF/CCF/IDL3/IDL3_LexicalAnalyzer.hpp: + * CCF/CCF/IDL3/IDL3_Parser.hpp: + * CCF/CCF/IDL3/IDL3_SemanticAction.hpp: + * CCF/CCF/IDL3/IDL3_SemanticActionImpl.hpp: + * CCF/CCF/IDL3/IDL3_SyntaxTree.cpp: + * CCF/CCF/IDL3/IDL3_SyntaxTree.hpp: + * CCF/CCF/IDL3/IDL3_SyntaxTreeFwd.hpp: + * CCF/CCF/IDL3/IDL3_SyntaxTree_EventType.cpp: + * CCF/CCF/IDL3/IDL3_SyntaxTree_EventType.hpp: + * CCF/CCF/IDL3/IDL3_Traversal.cpp: + * CCF/CCF/IDL3/IDL3_Traversal.hpp: + * CCF/CCF/IDL3/MSVC_Pragmas.hpp: + * CCF/CCF/IDL3/Makefile: + * CCF/External/Utility/Makefile: + * CCF/External/Utility/Version: + * CCF/External/Utility/Config/Archive.gcc.post.rules: + * CCF/External/Utility/Config/Archive.gcc.pre.rules: + * CCF/External/Utility/Config/Archive.post.rules: + * CCF/External/Utility/Config/Archive.pre.rules: + * CCF/External/Utility/Config/Documentation.post.rules: + * CCF/External/Utility/Config/Documentation.pre.rules: + * CCF/External/Utility/Config/Executable.gcc.post.rules: + * CCF/External/Utility/Config/Executable.gcc.pre.rules: + * CCF/External/Utility/Config/Executable.generic.post.rules: + * CCF/External/Utility/Config/Executable.generic.pre.rules: + * CCF/External/Utility/Config/Executable.post.rules: + * CCF/External/Utility/Config/Executable.pre.rules: + * CCF/External/Utility/Config/Recursion.post.rules: + * CCF/External/Utility/Config/Recursion.pre.rules: + * CCF/External/Utility/Config/Shared.gcc.post.rules: + * CCF/External/Utility/Config/Shared.gcc.pre.rules: + * CCF/External/Utility/Config/Shared.generic.post.rules: + * CCF/External/Utility/Config/Shared.generic.pre.rules: + * CCF/External/Utility/Config/Shared.post.rules: + * CCF/External/Utility/Config/Shared.pre.rules: + * CCF/External/Utility/Config/Thoughts: + * CCF/External/Utility/Documentation/Makefile: + * CCF/External/Utility/Documentation/News.html: + * CCF/External/Utility/Documentation/index.html: + * CCF/External/Utility/Documentation/ExH/Makefile: + * CCF/External/Utility/Documentation/ExH/Makefile.documentation: + * CCF/External/Utility/Documentation/ExH/News.html: + * CCF/External/Utility/Documentation/ExH/index.html: + * CCF/External/Utility/Documentation/ExH/Example/Makefile: + * CCF/External/Utility/Documentation/ExH/Logic/Makefile: + * CCF/External/Utility/Documentation/ExH/System/Makefile: + * CCF/External/Utility/Documentation/ReferenceCounting/Makefile: + * CCF/External/Utility/Documentation/ReferenceCounting/News.html: + * CCF/External/Utility/Documentation/ReferenceCounting/index.html: + * CCF/External/Utility/Documentation/Style/CXX.css: + * CCF/External/Utility/Documentation/Style/CXX_Blue.css: + * CCF/External/Utility/Documentation/Synch/Makefile: + * CCF/External/Utility/Documentation/Synch/News.html: + * CCF/External/Utility/Documentation/Synch/index.html: + * CCF/External/Utility/Documentation/Synch/Policy/Makefile: + * CCF/External/Utility/Utility/ExH/Compound.hpp: + * CCF/External/Utility/Utility/ExH/Compound.tpp: + * CCF/External/Utility/Utility/ExH/Converter.hpp: + * CCF/External/Utility/Utility/ExH/Converter.tpp: + * CCF/External/Utility/Utility/ExH/ExH.hpp: + * CCF/External/Utility/Utility/ExH/StringConverter.hpp: + * CCF/External/Utility/Utility/ExH/StringConverter.ipp: + * CCF/External/Utility/Utility/ExH/StringStreamConverter.hpp: + * CCF/External/Utility/Utility/ExH/StringStreamConverter.ipp: + * CCF/External/Utility/Utility/ExH/Logic/DescriptiveException.hpp: + * CCF/External/Utility/Utility/ExH/Logic/DescriptiveException.ipp: + * CCF/External/Utility/Utility/ExH/Logic/Exception.hpp: + * CCF/External/Utility/Utility/ExH/Logic/Exception.ipp: + * CCF/External/Utility/Utility/ExH/System/DescriptiveException.hpp: + * CCF/External/Utility/Utility/ExH/System/DescriptiveException.ipp: + * CCF/External/Utility/Utility/ExH/System/Exception.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/DefaultImpl.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/DefaultImpl.ipp: + * CCF/External/Utility/Utility/ReferenceCounting/ExternalLockImpl.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/ExternalLockImpl.ipp: + * CCF/External/Utility/Utility/ReferenceCounting/Interface.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/Interface.ipp: + * CCF/External/Utility/Utility/ReferenceCounting/Interface.tpp: + * CCF/External/Utility/Utility/ReferenceCounting/ReferenceCounting.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/SmartPtr.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/SmartPtr.tpp: + * CCF/External/Utility/Utility/ReferenceCounting/StrictPtr.hpp: + * CCF/External/Utility/Utility/ReferenceCounting/StrictPtr.tpp: + * CCF/External/Utility/Utility/Synch/Policy/Null.hpp: + * CCF/External/Utility/Utility/Synch/Policy/Null.ipp: + * CIDLC/CIDLC.sln: + * CIDLC/CIDLC.vcproj: + * CIDLC/ExecutorMapp:ingGenerator.cpp: + * CIDLC/ExecutorMapp:ingGenerator.hpp: + * CIDLC/Literals.hpp: + * CIDLC/Makefile: + * CIDLC/ServantGenerator.cpp: + * CIDLC/ServantGenerator.hpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantHeaderGenerator.hpp: + * CIDLC/ServantSourceGenerator.cpp: + * CIDLC/ServantSourceGenerator.hpp: + * CIDLC/Version: + * CIDLC/cidlc.cpp: + + Source code, documentation and build files for the + CIDL compiler. + +Fri May 30 18:18:25 2003 Jeff Parsons + + * CIDLC/*: + + Removed all files in this directory from the repository except + DesignNotes, which will reappear in a new directory along with + other CIDL compiler checkins. The parser examples that were + in this directory are no longer useful or up to date. Soon + parts of the CIDL compiler will be checked into this directory. + + * README: + + New file. + +Fri May 30 17:41:05 2003 Jeff Parsons + + * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt.dsp: + * examples/OEP/BasicSP/BMDevice/BMDevice_svnt.dsp: + * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt.dsp: + * examples/OEP/BasicSP/EC/EC_svnt.dsp: + * examples/OEP/Display/GPS/GPS_svnt.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp: + * examples/OEP/Display/RateGen/RateGen_svnt.dsp: + + Changed the location of the CIDL compiler executable to + CIAO_ROOT/bin for the MSVC projects. + + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.h: + + Removed these file from the repository - they are generated + and shouldn't have been checked in. + +Fri May 30 15:25:29 2003 Jeff Parsons + + * examples/OEP/Display/Configuration-0.png: + * examples/OEP/Display/Display.dsw: + * examples/OEP/Display/HUDisplay.idl: + * examples/OEP/Display/HUDisplay.mpc: + * examples/OEP/Display/HUDisplay_stub.dsp: + * examples/OEP/Display/HUDisplay_stub_export.h: + * examples/OEP/Display/HUDisplay_svnt.dsp: + * examples/OEP/Display/HUDisplay_svnt_export.h: + * examples/OEP/Display/NOTE: + * examples/OEP/Display/README: + * examples/OEP/Display/cleanup_mpcfiles.cmd: + * examples/OEP/Display/GPS/GPS.cidl: + * examples/OEP/Display/GPS/GPS.idl: + * examples/OEP/Display/GPS/GPSEI.idl: + * examples/OEP/Display/GPS/GPS_exec.cpp: + * examples/OEP/Display/GPS/GPS_exec.dsp: + * examples/OEP/Display/GPS/GPS_exec.h: + * examples/OEP/Display/GPS/GPS_exec_export.h: + * examples/OEP/Display/GPS/GPS_stub.dsp: + * examples/OEP/Display/GPS/GPS_stub_export.h: + * examples/OEP/Display/GPS/GPS_svnt.dsp: + * examples/OEP/Display/GPS/GPS_svnt_export.h: + * examples/OEP/Display/GPS/GPS_tracing_exec.cpp: + * examples/OEP/Display/GPS/GPS_tracing_exec.dsp: + * examples/OEP/Display/GPS/GPS_tracing_exec.h: + * examples/OEP/Display/GPS/config: + * examples/OEP/Display/NavDisplay/NavDisplay.cidl: + * examples/OEP/Display/NavDisplay/NavDisplay.idl: + * examples/OEP/Display/NavDisplay/NavDisplayEI.idl: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_exec.h: + * examples/OEP/Display/NavDisplay/NavDisplay_exec_export.h: + * examples/OEP/Display/NavDisplay/NavDisplay_stub.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_stub_export.h: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.cpp: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt.h: + * examples/OEP/Display/NavDisplay/NavDisplay_svnt_export.h: + * examples/OEP/Display/NavDisplay/config: + * examples/OEP/Display/NavDisplay/run_test.pl: + * examples/OEP/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/AddNavUnitCmd.h: + * examples/OEP/Display/NavDisplayGUI_exec/Command.h: + * examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/DetailView.h: + * examples/OEP/Display/NavDisplayGUI_exec/MapView.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/MapView.h: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp: + * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * examples/OEP/Display/NavDisplayGUI_exec/NavUnit.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NavUnit.h: + * examples/OEP/Display/NavDisplayGUI_exec/NodeItem.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/NodeItem.h: + * examples/OEP/Display/NavDisplayGUI_exec/QuitCmd.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/QuitCmd.h: + * examples/OEP/Display/NavDisplayGUI_exec/README: + * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h: + * examples/OEP/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/UpdatePositionCmd.h: + * examples/OEP/Display/NavDisplayGUI_exec/Worker.cpp: + * examples/OEP/Display/NavDisplayGUI_exec/Worker.h: + * examples/OEP/Display/NavDisplayGUI_exec/trolltech.gif: + * examples/OEP/Display/NavDisplayGUI_exec/worldmap1.gif: + * examples/OEP/Display/NavDisplayGUI_exec/worldmap1.xpm: + * examples/OEP/Display/RateGen/RateGen.cidl: + * examples/OEP/Display/RateGen/RateGen.idl: + * examples/OEP/Display/RateGen/RateGenEI.idl: + * examples/OEP/Display/RateGen/RateGen_client.dsp: + * examples/OEP/Display/RateGen/RateGen_exec.cpp: + * examples/OEP/Display/RateGen/RateGen_exec.dsp: + * examples/OEP/Display/RateGen/RateGen_exec.h: + * examples/OEP/Display/RateGen/RateGen_exec_export.h: + * examples/OEP/Display/RateGen/RateGen_stub.dsp: + * examples/OEP/Display/RateGen/RateGen_stub_export.h: + * examples/OEP/Display/RateGen/RateGen_svnt.dsp: + * examples/OEP/Display/RateGen/RateGen_svnt_export.h: + * examples/OEP/Display/RateGen/client.cpp: + * examples/OEP/Display/RateGen/config: + * examples/OEP/Display/RateGen/controller.cpp: + * examples/OEP/Display/RateGen/controller.dsp: + * examples/OEP/Display/RateGen/run_test.pl: + * examples/OEP/Display/descriptors/CIAO_Installation_Data.ini: + * examples/OEP/Display/descriptors/DuelDisplay.cad: + * examples/OEP/Display/descriptors/GPS.csd: + * examples/OEP/Display/descriptors/GPS.ssd: + * examples/OEP/Display/descriptors/GPS_tracing.csd: + * examples/OEP/Display/descriptors/HUDisplay.cad: + * examples/OEP/Display/descriptors/HUDisplayGUI.cad: + * examples/OEP/Display/descriptors/NOTE.txt: + * examples/OEP/Display/descriptors/NavDisplay.csd: + * examples/OEP/Display/descriptors/NavDisplay.ssd: + * examples/OEP/Display/descriptors/NavDisplayGUI.csd: + * examples/OEP/Display/descriptors/RateGen.csd: + * examples/OEP/Display/descriptors/RateGen.ssd: + * examples/OEP/Display/descriptors/RemoteDisplay.cad: + * examples/OEP/Display/descriptors/RemoteDisplayGUI.cad: + * examples/OEP/Display/descriptors/test.dat: + + New example, same as the one in examples/handcrafted/Display, + but using CIDL compiler generated code. + +Fri May 30 14:27:55 2003 Balachandran Natarajan + + * PROBLEM-REPORT-FORM (Subject): Fixed a typo. + +Fri May 30 14:15:45 2003 Balachandran Natarajan + + * VERSION: + * PROBLEM-REPORT-FORM (Subject): Files needed for the release. + +Fri May 30 14:11:11 2003 Balachandran Natarajan + + * ciao/Version.h: Changed the version info to be 0.3.1 instead of + 0.1.1. We want it to go the way ACE+TAO go. + +Fri May 30 13:57:26 2003 Balachandran Natarajan + + * Makefile: A new top level Makefile which will have the needed + information for the release. + +Fri May 30 12:29:37 2003 Jeff Parsons + + * examples/OEP/BasicSP/BasicSP.dsw: + * examples/OEP/BasicSP/BasicSP.idl: + * examples/OEP/BasicSP/BasicSP.mpc: + * examples/OEP/ + files. + + * examples/handcrafted/Display/HUDisplay_svnt.cpp: + * examples/handcrafted/Display/HUDisplay_svnt.inl: + * examples/handcrafted/Display/GPS/GPSE.idl: + * examples/handcrafted/Display/GPS/GPS_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_exec.h: + * examples/handcrafted/Display/GPS/GPS_svnt.cpp: + * examples/handcrafted/Display/GPS/GPS_tracing_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_tracing_exec.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * examples/handcrafted/Display/RateGen/RateGenE.idl: + * examples/handcrafted/Display/RateGen/RateGen_exec.cpp: + * examples/handcrafted/Display/RateGen/RateGen_exec.h: + * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp: + * examples/handcrafted/Display/RateGen/client.cpp: + * examples/handcrafted/Display/RateGen/controller.cpp: + * examples/handcrafted/Hello/client.cpp: + * examples/handcrafted/Hello/helloE.idl: + * examples/handcrafted/Hello/hello_servants.cpp: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Visitors.h: + * tools/Assembly_Deployer/Assembly_Visitors.inl: + * tools/ComponentServer/ComponentServer.cpp: + * tools/ComponentServer/ComponentServer_test_client.cpp: + * tools/Daemon/controller_i.cpp: + * tools/Daemon/controller_i.h: + * tools/ServerActivator/ServerActivator_test_client.cpp: + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/Assembly_Spec.cpp: + * tools/XML_Helpers/Assembly_Spec.inl: + * tools/XML_Helpers/Cascadable_DocHandler.cpp: + * tools/XML_Helpers/Softpkg_Handlers.cpp: Fixed compilation errors + and warnings. They include + + Using a _var in places where a _ptr is expected. + + Incorrect Capitalization of file names. + + Unused variables warnings. + + Exception throw specification mis-matches. + + * docs/templates/CIAO_Glue_Session_Template.cpp: Propagated + previous fixes into the tempate code. + + * ciao/Container_Base.cpp: Removed a redundant ACE_INLINE decl. + +Tue Apr 15 17:07:52 2003 Nanbor Wang + + * tools/XML_Helpers/Assembly_Spec.h: + * tools/XML_Helpers/Softpkg_Handlers.h: + * tools/XML_Helpers/XMLHelpers.mpc: + * tools/XML_Helpers/XML_Utils.h: + * tools/XML_Helpers/XML_Helpers_Export.h: Refactored these files + to make them into a library. + + * tools/XML_Helpers/XML_Helpers.dsw: + * tools/XML_Helpers/Helper_Test.dsp: + * tools/Daemon/CIAO_Daemon.dsp: + * tools/Daemon/Daemon.dsw: + * tools/Daemon/DaemonController.dsp: Removed these project files + and depend solely on MPC generated files. + + * tools/Assembly_Deployer/Assembly_Deployer.mpc: + * tools/Daemon/Daemon.mpc: Updated MPC files to link with the new + XML_Helpers library. + +Tue Apr 15 11:07:36 2003 Nanbor Wang + + * ciao/Daemon.idl: + * ciao/Daemon_Impl.h: + * ciao/Daemon_Impl.inl: + * ciao/Daemon_Impl.cpp: + * tools/Daemon/Daemon.idl: + * tools/Daemon/Daemon_Impl.h: + * tools/Daemon/Daemon_Impl.inl: + * tools/Daemon/Daemon_Impl.cpp: + * ciao/CCM_Core.mpc: + * ciao/CIAO_Server.dsp: + * tools/Daemon/CIAO_Daemon.dsp: + * tools/Daemon/Daemon.mpc: + * tools/Daemon/DaemonController.dsp: Moved Daemon idl file and + implementations out of CIAO_Server library into Daemon + implemenation. + + Removed HomeRegistrar related files from the projects of the + CIAO_Server library. They need to be moved a a proper place in + the near future. + + * docs/todo.html: Document other refactoring needed in the + CCM_Core libraries. + +Mon Apr 14 17:06:37 2003 Nanbor Wang + + * examples/handcrafted/Display/HUDisplay_svnt.cpp: + * examples/handcrafted/Display/HUDisplay_svnt.h: + * examples/handcrafted/Display/GPS/GPS_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_exec.h: + * examples/handcrafted/Display/GPS/GPS_svnt.cpp: + * examples/handcrafted/Display/GPS/GPS_svnt.h: + * examples/handcrafted/Display/GPS/GPS_tracing_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_tracing_exec.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/handcrafted/Display/RateGen/RateGen_exec.cpp: + * examples/handcrafted/Display/RateGen/RateGen_exec.h: + * examples/handcrafted/Display/RateGen/client.cpp: + * examples/handcrafted/Display/RateGen/controller.cpp: + * examples/handcrafted/Display/RateGen/run_test.pl: + * examples/handcrafted/Display/descriptors/NOTE.txt: Updated + docuemntation. Changed to inherit Pulse_Handler from + ACE_Task_Base. Reworked controller.cpp so that it won't look + like the process that actually generates the events. + +Mon Apr 14 14:57:51 2003 Nanbor Wang + + * examples/handcrafted/Display/RateGen/controller.cpp: Changed to + perform only one action in each exection of this program. I.e., + it either switch on or off the RateGen component and exit + immediately. This is to avoid the mis-conception that the + controller actually generates the Rate. + +Sat Apr 12 12:36:08 2003 Nanbor Wang + + * CIDLC/parser_examples/cidl/cidl.vcproj: + * CIDLC/parser_examples/idl2/idl2.vcproj: + * CIDLC/parser_examples/idl3/idl3.vcproj: Changed the extra + include paths from: + + ..,../spirit-1.3.0,../spirit-1.3.0/miniboost + + to: + + ..,$(SPIRIT_DIR),$(SPIRIT_DIR)/miniboost + + to be consistent with the MPC files and to decouple Spirit from + CIAO's directory strucutre. + +Sat Apr 12 10:48:13 2003 Nanbor Wang + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.inl: Incorporated + changes for fixing gcc compilation warnings. + + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/ComponentServer/ComponentServer.cpp: + * tools/ComponentServer/ComponentServer_test_client.cpp: + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Simple_Component_Server/Simple_Component_Server.cpp: Added + misiing newlines in usage messages. + +Sat Apr 12 01:25:35 2003 Nanbor Wang + + * CIDLC/parser_examples/README: + * CIDLC/parser_examples/cidl/cidl.mpc: + * CIDLC/parser_examples/idl2/idl2.mpc: + * CIDLC/parser_examples/idl3/idl3.mpc: Added new MPC files to take + advantage of MPC/MWC tool. Updated the README to provide some + minimal instructions. + +Tue Apr 8 23:10:43 2003 Jeff Parsons + + * CIDLC/parser_examples/README: + * CIDLC/parser_examples/parser_examples.sln: + * CIDLC/parser_examples/cidl/cidl.cpp: + * CIDLC/parser_examples/cidl/cidl.vcproj: + * CIDLC/parser_examples/cidl/cidl_grammar.cpp: + * CIDLC/parser_examples/cidl/cidl_grammar.h: + * CIDLC/parser_examples/cidl/hello.cidl: + * CIDLC/parser_examples/idl2/idl2.cpp: + * CIDLC/parser_examples/idl2/idl2.vcproj: + * CIDLC/parser_examples/idl2/idl2_grammar.cpp: + * CIDLC/parser_examples/idl2/idl2_grammar.h: + * CIDLC/parser_examples/idl2/test_idl2.idl: + * CIDLC/parser_examples/idl3/idl3.cpp: + * CIDLC/parser_examples/idl3/idl3.vcproj: + * CIDLC/parser_examples/idl3/idl3_grammar.cpp: + * CIDLC/parser_examples/idl3/idl3_grammar.h: + * CIDLC/parser_examples/idl3/test_idl3.idl: + + Added parser examples (IDL2, IDL3, and CIDL) using the Spirit + parser. + +Tue Apr 08 19:42:16 2003 Nanbor Wang + + * examples/handcrafted/Display/GPS/GPS_tracing_exec.h: Fixed + a class name mismatch. + +Mon Apr 07 21:20:37 2003 Nanbor Wang + + * ciao/ServerActivator_Impl.cpp: Fixed a couple of compilation + warnings with gcc. + + * ciao/CIAO_Client.dsp: + * ciao/CIAO_Container.dsp: + * ciao/CIAO_Server.dsp: Turned on RTTI to sync up with the new Any + implementation. + + * ciao/CIAO_common.h: + * ciao/Cookies.cpp: Fixed the use of old CORBA_* types. They are + no longer available in the newer version of ACE/TAO. + +Sun Apr 06 20:36:39 2003 Nanbor Wang + + * examples/handcrafted/Display/CIAO_Installation_Data.ini: + * examples/handcrafted/Display/HUDisplay.cad: + * examples/handcrafted/Display/GPS/GPS.csd: + * examples/handcrafted/Display/GPS/GPS.ssd: + * examples/handcrafted/Display/NavDisplay/NavDisplay.csd: + * examples/handcrafted/Display/NavDisplay/NavDisplay.ssd: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.csd: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.ssd: + * examples/handcrafted/Display/RateGen/RateGen.csd: + * examples/handcrafted/Display/RateGen/RateGen.ssd: Removed these + files as they have already been moved to the + examples/handcrafted/Display/descriptors/ subdirectory. + + * examples/handcrafted/Display/NOTE: Updated obsolete notes. + + Thanks to Andrey Nechypurenko + for the following + changes. He reported, motivated or sent patches for them. + + * examples/handcrafted/Display/descriptors/NOTE.txt: Fixed several + typos. + + * examples/handcrafted/Display/descriptors/DuelDisplay.cad: + * examples/handcrafted/Display/descriptors/GPS_tracing.csd: + * examples/handcrafted/Display/descriptors/HUDisplayGUI.cad: + * examples/handcrafted/Display/descriptors/RemoteDisplayGUI.cad: + Updated these assembly descriptors to use the new GPS component + that emulate a trace (instead of the random coordinates). + + * examples/handcrafted/Display/NavDisplay/client.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/run_test.pl: + Removed these testing artifacts because NavDisplay component + requires other component to function properly. + + * tools/XML_Helpers/Assembly_Spec.inl: Fixed VC7.1 compilation + error. + + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/GPS/GPS_tracing_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_tracing_exec.h: Added a + new implementation for the GPS component. This implementation + simulates coordinates of a trace instead of some random + positions. + + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/NavDisplayGUI_exec/DetailView.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/MapView.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + Please find in attachment slightly modified version of + NavDisplayGUI. I have modified it slightly mainly in order to + let the GUI component to find background and animation images + either based on ACE_ROOT or using ../NavDisplayGUI_exec/. + + * examples/handcrafted/Display/NavDisplayGUI_exec/README: Removed + the mentioning of run_test.pl. It's no longer valid. + +Sat Apr 05 20:08:27 2003 Nanbor Wang + + * ciao/CCM_Deployment.idl: + * ciao/Component_Base.idl: + The operation Components::Deployment::Assembly::build can throw + CreateFailure exception. It was missing in the IDL files. + + * ciao/Server_init.cpp: + Register OBV factory for CIAO::Cookie also. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + Made sure we duplicate the object reference before adding them + to subscriber/connection active maps. + + * examples/handcrafted/Display/HUDisplay.idl: + * examples/handcrafted/Display/HUDisplay.mpc: + * examples/handcrafted/Display/HUDisplay_svnt.h: + * examples/handcrafted/Display/HUDisplay_svnt.inl: + * examples/handcrafted/Display/GPS/GPS_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_exec.h: + * examples/handcrafted/Display/GPS/GPS_svnt.cpp: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/handcrafted/Display/RateGen/RateGen.mpc: + * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp: + Updated the example to support 2-dimentional position interface. + Also fixed the reference counting problem in the servant glue + code. + + + * examples/handcrafted/Display/RateGen/controller.cpp: + Added a new + + * examples/handcrafted/Display/descriptors/HUDisplay.cad: + * examples/handcrafted/Display/descriptors/HUDisplayGUI.cad: + * examples/handcrafted/Display/descriptors/RemoteDisplay.cad: + * examples/handcrafted/Display/descriptors/RemoteDisplayGUI.cad: + Added variety of different composition example. See NOTE.txt + under the same directory for more information. + + * examples/handcrafted/Display/descriptors/test.dat: + Added a "Remote" entry so showcase how to deploy a system across + several machines. + + * tools/Assembly_Deployer/Assembly_Deployer.cpp: + * tools/Assembly_Deployer/Assembly_Deployer.mpc: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Impl.h: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Visitors.h: + Added support for establishing connections according to + Assembly_Spec. + + * tools/Assembly_Deployer/Assembly_Service.idl: + * tools/Assembly_Deployer/Assembly_Service_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Service_Impl.h: + Added a simple interface in an attempt to solve the unreliable + shutdown problem. + + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/Assembly_Handlers.h: + * tools/XML_Helpers/Assembly_Handlers.inl: + * tools/XML_Helpers/Assembly_Spec.cpp: + * tools/XML_Helpers/Assembly_Spec.h: + Fixed "connectevent" parsing. I had the "source" and + "destination" interface reversed. + +Fri Apr 04 22:40:11 2003 Nanbor Wang + + * examples/handcrafted/Display/descriptors/*: Moved all XML + descriptors and deployment configuration into this newly created + subdirectory to simply procedures to test this example. + + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp: + Changed to thow a BAD_INV_ORDER exception is the receptacle is + not connected instead of a MSVC structural exception. + + * tools/Daemon/Daemon.mpc: + * tools/Daemon/DaemonController.dsp: + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/Assembly_Spec.cpp: + * tools/XML_Helpers/Assembly_Spec.h: + * tools/XML_Helpers/Assembly_Spec.inl: + * tools/Assembly_Deployer/Assembly_Deployer.cpp: + * tools/Assembly_Deployer/Assembly_Deployer.mpc: + * tools/Assembly_Deployer/Assembly_Impl.cpp: + * tools/Assembly_Deployer/Assembly_Impl.h: + * tools/Assembly_Deployer/Assembly_Impl.inl: + * tools/Assembly_Deployer/Assembly_Manager.cpp: + * tools/Assembly_Deployer/Assembly_Visitors.h: + * tools/Assembly_Deployer/Assembly_Visitors.inl: + * tools/Assembly_Deployer/Deployment_Configuration.cpp: + * tools/Assembly_Deployer/Deployment_Configuration.h: + * tools/Assembly_Deployer/Deployment_Configuration.inl: Added more + support for component installation when building an Assembly. + +Thu Apr 03 15:08:20 2003 Nanbor Wang + + * ciao/Assembly_Impl.*: + * tools/Assembly_Deployer/Assembly_Impl.*: Moved the Assembly + implementaiton files to the tools/Assembly_Deployer/ directory. + + * ciao/CCM_Core.mpc: + * ciao/CIAO_Server.dsp: Removed Assembly_Impl.*. + +Thu Apr 03 13:11:49 2003 Nanbor Wang + + * tools/XML_Helpers/Assembly_Spec.h: + * tools/XML_Helpers/Assembly_Handlers.h: + * tools/XML_Helpers/Assembly_Handlers.cpp: Added support for parsing + component and home registering info. Otherwise, it'd be hard to + use a composed application. + +Wed Apr 02 17:08:00 2003 Nanbor Wang + + * tools/XML_Helpers/Assembly_Handlers.cpp: + * tools/XML_Helpers/Assembly_Handlers.h: + * tools/XML_Helpers/Assembly_Handlers.inl: + * tools/XML_Helpers/Assembly_Spec.cpp: + * tools/XML_Helpers/Assembly_Spec.h: + * tools/XML_Helpers/Assembly_Spec.inl: + * tools/XML_Helpers/Helper_Test.dsp: Added implementations for + handling componentassembly XML documents and building the + assembly specification information. These handlers currently + process only "crucial" information needed to get a system up and + running, i.e., they do not yet extract all types of information + in a componentassembly document. + + Also important is that all XML handlers in CIAO assume all XML + documents they process are valid and well-formed. ACEXML + currently does not validate XML document yet. Therefore, you + need to validate the XML documents using other XML parser (such + as msxml) shall CIAO's assembly parsing behave strangely as the + handlers assume a validator has already taken up most of the + checking responsibility. + + * tools/XML_Helpers/Softpkg_Handlers.cpp: + * tools/XML_Helpers/Softpkg_Handlers.h: + * tools/XML_Helpers/Softpkg_Handlers.inl: + * tools/XML_Helpers/XML_Utils.cpp: + * tools/XML_Helpers/XML_Utils.h: Added a new + parse_componentassembly utility function and moved some of the + helper functions out of Softpkg_Handlers. + + * tools/XML_Helpers/main.cpp: + + * bin/generate_component_mpc.pl: Added dependent library to the + list of libraries client program links to. + + * docs/XML/componentassembly.dtd: Fixed a typo in DTD definition. + + * examples/handcrafted/Display/HUDisplay.cad: Added a + + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/NavDisplay/client.cpp: + * examples/handcrafted/Display/NavDisplay/run_test.pl: Added a + client program to test the component. + + * examples/handcrafted/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/AddNavUnitCmd.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/Command.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/DetailView.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/DetailView.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/MapView.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/MapView.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayEIC.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.csd: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.ssd: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavUnit.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NavUnit.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/NodeItem.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/NodeItem.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/QuitCmd.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/QuitCmd.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/README: + * examples/handcrafted/Display/NavDisplayGUI_exec/RootPanel.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/RootPanel.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/UpdatePositionCmd.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/Worker.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/Worker.h: + * examples/handcrafted/Display/NavDisplayGUI_exec/moc_DetailView.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/moc_MapView.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/moc_NodeItem.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/moc_RootPanel.cpp: + * examples/handcrafted/Display/NavDisplayGUI_exec/run_test.pl: + * examples/handcrafted/Display/NavDisplayGUI_exec/trolltech.gif: + * examples/handcrafted/Display/NavDisplayGUI_exec/worldmap1.gif: + Added a Qt GUI based component to showcase how we can + reconfigure a system using different component easily. Thanks + to Andrey Nechypurenko for + contributing the implementation. + + * examples/handcrafted/Display/CIAO_Installation_Data.ini: Added + deployment information for the new GUI NavDisplay component + implementation. + + * examples/handcrafted/Hello/client.dsp: + * examples/handcrafted/Hello/hello_executors.dsp: + * examples/handcrafted/Hello/hello_servants.dsp: + * examples/handcrafted/Hello/hello_stub.dsp: Hmm, I probably + checked in the MPC/MWC generated project accidentally. :) + +Mon Mar 24 16:17:21 2003 Nanbor Wang + + * examples/handcrafted/Display/GPS/GPS_svnt.cpp: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp: + Added implementation for servant factory methods. Thanks to + Andrey Nechypurenko for reporting this. + +Fri Mar 21 15:51:57 2003 Nanbor Wang + + * docs/new_components.html: Revised naming convention for + user-defined component executor impl IDL. + + * bin/generate_component_mpc.pl: Added an option for adding + user-defined component executor impl IDL automatically, + according the the naming convention. Fixed the dependencies to + "dependent" libraries. + + * examples/handcrafted/Display/RateGen/RateGen.csd: + * examples/handcrafted/Display/RateGen/RateGen.ssd: Simplified the + XML descriptors. + + * examples/handcrafted/Display/RateGen/RateGen.mpc: + * examples/handcrafted/Display/RateGen/RateGenEI.idl: + * examples/handcrafted/Display/RateGen/RateGen_exec.h: Fixed + dependencies and naming convention. + + * examples/handcrafted/Display/GPS/GPS.csd: + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/GPS/GPS.ssd: + * examples/handcrafted/Display/GPS/GPSEI.idl: + * examples/handcrafted/Display/GPS/GPS_exec.cpp: + * examples/handcrafted/Display/GPS/GPS_exec.h: + + * examples/handcrafted/Display/NavDisplay/NavDisplay.csd: + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/NavDisplay/NavDisplay.ssd: + * examples/handcrafted/Display/NavDisplay/NavDisplayEI.idl: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.h: + + * examples/handcrafted/Display/CIAO_Installation_Data.ini: Added + component implementaions for GPS and NavDisplay. + +Thu Mar 20 21:50:07 2003 Nanbor Wang + + * ciao/ComponentInstallation_Impl.cpp: Added a more comprehensive + error printout. + + * docs/index.html: Fixed a broken link. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: Added the servant + factory entry point function that I missed. + + * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp: + * examples/handcrafted/Display/RateGen/RateGen_svnt.h: Fixed up + the servant DLL entry point. + + * examples/handcrafted/Display/RateGen/RateGen.mpc: + * examples/handcrafted/Display/RateGen/RateGen_comp.idl: + * examples/handcrafted/Display/RateGen/RateGen_exec.cpp: + * examples/handcrafted/Display/RateGen/RateGen_exec.h: Added the + actual implementation for component executor. + + * examples/handcrafted/Display/CIAO_Installation_Data.ini: Added + this deployment datafile. This file will contain information + describing all the components used in this example. + + * examples/handcrafted/Display/RateGen/RateGen.csd: + * examples/handcrafted/Display/RateGen/RateGen.ssd: Added XML + component descriptors. + + * examples/handcrafted/Display/RateGen/client.cpp: Added a test + client program. + + * examples/handcrafted/Display/RateGen/run_test.pl: Added a test + script to test out this single component. + + * tools/ComponentServer/ComponentServer_test_client.cpp: Changed + the client program to debug RateGen component. We need to make + this test client more robust so we can use it to debug different + component implementations more easily. + +Tue Mar 18 16:36:07 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: + * examples/handcrafted/Display/HUDisplay.mpc: + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/RateGen/RateGen.mpc: Updated the + script and regenerated mpc file to record the original options + used to generate the MPC files. + + * examples/handcrafted/Display/NOTE: Added more info on how to + generate Makefiles/Projects for this example. + + * examples/handcrafted/Display/RateGen/RateGen.idl: Fixed a typo. + + * examples/handcrafted/Display/RateGen/RateGen_Impl.idl: + * examples/handcrafted/Display/RateGen/RateGen_exec.cpp: + * examples/handcrafted/Display/RateGen/RateGen_exec.h: Added the + actual component and home implementations. This particular + component implementation shows how to suppoort SessionComponent + interface in a component implementation (you will need to do + that for any non-trivial component implementations that require + to access component-specific context.) + +Tue Mar 18 12:03:29 2003 Nanbor Wang + + * examples/handcrafted/Hello/hello_servants.cpp: + * examples/handcrafted/Hello/hello_servants.h: Renamed various + "_ciao_deactivate*" operations to "ciao_passivate*" to be more + consistent with the CC* opertions. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * examples/handcrafted/Display/GPS/GPS_svnt.cpp: + * examples/handcrafted/Display/GPS/GPS_svnt.h: + * examples/handcrafted/Display/GPS/GPS_svnt.inl: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.inl: + * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp: + * examples/handcrafted/Display/RateGen/RateGen_svnt.h: + * examples/handcrafted/Display/RateGen/RateGen_svnt.inl: + Propagated the SessionComponent opertion support to CIDL + templates and the multiple component example "generated" files. + +Mon Mar 17 23:10:47 2003 Nanbor Wang + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * examples/handcrafted/Hello/hello_servants.cpp: + * examples/handcrafted/Hello/hello_servants.h: Added support for + SessionComponent specific operations, + ccm_{activate,passivate,remove}. These changes still need to be + propagated to the CIDL templates. + + We also need to review how Deployment::Container and CCMHome + manage the lifecyles of homes, components, and facet servants. + +Sun Mar 16 21:57:10 2003 Nanbor Wang + + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * examples/handcrafted/Display/GPS/GPS_svnt.h: + * examples/handcrafted/Display/GPS/GPS_svnt.inl: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.inl: + * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp: + * examples/handcrafted/Display/RateGen/RateGen_svnt.h: + * examples/handcrafted/Display/RateGen/RateGen_svnt.inl: Added + code to support SessionComponent::set_session_context operation + and make sure the Context objects also inherit from + TAO_Local_RefCounted_Object. + + * examples/handcrafted/Hello/helloE.idl: + * examples/handcrafted/Hello/hello_executors.h: + * examples/handcrafted/Hello/hello_servants.cpp: + * examples/handcrafted/Hello/hello_servants.h: Changed to implement + component specific context as a SessionContext, plus the + aforementioned changes. + +Sun Mar 16 11:43:20 2003 Nanbor Wang + + * docs/ConfigValues.html: + * docs/index.html: Updated the main document entry page. It is + grossly outdated. + + * tools/ComponentServer/ComponentServer.mpc: + * tools/Daemon/Daemon.mpc: + * tools/ServerActivator/ServerActivator.mpc: + * tools/XML_Helpers/XMLHelpers.mpc: Added more mpc files. + +Sat Mar 15 11:43:34 2003 Nanbor Wang + + * ciao/Makefile: + * ciao/Makefile.client: + * ciao/Makefile.container: + * ciao/Makefile.server: Removed Makefiles. I depend on MPC files + exclusively at the moment. + + * ciao/Assembly_Impl.cpp: + * ciao/Assembly_Impl.h: + * ciao/CCM_Core.mpc: + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Container_Impl.h: + * ciao/Daemon_Impl.h: + * ciao/Object_Set_T.cpp: + * ciao/ServerActivator_Impl.h: Fixed Linux build errors. Some + warnings are not fixed due to incomplete implementations and I + want to make sure they got addressed in some future point. + +Fri Mar 14 23:19:52 2003 Nanbor Wang + + * ciao/CCM_Core.mpc: Updated the core MPC file to reflect recent + added files. + +Fri Mar 14 16:08:22 2003 Nanbor Wang + + * docs/todo.html: Recorded a compilation error in the generated + code that I commented out for later "study." + + * examples/handcrafted/Display/NavDisplay/NavDisplay.idl: Fixed a + typo. + + * examples/handcrafted/Display/NavDisplay/NavDisplayE.idl: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.inl: + Added new "generated" code. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/templates/Executor.idl: Updated templates based on the code + they generated. + +Thu Mar 13 20:11:49 2003 Nanbor Wang + + * examples/handcrafted/Display/NavDisplay/NavDisplay.idl: + * examples/handcrafted/Display/GPS/GPS.idl: + * examples/handcrafted/Display/Configuration-0.png: Updated the + port names so they make more sense in the context. Thanks to + Dave Sharp and Wendy Rolls for the suggestions. + + * examples/handcrafted/Display/RateGen/RateGen_svnt.h: Added the + missing factory entry point for the servant home. + + * examples/handcrafted/Display/GPS/GPSE.idl: + * examples/handcrafted/Display/GPS/GPS_svnt.cpp: + * examples/handcrafted/Display/GPS/GPS_svnt.h: + * examples/handcrafted/Display/GPS/GPS_svnt.inl: Added new + "generated" code. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/templates/Executor.idl: Updated templates based on the code + they generated (manually. Did I mention how much fun it was to + generate code manually?) + +Wed Mar 12 23:29:27 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: Fixed an incomplete library + expansion and added a flag to specify library path + dependencies. + + * docs/releasenotes.html: Updated the status of single component + deployment capability. I forgot to do that when it was done. + + * examples/handcrafted/Display/NOTE: Added directions on how to + generate various mpc files. + + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/RateGen/RateGen.mpc: Regenerated + MPC files to fix incomplete dependent library names and to add + library path dependencies. + + * examples/handcrafted/Display/HUDisplay.idl: + * examples/handcrafted/Display/RateGen/RateGen.idl: + * examples/handcrafted/Display/HUDisplayE.idl: + * examples/handcrafted/Display/RateGen/RateGenE.idl: Moved the + opmode interface definition from RateGen.idl back to + HUDisplay.idl. This interface is a supported interface of + RateGen but it should be viewed as a shared interface. + + * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp: + * examples/handcrafted/Display/RateGen/RateGen_svnt.h: + * examples/handcrafted/Display/RateGen/RateGen_svnt.inl: Added + more handcrafted servant glue code for RateGen component. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/templates/Executor.idl: Updated and fixed CIDL template + code based on results from using these templates manually. + +Wed Mar 12 00:03:56 2003 Nanbor Wang + + * examples/handcrafted/Display/HUDisplay_svnt.h: + * examples/handcrafted/Display/HUDisplay_svnt.cpp: Added forgotten + _get_component implementation. + +Tue Mar 11 22:47:06 2003 Nanbor Wang + + * examples/handcrafted/Display/HUDisplayE.idl: Removed redundant + operations that have already been defined in the facet interface. + + * examples/handcrafted/Display/HUDisplay_svnt.cpp: + * examples/handcrafted/Display/HUDisplay_svnt.h: + * examples/handcrafted/Display/HUDisplay_svnt.inl: Added hand + generated code based on the glue code template in + + docs/templates/ + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: Updated template + code based on results from hand generated code. + +Tue Mar 11 15:18:52 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: Added this new to auto-generate + the mpc files for a single component implementation. The mpc + file generated by the script should work for most simple + component implementation, without modification and can serve as + a template for more complicated ones. This script also + generates hints that can be fed back to a shell to create the + necessary export definition files. + + * docs/todo.html: Added improvement items that can be done for + generate_component_mpc.pl. + + * bin/gen_export_files.cmd: Removed. The new + generate_component_mpc script provides more accurate hints on + how to create export files. + + + Renamed and reorganized all files in the following + multi-component example according to the guideline I set in + docs/new_component.html. + + * examples/handcrafted/Display/Display.mpc: + * examples/handcrafted/Display/HUD_skel_export.h: + * examples/handcrafted/Display/HUD_stub_export.h: + * examples/handcrafted/Display/GPS/GPS_skel_export.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_skel_export.h: + * examples/handcrafted/Display/RateGen/RateGen_skel_export.h: + Removed. + + * examples/handcrafted/Display/HUDisplay.mpc: + * examples/handcrafted/Display/HUDisplay_stub_export.h: + * examples/handcrafted/Display/HUDisplay_svnt_export.h: + * examples/handcrafted/Display/GPS/GPS_exec_export.h: + * examples/handcrafted/Display/GPS/GPS_svnt_export.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_exec_export.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt_export.h: + * examples/handcrafted/Display/RateGen/RateGen_exec_export.h: + * examples/handcrafted/Display/RateGen/RateGen_svnt_export.h: + Modified. + + * examples/handcrafted/Display/HUDisplay.idl: + * examples/handcrafted/Display/HUDisplayE.idl: + * examples/handcrafted/Display/GPS/GPS.mpc: + * examples/handcrafted/Display/GPS/GPS_stub_export.h: + * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc: + * examples/handcrafted/Display/NavDisplay/NavDisplay_stub_export.h: + * examples/handcrafted/Display/RateGen/RateGen.idl: + * examples/handcrafted/Display/RateGen/RateGen.mpc: + * examples/handcrafted/Display/RateGen/RateGen_stub_export.h: + Added. + +Tue Mar 11 11:41:39 2003 Nanbor Wang + + * bin/generate_component_mpc.pl: Added a MPC file generater perl + script for creating new MPC definitions for single component + implementations. + +Sun Mar 09 14:38:59 2003 Nanbor Wang + + * docs/new_components.html: Added this new document to describe + files involved in creating a new components. + + * docs/com-impl.html: Added a link to the new component + implementation. document + + * docs/imgs/File-Gen-Existing.png: + * docs/imgs/File-Gen-Future.png: + * docs/imgs/File_Generation_Flow.vsd: Updated the tools/files + collaboration diagram to reflect the latest plan. + + * examples/handcrafted/Hello/hello.mpc: Updated the MPC file to + make sure it works properly. We need to figure out a way to + auto-generate a template of this file. + +Thu Mar 06 20:29:42 2003 Nanbor Wang + + The following changes integrate the XML parsing of softpkg + descriptors with the daemon management framework so we can now + instantiate and test a single component implementation using + its softpkg descriptor. + + * ciao/ComponentServer_Impl.cpp: + * ciao/ComponentServer_Impl.h: + * ciao/ComponentServer_Impl.inl: Added a cached + ComponentInstallation reference so we can pass it to the + containers this ComponentServer creates. + + * ciao/Container_Impl.cpp: + * ciao/Container_Impl.h: Added an extra argument in init for + taking in the ComponentInstallation reference. Also modified + the install_home related mechanisms to use ComponentInstallation + interface to acquire the actual implementation "locations". + + * tools/ServerActivator/ServerActivator_test_client.cpp: + * tools/ComponentServer/ComponentServer_test_client.cpp: Changed + to use UUID. + + * tools/XML_Helpers/Cascadable_DocHandler.h: Removed a redundant + export decl. + + * tools/Daemon/DaemonController.dsp: Added files from the + XML_Helpers directories for the added XML handling capability. + + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/Softpkg_Commands.cpp: + * tools/Daemon/Softpkg_Commands.h: Added new commands to start and + terminate ComponentServer for running one component home. + + * examples/handcrafted/Hello/CIAO_Installation_Data.ini: + * examples/handcrafted/Hello/client.cpp: + * examples/handcrafted/Hello/hello.ssd: + * examples/handcrafted/Hello/run_test.pl: Changed and set up the + test to start up a ComponentServer via Daemon. + +Wed Mar 05 21:43:44 2003 Nanbor Wang + + Moved all Daemon controller related classes into CIAO::Daemon_i + namespace. + + * tools/Daemon/Softpkg_Commands.cpp: + * tools/Daemon/Softpkg_Commands.h: + * tools/Daemon/Softpkg_Commands.inl: Added two new "start_home" + and "end_home" command for starting up and shutting down a + ComponentServer for a single component home. Still need + implementation. + + * tools/Daemon/DaemonController.cpp: + * tools/Daemon/DaemonController.dsp: + + * tools/Daemon/controller_i.cpp: + * tools/Daemon/controller_i.h: + * tools/Daemon/controller_i.inl: + * tools/Daemon/Daemon_Commands.cpp: + * tools/Daemon/Daemon_Commands.h: + * tools/Daemon/Daemon_Commands.inl: Moved most of the Daemon + controlling commands into this file. + +Tue Mar 04 20:40:21 2003 Nanbor Wang + + * examples/handcrafted/Display/RateGen/RateGenE.idl: Fixed a typo. + Thanks to Jeff Gray for pointing it out. + +Thu Feb 27 22:15:48 2003 Nanbor Wang + + * ciao/ComponentServer_Impl.h: Fixed a cut-n-paste error in a comment. + + * ciao/ServerActivator_Impl.cpp: + * ciao/ServerActivator_Impl.h: Changed to cache an IOR to + the ComponentInstallation interface and pass the IOR with + -ORBInitRef option to the ComponentServer. We will need it when + installing a component home in the container. + + * examples/handcrafted/Hello/hello_servants.cpp: + * examples/handcrafted/Hello/hello_servants.h: Removed inheriting + the component specific context from the SessionContext local + interface. This component example should be run as Service + component, not Session component. + + * tools/ServerActivator/README: + * tools/Daemon/CIAO_Daemon.cpp: + * tools/ServerActivator/ServerActivator.cpp: Changed to propagate + the ComponentInstallation somehow. + + * tools/ServerActivator/ServerActivator_test_client.cpp: Removed a + redundant $Id$ tag. + +Sat Feb 22 23:45:52 2003 Nanbor Wang + + * docs/releasenotes.html: + * docs/todo.html: Updated information regarding different + component deployment schemes. + + * examples/handcrafted/Hello/hello.csd: + * examples/handcrafted/Hello/hello.ssd: Fixed syntax errors. + + * tools/XML_Helpers/Softpkg_Handlers.cpp: + * tools/XML_Helpers/Softpkg_Handlers.h: + * tools/XML_Helpers/Softpkg_Handlers.inl: + * tools/XML_Helpers/XML_Utils.cpp: + * tools/XML_Helpers/XML_Utils.h: + * tools/XML_Helpers/XML_Utils.inl: Added these new file to extract + necessary information to install the component specified in a + .csd (component softpkg descriptor) file. The + Softpkg_Handlers.* contain the XML Handler(s) for parsing the + csd document and XML_Utils.* contain the file Assembly tools can + use to extract the needed info. Notice that the XML handler + currently don't do a lot of validation. + + * tools/XML_Helpers/Cascadable_DocHandler.cpp: + * tools/XML_Helpers/Cascadable_DocHandler.h: + * tools/XML_Helpers/Cascadable_DocHandler.i: Added error handling + functions and allows it to accept a Locator from the parser to + show error location. + + * tools/XML_Helpers/Svcconf.dsp: + * tools/XML_Helpers/Svcconf.dsw: Renamed these files to the + following: + + * tools/XML_Helpers/XMLHelpers.dsp: + * tools/XML_Helpers/Helper_Test.dsw: + * tools/XML_Helpers/main.cpp: Added new files into the project + file and changed the project and workspace name. + + +Thu Feb 20 22:15:08 2003 Nanbor Wang + + Manually generated the following XML descriptors. These are the + minimum to install a component. Currently, I just get the UUID + using win32's UUIDGEN or GUIDGEN. + + * examples/handcrafted/Hello/hello.csd: Component softpkg descriptor. + + * examples/handcrafted/Hello/hello.ssd: CIAO's servant softpkg + descriptor. + + * examples/handcrafted/Hello/hello.ccd: CORBA component descriptor. + +Wed Feb 19 13:30:19 2003 Boris Kolpackov + + * CIDLC/DesignNotes: Reorganized stuff a bit again and added some + comments on Jeff's comments. + +Mon Feb 17 17:47:55 2003 Boris Kolpackov + + * CIDLC/DesignNotes: Reorganized stuff a bit and added some new + ideas/notes. + +Sun Feb 16 21:30:42 2003 Nanbor Wang + + * docs/releasenotes.html: Updated release info with the following. + + * ciao/ComponentInstallation_Impl.cpp: + * ciao/ComponentInstallation_Impl.h: Fixed a problem of empty + persistent backing store file. I need to store the + configuration data under a subsection (as oppose to the root + section.) + + * ciao/CIAO_Server.dsp: + * ciao/Daemon.idl: + * ciao/Daemon_Impl.cpp: + * ciao/Daemon_Impl.h: + * ciao/Daemon_Impl.inl: Added a generic server process control + interface that provides operations to query available service + interfaces and to shutdown the server process. + + * tools/Daemon/CIAO_Daemon.cpp: + * tools/Daemon/CIAO_Daemon.dsp: + * tools/Daemon/CIAO_Installation_Data.ini: + * tools/Daemon/Daemon.dsw: + * tools/Daemon/README: + * tools/Daemon/DaemonController.cpp: + * tools/Daemon/DaemonController.dsp: + * tools/Daemon/controller_i.cpp: + * tools/Daemon/controller_i.h: + * tools/Daemon/controller_i.inl: Added new per-host CIAO_Daemon + implementaion which offer both ComponentInstallation interface + which manages the local component implementation cache, and + ServerActivator interface which the Assembly framework interacts + with to spawn new ComponentServer processes. See the README + file in this directory and releasenotes.html for more details. + + There's also a DaemonController tool which provides a command + line interface to control the daemon process and to interact + with ComponentInstallation and ServerActivation interfaces. + +Sat Feb 15 22:54:11 2003 Nanbor Wang + + * ciao/CIAO_Server.dsp: + * ciao/ComponentInstallation_Impl.cpp: + * ciao/ComponentInstallation_Impl.h: + * ciao/ComponentInstallation_Impl.inl: Filled in the + implementation for ComponentInstallation interface. We + currently only provide a naive implemntation for this + interface. It currently manages the pathnames to various + component implementations so a Container can fetch a + implementation from its UUID. + + * examples/handcrafted/Hello/hello_servants.dsp: Added CIAO_server + to the list of link libraries. I need to move the base + container implementation from the CIAO_Server library to + CIAO_Container library. + +Fri Feb 14 23:15:39 2003 Nanbor Wang + + * docs/todo.html: Added info on why the Assembly tools should + be responsible of the act of home registration. + + * ciao/Container_Impl.cpp: + * ciao/ServerActivator_Impl.cpp: + * ciao/ComponentServer_Impl.cpp: Changed the use of ACE_NEW_RETURN + to ACE_NEW_THROW_EX. + + * ciao/ComponentServer_Impl.h: Cosmetic changes. + + * examples/handcrafted/Hello/hello_servants.cpp: + * examples/handcrafted/Hello/hello_servants.h: Fixed + signature based on RTF 1.1. + + * tools/ComponentServer/ComponentServer.cpp: Added comments + explaining why we are not init'ing the component server right + now. + + * tools/ServerActivator/README: + * examples/handcrafted/Hello/client.cpp: + * tools/ServerActivator/ServerActivator_test_client.cpp: Forced in + hack to test out installing the HelloWorldHome using the new + ServerActivator -> ComponentServer -> Container interfaces. + + * tools/Simple_Component_Server/Simple_Component_Server.cpp: Fix + +Fri Feb 14 17:10:50 2003 Nanbor Wang + + * docs/ConfigValues.html: Updated more supported ConfigValues types. + + * docs/releasenotes.html: + * docs/todo.html: + + * ciao/Client_init.cpp: + * ciao/Server_init.cpp: + * ciao/Client_init.h: + * ciao/Server_init.h: Removed "ciao/" from the include paths. We + now always include ciao core files as they are specified in the + include path directly. + + * ciao/CIAO_Server.dsp: + * ciao/CIAO_Servers.idl: + * ciao/ComponentServer_Impl.cpp: + * ciao/ComponentServer_Impl.h: + * ciao/ComponentServer_Impl.inl: + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: + * ciao/Container_Impl.cpp: + * ciao/Container_Impl.h: + * ciao/Container_Impl.inl: + * ciao/Object_Set_T.cpp: + * ciao/Object_Set_T.h: + * ciao/Object_Set_T.inl: + * ciao/ServerActivator_Impl.cpp: + * ciao/ServerActivator_Impl.h: + * ciao/ServerActivator_Impl.inl: Filled in more implementations. + + * tools/ServerActivator/README: + * tools/ServerActivator/ServerActivator.cpp: + * tools/ServerActivator/ServerActivator.dsp: + * tools/ServerActivator/ServerActivator.dsw: + * tools/ServerActivator/ServerActivator_test_client.cpp: + * tools/ServerActivator/ServerActivator_test_client.dsp: Added a + ServerActivator implementation. + + * tools/ComponentServer/ComponentServer.cpp: + * tools/ComponentServer/ComponentServer.dsp: + * tools/ComponentServer/ComponentServer.dsw: + * tools/ComponentServer/ComponentServer_test_client.cpp: + * tools/ComponentServer/ComponentServer_test_client.dsp: + * tools/ComponentServer/README: Added a more comprehensive + ComponentServer implementation. + +Sun Feb 09 20:39:05 2003 Nanbor Wang + + * docs/todo.html: Added more todo items as we go along. :) + + * ciao/Component_Base.idl: + * ciao/CCM_Deployment.idl: Changed the create method in + ::Components::Deployment::AssemblyFactory to create_assembly per + CCM RTF 1.1. + + * ciao/Assembly_Impl.cpp: + * ciao/Assembly_Impl.h: + * ciao/Assembly_Impl.inl: CCM RTF 1.1 changes. Also added other + test code in the file and explained how to create an Assembly + object. + + * ciao/CIAO_Core.mpc: + * ciao/CIAO_Client.dsp: + * ciao/CIAO_Server.dsp: + * ciao/CIAO_Value.idl: Added a CIAO internal cookie valuetype so + we can downcast the incoming ::Components::Cookie back to CIAO's + internal implementation type CIAO::Cookie easily. The original + "brute force cast" didn't work and CIAO::Cookie also provides a + way to fish out the internal octetseq we need internally. + + * ciao/Cookies.cpp: + * ciao/Cookies.h: + * ciao/Cookies.inl: Changed to inherit the internal cookie + implementation from OBV_CIAO::Cookie instead of + OBV_Components::Cookie. Also changed the extract method to be + static. + + * ciao/Client_init.cpp: Added a new valuefactory to create + ::Components::Cookie valuetype when receiving CIAO::Cookie from + the server. This should really be handled by supporting + truncatable valuetype in TAO. + + * docs/templates/CIAO_Glue_Session_Template.inl: Applied some of + the bug fixes from using Active Map and Cookie. These template + files need to be reviewed further. + + * tests/temp/README: + * tests/temp/assembly/README: + * tests/temp/assembly/assembly.dsw: + * tests/temp/assembly/client.cpp: + * tests/temp/assembly/client.dsp: + * tests/temp/assembly/control.idl: + * tests/temp/assembly/control.mpc: + * tests/temp/assembly/run_test.pl: + * tests/temp/assembly/server.cpp: + * tests/temp/assembly/server.dsp: Added this test to make sure the + demonstrate how to use AssemblyFactory and Assembly interface, + and the Assembly's are being managed properly. More + importantly, I used this test to make sure the internal + implementation for Cookie and Active_Object_Map are working + correctly. + + * tools/XML_Helpers/Svcconf.dsp: + * tools/XML_Helpers/Svcconf.dsw: + * tools/XML_Helpers/Svcconf_Handler.cpp: + * tools/XML_Helpers/Svcconf_Handler.h: + * tools/XML_Helpers/Svcconf_Handler.i: + * tools/XML_Helpers/main.cpp: + * tools/XML_Helpers/svc.conf.xml: Added an example to demonstrate + how to write a subclass of Cascadable_DocHandler and how to use + the Skip_DocHandler. Just so I won't forget how to use them. + +Sat Feb 08 20:45:20 2003 Nanbor Wang + + * ciao/*: WiP intermediate checkins. + + * ciao/Object_Set_T.h: + * ciao/Object_Set_T.cpp (object_in_set): Added a new method to + check if an object is already in the set or not. + +Fri Feb 07 23:35:35 2003 Nanbor Wang + + * ciao/Object_Set_T.h: + * ciao/Object_Set_T.i: + * ciao/Object_Set_T.cpp: Added a naive implementation of an object + reference set. It is naive because it simply keeps object + references in an objref_var array without checking for + duplication. More importantly, it takes O(n) to to look for an + object reference and return it. What we really need is a + thread-safe hash_set<> like class here. Since this is mostly + used only during setup/assemble time for a CIAO application, + i.e., not on critical path, this class serves as a place holder + for later, more efficient implementation. + + This new class is needed to support ServerActivator, + ComponentServer, and Container interface in + Components::Deployment module. + + * docs/ConfigVAlues.html: Added this new document page to record + what configuration values can be used to initialize + ComponentServer's and Container's. + + * docs/todo.html: Documented more future todo tasks and ideas. + +Tue Feb 04 23:10:56 2003 Nanbor Wang + + * docs/todo.html: Added a new item descirbing things that need to + be done for component/home configuration using CCM's XML + property files. + + * tools/XML_Helpers/Handler-Interaction.png: + * tools/XML_Helpers/Handler-Interaction.vsd: + * tools/XML_Helpers/README: Files that document how to use + Cascadable_DocHandler and interactions among handlers of + different layers. + + * tools/XML_Helpers/Cascadable_DocHandler.cpp: + * tools/XML_Helpers/Cascadable_DocHandler.h: + * tools/XML_Helpers/Cascadable_DocHandler.i: A + ACEXML_DefaultHandler subclass which can be easily cascaded + together to handle hierarchical XML document structure. There + is also a Skip_DocHandler class which subclasses from + Cascadable_DocHandler and can be used to skip over some certain + XML tags completely. These helper classes should probably be + collected under ACEXML in the future. + +Sun Feb 02 21:05:39 2003 Nanbor Wang + + * ciao/Cookies.cpp (insert): Fixed a warning. + + * ciao/CCM_Base.idl: Changed to include instead of . + + * ciao/CCM_Event.idl: Fixed a typo I put in last. + +Sun Feb 02 15:23:26 2003 Nanbor Wang + + * docs/XML/componentassembly.dtd: + * docs/XML/corbacomponent.dtd: + * docs/XML/properties.dtd: + * docs/XML/softpkg.dtd: Updated these files with the ones from my + web page. They are now in-sync with the latest RTF. + +Wed Jan 29 13:27:01 2003 Jeff Parsons + + * CIDLC/DesignNotes: + + Added a list of items from the IDL compiler that need redesign and + can perhaps be done incrementally in the CIDL compiler, and + eventually integrated back into the IDL compiler. + +Wed Jan 22 16:05:18 2003 Boris S Kolpackov + + * CIDLC/DesignNotes: added some more ideas. + +Wed Jan 22 13:54:12 2003 Boris S Kolpackov + + * CIDLC/DesignNotes: added this file to capture and document CIDL + complier design ideas/decisions. + +Tue Jan 21 16:20:44 2003 Boris S Kolpackov + + * tools/CIDLC: + * CIDLC: moved CIDLC directory one level up. + +Mon Jan 13 15:23:09 2003 Nanbor Wang + + * docs/templates/Executor.idl: Added meta-code for user-defined + oeprations, factory operations, and finder operations. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: Filled in the + rest of the CIDL generated Servant Glue code templates. + +Mon Jan 13 11:18:37 2003 Nanbor Wang + + * ciao/Component_Base.idl: + * ciao/CCM_Base.idl: Based on Components 1.1 RTF + Events::unsubscribe operations now return the unsubscribed + consumber object reference instead of void. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: Filled in most of + the operations for component servant. Only opeations left + unimplemented include Events::get_*_publishers which I will + implement in the *_Context class later. + + There are several other oeprations that throw NO_IMPLEMENT + exception or are no-op currently. Missing them probably is okay + for now. Next up, Home Servant template. + +Mon Jan 13 00:27:03 2003 Nanbor Wang + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: Filled in a great + more generated code. This is almost done, finally. + + * docs/templates/CIAO_Glue_Session_Template.cpp: + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/templates/Executor.idl: Changed to lead template comments + with '##' instead of # to diffentiate them from preprocessor + directives that we should generate. + + * ciao/HomeRegistrar_i.inl: + * ciao/HomeRegistrar_i.cpp: Fixed incorrect uses of exception macros. + + * ciao/Cookies.h: + * ciao/Cookies.cpp: Added a new insert method which "encode" an + Active_Objref_Map key into the Cookie. + + * ciao/Container_Base.inl: + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: Added a new get_objref method which + basically allow us to get the component reference using POA's + servant_to_reference operation. Added a new inline file and + fixed some incorrect uses of exception macros. + + * ciao/Component_Base.idl: + * ciao/CCM_Base.idl: Based on Components 1.1 RTF + Receptacles::disconnect operations now return the disconnected + object reference instead of void. + +Fri Jan 10 12:03:00 2003 Boris S Kolpackov + + * tools/CCIDL: + * tools/CIDLC: + * tools/CIDLC/README: Renamed CCIDL to CIDLC. Added some + explanations about naming convention choosen for CIDL compiler. + +Thu Jan 09 00:57:37 2003 Nanbor Wang + + * docs/templates/cidl_template.cidl: Added an example CIDL file. + + * docs/templates/CIAO_Glue_Session_Template.h: + * docs/templates/CIAO_Glue_Session_Template.inl: + * docs/templates/CIAO_Glue_Session_Template.cpp: Added more + implementation code. + +Wed Jan 08 16:48:28 2003 Nanbor Wang + + * docs/templates/CIAO_Glue_Session_Template.h: Added the complete + list of operations that needs to be supported. Next up, the + implementation templates. + + * ciao/Active_Objref_Map.cpp: + * ciao/Active_Objref_Map.h: Defined a typedef called + CIAO::Active_Objref_Map for managing CORBA::Object_var's using + the ACE_Active_Map_Manager and instantiate the template. + + * ciao/Cookies.cpp: + * ciao/Cookies.h: Added insertion/extraction of + ACE_Active_Map_Manager_Key operations. + +Tue Jan 07 23:28:28 2003 Nanbor Wang + + * ciao/CIAO_common.h: Added a new file to collect common CIAO + macros. + + * ciao/CIAO_Component_i.cpp: + * ciao/CIAO_Component_i.h: Removed. + * ciao/Client_init.cpp: + * ciao/Client_init.h: The old CIAO_client_init in + CIAO_Component_i is now called Client_init under CIAO namespace. + This function initlializes the value factories for client side ORB. + + * ciao/Server_init.cpp: + * ciao/Server_init.h: Added new function Server_init under CIAO + namespace to initialize server side value factories for server + side ORB. + + * ciao/Cookies.cpp: + * ciao/Cookies.h: + * ciao/Cookies.inl: Added server-side implementation of + Components::Cookie called CIAO::Map_Key_Cookie. This + implementation is only used within the containers (i.e., server + side). Client doesn't need to know how to interpret a Cookie. + + * ciao/Container_Base.h: + * ciao/HomeRegistrar_i.h: Fixed various ACE-guideline conformity + problems. + + * ciao/CCM_Core.mpc: + * ciao/CIAO_Client.dsp: + * ciao/CIAO_Container.dsp: + * ciao/CIAO_Server.dsp: + * ciao/Makefile.client: + * ciao/Makefile.container: + * ciao/Makefile.server: Updated various makefiles/projects. + +Tue Jan 07 07:48:02 2003 Nanbor Wang + + * ciao/Container_Base.cpp (install_servant): Changed to decrease + the refcount of servant by one to make sure servants get + "released" properly. + +Fri Jan 03 11:27:12 2003 Nanbor Wang + + * docs/templates/Executor.idl: This pseudo-meta IDL template file + summarizes the standard executor mapping and serves as a + template for CCIDL compiler. + +Sun Dec 22 23:12:49 2002 Nanbor Wang + + * examples/handcrafted/Display/RateGen/RateGen.idl: + * examples/handcrafted/Display/GPS/GPS.idl: + * examples/handcrafted/Display/NavDisplay/NavDisplay.idl: + * examples/handcrafted/Display/HUDisplay.idl: + * examples/handcrafted/Display/Display.mpc: Added more files for + this multi-component example. + + The followings should go to the ChangeLog under $(ACE_ROOT) + + * bin/MakeProjectCreator/configs/ciao_client.mpc: + * bin/MakeProjectCreator/configs/ciao_component.mpc: + * bin/MakeProjectCreator/configs/ciao_server.mpc: Added libpaths + defintions. + +Sat Dec 21 15:09:55 2002 Nanbor Wang + + * tools/Simple_Component_Server/Simple_Component_Server.dsp: + * examples/handcrafted/Hello/run_test.pl: Changed to generate + Simple_Component_Server executable in the project directory. + + * examples/handcrafted/Hello/hello.mpc: + * ciao/CCM_Core.mpc: + * tools/Simple_Component_Server/Simple_Component_Server.mpc: + Created MPC specifications. + + The followings should go to the ChangeLog under $(ACE_ROOT) + + * bin/MakeProjectCreator/configs/ciao_client.mpc: + * bin/MakeProjectCreator/configs/ciao_component.mpc: + * bin/MakeProjectCreator/configs/ciao_server.mpc: Created MPC + templates for CIAO client, component implmentation, and server + tools. + +Fri Dec 20 23:09:53 2002 Nanbor Wang + + * ciao/Makefile.server: Added HomeRegistrar.idl and + HomeRegistrar_i to the makefile. + + * tools/Simple_Component_Server/Makefile: Added a new makefile. + +Fri Dec 20 20:32:53 2002 Nanbor Wang + + * ciao/CCM_Component.idl: + * ciao/CCM_Container.idl: + * ciao/Container_Base.cpp: + * ciao/Makefile.client: + * ciao/Makefile.container: + * ciao/Makefile.server: Fixed compilation erros and Makefiles on + Linux. + +Thu Dec 19 20:44:39 2002 Nanbor Wang + + * examples/handcrafted/Display/README: + * examples/handcrafted/Display/Configuration-0.png: Added new + files explaining the purpose of the the new example and what it + will do. + +Wed Dec 18 20:37:06 2002 Nanbor Wang + + * examples/handcrafted/Hello/run_test.pl: Added a script to + automate running this stuff. + + * examples/handcrafted/Hello/README: Replaced the reference to + CIAO_single_com_server to Simple_Component_Server. + +Tue Dec 17 23:30:59 2002 Nanbor Wang + + * tools/CIAO_single_com_server/*: + * tools/Simple_Component_Server/*: Changed the name of the simple + server from CIAO_single_com_server to Simple_Component_Server. + The original name didn't make too much sense at all. + +Tue Dec 17 22:49:32 2002 Nanbor Wang + + * ciao/CIAO_Server.dsp: + * ciao/HomeRegistrar.idl: + * ciao/HomeRegistrar_i.{h,inl,cpp}: Added a NameService based + HomeFinder extension. This interface defines the registration + operation, which is not defined in the CCM specification. This + is part of the CIAO_Server library. + + * tools/CIAO_single_com_server/CIAO_single_com_server.cpp: Changed + to register installed components with the HomeRegistrar instead + of dumping the IOR into a file. The only thing that gets dumped + into a file now is the IOR for the HomeFinder interface which + HomeRegistrar inherits. + + * examples/handecrafted/Hello/README: Added information on the + procedures one should follow to run this test. + + * examples/handcrafted/Hello/config: Updated the component server + config file to include the repo ids and canonical name for the + home. + + * examples/handcrafted/Hello/client.dsp: + * examples/handcrafted/Hello/client.cpp: Changed to use acquire + the home object reference thru the HomeFinder interface, instead + of passing it in explicitly. + + * examples/handcrafted/Hello/hello.dsw: + * examples/handcrafted/Hello/server.cpp: + * examples/handcrafted/Hello/server.dsp: Removed server from the + workspace. As we now have a true component server, we no longer + need a server process for this example. + + +Mon Dec 16 10:56:46 2002 Nanbor Wang + + * tools/CIAO_single_com_server/CIAO_single_com_server.cpp: Fixed + command line argument parsing problem. We now process the + command line argument for ORB correctly. + +Sun Dec 15 23:54:16 2002 Nanbor Wang + + * tools/CIAO_single_com_server/*: Added a new prototype component + server. We can now run session components on a generic server + using a proprietary config file for component installation. + + * ciao/Container_Base.{h,cpp}: Fixed incorrect usage of ACE_DLL + where executor and servant Dlls got unloaded prematurely. + +Wed Dec 11 14:39:08 2002 Nanbor Wang + + A lot have changed since last ChangeLog entry. Most of the + changes are intermediate so I didn't even try to record them. + + * ciao/CCMCore.dsw: + * ciao/CIAO_Container.dsp: + * ciao/CIAO_Server.dsp: Moved Container_Base.* from CIAO_Container + library to CIAO_Server library. These classes in Container_Base + are really run-time container management interfaces than + container interfaces themselves. + + * ciao/Container_Base.cpp: + * ciao/Container_Base.h: Added _ciao_install_home which enable + installing a component home from relevant DLL named and entry + points. We are not managing the lifecycle of DLL objects in the + implementation yet (we just never unlink DLL. :) This will have + to be changed in the future. + + * examples/handcrafted/Hello/hello_servants.cpp: + * examples/handcrafted/Hello/hello_servants.h: Added an entry + point "create_HelloWorld_Servant" so we can use the glue code + with the new "generic server." + + * examples/handcrafted/Hello/server.cpp: + * examples/handcrafted/Hello/server.dsp: Reworked the server + implementation so that it is no longer tied to a specific + component implementation. I.e., we can use the same server to + host any *one* component now. + + * examples/handcrafted/Hello/client.dsp: Added a missing link + directory. + +Tue Nov 05 23:42:04 2002 Nanbor Wang + + * CCMCore.dsp: + * CIAO_BaseC.cpp: + * CIAO_BaseC.h: + * CIAO_BaseC.i: + * CIAO_ComponentC.cpp: + * CIAO_ComponentC.h: + * CIAO_ComponentC.i: + * CIAO_ContainerC.cpp: + * CIAO_ContainerC.h: + * CIAO_ContainerC.i: + * CIAO_Container_ExC.cpp: + * CIAO_Container_ExC.h: + * CIAO_Container_ExC.i: + * CIAO_DeploymentC.cpp: + * CIAO_DeploymentC.h: + * CIAO_DeploymentC.i: + * CIAO_EventC.cpp: + * CIAO_EventC.h: + * CIAO_EventC.i: + * CIAO_TransactionC.cpp: + * CIAO_TransactionC.h: + * CIAO_TransactionC.i: + * Component_BaseC.cpp: + * Component_BaseC.h: + * Component_BaseC.i: + * Component_BaseS.cpp: + * Component_BaseS.h: + * Component_BaseS.i: + * Component_BaseS_T.cpp: + * Component_BaseS_T.h: + * Component_BaseS_T.i: + * CosPersistentStateC.cpp: + * CosPersistentStateC.h: + * CosPersistentStateC.i: + * CosPersistentStateS.cpp: + * CosPersistentStateS.h: + * CosPersistentStateS.i: + * CosPersistentStateS_T.cpp: + * CosPersistentStateS_T.h: + * CosPersistentStateS_T.i: Removed generated files. + + * CCMCore.dsw: + * CIAO_CLIENT_Export.h: + * CIAO_Client.dsp: + * CIAO_Component.pidl: + * CIAO_Container.dsp: + * CIAO_Container_Export.h: + * CIAO_SERVER_Export.h: + * CIAO_Server.dsp: + * README: Split up the CCM Core library into 3 libraries for clients, + component implementations, and component servers. + +Thu Sep 26 15:20:13 2002 Nanbor Wang + + * ciao/CCMCore.dsp: + * ciao/CIAO_Base.pidl: + * ciao/CIAO_BaseC.cpp: + * ciao/CIAO_BaseC.h: + * ciao/CIAO_BaseC.i: + * ciao/CIAO_Component.pidl: + * ciao/CIAO_ComponentC.cpp: + * ciao/CIAO_ComponentC.h: + * ciao/CIAO_ComponentC.i: + * ciao/CIAO_Container.pidl: + * ciao/CIAO_ContainerC.cpp: + * ciao/CIAO_ContainerC.h: + * ciao/CIAO_ContainerC.i: + * ciao/CIAO_Container_Ex.pidl: + * ciao/CIAO_Container_ExC.cpp: + * ciao/CIAO_Container_ExC.h: + * ciao/CIAO_Container_ExC.i: + * ciao/CIAO_Deployment.pidl: + * ciao/CIAO_DeploymentC.cpp: + * ciao/CIAO_DeploymentC.h: + * ciao/CIAO_DeploymentC.i: + * ciao/CIAO_Event.pidl: + * ciao/CIAO_EventC.cpp: + * ciao/CIAO_EventC.h: + * ciao/CIAO_EventC.i: + * ciao/CIAO_Transaction.pidl: + * ciao/CIAO_TransactionC.cpp: + * ciao/CIAO_TransactionC.h: + * ciao/CIAO_TransactionC.i: Changed to split the component idl + file into severl smaller idl files. + + * ciao/Makefile: An empty place holder for now. + + * ciao/Version.h: + * ciao/ciao.rc: Added version information files. + +Thu Jul 18 22:14:59 2002 Nanbor Wang + + * examples/handcrafted/Philosophers/Philosophers.idl (Example): + +Mon Jun 17 17:35:31 2002 Nanbor Wang + + * docs/index.html: + * docs/imgs/CCM.vsd: + * docs/imgs/basic-container.png: + * docs/imgs/component-basic.png: + * docs/imgs/deployment.png: + * docs/imgs/extended-container.png: + * docs/imgs/home-config.png: Added CIAO documentation. diff --git a/modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.cpp new file mode 100644 index 00000000000..614a20190c0 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.cpp @@ -0,0 +1,177 @@ +// $Id$ +#include "ADD_Handler.h" +#include "cdp.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "Property_Handler.h" +#include "ace/UUID.h" + +ACE_RCSID (DAnCE, + ADD_Handler, + "$Id$") + +namespace CIAO +{ + namespace Config_Handlers + { + IDREF_Base ADD_Handler::IDREF; + + void + ADD_Handler::artifact_deployment_descrs (const deploymentPlan &src, + ::Deployment::ArtifactDeploymentDescriptions &dest) + { + DANCE_TRACE("ADD_Handler::atrifact_deployment_descrs"); + deploymentPlan::artifact_const_iterator aci_e = + src.end_artifact (); + dest.length (src.count_artifact ()); + CORBA::ULong pos = 0; + for (deploymentPlan::artifact_const_iterator aci_b = + src.begin_artifact (); + aci_e != aci_b; + ++aci_b) + { + ADD_Handler::artifact_deployment_descr (*(*aci_b), + dest[pos], + pos); + pos++; + } + } + + void + ADD_Handler::artifact_deployment_descr ( + const ArtifactDeploymentDescription &src, + Deployment::ArtifactDeploymentDescription &dest, + CORBA::ULong pos) + { + DANCE_TRACE("ADD_Handler::atrifact_deployment_descr"); + dest.name = ACE_TEXT_ALWAYS_CHAR ( src.name ().c_str ()); + + + dest.node = ACE_TEXT_ALWAYS_CHAR ( src.node ().c_str ()); + + ArtifactDeploymentDescription::location_const_iterator end = + src.end_location (); + + dest.location.length (src.count_location ()); + CORBA::ULong len = 0; + for (ArtifactDeploymentDescription::location_const_iterator + start = src.begin_location (); + start != end; + ++start) + { + dest.location[len++] = ACE_TEXT_ALWAYS_CHAR ( (*start)->c_str ()); + } + + ArtifactDeploymentDescription::source_const_iterator sce = + src.end_source (); + len = 0; + dest.source.length (src.count_source ()); + for (ArtifactDeploymentDescription::source_const_iterator + scb = src.begin_source (); + scb != sce; + ++scb) + { + dest.source[len++] = ACE_TEXT_ALWAYS_CHAR ( (*scb)->c_str ()); + } + + // @@TODO: See this loop is repeated + ArtifactDeploymentDescription::execParameter_const_iterator adce = + src.end_execParameter (); + len = 0; + dest.execParameter.length (src.count_execParameter ()); + for (ArtifactDeploymentDescription::execParameter_const_iterator adcb = + src.begin_execParameter (); + adcb != adce; + ++adcb) + { + Property_Handler::handle_property (*(*adcb), + dest.execParameter[len++]); + } + + if (src.id_p ()) + { + ACE_TString cstr (src.id ().c_str ()); + + ADD_Handler::IDREF.bind_ref (cstr,pos); + } + else + { + ACE_ERROR ((LM_ERROR, + "(%P|%t) Warning: ADD %s has no idref.\n", + ACE_TEXT_ALWAYS_CHAR ( src.name ().c_str ()))); + } + +#if 0 + // @@ MAJO: Don't know how to handle this. + if (src.deployRequirement_p ()) + { + Req_Handler handler; + add.deployRequirement.length ( + add.deployRequirement.length () + 1); + handler.get_Requirement ( + add.deployRequirement[add.deployRequirement.length () - 1], + src.deployRequirement ()); + } + + if (src.deployedResource_p ()) + { + RDD_Handler handler; + add.deployedResource.length ( + add.deployedResource.length () + 1); + handler.get_ResourceDeploymentDescription ( + add.deployedResource[add.deployedResource.length () - 1], + src.deployedResource ()); + } +#endif /* 0 */ + } + + ArtifactDeploymentDescription + ADD_Handler::artifact_deployment_descr ( + const Deployment::ArtifactDeploymentDescription &src) + { + DANCE_TRACE("ADD_Handler::atrifact_deployment_descr - reverse"); + //Get the name and node and store them in the add + XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + XMLSchema::string< ACE_TCHAR > node (ACE_TEXT_CHAR_TO_TCHAR (src.node)); + + ArtifactDeploymentDescription add (name,node); + + //Get the location(s) and store it/them in the add + size_t total = src.location.length (); + for (size_t i = 0; i < total; ++i) + { + XMLSchema::string< ACE_TCHAR > curr (ACE_TEXT_CHAR_TO_TCHAR (src.location[i])); + //add.add_location (curr); + } + + //As above, for the source(s) + total = src.source.length (); + for (size_t j = 0; j < total; ++j) + { + XMLSchema::string< ACE_TCHAR > curr (ACE_TEXT_CHAR_TO_TCHAR (src.source[j])); + //add.add_source (curr); + } + + //As above for the execParameter(s) + total = src.execParameter.length (); + for (size_t k = 0; k < total; ++k) + { + //add.add_execParameter (Property_Handler::get_property (src.execParameter[k])); + } + + // Generate a UUID to use for the IDREF. + ACE_Utils::UUID uuid; + ACE_Utils::UUID_GENERATOR::instance ()->generate_UUID (uuid); + ACE_TString add_id (ACE_TEXT ("_")); + add_id += ACE_TEXT_CHAR_TO_TCHAR (uuid.to_string ()->c_str ()); + + XMLSchema::ID< ACE_TCHAR > xml_id (add_id.c_str ()); + + // Bind the ref and set it in the IDD + ADD_Handler::IDREF.bind_next_available (add_id); + + add.id (xml_id); + + return add; + } + } + } diff --git a/modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.h new file mode 100644 index 00000000000..063093a7038 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ADD_Handler.h @@ -0,0 +1,71 @@ +//============================================================== +/** + * @file ADD_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_ADD_Handler_H +#define CIAO_CONFIG_HANDLERS_ADD_Handler_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" +#include "tao/Basic_Types.h" +#include "IDREF_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace Deployment +{ + struct ArtifactDeploymentDescription; + class ArtifactDeploymentDescriptions; +} + + +namespace CIAO +{ + + namespace Config_Handlers + { + class deploymentPlan; + class ArtifactDeploymentDescription; + + /* + * @class ADD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from XSC + * ArtifactDeploymentDescription objects, parsed from the + * // @@ Jules, why Any type? + * descriptor files, to the corresponding CORBA IDL Any type. + */ + class Config_Handlers_Export ADD_Handler + { + public: + static void artifact_deployment_descrs (const deploymentPlan &src, + ::Deployment::ArtifactDeploymentDescriptions &dest); + + static ArtifactDeploymentDescription + artifact_deployment_descr (const Deployment::ArtifactDeploymentDescription &src); + + /// The IDREF Table associated with this class + static IDREF_Base IDREF; + + private: + static void artifact_deployment_descr ( + const ArtifactDeploymentDescription& desc, + ::Deployment::ArtifactDeploymentDescription &dest, + CORBA::ULong l = 0); + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_ADD_Handler_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Any_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Any_Handler.cpp new file mode 100644 index 00000000000..cadcd1163f1 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Any_Handler.cpp @@ -0,0 +1,59 @@ +// $Id$ + +#include /**/ "ace/pre.h" + +#include "Any_Handler.h" +#include "DataType_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "tao/AnyTypeCode/Any.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DynAny_Handler/DynAny_Handler.h" + +#include "ace/Null_Mutex.h" + +namespace CIAO +{ + namespace Config_Handlers + { + + Any_Handler::Any_Handler (void) + { + } + + Any_Handler::~Any_Handler (void) + { + } + + void + Any_Handler::extract_into_any (const Any& desc, + CORBA::Any& toconfig) + { + DANCE_TRACE("Any_Handler::extract_into_any"); + try + { + DynamicAny::DynAny_var dyn = DYNANY_HANDLER->extract_into_dynany (desc.type (), + desc.value ()); + + toconfig = *dyn->to_any (); + + dyn->destroy (); + } + catch (Config_Error &ex) + { + throw ex; + } + catch (...) + { + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Caught error whilst parsing XML into Any\n")); + } + } + + Any Any_Handler::get_any (const ::CORBA::Any& src) + { + DANCE_TRACE("Any_Handler::extract_into_any - reverse"); + + return DYNANY_HANDLER->extract_from_dynany (src); + } + } +} +#include /**/ "ace/post.h" diff --git a/modules/CIAO/DAnCE/Config_Handlers/Any_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Any_Handler.h new file mode 100644 index 00000000000..03f99722034 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Any_Handler.h @@ -0,0 +1,62 @@ +//============================================================== +/** + * @file Any_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_ANY_HANDLER_H +#define CIAO_CONFIG_HANDLERS_ANY_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Common_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Config_Handlers/Common.h" +#include "tao/Versioned_Namespace.h" + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL +namespace CORBA +{ + class Any; +} +TAO_END_VERSIONED_NAMESPACE_DECL + +namespace CIAO +{ + namespace Config_Handlers + { + class Any; + + /* + * @class Any_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC Any objects, parsed from the descriptor files, to the + * corresponding CORBA IDL Any type. + * + */ + class Config_Handlers_Common_Export Any_Handler + { + public: + Any_Handler (void); + virtual ~Any_Handler (void); + + static void extract_into_any (const Any& desc, + ::CORBA::Any& toconfig); + + static Any get_any (const CORBA::Any &src); + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_ANY_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.cpp b/modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.cpp new file mode 100644 index 00000000000..fa2ac5d3a16 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.cpp @@ -0,0 +1,17580 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "Basic_Deployment_Data.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // IdRef + // + + IdRef:: + IdRef () + : + regulator__ () + { + } + + IdRef:: + IdRef (IdRef const& s) + : ::XSCRT::Type (), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + idref_ (s.idref_.get () ? new ::XMLSchema::IDREF< ACE_TCHAR > (*s.idref_) : 0), + regulator__ () + { + if (href_.get ()) href_->container (this); + if (idref_.get ()) idref_->container (this); + } + + IdRef& IdRef:: + operator= (IdRef const& s) + { + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + if (s.idref_.get ()) idref (*(s.idref_)); + else idref_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (0); + + return *this; + } + + + // IdRef + // + bool IdRef:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& IdRef:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& IdRef:: + href () + { + return *href_; + } + + void IdRef:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + + // IdRef + // + bool IdRef:: + idref_p () const + { + return idref_.get () != 0; + } + + ::XMLSchema::IDREF< ACE_TCHAR > const& IdRef:: + idref () const + { + return *idref_; + } + + ::XMLSchema::IDREF< ACE_TCHAR >& IdRef:: + idref () + { + return *idref_; + } + + ::XSCRT::Type* IdRef:: + idref_ptr () + { + std::basic_string temp (idref().id()); + return this->get_idref(temp.c_str()); + } + + + void IdRef:: + idref (::XMLSchema::IDREF< ACE_TCHAR > const& e) + { + if (idref_.get ()) + { + *idref_ = e; + } + + else + { + idref_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (new ::XMLSchema::IDREF< ACE_TCHAR > (e)); + idref_->container (this); + } + } + + + // TCKind + // + + TCKind::Value TCKind:: + integral () const + { + return v_; + } + + bool + operator== (::CIAO::Config_Handlers::TCKind const& a, ::CIAO::Config_Handlers::TCKind const& b) + { + return a.v_ == b.v_; + } + + bool + operator!= (::CIAO::Config_Handlers::TCKind const& a, ::CIAO::Config_Handlers::TCKind const& b) + { + return a.v_ != b.v_; + } + + TCKind:: + TCKind (TCKind::Value v) + : v_ (v) + { + } + + // DataType + // + + DataType:: + DataType (::CIAO::Config_Handlers::TCKind const& kind__) + : + ::XSCRT::Type (), + kind_ (new ::CIAO::Config_Handlers::TCKind (kind__)), + regulator__ () + { + kind_->container (this); + } + + DataType:: + DataType (DataType const& s) + : + ::XSCRT::Type (), + kind_ (new ::CIAO::Config_Handlers::TCKind (*s.kind_)), + enum__ (s.enum__.get () ? new ::CIAO::Config_Handlers::EnumType (*s.enum__) : 0), + struct__ (s.struct__.get () ? new ::CIAO::Config_Handlers::StructType (*s.struct__) : 0), + value_ (s.value_.get () ? new ::CIAO::Config_Handlers::ValueType (*s.value_) : 0), + sequence_ (s.sequence_.get () ? new ::CIAO::Config_Handlers::SequenceType (*s.sequence_) : 0), + alias_ (s.alias_.get () ? new ::CIAO::Config_Handlers::AliasType (*s.alias_) : 0), + id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0), + regulator__ () + { + kind_->container (this); + if (enum__.get ()) enum__->container (this); + if (struct__.get ()) struct__->container (this); + if (value_.get ()) value_->container (this); + if (sequence_.get ()) sequence_->container (this); + if (alias_.get ()) alias_->container (this); + if (id_.get ()) id_->container (this); + } + + DataType& DataType:: + operator= (DataType const& s) + { + kind (*s.kind_); + + if (s.enum__.get ()) + enum_ (*(s.enum__)); + else + enum__.reset (0); + + if (s.struct__.get ()) + struct_ (*(s.struct__)); + else + struct__.reset (0); + + if (s.value_.get ()) + value (*(s.value_)); + else + value_.reset (0); + + if (s.sequence_.get ()) + sequence (*(s.sequence_)); + else + sequence_.reset (0); + + if (s.alias_.get ()) + alias (*(s.alias_)); + else + alias_.reset (0); + + if (s.id_.get ()) id (*(s.id_)); + else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0); + + return *this; + } + + + // DataType + // + ::CIAO::Config_Handlers::TCKind const& DataType:: + kind () const + { + return *kind_; + } + + void DataType:: + kind (::CIAO::Config_Handlers::TCKind const& e) + { + *kind_ = e; + } + + // DataType + // + bool DataType:: + enum_p () const + { + return enum__.get () != 0; + } + + ::CIAO::Config_Handlers::EnumType const& DataType:: + enum_ () const + { + return *enum__; + } + + void DataType:: + enum_ (::CIAO::Config_Handlers::EnumType const& e) + { + if (enum__.get ()) + { + *enum__ = e; + } + + else + { + enum__ = ::std::auto_ptr< ::CIAO::Config_Handlers::EnumType > (new ::CIAO::Config_Handlers::EnumType (e)); + enum__->container (this); + } + } + + // DataType + // + bool DataType:: + struct_p () const + { + return struct__.get () != 0; + } + + ::CIAO::Config_Handlers::StructType const& DataType:: + struct_ () const + { + return *struct__; + } + + void DataType:: + struct_ (::CIAO::Config_Handlers::StructType const& e) + { + if (struct__.get ()) + { + *struct__ = e; + } + + else + { + struct__ = ::std::auto_ptr< ::CIAO::Config_Handlers::StructType > (new ::CIAO::Config_Handlers::StructType (e)); + struct__->container (this); + } + } + + // DataType + // + bool DataType:: + value_p () const + { + return value_.get () != 0; + } + + ::CIAO::Config_Handlers::ValueType const& DataType:: + value () const + { + return *value_; + } + + void DataType:: + value (::CIAO::Config_Handlers::ValueType const& e) + { + if (value_.get ()) + { + *value_ = e; + } + + else + { + value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ValueType > (new ::CIAO::Config_Handlers::ValueType (e)); + value_->container (this); + } + } + + // DataType + // + bool DataType:: + sequence_p () const + { + return sequence_.get () != 0; + } + + ::CIAO::Config_Handlers::SequenceType const& DataType:: + sequence () const + { + return *sequence_; + } + + void DataType:: + sequence (::CIAO::Config_Handlers::SequenceType const& e) + { + if (sequence_.get ()) + { + *sequence_ = e; + } + + else + { + sequence_ = ::std::auto_ptr< ::CIAO::Config_Handlers::SequenceType > (new ::CIAO::Config_Handlers::SequenceType (e)); + sequence_->container (this); + } + } + + // DataType + // + bool DataType:: + alias_p () const + { + return alias_.get () != 0; + } + + ::CIAO::Config_Handlers::AliasType const& DataType:: + alias () const + { + return *alias_; + } + + void DataType:: + alias (::CIAO::Config_Handlers::AliasType const& e) + { + if (alias_.get ()) + { + *alias_ = e; + } + + else + { + alias_ = ::std::auto_ptr< ::CIAO::Config_Handlers::AliasType > (new ::CIAO::Config_Handlers::AliasType (e)); + alias_->container (this); + } + } + + // DataType + // + bool DataType:: + id_p () const + { + return id_.get () != 0; + } + + ::XMLSchema::ID< ACE_TCHAR > const& DataType:: + id () const + { + return *id_; + } + + ::XMLSchema::ID< ACE_TCHAR >& DataType:: + id () + { + return *id_; + } + + void DataType:: + id (::XMLSchema::ID< ACE_TCHAR > const& e) + { + if (id_.get ()) + { + *id_ = e; + } + + else + { + id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e)); + id_->container (this); + } + } + + + // DataValue + // + + DataValue:: + DataValue () + : + regulator__ () + { + } + + DataValue:: + DataValue (DataValue const& s) + : + ::XSCRT::Type (), + short__ (s.short__), + long__ (s.long__), + ushort_ (s.ushort_), + ulong_ (s.ulong_), + float__ (s.float__), + double__ (s.double__), + boolean_ (s.boolean_), + octet_ (s.octet_), + enum__ (s.enum__), + string_ (s.string_), + longlong_ (s.longlong_), + ulonglong_ (s.ulonglong_), + longdouble_ (s.longdouble_), + element_ (s.element_), + member_ (s.member_), + regulator__ () + { + } + + DataValue& DataValue:: + operator= (DataValue const& s) + { + short__ = s.short__; + + long__ = s.long__; + + ushort_ = s.ushort_; + + ulong_ = s.ulong_; + + float__ = s.float__; + + double__ = s.double__; + + boolean_ = s.boolean_; + + octet_ = s.octet_; + + enum__ = s.enum__; + + string_ = s.string_; + + longlong_ = s.longlong_; + + ulonglong_ = s.ulonglong_; + + longdouble_ = s.longdouble_; + + element_ = s.element_; + + member_ = s.member_; + + return *this; + } + + + // DataValue + // + DataValue::short_iterator DataValue:: + begin_short () + { + return short__.begin (); + } + + DataValue::short_iterator DataValue:: + end_short () + { + return short__.end (); + } + + DataValue::short_const_iterator DataValue:: + begin_short () const + { + return short__.begin (); + } + + DataValue::short_const_iterator DataValue:: + end_short () const + { + return short__.end (); + } + + void DataValue:: + add_short (ACE_Refcounted_Auto_Ptr < ::XMLSchema::short_, ACE_Null_Mutex > const& e) + { + short__.push_back (e); + } + + size_t DataValue:: + count_short(void) const + { + return short__.size (); + } + + // DataValue + // + DataValue::long_iterator DataValue:: + begin_long () + { + return long__.begin (); + } + + DataValue::long_iterator DataValue:: + end_long () + { + return long__.end (); + } + + DataValue::long_const_iterator DataValue:: + begin_long () const + { + return long__.begin (); + } + + DataValue::long_const_iterator DataValue:: + end_long () const + { + return long__.end (); + } + + void DataValue:: + add_long (ACE_Refcounted_Auto_Ptr < ::XMLSchema::int_, ACE_Null_Mutex > const& e) + { + long__.push_back (e); + } + + size_t DataValue:: + count_long(void) const + { + return long__.size (); + } + + // DataValue + // + DataValue::ushort_iterator DataValue:: + begin_ushort () + { + return ushort_.begin (); + } + + DataValue::ushort_iterator DataValue:: + end_ushort () + { + return ushort_.end (); + } + + DataValue::ushort_const_iterator DataValue:: + begin_ushort () const + { + return ushort_.begin (); + } + + DataValue::ushort_const_iterator DataValue:: + end_ushort () const + { + return ushort_.end (); + } + + void DataValue:: + add_ushort (ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedShort, ACE_Null_Mutex > const& e) + { + ushort_.push_back (e); + } + + size_t DataValue:: + count_ushort(void) const + { + return ushort_.size (); + } + + // DataValue + // + DataValue::ulong_iterator DataValue:: + begin_ulong () + { + return ulong_.begin (); + } + + DataValue::ulong_iterator DataValue:: + end_ulong () + { + return ulong_.end (); + } + + DataValue::ulong_const_iterator DataValue:: + begin_ulong () const + { + return ulong_.begin (); + } + + DataValue::ulong_const_iterator DataValue:: + end_ulong () const + { + return ulong_.end (); + } + + void DataValue:: + add_ulong (ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedInt, ACE_Null_Mutex > const& e) + { + ulong_.push_back (e); + } + + size_t DataValue:: + count_ulong(void) const + { + return ulong_.size (); + } + + // DataValue + // + DataValue::float_iterator DataValue:: + begin_float () + { + return float__.begin (); + } + + DataValue::float_iterator DataValue:: + end_float () + { + return float__.end (); + } + + DataValue::float_const_iterator DataValue:: + begin_float () const + { + return float__.begin (); + } + + DataValue::float_const_iterator DataValue:: + end_float () const + { + return float__.end (); + } + + void DataValue:: + add_float (ACE_Refcounted_Auto_Ptr < ::XMLSchema::float_, ACE_Null_Mutex > const& e) + { + float__.push_back (e); + } + + size_t DataValue:: + count_float(void) const + { + return float__.size (); + } + + // DataValue + // + DataValue::double_iterator DataValue:: + begin_double () + { + return double__.begin (); + } + + DataValue::double_iterator DataValue:: + end_double () + { + return double__.end (); + } + + DataValue::double_const_iterator DataValue:: + begin_double () const + { + return double__.begin (); + } + + DataValue::double_const_iterator DataValue:: + end_double () const + { + return double__.end (); + } + + void DataValue:: + add_double (ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > const& e) + { + double__.push_back (e); + } + + size_t DataValue:: + count_double(void) const + { + return double__.size (); + } + + // DataValue + // + DataValue::boolean_iterator DataValue:: + begin_boolean () + { + return boolean_.begin (); + } + + DataValue::boolean_iterator DataValue:: + end_boolean () + { + return boolean_.end (); + } + + DataValue::boolean_const_iterator DataValue:: + begin_boolean () const + { + return boolean_.begin (); + } + + DataValue::boolean_const_iterator DataValue:: + end_boolean () const + { + return boolean_.end (); + } + + void DataValue:: + add_boolean (ACE_Refcounted_Auto_Ptr < ::XMLSchema::boolean, ACE_Null_Mutex > const& e) + { + boolean_.push_back (e); + } + + size_t DataValue:: + count_boolean(void) const + { + return boolean_.size (); + } + + // DataValue + // + DataValue::octet_iterator DataValue:: + begin_octet () + { + return octet_.begin (); + } + + DataValue::octet_iterator DataValue:: + end_octet () + { + return octet_.end (); + } + + DataValue::octet_const_iterator DataValue:: + begin_octet () const + { + return octet_.begin (); + } + + DataValue::octet_const_iterator DataValue:: + end_octet () const + { + return octet_.end (); + } + + void DataValue:: + add_octet (ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedByte, ACE_Null_Mutex > const& e) + { + octet_.push_back (e); + } + + size_t DataValue:: + count_octet(void) const + { + return octet_.size (); + } + + // DataValue + // + DataValue::enum_iterator DataValue:: + begin_enum () + { + return enum__.begin (); + } + + DataValue::enum_iterator DataValue:: + end_enum () + { + return enum__.end (); + } + + DataValue::enum_const_iterator DataValue:: + begin_enum () const + { + return enum__.begin (); + } + + DataValue::enum_const_iterator DataValue:: + end_enum () const + { + return enum__.end (); + } + + void DataValue:: + add_enum (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + enum__.push_back (e); + } + + size_t DataValue:: + count_enum(void) const + { + return enum__.size (); + } + + // DataValue + // + DataValue::string_iterator DataValue:: + begin_string () + { + return string_.begin (); + } + + DataValue::string_iterator DataValue:: + end_string () + { + return string_.end (); + } + + DataValue::string_const_iterator DataValue:: + begin_string () const + { + return string_.begin (); + } + + DataValue::string_const_iterator DataValue:: + end_string () const + { + return string_.end (); + } + + void DataValue:: + add_string (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + string_.push_back (e); + } + + size_t DataValue:: + count_string(void) const + { + return string_.size (); + } + + // DataValue + // + DataValue::longlong_iterator DataValue:: + begin_longlong () + { + return longlong_.begin (); + } + + DataValue::longlong_iterator DataValue:: + end_longlong () + { + return longlong_.end (); + } + + DataValue::longlong_const_iterator DataValue:: + begin_longlong () const + { + return longlong_.begin (); + } + + DataValue::longlong_const_iterator DataValue:: + end_longlong () const + { + return longlong_.end (); + } + + void DataValue:: + add_longlong (ACE_Refcounted_Auto_Ptr < ::XMLSchema::long_, ACE_Null_Mutex > const& e) + { + longlong_.push_back (e); + } + + size_t DataValue:: + count_longlong(void) const + { + return longlong_.size (); + } + + // DataValue + // + DataValue::ulonglong_iterator DataValue:: + begin_ulonglong () + { + return ulonglong_.begin (); + } + + DataValue::ulonglong_iterator DataValue:: + end_ulonglong () + { + return ulonglong_.end (); + } + + DataValue::ulonglong_const_iterator DataValue:: + begin_ulonglong () const + { + return ulonglong_.begin (); + } + + DataValue::ulonglong_const_iterator DataValue:: + end_ulonglong () const + { + return ulonglong_.end (); + } + + void DataValue:: + add_ulonglong (ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedLong, ACE_Null_Mutex > const& e) + { + ulonglong_.push_back (e); + } + + size_t DataValue:: + count_ulonglong(void) const + { + return ulonglong_.size (); + } + + // DataValue + // + DataValue::longdouble_iterator DataValue:: + begin_longdouble () + { + return longdouble_.begin (); + } + + DataValue::longdouble_iterator DataValue:: + end_longdouble () + { + return longdouble_.end (); + } + + DataValue::longdouble_const_iterator DataValue:: + begin_longdouble () const + { + return longdouble_.begin (); + } + + DataValue::longdouble_const_iterator DataValue:: + end_longdouble () const + { + return longdouble_.end (); + } + + void DataValue:: + add_longdouble (ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > const& e) + { + longdouble_.push_back (e); + } + + size_t DataValue:: + count_longdouble(void) const + { + return longdouble_.size (); + } + + // DataValue + // + DataValue::element_iterator DataValue:: + begin_element () + { + return element_.begin (); + } + + DataValue::element_iterator DataValue:: + end_element () + { + return element_.end (); + } + + DataValue::element_const_iterator DataValue:: + begin_element () const + { + return element_.begin (); + } + + DataValue::element_const_iterator DataValue:: + end_element () const + { + return element_.end (); + } + + void DataValue:: + add_element (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::DataValue, ACE_Null_Mutex > const& e) + { + element_.push_back (e); + } + + size_t DataValue:: + count_element(void) const + { + return element_.size (); + } + + // DataValue + // + DataValue::member_iterator DataValue:: + begin_member () + { + return member_.begin (); + } + + DataValue::member_iterator DataValue:: + end_member () + { + return member_.end (); + } + + DataValue::member_const_iterator DataValue:: + begin_member () const + { + return member_.begin (); + } + + DataValue::member_const_iterator DataValue:: + end_member () const + { + return member_.end (); + } + + void DataValue:: + add_member (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedValue, ACE_Null_Mutex > const& e) + { + member_.push_back (e); + } + + size_t DataValue:: + count_member(void) const + { + return member_.size (); + } + + + // AliasType + // + + AliasType:: + AliasType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__, + ::CIAO::Config_Handlers::DataType const& elementType__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (typeId__)), + elementType_ (new ::CIAO::Config_Handlers::DataType (elementType__)), + regulator__ () + { + name_->container (this); + typeId_->container (this); + elementType_->container (this); + } + + AliasType:: + AliasType (AliasType const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (*s.typeId_)), + elementType_ (new ::CIAO::Config_Handlers::DataType (*s.elementType_)), + regulator__ () + { + name_->container (this); + typeId_->container (this); + elementType_->container (this); + } + + AliasType& AliasType:: + operator= (AliasType const& s) + { + name (*s.name_); + + typeId (*s.typeId_); + + elementType (*s.elementType_); + + return *this; + } + + + // AliasType + // + ::XMLSchema::string< ACE_TCHAR > const& AliasType:: + name () const + { + return *name_; + } + + void AliasType:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // AliasType + // + ::XMLSchema::string< ACE_TCHAR > const& AliasType:: + typeId () const + { + return *typeId_; + } + + void AliasType:: + typeId (::XMLSchema::string< ACE_TCHAR > const& e) + { + *typeId_ = e; + } + + // AliasType + // + ::CIAO::Config_Handlers::DataType const& AliasType:: + elementType () const + { + return *elementType_; + } + + void AliasType:: + elementType (::CIAO::Config_Handlers::DataType const& e) + { + *elementType_ = e; + } + + + // EnumType + // + + EnumType:: + EnumType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > const& member__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (typeId__)), + member_ (member__), + regulator__ () + { + name_->container (this); + typeId_->container (this); + } + + EnumType:: + EnumType (EnumType const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (*s.typeId_)), + member_ (s.member_), + regulator__ () + { + name_->container (this); + typeId_->container (this); + } + + EnumType& EnumType:: + operator= (EnumType const& s) + { + name (*s.name_); + + typeId (*s.typeId_); + + member_ = s.member_; + + return *this; + } + + + // EnumType + // + ::XMLSchema::string< ACE_TCHAR > const& EnumType:: + name () const + { + return *name_; + } + + void EnumType:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // EnumType + // + ::XMLSchema::string< ACE_TCHAR > const& EnumType:: + typeId () const + { + return *typeId_; + } + + void EnumType:: + typeId (::XMLSchema::string< ACE_TCHAR > const& e) + { + *typeId_ = e; + } + + // EnumType + // + EnumType::member_iterator EnumType:: + begin_member () + { + return member_.begin (); + } + + EnumType::member_iterator EnumType:: + end_member () + { + return member_.end (); + } + + EnumType::member_const_iterator EnumType:: + begin_member () const + { + return member_.begin (); + } + + EnumType::member_const_iterator EnumType:: + end_member () const + { + return member_.end (); + } + + void EnumType:: + add_member (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + member_.push_back (e); + } + + size_t EnumType:: + count_member(void) const + { + return member_.size (); + } + + + // StructType + // + + StructType:: + StructType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (typeId__)), + regulator__ () + { + name_->container (this); + typeId_->container (this); + } + + StructType:: + StructType (StructType const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (*s.typeId_)), + member_ (s.member_), + regulator__ () + { + name_->container (this); + typeId_->container (this); + } + + StructType& StructType:: + operator= (StructType const& s) + { + name (*s.name_); + + typeId (*s.typeId_); + + member_ = s.member_; + + return *this; + } + + + // StructType + // + ::XMLSchema::string< ACE_TCHAR > const& StructType:: + name () const + { + return *name_; + } + + void StructType:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // StructType + // + ::XMLSchema::string< ACE_TCHAR > const& StructType:: + typeId () const + { + return *typeId_; + } + + void StructType:: + typeId (::XMLSchema::string< ACE_TCHAR > const& e) + { + *typeId_ = e; + } + + // StructType + // + StructType::member_iterator StructType:: + begin_member () + { + return member_.begin (); + } + + StructType::member_iterator StructType:: + end_member () + { + return member_.end (); + } + + StructType::member_const_iterator StructType:: + begin_member () const + { + return member_.begin (); + } + + StructType::member_const_iterator StructType:: + end_member () const + { + return member_.end (); + } + + void StructType:: + add_member (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::StructMemberType, ACE_Null_Mutex > const& e) + { + member_.push_back (e); + } + + size_t StructType:: + count_member(void) const + { + return member_.size (); + } + + + // StructMemberType + // + + StructMemberType:: + StructMemberType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::DataType const& type__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + type_ (new ::CIAO::Config_Handlers::DataType (type__)), + regulator__ () + { + name_->container (this); + type_->container (this); + } + + StructMemberType:: + StructMemberType (StructMemberType const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + type_ (new ::CIAO::Config_Handlers::DataType (*s.type_)), + regulator__ () + { + name_->container (this); + type_->container (this); + } + + StructMemberType& StructMemberType:: + operator= (StructMemberType const& s) + { + name (*s.name_); + + type (*s.type_); + + return *this; + } + + + // StructMemberType + // + ::XMLSchema::string< ACE_TCHAR > const& StructMemberType:: + name () const + { + return *name_; + } + + void StructMemberType:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // StructMemberType + // + ::CIAO::Config_Handlers::DataType const& StructMemberType:: + type () const + { + return *type_; + } + + void StructMemberType:: + type (::CIAO::Config_Handlers::DataType const& e) + { + *type_ = e; + } + + + // ValueType + // + + ValueType:: + ValueType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__, + ::XMLSchema::string< ACE_TCHAR > const& modifier__, + ::CIAO::Config_Handlers::DataType const& baseType__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (typeId__)), + modifier_ (new ::XMLSchema::string< ACE_TCHAR > (modifier__)), + baseType_ (new ::CIAO::Config_Handlers::DataType (baseType__)), + regulator__ () + { + name_->container (this); + typeId_->container (this); + modifier_->container (this); + baseType_->container (this); + } + + ValueType:: + ValueType (ValueType const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + typeId_ (new ::XMLSchema::string< ACE_TCHAR > (*s.typeId_)), + modifier_ (new ::XMLSchema::string< ACE_TCHAR > (*s.modifier_)), + baseType_ (new ::CIAO::Config_Handlers::DataType (*s.baseType_)), + member_ (s.member_), + regulator__ () + { + name_->container (this); + typeId_->container (this); + modifier_->container (this); + baseType_->container (this); + } + + ValueType& ValueType:: + operator= (ValueType const& s) + { + name (*s.name_); + + typeId (*s.typeId_); + + modifier (*s.modifier_); + + baseType (*s.baseType_); + + member_ = s.member_; + + return *this; + } + + + // ValueType + // + ::XMLSchema::string< ACE_TCHAR > const& ValueType:: + name () const + { + return *name_; + } + + void ValueType:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // ValueType + // + ::XMLSchema::string< ACE_TCHAR > const& ValueType:: + typeId () const + { + return *typeId_; + } + + void ValueType:: + typeId (::XMLSchema::string< ACE_TCHAR > const& e) + { + *typeId_ = e; + } + + // ValueType + // + ::XMLSchema::string< ACE_TCHAR > const& ValueType:: + modifier () const + { + return *modifier_; + } + + void ValueType:: + modifier (::XMLSchema::string< ACE_TCHAR > const& e) + { + *modifier_ = e; + } + + // ValueType + // + ::CIAO::Config_Handlers::DataType const& ValueType:: + baseType () const + { + return *baseType_; + } + + void ValueType:: + baseType (::CIAO::Config_Handlers::DataType const& e) + { + *baseType_ = e; + } + + // ValueType + // + ValueType::member_iterator ValueType:: + begin_member () + { + return member_.begin (); + } + + ValueType::member_iterator ValueType:: + end_member () + { + return member_.end (); + } + + ValueType::member_const_iterator ValueType:: + begin_member () const + { + return member_.begin (); + } + + ValueType::member_const_iterator ValueType:: + end_member () const + { + return member_.end (); + } + + void ValueType:: + add_member (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ValueMemberType, ACE_Null_Mutex > const& e) + { + member_.push_back (e); + } + + size_t ValueType:: + count_member(void) const + { + return member_.size (); + } + + + // ValueMemberType + // + + ValueMemberType:: + ValueMemberType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& visibility__, + ::CIAO::Config_Handlers::DataType const& type__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + visibility_ (new ::XMLSchema::string< ACE_TCHAR > (visibility__)), + type_ (new ::CIAO::Config_Handlers::DataType (type__)), + regulator__ () + { + name_->container (this); + visibility_->container (this); + type_->container (this); + } + + ValueMemberType:: + ValueMemberType (ValueMemberType const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + visibility_ (new ::XMLSchema::string< ACE_TCHAR > (*s.visibility_)), + type_ (new ::CIAO::Config_Handlers::DataType (*s.type_)), + regulator__ () + { + name_->container (this); + visibility_->container (this); + type_->container (this); + } + + ValueMemberType& ValueMemberType:: + operator= (ValueMemberType const& s) + { + name (*s.name_); + + visibility (*s.visibility_); + + type (*s.type_); + + return *this; + } + + + // ValueMemberType + // + ::XMLSchema::string< ACE_TCHAR > const& ValueMemberType:: + name () const + { + return *name_; + } + + void ValueMemberType:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // ValueMemberType + // + ::XMLSchema::string< ACE_TCHAR > const& ValueMemberType:: + visibility () const + { + return *visibility_; + } + + void ValueMemberType:: + visibility (::XMLSchema::string< ACE_TCHAR > const& e) + { + *visibility_ = e; + } + + // ValueMemberType + // + ::CIAO::Config_Handlers::DataType const& ValueMemberType:: + type () const + { + return *type_; + } + + void ValueMemberType:: + type (::CIAO::Config_Handlers::DataType const& e) + { + *type_ = e; + } + + + // NamedValue + // + + NamedValue:: + NamedValue (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::DataValue const& value__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + value_ (new ::CIAO::Config_Handlers::DataValue (value__)), + regulator__ () + { + name_->container (this); + value_->container (this); + } + + NamedValue:: + NamedValue (NamedValue const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + value_ (new ::CIAO::Config_Handlers::DataValue (*s.value_)), + regulator__ () + { + name_->container (this); + value_->container (this); + } + + NamedValue& NamedValue:: + operator= (NamedValue const& s) + { + name (*s.name_); + + value (*s.value_); + + return *this; + } + + + // NamedValue + // + ::XMLSchema::string< ACE_TCHAR > const& NamedValue:: + name () const + { + return *name_; + } + + void NamedValue:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // NamedValue + // + ::CIAO::Config_Handlers::DataValue const& NamedValue:: + value () const + { + return *value_; + } + + void NamedValue:: + value (::CIAO::Config_Handlers::DataValue const& e) + { + *value_ = e; + } + + + // SequenceType + // + + SequenceType:: + SequenceType (::CIAO::Config_Handlers::DataType const& elementType__) + : + elementType_ (new ::CIAO::Config_Handlers::DataType (elementType__)), + regulator__ () + { + elementType_->container (this); + } + + SequenceType:: + SequenceType (SequenceType const& s) + : + ::XSCRT::Type (), + bound_ (s.bound_.get () ? new ::XMLSchema::unsignedInt (*s.bound_) : 0), + elementType_ (new ::CIAO::Config_Handlers::DataType (*s.elementType_)), + regulator__ () + { + if (bound_.get ()) bound_->container (this); + elementType_->container (this); + } + + SequenceType& SequenceType:: + operator= (SequenceType const& s) + { + if (s.bound_.get ()) + bound (*(s.bound_)); + else + bound_.reset (0); + + elementType (*s.elementType_); + + return *this; + } + + + // SequenceType + // + bool SequenceType:: + bound_p () const + { + return bound_.get () != 0; + } + + ::XMLSchema::unsignedInt const& SequenceType:: + bound () const + { + return *bound_; + } + + void SequenceType:: + bound (::XMLSchema::unsignedInt const& e) + { + if (bound_.get ()) + { + *bound_ = e; + } + + else + { + bound_ = ::std::auto_ptr< ::XMLSchema::unsignedInt > (new ::XMLSchema::unsignedInt (e)); + bound_->container (this); + } + } + + // SequenceType + // + ::CIAO::Config_Handlers::DataType const& SequenceType:: + elementType () const + { + return *elementType_; + } + + void SequenceType:: + elementType (::CIAO::Config_Handlers::DataType const& e) + { + *elementType_ = e; + } + + + // Any + // + + Any:: + Any (::CIAO::Config_Handlers::DataType const& type__, + ::CIAO::Config_Handlers::DataValue const& value__) + : + type_ (new ::CIAO::Config_Handlers::DataType (type__)), + value_ (new ::CIAO::Config_Handlers::DataValue (value__)), + regulator__ () + { + type_->container (this); + value_->container (this); + } + + Any:: + Any (Any const& s) + : + ::XSCRT::Type (), + type_ (new ::CIAO::Config_Handlers::DataType (*s.type_)), + value_ (new ::CIAO::Config_Handlers::DataValue (*s.value_)), + regulator__ () + { + type_->container (this); + value_->container (this); + } + + Any& Any:: + operator= (Any const& s) + { + type (*s.type_); + + value (*s.value_); + + return *this; + } + + + // Any + // + ::CIAO::Config_Handlers::DataType const& Any:: + type () const + { + return *type_; + } + + void Any:: + type (::CIAO::Config_Handlers::DataType const& e) + { + *type_ = e; + } + + // Any + // + ::CIAO::Config_Handlers::DataValue const& Any:: + value () const + { + return *value_; + } + + void Any:: + value (::CIAO::Config_Handlers::DataValue const& e) + { + *value_ = e; + } + + + // Property + // + + Property:: + Property (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::Any const& value__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + value_ (new ::CIAO::Config_Handlers::Any (value__)), + regulator__ () + { + name_->container (this); + value_->container (this); + } + + Property:: + Property (Property const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + value_ (new ::CIAO::Config_Handlers::Any (*s.value_)), + regulator__ () + { + name_->container (this); + value_->container (this); + } + + Property& Property:: + operator= (Property const& s) + { + name (*s.name_); + + value (*s.value_); + + return *this; + } + + + // Property + // + ::XMLSchema::string< ACE_TCHAR > const& Property:: + name () const + { + return *name_; + } + + void Property:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Property + // + ::CIAO::Config_Handlers::Any const& Property:: + value () const + { + return *value_; + } + + void Property:: + value (::CIAO::Config_Handlers::Any const& e) + { + *value_ = e; + } + + + // SatisfierPropertyKind + // + + SatisfierPropertyKind::Value SatisfierPropertyKind:: + integral () const + { + return v_; + } + + bool + operator== (::CIAO::Config_Handlers::SatisfierPropertyKind const& a, ::CIAO::Config_Handlers::SatisfierPropertyKind const& b) + { + return a.v_ == b.v_; + } + + bool + operator!= (::CIAO::Config_Handlers::SatisfierPropertyKind const& a, ::CIAO::Config_Handlers::SatisfierPropertyKind const& b) + { + return a.v_ != b.v_; + } + + SatisfierPropertyKind:: + SatisfierPropertyKind (SatisfierPropertyKind::Value v) + : v_ (v) + { + } + + // SatisfierProperty + // + + SatisfierProperty:: + SatisfierProperty (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::SatisfierPropertyKind const& kind__, + ::XMLSchema::boolean const& dynamic__, + ::CIAO::Config_Handlers::Any const& value__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + kind_ (new ::CIAO::Config_Handlers::SatisfierPropertyKind (kind__)), + dynamic_ (new ::XMLSchema::boolean (dynamic__)), + value_ (new ::CIAO::Config_Handlers::Any (value__)), + regulator__ () + { + name_->container (this); + kind_->container (this); + dynamic_->container (this); + value_->container (this); + } + + SatisfierProperty:: + SatisfierProperty (SatisfierProperty const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + kind_ (new ::CIAO::Config_Handlers::SatisfierPropertyKind (*s.kind_)), + dynamic_ (new ::XMLSchema::boolean (*s.dynamic_)), + value_ (new ::CIAO::Config_Handlers::Any (*s.value_)), + regulator__ () + { + name_->container (this); + kind_->container (this); + dynamic_->container (this); + value_->container (this); + } + + SatisfierProperty& SatisfierProperty:: + operator= (SatisfierProperty const& s) + { + name (*s.name_); + + kind (*s.kind_); + + dynamic (*s.dynamic_); + + value (*s.value_); + + return *this; + } + + + // SatisfierProperty + // + ::XMLSchema::string< ACE_TCHAR > const& SatisfierProperty:: + name () const + { + return *name_; + } + + void SatisfierProperty:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // SatisfierProperty + // + ::CIAO::Config_Handlers::SatisfierPropertyKind const& SatisfierProperty:: + kind () const + { + return *kind_; + } + + void SatisfierProperty:: + kind (::CIAO::Config_Handlers::SatisfierPropertyKind const& e) + { + *kind_ = e; + } + + // SatisfierProperty + // + ::XMLSchema::boolean const& SatisfierProperty:: + dynamic () const + { + return *dynamic_; + } + + void SatisfierProperty:: + dynamic (::XMLSchema::boolean const& e) + { + *dynamic_ = e; + } + + // SatisfierProperty + // + ::CIAO::Config_Handlers::Any const& SatisfierProperty:: + value () const + { + return *value_; + } + + void SatisfierProperty:: + value (::CIAO::Config_Handlers::Any const& e) + { + *value_ = e; + } + + + // Resource + // + + Resource:: + Resource (::XMLSchema::string< ACE_TCHAR > const& name__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > const& resourceType__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + resourceType_ (resourceType__), + regulator__ () + { + name_->container (this); + } + + Resource:: + Resource (Resource const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + resourceType_ (s.resourceType_), + property_ (s.property_), + regulator__ () + { + name_->container (this); + } + + Resource& Resource:: + operator= (Resource const& s) + { + name (*s.name_); + + resourceType_ = s.resourceType_; + + property_ = s.property_; + + return *this; + } + + + // Resource + // + ::XMLSchema::string< ACE_TCHAR > const& Resource:: + name () const + { + return *name_; + } + + void Resource:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Resource + // + Resource::resourceType_iterator Resource:: + begin_resourceType () + { + return resourceType_.begin (); + } + + Resource::resourceType_iterator Resource:: + end_resourceType () + { + return resourceType_.end (); + } + + Resource::resourceType_const_iterator Resource:: + begin_resourceType () const + { + return resourceType_.begin (); + } + + Resource::resourceType_const_iterator Resource:: + end_resourceType () const + { + return resourceType_.end (); + } + + void Resource:: + add_resourceType (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + resourceType_.push_back (e); + } + + size_t Resource:: + count_resourceType(void) const + { + return resourceType_.size (); + } + + // Resource + // + Resource::property_iterator Resource:: + begin_property () + { + return property_.begin (); + } + + Resource::property_iterator Resource:: + end_property () + { + return property_.end (); + } + + Resource::property_const_iterator Resource:: + begin_property () const + { + return property_.begin (); + } + + Resource::property_const_iterator Resource:: + end_property () const + { + return property_.end (); + } + + void Resource:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t Resource:: + count_property(void) const + { + return property_.size (); + } + + + // Requirement + // + + Requirement:: + Requirement (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& resourceType__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (resourceType__)), + regulator__ () + { + name_->container (this); + resourceType_->container (this); + } + + Requirement:: + Requirement (Requirement const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceType_)), + property_ (s.property_), + regulator__ () + { + name_->container (this); + resourceType_->container (this); + } + + Requirement& Requirement:: + operator= (Requirement const& s) + { + name (*s.name_); + + resourceType (*s.resourceType_); + + property_ = s.property_; + + return *this; + } + + + // Requirement + // + ::XMLSchema::string< ACE_TCHAR > const& Requirement:: + name () const + { + return *name_; + } + + void Requirement:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Requirement + // + ::XMLSchema::string< ACE_TCHAR > const& Requirement:: + resourceType () const + { + return *resourceType_; + } + + void Requirement:: + resourceType (::XMLSchema::string< ACE_TCHAR > const& e) + { + *resourceType_ = e; + } + + // Requirement + // + Requirement::property_iterator Requirement:: + begin_property () + { + return property_.begin (); + } + + Requirement::property_iterator Requirement:: + end_property () + { + return property_.end (); + } + + Requirement::property_const_iterator Requirement:: + begin_property () const + { + return property_.begin (); + } + + Requirement::property_const_iterator Requirement:: + end_property () const + { + return property_.end (); + } + + void Requirement:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t Requirement:: + count_property(void) const + { + return property_.size (); + } + + + // ResourceDeploymentDescription + // + + ResourceDeploymentDescription:: + ResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& requirementName__, + ::XMLSchema::string< ACE_TCHAR > const& resourceName__) + : + requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (requirementName__)), + resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (resourceName__)), + regulator__ () + { + requirementName_->container (this); + resourceName_->container (this); + } + + ResourceDeploymentDescription:: + ResourceDeploymentDescription (ResourceDeploymentDescription const& s) + : + ::XSCRT::Type (), + requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requirementName_)), + resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceName_)), + property_ (s.property_), + regulator__ () + { + requirementName_->container (this); + resourceName_->container (this); + } + + ResourceDeploymentDescription& ResourceDeploymentDescription:: + operator= (ResourceDeploymentDescription const& s) + { + requirementName (*s.requirementName_); + + resourceName (*s.resourceName_); + + property_ = s.property_; + + return *this; + } + + + // ResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ResourceDeploymentDescription:: + requirementName () const + { + return *requirementName_; + } + + void ResourceDeploymentDescription:: + requirementName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *requirementName_ = e; + } + + // ResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ResourceDeploymentDescription:: + resourceName () const + { + return *resourceName_; + } + + void ResourceDeploymentDescription:: + resourceName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *resourceName_ = e; + } + + // ResourceDeploymentDescription + // + ResourceDeploymentDescription::property_iterator ResourceDeploymentDescription:: + begin_property () + { + return property_.begin (); + } + + ResourceDeploymentDescription::property_iterator ResourceDeploymentDescription:: + end_property () + { + return property_.end (); + } + + ResourceDeploymentDescription::property_const_iterator ResourceDeploymentDescription:: + begin_property () const + { + return property_.begin (); + } + + ResourceDeploymentDescription::property_const_iterator ResourceDeploymentDescription:: + end_property () const + { + return property_.end (); + } + + void ResourceDeploymentDescription:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t ResourceDeploymentDescription:: + count_property(void) const + { + return property_.size (); + } + + + // ArtifactDeploymentDescription + // + + ArtifactDeploymentDescription:: + ArtifactDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& node__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + node_ (new ::XMLSchema::string< ACE_TCHAR > (node__)), + regulator__ () + { + name_->container (this); + node_->container (this); + } + + ArtifactDeploymentDescription:: + ArtifactDeploymentDescription (ArtifactDeploymentDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + source_ (s.source_), + node_ (new ::XMLSchema::string< ACE_TCHAR > (*s.node_)), + location_ (s.location_), + execParameter_ (s.execParameter_), + deployRequirement_ (s.deployRequirement_), + deployedResource_ (s.deployedResource_), + id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0), + regulator__ () + { + name_->container (this); + node_->container (this); + if (id_.get ()) id_->container (this); + } + + ArtifactDeploymentDescription& ArtifactDeploymentDescription:: + operator= (ArtifactDeploymentDescription const& s) + { + name (*s.name_); + + source_ = s.source_; + + node (*s.node_); + + location_ = s.location_; + + execParameter_ = s.execParameter_; + + deployRequirement_ = s.deployRequirement_; + + deployedResource_ = s.deployedResource_; + + if (s.id_.get ()) id (*(s.id_)); + else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0); + + return *this; + } + + + // ArtifactDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ArtifactDeploymentDescription:: + name () const + { + return *name_; + } + + void ArtifactDeploymentDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // ArtifactDeploymentDescription + // + ArtifactDeploymentDescription::source_iterator ArtifactDeploymentDescription:: + begin_source () + { + return source_.begin (); + } + + ArtifactDeploymentDescription::source_iterator ArtifactDeploymentDescription:: + end_source () + { + return source_.end (); + } + + ArtifactDeploymentDescription::source_const_iterator ArtifactDeploymentDescription:: + begin_source () const + { + return source_.begin (); + } + + ArtifactDeploymentDescription::source_const_iterator ArtifactDeploymentDescription:: + end_source () const + { + return source_.end (); + } + + void ArtifactDeploymentDescription:: + add_source (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + source_.push_back (e); + } + + size_t ArtifactDeploymentDescription:: + count_source(void) const + { + return source_.size (); + } + + // ArtifactDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ArtifactDeploymentDescription:: + node () const + { + return *node_; + } + + void ArtifactDeploymentDescription:: + node (::XMLSchema::string< ACE_TCHAR > const& e) + { + *node_ = e; + } + + // ArtifactDeploymentDescription + // + ArtifactDeploymentDescription::location_iterator ArtifactDeploymentDescription:: + begin_location () + { + return location_.begin (); + } + + ArtifactDeploymentDescription::location_iterator ArtifactDeploymentDescription:: + end_location () + { + return location_.end (); + } + + ArtifactDeploymentDescription::location_const_iterator ArtifactDeploymentDescription:: + begin_location () const + { + return location_.begin (); + } + + ArtifactDeploymentDescription::location_const_iterator ArtifactDeploymentDescription:: + end_location () const + { + return location_.end (); + } + + void ArtifactDeploymentDescription:: + add_location (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + location_.push_back (e); + } + + size_t ArtifactDeploymentDescription:: + count_location(void) const + { + return location_.size (); + } + + // ArtifactDeploymentDescription + // + ArtifactDeploymentDescription::execParameter_iterator ArtifactDeploymentDescription:: + begin_execParameter () + { + return execParameter_.begin (); + } + + ArtifactDeploymentDescription::execParameter_iterator ArtifactDeploymentDescription:: + end_execParameter () + { + return execParameter_.end (); + } + + ArtifactDeploymentDescription::execParameter_const_iterator ArtifactDeploymentDescription:: + begin_execParameter () const + { + return execParameter_.begin (); + } + + ArtifactDeploymentDescription::execParameter_const_iterator ArtifactDeploymentDescription:: + end_execParameter () const + { + return execParameter_.end (); + } + + void ArtifactDeploymentDescription:: + add_execParameter (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + execParameter_.push_back (e); + } + + size_t ArtifactDeploymentDescription:: + count_execParameter(void) const + { + return execParameter_.size (); + } + + // ArtifactDeploymentDescription + // + ArtifactDeploymentDescription::deployRequirement_iterator ArtifactDeploymentDescription:: + begin_deployRequirement () + { + return deployRequirement_.begin (); + } + + ArtifactDeploymentDescription::deployRequirement_iterator ArtifactDeploymentDescription:: + end_deployRequirement () + { + return deployRequirement_.end (); + } + + ArtifactDeploymentDescription::deployRequirement_const_iterator ArtifactDeploymentDescription:: + begin_deployRequirement () const + { + return deployRequirement_.begin (); + } + + ArtifactDeploymentDescription::deployRequirement_const_iterator ArtifactDeploymentDescription:: + end_deployRequirement () const + { + return deployRequirement_.end (); + } + + void ArtifactDeploymentDescription:: + add_deployRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + deployRequirement_.push_back (e); + } + + size_t ArtifactDeploymentDescription:: + count_deployRequirement(void) const + { + return deployRequirement_.size (); + } + + // ArtifactDeploymentDescription + // + ArtifactDeploymentDescription::deployedResource_iterator ArtifactDeploymentDescription:: + begin_deployedResource () + { + return deployedResource_.begin (); + } + + ArtifactDeploymentDescription::deployedResource_iterator ArtifactDeploymentDescription:: + end_deployedResource () + { + return deployedResource_.end (); + } + + ArtifactDeploymentDescription::deployedResource_const_iterator ArtifactDeploymentDescription:: + begin_deployedResource () const + { + return deployedResource_.begin (); + } + + ArtifactDeploymentDescription::deployedResource_const_iterator ArtifactDeploymentDescription:: + end_deployedResource () const + { + return deployedResource_.end (); + } + + void ArtifactDeploymentDescription:: + add_deployedResource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ResourceDeploymentDescription, ACE_Null_Mutex > const& e) + { + deployedResource_.push_back (e); + } + + size_t ArtifactDeploymentDescription:: + count_deployedResource(void) const + { + return deployedResource_.size (); + } + + // ArtifactDeploymentDescription + // + bool ArtifactDeploymentDescription:: + id_p () const + { + return id_.get () != 0; + } + + ::XMLSchema::ID< ACE_TCHAR > const& ArtifactDeploymentDescription:: + id () const + { + return *id_; + } + + ::XMLSchema::ID< ACE_TCHAR >& ArtifactDeploymentDescription:: + id () + { + return *id_; + } + + void ArtifactDeploymentDescription:: + id (::XMLSchema::ID< ACE_TCHAR > const& e) + { + if (id_.get ()) + { + *id_ = e; + } + + else + { + id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e)); + id_->container (this); + } + } + + + // MonolithicDeploymentDescription + // + + MonolithicDeploymentDescription:: + MonolithicDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + name_->container (this); + } + + MonolithicDeploymentDescription:: + MonolithicDeploymentDescription (MonolithicDeploymentDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + source_ (s.source_), + artifact_ (s.artifact_), + execParameter_ (s.execParameter_), + deployRequirement_ (s.deployRequirement_), + id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0), + regulator__ () + { + name_->container (this); + if (id_.get ()) id_->container (this); + } + + MonolithicDeploymentDescription& MonolithicDeploymentDescription:: + operator= (MonolithicDeploymentDescription const& s) + { + name (*s.name_); + + source_ = s.source_; + + artifact_ = s.artifact_; + + execParameter_ = s.execParameter_; + + deployRequirement_ = s.deployRequirement_; + + if (s.id_.get ()) id (*(s.id_)); + else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0); + + return *this; + } + + + // MonolithicDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& MonolithicDeploymentDescription:: + name () const + { + return *name_; + } + + void MonolithicDeploymentDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // MonolithicDeploymentDescription + // + MonolithicDeploymentDescription::source_iterator MonolithicDeploymentDescription:: + begin_source () + { + return source_.begin (); + } + + MonolithicDeploymentDescription::source_iterator MonolithicDeploymentDescription:: + end_source () + { + return source_.end (); + } + + MonolithicDeploymentDescription::source_const_iterator MonolithicDeploymentDescription:: + begin_source () const + { + return source_.begin (); + } + + MonolithicDeploymentDescription::source_const_iterator MonolithicDeploymentDescription:: + end_source () const + { + return source_.end (); + } + + void MonolithicDeploymentDescription:: + add_source (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + source_.push_back (e); + } + + size_t MonolithicDeploymentDescription:: + count_source(void) const + { + return source_.size (); + } + + // MonolithicDeploymentDescription + // + MonolithicDeploymentDescription::artifact_iterator MonolithicDeploymentDescription:: + begin_artifact () + { + return artifact_.begin (); + } + + MonolithicDeploymentDescription::artifact_iterator MonolithicDeploymentDescription:: + end_artifact () + { + return artifact_.end (); + } + + MonolithicDeploymentDescription::artifact_const_iterator MonolithicDeploymentDescription:: + begin_artifact () const + { + return artifact_.begin (); + } + + MonolithicDeploymentDescription::artifact_const_iterator MonolithicDeploymentDescription:: + end_artifact () const + { + return artifact_.end (); + } + + void MonolithicDeploymentDescription:: + add_artifact (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > const& e) + { + artifact_.push_back (e); + } + + size_t MonolithicDeploymentDescription:: + count_artifact(void) const + { + return artifact_.size (); + } + + // MonolithicDeploymentDescription + // + MonolithicDeploymentDescription::execParameter_iterator MonolithicDeploymentDescription:: + begin_execParameter () + { + return execParameter_.begin (); + } + + MonolithicDeploymentDescription::execParameter_iterator MonolithicDeploymentDescription:: + end_execParameter () + { + return execParameter_.end (); + } + + MonolithicDeploymentDescription::execParameter_const_iterator MonolithicDeploymentDescription:: + begin_execParameter () const + { + return execParameter_.begin (); + } + + MonolithicDeploymentDescription::execParameter_const_iterator MonolithicDeploymentDescription:: + end_execParameter () const + { + return execParameter_.end (); + } + + void MonolithicDeploymentDescription:: + add_execParameter (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + execParameter_.push_back (e); + } + + size_t MonolithicDeploymentDescription:: + count_execParameter(void) const + { + return execParameter_.size (); + } + + // MonolithicDeploymentDescription + // + MonolithicDeploymentDescription::deployRequirement_iterator MonolithicDeploymentDescription:: + begin_deployRequirement () + { + return deployRequirement_.begin (); + } + + MonolithicDeploymentDescription::deployRequirement_iterator MonolithicDeploymentDescription:: + end_deployRequirement () + { + return deployRequirement_.end (); + } + + MonolithicDeploymentDescription::deployRequirement_const_iterator MonolithicDeploymentDescription:: + begin_deployRequirement () const + { + return deployRequirement_.begin (); + } + + MonolithicDeploymentDescription::deployRequirement_const_iterator MonolithicDeploymentDescription:: + end_deployRequirement () const + { + return deployRequirement_.end (); + } + + void MonolithicDeploymentDescription:: + add_deployRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + deployRequirement_.push_back (e); + } + + size_t MonolithicDeploymentDescription:: + count_deployRequirement(void) const + { + return deployRequirement_.size (); + } + + // MonolithicDeploymentDescription + // + bool MonolithicDeploymentDescription:: + id_p () const + { + return id_.get () != 0; + } + + ::XMLSchema::ID< ACE_TCHAR > const& MonolithicDeploymentDescription:: + id () const + { + return *id_; + } + + ::XMLSchema::ID< ACE_TCHAR >& MonolithicDeploymentDescription:: + id () + { + return *id_; + } + + void MonolithicDeploymentDescription:: + id (::XMLSchema::ID< ACE_TCHAR > const& e) + { + if (id_.get ()) + { + *id_ = e; + } + + else + { + id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e)); + id_->container (this); + } + } + + + // ResourceUsageKind + // + + ResourceUsageKind::Value ResourceUsageKind:: + integral () const + { + return v_; + } + + bool + operator== (::CIAO::Config_Handlers::ResourceUsageKind const& a, ::CIAO::Config_Handlers::ResourceUsageKind const& b) + { + return a.v_ == b.v_; + } + + bool + operator!= (::CIAO::Config_Handlers::ResourceUsageKind const& a, ::CIAO::Config_Handlers::ResourceUsageKind const& b) + { + return a.v_ != b.v_; + } + + ResourceUsageKind:: + ResourceUsageKind (ResourceUsageKind::Value v) + : v_ (v) + { + } + + // InstanceResourceDeploymentDescription + // + + InstanceResourceDeploymentDescription:: + InstanceResourceDeploymentDescription (::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage__, + ::XMLSchema::string< ACE_TCHAR > const& requirementName__, + ::XMLSchema::string< ACE_TCHAR > const& resourceName__) + : + resourceUsage_ (new ::CIAO::Config_Handlers::ResourceUsageKind (resourceUsage__)), + requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (requirementName__)), + resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (resourceName__)), + regulator__ () + { + resourceUsage_->container (this); + requirementName_->container (this); + resourceName_->container (this); + } + + InstanceResourceDeploymentDescription:: + InstanceResourceDeploymentDescription (InstanceResourceDeploymentDescription const& s) + : + ::XSCRT::Type (), + resourceUsage_ (new ::CIAO::Config_Handlers::ResourceUsageKind (*s.resourceUsage_)), + requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requirementName_)), + resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceName_)), + property_ (s.property_), + regulator__ () + { + resourceUsage_->container (this); + requirementName_->container (this); + resourceName_->container (this); + } + + InstanceResourceDeploymentDescription& InstanceResourceDeploymentDescription:: + operator= (InstanceResourceDeploymentDescription const& s) + { + resourceUsage (*s.resourceUsage_); + + requirementName (*s.requirementName_); + + resourceName (*s.resourceName_); + + property_ = s.property_; + + return *this; + } + + + // InstanceResourceDeploymentDescription + // + ::CIAO::Config_Handlers::ResourceUsageKind const& InstanceResourceDeploymentDescription:: + resourceUsage () const + { + return *resourceUsage_; + } + + void InstanceResourceDeploymentDescription:: + resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& e) + { + *resourceUsage_ = e; + } + + // InstanceResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& InstanceResourceDeploymentDescription:: + requirementName () const + { + return *requirementName_; + } + + void InstanceResourceDeploymentDescription:: + requirementName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *requirementName_ = e; + } + + // InstanceResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& InstanceResourceDeploymentDescription:: + resourceName () const + { + return *resourceName_; + } + + void InstanceResourceDeploymentDescription:: + resourceName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *resourceName_ = e; + } + + // InstanceResourceDeploymentDescription + // + InstanceResourceDeploymentDescription::property_iterator InstanceResourceDeploymentDescription:: + begin_property () + { + return property_.begin (); + } + + InstanceResourceDeploymentDescription::property_iterator InstanceResourceDeploymentDescription:: + end_property () + { + return property_.end (); + } + + InstanceResourceDeploymentDescription::property_const_iterator InstanceResourceDeploymentDescription:: + begin_property () const + { + return property_.begin (); + } + + InstanceResourceDeploymentDescription::property_const_iterator InstanceResourceDeploymentDescription:: + end_property () const + { + return property_.end (); + } + + void InstanceResourceDeploymentDescription:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t InstanceResourceDeploymentDescription:: + count_property(void) const + { + return property_.size (); + } + + + // InstanceDeploymentDescription + // + + InstanceDeploymentDescription:: + InstanceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& node__, + ::XMLSchema::string< ACE_TCHAR > const& source__, + ::CIAO::Config_Handlers::IdRef const& implementation__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + node_ (new ::XMLSchema::string< ACE_TCHAR > (node__)), + source_ (new ::XMLSchema::string< ACE_TCHAR > (source__)), + implementation_ (new ::CIAO::Config_Handlers::IdRef (implementation__)), + regulator__ () + { + name_->container (this); + node_->container (this); + source_->container (this); + implementation_->container (this); + } + + InstanceDeploymentDescription:: + InstanceDeploymentDescription (InstanceDeploymentDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + node_ (new ::XMLSchema::string< ACE_TCHAR > (*s.node_)), + source_ (new ::XMLSchema::string< ACE_TCHAR > (*s.source_)), + implementation_ (new ::CIAO::Config_Handlers::IdRef (*s.implementation_)), + configProperty_ (s.configProperty_), + deployedResource_ (s.deployedResource_), + deployedSharedResource_ (s.deployedSharedResource_.get () ? new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (*s.deployedSharedResource_) : 0), + id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0), + regulator__ () + { + name_->container (this); + node_->container (this); + source_->container (this); + implementation_->container (this); + if (deployedSharedResource_.get ()) deployedSharedResource_->container (this); + if (id_.get ()) id_->container (this); + } + + InstanceDeploymentDescription& InstanceDeploymentDescription:: + operator= (InstanceDeploymentDescription const& s) + { + name (*s.name_); + + node (*s.node_); + + source (*s.source_); + + implementation (*s.implementation_); + + configProperty_ = s.configProperty_; + + deployedResource_ = s.deployedResource_; + + if (s.deployedSharedResource_.get ()) + deployedSharedResource (*(s.deployedSharedResource_)); + else + deployedSharedResource_.reset (0); + + if (s.id_.get ()) id (*(s.id_)); + else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0); + + return *this; + } + + + // InstanceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& InstanceDeploymentDescription:: + name () const + { + return *name_; + } + + void InstanceDeploymentDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // InstanceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& InstanceDeploymentDescription:: + node () const + { + return *node_; + } + + void InstanceDeploymentDescription:: + node (::XMLSchema::string< ACE_TCHAR > const& e) + { + *node_ = e; + } + + // InstanceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& InstanceDeploymentDescription:: + source () const + { + return *source_; + } + + void InstanceDeploymentDescription:: + source (::XMLSchema::string< ACE_TCHAR > const& e) + { + *source_ = e; + } + + // InstanceDeploymentDescription + // + ::CIAO::Config_Handlers::IdRef const& InstanceDeploymentDescription:: + implementation () const + { + return *implementation_; + } + + void InstanceDeploymentDescription:: + implementation (::CIAO::Config_Handlers::IdRef const& e) + { + *implementation_ = e; + } + + // InstanceDeploymentDescription + // + InstanceDeploymentDescription::configProperty_iterator InstanceDeploymentDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + InstanceDeploymentDescription::configProperty_iterator InstanceDeploymentDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + InstanceDeploymentDescription::configProperty_const_iterator InstanceDeploymentDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + InstanceDeploymentDescription::configProperty_const_iterator InstanceDeploymentDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void InstanceDeploymentDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t InstanceDeploymentDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // InstanceDeploymentDescription + // + InstanceDeploymentDescription::deployedResource_iterator InstanceDeploymentDescription:: + begin_deployedResource () + { + return deployedResource_.begin (); + } + + InstanceDeploymentDescription::deployedResource_iterator InstanceDeploymentDescription:: + end_deployedResource () + { + return deployedResource_.end (); + } + + InstanceDeploymentDescription::deployedResource_const_iterator InstanceDeploymentDescription:: + begin_deployedResource () const + { + return deployedResource_.begin (); + } + + InstanceDeploymentDescription::deployedResource_const_iterator InstanceDeploymentDescription:: + end_deployedResource () const + { + return deployedResource_.end (); + } + + void InstanceDeploymentDescription:: + add_deployedResource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription, ACE_Null_Mutex > const& e) + { + deployedResource_.push_back (e); + } + + size_t InstanceDeploymentDescription:: + count_deployedResource(void) const + { + return deployedResource_.size (); + } + + // InstanceDeploymentDescription + // + bool InstanceDeploymentDescription:: + deployedSharedResource_p () const + { + return deployedSharedResource_.get () != 0; + } + + ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& InstanceDeploymentDescription:: + deployedSharedResource () const + { + return *deployedSharedResource_; + } + + void InstanceDeploymentDescription:: + deployedSharedResource (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& e) + { + if (deployedSharedResource_.get ()) + { + *deployedSharedResource_ = e; + } + + else + { + deployedSharedResource_ = ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > (new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (e)); + deployedSharedResource_->container (this); + } + } + + // InstanceDeploymentDescription + // + bool InstanceDeploymentDescription:: + id_p () const + { + return id_.get () != 0; + } + + ::XMLSchema::ID< ACE_TCHAR > const& InstanceDeploymentDescription:: + id () const + { + return *id_; + } + + ::XMLSchema::ID< ACE_TCHAR >& InstanceDeploymentDescription:: + id () + { + return *id_; + } + + void InstanceDeploymentDescription:: + id (::XMLSchema::ID< ACE_TCHAR > const& e) + { + if (id_.get ()) + { + *id_ = e; + } + + else + { + id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e)); + id_->container (this); + } + } + + + // CCMComponentPortKind + // + + CCMComponentPortKind::Value CCMComponentPortKind:: + integral () const + { + return v_; + } + + bool + operator== (::CIAO::Config_Handlers::CCMComponentPortKind const& a, ::CIAO::Config_Handlers::CCMComponentPortKind const& b) + { + return a.v_ == b.v_; + } + + bool + operator!= (::CIAO::Config_Handlers::CCMComponentPortKind const& a, ::CIAO::Config_Handlers::CCMComponentPortKind const& b) + { + return a.v_ != b.v_; + } + + CCMComponentPortKind:: + CCMComponentPortKind (CCMComponentPortKind::Value v) + : v_ (v) + { + } + + // ComponentPortDescription + // + + ComponentPortDescription:: + ComponentPortDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::boolean const& provider__, + ::XMLSchema::boolean const& exclusiveProvider__, + ::XMLSchema::boolean const& exclusiveUser__, + ::XMLSchema::boolean const& optional__, + ::CIAO::Config_Handlers::CCMComponentPortKind const& kind__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + provider_ (new ::XMLSchema::boolean (provider__)), + exclusiveProvider_ (new ::XMLSchema::boolean (exclusiveProvider__)), + exclusiveUser_ (new ::XMLSchema::boolean (exclusiveUser__)), + optional_ (new ::XMLSchema::boolean (optional__)), + kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (kind__)), + regulator__ () + { + name_->container (this); + provider_->container (this); + exclusiveProvider_->container (this); + exclusiveUser_->container (this); + optional_->container (this); + kind_->container (this); + } + + ComponentPortDescription:: + ComponentPortDescription (ComponentPortDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + specificType_ (s.specificType_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.specificType_) : 0), + supportedType_ (s.supportedType_), + provider_ (new ::XMLSchema::boolean (*s.provider_)), + exclusiveProvider_ (new ::XMLSchema::boolean (*s.exclusiveProvider_)), + exclusiveUser_ (new ::XMLSchema::boolean (*s.exclusiveUser_)), + optional_ (new ::XMLSchema::boolean (*s.optional_)), + kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (*s.kind_)), + templateParam_ (s.templateParam_), + regulator__ () + { + name_->container (this); + if (specificType_.get ()) specificType_->container (this); + provider_->container (this); + exclusiveProvider_->container (this); + exclusiveUser_->container (this); + optional_->container (this); + kind_->container (this); + } + + ComponentPortDescription& ComponentPortDescription:: + operator= (ComponentPortDescription const& s) + { + name (*s.name_); + + if (s.specificType_.get ()) + specificType (*(s.specificType_)); + else + specificType_.reset (0); + + supportedType_ = s.supportedType_; + + provider (*s.provider_); + + exclusiveProvider (*s.exclusiveProvider_); + + exclusiveUser (*s.exclusiveUser_); + + optional (*s.optional_); + + kind (*s.kind_); + + templateParam_ = s.templateParam_; + + return *this; + } + + + // ComponentPortDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ComponentPortDescription:: + name () const + { + return *name_; + } + + void ComponentPortDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // ComponentPortDescription + // + bool ComponentPortDescription:: + specificType_p () const + { + return specificType_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentPortDescription:: + specificType () const + { + return *specificType_; + } + + void ComponentPortDescription:: + specificType (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (specificType_.get ()) + { + *specificType_ = e; + } + + else + { + specificType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + specificType_->container (this); + } + } + + // ComponentPortDescription + // + ComponentPortDescription::supportedType_iterator ComponentPortDescription:: + begin_supportedType () + { + return supportedType_.begin (); + } + + ComponentPortDescription::supportedType_iterator ComponentPortDescription:: + end_supportedType () + { + return supportedType_.end (); + } + + ComponentPortDescription::supportedType_const_iterator ComponentPortDescription:: + begin_supportedType () const + { + return supportedType_.begin (); + } + + ComponentPortDescription::supportedType_const_iterator ComponentPortDescription:: + end_supportedType () const + { + return supportedType_.end (); + } + + void ComponentPortDescription:: + add_supportedType (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + supportedType_.push_back (e); + } + + size_t ComponentPortDescription:: + count_supportedType(void) const + { + return supportedType_.size (); + } + + // ComponentPortDescription + // + ::XMLSchema::boolean const& ComponentPortDescription:: + provider () const + { + return *provider_; + } + + void ComponentPortDescription:: + provider (::XMLSchema::boolean const& e) + { + *provider_ = e; + } + + // ComponentPortDescription + // + ::XMLSchema::boolean const& ComponentPortDescription:: + exclusiveProvider () const + { + return *exclusiveProvider_; + } + + void ComponentPortDescription:: + exclusiveProvider (::XMLSchema::boolean const& e) + { + *exclusiveProvider_ = e; + } + + // ComponentPortDescription + // + ::XMLSchema::boolean const& ComponentPortDescription:: + exclusiveUser () const + { + return *exclusiveUser_; + } + + void ComponentPortDescription:: + exclusiveUser (::XMLSchema::boolean const& e) + { + *exclusiveUser_ = e; + } + + // ComponentPortDescription + // + ::XMLSchema::boolean const& ComponentPortDescription:: + optional () const + { + return *optional_; + } + + void ComponentPortDescription:: + optional (::XMLSchema::boolean const& e) + { + *optional_ = e; + } + + // ComponentPortDescription + // + ::CIAO::Config_Handlers::CCMComponentPortKind const& ComponentPortDescription:: + kind () const + { + return *kind_; + } + + void ComponentPortDescription:: + kind (::CIAO::Config_Handlers::CCMComponentPortKind const& e) + { + *kind_ = e; + } + + // ComponentPortDescription + // + ComponentPortDescription::templateParam_iterator ComponentPortDescription:: + begin_templateParam () + { + return templateParam_.begin (); + } + + ComponentPortDescription::templateParam_iterator ComponentPortDescription:: + end_templateParam () + { + return templateParam_.end (); + } + + ComponentPortDescription::templateParam_const_iterator ComponentPortDescription:: + begin_templateParam () const + { + return templateParam_.begin (); + } + + ComponentPortDescription::templateParam_const_iterator ComponentPortDescription:: + end_templateParam () const + { + return templateParam_.end (); + } + + void ComponentPortDescription:: + add_templateParam (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + templateParam_.push_back (e); + } + + size_t ComponentPortDescription:: + count_templateParam(void) const + { + return templateParam_.size (); + } + + + // ComponentPropertyDescription + // + + ComponentPropertyDescription:: + ComponentPropertyDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::DataType const& type__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + type_ (new ::CIAO::Config_Handlers::DataType (type__)), + regulator__ () + { + name_->container (this); + type_->container (this); + } + + ComponentPropertyDescription:: + ComponentPropertyDescription (ComponentPropertyDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + type_ (new ::CIAO::Config_Handlers::DataType (*s.type_)), + regulator__ () + { + name_->container (this); + type_->container (this); + } + + ComponentPropertyDescription& ComponentPropertyDescription:: + operator= (ComponentPropertyDescription const& s) + { + name (*s.name_); + + type (*s.type_); + + return *this; + } + + + // ComponentPropertyDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ComponentPropertyDescription:: + name () const + { + return *name_; + } + + void ComponentPropertyDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // ComponentPropertyDescription + // + ::CIAO::Config_Handlers::DataType const& ComponentPropertyDescription:: + type () const + { + return *type_; + } + + void ComponentPropertyDescription:: + type (::CIAO::Config_Handlers::DataType const& e) + { + *type_ = e; + } + + + // ComponentExternalPortEndpoint + // + + ComponentExternalPortEndpoint:: + ComponentExternalPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__) + : + portName_ (new ::XMLSchema::string< ACE_TCHAR > (portName__)), + regulator__ () + { + portName_->container (this); + } + + ComponentExternalPortEndpoint:: + ComponentExternalPortEndpoint (ComponentExternalPortEndpoint const& s) + : + ::XSCRT::Type (), + portName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.portName_)), + regulator__ () + { + portName_->container (this); + } + + ComponentExternalPortEndpoint& ComponentExternalPortEndpoint:: + operator= (ComponentExternalPortEndpoint const& s) + { + portName (*s.portName_); + + return *this; + } + + + // ComponentExternalPortEndpoint + // + ::XMLSchema::string< ACE_TCHAR > const& ComponentExternalPortEndpoint:: + portName () const + { + return *portName_; + } + + void ComponentExternalPortEndpoint:: + portName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *portName_ = e; + } + + + // PlanSubcomponentPortEndpoint + // + + PlanSubcomponentPortEndpoint:: + PlanSubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__, + ::CIAO::Config_Handlers::CCMComponentPortKind const& kind__, + ::CIAO::Config_Handlers::IdRef const& instance__) + : + portName_ (new ::XMLSchema::string< ACE_TCHAR > (portName__)), + kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (kind__)), + instance_ (new ::CIAO::Config_Handlers::IdRef (instance__)), + regulator__ () + { + portName_->container (this); + kind_->container (this); + instance_->container (this); + } + + PlanSubcomponentPortEndpoint:: + PlanSubcomponentPortEndpoint (PlanSubcomponentPortEndpoint const& s) + : + ::XSCRT::Type (), + portName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.portName_)), + provider_ (s.provider_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.provider_) : 0), + kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (*s.kind_)), + instance_ (new ::CIAO::Config_Handlers::IdRef (*s.instance_)), + regulator__ () + { + portName_->container (this); + if (provider_.get ()) provider_->container (this); + kind_->container (this); + instance_->container (this); + } + + PlanSubcomponentPortEndpoint& PlanSubcomponentPortEndpoint:: + operator= (PlanSubcomponentPortEndpoint const& s) + { + portName (*s.portName_); + + if (s.provider_.get ()) + provider (*(s.provider_)); + else + provider_.reset (0); + + kind (*s.kind_); + + instance (*s.instance_); + + return *this; + } + + + // PlanSubcomponentPortEndpoint + // + ::XMLSchema::string< ACE_TCHAR > const& PlanSubcomponentPortEndpoint:: + portName () const + { + return *portName_; + } + + void PlanSubcomponentPortEndpoint:: + portName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *portName_ = e; + } + + // PlanSubcomponentPortEndpoint + // + bool PlanSubcomponentPortEndpoint:: + provider_p () const + { + return provider_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& PlanSubcomponentPortEndpoint:: + provider () const + { + return *provider_; + } + + void PlanSubcomponentPortEndpoint:: + provider (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (provider_.get ()) + { + *provider_ = e; + } + + else + { + provider_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + provider_->container (this); + } + } + + // PlanSubcomponentPortEndpoint + // + ::CIAO::Config_Handlers::CCMComponentPortKind const& PlanSubcomponentPortEndpoint:: + kind () const + { + return *kind_; + } + + void PlanSubcomponentPortEndpoint:: + kind (::CIAO::Config_Handlers::CCMComponentPortKind const& e) + { + *kind_ = e; + } + + // PlanSubcomponentPortEndpoint + // + ::CIAO::Config_Handlers::IdRef const& PlanSubcomponentPortEndpoint:: + instance () const + { + return *instance_; + } + + void PlanSubcomponentPortEndpoint:: + instance (::CIAO::Config_Handlers::IdRef const& e) + { + *instance_ = e; + } + + + // ExternalReferenceEndpoint + // + + ExternalReferenceEndpoint:: + ExternalReferenceEndpoint (::XMLSchema::string< ACE_TCHAR > const& location__, + ::XMLSchema::boolean const& provider__) + : + location_ (new ::XMLSchema::string< ACE_TCHAR > (location__)), + provider_ (new ::XMLSchema::boolean (provider__)), + regulator__ () + { + location_->container (this); + provider_->container (this); + } + + ExternalReferenceEndpoint:: + ExternalReferenceEndpoint (ExternalReferenceEndpoint const& s) + : + ::XSCRT::Type (), + location_ (new ::XMLSchema::string< ACE_TCHAR > (*s.location_)), + provider_ (new ::XMLSchema::boolean (*s.provider_)), + portName_ (s.portName_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.portName_) : 0), + supportedType_ (s.supportedType_), + regulator__ () + { + location_->container (this); + provider_->container (this); + if (portName_.get ()) portName_->container (this); + } + + ExternalReferenceEndpoint& ExternalReferenceEndpoint:: + operator= (ExternalReferenceEndpoint const& s) + { + location (*s.location_); + + provider (*s.provider_); + + if (s.portName_.get ()) + portName (*(s.portName_)); + else + portName_.reset (0); + + supportedType_ = s.supportedType_; + + return *this; + } + + + // ExternalReferenceEndpoint + // + ::XMLSchema::string< ACE_TCHAR > const& ExternalReferenceEndpoint:: + location () const + { + return *location_; + } + + void ExternalReferenceEndpoint:: + location (::XMLSchema::string< ACE_TCHAR > const& e) + { + *location_ = e; + } + + // ExternalReferenceEndpoint + // + ::XMLSchema::boolean const& ExternalReferenceEndpoint:: + provider () const + { + return *provider_; + } + + void ExternalReferenceEndpoint:: + provider (::XMLSchema::boolean const& e) + { + *provider_ = e; + } + + // ExternalReferenceEndpoint + // + bool ExternalReferenceEndpoint:: + portName_p () const + { + return portName_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ExternalReferenceEndpoint:: + portName () const + { + return *portName_; + } + + void ExternalReferenceEndpoint:: + portName (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (portName_.get ()) + { + *portName_ = e; + } + + else + { + portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + portName_->container (this); + } + } + + // ExternalReferenceEndpoint + // + ExternalReferenceEndpoint::supportedType_iterator ExternalReferenceEndpoint:: + begin_supportedType () + { + return supportedType_.begin (); + } + + ExternalReferenceEndpoint::supportedType_iterator ExternalReferenceEndpoint:: + end_supportedType () + { + return supportedType_.end (); + } + + ExternalReferenceEndpoint::supportedType_const_iterator ExternalReferenceEndpoint:: + begin_supportedType () const + { + return supportedType_.begin (); + } + + ExternalReferenceEndpoint::supportedType_const_iterator ExternalReferenceEndpoint:: + end_supportedType () const + { + return supportedType_.end (); + } + + void ExternalReferenceEndpoint:: + add_supportedType (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + supportedType_.push_back (e); + } + + size_t ExternalReferenceEndpoint:: + count_supportedType(void) const + { + return supportedType_.size (); + } + + + // ConnectionResourceDeploymentDescription + // + + ConnectionResourceDeploymentDescription:: + ConnectionResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& targetName__, + ::XMLSchema::string< ACE_TCHAR > const& requirementName__, + ::XMLSchema::string< ACE_TCHAR > const& resourceName__) + : + targetName_ (new ::XMLSchema::string< ACE_TCHAR > (targetName__)), + requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (requirementName__)), + resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (resourceName__)), + regulator__ () + { + targetName_->container (this); + requirementName_->container (this); + resourceName_->container (this); + } + + ConnectionResourceDeploymentDescription:: + ConnectionResourceDeploymentDescription (ConnectionResourceDeploymentDescription const& s) + : + ::XSCRT::Type (), + targetName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.targetName_)), + requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requirementName_)), + resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceName_)), + property_ (s.property_), + regulator__ () + { + targetName_->container (this); + requirementName_->container (this); + resourceName_->container (this); + } + + ConnectionResourceDeploymentDescription& ConnectionResourceDeploymentDescription:: + operator= (ConnectionResourceDeploymentDescription const& s) + { + targetName (*s.targetName_); + + requirementName (*s.requirementName_); + + resourceName (*s.resourceName_); + + property_ = s.property_; + + return *this; + } + + + // ConnectionResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ConnectionResourceDeploymentDescription:: + targetName () const + { + return *targetName_; + } + + void ConnectionResourceDeploymentDescription:: + targetName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *targetName_ = e; + } + + // ConnectionResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ConnectionResourceDeploymentDescription:: + requirementName () const + { + return *requirementName_; + } + + void ConnectionResourceDeploymentDescription:: + requirementName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *requirementName_ = e; + } + + // ConnectionResourceDeploymentDescription + // + ::XMLSchema::string< ACE_TCHAR > const& ConnectionResourceDeploymentDescription:: + resourceName () const + { + return *resourceName_; + } + + void ConnectionResourceDeploymentDescription:: + resourceName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *resourceName_ = e; + } + + // ConnectionResourceDeploymentDescription + // + ConnectionResourceDeploymentDescription::property_iterator ConnectionResourceDeploymentDescription:: + begin_property () + { + return property_.begin (); + } + + ConnectionResourceDeploymentDescription::property_iterator ConnectionResourceDeploymentDescription:: + end_property () + { + return property_.end (); + } + + ConnectionResourceDeploymentDescription::property_const_iterator ConnectionResourceDeploymentDescription:: + begin_property () const + { + return property_.begin (); + } + + ConnectionResourceDeploymentDescription::property_const_iterator ConnectionResourceDeploymentDescription:: + end_property () const + { + return property_.end (); + } + + void ConnectionResourceDeploymentDescription:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t ConnectionResourceDeploymentDescription:: + count_property(void) const + { + return property_.size (); + } + + + // PlanConnectionDescription + // + + PlanConnectionDescription:: + PlanConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + name_->container (this); + } + + PlanConnectionDescription:: + PlanConnectionDescription (PlanConnectionDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + source_ (s.source_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.source_) : 0), + deployRequirement_ (s.deployRequirement_), + externalEndpoint_ (s.externalEndpoint_), + internalEndpoint_ (s.internalEndpoint_), + externalReference_ (s.externalReference_), + deployedResource_ (s.deployedResource_), + regulator__ () + { + name_->container (this); + if (source_.get ()) source_->container (this); + } + + PlanConnectionDescription& PlanConnectionDescription:: + operator= (PlanConnectionDescription const& s) + { + name (*s.name_); + + if (s.source_.get ()) + source (*(s.source_)); + else + source_.reset (0); + + deployRequirement_ = s.deployRequirement_; + + externalEndpoint_ = s.externalEndpoint_; + + internalEndpoint_ = s.internalEndpoint_; + + externalReference_ = s.externalReference_; + + deployedResource_ = s.deployedResource_; + + return *this; + } + + + // PlanConnectionDescription + // + ::XMLSchema::string< ACE_TCHAR > const& PlanConnectionDescription:: + name () const + { + return *name_; + } + + void PlanConnectionDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // PlanConnectionDescription + // + bool PlanConnectionDescription:: + source_p () const + { + return source_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& PlanConnectionDescription:: + source () const + { + return *source_; + } + + void PlanConnectionDescription:: + source (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (source_.get ()) + { + *source_ = e; + } + + else + { + source_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + source_->container (this); + } + } + + // PlanConnectionDescription + // + PlanConnectionDescription::deployRequirement_iterator PlanConnectionDescription:: + begin_deployRequirement () + { + return deployRequirement_.begin (); + } + + PlanConnectionDescription::deployRequirement_iterator PlanConnectionDescription:: + end_deployRequirement () + { + return deployRequirement_.end (); + } + + PlanConnectionDescription::deployRequirement_const_iterator PlanConnectionDescription:: + begin_deployRequirement () const + { + return deployRequirement_.begin (); + } + + PlanConnectionDescription::deployRequirement_const_iterator PlanConnectionDescription:: + end_deployRequirement () const + { + return deployRequirement_.end (); + } + + void PlanConnectionDescription:: + add_deployRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + deployRequirement_.push_back (e); + } + + size_t PlanConnectionDescription:: + count_deployRequirement(void) const + { + return deployRequirement_.size (); + } + + // PlanConnectionDescription + // + PlanConnectionDescription::externalEndpoint_iterator PlanConnectionDescription:: + begin_externalEndpoint () + { + return externalEndpoint_.begin (); + } + + PlanConnectionDescription::externalEndpoint_iterator PlanConnectionDescription:: + end_externalEndpoint () + { + return externalEndpoint_.end (); + } + + PlanConnectionDescription::externalEndpoint_const_iterator PlanConnectionDescription:: + begin_externalEndpoint () const + { + return externalEndpoint_.begin (); + } + + PlanConnectionDescription::externalEndpoint_const_iterator PlanConnectionDescription:: + end_externalEndpoint () const + { + return externalEndpoint_.end (); + } + + void PlanConnectionDescription:: + add_externalEndpoint (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > const& e) + { + externalEndpoint_.push_back (e); + } + + size_t PlanConnectionDescription:: + count_externalEndpoint(void) const + { + return externalEndpoint_.size (); + } + + // PlanConnectionDescription + // + PlanConnectionDescription::internalEndpoint_iterator PlanConnectionDescription:: + begin_internalEndpoint () + { + return internalEndpoint_.begin (); + } + + PlanConnectionDescription::internalEndpoint_iterator PlanConnectionDescription:: + end_internalEndpoint () + { + return internalEndpoint_.end (); + } + + PlanConnectionDescription::internalEndpoint_const_iterator PlanConnectionDescription:: + begin_internalEndpoint () const + { + return internalEndpoint_.begin (); + } + + PlanConnectionDescription::internalEndpoint_const_iterator PlanConnectionDescription:: + end_internalEndpoint () const + { + return internalEndpoint_.end (); + } + + void PlanConnectionDescription:: + add_internalEndpoint (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint, ACE_Null_Mutex > const& e) + { + internalEndpoint_.push_back (e); + } + + size_t PlanConnectionDescription:: + count_internalEndpoint(void) const + { + return internalEndpoint_.size (); + } + + // PlanConnectionDescription + // + PlanConnectionDescription::externalReference_iterator PlanConnectionDescription:: + begin_externalReference () + { + return externalReference_.begin (); + } + + PlanConnectionDescription::externalReference_iterator PlanConnectionDescription:: + end_externalReference () + { + return externalReference_.end (); + } + + PlanConnectionDescription::externalReference_const_iterator PlanConnectionDescription:: + begin_externalReference () const + { + return externalReference_.begin (); + } + + PlanConnectionDescription::externalReference_const_iterator PlanConnectionDescription:: + end_externalReference () const + { + return externalReference_.end (); + } + + void PlanConnectionDescription:: + add_externalReference (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > const& e) + { + externalReference_.push_back (e); + } + + size_t PlanConnectionDescription:: + count_externalReference(void) const + { + return externalReference_.size (); + } + + // PlanConnectionDescription + // + PlanConnectionDescription::deployedResource_iterator PlanConnectionDescription:: + begin_deployedResource () + { + return deployedResource_.begin (); + } + + PlanConnectionDescription::deployedResource_iterator PlanConnectionDescription:: + end_deployedResource () + { + return deployedResource_.end (); + } + + PlanConnectionDescription::deployedResource_const_iterator PlanConnectionDescription:: + begin_deployedResource () const + { + return deployedResource_.begin (); + } + + PlanConnectionDescription::deployedResource_const_iterator PlanConnectionDescription:: + end_deployedResource () const + { + return deployedResource_.end (); + } + + void PlanConnectionDescription:: + add_deployedResource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription, ACE_Null_Mutex > const& e) + { + deployedResource_.push_back (e); + } + + size_t PlanConnectionDescription:: + count_deployedResource(void) const + { + return deployedResource_.size (); + } + + + // ImplementationDependency + // + + ImplementationDependency:: + ImplementationDependency (::XMLSchema::string< ACE_TCHAR > const& requiredType__) + : + requiredType_ (new ::XMLSchema::string< ACE_TCHAR > (requiredType__)), + regulator__ () + { + requiredType_->container (this); + } + + ImplementationDependency:: + ImplementationDependency (ImplementationDependency const& s) + : + ::XSCRT::Type (), + requiredType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requiredType_)), + regulator__ () + { + requiredType_->container (this); + } + + ImplementationDependency& ImplementationDependency:: + operator= (ImplementationDependency const& s) + { + requiredType (*s.requiredType_); + + return *this; + } + + + // ImplementationDependency + // + ::XMLSchema::string< ACE_TCHAR > const& ImplementationDependency:: + requiredType () const + { + return *requiredType_; + } + + void ImplementationDependency:: + requiredType (::XMLSchema::string< ACE_TCHAR > const& e) + { + *requiredType_ = e; + } + + + // Capability + // + + Capability:: + Capability (::XMLSchema::string< ACE_TCHAR > const& name__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + name_->container (this); + } + + Capability:: + Capability (Capability const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + resourceType_ (s.resourceType_), + property_ (s.property_), + regulator__ () + { + name_->container (this); + } + + Capability& Capability:: + operator= (Capability const& s) + { + name (*s.name_); + + resourceType_ = s.resourceType_; + + property_ = s.property_; + + return *this; + } + + + // Capability + // + ::XMLSchema::string< ACE_TCHAR > const& Capability:: + name () const + { + return *name_; + } + + void Capability:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Capability + // + Capability::resourceType_iterator Capability:: + begin_resourceType () + { + return resourceType_.begin (); + } + + Capability::resourceType_iterator Capability:: + end_resourceType () + { + return resourceType_.end (); + } + + Capability::resourceType_const_iterator Capability:: + begin_resourceType () const + { + return resourceType_.begin (); + } + + Capability::resourceType_const_iterator Capability:: + end_resourceType () const + { + return resourceType_.end (); + } + + void Capability:: + add_resourceType (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + resourceType_.push_back (e); + } + + size_t Capability:: + count_resourceType(void) const + { + return resourceType_.size (); + } + + // Capability + // + Capability::property_iterator Capability:: + begin_property () + { + return property_.begin (); + } + + Capability::property_iterator Capability:: + end_property () + { + return property_.end (); + } + + Capability::property_const_iterator Capability:: + begin_property () const + { + return property_.begin (); + } + + Capability::property_const_iterator Capability:: + end_property () const + { + return property_.end (); + } + + void Capability:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t Capability:: + count_property(void) const + { + return property_.size (); + } + + + // ImplementationRequirement + // + + ImplementationRequirement:: + ImplementationRequirement (::XMLSchema::string< ACE_TCHAR > const& resourceType__, + ::XMLSchema::string< ACE_TCHAR > const& name__) + : + resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (resourceType__)), + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + resourceType_->container (this); + name_->container (this); + } + + ImplementationRequirement:: + ImplementationRequirement (ImplementationRequirement const& s) + : + ::XSCRT::Type (), + resourceUsage_ (s.resourceUsage_.get () ? new ::CIAO::Config_Handlers::ResourceUsageKind (*s.resourceUsage_) : 0), + resourcePort_ (s.resourcePort_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.resourcePort_) : 0), + componentPort_ (s.componentPort_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.componentPort_) : 0), + resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceType_)), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + property_ (s.property_), + regulator__ () + { + if (resourceUsage_.get ()) resourceUsage_->container (this); + if (resourcePort_.get ()) resourcePort_->container (this); + if (componentPort_.get ()) componentPort_->container (this); + resourceType_->container (this); + name_->container (this); + } + + ImplementationRequirement& ImplementationRequirement:: + operator= (ImplementationRequirement const& s) + { + if (s.resourceUsage_.get ()) + resourceUsage (*(s.resourceUsage_)); + else + resourceUsage_.reset (0); + + if (s.resourcePort_.get ()) + resourcePort (*(s.resourcePort_)); + else + resourcePort_.reset (0); + + if (s.componentPort_.get ()) + componentPort (*(s.componentPort_)); + else + componentPort_.reset (0); + + resourceType (*s.resourceType_); + + name (*s.name_); + + property_ = s.property_; + + return *this; + } + + + // ImplementationRequirement + // + bool ImplementationRequirement:: + resourceUsage_p () const + { + return resourceUsage_.get () != 0; + } + + ::CIAO::Config_Handlers::ResourceUsageKind const& ImplementationRequirement:: + resourceUsage () const + { + return *resourceUsage_; + } + + void ImplementationRequirement:: + resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& e) + { + if (resourceUsage_.get ()) + { + *resourceUsage_ = e; + } + + else + { + resourceUsage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > (new ::CIAO::Config_Handlers::ResourceUsageKind (e)); + resourceUsage_->container (this); + } + } + + // ImplementationRequirement + // + bool ImplementationRequirement:: + resourcePort_p () const + { + return resourcePort_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement:: + resourcePort () const + { + return *resourcePort_; + } + + void ImplementationRequirement:: + resourcePort (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (resourcePort_.get ()) + { + *resourcePort_ = e; + } + + else + { + resourcePort_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourcePort_->container (this); + } + } + + // ImplementationRequirement + // + bool ImplementationRequirement:: + componentPort_p () const + { + return componentPort_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement:: + componentPort () const + { + return *componentPort_; + } + + void ImplementationRequirement:: + componentPort (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (componentPort_.get ()) + { + *componentPort_ = e; + } + + else + { + componentPort_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + componentPort_->container (this); + } + } + + // ImplementationRequirement + // + ::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement:: + resourceType () const + { + return *resourceType_; + } + + void ImplementationRequirement:: + resourceType (::XMLSchema::string< ACE_TCHAR > const& e) + { + *resourceType_ = e; + } + + // ImplementationRequirement + // + ::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement:: + name () const + { + return *name_; + } + + void ImplementationRequirement:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // ImplementationRequirement + // + ImplementationRequirement::property_iterator ImplementationRequirement:: + begin_property () + { + return property_.begin (); + } + + ImplementationRequirement::property_iterator ImplementationRequirement:: + end_property () + { + return property_.end (); + } + + ImplementationRequirement::property_const_iterator ImplementationRequirement:: + begin_property () const + { + return property_.begin (); + } + + ImplementationRequirement::property_const_iterator ImplementationRequirement:: + end_property () const + { + return property_.end (); + } + + void ImplementationRequirement:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t ImplementationRequirement:: + count_property(void) const + { + return property_.size (); + } + + + // SubcomponentPortEndpoint + // + + SubcomponentPortEndpoint:: + SubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__, + ::CIAO::Config_Handlers::IdRef const& instance__) + : + portName_ (new ::XMLSchema::string< ACE_TCHAR > (portName__)), + instance_ (new ::CIAO::Config_Handlers::IdRef (instance__)), + regulator__ () + { + portName_->container (this); + instance_->container (this); + } + + SubcomponentPortEndpoint:: + SubcomponentPortEndpoint (SubcomponentPortEndpoint const& s) + : + ::XSCRT::Type (), + portName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.portName_)), + instance_ (new ::CIAO::Config_Handlers::IdRef (*s.instance_)), + regulator__ () + { + portName_->container (this); + instance_->container (this); + } + + SubcomponentPortEndpoint& SubcomponentPortEndpoint:: + operator= (SubcomponentPortEndpoint const& s) + { + portName (*s.portName_); + + instance (*s.instance_); + + return *this; + } + + + // SubcomponentPortEndpoint + // + ::XMLSchema::string< ACE_TCHAR > const& SubcomponentPortEndpoint:: + portName () const + { + return *portName_; + } + + void SubcomponentPortEndpoint:: + portName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *portName_ = e; + } + + // SubcomponentPortEndpoint + // + ::CIAO::Config_Handlers::IdRef const& SubcomponentPortEndpoint:: + instance () const + { + return *instance_; + } + + void SubcomponentPortEndpoint:: + instance (::CIAO::Config_Handlers::IdRef const& e) + { + *instance_ = e; + } + + + // AssemblyConnectionDescription + // + + AssemblyConnectionDescription:: + AssemblyConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + name_->container (this); + } + + AssemblyConnectionDescription:: + AssemblyConnectionDescription (AssemblyConnectionDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + deployRequirement_ (s.deployRequirement_), + internalEndpoint_ (s.internalEndpoint_), + externalEndpoint_ (s.externalEndpoint_), + externalReference_ (s.externalReference_), + regulator__ () + { + name_->container (this); + } + + AssemblyConnectionDescription& AssemblyConnectionDescription:: + operator= (AssemblyConnectionDescription const& s) + { + name (*s.name_); + + deployRequirement_ = s.deployRequirement_; + + internalEndpoint_ = s.internalEndpoint_; + + externalEndpoint_ = s.externalEndpoint_; + + externalReference_ = s.externalReference_; + + return *this; + } + + + // AssemblyConnectionDescription + // + ::XMLSchema::string< ACE_TCHAR > const& AssemblyConnectionDescription:: + name () const + { + return *name_; + } + + void AssemblyConnectionDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // AssemblyConnectionDescription + // + AssemblyConnectionDescription::deployRequirement_iterator AssemblyConnectionDescription:: + begin_deployRequirement () + { + return deployRequirement_.begin (); + } + + AssemblyConnectionDescription::deployRequirement_iterator AssemblyConnectionDescription:: + end_deployRequirement () + { + return deployRequirement_.end (); + } + + AssemblyConnectionDescription::deployRequirement_const_iterator AssemblyConnectionDescription:: + begin_deployRequirement () const + { + return deployRequirement_.begin (); + } + + AssemblyConnectionDescription::deployRequirement_const_iterator AssemblyConnectionDescription:: + end_deployRequirement () const + { + return deployRequirement_.end (); + } + + void AssemblyConnectionDescription:: + add_deployRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + deployRequirement_.push_back (e); + } + + size_t AssemblyConnectionDescription:: + count_deployRequirement(void) const + { + return deployRequirement_.size (); + } + + // AssemblyConnectionDescription + // + AssemblyConnectionDescription::internalEndpoint_iterator AssemblyConnectionDescription:: + begin_internalEndpoint () + { + return internalEndpoint_.begin (); + } + + AssemblyConnectionDescription::internalEndpoint_iterator AssemblyConnectionDescription:: + end_internalEndpoint () + { + return internalEndpoint_.end (); + } + + AssemblyConnectionDescription::internalEndpoint_const_iterator AssemblyConnectionDescription:: + begin_internalEndpoint () const + { + return internalEndpoint_.begin (); + } + + AssemblyConnectionDescription::internalEndpoint_const_iterator AssemblyConnectionDescription:: + end_internalEndpoint () const + { + return internalEndpoint_.end (); + } + + void AssemblyConnectionDescription:: + add_internalEndpoint (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPortEndpoint, ACE_Null_Mutex > const& e) + { + internalEndpoint_.push_back (e); + } + + size_t AssemblyConnectionDescription:: + count_internalEndpoint(void) const + { + return internalEndpoint_.size (); + } + + // AssemblyConnectionDescription + // + AssemblyConnectionDescription::externalEndpoint_iterator AssemblyConnectionDescription:: + begin_externalEndpoint () + { + return externalEndpoint_.begin (); + } + + AssemblyConnectionDescription::externalEndpoint_iterator AssemblyConnectionDescription:: + end_externalEndpoint () + { + return externalEndpoint_.end (); + } + + AssemblyConnectionDescription::externalEndpoint_const_iterator AssemblyConnectionDescription:: + begin_externalEndpoint () const + { + return externalEndpoint_.begin (); + } + + AssemblyConnectionDescription::externalEndpoint_const_iterator AssemblyConnectionDescription:: + end_externalEndpoint () const + { + return externalEndpoint_.end (); + } + + void AssemblyConnectionDescription:: + add_externalEndpoint (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > const& e) + { + externalEndpoint_.push_back (e); + } + + size_t AssemblyConnectionDescription:: + count_externalEndpoint(void) const + { + return externalEndpoint_.size (); + } + + // AssemblyConnectionDescription + // + AssemblyConnectionDescription::externalReference_iterator AssemblyConnectionDescription:: + begin_externalReference () + { + return externalReference_.begin (); + } + + AssemblyConnectionDescription::externalReference_iterator AssemblyConnectionDescription:: + end_externalReference () + { + return externalReference_.end (); + } + + AssemblyConnectionDescription::externalReference_const_iterator AssemblyConnectionDescription:: + begin_externalReference () const + { + return externalReference_.begin (); + } + + AssemblyConnectionDescription::externalReference_const_iterator AssemblyConnectionDescription:: + end_externalReference () const + { + return externalReference_.end (); + } + + void AssemblyConnectionDescription:: + add_externalReference (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > const& e) + { + externalReference_.push_back (e); + } + + size_t AssemblyConnectionDescription:: + count_externalReference(void) const + { + return externalReference_.size (); + } + + + // PlanLocalityKind + // + + PlanLocalityKind::Value PlanLocalityKind:: + integral () const + { + return v_; + } + + bool + operator== (::CIAO::Config_Handlers::PlanLocalityKind const& a, ::CIAO::Config_Handlers::PlanLocalityKind const& b) + { + return a.v_ == b.v_; + } + + bool + operator!= (::CIAO::Config_Handlers::PlanLocalityKind const& a, ::CIAO::Config_Handlers::PlanLocalityKind const& b) + { + return a.v_ != b.v_; + } + + PlanLocalityKind:: + PlanLocalityKind (PlanLocalityKind::Value v) + : v_ (v) + { + } + + // PlanLocality + // + + PlanLocality:: + PlanLocality (::CIAO::Config_Handlers::PlanLocalityKind const& constraint__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > > const& constrainedInstance__) + : + constraint_ (new ::CIAO::Config_Handlers::PlanLocalityKind (constraint__)), + constrainedInstance_ (constrainedInstance__), + regulator__ () + { + constraint_->container (this); + } + + PlanLocality:: + PlanLocality (PlanLocality const& s) + : + ::XSCRT::Type (), + constraint_ (new ::CIAO::Config_Handlers::PlanLocalityKind (*s.constraint_)), + constrainedInstance_ (s.constrainedInstance_), + regulator__ () + { + constraint_->container (this); + } + + PlanLocality& PlanLocality:: + operator= (PlanLocality const& s) + { + constraint (*s.constraint_); + + constrainedInstance_ = s.constrainedInstance_; + + return *this; + } + + + // PlanLocality + // + ::CIAO::Config_Handlers::PlanLocalityKind const& PlanLocality:: + constraint () const + { + return *constraint_; + } + + void PlanLocality:: + constraint (::CIAO::Config_Handlers::PlanLocalityKind const& e) + { + *constraint_ = e; + } + + // PlanLocality + // + PlanLocality::constrainedInstance_iterator PlanLocality:: + begin_constrainedInstance () + { + return constrainedInstance_.begin (); + } + + PlanLocality::constrainedInstance_iterator PlanLocality:: + end_constrainedInstance () + { + return constrainedInstance_.end (); + } + + PlanLocality::constrainedInstance_const_iterator PlanLocality:: + begin_constrainedInstance () const + { + return constrainedInstance_.begin (); + } + + PlanLocality::constrainedInstance_const_iterator PlanLocality:: + end_constrainedInstance () const + { + return constrainedInstance_.end (); + } + + void PlanLocality:: + add_constrainedInstance (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > const& e) + { + constrainedInstance_.push_back (e); + } + + size_t PlanLocality:: + count_constrainedInstance(void) const + { + return constrainedInstance_.size (); + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // IdRef + // + + IdRef:: + IdRef (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else if (n == ACE_TEXT ("idref")) + { + ::XMLSchema::IDREF< ACE_TCHAR > t (a); + idref (t); + std::basic_string temp ((*idref_).id().c_str()); + + (*ACE_Singleton::instance())-> + add_idref(temp, dynamic_cast (this)); + } + + else + { + } + } + } + + // TCKind + // + + TCKind:: + TCKind (::XSCRT::XML::Element< ACE_TCHAR > const& e) + : ::XSCRT::Type (e) + { + ::std::basic_string< ACE_TCHAR > v (e.value ()); + + if (v == ACE_TEXT ("tk_null")) v_ = tk_null_l; + else if (v == ACE_TEXT ("tk_void")) v_ = tk_void_l; + else if (v == ACE_TEXT ("tk_short")) v_ = tk_short_l; + else if (v == ACE_TEXT ("tk_long")) v_ = tk_long_l; + else if (v == ACE_TEXT ("tk_ushort")) v_ = tk_ushort_l; + else if (v == ACE_TEXT ("tk_ulong")) v_ = tk_ulong_l; + else if (v == ACE_TEXT ("tk_float")) v_ = tk_float_l; + else if (v == ACE_TEXT ("tk_double")) v_ = tk_double_l; + else if (v == ACE_TEXT ("tk_boolean")) v_ = tk_boolean_l; + else if (v == ACE_TEXT ("tk_char")) v_ = tk_char_l; + else if (v == ACE_TEXT ("tk_octet")) v_ = tk_octet_l; + else if (v == ACE_TEXT ("tk_any")) v_ = tk_any_l; + else if (v == ACE_TEXT ("tk_TypeCode")) v_ = tk_TypeCode_l; + else if (v == ACE_TEXT ("tk_Principal")) v_ = tk_Principal_l; + else if (v == ACE_TEXT ("tk_objref")) v_ = tk_objref_l; + else if (v == ACE_TEXT ("tk_struct")) v_ = tk_struct_l; + else if (v == ACE_TEXT ("tk_union")) v_ = tk_union_l; + else if (v == ACE_TEXT ("tk_enum")) v_ = tk_enum_l; + else if (v == ACE_TEXT ("tk_string")) v_ = tk_string_l; + else if (v == ACE_TEXT ("tk_sequence")) v_ = tk_sequence_l; + else if (v == ACE_TEXT ("tk_array")) v_ = tk_array_l; + else if (v == ACE_TEXT ("tk_alias")) v_ = tk_alias_l; + else if (v == ACE_TEXT ("tk_except")) v_ = tk_except_l; + else if (v == ACE_TEXT ("tk_longlong")) v_ = tk_longlong_l; + else if (v == ACE_TEXT ("tk_ulonglong")) v_ = tk_ulonglong_l; + else if (v == ACE_TEXT ("tk_longdouble")) v_ = tk_longdouble_l; + else if (v == ACE_TEXT ("tk_wchar")) v_ = tk_wchar_l; + else if (v == ACE_TEXT ("tk_wstring")) v_ = tk_wstring_l; + else if (v == ACE_TEXT ("tk_fixed")) v_ = tk_fixed_l; + else if (v == ACE_TEXT ("tk_value")) v_ = tk_value_l; + else if (v == ACE_TEXT ("tk_value_box")) v_ = tk_value_box_l; + else if (v == ACE_TEXT ("tk_native")) v_ = tk_native_l; + else if (v == ACE_TEXT ("tk_abstract_interface")) v_ = tk_abstract_interface_l; + else if (v == ACE_TEXT ("tk_local_interface")) v_ = tk_local_interface_l; + else if (v == ACE_TEXT ("tk_component")) v_ = tk_component_l; + else if (v == ACE_TEXT ("tk_home")) v_ = tk_home_l; + else if (v == ACE_TEXT ("tk_event")) v_ = tk_event_l; + else + { + } + } + + TCKind:: + TCKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a) + : ::XSCRT::Type (a) + { + ::std::basic_string< ACE_TCHAR > v (a.value ()); + + if (v == ACE_TEXT ("tk_null")) v_ = tk_null_l; + else if (v == ACE_TEXT ("tk_void")) v_ = tk_void_l; + else if (v == ACE_TEXT ("tk_short")) v_ = tk_short_l; + else if (v == ACE_TEXT ("tk_long")) v_ = tk_long_l; + else if (v == ACE_TEXT ("tk_ushort")) v_ = tk_ushort_l; + else if (v == ACE_TEXT ("tk_ulong")) v_ = tk_ulong_l; + else if (v == ACE_TEXT ("tk_float")) v_ = tk_float_l; + else if (v == ACE_TEXT ("tk_double")) v_ = tk_double_l; + else if (v == ACE_TEXT ("tk_boolean")) v_ = tk_boolean_l; + else if (v == ACE_TEXT ("tk_char")) v_ = tk_char_l; + else if (v == ACE_TEXT ("tk_octet")) v_ = tk_octet_l; + else if (v == ACE_TEXT ("tk_any")) v_ = tk_any_l; + else if (v == ACE_TEXT ("tk_TypeCode")) v_ = tk_TypeCode_l; + else if (v == ACE_TEXT ("tk_Principal")) v_ = tk_Principal_l; + else if (v == ACE_TEXT ("tk_objref")) v_ = tk_objref_l; + else if (v == ACE_TEXT ("tk_struct")) v_ = tk_struct_l; + else if (v == ACE_TEXT ("tk_union")) v_ = tk_union_l; + else if (v == ACE_TEXT ("tk_enum")) v_ = tk_enum_l; + else if (v == ACE_TEXT ("tk_string")) v_ = tk_string_l; + else if (v == ACE_TEXT ("tk_sequence")) v_ = tk_sequence_l; + else if (v == ACE_TEXT ("tk_array")) v_ = tk_array_l; + else if (v == ACE_TEXT ("tk_alias")) v_ = tk_alias_l; + else if (v == ACE_TEXT ("tk_except")) v_ = tk_except_l; + else if (v == ACE_TEXT ("tk_longlong")) v_ = tk_longlong_l; + else if (v == ACE_TEXT ("tk_ulonglong")) v_ = tk_ulonglong_l; + else if (v == ACE_TEXT ("tk_longdouble")) v_ = tk_longdouble_l; + else if (v == ACE_TEXT ("tk_wchar")) v_ = tk_wchar_l; + else if (v == ACE_TEXT ("tk_wstring")) v_ = tk_wstring_l; + else if (v == ACE_TEXT ("tk_fixed")) v_ = tk_fixed_l; + else if (v == ACE_TEXT ("tk_value")) v_ = tk_value_l; + else if (v == ACE_TEXT ("tk_value_box")) v_ = tk_value_box_l; + else if (v == ACE_TEXT ("tk_native")) v_ = tk_native_l; + else if (v == ACE_TEXT ("tk_abstract_interface")) v_ = tk_abstract_interface_l; + else if (v == ACE_TEXT ("tk_local_interface")) v_ = tk_local_interface_l; + else if (v == ACE_TEXT ("tk_component")) v_ = tk_component_l; + else if (v == ACE_TEXT ("tk_home")) v_ = tk_home_l; + else if (v == ACE_TEXT ("tk_event")) v_ = tk_event_l; + else + { + } + } + + TCKind const TCKind::tk_null (TCKind::tk_null_l); + TCKind const TCKind::tk_void (TCKind::tk_void_l); + TCKind const TCKind::tk_short (TCKind::tk_short_l); + TCKind const TCKind::tk_long (TCKind::tk_long_l); + TCKind const TCKind::tk_ushort (TCKind::tk_ushort_l); + TCKind const TCKind::tk_ulong (TCKind::tk_ulong_l); + TCKind const TCKind::tk_float (TCKind::tk_float_l); + TCKind const TCKind::tk_double (TCKind::tk_double_l); + TCKind const TCKind::tk_boolean (TCKind::tk_boolean_l); + TCKind const TCKind::tk_char (TCKind::tk_char_l); + TCKind const TCKind::tk_octet (TCKind::tk_octet_l); + TCKind const TCKind::tk_any (TCKind::tk_any_l); + TCKind const TCKind::tk_TypeCode (TCKind::tk_TypeCode_l); + TCKind const TCKind::tk_Principal (TCKind::tk_Principal_l); + TCKind const TCKind::tk_objref (TCKind::tk_objref_l); + TCKind const TCKind::tk_struct (TCKind::tk_struct_l); + TCKind const TCKind::tk_union (TCKind::tk_union_l); + TCKind const TCKind::tk_enum (TCKind::tk_enum_l); + TCKind const TCKind::tk_string (TCKind::tk_string_l); + TCKind const TCKind::tk_sequence (TCKind::tk_sequence_l); + TCKind const TCKind::tk_array (TCKind::tk_array_l); + TCKind const TCKind::tk_alias (TCKind::tk_alias_l); + TCKind const TCKind::tk_except (TCKind::tk_except_l); + TCKind const TCKind::tk_longlong (TCKind::tk_longlong_l); + TCKind const TCKind::tk_ulonglong (TCKind::tk_ulonglong_l); + TCKind const TCKind::tk_longdouble (TCKind::tk_longdouble_l); + TCKind const TCKind::tk_wchar (TCKind::tk_wchar_l); + TCKind const TCKind::tk_wstring (TCKind::tk_wstring_l); + TCKind const TCKind::tk_fixed (TCKind::tk_fixed_l); + TCKind const TCKind::tk_value (TCKind::tk_value_l); + TCKind const TCKind::tk_value_box (TCKind::tk_value_box_l); + TCKind const TCKind::tk_native (TCKind::tk_native_l); + TCKind const TCKind::tk_abstract_interface (TCKind::tk_abstract_interface_l); + TCKind const TCKind::tk_local_interface (TCKind::tk_local_interface_l); + TCKind const TCKind::tk_component (TCKind::tk_component_l); + TCKind const TCKind::tk_home (TCKind::tk_home_l); + TCKind const TCKind::tk_event (TCKind::tk_event_l); + + // DataType + // + + DataType:: + DataType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("kind")) + { + kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::TCKind > (new ::CIAO::Config_Handlers::TCKind (e)); + kind_->container (this); + } + + else if (n == ACE_TEXT("enum")) + { + ::CIAO::Config_Handlers::EnumType t (e); + enum_ (t); + } + + else if (n == ACE_TEXT("struct")) + { + ::CIAO::Config_Handlers::StructType t (e); + struct_ (t); + } + + else if (n == ACE_TEXT("value")) + { + ::CIAO::Config_Handlers::ValueType t (e); + value (t); + } + + else if (n == ACE_TEXT("sequence")) + { + ::CIAO::Config_Handlers::SequenceType t (e); + sequence (t); + } + + else if (n == ACE_TEXT("alias")) + { + ::CIAO::Config_Handlers::AliasType t (e); + alias (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("id")) + { + ::XMLSchema::ID< ACE_TCHAR > t (a); + id (t); + std::basic_string temp ((*id_).c_str()); + (*ACE_Singleton::instance())-> + add_id(temp, dynamic_cast (this)); + } + + else + { + } + } + } + + // DataValue + // + + DataValue:: + DataValue (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("short")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::short_, ACE_Null_Mutex > t (new ::XMLSchema::short_ (e)); + add_short (t); + } + + else if (n == ACE_TEXT("long")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::int_, ACE_Null_Mutex > t (new ::XMLSchema::int_ (e)); + add_long (t); + } + + else if (n == ACE_TEXT("ushort")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedShort, ACE_Null_Mutex > t (new ::XMLSchema::unsignedShort (e)); + add_ushort (t); + } + + else if (n == ACE_TEXT("ulong")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedInt, ACE_Null_Mutex > t (new ::XMLSchema::unsignedInt (e)); + add_ulong (t); + } + + else if (n == ACE_TEXT("float")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::float_, ACE_Null_Mutex > t (new ::XMLSchema::float_ (e)); + add_float (t); + } + + else if (n == ACE_TEXT("double")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > t (new ::XMLSchema::double_ (e)); + add_double (t); + } + + else if (n == ACE_TEXT("boolean")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::boolean, ACE_Null_Mutex > t (new ::XMLSchema::boolean (e)); + add_boolean (t); + } + + else if (n == ACE_TEXT("octet")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedByte, ACE_Null_Mutex > t (new ::XMLSchema::unsignedByte (e)); + add_octet (t); + } + + else if (n == ACE_TEXT("enum")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_enum (t); + } + + else if (n == ACE_TEXT("string")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_string (t); + } + + else if (n == ACE_TEXT("longlong")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::long_, ACE_Null_Mutex > t (new ::XMLSchema::long_ (e)); + add_longlong (t); + } + + else if (n == ACE_TEXT("ulonglong")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedLong, ACE_Null_Mutex > t (new ::XMLSchema::unsignedLong (e)); + add_ulonglong (t); + } + + else if (n == ACE_TEXT("longdouble")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > t (new ::XMLSchema::double_ (e)); + add_longdouble (t); + } + + else if (n == ACE_TEXT("element")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::DataValue, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::DataValue (e)); + add_element (t); + } + + else if (n == ACE_TEXT("member")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedValue, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::NamedValue (e)); + add_member (t); + } + + else + { + } + } + } + + // AliasType + // + + AliasType:: + AliasType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("typeId")) + { + typeId_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + typeId_->container (this); + } + + else if (n == ACE_TEXT("elementType")) + { + elementType_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + elementType_->container (this); + } + + else + { + } + } + } + + // EnumType + // + + EnumType:: + EnumType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("typeId")) + { + typeId_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + typeId_->container (this); + } + + else if (n == ACE_TEXT("member")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_member (t); + } + + else + { + } + } + } + + // StructType + // + + StructType:: + StructType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("typeId")) + { + typeId_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + typeId_->container (this); + } + + else if (n == ACE_TEXT("member")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::StructMemberType, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::StructMemberType (e)); + add_member (t); + } + + else + { + } + } + } + + // StructMemberType + // + + StructMemberType:: + StructMemberType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("type")) + { + type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + type_->container (this); + } + + else + { + } + } + } + + // ValueType + // + + ValueType:: + ValueType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("typeId")) + { + typeId_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + typeId_->container (this); + } + + else if (n == ACE_TEXT("modifier")) + { + modifier_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + modifier_->container (this); + } + + else if (n == ACE_TEXT("baseType")) + { + baseType_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + baseType_->container (this); + } + + else if (n == ACE_TEXT("member")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ValueMemberType, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ValueMemberType (e)); + add_member (t); + } + + else + { + } + } + } + + // ValueMemberType + // + + ValueMemberType:: + ValueMemberType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("visibility")) + { + visibility_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + visibility_->container (this); + } + + else if (n == ACE_TEXT("type")) + { + type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + type_->container (this); + } + + else + { + } + } + } + + // NamedValue + // + + NamedValue:: + NamedValue (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("value")) + { + value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataValue > (new ::CIAO::Config_Handlers::DataValue (e)); + value_->container (this); + } + + else + { + } + } + } + + // SequenceType + // + + SequenceType:: + SequenceType (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("bound")) + { + ::XMLSchema::unsignedInt t (e); + bound (t); + } + + else if (n == ACE_TEXT("elementType")) + { + elementType_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + elementType_->container (this); + } + + else + { + } + } + } + + // Any + // + + Any:: + Any (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("type")) + { + type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + type_->container (this); + } + + else if (n == ACE_TEXT("value")) + { + value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataValue > (new ::CIAO::Config_Handlers::DataValue (e)); + value_->container (this); + } + + else + { + } + } + } + + // Property + // + + Property:: + Property (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("value")) + { + value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Any > (new ::CIAO::Config_Handlers::Any (e)); + value_->container (this); + } + + else + { + } + } + } + + // SatisfierPropertyKind + // + + SatisfierPropertyKind:: + SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR > const& e) + : ::XSCRT::Type (e) + { + ::std::basic_string< ACE_TCHAR > v (e.value ()); + + if (v == ACE_TEXT ("Quantity")) v_ = Quantity_l; + else if (v == ACE_TEXT ("Capacity")) v_ = Capacity_l; + else if (v == ACE_TEXT ("Minimum")) v_ = Minimum_l; + else if (v == ACE_TEXT ("Maximum")) v_ = Maximum_l; + else if (v == ACE_TEXT ("Attribute")) v_ = Attribute_l; + else if (v == ACE_TEXT ("Selection")) v_ = Selection_l; + else + { + } + } + + SatisfierPropertyKind:: + SatisfierPropertyKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a) + : ::XSCRT::Type (a) + { + ::std::basic_string< ACE_TCHAR > v (a.value ()); + + if (v == ACE_TEXT ("Quantity")) v_ = Quantity_l; + else if (v == ACE_TEXT ("Capacity")) v_ = Capacity_l; + else if (v == ACE_TEXT ("Minimum")) v_ = Minimum_l; + else if (v == ACE_TEXT ("Maximum")) v_ = Maximum_l; + else if (v == ACE_TEXT ("Attribute")) v_ = Attribute_l; + else if (v == ACE_TEXT ("Selection")) v_ = Selection_l; + else + { + } + } + + SatisfierPropertyKind const SatisfierPropertyKind::Quantity (SatisfierPropertyKind::Quantity_l); + SatisfierPropertyKind const SatisfierPropertyKind::Capacity (SatisfierPropertyKind::Capacity_l); + SatisfierPropertyKind const SatisfierPropertyKind::Minimum (SatisfierPropertyKind::Minimum_l); + SatisfierPropertyKind const SatisfierPropertyKind::Maximum (SatisfierPropertyKind::Maximum_l); + SatisfierPropertyKind const SatisfierPropertyKind::Attribute (SatisfierPropertyKind::Attribute_l); + SatisfierPropertyKind const SatisfierPropertyKind::Selection (SatisfierPropertyKind::Selection_l); + + // SatisfierProperty + // + + SatisfierProperty:: + SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("kind")) + { + kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierPropertyKind > (new ::CIAO::Config_Handlers::SatisfierPropertyKind (e)); + kind_->container (this); + } + + else if (n == ACE_TEXT("dynamic")) + { + dynamic_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e)); + dynamic_->container (this); + } + + else if (n == ACE_TEXT("value")) + { + value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Any > (new ::CIAO::Config_Handlers::Any (e)); + value_->container (this); + } + + else + { + } + } + } + + // Resource + // + + Resource:: + Resource (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("resourceType")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_resourceType (t); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SatisfierProperty (e)); + add_property (t); + } + + else + { + } + } + } + + // Requirement + // + + Requirement:: + Requirement (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("resourceType")) + { + resourceType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourceType_->container (this); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_property (t); + } + + else + { + } + } + } + + // ResourceDeploymentDescription + // + + ResourceDeploymentDescription:: + ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("requirementName")) + { + requirementName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + requirementName_->container (this); + } + + else if (n == ACE_TEXT("resourceName")) + { + resourceName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourceName_->container (this); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_property (t); + } + + else + { + } + } + } + + // ArtifactDeploymentDescription + // + + ArtifactDeploymentDescription:: + ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("source")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_source (t); + } + + else if (n == ACE_TEXT("node")) + { + node_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + node_->container (this); + } + + else if (n == ACE_TEXT("location")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_location (t); + } + + else if (n == ACE_TEXT("execParameter")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_execParameter (t); + } + + else if (n == ACE_TEXT("deployRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_deployRequirement (t); + } + + else if (n == ACE_TEXT("deployedResource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ResourceDeploymentDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ResourceDeploymentDescription (e)); + add_deployedResource (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("id")) + { + ::XMLSchema::ID< ACE_TCHAR > t (a); + id (t); + std::basic_string temp ((*id_).c_str()); + (*ACE_Singleton::instance())-> + add_id(temp, dynamic_cast (this)); + } + + else + { + } + } + } + + // MonolithicDeploymentDescription + // + + MonolithicDeploymentDescription:: + MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("source")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_source (t); + } + + else if (n == ACE_TEXT("artifact")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::IdRef (e)); + add_artifact (t); + } + + else if (n == ACE_TEXT("execParameter")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_execParameter (t); + } + + else if (n == ACE_TEXT("deployRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_deployRequirement (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("id")) + { + ::XMLSchema::ID< ACE_TCHAR > t (a); + id (t); + std::basic_string temp ((*id_).c_str()); + (*ACE_Singleton::instance())-> + add_id(temp, dynamic_cast (this)); + } + + else + { + } + } + } + + // ResourceUsageKind + // + + ResourceUsageKind:: + ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR > const& e) + : ::XSCRT::Type (e) + { + ::std::basic_string< ACE_TCHAR > v (e.value ()); + + if (v == ACE_TEXT ("None")) v_ = None_l; + else if (v == ACE_TEXT ("InstanceUsesResource")) v_ = InstanceUsesResource_l; + else if (v == ACE_TEXT ("ResourceUsesInstance")) v_ = ResourceUsesInstance_l; + else if (v == ACE_TEXT ("PortUsesResource")) v_ = PortUsesResource_l; + else if (v == ACE_TEXT ("ResourceUsesPort")) v_ = ResourceUsesPort_l; + else + { + } + } + + ResourceUsageKind:: + ResourceUsageKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a) + : ::XSCRT::Type (a) + { + ::std::basic_string< ACE_TCHAR > v (a.value ()); + + if (v == ACE_TEXT ("None")) v_ = None_l; + else if (v == ACE_TEXT ("InstanceUsesResource")) v_ = InstanceUsesResource_l; + else if (v == ACE_TEXT ("ResourceUsesInstance")) v_ = ResourceUsesInstance_l; + else if (v == ACE_TEXT ("PortUsesResource")) v_ = PortUsesResource_l; + else if (v == ACE_TEXT ("ResourceUsesPort")) v_ = ResourceUsesPort_l; + else + { + } + } + + ResourceUsageKind const ResourceUsageKind::None (ResourceUsageKind::None_l); + ResourceUsageKind const ResourceUsageKind::InstanceUsesResource (ResourceUsageKind::InstanceUsesResource_l); + ResourceUsageKind const ResourceUsageKind::ResourceUsesInstance (ResourceUsageKind::ResourceUsesInstance_l); + ResourceUsageKind const ResourceUsageKind::PortUsesResource (ResourceUsageKind::PortUsesResource_l); + ResourceUsageKind const ResourceUsageKind::ResourceUsesPort (ResourceUsageKind::ResourceUsesPort_l); + + // InstanceResourceDeploymentDescription + // + + InstanceResourceDeploymentDescription:: + InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("resourceUsage")) + { + resourceUsage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > (new ::CIAO::Config_Handlers::ResourceUsageKind (e)); + resourceUsage_->container (this); + } + + else if (n == ACE_TEXT("requirementName")) + { + requirementName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + requirementName_->container (this); + } + + else if (n == ACE_TEXT("resourceName")) + { + resourceName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourceName_->container (this); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_property (t); + } + + else + { + } + } + } + + // InstanceDeploymentDescription + // + + InstanceDeploymentDescription:: + InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("node")) + { + node_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + node_->container (this); + } + + else if (n == ACE_TEXT("source")) + { + source_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + source_->container (this); + } + + else if (n == ACE_TEXT("implementation")) + { + implementation_ = ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > (new ::CIAO::Config_Handlers::IdRef (e)); + implementation_->container (this); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("deployedResource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (e)); + add_deployedResource (t); + } + + else if (n == ACE_TEXT("deployedSharedResource")) + { + ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription t (e); + deployedSharedResource (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("id")) + { + ::XMLSchema::ID< ACE_TCHAR > t (a); + id (t); + std::basic_string temp ((*id_).c_str()); + (*ACE_Singleton::instance())-> + add_id(temp, dynamic_cast (this)); + } + + else + { + } + } + } + + // CCMComponentPortKind + // + + CCMComponentPortKind:: + CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR > const& e) + : ::XSCRT::Type (e) + { + ::std::basic_string< ACE_TCHAR > v (e.value ()); + + if (v == ACE_TEXT ("Facet")) v_ = Facet_l; + else if (v == ACE_TEXT ("SimplexReceptacle")) v_ = SimplexReceptacle_l; + else if (v == ACE_TEXT ("MultiplexReceptacle")) v_ = MultiplexReceptacle_l; + else if (v == ACE_TEXT ("EventEmitter")) v_ = EventEmitter_l; + else if (v == ACE_TEXT ("EventPublisher")) v_ = EventPublisher_l; + else if (v == ACE_TEXT ("EventConsumer")) v_ = EventConsumer_l; + else if (v == ACE_TEXT ("ExtendedPort")) v_ = ExtendedPort_l; + else if (v == ACE_TEXT ("MirrorPort")) v_ = MirrorPort_l; + else + { + } + } + + CCMComponentPortKind:: + CCMComponentPortKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a) + : ::XSCRT::Type (a) + { + ::std::basic_string< ACE_TCHAR > v (a.value ()); + + if (v == ACE_TEXT ("Facet")) v_ = Facet_l; + else if (v == ACE_TEXT ("SimplexReceptacle")) v_ = SimplexReceptacle_l; + else if (v == ACE_TEXT ("MultiplexReceptacle")) v_ = MultiplexReceptacle_l; + else if (v == ACE_TEXT ("EventEmitter")) v_ = EventEmitter_l; + else if (v == ACE_TEXT ("EventPublisher")) v_ = EventPublisher_l; + else if (v == ACE_TEXT ("EventConsumer")) v_ = EventConsumer_l; + else if (v == ACE_TEXT ("ExtendedPort")) v_ = ExtendedPort_l; + else if (v == ACE_TEXT ("MirrorPort")) v_ = MirrorPort_l; + else + { + } + } + + CCMComponentPortKind const CCMComponentPortKind::Facet (CCMComponentPortKind::Facet_l); + CCMComponentPortKind const CCMComponentPortKind::SimplexReceptacle (CCMComponentPortKind::SimplexReceptacle_l); + CCMComponentPortKind const CCMComponentPortKind::MultiplexReceptacle (CCMComponentPortKind::MultiplexReceptacle_l); + CCMComponentPortKind const CCMComponentPortKind::EventEmitter (CCMComponentPortKind::EventEmitter_l); + CCMComponentPortKind const CCMComponentPortKind::EventPublisher (CCMComponentPortKind::EventPublisher_l); + CCMComponentPortKind const CCMComponentPortKind::EventConsumer (CCMComponentPortKind::EventConsumer_l); + CCMComponentPortKind const CCMComponentPortKind::ExtendedPort (CCMComponentPortKind::ExtendedPort_l); + CCMComponentPortKind const CCMComponentPortKind::MirrorPort (CCMComponentPortKind::MirrorPort_l); + + // ComponentPortDescription + // + + ComponentPortDescription:: + ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("specificType")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + specificType (t); + } + + else if (n == ACE_TEXT("supportedType")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_supportedType (t); + } + + else if (n == ACE_TEXT("provider")) + { + provider_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e)); + provider_->container (this); + } + + else if (n == ACE_TEXT("exclusiveProvider")) + { + exclusiveProvider_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e)); + exclusiveProvider_->container (this); + } + + else if (n == ACE_TEXT("exclusiveUser")) + { + exclusiveUser_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e)); + exclusiveUser_->container (this); + } + + else if (n == ACE_TEXT("optional")) + { + optional_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e)); + optional_->container (this); + } + + else if (n == ACE_TEXT("kind")) + { + kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > (new ::CIAO::Config_Handlers::CCMComponentPortKind (e)); + kind_->container (this); + } + + else if (n == ACE_TEXT("templateParam")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_templateParam (t); + } + + else + { + } + } + } + + // ComponentPropertyDescription + // + + ComponentPropertyDescription:: + ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("type")) + { + type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e)); + type_->container (this); + } + + else + { + } + } + } + + // ComponentExternalPortEndpoint + // + + ComponentExternalPortEndpoint:: + ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("portName")) + { + portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + portName_->container (this); + } + + else + { + } + } + } + + // PlanSubcomponentPortEndpoint + // + + PlanSubcomponentPortEndpoint:: + PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("portName")) + { + portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + portName_->container (this); + } + + else if (n == ACE_TEXT("provider")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + provider (t); + } + + else if (n == ACE_TEXT("kind")) + { + kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > (new ::CIAO::Config_Handlers::CCMComponentPortKind (e)); + kind_->container (this); + } + + else if (n == ACE_TEXT("instance")) + { + instance_ = ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > (new ::CIAO::Config_Handlers::IdRef (e)); + instance_->container (this); + } + + else + { + } + } + } + + // ExternalReferenceEndpoint + // + + ExternalReferenceEndpoint:: + ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("location")) + { + location_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + location_->container (this); + } + + else if (n == ACE_TEXT("provider")) + { + provider_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e)); + provider_->container (this); + } + + else if (n == ACE_TEXT("portName")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + portName (t); + } + + else if (n == ACE_TEXT("supportedType")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_supportedType (t); + } + + else + { + } + } + } + + // ConnectionResourceDeploymentDescription + // + + ConnectionResourceDeploymentDescription:: + ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("targetName")) + { + targetName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + targetName_->container (this); + } + + else if (n == ACE_TEXT("requirementName")) + { + requirementName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + requirementName_->container (this); + } + + else if (n == ACE_TEXT("resourceName")) + { + resourceName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourceName_->container (this); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_property (t); + } + + else + { + } + } + } + + // PlanConnectionDescription + // + + PlanConnectionDescription:: + PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("source")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + source (t); + } + + else if (n == ACE_TEXT("deployRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_deployRequirement (t); + } + + else if (n == ACE_TEXT("externalEndpoint")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ComponentExternalPortEndpoint (e)); + add_externalEndpoint (t); + } + + else if (n == ACE_TEXT("internalEndpoint")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint (e)); + add_internalEndpoint (t); + } + + else if (n == ACE_TEXT("externalReference")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ExternalReferenceEndpoint (e)); + add_externalReference (t); + } + + else if (n == ACE_TEXT("deployedResource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription (e)); + add_deployedResource (t); + } + + else + { + } + } + } + + // ImplementationDependency + // + + ImplementationDependency:: + ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("requiredType")) + { + requiredType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + requiredType_->container (this); + } + + else + { + } + } + } + + // Capability + // + + Capability:: + Capability (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("resourceType")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_resourceType (t); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SatisfierProperty (e)); + add_property (t); + } + + else + { + } + } + } + + // ImplementationRequirement + // + + ImplementationRequirement:: + ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("resourceUsage")) + { + ::CIAO::Config_Handlers::ResourceUsageKind t (e); + resourceUsage (t); + } + + else if (n == ACE_TEXT("resourcePort")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + resourcePort (t); + } + + else if (n == ACE_TEXT("componentPort")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + componentPort (t); + } + + else if (n == ACE_TEXT("resourceType")) + { + resourceType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourceType_->container (this); + } + + else if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_property (t); + } + + else + { + } + } + } + + // SubcomponentPortEndpoint + // + + SubcomponentPortEndpoint:: + SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("portName")) + { + portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + portName_->container (this); + } + + else if (n == ACE_TEXT("instance")) + { + instance_ = ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > (new ::CIAO::Config_Handlers::IdRef (e)); + instance_->container (this); + } + + else + { + } + } + } + + // AssemblyConnectionDescription + // + + AssemblyConnectionDescription:: + AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("deployRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_deployRequirement (t); + } + + else if (n == ACE_TEXT("internalEndpoint")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPortEndpoint, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SubcomponentPortEndpoint (e)); + add_internalEndpoint (t); + } + + else if (n == ACE_TEXT("externalEndpoint")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ComponentExternalPortEndpoint (e)); + add_externalEndpoint (t); + } + + else if (n == ACE_TEXT("externalReference")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ExternalReferenceEndpoint (e)); + add_externalReference (t); + } + + else + { + } + } + } + + // PlanLocalityKind + // + + PlanLocalityKind:: + PlanLocalityKind (::XSCRT::XML::Element< ACE_TCHAR > const& e) + : ::XSCRT::Type (e) + { + ::std::basic_string< ACE_TCHAR > v (e.value ()); + + if (v == ACE_TEXT ("SameProcess")) v_ = SameProcess_l; + else if (v == ACE_TEXT ("DifferentProcess")) v_ = DifferentProcess_l; + else if (v == ACE_TEXT ("NoConstraint")) v_ = NoConstraint_l; + else + { + } + } + + PlanLocalityKind:: + PlanLocalityKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a) + : ::XSCRT::Type (a) + { + ::std::basic_string< ACE_TCHAR > v (a.value ()); + + if (v == ACE_TEXT ("SameProcess")) v_ = SameProcess_l; + else if (v == ACE_TEXT ("DifferentProcess")) v_ = DifferentProcess_l; + else if (v == ACE_TEXT ("NoConstraint")) v_ = NoConstraint_l; + else + { + } + } + + PlanLocalityKind const PlanLocalityKind::SameProcess (PlanLocalityKind::SameProcess_l); + PlanLocalityKind const PlanLocalityKind::DifferentProcess (PlanLocalityKind::DifferentProcess_l); + PlanLocalityKind const PlanLocalityKind::NoConstraint (PlanLocalityKind::NoConstraint_l); + + // PlanLocality + // + + PlanLocality:: + PlanLocality (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("constraint")) + { + constraint_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PlanLocalityKind > (new ::CIAO::Config_Handlers::PlanLocalityKind (e)); + constraint_->container (this); + } + + else if (n == ACE_TEXT("constrainedInstance")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::IdRef (e)); + add_constrainedInstance (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct IdRefTypeInfoInitializer + { + IdRefTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::IdRef)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + IdRefTypeInfoInitializer IdRefTypeInfoInitializer_; + + struct TCKindTypeInfoInitializer + { + TCKindTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (TCKind)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + TCKindTypeInfoInitializer TCKindTypeInfoInitializer_; + + struct DataTypeTypeInfoInitializer + { + DataTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::DataType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + DataTypeTypeInfoInitializer DataTypeTypeInfoInitializer_; + + struct DataValueTypeInfoInitializer + { + DataValueTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::DataValue)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + DataValueTypeInfoInitializer DataValueTypeInfoInitializer_; + + struct AliasTypeTypeInfoInitializer + { + AliasTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::AliasType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + AliasTypeTypeInfoInitializer AliasTypeTypeInfoInitializer_; + + struct EnumTypeTypeInfoInitializer + { + EnumTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::EnumType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + EnumTypeTypeInfoInitializer EnumTypeTypeInfoInitializer_; + + struct StructTypeTypeInfoInitializer + { + StructTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::StructType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + StructTypeTypeInfoInitializer StructTypeTypeInfoInitializer_; + + struct StructMemberTypeTypeInfoInitializer + { + StructMemberTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::StructMemberType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + StructMemberTypeTypeInfoInitializer StructMemberTypeTypeInfoInitializer_; + + struct ValueTypeTypeInfoInitializer + { + ValueTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ValueType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ValueTypeTypeInfoInitializer ValueTypeTypeInfoInitializer_; + + struct ValueMemberTypeTypeInfoInitializer + { + ValueMemberTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ValueMemberType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ValueMemberTypeTypeInfoInitializer ValueMemberTypeTypeInfoInitializer_; + + struct NamedValueTypeInfoInitializer + { + NamedValueTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::NamedValue)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + NamedValueTypeInfoInitializer NamedValueTypeInfoInitializer_; + + struct SequenceTypeTypeInfoInitializer + { + SequenceTypeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::SequenceType)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SequenceTypeTypeInfoInitializer SequenceTypeTypeInfoInitializer_; + + struct AnyTypeInfoInitializer + { + AnyTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Any)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + AnyTypeInfoInitializer AnyTypeInfoInitializer_; + + struct PropertyTypeInfoInitializer + { + PropertyTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Property)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PropertyTypeInfoInitializer PropertyTypeInfoInitializer_; + + struct SatisfierPropertyKindTypeInfoInitializer + { + SatisfierPropertyKindTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (SatisfierPropertyKind)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SatisfierPropertyKindTypeInfoInitializer SatisfierPropertyKindTypeInfoInitializer_; + + struct SatisfierPropertyTypeInfoInitializer + { + SatisfierPropertyTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::SatisfierProperty)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SatisfierPropertyTypeInfoInitializer SatisfierPropertyTypeInfoInitializer_; + + struct ResourceTypeInfoInitializer + { + ResourceTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Resource)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ResourceTypeInfoInitializer ResourceTypeInfoInitializer_; + + struct RequirementTypeInfoInitializer + { + RequirementTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Requirement)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + RequirementTypeInfoInitializer RequirementTypeInfoInitializer_; + + struct ResourceDeploymentDescriptionTypeInfoInitializer + { + ResourceDeploymentDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ResourceDeploymentDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ResourceDeploymentDescriptionTypeInfoInitializer ResourceDeploymentDescriptionTypeInfoInitializer_; + + struct ArtifactDeploymentDescriptionTypeInfoInitializer + { + ArtifactDeploymentDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ArtifactDeploymentDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ArtifactDeploymentDescriptionTypeInfoInitializer ArtifactDeploymentDescriptionTypeInfoInitializer_; + + struct MonolithicDeploymentDescriptionTypeInfoInitializer + { + MonolithicDeploymentDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::MonolithicDeploymentDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + MonolithicDeploymentDescriptionTypeInfoInitializer MonolithicDeploymentDescriptionTypeInfoInitializer_; + + struct ResourceUsageKindTypeInfoInitializer + { + ResourceUsageKindTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (ResourceUsageKind)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ResourceUsageKindTypeInfoInitializer ResourceUsageKindTypeInfoInitializer_; + + struct InstanceResourceDeploymentDescriptionTypeInfoInitializer + { + InstanceResourceDeploymentDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + InstanceResourceDeploymentDescriptionTypeInfoInitializer InstanceResourceDeploymentDescriptionTypeInfoInitializer_; + + struct InstanceDeploymentDescriptionTypeInfoInitializer + { + InstanceDeploymentDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::InstanceDeploymentDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + InstanceDeploymentDescriptionTypeInfoInitializer InstanceDeploymentDescriptionTypeInfoInitializer_; + + struct CCMComponentPortKindTypeInfoInitializer + { + CCMComponentPortKindTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (CCMComponentPortKind)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + CCMComponentPortKindTypeInfoInitializer CCMComponentPortKindTypeInfoInitializer_; + + struct ComponentPortDescriptionTypeInfoInitializer + { + ComponentPortDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentPortDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentPortDescriptionTypeInfoInitializer ComponentPortDescriptionTypeInfoInitializer_; + + struct ComponentPropertyDescriptionTypeInfoInitializer + { + ComponentPropertyDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentPropertyDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentPropertyDescriptionTypeInfoInitializer ComponentPropertyDescriptionTypeInfoInitializer_; + + struct ComponentExternalPortEndpointTypeInfoInitializer + { + ComponentExternalPortEndpointTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentExternalPortEndpoint)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentExternalPortEndpointTypeInfoInitializer ComponentExternalPortEndpointTypeInfoInitializer_; + + struct PlanSubcomponentPortEndpointTypeInfoInitializer + { + PlanSubcomponentPortEndpointTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PlanSubcomponentPortEndpointTypeInfoInitializer PlanSubcomponentPortEndpointTypeInfoInitializer_; + + struct ExternalReferenceEndpointTypeInfoInitializer + { + ExternalReferenceEndpointTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ExternalReferenceEndpoint)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ExternalReferenceEndpointTypeInfoInitializer ExternalReferenceEndpointTypeInfoInitializer_; + + struct ConnectionResourceDeploymentDescriptionTypeInfoInitializer + { + ConnectionResourceDeploymentDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ConnectionResourceDeploymentDescriptionTypeInfoInitializer ConnectionResourceDeploymentDescriptionTypeInfoInitializer_; + + struct PlanConnectionDescriptionTypeInfoInitializer + { + PlanConnectionDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PlanConnectionDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PlanConnectionDescriptionTypeInfoInitializer PlanConnectionDescriptionTypeInfoInitializer_; + + struct ImplementationDependencyTypeInfoInitializer + { + ImplementationDependencyTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ImplementationDependency)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ImplementationDependencyTypeInfoInitializer ImplementationDependencyTypeInfoInitializer_; + + struct CapabilityTypeInfoInitializer + { + CapabilityTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Capability)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + CapabilityTypeInfoInitializer CapabilityTypeInfoInitializer_; + + struct ImplementationRequirementTypeInfoInitializer + { + ImplementationRequirementTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ImplementationRequirement)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ImplementationRequirementTypeInfoInitializer ImplementationRequirementTypeInfoInitializer_; + + struct SubcomponentPortEndpointTypeInfoInitializer + { + SubcomponentPortEndpointTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::SubcomponentPortEndpoint)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SubcomponentPortEndpointTypeInfoInitializer SubcomponentPortEndpointTypeInfoInitializer_; + + struct AssemblyConnectionDescriptionTypeInfoInitializer + { + AssemblyConnectionDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::AssemblyConnectionDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + AssemblyConnectionDescriptionTypeInfoInitializer AssemblyConnectionDescriptionTypeInfoInitializer_; + + struct PlanLocalityKindTypeInfoInitializer + { + PlanLocalityKindTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (PlanLocalityKind)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PlanLocalityKindTypeInfoInitializer PlanLocalityKindTypeInfoInitializer_; + + struct PlanLocalityTypeInfoInitializer + { + PlanLocalityTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PlanLocality)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PlanLocalityTypeInfoInitializer PlanLocalityTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // IdRef + // + // + + void IdRef:: + traverse (Type& o) + { + pre (o); + if (o.href_p ()) href (o); + else href_none (o); + if (o.idref_p ()) idref (o); + else idref_none (o); + post (o); + } + + void IdRef:: + traverse (Type const& o) + { + pre (o); + if (o.href_p ()) href (o); + else href_none (o); + if (o.idref_p ()) idref (o); + else idref_none (o); + post (o); + } + + void IdRef:: + pre (Type&) + { + } + + void IdRef:: + pre (Type const&) + { + } + + void IdRef:: + href (Type& o) + { + dispatch (o.href ()); + } + + void IdRef:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void IdRef:: + href_none (Type&) + { + } + + void IdRef:: + href_none (Type const&) + { + } + + void IdRef:: + idref (Type& o) + { + dispatch (o.idref ()); + } + + void IdRef:: + idref (Type const& o) + { + dispatch (o.idref ()); + } + + void IdRef:: + idref_none (Type&) + { + } + + void IdRef:: + idref_none (Type const&) + { + } + + void IdRef:: + post (Type&) + { + } + + void IdRef:: + post (Type const&) + { + } + + // DataType + // + // + + void DataType:: + traverse (Type& o) + { + pre (o); + kind (o); + if (o.enum_p ()) enum_ (o); + else enum_none (o); + if (o.struct_p ()) struct_ (o); + else struct_none (o); + if (o.value_p ()) value (o); + else value_none (o); + if (o.sequence_p ()) sequence (o); + else sequence_none (o); + if (o.alias_p ()) alias (o); + else alias_none (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void DataType:: + traverse (Type const& o) + { + pre (o); + kind (o); + if (o.enum_p ()) enum_ (o); + else enum_none (o); + if (o.struct_p ()) struct_ (o); + else struct_none (o); + if (o.value_p ()) value (o); + else value_none (o); + if (o.sequence_p ()) sequence (o); + else sequence_none (o); + if (o.alias_p ()) alias (o); + else alias_none (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void DataType:: + pre (Type&) + { + } + + void DataType:: + pre (Type const&) + { + } + + void DataType:: + kind (Type& o) + { + dispatch (o.kind ()); + } + + void DataType:: + kind (Type const& o) + { + dispatch (o.kind ()); + } + + void DataType:: + enum_ (Type& o) + { + dispatch (o.enum_ ()); + } + + void DataType:: + enum_ (Type const& o) + { + dispatch (o.enum_ ()); + } + + void DataType:: + enum_none (Type&) + { + } + + void DataType:: + enum_none (Type const&) + { + } + + void DataType:: + struct_ (Type& o) + { + dispatch (o.struct_ ()); + } + + void DataType:: + struct_ (Type const& o) + { + dispatch (o.struct_ ()); + } + + void DataType:: + struct_none (Type&) + { + } + + void DataType:: + struct_none (Type const&) + { + } + + void DataType:: + value (Type& o) + { + dispatch (o.value ()); + } + + void DataType:: + value (Type const& o) + { + dispatch (o.value ()); + } + + void DataType:: + value_none (Type&) + { + } + + void DataType:: + value_none (Type const&) + { + } + + void DataType:: + sequence (Type& o) + { + dispatch (o.sequence ()); + } + + void DataType:: + sequence (Type const& o) + { + dispatch (o.sequence ()); + } + + void DataType:: + sequence_none (Type&) + { + } + + void DataType:: + sequence_none (Type const&) + { + } + + void DataType:: + alias (Type& o) + { + dispatch (o.alias ()); + } + + void DataType:: + alias (Type const& o) + { + dispatch (o.alias ()); + } + + void DataType:: + alias_none (Type&) + { + } + + void DataType:: + alias_none (Type const&) + { + } + + void DataType:: + id (Type& o) + { + dispatch (o.id ()); + } + + void DataType:: + id (Type const& o) + { + dispatch (o.id ()); + } + + void DataType:: + id_none (Type&) + { + } + + void DataType:: + id_none (Type const&) + { + } + + void DataType:: + post (Type&) + { + } + + void DataType:: + post (Type const&) + { + } + + // DataValue + // + // + + void DataValue:: + traverse (Type& o) + { + pre (o); + short_ (o); + long_ (o); + ushort (o); + ulong (o); + float_ (o); + double_ (o); + boolean (o); + octet (o); + enum_ (o); + string (o); + longlong (o); + ulonglong (o); + longdouble (o); + element (o); + member (o); + post (o); + } + + void DataValue:: + traverse (Type const& o) + { + pre (o); + short_ (o); + long_ (o); + ushort (o); + ulong (o); + float_ (o); + double_ (o); + boolean (o); + octet (o); + enum_ (o); + string (o); + longlong (o); + ulonglong (o); + longdouble (o); + element (o); + member (o); + post (o); + } + + void DataValue:: + pre (Type&) + { + } + + void DataValue:: + pre (Type const&) + { + } + + void DataValue:: + short_ (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::short_iterator b (o.begin_short()), e (o.end_short()); + + if (b != e) + { + short_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) short_next (o); + } + + short_post (o); + } + + else short_none (o); + } + + void DataValue:: + short_ (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::short_const_iterator b (o.begin_short()), e (o.end_short()); + + if (b != e) + { + short_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) short_next (o); + } + + short_post (o); + } + + else short_none (o); + } + + void DataValue:: + short_pre (Type&) + { + } + + void DataValue:: + short_pre (Type const&) + { + } + + void DataValue:: + short_next (Type&) + { + } + + void DataValue:: + short_next (Type const&) + { + } + + void DataValue:: + short_post (Type&) + { + } + + void DataValue:: + short_post (Type const&) + { + } + + void DataValue:: + short_none (Type&) + { + } + + void DataValue:: + short_none (Type const&) + { + } + + void DataValue:: + long_ (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::long_iterator b (o.begin_long()), e (o.end_long()); + + if (b != e) + { + long_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) long_next (o); + } + + long_post (o); + } + + else long_none (o); + } + + void DataValue:: + long_ (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::long_const_iterator b (o.begin_long()), e (o.end_long()); + + if (b != e) + { + long_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) long_next (o); + } + + long_post (o); + } + + else long_none (o); + } + + void DataValue:: + long_pre (Type&) + { + } + + void DataValue:: + long_pre (Type const&) + { + } + + void DataValue:: + long_next (Type&) + { + } + + void DataValue:: + long_next (Type const&) + { + } + + void DataValue:: + long_post (Type&) + { + } + + void DataValue:: + long_post (Type const&) + { + } + + void DataValue:: + long_none (Type&) + { + } + + void DataValue:: + long_none (Type const&) + { + } + + void DataValue:: + ushort (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::ushort_iterator b (o.begin_ushort()), e (o.end_ushort()); + + if (b != e) + { + ushort_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) ushort_next (o); + } + + ushort_post (o); + } + + else ushort_none (o); + } + + void DataValue:: + ushort (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::ushort_const_iterator b (o.begin_ushort()), e (o.end_ushort()); + + if (b != e) + { + ushort_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) ushort_next (o); + } + + ushort_post (o); + } + + else ushort_none (o); + } + + void DataValue:: + ushort_pre (Type&) + { + } + + void DataValue:: + ushort_pre (Type const&) + { + } + + void DataValue:: + ushort_next (Type&) + { + } + + void DataValue:: + ushort_next (Type const&) + { + } + + void DataValue:: + ushort_post (Type&) + { + } + + void DataValue:: + ushort_post (Type const&) + { + } + + void DataValue:: + ushort_none (Type&) + { + } + + void DataValue:: + ushort_none (Type const&) + { + } + + void DataValue:: + ulong (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::ulong_iterator b (o.begin_ulong()), e (o.end_ulong()); + + if (b != e) + { + ulong_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) ulong_next (o); + } + + ulong_post (o); + } + + else ulong_none (o); + } + + void DataValue:: + ulong (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::ulong_const_iterator b (o.begin_ulong()), e (o.end_ulong()); + + if (b != e) + { + ulong_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) ulong_next (o); + } + + ulong_post (o); + } + + else ulong_none (o); + } + + void DataValue:: + ulong_pre (Type&) + { + } + + void DataValue:: + ulong_pre (Type const&) + { + } + + void DataValue:: + ulong_next (Type&) + { + } + + void DataValue:: + ulong_next (Type const&) + { + } + + void DataValue:: + ulong_post (Type&) + { + } + + void DataValue:: + ulong_post (Type const&) + { + } + + void DataValue:: + ulong_none (Type&) + { + } + + void DataValue:: + ulong_none (Type const&) + { + } + + void DataValue:: + float_ (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::float_iterator b (o.begin_float()), e (o.end_float()); + + if (b != e) + { + float_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) float_next (o); + } + + float_post (o); + } + + else float_none (o); + } + + void DataValue:: + float_ (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::float_const_iterator b (o.begin_float()), e (o.end_float()); + + if (b != e) + { + float_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) float_next (o); + } + + float_post (o); + } + + else float_none (o); + } + + void DataValue:: + float_pre (Type&) + { + } + + void DataValue:: + float_pre (Type const&) + { + } + + void DataValue:: + float_next (Type&) + { + } + + void DataValue:: + float_next (Type const&) + { + } + + void DataValue:: + float_post (Type&) + { + } + + void DataValue:: + float_post (Type const&) + { + } + + void DataValue:: + float_none (Type&) + { + } + + void DataValue:: + float_none (Type const&) + { + } + + void DataValue:: + double_ (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::double_iterator b (o.begin_double()), e (o.end_double()); + + if (b != e) + { + double_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) double_next (o); + } + + double_post (o); + } + + else double_none (o); + } + + void DataValue:: + double_ (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::double_const_iterator b (o.begin_double()), e (o.end_double()); + + if (b != e) + { + double_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) double_next (o); + } + + double_post (o); + } + + else double_none (o); + } + + void DataValue:: + double_pre (Type&) + { + } + + void DataValue:: + double_pre (Type const&) + { + } + + void DataValue:: + double_next (Type&) + { + } + + void DataValue:: + double_next (Type const&) + { + } + + void DataValue:: + double_post (Type&) + { + } + + void DataValue:: + double_post (Type const&) + { + } + + void DataValue:: + double_none (Type&) + { + } + + void DataValue:: + double_none (Type const&) + { + } + + void DataValue:: + boolean (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::boolean_iterator b (o.begin_boolean()), e (o.end_boolean()); + + if (b != e) + { + boolean_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) boolean_next (o); + } + + boolean_post (o); + } + + else boolean_none (o); + } + + void DataValue:: + boolean (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::boolean_const_iterator b (o.begin_boolean()), e (o.end_boolean()); + + if (b != e) + { + boolean_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) boolean_next (o); + } + + boolean_post (o); + } + + else boolean_none (o); + } + + void DataValue:: + boolean_pre (Type&) + { + } + + void DataValue:: + boolean_pre (Type const&) + { + } + + void DataValue:: + boolean_next (Type&) + { + } + + void DataValue:: + boolean_next (Type const&) + { + } + + void DataValue:: + boolean_post (Type&) + { + } + + void DataValue:: + boolean_post (Type const&) + { + } + + void DataValue:: + boolean_none (Type&) + { + } + + void DataValue:: + boolean_none (Type const&) + { + } + + void DataValue:: + octet (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::octet_iterator b (o.begin_octet()), e (o.end_octet()); + + if (b != e) + { + octet_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) octet_next (o); + } + + octet_post (o); + } + + else octet_none (o); + } + + void DataValue:: + octet (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::octet_const_iterator b (o.begin_octet()), e (o.end_octet()); + + if (b != e) + { + octet_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) octet_next (o); + } + + octet_post (o); + } + + else octet_none (o); + } + + void DataValue:: + octet_pre (Type&) + { + } + + void DataValue:: + octet_pre (Type const&) + { + } + + void DataValue:: + octet_next (Type&) + { + } + + void DataValue:: + octet_next (Type const&) + { + } + + void DataValue:: + octet_post (Type&) + { + } + + void DataValue:: + octet_post (Type const&) + { + } + + void DataValue:: + octet_none (Type&) + { + } + + void DataValue:: + octet_none (Type const&) + { + } + + void DataValue:: + enum_ (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::enum_iterator b (o.begin_enum()), e (o.end_enum()); + + if (b != e) + { + enum_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) enum_next (o); + } + + enum_post (o); + } + + else enum_none (o); + } + + void DataValue:: + enum_ (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::enum_const_iterator b (o.begin_enum()), e (o.end_enum()); + + if (b != e) + { + enum_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) enum_next (o); + } + + enum_post (o); + } + + else enum_none (o); + } + + void DataValue:: + enum_pre (Type&) + { + } + + void DataValue:: + enum_pre (Type const&) + { + } + + void DataValue:: + enum_next (Type&) + { + } + + void DataValue:: + enum_next (Type const&) + { + } + + void DataValue:: + enum_post (Type&) + { + } + + void DataValue:: + enum_post (Type const&) + { + } + + void DataValue:: + enum_none (Type&) + { + } + + void DataValue:: + enum_none (Type const&) + { + } + + void DataValue:: + string (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::string_iterator b (o.begin_string()), e (o.end_string()); + + if (b != e) + { + string_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) string_next (o); + } + + string_post (o); + } + + else string_none (o); + } + + void DataValue:: + string (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::string_const_iterator b (o.begin_string()), e (o.end_string()); + + if (b != e) + { + string_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) string_next (o); + } + + string_post (o); + } + + else string_none (o); + } + + void DataValue:: + string_pre (Type&) + { + } + + void DataValue:: + string_pre (Type const&) + { + } + + void DataValue:: + string_next (Type&) + { + } + + void DataValue:: + string_next (Type const&) + { + } + + void DataValue:: + string_post (Type&) + { + } + + void DataValue:: + string_post (Type const&) + { + } + + void DataValue:: + string_none (Type&) + { + } + + void DataValue:: + string_none (Type const&) + { + } + + void DataValue:: + longlong (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::longlong_iterator b (o.begin_longlong()), e (o.end_longlong()); + + if (b != e) + { + longlong_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) longlong_next (o); + } + + longlong_post (o); + } + + else longlong_none (o); + } + + void DataValue:: + longlong (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::longlong_const_iterator b (o.begin_longlong()), e (o.end_longlong()); + + if (b != e) + { + longlong_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) longlong_next (o); + } + + longlong_post (o); + } + + else longlong_none (o); + } + + void DataValue:: + longlong_pre (Type&) + { + } + + void DataValue:: + longlong_pre (Type const&) + { + } + + void DataValue:: + longlong_next (Type&) + { + } + + void DataValue:: + longlong_next (Type const&) + { + } + + void DataValue:: + longlong_post (Type&) + { + } + + void DataValue:: + longlong_post (Type const&) + { + } + + void DataValue:: + longlong_none (Type&) + { + } + + void DataValue:: + longlong_none (Type const&) + { + } + + void DataValue:: + ulonglong (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::ulonglong_iterator b (o.begin_ulonglong()), e (o.end_ulonglong()); + + if (b != e) + { + ulonglong_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) ulonglong_next (o); + } + + ulonglong_post (o); + } + + else ulonglong_none (o); + } + + void DataValue:: + ulonglong (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::ulonglong_const_iterator b (o.begin_ulonglong()), e (o.end_ulonglong()); + + if (b != e) + { + ulonglong_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) ulonglong_next (o); + } + + ulonglong_post (o); + } + + else ulonglong_none (o); + } + + void DataValue:: + ulonglong_pre (Type&) + { + } + + void DataValue:: + ulonglong_pre (Type const&) + { + } + + void DataValue:: + ulonglong_next (Type&) + { + } + + void DataValue:: + ulonglong_next (Type const&) + { + } + + void DataValue:: + ulonglong_post (Type&) + { + } + + void DataValue:: + ulonglong_post (Type const&) + { + } + + void DataValue:: + ulonglong_none (Type&) + { + } + + void DataValue:: + ulonglong_none (Type const&) + { + } + + void DataValue:: + longdouble (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::longdouble_iterator b (o.begin_longdouble()), e (o.end_longdouble()); + + if (b != e) + { + longdouble_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) longdouble_next (o); + } + + longdouble_post (o); + } + + else longdouble_none (o); + } + + void DataValue:: + longdouble (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::longdouble_const_iterator b (o.begin_longdouble()), e (o.end_longdouble()); + + if (b != e) + { + longdouble_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) longdouble_next (o); + } + + longdouble_post (o); + } + + else longdouble_none (o); + } + + void DataValue:: + longdouble_pre (Type&) + { + } + + void DataValue:: + longdouble_pre (Type const&) + { + } + + void DataValue:: + longdouble_next (Type&) + { + } + + void DataValue:: + longdouble_next (Type const&) + { + } + + void DataValue:: + longdouble_post (Type&) + { + } + + void DataValue:: + longdouble_post (Type const&) + { + } + + void DataValue:: + longdouble_none (Type&) + { + } + + void DataValue:: + longdouble_none (Type const&) + { + } + + void DataValue:: + element (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::element_iterator b (o.begin_element()), e (o.end_element()); + + if (b != e) + { + element_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) element_next (o); + } + + element_post (o); + } + + else element_none (o); + } + + void DataValue:: + element (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::element_const_iterator b (o.begin_element()), e (o.end_element()); + + if (b != e) + { + element_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) element_next (o); + } + + element_post (o); + } + + else element_none (o); + } + + void DataValue:: + element_pre (Type&) + { + } + + void DataValue:: + element_pre (Type const&) + { + } + + void DataValue:: + element_next (Type&) + { + } + + void DataValue:: + element_next (Type const&) + { + } + + void DataValue:: + element_post (Type&) + { + } + + void DataValue:: + element_post (Type const&) + { + } + + void DataValue:: + element_none (Type&) + { + } + + void DataValue:: + element_none (Type const&) + { + } + + void DataValue:: + member (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::member_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + + else member_none (o); + } + + void DataValue:: + member (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::DataValue::member_const_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + + else member_none (o); + } + + void DataValue:: + member_pre (Type&) + { + } + + void DataValue:: + member_pre (Type const&) + { + } + + void DataValue:: + member_next (Type&) + { + } + + void DataValue:: + member_next (Type const&) + { + } + + void DataValue:: + member_post (Type&) + { + } + + void DataValue:: + member_post (Type const&) + { + } + + void DataValue:: + member_none (Type&) + { + } + + void DataValue:: + member_none (Type const&) + { + } + + void DataValue:: + post (Type&) + { + } + + void DataValue:: + post (Type const&) + { + } + + // AliasType + // + // + + void AliasType:: + traverse (Type& o) + { + pre (o); + name (o); + typeId (o); + elementType (o); + post (o); + } + + void AliasType:: + traverse (Type const& o) + { + pre (o); + name (o); + typeId (o); + elementType (o); + post (o); + } + + void AliasType:: + pre (Type&) + { + } + + void AliasType:: + pre (Type const&) + { + } + + void AliasType:: + name (Type& o) + { + dispatch (o.name ()); + } + + void AliasType:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void AliasType:: + typeId (Type& o) + { + dispatch (o.typeId ()); + } + + void AliasType:: + typeId (Type const& o) + { + dispatch (o.typeId ()); + } + + void AliasType:: + elementType (Type& o) + { + dispatch (o.elementType ()); + } + + void AliasType:: + elementType (Type const& o) + { + dispatch (o.elementType ()); + } + + void AliasType:: + post (Type&) + { + } + + void AliasType:: + post (Type const&) + { + } + + // EnumType + // + // + + void EnumType:: + traverse (Type& o) + { + pre (o); + name (o); + typeId (o); + member (o); + post (o); + } + + void EnumType:: + traverse (Type const& o) + { + pre (o); + name (o); + typeId (o); + member (o); + post (o); + } + + void EnumType:: + pre (Type&) + { + } + + void EnumType:: + pre (Type const&) + { + } + + void EnumType:: + name (Type& o) + { + dispatch (o.name ()); + } + + void EnumType:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void EnumType:: + typeId (Type& o) + { + dispatch (o.typeId ()); + } + + void EnumType:: + typeId (Type const& o) + { + dispatch (o.typeId ()); + } + + void EnumType:: + member (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::EnumType::member_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + } + + void EnumType:: + member (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::EnumType::member_const_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + } + + void EnumType:: + member_pre (Type&) + { + } + + void EnumType:: + member_pre (Type const&) + { + } + + void EnumType:: + member_next (Type&) + { + } + + void EnumType:: + member_next (Type const&) + { + } + + void EnumType:: + member_post (Type&) + { + } + + void EnumType:: + member_post (Type const&) + { + } + + void EnumType:: + post (Type&) + { + } + + void EnumType:: + post (Type const&) + { + } + + // StructType + // + // + + void StructType:: + traverse (Type& o) + { + pre (o); + name (o); + typeId (o); + member (o); + post (o); + } + + void StructType:: + traverse (Type const& o) + { + pre (o); + name (o); + typeId (o); + member (o); + post (o); + } + + void StructType:: + pre (Type&) + { + } + + void StructType:: + pre (Type const&) + { + } + + void StructType:: + name (Type& o) + { + dispatch (o.name ()); + } + + void StructType:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void StructType:: + typeId (Type& o) + { + dispatch (o.typeId ()); + } + + void StructType:: + typeId (Type const& o) + { + dispatch (o.typeId ()); + } + + void StructType:: + member (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::StructType::member_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + + else member_none (o); + } + + void StructType:: + member (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::StructType::member_const_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + + else member_none (o); + } + + void StructType:: + member_pre (Type&) + { + } + + void StructType:: + member_pre (Type const&) + { + } + + void StructType:: + member_next (Type&) + { + } + + void StructType:: + member_next (Type const&) + { + } + + void StructType:: + member_post (Type&) + { + } + + void StructType:: + member_post (Type const&) + { + } + + void StructType:: + member_none (Type&) + { + } + + void StructType:: + member_none (Type const&) + { + } + + void StructType:: + post (Type&) + { + } + + void StructType:: + post (Type const&) + { + } + + // StructMemberType + // + // + + void StructMemberType:: + traverse (Type& o) + { + pre (o); + name (o); + type (o); + post (o); + } + + void StructMemberType:: + traverse (Type const& o) + { + pre (o); + name (o); + type (o); + post (o); + } + + void StructMemberType:: + pre (Type&) + { + } + + void StructMemberType:: + pre (Type const&) + { + } + + void StructMemberType:: + name (Type& o) + { + dispatch (o.name ()); + } + + void StructMemberType:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void StructMemberType:: + type (Type& o) + { + dispatch (o.type ()); + } + + void StructMemberType:: + type (Type const& o) + { + dispatch (o.type ()); + } + + void StructMemberType:: + post (Type&) + { + } + + void StructMemberType:: + post (Type const&) + { + } + + // ValueType + // + // + + void ValueType:: + traverse (Type& o) + { + pre (o); + name (o); + typeId (o); + modifier (o); + baseType (o); + member (o); + post (o); + } + + void ValueType:: + traverse (Type const& o) + { + pre (o); + name (o); + typeId (o); + modifier (o); + baseType (o); + member (o); + post (o); + } + + void ValueType:: + pre (Type&) + { + } + + void ValueType:: + pre (Type const&) + { + } + + void ValueType:: + name (Type& o) + { + dispatch (o.name ()); + } + + void ValueType:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void ValueType:: + typeId (Type& o) + { + dispatch (o.typeId ()); + } + + void ValueType:: + typeId (Type const& o) + { + dispatch (o.typeId ()); + } + + void ValueType:: + modifier (Type& o) + { + dispatch (o.modifier ()); + } + + void ValueType:: + modifier (Type const& o) + { + dispatch (o.modifier ()); + } + + void ValueType:: + baseType (Type& o) + { + dispatch (o.baseType ()); + } + + void ValueType:: + baseType (Type const& o) + { + dispatch (o.baseType ()); + } + + void ValueType:: + member (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ValueType::member_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + + else member_none (o); + } + + void ValueType:: + member (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ValueType::member_const_iterator b (o.begin_member()), e (o.end_member()); + + if (b != e) + { + member_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) member_next (o); + } + + member_post (o); + } + + else member_none (o); + } + + void ValueType:: + member_pre (Type&) + { + } + + void ValueType:: + member_pre (Type const&) + { + } + + void ValueType:: + member_next (Type&) + { + } + + void ValueType:: + member_next (Type const&) + { + } + + void ValueType:: + member_post (Type&) + { + } + + void ValueType:: + member_post (Type const&) + { + } + + void ValueType:: + member_none (Type&) + { + } + + void ValueType:: + member_none (Type const&) + { + } + + void ValueType:: + post (Type&) + { + } + + void ValueType:: + post (Type const&) + { + } + + // ValueMemberType + // + // + + void ValueMemberType:: + traverse (Type& o) + { + pre (o); + name (o); + visibility (o); + type (o); + post (o); + } + + void ValueMemberType:: + traverse (Type const& o) + { + pre (o); + name (o); + visibility (o); + type (o); + post (o); + } + + void ValueMemberType:: + pre (Type&) + { + } + + void ValueMemberType:: + pre (Type const&) + { + } + + void ValueMemberType:: + name (Type& o) + { + dispatch (o.name ()); + } + + void ValueMemberType:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void ValueMemberType:: + visibility (Type& o) + { + dispatch (o.visibility ()); + } + + void ValueMemberType:: + visibility (Type const& o) + { + dispatch (o.visibility ()); + } + + void ValueMemberType:: + type (Type& o) + { + dispatch (o.type ()); + } + + void ValueMemberType:: + type (Type const& o) + { + dispatch (o.type ()); + } + + void ValueMemberType:: + post (Type&) + { + } + + void ValueMemberType:: + post (Type const&) + { + } + + // NamedValue + // + // + + void NamedValue:: + traverse (Type& o) + { + pre (o); + name (o); + value (o); + post (o); + } + + void NamedValue:: + traverse (Type const& o) + { + pre (o); + name (o); + value (o); + post (o); + } + + void NamedValue:: + pre (Type&) + { + } + + void NamedValue:: + pre (Type const&) + { + } + + void NamedValue:: + name (Type& o) + { + dispatch (o.name ()); + } + + void NamedValue:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void NamedValue:: + value (Type& o) + { + dispatch (o.value ()); + } + + void NamedValue:: + value (Type const& o) + { + dispatch (o.value ()); + } + + void NamedValue:: + post (Type&) + { + } + + void NamedValue:: + post (Type const&) + { + } + + // SequenceType + // + // + + void SequenceType:: + traverse (Type& o) + { + pre (o); + if (o.bound_p ()) bound (o); + else bound_none (o); + elementType (o); + post (o); + } + + void SequenceType:: + traverse (Type const& o) + { + pre (o); + if (o.bound_p ()) bound (o); + else bound_none (o); + elementType (o); + post (o); + } + + void SequenceType:: + pre (Type&) + { + } + + void SequenceType:: + pre (Type const&) + { + } + + void SequenceType:: + bound (Type& o) + { + dispatch (o.bound ()); + } + + void SequenceType:: + bound (Type const& o) + { + dispatch (o.bound ()); + } + + void SequenceType:: + bound_none (Type&) + { + } + + void SequenceType:: + bound_none (Type const&) + { + } + + void SequenceType:: + elementType (Type& o) + { + dispatch (o.elementType ()); + } + + void SequenceType:: + elementType (Type const& o) + { + dispatch (o.elementType ()); + } + + void SequenceType:: + post (Type&) + { + } + + void SequenceType:: + post (Type const&) + { + } + + // Any + // + // + + void Any:: + traverse (Type& o) + { + pre (o); + type (o); + value (o); + post (o); + } + + void Any:: + traverse (Type const& o) + { + pre (o); + type (o); + value (o); + post (o); + } + + void Any:: + pre (Type&) + { + } + + void Any:: + pre (Type const&) + { + } + + void Any:: + type (Type& o) + { + dispatch (o.type ()); + } + + void Any:: + type (Type const& o) + { + dispatch (o.type ()); + } + + void Any:: + value (Type& o) + { + dispatch (o.value ()); + } + + void Any:: + value (Type const& o) + { + dispatch (o.value ()); + } + + void Any:: + post (Type&) + { + } + + void Any:: + post (Type const&) + { + } + + // Property + // + // + + void Property:: + traverse (Type& o) + { + pre (o); + name (o); + value (o); + post (o); + } + + void Property:: + traverse (Type const& o) + { + pre (o); + name (o); + value (o); + post (o); + } + + void Property:: + pre (Type&) + { + } + + void Property:: + pre (Type const&) + { + } + + void Property:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Property:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Property:: + value (Type& o) + { + dispatch (o.value ()); + } + + void Property:: + value (Type const& o) + { + dispatch (o.value ()); + } + + void Property:: + post (Type&) + { + } + + void Property:: + post (Type const&) + { + } + + // SatisfierProperty + // + // + + void SatisfierProperty:: + traverse (Type& o) + { + pre (o); + name (o); + kind (o); + dynamic (o); + value (o); + post (o); + } + + void SatisfierProperty:: + traverse (Type const& o) + { + pre (o); + name (o); + kind (o); + dynamic (o); + value (o); + post (o); + } + + void SatisfierProperty:: + pre (Type&) + { + } + + void SatisfierProperty:: + pre (Type const&) + { + } + + void SatisfierProperty:: + name (Type& o) + { + dispatch (o.name ()); + } + + void SatisfierProperty:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void SatisfierProperty:: + kind (Type& o) + { + dispatch (o.kind ()); + } + + void SatisfierProperty:: + kind (Type const& o) + { + dispatch (o.kind ()); + } + + void SatisfierProperty:: + dynamic (Type& o) + { + dispatch (o.dynamic ()); + } + + void SatisfierProperty:: + dynamic (Type const& o) + { + dispatch (o.dynamic ()); + } + + void SatisfierProperty:: + value (Type& o) + { + dispatch (o.value ()); + } + + void SatisfierProperty:: + value (Type const& o) + { + dispatch (o.value ()); + } + + void SatisfierProperty:: + post (Type&) + { + } + + void SatisfierProperty:: + post (Type const&) + { + } + + // Resource + // + // + + void Resource:: + traverse (Type& o) + { + pre (o); + name (o); + resourceType (o); + property (o); + post (o); + } + + void Resource:: + traverse (Type const& o) + { + pre (o); + name (o); + resourceType (o); + property (o); + post (o); + } + + void Resource:: + pre (Type&) + { + } + + void Resource:: + pre (Type const&) + { + } + + void Resource:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Resource:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Resource:: + resourceType (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Resource::resourceType_iterator b (o.begin_resourceType()), e (o.end_resourceType()); + + if (b != e) + { + resourceType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resourceType_next (o); + } + + resourceType_post (o); + } + } + + void Resource:: + resourceType (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Resource::resourceType_const_iterator b (o.begin_resourceType()), e (o.end_resourceType()); + + if (b != e) + { + resourceType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resourceType_next (o); + } + + resourceType_post (o); + } + } + + void Resource:: + resourceType_pre (Type&) + { + } + + void Resource:: + resourceType_pre (Type const&) + { + } + + void Resource:: + resourceType_next (Type&) + { + } + + void Resource:: + resourceType_next (Type const&) + { + } + + void Resource:: + resourceType_post (Type&) + { + } + + void Resource:: + resourceType_post (Type const&) + { + } + + void Resource:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Resource::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void Resource:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Resource::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void Resource:: + property_pre (Type&) + { + } + + void Resource:: + property_pre (Type const&) + { + } + + void Resource:: + property_next (Type&) + { + } + + void Resource:: + property_next (Type const&) + { + } + + void Resource:: + property_post (Type&) + { + } + + void Resource:: + property_post (Type const&) + { + } + + void Resource:: + property_none (Type&) + { + } + + void Resource:: + property_none (Type const&) + { + } + + void Resource:: + post (Type&) + { + } + + void Resource:: + post (Type const&) + { + } + + // Requirement + // + // + + void Requirement:: + traverse (Type& o) + { + pre (o); + name (o); + resourceType (o); + property (o); + post (o); + } + + void Requirement:: + traverse (Type const& o) + { + pre (o); + name (o); + resourceType (o); + property (o); + post (o); + } + + void Requirement:: + pre (Type&) + { + } + + void Requirement:: + pre (Type const&) + { + } + + void Requirement:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Requirement:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Requirement:: + resourceType (Type& o) + { + dispatch (o.resourceType ()); + } + + void Requirement:: + resourceType (Type const& o) + { + dispatch (o.resourceType ()); + } + + void Requirement:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Requirement::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void Requirement:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Requirement::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void Requirement:: + property_pre (Type&) + { + } + + void Requirement:: + property_pre (Type const&) + { + } + + void Requirement:: + property_next (Type&) + { + } + + void Requirement:: + property_next (Type const&) + { + } + + void Requirement:: + property_post (Type&) + { + } + + void Requirement:: + property_post (Type const&) + { + } + + void Requirement:: + property_none (Type&) + { + } + + void Requirement:: + property_none (Type const&) + { + } + + void Requirement:: + post (Type&) + { + } + + void Requirement:: + post (Type const&) + { + } + + // ResourceDeploymentDescription + // + // + + void ResourceDeploymentDescription:: + traverse (Type& o) + { + pre (o); + requirementName (o); + resourceName (o); + property (o); + post (o); + } + + void ResourceDeploymentDescription:: + traverse (Type const& o) + { + pre (o); + requirementName (o); + resourceName (o); + property (o); + post (o); + } + + void ResourceDeploymentDescription:: + pre (Type&) + { + } + + void ResourceDeploymentDescription:: + pre (Type const&) + { + } + + void ResourceDeploymentDescription:: + requirementName (Type& o) + { + dispatch (o.requirementName ()); + } + + void ResourceDeploymentDescription:: + requirementName (Type const& o) + { + dispatch (o.requirementName ()); + } + + void ResourceDeploymentDescription:: + resourceName (Type& o) + { + dispatch (o.resourceName ()); + } + + void ResourceDeploymentDescription:: + resourceName (Type const& o) + { + dispatch (o.resourceName ()); + } + + void ResourceDeploymentDescription:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ResourceDeploymentDescription::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ResourceDeploymentDescription:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ResourceDeploymentDescription::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ResourceDeploymentDescription:: + property_pre (Type&) + { + } + + void ResourceDeploymentDescription:: + property_pre (Type const&) + { + } + + void ResourceDeploymentDescription:: + property_next (Type&) + { + } + + void ResourceDeploymentDescription:: + property_next (Type const&) + { + } + + void ResourceDeploymentDescription:: + property_post (Type&) + { + } + + void ResourceDeploymentDescription:: + property_post (Type const&) + { + } + + void ResourceDeploymentDescription:: + property_none (Type&) + { + } + + void ResourceDeploymentDescription:: + property_none (Type const&) + { + } + + void ResourceDeploymentDescription:: + post (Type&) + { + } + + void ResourceDeploymentDescription:: + post (Type const&) + { + } + + // ArtifactDeploymentDescription + // + // + + void ArtifactDeploymentDescription:: + traverse (Type& o) + { + pre (o); + name (o); + source (o); + node (o); + location (o); + execParameter (o); + deployRequirement (o); + deployedResource (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void ArtifactDeploymentDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + source (o); + node (o); + location (o); + execParameter (o); + deployRequirement (o); + deployedResource (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void ArtifactDeploymentDescription:: + pre (Type&) + { + } + + void ArtifactDeploymentDescription:: + pre (Type const&) + { + } + + void ArtifactDeploymentDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void ArtifactDeploymentDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void ArtifactDeploymentDescription:: + source (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::source_iterator b (o.begin_source()), e (o.end_source()); + + if (b != e) + { + source_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) source_next (o); + } + + source_post (o); + } + + else source_none (o); + } + + void ArtifactDeploymentDescription:: + source (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::source_const_iterator b (o.begin_source()), e (o.end_source()); + + if (b != e) + { + source_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) source_next (o); + } + + source_post (o); + } + + else source_none (o); + } + + void ArtifactDeploymentDescription:: + source_pre (Type&) + { + } + + void ArtifactDeploymentDescription:: + source_pre (Type const&) + { + } + + void ArtifactDeploymentDescription:: + source_next (Type&) + { + } + + void ArtifactDeploymentDescription:: + source_next (Type const&) + { + } + + void ArtifactDeploymentDescription:: + source_post (Type&) + { + } + + void ArtifactDeploymentDescription:: + source_post (Type const&) + { + } + + void ArtifactDeploymentDescription:: + source_none (Type&) + { + } + + void ArtifactDeploymentDescription:: + source_none (Type const&) + { + } + + void ArtifactDeploymentDescription:: + node (Type& o) + { + dispatch (o.node ()); + } + + void ArtifactDeploymentDescription:: + node (Type const& o) + { + dispatch (o.node ()); + } + + void ArtifactDeploymentDescription:: + location (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::location_iterator b (o.begin_location()), e (o.end_location()); + + if (b != e) + { + location_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) location_next (o); + } + + location_post (o); + } + + else location_none (o); + } + + void ArtifactDeploymentDescription:: + location (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::location_const_iterator b (o.begin_location()), e (o.end_location()); + + if (b != e) + { + location_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) location_next (o); + } + + location_post (o); + } + + else location_none (o); + } + + void ArtifactDeploymentDescription:: + location_pre (Type&) + { + } + + void ArtifactDeploymentDescription:: + location_pre (Type const&) + { + } + + void ArtifactDeploymentDescription:: + location_next (Type&) + { + } + + void ArtifactDeploymentDescription:: + location_next (Type const&) + { + } + + void ArtifactDeploymentDescription:: + location_post (Type&) + { + } + + void ArtifactDeploymentDescription:: + location_post (Type const&) + { + } + + void ArtifactDeploymentDescription:: + location_none (Type&) + { + } + + void ArtifactDeploymentDescription:: + location_none (Type const&) + { + } + + void ArtifactDeploymentDescription:: + execParameter (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::execParameter_iterator b (o.begin_execParameter()), e (o.end_execParameter()); + + if (b != e) + { + execParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) execParameter_next (o); + } + + execParameter_post (o); + } + + else execParameter_none (o); + } + + void ArtifactDeploymentDescription:: + execParameter (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::execParameter_const_iterator b (o.begin_execParameter()), e (o.end_execParameter()); + + if (b != e) + { + execParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) execParameter_next (o); + } + + execParameter_post (o); + } + + else execParameter_none (o); + } + + void ArtifactDeploymentDescription:: + execParameter_pre (Type&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_pre (Type const&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_next (Type&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_next (Type const&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_post (Type&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_post (Type const&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_none (Type&) + { + } + + void ArtifactDeploymentDescription:: + execParameter_none (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void ArtifactDeploymentDescription:: + deployRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void ArtifactDeploymentDescription:: + deployRequirement_pre (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_pre (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_next (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_next (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_post (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_post (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_none (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployRequirement_none (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::deployedResource_iterator b (o.begin_deployedResource()), e (o.end_deployedResource()); + + if (b != e) + { + deployedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployedResource_next (o); + } + + deployedResource_post (o); + } + + else deployedResource_none (o); + } + + void ArtifactDeploymentDescription:: + deployedResource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ArtifactDeploymentDescription::deployedResource_const_iterator b (o.begin_deployedResource()), e (o.end_deployedResource()); + + if (b != e) + { + deployedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployedResource_next (o); + } + + deployedResource_post (o); + } + + else deployedResource_none (o); + } + + void ArtifactDeploymentDescription:: + deployedResource_pre (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_pre (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_next (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_next (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_post (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_post (Type const&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_none (Type&) + { + } + + void ArtifactDeploymentDescription:: + deployedResource_none (Type const&) + { + } + + void ArtifactDeploymentDescription:: + id (Type& o) + { + dispatch (o.id ()); + } + + void ArtifactDeploymentDescription:: + id (Type const& o) + { + dispatch (o.id ()); + } + + void ArtifactDeploymentDescription:: + id_none (Type&) + { + } + + void ArtifactDeploymentDescription:: + id_none (Type const&) + { + } + + void ArtifactDeploymentDescription:: + post (Type&) + { + } + + void ArtifactDeploymentDescription:: + post (Type const&) + { + } + + // MonolithicDeploymentDescription + // + // + + void MonolithicDeploymentDescription:: + traverse (Type& o) + { + pre (o); + name (o); + source (o); + artifact (o); + execParameter (o); + deployRequirement (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void MonolithicDeploymentDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + source (o); + artifact (o); + execParameter (o); + deployRequirement (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void MonolithicDeploymentDescription:: + pre (Type&) + { + } + + void MonolithicDeploymentDescription:: + pre (Type const&) + { + } + + void MonolithicDeploymentDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void MonolithicDeploymentDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void MonolithicDeploymentDescription:: + source (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::source_iterator b (o.begin_source()), e (o.end_source()); + + if (b != e) + { + source_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) source_next (o); + } + + source_post (o); + } + + else source_none (o); + } + + void MonolithicDeploymentDescription:: + source (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::source_const_iterator b (o.begin_source()), e (o.end_source()); + + if (b != e) + { + source_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) source_next (o); + } + + source_post (o); + } + + else source_none (o); + } + + void MonolithicDeploymentDescription:: + source_pre (Type&) + { + } + + void MonolithicDeploymentDescription:: + source_pre (Type const&) + { + } + + void MonolithicDeploymentDescription:: + source_next (Type&) + { + } + + void MonolithicDeploymentDescription:: + source_next (Type const&) + { + } + + void MonolithicDeploymentDescription:: + source_post (Type&) + { + } + + void MonolithicDeploymentDescription:: + source_post (Type const&) + { + } + + void MonolithicDeploymentDescription:: + source_none (Type&) + { + } + + void MonolithicDeploymentDescription:: + source_none (Type const&) + { + } + + void MonolithicDeploymentDescription:: + artifact (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::artifact_iterator b (o.begin_artifact()), e (o.end_artifact()); + + if (b != e) + { + artifact_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) artifact_next (o); + } + + artifact_post (o); + } + + else artifact_none (o); + } + + void MonolithicDeploymentDescription:: + artifact (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::artifact_const_iterator b (o.begin_artifact()), e (o.end_artifact()); + + if (b != e) + { + artifact_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) artifact_next (o); + } + + artifact_post (o); + } + + else artifact_none (o); + } + + void MonolithicDeploymentDescription:: + artifact_pre (Type&) + { + } + + void MonolithicDeploymentDescription:: + artifact_pre (Type const&) + { + } + + void MonolithicDeploymentDescription:: + artifact_next (Type&) + { + } + + void MonolithicDeploymentDescription:: + artifact_next (Type const&) + { + } + + void MonolithicDeploymentDescription:: + artifact_post (Type&) + { + } + + void MonolithicDeploymentDescription:: + artifact_post (Type const&) + { + } + + void MonolithicDeploymentDescription:: + artifact_none (Type&) + { + } + + void MonolithicDeploymentDescription:: + artifact_none (Type const&) + { + } + + void MonolithicDeploymentDescription:: + execParameter (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::execParameter_iterator b (o.begin_execParameter()), e (o.end_execParameter()); + + if (b != e) + { + execParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) execParameter_next (o); + } + + execParameter_post (o); + } + + else execParameter_none (o); + } + + void MonolithicDeploymentDescription:: + execParameter (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::execParameter_const_iterator b (o.begin_execParameter()), e (o.end_execParameter()); + + if (b != e) + { + execParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) execParameter_next (o); + } + + execParameter_post (o); + } + + else execParameter_none (o); + } + + void MonolithicDeploymentDescription:: + execParameter_pre (Type&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_pre (Type const&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_next (Type&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_next (Type const&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_post (Type&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_post (Type const&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_none (Type&) + { + } + + void MonolithicDeploymentDescription:: + execParameter_none (Type const&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void MonolithicDeploymentDescription:: + deployRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicDeploymentDescription::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void MonolithicDeploymentDescription:: + deployRequirement_pre (Type&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_pre (Type const&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_next (Type&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_next (Type const&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_post (Type&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_post (Type const&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_none (Type&) + { + } + + void MonolithicDeploymentDescription:: + deployRequirement_none (Type const&) + { + } + + void MonolithicDeploymentDescription:: + id (Type& o) + { + dispatch (o.id ()); + } + + void MonolithicDeploymentDescription:: + id (Type const& o) + { + dispatch (o.id ()); + } + + void MonolithicDeploymentDescription:: + id_none (Type&) + { + } + + void MonolithicDeploymentDescription:: + id_none (Type const&) + { + } + + void MonolithicDeploymentDescription:: + post (Type&) + { + } + + void MonolithicDeploymentDescription:: + post (Type const&) + { + } + + // InstanceResourceDeploymentDescription + // + // + + void InstanceResourceDeploymentDescription:: + traverse (Type& o) + { + pre (o); + resourceUsage (o); + requirementName (o); + resourceName (o); + property (o); + post (o); + } + + void InstanceResourceDeploymentDescription:: + traverse (Type const& o) + { + pre (o); + resourceUsage (o); + requirementName (o); + resourceName (o); + property (o); + post (o); + } + + void InstanceResourceDeploymentDescription:: + pre (Type&) + { + } + + void InstanceResourceDeploymentDescription:: + pre (Type const&) + { + } + + void InstanceResourceDeploymentDescription:: + resourceUsage (Type& o) + { + dispatch (o.resourceUsage ()); + } + + void InstanceResourceDeploymentDescription:: + resourceUsage (Type const& o) + { + dispatch (o.resourceUsage ()); + } + + void InstanceResourceDeploymentDescription:: + requirementName (Type& o) + { + dispatch (o.requirementName ()); + } + + void InstanceResourceDeploymentDescription:: + requirementName (Type const& o) + { + dispatch (o.requirementName ()); + } + + void InstanceResourceDeploymentDescription:: + resourceName (Type& o) + { + dispatch (o.resourceName ()); + } + + void InstanceResourceDeploymentDescription:: + resourceName (Type const& o) + { + dispatch (o.resourceName ()); + } + + void InstanceResourceDeploymentDescription:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void InstanceResourceDeploymentDescription:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void InstanceResourceDeploymentDescription:: + property_pre (Type&) + { + } + + void InstanceResourceDeploymentDescription:: + property_pre (Type const&) + { + } + + void InstanceResourceDeploymentDescription:: + property_next (Type&) + { + } + + void InstanceResourceDeploymentDescription:: + property_next (Type const&) + { + } + + void InstanceResourceDeploymentDescription:: + property_post (Type&) + { + } + + void InstanceResourceDeploymentDescription:: + property_post (Type const&) + { + } + + void InstanceResourceDeploymentDescription:: + property_none (Type&) + { + } + + void InstanceResourceDeploymentDescription:: + property_none (Type const&) + { + } + + void InstanceResourceDeploymentDescription:: + post (Type&) + { + } + + void InstanceResourceDeploymentDescription:: + post (Type const&) + { + } + + // InstanceDeploymentDescription + // + // + + void InstanceDeploymentDescription:: + traverse (Type& o) + { + pre (o); + name (o); + node (o); + source (o); + implementation (o); + configProperty (o); + deployedResource (o); + if (o.deployedSharedResource_p ()) deployedSharedResource (o); + else deployedSharedResource_none (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void InstanceDeploymentDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + node (o); + source (o); + implementation (o); + configProperty (o); + deployedResource (o); + if (o.deployedSharedResource_p ()) deployedSharedResource (o); + else deployedSharedResource_none (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void InstanceDeploymentDescription:: + pre (Type&) + { + } + + void InstanceDeploymentDescription:: + pre (Type const&) + { + } + + void InstanceDeploymentDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void InstanceDeploymentDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void InstanceDeploymentDescription:: + node (Type& o) + { + dispatch (o.node ()); + } + + void InstanceDeploymentDescription:: + node (Type const& o) + { + dispatch (o.node ()); + } + + void InstanceDeploymentDescription:: + source (Type& o) + { + dispatch (o.source ()); + } + + void InstanceDeploymentDescription:: + source (Type const& o) + { + dispatch (o.source ()); + } + + void InstanceDeploymentDescription:: + implementation (Type& o) + { + dispatch (o.implementation ()); + } + + void InstanceDeploymentDescription:: + implementation (Type const& o) + { + dispatch (o.implementation ()); + } + + void InstanceDeploymentDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::InstanceDeploymentDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void InstanceDeploymentDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::InstanceDeploymentDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void InstanceDeploymentDescription:: + configProperty_pre (Type&) + { + } + + void InstanceDeploymentDescription:: + configProperty_pre (Type const&) + { + } + + void InstanceDeploymentDescription:: + configProperty_next (Type&) + { + } + + void InstanceDeploymentDescription:: + configProperty_next (Type const&) + { + } + + void InstanceDeploymentDescription:: + configProperty_post (Type&) + { + } + + void InstanceDeploymentDescription:: + configProperty_post (Type const&) + { + } + + void InstanceDeploymentDescription:: + configProperty_none (Type&) + { + } + + void InstanceDeploymentDescription:: + configProperty_none (Type const&) + { + } + + void InstanceDeploymentDescription:: + deployedResource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::InstanceDeploymentDescription::deployedResource_iterator b (o.begin_deployedResource()), e (o.end_deployedResource()); + + if (b != e) + { + deployedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployedResource_next (o); + } + + deployedResource_post (o); + } + + else deployedResource_none (o); + } + + void InstanceDeploymentDescription:: + deployedResource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::InstanceDeploymentDescription::deployedResource_const_iterator b (o.begin_deployedResource()), e (o.end_deployedResource()); + + if (b != e) + { + deployedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployedResource_next (o); + } + + deployedResource_post (o); + } + + else deployedResource_none (o); + } + + void InstanceDeploymentDescription:: + deployedResource_pre (Type&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_pre (Type const&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_next (Type&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_next (Type const&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_post (Type&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_post (Type const&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_none (Type&) + { + } + + void InstanceDeploymentDescription:: + deployedResource_none (Type const&) + { + } + + void InstanceDeploymentDescription:: + deployedSharedResource (Type& o) + { + dispatch (o.deployedSharedResource ()); + } + + void InstanceDeploymentDescription:: + deployedSharedResource (Type const& o) + { + dispatch (o.deployedSharedResource ()); + } + + void InstanceDeploymentDescription:: + deployedSharedResource_none (Type&) + { + } + + void InstanceDeploymentDescription:: + deployedSharedResource_none (Type const&) + { + } + + void InstanceDeploymentDescription:: + id (Type& o) + { + dispatch (o.id ()); + } + + void InstanceDeploymentDescription:: + id (Type const& o) + { + dispatch (o.id ()); + } + + void InstanceDeploymentDescription:: + id_none (Type&) + { + } + + void InstanceDeploymentDescription:: + id_none (Type const&) + { + } + + void InstanceDeploymentDescription:: + post (Type&) + { + } + + void InstanceDeploymentDescription:: + post (Type const&) + { + } + + // ComponentPortDescription + // + // + + void ComponentPortDescription:: + traverse (Type& o) + { + pre (o); + name (o); + if (o.specificType_p ()) specificType (o); + else specificType_none (o); + supportedType (o); + provider (o); + exclusiveProvider (o); + exclusiveUser (o); + optional (o); + kind (o); + templateParam (o); + post (o); + } + + void ComponentPortDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + if (o.specificType_p ()) specificType (o); + else specificType_none (o); + supportedType (o); + provider (o); + exclusiveProvider (o); + exclusiveUser (o); + optional (o); + kind (o); + templateParam (o); + post (o); + } + + void ComponentPortDescription:: + pre (Type&) + { + } + + void ComponentPortDescription:: + pre (Type const&) + { + } + + void ComponentPortDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void ComponentPortDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void ComponentPortDescription:: + specificType (Type& o) + { + dispatch (o.specificType ()); + } + + void ComponentPortDescription:: + specificType (Type const& o) + { + dispatch (o.specificType ()); + } + + void ComponentPortDescription:: + specificType_none (Type&) + { + } + + void ComponentPortDescription:: + specificType_none (Type const&) + { + } + + void ComponentPortDescription:: + supportedType (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPortDescription::supportedType_iterator b (o.begin_supportedType()), e (o.end_supportedType()); + + if (b != e) + { + supportedType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) supportedType_next (o); + } + + supportedType_post (o); + } + + else supportedType_none (o); + } + + void ComponentPortDescription:: + supportedType (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPortDescription::supportedType_const_iterator b (o.begin_supportedType()), e (o.end_supportedType()); + + if (b != e) + { + supportedType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) supportedType_next (o); + } + + supportedType_post (o); + } + + else supportedType_none (o); + } + + void ComponentPortDescription:: + supportedType_pre (Type&) + { + } + + void ComponentPortDescription:: + supportedType_pre (Type const&) + { + } + + void ComponentPortDescription:: + supportedType_next (Type&) + { + } + + void ComponentPortDescription:: + supportedType_next (Type const&) + { + } + + void ComponentPortDescription:: + supportedType_post (Type&) + { + } + + void ComponentPortDescription:: + supportedType_post (Type const&) + { + } + + void ComponentPortDescription:: + supportedType_none (Type&) + { + } + + void ComponentPortDescription:: + supportedType_none (Type const&) + { + } + + void ComponentPortDescription:: + provider (Type& o) + { + dispatch (o.provider ()); + } + + void ComponentPortDescription:: + provider (Type const& o) + { + dispatch (o.provider ()); + } + + void ComponentPortDescription:: + exclusiveProvider (Type& o) + { + dispatch (o.exclusiveProvider ()); + } + + void ComponentPortDescription:: + exclusiveProvider (Type const& o) + { + dispatch (o.exclusiveProvider ()); + } + + void ComponentPortDescription:: + exclusiveUser (Type& o) + { + dispatch (o.exclusiveUser ()); + } + + void ComponentPortDescription:: + exclusiveUser (Type const& o) + { + dispatch (o.exclusiveUser ()); + } + + void ComponentPortDescription:: + optional (Type& o) + { + dispatch (o.optional ()); + } + + void ComponentPortDescription:: + optional (Type const& o) + { + dispatch (o.optional ()); + } + + void ComponentPortDescription:: + kind (Type& o) + { + dispatch (o.kind ()); + } + + void ComponentPortDescription:: + kind (Type const& o) + { + dispatch (o.kind ()); + } + + void ComponentPortDescription:: + templateParam (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPortDescription::templateParam_iterator b (o.begin_templateParam()), e (o.end_templateParam()); + + if (b != e) + { + templateParam_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) templateParam_next (o); + } + + templateParam_post (o); + } + + else templateParam_none (o); + } + + void ComponentPortDescription:: + templateParam (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPortDescription::templateParam_const_iterator b (o.begin_templateParam()), e (o.end_templateParam()); + + if (b != e) + { + templateParam_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) templateParam_next (o); + } + + templateParam_post (o); + } + + else templateParam_none (o); + } + + void ComponentPortDescription:: + templateParam_pre (Type&) + { + } + + void ComponentPortDescription:: + templateParam_pre (Type const&) + { + } + + void ComponentPortDescription:: + templateParam_next (Type&) + { + } + + void ComponentPortDescription:: + templateParam_next (Type const&) + { + } + + void ComponentPortDescription:: + templateParam_post (Type&) + { + } + + void ComponentPortDescription:: + templateParam_post (Type const&) + { + } + + void ComponentPortDescription:: + templateParam_none (Type&) + { + } + + void ComponentPortDescription:: + templateParam_none (Type const&) + { + } + + void ComponentPortDescription:: + post (Type&) + { + } + + void ComponentPortDescription:: + post (Type const&) + { + } + + // ComponentPropertyDescription + // + // + + void ComponentPropertyDescription:: + traverse (Type& o) + { + pre (o); + name (o); + type (o); + post (o); + } + + void ComponentPropertyDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + type (o); + post (o); + } + + void ComponentPropertyDescription:: + pre (Type&) + { + } + + void ComponentPropertyDescription:: + pre (Type const&) + { + } + + void ComponentPropertyDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void ComponentPropertyDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void ComponentPropertyDescription:: + type (Type& o) + { + dispatch (o.type ()); + } + + void ComponentPropertyDescription:: + type (Type const& o) + { + dispatch (o.type ()); + } + + void ComponentPropertyDescription:: + post (Type&) + { + } + + void ComponentPropertyDescription:: + post (Type const&) + { + } + + // ComponentExternalPortEndpoint + // + // + + void ComponentExternalPortEndpoint:: + traverse (Type& o) + { + pre (o); + portName (o); + post (o); + } + + void ComponentExternalPortEndpoint:: + traverse (Type const& o) + { + pre (o); + portName (o); + post (o); + } + + void ComponentExternalPortEndpoint:: + pre (Type&) + { + } + + void ComponentExternalPortEndpoint:: + pre (Type const&) + { + } + + void ComponentExternalPortEndpoint:: + portName (Type& o) + { + dispatch (o.portName ()); + } + + void ComponentExternalPortEndpoint:: + portName (Type const& o) + { + dispatch (o.portName ()); + } + + void ComponentExternalPortEndpoint:: + post (Type&) + { + } + + void ComponentExternalPortEndpoint:: + post (Type const&) + { + } + + // PlanSubcomponentPortEndpoint + // + // + + void PlanSubcomponentPortEndpoint:: + traverse (Type& o) + { + pre (o); + portName (o); + if (o.provider_p ()) provider (o); + else provider_none (o); + kind (o); + instance (o); + post (o); + } + + void PlanSubcomponentPortEndpoint:: + traverse (Type const& o) + { + pre (o); + portName (o); + if (o.provider_p ()) provider (o); + else provider_none (o); + kind (o); + instance (o); + post (o); + } + + void PlanSubcomponentPortEndpoint:: + pre (Type&) + { + } + + void PlanSubcomponentPortEndpoint:: + pre (Type const&) + { + } + + void PlanSubcomponentPortEndpoint:: + portName (Type& o) + { + dispatch (o.portName ()); + } + + void PlanSubcomponentPortEndpoint:: + portName (Type const& o) + { + dispatch (o.portName ()); + } + + void PlanSubcomponentPortEndpoint:: + provider (Type& o) + { + dispatch (o.provider ()); + } + + void PlanSubcomponentPortEndpoint:: + provider (Type const& o) + { + dispatch (o.provider ()); + } + + void PlanSubcomponentPortEndpoint:: + provider_none (Type&) + { + } + + void PlanSubcomponentPortEndpoint:: + provider_none (Type const&) + { + } + + void PlanSubcomponentPortEndpoint:: + kind (Type& o) + { + dispatch (o.kind ()); + } + + void PlanSubcomponentPortEndpoint:: + kind (Type const& o) + { + dispatch (o.kind ()); + } + + void PlanSubcomponentPortEndpoint:: + instance (Type& o) + { + dispatch (o.instance ()); + } + + void PlanSubcomponentPortEndpoint:: + instance (Type const& o) + { + dispatch (o.instance ()); + } + + void PlanSubcomponentPortEndpoint:: + post (Type&) + { + } + + void PlanSubcomponentPortEndpoint:: + post (Type const&) + { + } + + // ExternalReferenceEndpoint + // + // + + void ExternalReferenceEndpoint:: + traverse (Type& o) + { + pre (o); + location (o); + provider (o); + if (o.portName_p ()) portName (o); + else portName_none (o); + supportedType (o); + post (o); + } + + void ExternalReferenceEndpoint:: + traverse (Type const& o) + { + pre (o); + location (o); + provider (o); + if (o.portName_p ()) portName (o); + else portName_none (o); + supportedType (o); + post (o); + } + + void ExternalReferenceEndpoint:: + pre (Type&) + { + } + + void ExternalReferenceEndpoint:: + pre (Type const&) + { + } + + void ExternalReferenceEndpoint:: + location (Type& o) + { + dispatch (o.location ()); + } + + void ExternalReferenceEndpoint:: + location (Type const& o) + { + dispatch (o.location ()); + } + + void ExternalReferenceEndpoint:: + provider (Type& o) + { + dispatch (o.provider ()); + } + + void ExternalReferenceEndpoint:: + provider (Type const& o) + { + dispatch (o.provider ()); + } + + void ExternalReferenceEndpoint:: + portName (Type& o) + { + dispatch (o.portName ()); + } + + void ExternalReferenceEndpoint:: + portName (Type const& o) + { + dispatch (o.portName ()); + } + + void ExternalReferenceEndpoint:: + portName_none (Type&) + { + } + + void ExternalReferenceEndpoint:: + portName_none (Type const&) + { + } + + void ExternalReferenceEndpoint:: + supportedType (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ExternalReferenceEndpoint::supportedType_iterator b (o.begin_supportedType()), e (o.end_supportedType()); + + if (b != e) + { + supportedType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) supportedType_next (o); + } + + supportedType_post (o); + } + + else supportedType_none (o); + } + + void ExternalReferenceEndpoint:: + supportedType (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ExternalReferenceEndpoint::supportedType_const_iterator b (o.begin_supportedType()), e (o.end_supportedType()); + + if (b != e) + { + supportedType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) supportedType_next (o); + } + + supportedType_post (o); + } + + else supportedType_none (o); + } + + void ExternalReferenceEndpoint:: + supportedType_pre (Type&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_pre (Type const&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_next (Type&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_next (Type const&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_post (Type&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_post (Type const&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_none (Type&) + { + } + + void ExternalReferenceEndpoint:: + supportedType_none (Type const&) + { + } + + void ExternalReferenceEndpoint:: + post (Type&) + { + } + + void ExternalReferenceEndpoint:: + post (Type const&) + { + } + + // ConnectionResourceDeploymentDescription + // + // + + void ConnectionResourceDeploymentDescription:: + traverse (Type& o) + { + pre (o); + targetName (o); + requirementName (o); + resourceName (o); + property (o); + post (o); + } + + void ConnectionResourceDeploymentDescription:: + traverse (Type const& o) + { + pre (o); + targetName (o); + requirementName (o); + resourceName (o); + property (o); + post (o); + } + + void ConnectionResourceDeploymentDescription:: + pre (Type&) + { + } + + void ConnectionResourceDeploymentDescription:: + pre (Type const&) + { + } + + void ConnectionResourceDeploymentDescription:: + targetName (Type& o) + { + dispatch (o.targetName ()); + } + + void ConnectionResourceDeploymentDescription:: + targetName (Type const& o) + { + dispatch (o.targetName ()); + } + + void ConnectionResourceDeploymentDescription:: + requirementName (Type& o) + { + dispatch (o.requirementName ()); + } + + void ConnectionResourceDeploymentDescription:: + requirementName (Type const& o) + { + dispatch (o.requirementName ()); + } + + void ConnectionResourceDeploymentDescription:: + resourceName (Type& o) + { + dispatch (o.resourceName ()); + } + + void ConnectionResourceDeploymentDescription:: + resourceName (Type const& o) + { + dispatch (o.resourceName ()); + } + + void ConnectionResourceDeploymentDescription:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ConnectionResourceDeploymentDescription:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ConnectionResourceDeploymentDescription:: + property_pre (Type&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_pre (Type const&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_next (Type&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_next (Type const&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_post (Type&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_post (Type const&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_none (Type&) + { + } + + void ConnectionResourceDeploymentDescription:: + property_none (Type const&) + { + } + + void ConnectionResourceDeploymentDescription:: + post (Type&) + { + } + + void ConnectionResourceDeploymentDescription:: + post (Type const&) + { + } + + // PlanConnectionDescription + // + // + + void PlanConnectionDescription:: + traverse (Type& o) + { + pre (o); + name (o); + if (o.source_p ()) source (o); + else source_none (o); + deployRequirement (o); + externalEndpoint (o); + internalEndpoint (o); + externalReference (o); + deployedResource (o); + post (o); + } + + void PlanConnectionDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + if (o.source_p ()) source (o); + else source_none (o); + deployRequirement (o); + externalEndpoint (o); + internalEndpoint (o); + externalReference (o); + deployedResource (o); + post (o); + } + + void PlanConnectionDescription:: + pre (Type&) + { + } + + void PlanConnectionDescription:: + pre (Type const&) + { + } + + void PlanConnectionDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void PlanConnectionDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void PlanConnectionDescription:: + source (Type& o) + { + dispatch (o.source ()); + } + + void PlanConnectionDescription:: + source (Type const& o) + { + dispatch (o.source ()); + } + + void PlanConnectionDescription:: + source_none (Type&) + { + } + + void PlanConnectionDescription:: + source_none (Type const&) + { + } + + void PlanConnectionDescription:: + deployRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void PlanConnectionDescription:: + deployRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void PlanConnectionDescription:: + deployRequirement_pre (Type&) + { + } + + void PlanConnectionDescription:: + deployRequirement_pre (Type const&) + { + } + + void PlanConnectionDescription:: + deployRequirement_next (Type&) + { + } + + void PlanConnectionDescription:: + deployRequirement_next (Type const&) + { + } + + void PlanConnectionDescription:: + deployRequirement_post (Type&) + { + } + + void PlanConnectionDescription:: + deployRequirement_post (Type const&) + { + } + + void PlanConnectionDescription:: + deployRequirement_none (Type&) + { + } + + void PlanConnectionDescription:: + deployRequirement_none (Type const&) + { + } + + void PlanConnectionDescription:: + externalEndpoint (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::externalEndpoint_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint()); + + if (b != e) + { + externalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalEndpoint_next (o); + } + + externalEndpoint_post (o); + } + + else externalEndpoint_none (o); + } + + void PlanConnectionDescription:: + externalEndpoint (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::externalEndpoint_const_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint()); + + if (b != e) + { + externalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalEndpoint_next (o); + } + + externalEndpoint_post (o); + } + + else externalEndpoint_none (o); + } + + void PlanConnectionDescription:: + externalEndpoint_pre (Type&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_pre (Type const&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_next (Type&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_next (Type const&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_post (Type&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_post (Type const&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_none (Type&) + { + } + + void PlanConnectionDescription:: + externalEndpoint_none (Type const&) + { + } + + void PlanConnectionDescription:: + internalEndpoint (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::internalEndpoint_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint()); + + if (b != e) + { + internalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) internalEndpoint_next (o); + } + + internalEndpoint_post (o); + } + + else internalEndpoint_none (o); + } + + void PlanConnectionDescription:: + internalEndpoint (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::internalEndpoint_const_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint()); + + if (b != e) + { + internalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) internalEndpoint_next (o); + } + + internalEndpoint_post (o); + } + + else internalEndpoint_none (o); + } + + void PlanConnectionDescription:: + internalEndpoint_pre (Type&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_pre (Type const&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_next (Type&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_next (Type const&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_post (Type&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_post (Type const&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_none (Type&) + { + } + + void PlanConnectionDescription:: + internalEndpoint_none (Type const&) + { + } + + void PlanConnectionDescription:: + externalReference (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::externalReference_iterator b (o.begin_externalReference()), e (o.end_externalReference()); + + if (b != e) + { + externalReference_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalReference_next (o); + } + + externalReference_post (o); + } + + else externalReference_none (o); + } + + void PlanConnectionDescription:: + externalReference (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::externalReference_const_iterator b (o.begin_externalReference()), e (o.end_externalReference()); + + if (b != e) + { + externalReference_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalReference_next (o); + } + + externalReference_post (o); + } + + else externalReference_none (o); + } + + void PlanConnectionDescription:: + externalReference_pre (Type&) + { + } + + void PlanConnectionDescription:: + externalReference_pre (Type const&) + { + } + + void PlanConnectionDescription:: + externalReference_next (Type&) + { + } + + void PlanConnectionDescription:: + externalReference_next (Type const&) + { + } + + void PlanConnectionDescription:: + externalReference_post (Type&) + { + } + + void PlanConnectionDescription:: + externalReference_post (Type const&) + { + } + + void PlanConnectionDescription:: + externalReference_none (Type&) + { + } + + void PlanConnectionDescription:: + externalReference_none (Type const&) + { + } + + void PlanConnectionDescription:: + deployedResource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::deployedResource_iterator b (o.begin_deployedResource()), e (o.end_deployedResource()); + + if (b != e) + { + deployedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployedResource_next (o); + } + + deployedResource_post (o); + } + + else deployedResource_none (o); + } + + void PlanConnectionDescription:: + deployedResource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanConnectionDescription::deployedResource_const_iterator b (o.begin_deployedResource()), e (o.end_deployedResource()); + + if (b != e) + { + deployedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployedResource_next (o); + } + + deployedResource_post (o); + } + + else deployedResource_none (o); + } + + void PlanConnectionDescription:: + deployedResource_pre (Type&) + { + } + + void PlanConnectionDescription:: + deployedResource_pre (Type const&) + { + } + + void PlanConnectionDescription:: + deployedResource_next (Type&) + { + } + + void PlanConnectionDescription:: + deployedResource_next (Type const&) + { + } + + void PlanConnectionDescription:: + deployedResource_post (Type&) + { + } + + void PlanConnectionDescription:: + deployedResource_post (Type const&) + { + } + + void PlanConnectionDescription:: + deployedResource_none (Type&) + { + } + + void PlanConnectionDescription:: + deployedResource_none (Type const&) + { + } + + void PlanConnectionDescription:: + post (Type&) + { + } + + void PlanConnectionDescription:: + post (Type const&) + { + } + + // ImplementationDependency + // + // + + void ImplementationDependency:: + traverse (Type& o) + { + pre (o); + requiredType (o); + post (o); + } + + void ImplementationDependency:: + traverse (Type const& o) + { + pre (o); + requiredType (o); + post (o); + } + + void ImplementationDependency:: + pre (Type&) + { + } + + void ImplementationDependency:: + pre (Type const&) + { + } + + void ImplementationDependency:: + requiredType (Type& o) + { + dispatch (o.requiredType ()); + } + + void ImplementationDependency:: + requiredType (Type const& o) + { + dispatch (o.requiredType ()); + } + + void ImplementationDependency:: + post (Type&) + { + } + + void ImplementationDependency:: + post (Type const&) + { + } + + // Capability + // + // + + void Capability:: + traverse (Type& o) + { + pre (o); + name (o); + resourceType (o); + property (o); + post (o); + } + + void Capability:: + traverse (Type const& o) + { + pre (o); + name (o); + resourceType (o); + property (o); + post (o); + } + + void Capability:: + pre (Type&) + { + } + + void Capability:: + pre (Type const&) + { + } + + void Capability:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Capability:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Capability:: + resourceType (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Capability::resourceType_iterator b (o.begin_resourceType()), e (o.end_resourceType()); + + if (b != e) + { + resourceType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resourceType_next (o); + } + + resourceType_post (o); + } + + else resourceType_none (o); + } + + void Capability:: + resourceType (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Capability::resourceType_const_iterator b (o.begin_resourceType()), e (o.end_resourceType()); + + if (b != e) + { + resourceType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resourceType_next (o); + } + + resourceType_post (o); + } + + else resourceType_none (o); + } + + void Capability:: + resourceType_pre (Type&) + { + } + + void Capability:: + resourceType_pre (Type const&) + { + } + + void Capability:: + resourceType_next (Type&) + { + } + + void Capability:: + resourceType_next (Type const&) + { + } + + void Capability:: + resourceType_post (Type&) + { + } + + void Capability:: + resourceType_post (Type const&) + { + } + + void Capability:: + resourceType_none (Type&) + { + } + + void Capability:: + resourceType_none (Type const&) + { + } + + void Capability:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Capability::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void Capability:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Capability::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void Capability:: + property_pre (Type&) + { + } + + void Capability:: + property_pre (Type const&) + { + } + + void Capability:: + property_next (Type&) + { + } + + void Capability:: + property_next (Type const&) + { + } + + void Capability:: + property_post (Type&) + { + } + + void Capability:: + property_post (Type const&) + { + } + + void Capability:: + property_none (Type&) + { + } + + void Capability:: + property_none (Type const&) + { + } + + void Capability:: + post (Type&) + { + } + + void Capability:: + post (Type const&) + { + } + + // ImplementationRequirement + // + // + + void ImplementationRequirement:: + traverse (Type& o) + { + pre (o); + if (o.resourceUsage_p ()) resourceUsage (o); + else resourceUsage_none (o); + if (o.resourcePort_p ()) resourcePort (o); + else resourcePort_none (o); + if (o.componentPort_p ()) componentPort (o); + else componentPort_none (o); + resourceType (o); + name (o); + property (o); + post (o); + } + + void ImplementationRequirement:: + traverse (Type const& o) + { + pre (o); + if (o.resourceUsage_p ()) resourceUsage (o); + else resourceUsage_none (o); + if (o.resourcePort_p ()) resourcePort (o); + else resourcePort_none (o); + if (o.componentPort_p ()) componentPort (o); + else componentPort_none (o); + resourceType (o); + name (o); + property (o); + post (o); + } + + void ImplementationRequirement:: + pre (Type&) + { + } + + void ImplementationRequirement:: + pre (Type const&) + { + } + + void ImplementationRequirement:: + resourceUsage (Type& o) + { + dispatch (o.resourceUsage ()); + } + + void ImplementationRequirement:: + resourceUsage (Type const& o) + { + dispatch (o.resourceUsage ()); + } + + void ImplementationRequirement:: + resourceUsage_none (Type&) + { + } + + void ImplementationRequirement:: + resourceUsage_none (Type const&) + { + } + + void ImplementationRequirement:: + resourcePort (Type& o) + { + dispatch (o.resourcePort ()); + } + + void ImplementationRequirement:: + resourcePort (Type const& o) + { + dispatch (o.resourcePort ()); + } + + void ImplementationRequirement:: + resourcePort_none (Type&) + { + } + + void ImplementationRequirement:: + resourcePort_none (Type const&) + { + } + + void ImplementationRequirement:: + componentPort (Type& o) + { + dispatch (o.componentPort ()); + } + + void ImplementationRequirement:: + componentPort (Type const& o) + { + dispatch (o.componentPort ()); + } + + void ImplementationRequirement:: + componentPort_none (Type&) + { + } + + void ImplementationRequirement:: + componentPort_none (Type const&) + { + } + + void ImplementationRequirement:: + resourceType (Type& o) + { + dispatch (o.resourceType ()); + } + + void ImplementationRequirement:: + resourceType (Type const& o) + { + dispatch (o.resourceType ()); + } + + void ImplementationRequirement:: + name (Type& o) + { + dispatch (o.name ()); + } + + void ImplementationRequirement:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void ImplementationRequirement:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationRequirement::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ImplementationRequirement:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationRequirement::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ImplementationRequirement:: + property_pre (Type&) + { + } + + void ImplementationRequirement:: + property_pre (Type const&) + { + } + + void ImplementationRequirement:: + property_next (Type&) + { + } + + void ImplementationRequirement:: + property_next (Type const&) + { + } + + void ImplementationRequirement:: + property_post (Type&) + { + } + + void ImplementationRequirement:: + property_post (Type const&) + { + } + + void ImplementationRequirement:: + property_none (Type&) + { + } + + void ImplementationRequirement:: + property_none (Type const&) + { + } + + void ImplementationRequirement:: + post (Type&) + { + } + + void ImplementationRequirement:: + post (Type const&) + { + } + + // SubcomponentPortEndpoint + // + // + + void SubcomponentPortEndpoint:: + traverse (Type& o) + { + pre (o); + portName (o); + instance (o); + post (o); + } + + void SubcomponentPortEndpoint:: + traverse (Type const& o) + { + pre (o); + portName (o); + instance (o); + post (o); + } + + void SubcomponentPortEndpoint:: + pre (Type&) + { + } + + void SubcomponentPortEndpoint:: + pre (Type const&) + { + } + + void SubcomponentPortEndpoint:: + portName (Type& o) + { + dispatch (o.portName ()); + } + + void SubcomponentPortEndpoint:: + portName (Type const& o) + { + dispatch (o.portName ()); + } + + void SubcomponentPortEndpoint:: + instance (Type& o) + { + dispatch (o.instance ()); + } + + void SubcomponentPortEndpoint:: + instance (Type const& o) + { + dispatch (o.instance ()); + } + + void SubcomponentPortEndpoint:: + post (Type&) + { + } + + void SubcomponentPortEndpoint:: + post (Type const&) + { + } + + // AssemblyConnectionDescription + // + // + + void AssemblyConnectionDescription:: + traverse (Type& o) + { + pre (o); + name (o); + deployRequirement (o); + internalEndpoint (o); + externalEndpoint (o); + externalReference (o); + post (o); + } + + void AssemblyConnectionDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + deployRequirement (o); + internalEndpoint (o); + externalEndpoint (o); + externalReference (o); + post (o); + } + + void AssemblyConnectionDescription:: + pre (Type&) + { + } + + void AssemblyConnectionDescription:: + pre (Type const&) + { + } + + void AssemblyConnectionDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void AssemblyConnectionDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void AssemblyConnectionDescription:: + deployRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void AssemblyConnectionDescription:: + deployRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void AssemblyConnectionDescription:: + deployRequirement_pre (Type&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_pre (Type const&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_next (Type&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_next (Type const&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_post (Type&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_post (Type const&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_none (Type&) + { + } + + void AssemblyConnectionDescription:: + deployRequirement_none (Type const&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::internalEndpoint_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint()); + + if (b != e) + { + internalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) internalEndpoint_next (o); + } + + internalEndpoint_post (o); + } + + else internalEndpoint_none (o); + } + + void AssemblyConnectionDescription:: + internalEndpoint (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::internalEndpoint_const_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint()); + + if (b != e) + { + internalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) internalEndpoint_next (o); + } + + internalEndpoint_post (o); + } + + else internalEndpoint_none (o); + } + + void AssemblyConnectionDescription:: + internalEndpoint_pre (Type&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_pre (Type const&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_next (Type&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_next (Type const&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_post (Type&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_post (Type const&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_none (Type&) + { + } + + void AssemblyConnectionDescription:: + internalEndpoint_none (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::externalEndpoint_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint()); + + if (b != e) + { + externalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalEndpoint_next (o); + } + + externalEndpoint_post (o); + } + + else externalEndpoint_none (o); + } + + void AssemblyConnectionDescription:: + externalEndpoint (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::externalEndpoint_const_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint()); + + if (b != e) + { + externalEndpoint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalEndpoint_next (o); + } + + externalEndpoint_post (o); + } + + else externalEndpoint_none (o); + } + + void AssemblyConnectionDescription:: + externalEndpoint_pre (Type&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_pre (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_next (Type&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_next (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_post (Type&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_post (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_none (Type&) + { + } + + void AssemblyConnectionDescription:: + externalEndpoint_none (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalReference (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::externalReference_iterator b (o.begin_externalReference()), e (o.end_externalReference()); + + if (b != e) + { + externalReference_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalReference_next (o); + } + + externalReference_post (o); + } + + else externalReference_none (o); + } + + void AssemblyConnectionDescription:: + externalReference (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyConnectionDescription::externalReference_const_iterator b (o.begin_externalReference()), e (o.end_externalReference()); + + if (b != e) + { + externalReference_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalReference_next (o); + } + + externalReference_post (o); + } + + else externalReference_none (o); + } + + void AssemblyConnectionDescription:: + externalReference_pre (Type&) + { + } + + void AssemblyConnectionDescription:: + externalReference_pre (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalReference_next (Type&) + { + } + + void AssemblyConnectionDescription:: + externalReference_next (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalReference_post (Type&) + { + } + + void AssemblyConnectionDescription:: + externalReference_post (Type const&) + { + } + + void AssemblyConnectionDescription:: + externalReference_none (Type&) + { + } + + void AssemblyConnectionDescription:: + externalReference_none (Type const&) + { + } + + void AssemblyConnectionDescription:: + post (Type&) + { + } + + void AssemblyConnectionDescription:: + post (Type const&) + { + } + + // PlanLocality + // + // + + void PlanLocality:: + traverse (Type& o) + { + pre (o); + constraint (o); + constrainedInstance (o); + post (o); + } + + void PlanLocality:: + traverse (Type const& o) + { + pre (o); + constraint (o); + constrainedInstance (o); + post (o); + } + + void PlanLocality:: + pre (Type&) + { + } + + void PlanLocality:: + pre (Type const&) + { + } + + void PlanLocality:: + constraint (Type& o) + { + dispatch (o.constraint ()); + } + + void PlanLocality:: + constraint (Type const& o) + { + dispatch (o.constraint ()); + } + + void PlanLocality:: + constrainedInstance (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanLocality::constrainedInstance_iterator b (o.begin_constrainedInstance()), e (o.end_constrainedInstance()); + + if (b != e) + { + constrainedInstance_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) constrainedInstance_next (o); + } + + constrainedInstance_post (o); + } + } + + void PlanLocality:: + constrainedInstance (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanLocality::constrainedInstance_const_iterator b (o.begin_constrainedInstance()), e (o.end_constrainedInstance()); + + if (b != e) + { + constrainedInstance_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) constrainedInstance_next (o); + } + + constrainedInstance_post (o); + } + } + + void PlanLocality:: + constrainedInstance_pre (Type&) + { + } + + void PlanLocality:: + constrainedInstance_pre (Type const&) + { + } + + void PlanLocality:: + constrainedInstance_next (Type&) + { + } + + void PlanLocality:: + constrainedInstance_next (Type const&) + { + } + + void PlanLocality:: + constrainedInstance_post (Type&) + { + } + + void PlanLocality:: + constrainedInstance_post (Type const&) + { + } + + void PlanLocality:: + post (Type&) + { + } + + void PlanLocality:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // IdRef + // + // + + IdRef:: + IdRef (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + IdRef:: + IdRef () + { + } + + void IdRef:: + traverse (Type const& o) + { + Traversal::IdRef::traverse (o); + } + + void IdRef:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::IdRef::href (o); + attr_ (0); + } + + void IdRef:: + idref (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("idref"), ACE_TEXT ("http://www.omg.org/Deployment"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::IdRef::idref (o); + attr_ (0); + } + + // TCKind + // + // + + TCKind:: + TCKind (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + TCKind:: + TCKind () + { + } + + void TCKind:: + traverse (Type const& o) + { + ::std::basic_string< ACE_TCHAR > s; + + if (o == ::CIAO::Config_Handlers::TCKind::tk_null) s = ACE_TEXT ("tk_null"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_void) s = ACE_TEXT ("tk_void"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_short) s = ACE_TEXT ("tk_short"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_long) s = ACE_TEXT ("tk_long"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_ushort) s = ACE_TEXT ("tk_ushort"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_ulong) s = ACE_TEXT ("tk_ulong"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_float) s = ACE_TEXT ("tk_float"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_double) s = ACE_TEXT ("tk_double"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_boolean) s = ACE_TEXT ("tk_boolean"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_char) s = ACE_TEXT ("tk_char"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_octet) s = ACE_TEXT ("tk_octet"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_any) s = ACE_TEXT ("tk_any"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_TypeCode) s = ACE_TEXT ("tk_TypeCode"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_Principal) s = ACE_TEXT ("tk_Principal"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_objref) s = ACE_TEXT ("tk_objref"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_struct) s = ACE_TEXT ("tk_struct"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_union) s = ACE_TEXT ("tk_union"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_enum) s = ACE_TEXT ("tk_enum"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_string) s = ACE_TEXT ("tk_string"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_sequence) s = ACE_TEXT ("tk_sequence"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_array) s = ACE_TEXT ("tk_array"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_alias) s = ACE_TEXT ("tk_alias"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_except) s = ACE_TEXT ("tk_except"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_longlong) s = ACE_TEXT ("tk_longlong"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_ulonglong) s = ACE_TEXT ("tk_ulonglong"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_longdouble) s = ACE_TEXT ("tk_longdouble"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_wchar) s = ACE_TEXT ("tk_wchar"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_wstring) s = ACE_TEXT ("tk_wstring"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_fixed) s = ACE_TEXT ("tk_fixed"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_value) s = ACE_TEXT ("tk_value"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_value_box) s = ACE_TEXT ("tk_value_box"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_native) s = ACE_TEXT ("tk_native"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_abstract_interface) s = ACE_TEXT ("tk_abstract_interface"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_local_interface) s = ACE_TEXT ("tk_local_interface"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_component) s = ACE_TEXT ("tk_component"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_home) s = ACE_TEXT ("tk_home"); + else if (o == ::CIAO::Config_Handlers::TCKind::tk_event) s = ACE_TEXT ("tk_event"); + else + { + } + + if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ()) + { + a->value (s); + } + + else + { + top_().value (s); + } + } + + // DataType + // + // + + DataType:: + DataType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + DataType:: + DataType () + { + } + + void DataType:: + traverse (Type const& o) + { + Traversal::DataType::traverse (o); + } + + void DataType:: + kind (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("kind"), top_ ())); + Traversal::DataType::kind (o); + pop_ (); + } + + void DataType:: + enum_ (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("enum"), top_ ())); + Traversal::DataType::enum_ (o); + pop_ (); + } + + void DataType:: + struct_ (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("struct"), top_ ())); + Traversal::DataType::struct_ (o); + pop_ (); + } + + void DataType:: + value (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("value"), top_ ())); + Traversal::DataType::value (o); + pop_ (); + } + + void DataType:: + sequence (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("sequence"), top_ ())); + Traversal::DataType::sequence (o); + pop_ (); + } + + void DataType:: + alias (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("alias"), top_ ())); + Traversal::DataType::alias (o); + pop_ (); + } + + void DataType:: + id (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("id"), ACE_TEXT ("http://www.omg.org/Deployment"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::DataType::id (o); + attr_ (0); + } + + // DataValue + // + // + + DataValue:: + DataValue (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + DataValue:: + DataValue () + { + } + + void DataValue:: + traverse (Type const& o) + { + Traversal::DataValue::traverse (o); + } + + void DataValue:: + short_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("short"), top_ ())); + } + + void DataValue:: + short_next (Type const& o) + { + short_post (o); + short_pre (o); + } + + void DataValue:: + short_post (Type const&) + { + pop_ (); + } + + void DataValue:: + long_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("long"), top_ ())); + } + + void DataValue:: + long_next (Type const& o) + { + long_post (o); + long_pre (o); + } + + void DataValue:: + long_post (Type const&) + { + pop_ (); + } + + void DataValue:: + ushort_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("ushort"), top_ ())); + } + + void DataValue:: + ushort_next (Type const& o) + { + ushort_post (o); + ushort_pre (o); + } + + void DataValue:: + ushort_post (Type const&) + { + pop_ (); + } + + void DataValue:: + ulong_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("ulong"), top_ ())); + } + + void DataValue:: + ulong_next (Type const& o) + { + ulong_post (o); + ulong_pre (o); + } + + void DataValue:: + ulong_post (Type const&) + { + pop_ (); + } + + void DataValue:: + float_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("float"), top_ ())); + } + + void DataValue:: + float_next (Type const& o) + { + float_post (o); + float_pre (o); + } + + void DataValue:: + float_post (Type const&) + { + pop_ (); + } + + void DataValue:: + double_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("double"), top_ ())); + } + + void DataValue:: + double_next (Type const& o) + { + double_post (o); + double_pre (o); + } + + void DataValue:: + double_post (Type const&) + { + pop_ (); + } + + void DataValue:: + boolean_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("boolean"), top_ ())); + } + + void DataValue:: + boolean_next (Type const& o) + { + boolean_post (o); + boolean_pre (o); + } + + void DataValue:: + boolean_post (Type const&) + { + pop_ (); + } + + void DataValue:: + octet_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("octet"), top_ ())); + } + + void DataValue:: + octet_next (Type const& o) + { + octet_post (o); + octet_pre (o); + } + + void DataValue:: + octet_post (Type const&) + { + pop_ (); + } + + void DataValue:: + enum_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("enum"), top_ ())); + } + + void DataValue:: + enum_next (Type const& o) + { + enum_post (o); + enum_pre (o); + } + + void DataValue:: + enum_post (Type const&) + { + pop_ (); + } + + void DataValue:: + string_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("string"), top_ ())); + } + + void DataValue:: + string_next (Type const& o) + { + string_post (o); + string_pre (o); + } + + void DataValue:: + string_post (Type const&) + { + pop_ (); + } + + void DataValue:: + longlong_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("longlong"), top_ ())); + } + + void DataValue:: + longlong_next (Type const& o) + { + longlong_post (o); + longlong_pre (o); + } + + void DataValue:: + longlong_post (Type const&) + { + pop_ (); + } + + void DataValue:: + ulonglong_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("ulonglong"), top_ ())); + } + + void DataValue:: + ulonglong_next (Type const& o) + { + ulonglong_post (o); + ulonglong_pre (o); + } + + void DataValue:: + ulonglong_post (Type const&) + { + pop_ (); + } + + void DataValue:: + longdouble_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("longdouble"), top_ ())); + } + + void DataValue:: + longdouble_next (Type const& o) + { + longdouble_post (o); + longdouble_pre (o); + } + + void DataValue:: + longdouble_post (Type const&) + { + pop_ (); + } + + void DataValue:: + element_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("element"), top_ ())); + } + + void DataValue:: + element_next (Type const& o) + { + element_post (o); + element_pre (o); + } + + void DataValue:: + element_post (Type const&) + { + pop_ (); + } + + void DataValue:: + member_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("member"), top_ ())); + } + + void DataValue:: + member_next (Type const& o) + { + member_post (o); + member_pre (o); + } + + void DataValue:: + member_post (Type const&) + { + pop_ (); + } + + // AliasType + // + // + + AliasType:: + AliasType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + AliasType:: + AliasType () + { + } + + void AliasType:: + traverse (Type const& o) + { + Traversal::AliasType::traverse (o); + } + + void AliasType:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::AliasType::name (o); + pop_ (); + } + + void AliasType:: + typeId (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("typeId"), top_ ())); + Traversal::AliasType::typeId (o); + pop_ (); + } + + void AliasType:: + elementType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("elementType"), top_ ())); + Traversal::AliasType::elementType (o); + pop_ (); + } + + // EnumType + // + // + + EnumType:: + EnumType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + EnumType:: + EnumType () + { + } + + void EnumType:: + traverse (Type const& o) + { + Traversal::EnumType::traverse (o); + } + + void EnumType:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::EnumType::name (o); + pop_ (); + } + + void EnumType:: + typeId (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("typeId"), top_ ())); + Traversal::EnumType::typeId (o); + pop_ (); + } + + void EnumType:: + member_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("member"), top_ ())); + } + + void EnumType:: + member_next (Type const& o) + { + member_post (o); + member_pre (o); + } + + void EnumType:: + member_post (Type const&) + { + pop_ (); + } + + // StructType + // + // + + StructType:: + StructType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + StructType:: + StructType () + { + } + + void StructType:: + traverse (Type const& o) + { + Traversal::StructType::traverse (o); + } + + void StructType:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::StructType::name (o); + pop_ (); + } + + void StructType:: + typeId (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("typeId"), top_ ())); + Traversal::StructType::typeId (o); + pop_ (); + } + + void StructType:: + member_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("member"), top_ ())); + } + + void StructType:: + member_next (Type const& o) + { + member_post (o); + member_pre (o); + } + + void StructType:: + member_post (Type const&) + { + pop_ (); + } + + // StructMemberType + // + // + + StructMemberType:: + StructMemberType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + StructMemberType:: + StructMemberType () + { + } + + void StructMemberType:: + traverse (Type const& o) + { + Traversal::StructMemberType::traverse (o); + } + + void StructMemberType:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::StructMemberType::name (o); + pop_ (); + } + + void StructMemberType:: + type (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("type"), top_ ())); + Traversal::StructMemberType::type (o); + pop_ (); + } + + // ValueType + // + // + + ValueType:: + ValueType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ValueType:: + ValueType () + { + } + + void ValueType:: + traverse (Type const& o) + { + Traversal::ValueType::traverse (o); + } + + void ValueType:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::ValueType::name (o); + pop_ (); + } + + void ValueType:: + typeId (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("typeId"), top_ ())); + Traversal::ValueType::typeId (o); + pop_ (); + } + + void ValueType:: + modifier (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("modifier"), top_ ())); + Traversal::ValueType::modifier (o); + pop_ (); + } + + void ValueType:: + baseType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("baseType"), top_ ())); + Traversal::ValueType::baseType (o); + pop_ (); + } + + void ValueType:: + member_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("member"), top_ ())); + } + + void ValueType:: + member_next (Type const& o) + { + member_post (o); + member_pre (o); + } + + void ValueType:: + member_post (Type const&) + { + pop_ (); + } + + // ValueMemberType + // + // + + ValueMemberType:: + ValueMemberType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ValueMemberType:: + ValueMemberType () + { + } + + void ValueMemberType:: + traverse (Type const& o) + { + Traversal::ValueMemberType::traverse (o); + } + + void ValueMemberType:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::ValueMemberType::name (o); + pop_ (); + } + + void ValueMemberType:: + visibility (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("visibility"), top_ ())); + Traversal::ValueMemberType::visibility (o); + pop_ (); + } + + void ValueMemberType:: + type (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("type"), top_ ())); + Traversal::ValueMemberType::type (o); + pop_ (); + } + + // NamedValue + // + // + + NamedValue:: + NamedValue (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + NamedValue:: + NamedValue () + { + } + + void NamedValue:: + traverse (Type const& o) + { + Traversal::NamedValue::traverse (o); + } + + void NamedValue:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::NamedValue::name (o); + pop_ (); + } + + void NamedValue:: + value (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("value"), top_ ())); + Traversal::NamedValue::value (o); + pop_ (); + } + + // SequenceType + // + // + + SequenceType:: + SequenceType (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SequenceType:: + SequenceType () + { + } + + void SequenceType:: + traverse (Type const& o) + { + Traversal::SequenceType::traverse (o); + } + + void SequenceType:: + bound (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("bound"), top_ ())); + Traversal::SequenceType::bound (o); + pop_ (); + } + + void SequenceType:: + elementType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("elementType"), top_ ())); + Traversal::SequenceType::elementType (o); + pop_ (); + } + + // Any + // + // + + Any:: + Any (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Any:: + Any () + { + } + + void Any:: + traverse (Type const& o) + { + Traversal::Any::traverse (o); + } + + void Any:: + type (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("type"), top_ ())); + Traversal::Any::type (o); + pop_ (); + } + + void Any:: + value (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("value"), top_ ())); + Traversal::Any::value (o); + pop_ (); + } + + // Property + // + // + + Property:: + Property (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Property:: + Property () + { + } + + void Property:: + traverse (Type const& o) + { + Traversal::Property::traverse (o); + } + + void Property:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Property::name (o); + pop_ (); + } + + void Property:: + value (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("value"), top_ ())); + Traversal::Property::value (o); + pop_ (); + } + + // SatisfierPropertyKind + // + // + + SatisfierPropertyKind:: + SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SatisfierPropertyKind:: + SatisfierPropertyKind () + { + } + + void SatisfierPropertyKind:: + traverse (Type const& o) + { + ::std::basic_string< ACE_TCHAR > s; + + if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Quantity) s = ACE_TEXT ("Quantity"); + else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Capacity) s = ACE_TEXT ("Capacity"); + else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Minimum) s = ACE_TEXT ("Minimum"); + else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Maximum) s = ACE_TEXT ("Maximum"); + else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Attribute) s = ACE_TEXT ("Attribute"); + else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Selection) s = ACE_TEXT ("Selection"); + else + { + } + + if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ()) + { + a->value (s); + } + + else + { + top_().value (s); + } + } + + // SatisfierProperty + // + // + + SatisfierProperty:: + SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SatisfierProperty:: + SatisfierProperty () + { + } + + void SatisfierProperty:: + traverse (Type const& o) + { + Traversal::SatisfierProperty::traverse (o); + } + + void SatisfierProperty:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::SatisfierProperty::name (o); + pop_ (); + } + + void SatisfierProperty:: + kind (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("kind"), top_ ())); + Traversal::SatisfierProperty::kind (o); + pop_ (); + } + + void SatisfierProperty:: + dynamic (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("dynamic"), top_ ())); + Traversal::SatisfierProperty::dynamic (o); + pop_ (); + } + + void SatisfierProperty:: + value (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("value"), top_ ())); + Traversal::SatisfierProperty::value (o); + pop_ (); + } + + // Resource + // + // + + Resource:: + Resource (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Resource:: + Resource () + { + } + + void Resource:: + traverse (Type const& o) + { + Traversal::Resource::traverse (o); + } + + void Resource:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Resource::name (o); + pop_ (); + } + + void Resource:: + resourceType_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceType"), top_ ())); + } + + void Resource:: + resourceType_next (Type const& o) + { + resourceType_post (o); + resourceType_pre (o); + } + + void Resource:: + resourceType_post (Type const&) + { + pop_ (); + } + + void Resource:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void Resource:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void Resource:: + property_post (Type const&) + { + pop_ (); + } + + // Requirement + // + // + + Requirement:: + Requirement (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Requirement:: + Requirement () + { + } + + void Requirement:: + traverse (Type const& o) + { + Traversal::Requirement::traverse (o); + } + + void Requirement:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Requirement::name (o); + pop_ (); + } + + void Requirement:: + resourceType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceType"), top_ ())); + Traversal::Requirement::resourceType (o); + pop_ (); + } + + void Requirement:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void Requirement:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void Requirement:: + property_post (Type const&) + { + pop_ (); + } + + // ResourceDeploymentDescription + // + // + + ResourceDeploymentDescription:: + ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ResourceDeploymentDescription:: + ResourceDeploymentDescription () + { + } + + void ResourceDeploymentDescription:: + traverse (Type const& o) + { + Traversal::ResourceDeploymentDescription::traverse (o); + } + + void ResourceDeploymentDescription:: + requirementName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requirementName"), top_ ())); + Traversal::ResourceDeploymentDescription::requirementName (o); + pop_ (); + } + + void ResourceDeploymentDescription:: + resourceName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceName"), top_ ())); + Traversal::ResourceDeploymentDescription::resourceName (o); + pop_ (); + } + + void ResourceDeploymentDescription:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void ResourceDeploymentDescription:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void ResourceDeploymentDescription:: + property_post (Type const&) + { + pop_ (); + } + + // ArtifactDeploymentDescription + // + // + + ArtifactDeploymentDescription:: + ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ArtifactDeploymentDescription:: + ArtifactDeploymentDescription () + { + } + + void ArtifactDeploymentDescription:: + traverse (Type const& o) + { + Traversal::ArtifactDeploymentDescription::traverse (o); + } + + void ArtifactDeploymentDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::ArtifactDeploymentDescription::name (o); + pop_ (); + } + + void ArtifactDeploymentDescription:: + source_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("source"), top_ ())); + } + + void ArtifactDeploymentDescription:: + source_next (Type const& o) + { + source_post (o); + source_pre (o); + } + + void ArtifactDeploymentDescription:: + source_post (Type const&) + { + pop_ (); + } + + void ArtifactDeploymentDescription:: + node (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("node"), top_ ())); + Traversal::ArtifactDeploymentDescription::node (o); + pop_ (); + } + + void ArtifactDeploymentDescription:: + location_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("location"), top_ ())); + } + + void ArtifactDeploymentDescription:: + location_next (Type const& o) + { + location_post (o); + location_pre (o); + } + + void ArtifactDeploymentDescription:: + location_post (Type const&) + { + pop_ (); + } + + void ArtifactDeploymentDescription:: + execParameter_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("execParameter"), top_ ())); + } + + void ArtifactDeploymentDescription:: + execParameter_next (Type const& o) + { + execParameter_post (o); + execParameter_pre (o); + } + + void ArtifactDeploymentDescription:: + execParameter_post (Type const&) + { + pop_ (); + } + + void ArtifactDeploymentDescription:: + deployRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployRequirement"), top_ ())); + } + + void ArtifactDeploymentDescription:: + deployRequirement_next (Type const& o) + { + deployRequirement_post (o); + deployRequirement_pre (o); + } + + void ArtifactDeploymentDescription:: + deployRequirement_post (Type const&) + { + pop_ (); + } + + void ArtifactDeploymentDescription:: + deployedResource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployedResource"), top_ ())); + } + + void ArtifactDeploymentDescription:: + deployedResource_next (Type const& o) + { + deployedResource_post (o); + deployedResource_pre (o); + } + + void ArtifactDeploymentDescription:: + deployedResource_post (Type const&) + { + pop_ (); + } + + void ArtifactDeploymentDescription:: + id (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("id"), ACE_TEXT ("http://www.omg.org/Deployment"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ArtifactDeploymentDescription::id (o); + attr_ (0); + } + + // MonolithicDeploymentDescription + // + // + + MonolithicDeploymentDescription:: + MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + MonolithicDeploymentDescription:: + MonolithicDeploymentDescription () + { + } + + void MonolithicDeploymentDescription:: + traverse (Type const& o) + { + Traversal::MonolithicDeploymentDescription::traverse (o); + } + + void MonolithicDeploymentDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::MonolithicDeploymentDescription::name (o); + pop_ (); + } + + void MonolithicDeploymentDescription:: + source_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("source"), top_ ())); + } + + void MonolithicDeploymentDescription:: + source_next (Type const& o) + { + source_post (o); + source_pre (o); + } + + void MonolithicDeploymentDescription:: + source_post (Type const&) + { + pop_ (); + } + + void MonolithicDeploymentDescription:: + artifact_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("artifact"), top_ ())); + } + + void MonolithicDeploymentDescription:: + artifact_next (Type const& o) + { + artifact_post (o); + artifact_pre (o); + } + + void MonolithicDeploymentDescription:: + artifact_post (Type const&) + { + pop_ (); + } + + void MonolithicDeploymentDescription:: + execParameter_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("execParameter"), top_ ())); + } + + void MonolithicDeploymentDescription:: + execParameter_next (Type const& o) + { + execParameter_post (o); + execParameter_pre (o); + } + + void MonolithicDeploymentDescription:: + execParameter_post (Type const&) + { + pop_ (); + } + + void MonolithicDeploymentDescription:: + deployRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployRequirement"), top_ ())); + } + + void MonolithicDeploymentDescription:: + deployRequirement_next (Type const& o) + { + deployRequirement_post (o); + deployRequirement_pre (o); + } + + void MonolithicDeploymentDescription:: + deployRequirement_post (Type const&) + { + pop_ (); + } + + void MonolithicDeploymentDescription:: + id (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("id"), ACE_TEXT ("http://www.omg.org/Deployment"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::MonolithicDeploymentDescription::id (o); + attr_ (0); + } + + // ResourceUsageKind + // + // + + ResourceUsageKind:: + ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ResourceUsageKind:: + ResourceUsageKind () + { + } + + void ResourceUsageKind:: + traverse (Type const& o) + { + ::std::basic_string< ACE_TCHAR > s; + + if (o == ::CIAO::Config_Handlers::ResourceUsageKind::None) s = ACE_TEXT ("None"); + else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::InstanceUsesResource) s = ACE_TEXT ("InstanceUsesResource"); + else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::ResourceUsesInstance) s = ACE_TEXT ("ResourceUsesInstance"); + else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::PortUsesResource) s = ACE_TEXT ("PortUsesResource"); + else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::ResourceUsesPort) s = ACE_TEXT ("ResourceUsesPort"); + else + { + } + + if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ()) + { + a->value (s); + } + + else + { + top_().value (s); + } + } + + // InstanceResourceDeploymentDescription + // + // + + InstanceResourceDeploymentDescription:: + InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + InstanceResourceDeploymentDescription:: + InstanceResourceDeploymentDescription () + { + } + + void InstanceResourceDeploymentDescription:: + traverse (Type const& o) + { + Traversal::InstanceResourceDeploymentDescription::traverse (o); + } + + void InstanceResourceDeploymentDescription:: + resourceUsage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceUsage"), top_ ())); + Traversal::InstanceResourceDeploymentDescription::resourceUsage (o); + pop_ (); + } + + void InstanceResourceDeploymentDescription:: + requirementName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requirementName"), top_ ())); + Traversal::InstanceResourceDeploymentDescription::requirementName (o); + pop_ (); + } + + void InstanceResourceDeploymentDescription:: + resourceName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceName"), top_ ())); + Traversal::InstanceResourceDeploymentDescription::resourceName (o); + pop_ (); + } + + void InstanceResourceDeploymentDescription:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void InstanceResourceDeploymentDescription:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void InstanceResourceDeploymentDescription:: + property_post (Type const&) + { + pop_ (); + } + + // InstanceDeploymentDescription + // + // + + InstanceDeploymentDescription:: + InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + InstanceDeploymentDescription:: + InstanceDeploymentDescription () + { + } + + void InstanceDeploymentDescription:: + traverse (Type const& o) + { + Traversal::InstanceDeploymentDescription::traverse (o); + } + + void InstanceDeploymentDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::InstanceDeploymentDescription::name (o); + pop_ (); + } + + void InstanceDeploymentDescription:: + node (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("node"), top_ ())); + Traversal::InstanceDeploymentDescription::node (o); + pop_ (); + } + + void InstanceDeploymentDescription:: + source (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("source"), top_ ())); + Traversal::InstanceDeploymentDescription::source (o); + pop_ (); + } + + void InstanceDeploymentDescription:: + implementation (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("implementation"), top_ ())); + Traversal::InstanceDeploymentDescription::implementation (o); + pop_ (); + } + + void InstanceDeploymentDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void InstanceDeploymentDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void InstanceDeploymentDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void InstanceDeploymentDescription:: + deployedResource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployedResource"), top_ ())); + } + + void InstanceDeploymentDescription:: + deployedResource_next (Type const& o) + { + deployedResource_post (o); + deployedResource_pre (o); + } + + void InstanceDeploymentDescription:: + deployedResource_post (Type const&) + { + pop_ (); + } + + void InstanceDeploymentDescription:: + deployedSharedResource (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployedSharedResource"), top_ ())); + Traversal::InstanceDeploymentDescription::deployedSharedResource (o); + pop_ (); + } + + void InstanceDeploymentDescription:: + id (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("id"), ACE_TEXT ("http://www.omg.org/Deployment"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::InstanceDeploymentDescription::id (o); + attr_ (0); + } + + // CCMComponentPortKind + // + // + + CCMComponentPortKind:: + CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + CCMComponentPortKind:: + CCMComponentPortKind () + { + } + + void CCMComponentPortKind:: + traverse (Type const& o) + { + ::std::basic_string< ACE_TCHAR > s; + + if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::Facet) s = ACE_TEXT ("Facet"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::SimplexReceptacle) s = ACE_TEXT ("SimplexReceptacle"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::MultiplexReceptacle) s = ACE_TEXT ("MultiplexReceptacle"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::EventEmitter) s = ACE_TEXT ("EventEmitter"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::EventPublisher) s = ACE_TEXT ("EventPublisher"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::EventConsumer) s = ACE_TEXT ("EventConsumer"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::ExtendedPort) s = ACE_TEXT ("ExtendedPort"); + else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::MirrorPort) s = ACE_TEXT ("MirrorPort"); + else + { + } + + if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ()) + { + a->value (s); + } + + else + { + top_().value (s); + } + } + + // ComponentPortDescription + // + // + + ComponentPortDescription:: + ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentPortDescription:: + ComponentPortDescription () + { + } + + void ComponentPortDescription:: + traverse (Type const& o) + { + Traversal::ComponentPortDescription::traverse (o); + } + + void ComponentPortDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::ComponentPortDescription::name (o); + pop_ (); + } + + void ComponentPortDescription:: + specificType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("specificType"), top_ ())); + Traversal::ComponentPortDescription::specificType (o); + pop_ (); + } + + void ComponentPortDescription:: + supportedType_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("supportedType"), top_ ())); + } + + void ComponentPortDescription:: + supportedType_next (Type const& o) + { + supportedType_post (o); + supportedType_pre (o); + } + + void ComponentPortDescription:: + supportedType_post (Type const&) + { + pop_ (); + } + + void ComponentPortDescription:: + provider (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("provider"), top_ ())); + Traversal::ComponentPortDescription::provider (o); + pop_ (); + } + + void ComponentPortDescription:: + exclusiveProvider (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("exclusiveProvider"), top_ ())); + Traversal::ComponentPortDescription::exclusiveProvider (o); + pop_ (); + } + + void ComponentPortDescription:: + exclusiveUser (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("exclusiveUser"), top_ ())); + Traversal::ComponentPortDescription::exclusiveUser (o); + pop_ (); + } + + void ComponentPortDescription:: + optional (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("optional"), top_ ())); + Traversal::ComponentPortDescription::optional (o); + pop_ (); + } + + void ComponentPortDescription:: + kind (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("kind"), top_ ())); + Traversal::ComponentPortDescription::kind (o); + pop_ (); + } + + void ComponentPortDescription:: + templateParam_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("templateParam"), top_ ())); + } + + void ComponentPortDescription:: + templateParam_next (Type const& o) + { + templateParam_post (o); + templateParam_pre (o); + } + + void ComponentPortDescription:: + templateParam_post (Type const&) + { + pop_ (); + } + + // ComponentPropertyDescription + // + // + + ComponentPropertyDescription:: + ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentPropertyDescription:: + ComponentPropertyDescription () + { + } + + void ComponentPropertyDescription:: + traverse (Type const& o) + { + Traversal::ComponentPropertyDescription::traverse (o); + } + + void ComponentPropertyDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::ComponentPropertyDescription::name (o); + pop_ (); + } + + void ComponentPropertyDescription:: + type (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("type"), top_ ())); + Traversal::ComponentPropertyDescription::type (o); + pop_ (); + } + + // ComponentExternalPortEndpoint + // + // + + ComponentExternalPortEndpoint:: + ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentExternalPortEndpoint:: + ComponentExternalPortEndpoint () + { + } + + void ComponentExternalPortEndpoint:: + traverse (Type const& o) + { + Traversal::ComponentExternalPortEndpoint::traverse (o); + } + + void ComponentExternalPortEndpoint:: + portName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("portName"), top_ ())); + Traversal::ComponentExternalPortEndpoint::portName (o); + pop_ (); + } + + // PlanSubcomponentPortEndpoint + // + // + + PlanSubcomponentPortEndpoint:: + PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PlanSubcomponentPortEndpoint:: + PlanSubcomponentPortEndpoint () + { + } + + void PlanSubcomponentPortEndpoint:: + traverse (Type const& o) + { + Traversal::PlanSubcomponentPortEndpoint::traverse (o); + } + + void PlanSubcomponentPortEndpoint:: + portName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("portName"), top_ ())); + Traversal::PlanSubcomponentPortEndpoint::portName (o); + pop_ (); + } + + void PlanSubcomponentPortEndpoint:: + provider (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("provider"), top_ ())); + Traversal::PlanSubcomponentPortEndpoint::provider (o); + pop_ (); + } + + void PlanSubcomponentPortEndpoint:: + kind (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("kind"), top_ ())); + Traversal::PlanSubcomponentPortEndpoint::kind (o); + pop_ (); + } + + void PlanSubcomponentPortEndpoint:: + instance (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("instance"), top_ ())); + Traversal::PlanSubcomponentPortEndpoint::instance (o); + pop_ (); + } + + // ExternalReferenceEndpoint + // + // + + ExternalReferenceEndpoint:: + ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ExternalReferenceEndpoint:: + ExternalReferenceEndpoint () + { + } + + void ExternalReferenceEndpoint:: + traverse (Type const& o) + { + Traversal::ExternalReferenceEndpoint::traverse (o); + } + + void ExternalReferenceEndpoint:: + location (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("location"), top_ ())); + Traversal::ExternalReferenceEndpoint::location (o); + pop_ (); + } + + void ExternalReferenceEndpoint:: + provider (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("provider"), top_ ())); + Traversal::ExternalReferenceEndpoint::provider (o); + pop_ (); + } + + void ExternalReferenceEndpoint:: + portName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("portName"), top_ ())); + Traversal::ExternalReferenceEndpoint::portName (o); + pop_ (); + } + + void ExternalReferenceEndpoint:: + supportedType_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("supportedType"), top_ ())); + } + + void ExternalReferenceEndpoint:: + supportedType_next (Type const& o) + { + supportedType_post (o); + supportedType_pre (o); + } + + void ExternalReferenceEndpoint:: + supportedType_post (Type const&) + { + pop_ (); + } + + // ConnectionResourceDeploymentDescription + // + // + + ConnectionResourceDeploymentDescription:: + ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ConnectionResourceDeploymentDescription:: + ConnectionResourceDeploymentDescription () + { + } + + void ConnectionResourceDeploymentDescription:: + traverse (Type const& o) + { + Traversal::ConnectionResourceDeploymentDescription::traverse (o); + } + + void ConnectionResourceDeploymentDescription:: + targetName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("targetName"), top_ ())); + Traversal::ConnectionResourceDeploymentDescription::targetName (o); + pop_ (); + } + + void ConnectionResourceDeploymentDescription:: + requirementName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requirementName"), top_ ())); + Traversal::ConnectionResourceDeploymentDescription::requirementName (o); + pop_ (); + } + + void ConnectionResourceDeploymentDescription:: + resourceName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceName"), top_ ())); + Traversal::ConnectionResourceDeploymentDescription::resourceName (o); + pop_ (); + } + + void ConnectionResourceDeploymentDescription:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void ConnectionResourceDeploymentDescription:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void ConnectionResourceDeploymentDescription:: + property_post (Type const&) + { + pop_ (); + } + + // PlanConnectionDescription + // + // + + PlanConnectionDescription:: + PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PlanConnectionDescription:: + PlanConnectionDescription () + { + } + + void PlanConnectionDescription:: + traverse (Type const& o) + { + Traversal::PlanConnectionDescription::traverse (o); + } + + void PlanConnectionDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::PlanConnectionDescription::name (o); + pop_ (); + } + + void PlanConnectionDescription:: + source (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("source"), top_ ())); + Traversal::PlanConnectionDescription::source (o); + pop_ (); + } + + void PlanConnectionDescription:: + deployRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployRequirement"), top_ ())); + } + + void PlanConnectionDescription:: + deployRequirement_next (Type const& o) + { + deployRequirement_post (o); + deployRequirement_pre (o); + } + + void PlanConnectionDescription:: + deployRequirement_post (Type const&) + { + pop_ (); + } + + void PlanConnectionDescription:: + externalEndpoint_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalEndpoint"), top_ ())); + } + + void PlanConnectionDescription:: + externalEndpoint_next (Type const& o) + { + externalEndpoint_post (o); + externalEndpoint_pre (o); + } + + void PlanConnectionDescription:: + externalEndpoint_post (Type const&) + { + pop_ (); + } + + void PlanConnectionDescription:: + internalEndpoint_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("internalEndpoint"), top_ ())); + } + + void PlanConnectionDescription:: + internalEndpoint_next (Type const& o) + { + internalEndpoint_post (o); + internalEndpoint_pre (o); + } + + void PlanConnectionDescription:: + internalEndpoint_post (Type const&) + { + pop_ (); + } + + void PlanConnectionDescription:: + externalReference_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalReference"), top_ ())); + } + + void PlanConnectionDescription:: + externalReference_next (Type const& o) + { + externalReference_post (o); + externalReference_pre (o); + } + + void PlanConnectionDescription:: + externalReference_post (Type const&) + { + pop_ (); + } + + void PlanConnectionDescription:: + deployedResource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployedResource"), top_ ())); + } + + void PlanConnectionDescription:: + deployedResource_next (Type const& o) + { + deployedResource_post (o); + deployedResource_pre (o); + } + + void PlanConnectionDescription:: + deployedResource_post (Type const&) + { + pop_ (); + } + + // ImplementationDependency + // + // + + ImplementationDependency:: + ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ImplementationDependency:: + ImplementationDependency () + { + } + + void ImplementationDependency:: + traverse (Type const& o) + { + Traversal::ImplementationDependency::traverse (o); + } + + void ImplementationDependency:: + requiredType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requiredType"), top_ ())); + Traversal::ImplementationDependency::requiredType (o); + pop_ (); + } + + // Capability + // + // + + Capability:: + Capability (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Capability:: + Capability () + { + } + + void Capability:: + traverse (Type const& o) + { + Traversal::Capability::traverse (o); + } + + void Capability:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Capability::name (o); + pop_ (); + } + + void Capability:: + resourceType_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceType"), top_ ())); + } + + void Capability:: + resourceType_next (Type const& o) + { + resourceType_post (o); + resourceType_pre (o); + } + + void Capability:: + resourceType_post (Type const&) + { + pop_ (); + } + + void Capability:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void Capability:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void Capability:: + property_post (Type const&) + { + pop_ (); + } + + // ImplementationRequirement + // + // + + ImplementationRequirement:: + ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ImplementationRequirement:: + ImplementationRequirement () + { + } + + void ImplementationRequirement:: + traverse (Type const& o) + { + Traversal::ImplementationRequirement::traverse (o); + } + + void ImplementationRequirement:: + resourceUsage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceUsage"), top_ ())); + Traversal::ImplementationRequirement::resourceUsage (o); + pop_ (); + } + + void ImplementationRequirement:: + resourcePort (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourcePort"), top_ ())); + Traversal::ImplementationRequirement::resourcePort (o); + pop_ (); + } + + void ImplementationRequirement:: + componentPort (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("componentPort"), top_ ())); + Traversal::ImplementationRequirement::componentPort (o); + pop_ (); + } + + void ImplementationRequirement:: + resourceType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceType"), top_ ())); + Traversal::ImplementationRequirement::resourceType (o); + pop_ (); + } + + void ImplementationRequirement:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::ImplementationRequirement::name (o); + pop_ (); + } + + void ImplementationRequirement:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void ImplementationRequirement:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void ImplementationRequirement:: + property_post (Type const&) + { + pop_ (); + } + + // SubcomponentPortEndpoint + // + // + + SubcomponentPortEndpoint:: + SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SubcomponentPortEndpoint:: + SubcomponentPortEndpoint () + { + } + + void SubcomponentPortEndpoint:: + traverse (Type const& o) + { + Traversal::SubcomponentPortEndpoint::traverse (o); + } + + void SubcomponentPortEndpoint:: + portName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("portName"), top_ ())); + Traversal::SubcomponentPortEndpoint::portName (o); + pop_ (); + } + + void SubcomponentPortEndpoint:: + instance (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("instance"), top_ ())); + Traversal::SubcomponentPortEndpoint::instance (o); + pop_ (); + } + + // AssemblyConnectionDescription + // + // + + AssemblyConnectionDescription:: + AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + AssemblyConnectionDescription:: + AssemblyConnectionDescription () + { + } + + void AssemblyConnectionDescription:: + traverse (Type const& o) + { + Traversal::AssemblyConnectionDescription::traverse (o); + } + + void AssemblyConnectionDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::AssemblyConnectionDescription::name (o); + pop_ (); + } + + void AssemblyConnectionDescription:: + deployRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployRequirement"), top_ ())); + } + + void AssemblyConnectionDescription:: + deployRequirement_next (Type const& o) + { + deployRequirement_post (o); + deployRequirement_pre (o); + } + + void AssemblyConnectionDescription:: + deployRequirement_post (Type const&) + { + pop_ (); + } + + void AssemblyConnectionDescription:: + internalEndpoint_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("internalEndpoint"), top_ ())); + } + + void AssemblyConnectionDescription:: + internalEndpoint_next (Type const& o) + { + internalEndpoint_post (o); + internalEndpoint_pre (o); + } + + void AssemblyConnectionDescription:: + internalEndpoint_post (Type const&) + { + pop_ (); + } + + void AssemblyConnectionDescription:: + externalEndpoint_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalEndpoint"), top_ ())); + } + + void AssemblyConnectionDescription:: + externalEndpoint_next (Type const& o) + { + externalEndpoint_post (o); + externalEndpoint_pre (o); + } + + void AssemblyConnectionDescription:: + externalEndpoint_post (Type const&) + { + pop_ (); + } + + void AssemblyConnectionDescription:: + externalReference_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalReference"), top_ ())); + } + + void AssemblyConnectionDescription:: + externalReference_next (Type const& o) + { + externalReference_post (o); + externalReference_pre (o); + } + + void AssemblyConnectionDescription:: + externalReference_post (Type const&) + { + pop_ (); + } + + // PlanLocalityKind + // + // + + PlanLocalityKind:: + PlanLocalityKind (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PlanLocalityKind:: + PlanLocalityKind () + { + } + + void PlanLocalityKind:: + traverse (Type const& o) + { + ::std::basic_string< ACE_TCHAR > s; + + if (o == ::CIAO::Config_Handlers::PlanLocalityKind::SameProcess) s = ACE_TEXT ("SameProcess"); + else if (o == ::CIAO::Config_Handlers::PlanLocalityKind::DifferentProcess) s = ACE_TEXT ("DifferentProcess"); + else if (o == ::CIAO::Config_Handlers::PlanLocalityKind::NoConstraint) s = ACE_TEXT ("NoConstraint"); + else + { + } + + if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ()) + { + a->value (s); + } + + else + { + top_().value (s); + } + } + + // PlanLocality + // + // + + PlanLocality:: + PlanLocality (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PlanLocality:: + PlanLocality () + { + } + + void PlanLocality:: + traverse (Type const& o) + { + Traversal::PlanLocality::traverse (o); + } + + void PlanLocality:: + constraint (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("constraint"), top_ ())); + Traversal::PlanLocality::constraint (o); + pop_ (); + } + + void PlanLocality:: + constrainedInstance_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("constrainedInstance"), top_ ())); + } + + void PlanLocality:: + constrainedInstance_next (Type const& o) + { + constrainedInstance_post (o); + constrainedInstance_pre (o); + } + + void PlanLocality:: + constrainedInstance_post (Type const&) + { + pop_ (); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.hpp b/modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.hpp new file mode 100644 index 00000000000..b393929cf10 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Basic_Deployment_Data.hpp @@ -0,0 +1,8561 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef BASIC_DEPLOYMENT_DATA_HPP +#define BASIC_DEPLOYMENT_DATA_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class IdRef; + class TCKind; + class DataType; + class DataValue; + class AliasType; + class EnumType; + class StructType; + class StructMemberType; + class ValueType; + class ValueMemberType; + class NamedValue; + class SequenceType; + class Any; + class Property; + class SatisfierPropertyKind; + class SatisfierProperty; + class Resource; + class Requirement; + class ResourceDeploymentDescription; + class ArtifactDeploymentDescription; + class MonolithicDeploymentDescription; + class ResourceUsageKind; + class InstanceResourceDeploymentDescription; + class InstanceDeploymentDescription; + class CCMComponentPortKind; + class ComponentPortDescription; + class ComponentPropertyDescription; + class ComponentExternalPortEndpoint; + class PlanSubcomponentPortEndpoint; + class ExternalReferenceEndpoint; + class ConnectionResourceDeploymentDescription; + class PlanConnectionDescription; + class ImplementationDependency; + class Capability; + class ImplementationRequirement; + class SubcomponentPortEndpoint; + class AssemblyConnectionDescription; + class PlanLocalityKind; + class PlanLocality; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "XMI.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export IdRef : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < IdRef, ACE_Null_Mutex > _ptr; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + // idref + // + public: + bool idref_p () const; + ::XMLSchema::IDREF< ACE_TCHAR > const& idref () const; + ::XMLSchema::IDREF< ACE_TCHAR >& idref (); + void idref (::XMLSchema::IDREF< ACE_TCHAR > const& ); + ::XSCRT::Type* idref_ptr (); + + + protected: + ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > idref_; + + public: + IdRef (); + + IdRef (::XSCRT::XML::Element< ACE_TCHAR > const&); + IdRef (IdRef const& s); + + IdRef& + operator= (IdRef const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export TCKind : public ::XSCRT::Type + { + public: + TCKind (::XSCRT::XML::Element< ACE_TCHAR > const&); + TCKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&); + + static TCKind const tk_null; + static TCKind const tk_void; + static TCKind const tk_short; + static TCKind const tk_long; + static TCKind const tk_ushort; + static TCKind const tk_ulong; + static TCKind const tk_float; + static TCKind const tk_double; + static TCKind const tk_boolean; + static TCKind const tk_char; + static TCKind const tk_octet; + static TCKind const tk_any; + static TCKind const tk_TypeCode; + static TCKind const tk_Principal; + static TCKind const tk_objref; + static TCKind const tk_struct; + static TCKind const tk_union; + static TCKind const tk_enum; + static TCKind const tk_string; + static TCKind const tk_sequence; + static TCKind const tk_array; + static TCKind const tk_alias; + static TCKind const tk_except; + static TCKind const tk_longlong; + static TCKind const tk_ulonglong; + static TCKind const tk_longdouble; + static TCKind const tk_wchar; + static TCKind const tk_wstring; + static TCKind const tk_fixed; + static TCKind const tk_value; + static TCKind const tk_value_box; + static TCKind const tk_native; + static TCKind const tk_abstract_interface; + static TCKind const tk_local_interface; + static TCKind const tk_component; + static TCKind const tk_home; + static TCKind const tk_event; + + enum Value + { + tk_null_l, tk_void_l, tk_short_l, tk_long_l, tk_ushort_l, tk_ulong_l, tk_float_l, tk_double_l, tk_boolean_l, tk_char_l, tk_octet_l, tk_any_l, tk_TypeCode_l, tk_Principal_l, tk_objref_l, tk_struct_l, tk_union_l, tk_enum_l, tk_string_l, tk_sequence_l, tk_array_l, tk_alias_l, tk_except_l, tk_longlong_l, tk_ulonglong_l, tk_longdouble_l, tk_wchar_l, tk_wstring_l, tk_fixed_l, tk_value_l, tk_value_box_l, tk_native_l, tk_abstract_interface_l, tk_local_interface_l, tk_component_l, tk_home_l, tk_event_l + }; + + + Value + integral () const; + + friend bool XSC_XML_Handlers_Export + operator== (TCKind const& a, TCKind const& b); + + friend bool XSC_XML_Handlers_Export + operator!= (TCKind const& a, TCKind const& b); + + private: + TCKind (Value v); + + Value v_; + }; + + bool XSC_XML_Handlers_Export operator== (TCKind const &a, TCKind const &b); + + bool XSC_XML_Handlers_Export operator!= (TCKind const &a, TCKind const &b); + + + class XSC_XML_Handlers_Export DataType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < DataType, ACE_Null_Mutex > _ptr; + + // kind + // + public: + ::CIAO::Config_Handlers::TCKind const& kind () const; + void kind (::CIAO::Config_Handlers::TCKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::TCKind > kind_; + + // enum + // + public: + bool enum_p () const; + ::CIAO::Config_Handlers::EnumType const& enum_ () const; + void enum_ (::CIAO::Config_Handlers::EnumType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::EnumType > enum__; + + // struct + // + public: + bool struct_p () const; + ::CIAO::Config_Handlers::StructType const& struct_ () const; + void struct_ (::CIAO::Config_Handlers::StructType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::StructType > struct__; + + // value + // + public: + bool value_p () const; + ::CIAO::Config_Handlers::ValueType const& value () const; + void value (::CIAO::Config_Handlers::ValueType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ValueType > value_; + + // sequence + // + public: + bool sequence_p () const; + ::CIAO::Config_Handlers::SequenceType const& sequence () const; + void sequence (::CIAO::Config_Handlers::SequenceType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::SequenceType > sequence_; + + // alias + // + public: + bool alias_p () const; + ::CIAO::Config_Handlers::AliasType const& alias () const; + void alias (::CIAO::Config_Handlers::AliasType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::AliasType > alias_; + + // id + // + public: + bool id_p () const; + ::XMLSchema::ID< ACE_TCHAR > const& id () const; + ::XMLSchema::ID< ACE_TCHAR >& id (); + void id (::XMLSchema::ID< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_; + + public: + DataType (::CIAO::Config_Handlers::TCKind const& kind__); + + DataType (::XSCRT::XML::Element< ACE_TCHAR > const&); + DataType (DataType const& s); + + DataType& + operator= (DataType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export DataValue : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < DataValue, ACE_Null_Mutex > _ptr; + + // short + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::short_, ACE_Null_Mutex > >::iterator short_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::short_, ACE_Null_Mutex > >::const_iterator short_const_iterator; + short_iterator begin_short (); + short_iterator end_short (); + short_const_iterator begin_short () const; + short_const_iterator end_short () const; + void add_short ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::short_, ACE_Null_Mutex > const& ); + XSCRT::Type* short_ptr ( std::basic_string idref ); + size_t count_short (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::short_, ACE_Null_Mutex > > short__; + + // long + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::int_, ACE_Null_Mutex > >::iterator long_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::int_, ACE_Null_Mutex > >::const_iterator long_const_iterator; + long_iterator begin_long (); + long_iterator end_long (); + long_const_iterator begin_long () const; + long_const_iterator end_long () const; + void add_long ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::int_, ACE_Null_Mutex > const& ); + XSCRT::Type* long_ptr ( std::basic_string idref ); + size_t count_long (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::int_, ACE_Null_Mutex > > long__; + + // ushort + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedShort, ACE_Null_Mutex > >::iterator ushort_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedShort, ACE_Null_Mutex > >::const_iterator ushort_const_iterator; + ushort_iterator begin_ushort (); + ushort_iterator end_ushort (); + ushort_const_iterator begin_ushort () const; + ushort_const_iterator end_ushort () const; + void add_ushort ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedShort, ACE_Null_Mutex > const& ); + XSCRT::Type* ushort_ptr ( std::basic_string idref ); + size_t count_ushort (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedShort, ACE_Null_Mutex > > ushort_; + + // ulong + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedInt, ACE_Null_Mutex > >::iterator ulong_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedInt, ACE_Null_Mutex > >::const_iterator ulong_const_iterator; + ulong_iterator begin_ulong (); + ulong_iterator end_ulong (); + ulong_const_iterator begin_ulong () const; + ulong_const_iterator end_ulong () const; + void add_ulong ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedInt, ACE_Null_Mutex > const& ); + XSCRT::Type* ulong_ptr ( std::basic_string idref ); + size_t count_ulong (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedInt, ACE_Null_Mutex > > ulong_; + + // float + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::float_, ACE_Null_Mutex > >::iterator float_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::float_, ACE_Null_Mutex > >::const_iterator float_const_iterator; + float_iterator begin_float (); + float_iterator end_float (); + float_const_iterator begin_float () const; + float_const_iterator end_float () const; + void add_float ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::float_, ACE_Null_Mutex > const& ); + XSCRT::Type* float_ptr ( std::basic_string idref ); + size_t count_float (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::float_, ACE_Null_Mutex > > float__; + + // double + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > >::iterator double_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > >::const_iterator double_const_iterator; + double_iterator begin_double (); + double_iterator end_double (); + double_const_iterator begin_double () const; + double_const_iterator end_double () const; + void add_double ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > const& ); + XSCRT::Type* double_ptr ( std::basic_string idref ); + size_t count_double (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > > double__; + + // boolean + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::boolean, ACE_Null_Mutex > >::iterator boolean_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::boolean, ACE_Null_Mutex > >::const_iterator boolean_const_iterator; + boolean_iterator begin_boolean (); + boolean_iterator end_boolean (); + boolean_const_iterator begin_boolean () const; + boolean_const_iterator end_boolean () const; + void add_boolean ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::boolean, ACE_Null_Mutex > const& ); + XSCRT::Type* boolean_ptr ( std::basic_string idref ); + size_t count_boolean (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::boolean, ACE_Null_Mutex > > boolean_; + + // octet + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedByte, ACE_Null_Mutex > >::iterator octet_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedByte, ACE_Null_Mutex > >::const_iterator octet_const_iterator; + octet_iterator begin_octet (); + octet_iterator end_octet (); + octet_const_iterator begin_octet () const; + octet_const_iterator end_octet () const; + void add_octet ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedByte, ACE_Null_Mutex > const& ); + XSCRT::Type* octet_ptr ( std::basic_string idref ); + size_t count_octet (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedByte, ACE_Null_Mutex > > octet_; + + // enum + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator enum_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator enum_const_iterator; + enum_iterator begin_enum (); + enum_iterator end_enum (); + enum_const_iterator begin_enum () const; + enum_const_iterator end_enum () const; + void add_enum ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* enum_ptr ( std::basic_string idref ); + size_t count_enum (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > enum__; + + // string + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator string_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator string_const_iterator; + string_iterator begin_string (); + string_iterator end_string (); + string_const_iterator begin_string () const; + string_const_iterator end_string () const; + void add_string ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* string_ptr ( std::basic_string idref ); + size_t count_string (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > string_; + + // longlong + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::long_, ACE_Null_Mutex > >::iterator longlong_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::long_, ACE_Null_Mutex > >::const_iterator longlong_const_iterator; + longlong_iterator begin_longlong (); + longlong_iterator end_longlong (); + longlong_const_iterator begin_longlong () const; + longlong_const_iterator end_longlong () const; + void add_longlong ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::long_, ACE_Null_Mutex > const& ); + XSCRT::Type* longlong_ptr ( std::basic_string idref ); + size_t count_longlong (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::long_, ACE_Null_Mutex > > longlong_; + + // ulonglong + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedLong, ACE_Null_Mutex > >::iterator ulonglong_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedLong, ACE_Null_Mutex > >::const_iterator ulonglong_const_iterator; + ulonglong_iterator begin_ulonglong (); + ulonglong_iterator end_ulonglong (); + ulonglong_const_iterator begin_ulonglong () const; + ulonglong_const_iterator end_ulonglong () const; + void add_ulonglong ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedLong, ACE_Null_Mutex > const& ); + XSCRT::Type* ulonglong_ptr ( std::basic_string idref ); + size_t count_ulonglong (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::unsignedLong, ACE_Null_Mutex > > ulonglong_; + + // longdouble + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > >::iterator longdouble_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > >::const_iterator longdouble_const_iterator; + longdouble_iterator begin_longdouble (); + longdouble_iterator end_longdouble (); + longdouble_const_iterator begin_longdouble () const; + longdouble_const_iterator end_longdouble () const; + void add_longdouble ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > const& ); + XSCRT::Type* longdouble_ptr ( std::basic_string idref ); + size_t count_longdouble (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::double_, ACE_Null_Mutex > > longdouble_; + + // element + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::DataValue, ACE_Null_Mutex > >::iterator element_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::DataValue, ACE_Null_Mutex > >::const_iterator element_const_iterator; + element_iterator begin_element (); + element_iterator end_element (); + element_const_iterator begin_element () const; + element_const_iterator end_element () const; + void add_element ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::DataValue, ACE_Null_Mutex > const& ); + XSCRT::Type* element_ptr ( std::basic_string idref ); + size_t count_element (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::DataValue, ACE_Null_Mutex > > element_; + + // member + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedValue, ACE_Null_Mutex > >::iterator member_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedValue, ACE_Null_Mutex > >::const_iterator member_const_iterator; + member_iterator begin_member (); + member_iterator end_member (); + member_const_iterator begin_member () const; + member_const_iterator end_member () const; + void add_member ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedValue, ACE_Null_Mutex > const& ); + XSCRT::Type* member_ptr ( std::basic_string idref ); + size_t count_member (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedValue, ACE_Null_Mutex > > member_; + + public: + DataValue (); + + DataValue (::XSCRT::XML::Element< ACE_TCHAR > const&); + DataValue (DataValue const& s); + + DataValue& + operator= (DataValue const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export AliasType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < AliasType, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // typeId + // + public: + ::XMLSchema::string< ACE_TCHAR > const& typeId () const; + void typeId (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > typeId_; + + // elementType + // + public: + ::CIAO::Config_Handlers::DataType const& elementType () const; + void elementType (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > elementType_; + + public: + AliasType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__, + ::CIAO::Config_Handlers::DataType const& elementType__); + + AliasType (::XSCRT::XML::Element< ACE_TCHAR > const&); + AliasType (AliasType const& s); + + AliasType& + operator= (AliasType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export EnumType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < EnumType, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // typeId + // + public: + ::XMLSchema::string< ACE_TCHAR > const& typeId () const; + void typeId (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > typeId_; + + // member + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator member_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator member_const_iterator; + member_iterator begin_member (); + member_iterator end_member (); + member_const_iterator begin_member () const; + member_const_iterator end_member () const; + void add_member ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* member_ptr ( std::basic_string idref ); + size_t count_member (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > member_; + + public: + EnumType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > const& member__); + + EnumType (::XSCRT::XML::Element< ACE_TCHAR > const&); + EnumType (EnumType const& s); + + EnumType& + operator= (EnumType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export StructType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < StructType, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // typeId + // + public: + ::XMLSchema::string< ACE_TCHAR > const& typeId () const; + void typeId (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > typeId_; + + // member + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::StructMemberType, ACE_Null_Mutex > >::iterator member_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::StructMemberType, ACE_Null_Mutex > >::const_iterator member_const_iterator; + member_iterator begin_member (); + member_iterator end_member (); + member_const_iterator begin_member () const; + member_const_iterator end_member () const; + void add_member ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::StructMemberType, ACE_Null_Mutex > const& ); + XSCRT::Type* member_ptr ( std::basic_string idref ); + size_t count_member (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::StructMemberType, ACE_Null_Mutex > > member_; + + public: + StructType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__); + + StructType (::XSCRT::XML::Element< ACE_TCHAR > const&); + StructType (StructType const& s); + + StructType& + operator= (StructType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export StructMemberType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < StructMemberType, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // type + // + public: + ::CIAO::Config_Handlers::DataType const& type () const; + void type (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > type_; + + public: + StructMemberType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::DataType const& type__); + + StructMemberType (::XSCRT::XML::Element< ACE_TCHAR > const&); + StructMemberType (StructMemberType const& s); + + StructMemberType& + operator= (StructMemberType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ValueType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ValueType, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // typeId + // + public: + ::XMLSchema::string< ACE_TCHAR > const& typeId () const; + void typeId (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > typeId_; + + // modifier + // + public: + ::XMLSchema::string< ACE_TCHAR > const& modifier () const; + void modifier (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > modifier_; + + // baseType + // + public: + ::CIAO::Config_Handlers::DataType const& baseType () const; + void baseType (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > baseType_; + + // member + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ValueMemberType, ACE_Null_Mutex > >::iterator member_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ValueMemberType, ACE_Null_Mutex > >::const_iterator member_const_iterator; + member_iterator begin_member (); + member_iterator end_member (); + member_const_iterator begin_member () const; + member_const_iterator end_member () const; + void add_member ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ValueMemberType, ACE_Null_Mutex > const& ); + XSCRT::Type* member_ptr ( std::basic_string idref ); + size_t count_member (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ValueMemberType, ACE_Null_Mutex > > member_; + + public: + ValueType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& typeId__, + ::XMLSchema::string< ACE_TCHAR > const& modifier__, + ::CIAO::Config_Handlers::DataType const& baseType__); + + ValueType (::XSCRT::XML::Element< ACE_TCHAR > const&); + ValueType (ValueType const& s); + + ValueType& + operator= (ValueType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ValueMemberType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ValueMemberType, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // visibility + // + public: + ::XMLSchema::string< ACE_TCHAR > const& visibility () const; + void visibility (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > visibility_; + + // type + // + public: + ::CIAO::Config_Handlers::DataType const& type () const; + void type (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > type_; + + public: + ValueMemberType (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& visibility__, + ::CIAO::Config_Handlers::DataType const& type__); + + ValueMemberType (::XSCRT::XML::Element< ACE_TCHAR > const&); + ValueMemberType (ValueMemberType const& s); + + ValueMemberType& + operator= (ValueMemberType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export NamedValue : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < NamedValue, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // value + // + public: + ::CIAO::Config_Handlers::DataValue const& value () const; + void value (::CIAO::Config_Handlers::DataValue const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataValue > value_; + + public: + NamedValue (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::DataValue const& value__); + + NamedValue (::XSCRT::XML::Element< ACE_TCHAR > const&); + NamedValue (NamedValue const& s); + + NamedValue& + operator= (NamedValue const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export SequenceType : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < SequenceType, ACE_Null_Mutex > _ptr; + + // bound + // + public: + bool bound_p () const; + ::XMLSchema::unsignedInt const& bound () const; + void bound (::XMLSchema::unsignedInt const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::unsignedInt > bound_; + + // elementType + // + public: + ::CIAO::Config_Handlers::DataType const& elementType () const; + void elementType (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > elementType_; + + public: + SequenceType (::CIAO::Config_Handlers::DataType const& elementType__); + + SequenceType (::XSCRT::XML::Element< ACE_TCHAR > const&); + SequenceType (SequenceType const& s); + + SequenceType& + operator= (SequenceType const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Any : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Any, ACE_Null_Mutex > _ptr; + + // type + // + public: + ::CIAO::Config_Handlers::DataType const& type () const; + void type (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > type_; + + // value + // + public: + ::CIAO::Config_Handlers::DataValue const& value () const; + void value (::CIAO::Config_Handlers::DataValue const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataValue > value_; + + public: + Any (::CIAO::Config_Handlers::DataType const& type__, + ::CIAO::Config_Handlers::DataValue const& value__); + + Any (::XSCRT::XML::Element< ACE_TCHAR > const&); + Any (Any const& s); + + Any& + operator= (Any const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Property : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Property, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // value + // + public: + ::CIAO::Config_Handlers::Any const& value () const; + void value (::CIAO::Config_Handlers::Any const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::Any > value_; + + public: + Property (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::Any const& value__); + + Property (::XSCRT::XML::Element< ACE_TCHAR > const&); + Property (Property const& s); + + Property& + operator= (Property const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export SatisfierPropertyKind : public ::XSCRT::Type + { + public: + SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR > const&); + SatisfierPropertyKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&); + + static SatisfierPropertyKind const Quantity; + static SatisfierPropertyKind const Capacity; + static SatisfierPropertyKind const Minimum; + static SatisfierPropertyKind const Maximum; + static SatisfierPropertyKind const Attribute; + static SatisfierPropertyKind const Selection; + + enum Value + { + Quantity_l, Capacity_l, Minimum_l, Maximum_l, Attribute_l, Selection_l + }; + + + Value + integral () const; + + friend bool XSC_XML_Handlers_Export + operator== (SatisfierPropertyKind const& a, SatisfierPropertyKind const& b); + + friend bool XSC_XML_Handlers_Export + operator!= (SatisfierPropertyKind const& a, SatisfierPropertyKind const& b); + + private: + SatisfierPropertyKind (Value v); + + Value v_; + }; + + bool XSC_XML_Handlers_Export operator== (SatisfierPropertyKind const &a, SatisfierPropertyKind const &b); + + bool XSC_XML_Handlers_Export operator!= (SatisfierPropertyKind const &a, SatisfierPropertyKind const &b); + + + class XSC_XML_Handlers_Export SatisfierProperty : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < SatisfierProperty, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // kind + // + public: + ::CIAO::Config_Handlers::SatisfierPropertyKind const& kind () const; + void kind (::CIAO::Config_Handlers::SatisfierPropertyKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierPropertyKind > kind_; + + // dynamic + // + public: + ::XMLSchema::boolean const& dynamic () const; + void dynamic (::XMLSchema::boolean const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::boolean > dynamic_; + + // value + // + public: + ::CIAO::Config_Handlers::Any const& value () const; + void value (::CIAO::Config_Handlers::Any const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::Any > value_; + + public: + SatisfierProperty (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::SatisfierPropertyKind const& kind__, + ::XMLSchema::boolean const& dynamic__, + ::CIAO::Config_Handlers::Any const& value__); + + SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR > const&); + SatisfierProperty (SatisfierProperty const& s); + + SatisfierProperty& + operator= (SatisfierProperty const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Resource : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Resource, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // resourceType + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator resourceType_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator resourceType_const_iterator; + resourceType_iterator begin_resourceType (); + resourceType_iterator end_resourceType (); + resourceType_const_iterator begin_resourceType () const; + resourceType_const_iterator end_resourceType () const; + void add_resourceType ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* resourceType_ptr ( std::basic_string idref ); + size_t count_resourceType (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > resourceType_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > > property_; + + public: + Resource (::XMLSchema::string< ACE_TCHAR > const& name__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > const& resourceType__); + + Resource (::XSCRT::XML::Element< ACE_TCHAR > const&); + Resource (Resource const& s); + + Resource& + operator= (Resource const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Requirement : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Requirement, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // resourceType + // + public: + ::XMLSchema::string< ACE_TCHAR > const& resourceType () const; + void resourceType (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceType_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > property_; + + public: + Requirement (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& resourceType__); + + Requirement (::XSCRT::XML::Element< ACE_TCHAR > const&); + Requirement (Requirement const& s); + + Requirement& + operator= (Requirement const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ResourceDeploymentDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ResourceDeploymentDescription, ACE_Null_Mutex > _ptr; + + // requirementName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& requirementName () const; + void requirementName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requirementName_; + + // resourceName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& resourceName () const; + void resourceName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceName_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > property_; + + public: + ResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& requirementName__, + ::XMLSchema::string< ACE_TCHAR > const& resourceName__); + + ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ResourceDeploymentDescription (ResourceDeploymentDescription const& s); + + ResourceDeploymentDescription& + operator= (ResourceDeploymentDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ArtifactDeploymentDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ArtifactDeploymentDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // source + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator source_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator source_const_iterator; + source_iterator begin_source (); + source_iterator end_source (); + source_const_iterator begin_source () const; + source_const_iterator end_source () const; + void add_source ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* source_ptr ( std::basic_string idref ); + size_t count_source (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > source_; + + // node + // + public: + ::XMLSchema::string< ACE_TCHAR > const& node () const; + void node (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > node_; + + // location + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator location_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator location_const_iterator; + location_iterator begin_location (); + location_iterator end_location (); + location_const_iterator begin_location () const; + location_const_iterator end_location () const; + void add_location ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* location_ptr ( std::basic_string idref ); + size_t count_location (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > location_; + + // execParameter + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator execParameter_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator execParameter_const_iterator; + execParameter_iterator begin_execParameter (); + execParameter_iterator end_execParameter (); + execParameter_const_iterator begin_execParameter () const; + execParameter_const_iterator end_execParameter () const; + void add_execParameter ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* execParameter_ptr ( std::basic_string idref ); + size_t count_execParameter (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > execParameter_; + + // deployRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator deployRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator deployRequirement_const_iterator; + deployRequirement_iterator begin_deployRequirement (); + deployRequirement_iterator end_deployRequirement (); + deployRequirement_const_iterator begin_deployRequirement () const; + deployRequirement_const_iterator end_deployRequirement () const; + void add_deployRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* deployRequirement_ptr ( std::basic_string idref ); + size_t count_deployRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > deployRequirement_; + + // deployedResource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ResourceDeploymentDescription, ACE_Null_Mutex > >::iterator deployedResource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ResourceDeploymentDescription, ACE_Null_Mutex > >::const_iterator deployedResource_const_iterator; + deployedResource_iterator begin_deployedResource (); + deployedResource_iterator end_deployedResource (); + deployedResource_const_iterator begin_deployedResource () const; + deployedResource_const_iterator end_deployedResource () const; + void add_deployedResource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ResourceDeploymentDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* deployedResource_ptr ( std::basic_string idref ); + size_t count_deployedResource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ResourceDeploymentDescription, ACE_Null_Mutex > > deployedResource_; + + // id + // + public: + bool id_p () const; + ::XMLSchema::ID< ACE_TCHAR > const& id () const; + ::XMLSchema::ID< ACE_TCHAR >& id (); + void id (::XMLSchema::ID< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_; + + public: + ArtifactDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& node__); + + ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ArtifactDeploymentDescription (ArtifactDeploymentDescription const& s); + + ArtifactDeploymentDescription& + operator= (ArtifactDeploymentDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export MonolithicDeploymentDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < MonolithicDeploymentDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // source + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator source_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator source_const_iterator; + source_iterator begin_source (); + source_iterator end_source (); + source_const_iterator begin_source () const; + source_const_iterator end_source () const; + void add_source ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* source_ptr ( std::basic_string idref ); + size_t count_source (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > source_; + + // artifact + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > >::iterator artifact_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > >::const_iterator artifact_const_iterator; + artifact_iterator begin_artifact (); + artifact_iterator end_artifact (); + artifact_const_iterator begin_artifact () const; + artifact_const_iterator end_artifact () const; + void add_artifact ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > const& ); + XSCRT::Type* artifact_ptr ( std::basic_string idref ); + size_t count_artifact (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > > artifact_; + + // execParameter + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator execParameter_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator execParameter_const_iterator; + execParameter_iterator begin_execParameter (); + execParameter_iterator end_execParameter (); + execParameter_const_iterator begin_execParameter () const; + execParameter_const_iterator end_execParameter () const; + void add_execParameter ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* execParameter_ptr ( std::basic_string idref ); + size_t count_execParameter (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > execParameter_; + + // deployRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator deployRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator deployRequirement_const_iterator; + deployRequirement_iterator begin_deployRequirement (); + deployRequirement_iterator end_deployRequirement (); + deployRequirement_const_iterator begin_deployRequirement () const; + deployRequirement_const_iterator end_deployRequirement () const; + void add_deployRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* deployRequirement_ptr ( std::basic_string idref ); + size_t count_deployRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > deployRequirement_; + + // id + // + public: + bool id_p () const; + ::XMLSchema::ID< ACE_TCHAR > const& id () const; + ::XMLSchema::ID< ACE_TCHAR >& id (); + void id (::XMLSchema::ID< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_; + + public: + MonolithicDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__); + + MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + MonolithicDeploymentDescription (MonolithicDeploymentDescription const& s); + + MonolithicDeploymentDescription& + operator= (MonolithicDeploymentDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ResourceUsageKind : public ::XSCRT::Type + { + public: + ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR > const&); + ResourceUsageKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&); + + static ResourceUsageKind const None; + static ResourceUsageKind const InstanceUsesResource; + static ResourceUsageKind const ResourceUsesInstance; + static ResourceUsageKind const PortUsesResource; + static ResourceUsageKind const ResourceUsesPort; + + enum Value + { + None_l, InstanceUsesResource_l, ResourceUsesInstance_l, PortUsesResource_l, ResourceUsesPort_l + }; + + + Value + integral () const; + + friend bool XSC_XML_Handlers_Export + operator== (ResourceUsageKind const& a, ResourceUsageKind const& b); + + friend bool XSC_XML_Handlers_Export + operator!= (ResourceUsageKind const& a, ResourceUsageKind const& b); + + private: + ResourceUsageKind (Value v); + + Value v_; + }; + + bool XSC_XML_Handlers_Export operator== (ResourceUsageKind const &a, ResourceUsageKind const &b); + + bool XSC_XML_Handlers_Export operator!= (ResourceUsageKind const &a, ResourceUsageKind const &b); + + + class XSC_XML_Handlers_Export InstanceResourceDeploymentDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < InstanceResourceDeploymentDescription, ACE_Null_Mutex > _ptr; + + // resourceUsage + // + public: + ::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage () const; + void resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > resourceUsage_; + + // requirementName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& requirementName () const; + void requirementName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requirementName_; + + // resourceName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& resourceName () const; + void resourceName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceName_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > property_; + + public: + InstanceResourceDeploymentDescription (::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage__, + ::XMLSchema::string< ACE_TCHAR > const& requirementName__, + ::XMLSchema::string< ACE_TCHAR > const& resourceName__); + + InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + InstanceResourceDeploymentDescription (InstanceResourceDeploymentDescription const& s); + + InstanceResourceDeploymentDescription& + operator= (InstanceResourceDeploymentDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export InstanceDeploymentDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < InstanceDeploymentDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // node + // + public: + ::XMLSchema::string< ACE_TCHAR > const& node () const; + void node (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > node_; + + // source + // + public: + ::XMLSchema::string< ACE_TCHAR > const& source () const; + void source (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > source_; + + // implementation + // + public: + ::CIAO::Config_Handlers::IdRef const& implementation () const; + void implementation (::CIAO::Config_Handlers::IdRef const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > implementation_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // deployedResource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription, ACE_Null_Mutex > >::iterator deployedResource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription, ACE_Null_Mutex > >::const_iterator deployedResource_const_iterator; + deployedResource_iterator begin_deployedResource (); + deployedResource_iterator end_deployedResource (); + deployedResource_const_iterator begin_deployedResource () const; + deployedResource_const_iterator end_deployedResource () const; + void add_deployedResource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* deployedResource_ptr ( std::basic_string idref ); + size_t count_deployedResource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription, ACE_Null_Mutex > > deployedResource_; + + // deployedSharedResource + // + public: + bool deployedSharedResource_p () const; + ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& deployedSharedResource () const; + void deployedSharedResource (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > deployedSharedResource_; + + // id + // + public: + bool id_p () const; + ::XMLSchema::ID< ACE_TCHAR > const& id () const; + ::XMLSchema::ID< ACE_TCHAR >& id (); + void id (::XMLSchema::ID< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_; + + public: + InstanceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& node__, + ::XMLSchema::string< ACE_TCHAR > const& source__, + ::CIAO::Config_Handlers::IdRef const& implementation__); + + InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + InstanceDeploymentDescription (InstanceDeploymentDescription const& s); + + InstanceDeploymentDescription& + operator= (InstanceDeploymentDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export CCMComponentPortKind : public ::XSCRT::Type + { + public: + CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR > const&); + CCMComponentPortKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&); + + static CCMComponentPortKind const Facet; + static CCMComponentPortKind const SimplexReceptacle; + static CCMComponentPortKind const MultiplexReceptacle; + static CCMComponentPortKind const EventEmitter; + static CCMComponentPortKind const EventPublisher; + static CCMComponentPortKind const EventConsumer; + static CCMComponentPortKind const ExtendedPort; + static CCMComponentPortKind const MirrorPort; + + enum Value + { + Facet_l, SimplexReceptacle_l, MultiplexReceptacle_l, EventEmitter_l, EventPublisher_l, EventConsumer_l, ExtendedPort_l, MirrorPort_l + }; + + + Value + integral () const; + + friend bool XSC_XML_Handlers_Export + operator== (CCMComponentPortKind const& a, CCMComponentPortKind const& b); + + friend bool XSC_XML_Handlers_Export + operator!= (CCMComponentPortKind const& a, CCMComponentPortKind const& b); + + private: + CCMComponentPortKind (Value v); + + Value v_; + }; + + bool XSC_XML_Handlers_Export operator== (CCMComponentPortKind const &a, CCMComponentPortKind const &b); + + bool XSC_XML_Handlers_Export operator!= (CCMComponentPortKind const &a, CCMComponentPortKind const &b); + + + class XSC_XML_Handlers_Export ComponentPortDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentPortDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // specificType + // + public: + bool specificType_p () const; + ::XMLSchema::string< ACE_TCHAR > const& specificType () const; + void specificType (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > specificType_; + + // supportedType + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator supportedType_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator supportedType_const_iterator; + supportedType_iterator begin_supportedType (); + supportedType_iterator end_supportedType (); + supportedType_const_iterator begin_supportedType () const; + supportedType_const_iterator end_supportedType () const; + void add_supportedType ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* supportedType_ptr ( std::basic_string idref ); + size_t count_supportedType (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > supportedType_; + + // provider + // + public: + ::XMLSchema::boolean const& provider () const; + void provider (::XMLSchema::boolean const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::boolean > provider_; + + // exclusiveProvider + // + public: + ::XMLSchema::boolean const& exclusiveProvider () const; + void exclusiveProvider (::XMLSchema::boolean const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::boolean > exclusiveProvider_; + + // exclusiveUser + // + public: + ::XMLSchema::boolean const& exclusiveUser () const; + void exclusiveUser (::XMLSchema::boolean const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::boolean > exclusiveUser_; + + // optional + // + public: + ::XMLSchema::boolean const& optional () const; + void optional (::XMLSchema::boolean const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::boolean > optional_; + + // kind + // + public: + ::CIAO::Config_Handlers::CCMComponentPortKind const& kind () const; + void kind (::CIAO::Config_Handlers::CCMComponentPortKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > kind_; + + // templateParam + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator templateParam_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator templateParam_const_iterator; + templateParam_iterator begin_templateParam (); + templateParam_iterator end_templateParam (); + templateParam_const_iterator begin_templateParam () const; + templateParam_const_iterator end_templateParam () const; + void add_templateParam ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* templateParam_ptr ( std::basic_string idref ); + size_t count_templateParam (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > templateParam_; + + public: + ComponentPortDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::boolean const& provider__, + ::XMLSchema::boolean const& exclusiveProvider__, + ::XMLSchema::boolean const& exclusiveUser__, + ::XMLSchema::boolean const& optional__, + ::CIAO::Config_Handlers::CCMComponentPortKind const& kind__); + + ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentPortDescription (ComponentPortDescription const& s); + + ComponentPortDescription& + operator= (ComponentPortDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ComponentPropertyDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentPropertyDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // type + // + public: + ::CIAO::Config_Handlers::DataType const& type () const; + void type (::CIAO::Config_Handlers::DataType const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > type_; + + public: + ComponentPropertyDescription (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::DataType const& type__); + + ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentPropertyDescription (ComponentPropertyDescription const& s); + + ComponentPropertyDescription& + operator= (ComponentPropertyDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ComponentExternalPortEndpoint : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentExternalPortEndpoint, ACE_Null_Mutex > _ptr; + + // portName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& portName () const; + void portName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_; + + public: + ComponentExternalPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__); + + ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentExternalPortEndpoint (ComponentExternalPortEndpoint const& s); + + ComponentExternalPortEndpoint& + operator= (ComponentExternalPortEndpoint const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export PlanSubcomponentPortEndpoint : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PlanSubcomponentPortEndpoint, ACE_Null_Mutex > _ptr; + + // portName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& portName () const; + void portName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_; + + // provider + // + public: + bool provider_p () const; + ::XMLSchema::string< ACE_TCHAR > const& provider () const; + void provider (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > provider_; + + // kind + // + public: + ::CIAO::Config_Handlers::CCMComponentPortKind const& kind () const; + void kind (::CIAO::Config_Handlers::CCMComponentPortKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > kind_; + + // instance + // + public: + ::CIAO::Config_Handlers::IdRef const& instance () const; + void instance (::CIAO::Config_Handlers::IdRef const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > instance_; + + public: + PlanSubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__, + ::CIAO::Config_Handlers::CCMComponentPortKind const& kind__, + ::CIAO::Config_Handlers::IdRef const& instance__); + + PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&); + PlanSubcomponentPortEndpoint (PlanSubcomponentPortEndpoint const& s); + + PlanSubcomponentPortEndpoint& + operator= (PlanSubcomponentPortEndpoint const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ExternalReferenceEndpoint : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ExternalReferenceEndpoint, ACE_Null_Mutex > _ptr; + + // location + // + public: + ::XMLSchema::string< ACE_TCHAR > const& location () const; + void location (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > location_; + + // provider + // + public: + ::XMLSchema::boolean const& provider () const; + void provider (::XMLSchema::boolean const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::boolean > provider_; + + // portName + // + public: + bool portName_p () const; + ::XMLSchema::string< ACE_TCHAR > const& portName () const; + void portName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_; + + // supportedType + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator supportedType_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator supportedType_const_iterator; + supportedType_iterator begin_supportedType (); + supportedType_iterator end_supportedType (); + supportedType_const_iterator begin_supportedType () const; + supportedType_const_iterator end_supportedType () const; + void add_supportedType ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* supportedType_ptr ( std::basic_string idref ); + size_t count_supportedType (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > supportedType_; + + public: + ExternalReferenceEndpoint (::XMLSchema::string< ACE_TCHAR > const& location__, + ::XMLSchema::boolean const& provider__); + + ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&); + ExternalReferenceEndpoint (ExternalReferenceEndpoint const& s); + + ExternalReferenceEndpoint& + operator= (ExternalReferenceEndpoint const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ConnectionResourceDeploymentDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ConnectionResourceDeploymentDescription, ACE_Null_Mutex > _ptr; + + // targetName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& targetName () const; + void targetName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > targetName_; + + // requirementName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& requirementName () const; + void requirementName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requirementName_; + + // resourceName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& resourceName () const; + void resourceName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceName_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > property_; + + public: + ConnectionResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& targetName__, + ::XMLSchema::string< ACE_TCHAR > const& requirementName__, + ::XMLSchema::string< ACE_TCHAR > const& resourceName__); + + ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ConnectionResourceDeploymentDescription (ConnectionResourceDeploymentDescription const& s); + + ConnectionResourceDeploymentDescription& + operator= (ConnectionResourceDeploymentDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export PlanConnectionDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PlanConnectionDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // source + // + public: + bool source_p () const; + ::XMLSchema::string< ACE_TCHAR > const& source () const; + void source (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > source_; + + // deployRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator deployRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator deployRequirement_const_iterator; + deployRequirement_iterator begin_deployRequirement (); + deployRequirement_iterator end_deployRequirement (); + deployRequirement_const_iterator begin_deployRequirement () const; + deployRequirement_const_iterator end_deployRequirement () const; + void add_deployRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* deployRequirement_ptr ( std::basic_string idref ); + size_t count_deployRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > deployRequirement_; + + // externalEndpoint + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > >::iterator externalEndpoint_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > >::const_iterator externalEndpoint_const_iterator; + externalEndpoint_iterator begin_externalEndpoint (); + externalEndpoint_iterator end_externalEndpoint (); + externalEndpoint_const_iterator begin_externalEndpoint () const; + externalEndpoint_const_iterator end_externalEndpoint () const; + void add_externalEndpoint ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > const& ); + XSCRT::Type* externalEndpoint_ptr ( std::basic_string idref ); + size_t count_externalEndpoint (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > > externalEndpoint_; + + // internalEndpoint + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint, ACE_Null_Mutex > >::iterator internalEndpoint_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint, ACE_Null_Mutex > >::const_iterator internalEndpoint_const_iterator; + internalEndpoint_iterator begin_internalEndpoint (); + internalEndpoint_iterator end_internalEndpoint (); + internalEndpoint_const_iterator begin_internalEndpoint () const; + internalEndpoint_const_iterator end_internalEndpoint () const; + void add_internalEndpoint ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint, ACE_Null_Mutex > const& ); + XSCRT::Type* internalEndpoint_ptr ( std::basic_string idref ); + size_t count_internalEndpoint (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint, ACE_Null_Mutex > > internalEndpoint_; + + // externalReference + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > >::iterator externalReference_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > >::const_iterator externalReference_const_iterator; + externalReference_iterator begin_externalReference (); + externalReference_iterator end_externalReference (); + externalReference_const_iterator begin_externalReference () const; + externalReference_const_iterator end_externalReference () const; + void add_externalReference ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > const& ); + XSCRT::Type* externalReference_ptr ( std::basic_string idref ); + size_t count_externalReference (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > > externalReference_; + + // deployedResource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription, ACE_Null_Mutex > >::iterator deployedResource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription, ACE_Null_Mutex > >::const_iterator deployedResource_const_iterator; + deployedResource_iterator begin_deployedResource (); + deployedResource_iterator end_deployedResource (); + deployedResource_const_iterator begin_deployedResource () const; + deployedResource_const_iterator end_deployedResource () const; + void add_deployedResource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* deployedResource_ptr ( std::basic_string idref ); + size_t count_deployedResource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription, ACE_Null_Mutex > > deployedResource_; + + public: + PlanConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__); + + PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + PlanConnectionDescription (PlanConnectionDescription const& s); + + PlanConnectionDescription& + operator= (PlanConnectionDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ImplementationDependency : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ImplementationDependency, ACE_Null_Mutex > _ptr; + + // requiredType + // + public: + ::XMLSchema::string< ACE_TCHAR > const& requiredType () const; + void requiredType (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredType_; + + public: + ImplementationDependency (::XMLSchema::string< ACE_TCHAR > const& requiredType__); + + ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR > const&); + ImplementationDependency (ImplementationDependency const& s); + + ImplementationDependency& + operator= (ImplementationDependency const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Capability : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Capability, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // resourceType + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator resourceType_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator resourceType_const_iterator; + resourceType_iterator begin_resourceType (); + resourceType_iterator end_resourceType (); + resourceType_const_iterator begin_resourceType () const; + resourceType_const_iterator end_resourceType () const; + void add_resourceType ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* resourceType_ptr ( std::basic_string idref ); + size_t count_resourceType (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > resourceType_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SatisfierProperty, ACE_Null_Mutex > > property_; + + public: + Capability (::XMLSchema::string< ACE_TCHAR > const& name__); + + Capability (::XSCRT::XML::Element< ACE_TCHAR > const&); + Capability (Capability const& s); + + Capability& + operator= (Capability const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ImplementationRequirement : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ImplementationRequirement, ACE_Null_Mutex > _ptr; + + // resourceUsage + // + public: + bool resourceUsage_p () const; + ::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage () const; + void resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > resourceUsage_; + + // resourcePort + // + public: + bool resourcePort_p () const; + ::XMLSchema::string< ACE_TCHAR > const& resourcePort () const; + void resourcePort (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourcePort_; + + // componentPort + // + public: + bool componentPort_p () const; + ::XMLSchema::string< ACE_TCHAR > const& componentPort () const; + void componentPort (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > componentPort_; + + // resourceType + // + public: + ::XMLSchema::string< ACE_TCHAR > const& resourceType () const; + void resourceType (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceType_; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > property_; + + public: + ImplementationRequirement (::XMLSchema::string< ACE_TCHAR > const& resourceType__, + ::XMLSchema::string< ACE_TCHAR > const& name__); + + ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR > const&); + ImplementationRequirement (ImplementationRequirement const& s); + + ImplementationRequirement& + operator= (ImplementationRequirement const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export SubcomponentPortEndpoint : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < SubcomponentPortEndpoint, ACE_Null_Mutex > _ptr; + + // portName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& portName () const; + void portName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_; + + // instance + // + public: + ::CIAO::Config_Handlers::IdRef const& instance () const; + void instance (::CIAO::Config_Handlers::IdRef const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > instance_; + + public: + SubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__, + ::CIAO::Config_Handlers::IdRef const& instance__); + + SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&); + SubcomponentPortEndpoint (SubcomponentPortEndpoint const& s); + + SubcomponentPortEndpoint& + operator= (SubcomponentPortEndpoint const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export AssemblyConnectionDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < AssemblyConnectionDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // deployRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator deployRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator deployRequirement_const_iterator; + deployRequirement_iterator begin_deployRequirement (); + deployRequirement_iterator end_deployRequirement (); + deployRequirement_const_iterator begin_deployRequirement () const; + deployRequirement_const_iterator end_deployRequirement () const; + void add_deployRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* deployRequirement_ptr ( std::basic_string idref ); + size_t count_deployRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > deployRequirement_; + + // internalEndpoint + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPortEndpoint, ACE_Null_Mutex > >::iterator internalEndpoint_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPortEndpoint, ACE_Null_Mutex > >::const_iterator internalEndpoint_const_iterator; + internalEndpoint_iterator begin_internalEndpoint (); + internalEndpoint_iterator end_internalEndpoint (); + internalEndpoint_const_iterator begin_internalEndpoint () const; + internalEndpoint_const_iterator end_internalEndpoint () const; + void add_internalEndpoint ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPortEndpoint, ACE_Null_Mutex > const& ); + XSCRT::Type* internalEndpoint_ptr ( std::basic_string idref ); + size_t count_internalEndpoint (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPortEndpoint, ACE_Null_Mutex > > internalEndpoint_; + + // externalEndpoint + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > >::iterator externalEndpoint_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > >::const_iterator externalEndpoint_const_iterator; + externalEndpoint_iterator begin_externalEndpoint (); + externalEndpoint_iterator end_externalEndpoint (); + externalEndpoint_const_iterator begin_externalEndpoint () const; + externalEndpoint_const_iterator end_externalEndpoint () const; + void add_externalEndpoint ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > const& ); + XSCRT::Type* externalEndpoint_ptr ( std::basic_string idref ); + size_t count_externalEndpoint (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentExternalPortEndpoint, ACE_Null_Mutex > > externalEndpoint_; + + // externalReference + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > >::iterator externalReference_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > >::const_iterator externalReference_const_iterator; + externalReference_iterator begin_externalReference (); + externalReference_iterator end_externalReference (); + externalReference_const_iterator begin_externalReference () const; + externalReference_const_iterator end_externalReference () const; + void add_externalReference ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > const& ); + XSCRT::Type* externalReference_ptr ( std::basic_string idref ); + size_t count_externalReference (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ExternalReferenceEndpoint, ACE_Null_Mutex > > externalReference_; + + public: + AssemblyConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__); + + AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + AssemblyConnectionDescription (AssemblyConnectionDescription const& s); + + AssemblyConnectionDescription& + operator= (AssemblyConnectionDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export PlanLocalityKind : public ::XSCRT::Type + { + public: + PlanLocalityKind (::XSCRT::XML::Element< ACE_TCHAR > const&); + PlanLocalityKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&); + + static PlanLocalityKind const SameProcess; + static PlanLocalityKind const DifferentProcess; + static PlanLocalityKind const NoConstraint; + + enum Value + { + SameProcess_l, DifferentProcess_l, NoConstraint_l + }; + + + Value + integral () const; + + friend bool XSC_XML_Handlers_Export + operator== (PlanLocalityKind const& a, PlanLocalityKind const& b); + + friend bool XSC_XML_Handlers_Export + operator!= (PlanLocalityKind const& a, PlanLocalityKind const& b); + + private: + PlanLocalityKind (Value v); + + Value v_; + }; + + bool XSC_XML_Handlers_Export operator== (PlanLocalityKind const &a, PlanLocalityKind const &b); + + bool XSC_XML_Handlers_Export operator!= (PlanLocalityKind const &a, PlanLocalityKind const &b); + + + class XSC_XML_Handlers_Export PlanLocality : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PlanLocality, ACE_Null_Mutex > _ptr; + + // constraint + // + public: + ::CIAO::Config_Handlers::PlanLocalityKind const& constraint () const; + void constraint (::CIAO::Config_Handlers::PlanLocalityKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::PlanLocalityKind > constraint_; + + // constrainedInstance + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > >::iterator constrainedInstance_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > >::const_iterator constrainedInstance_const_iterator; + constrainedInstance_iterator begin_constrainedInstance (); + constrainedInstance_iterator end_constrainedInstance (); + constrainedInstance_const_iterator begin_constrainedInstance () const; + constrainedInstance_const_iterator end_constrainedInstance () const; + void add_constrainedInstance ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > const& ); + XSCRT::Type* constrainedInstance_ptr ( std::basic_string idref ); + size_t count_constrainedInstance (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > > constrainedInstance_; + + public: + PlanLocality (::CIAO::Config_Handlers::PlanLocalityKind const& constraint__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::IdRef, ACE_Null_Mutex > > const& constrainedInstance__); + + PlanLocality (::XSCRT::XML::Element< ACE_TCHAR > const&); + PlanLocality (PlanLocality const& s); + + PlanLocality& + operator= (PlanLocality const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export IdRef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::IdRef > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + idref (Type&); + + virtual void + idref (Type const&); + + virtual void + idref_none (Type&); + + virtual void + idref_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + typedef + ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::TCKind > + TCKind; + + struct XSC_XML_Handlers_Export DataType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DataType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + kind (Type&); + + virtual void + kind (Type const&); + + virtual void + enum_ (Type&); + + virtual void + enum_ (Type const&); + + virtual void + enum_none (Type&); + + virtual void + enum_none (Type const&); + + virtual void + struct_ (Type&); + + virtual void + struct_ (Type const&); + + virtual void + struct_none (Type&); + + virtual void + struct_none (Type const&); + + virtual void + value (Type&); + + virtual void + value (Type const&); + + virtual void + value_none (Type&); + + virtual void + value_none (Type const&); + + virtual void + sequence (Type&); + + virtual void + sequence (Type const&); + + virtual void + sequence_none (Type&); + + virtual void + sequence_none (Type const&); + + virtual void + alias (Type&); + + virtual void + alias (Type const&); + + virtual void + alias_none (Type&); + + virtual void + alias_none (Type const&); + + virtual void + id (Type&); + + virtual void + id (Type const&); + + virtual void + id_none (Type&); + + virtual void + id_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export DataValue : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DataValue > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + short_ (Type&); + + virtual void + short_ (Type const&); + + virtual void + short_pre (Type&); + + virtual void + short_pre (Type const&); + + virtual void + short_next (Type&); + + virtual void + short_next (Type const&); + + virtual void + short_post (Type&); + + virtual void + short_post (Type const&); + + virtual void + short_none (Type&); + + virtual void + short_none (Type const&); + + virtual void + long_ (Type&); + + virtual void + long_ (Type const&); + + virtual void + long_pre (Type&); + + virtual void + long_pre (Type const&); + + virtual void + long_next (Type&); + + virtual void + long_next (Type const&); + + virtual void + long_post (Type&); + + virtual void + long_post (Type const&); + + virtual void + long_none (Type&); + + virtual void + long_none (Type const&); + + virtual void + ushort (Type&); + + virtual void + ushort (Type const&); + + virtual void + ushort_pre (Type&); + + virtual void + ushort_pre (Type const&); + + virtual void + ushort_next (Type&); + + virtual void + ushort_next (Type const&); + + virtual void + ushort_post (Type&); + + virtual void + ushort_post (Type const&); + + virtual void + ushort_none (Type&); + + virtual void + ushort_none (Type const&); + + virtual void + ulong (Type&); + + virtual void + ulong (Type const&); + + virtual void + ulong_pre (Type&); + + virtual void + ulong_pre (Type const&); + + virtual void + ulong_next (Type&); + + virtual void + ulong_next (Type const&); + + virtual void + ulong_post (Type&); + + virtual void + ulong_post (Type const&); + + virtual void + ulong_none (Type&); + + virtual void + ulong_none (Type const&); + + virtual void + float_ (Type&); + + virtual void + float_ (Type const&); + + virtual void + float_pre (Type&); + + virtual void + float_pre (Type const&); + + virtual void + float_next (Type&); + + virtual void + float_next (Type const&); + + virtual void + float_post (Type&); + + virtual void + float_post (Type const&); + + virtual void + float_none (Type&); + + virtual void + float_none (Type const&); + + virtual void + double_ (Type&); + + virtual void + double_ (Type const&); + + virtual void + double_pre (Type&); + + virtual void + double_pre (Type const&); + + virtual void + double_next (Type&); + + virtual void + double_next (Type const&); + + virtual void + double_post (Type&); + + virtual void + double_post (Type const&); + + virtual void + double_none (Type&); + + virtual void + double_none (Type const&); + + virtual void + boolean (Type&); + + virtual void + boolean (Type const&); + + virtual void + boolean_pre (Type&); + + virtual void + boolean_pre (Type const&); + + virtual void + boolean_next (Type&); + + virtual void + boolean_next (Type const&); + + virtual void + boolean_post (Type&); + + virtual void + boolean_post (Type const&); + + virtual void + boolean_none (Type&); + + virtual void + boolean_none (Type const&); + + virtual void + octet (Type&); + + virtual void + octet (Type const&); + + virtual void + octet_pre (Type&); + + virtual void + octet_pre (Type const&); + + virtual void + octet_next (Type&); + + virtual void + octet_next (Type const&); + + virtual void + octet_post (Type&); + + virtual void + octet_post (Type const&); + + virtual void + octet_none (Type&); + + virtual void + octet_none (Type const&); + + virtual void + enum_ (Type&); + + virtual void + enum_ (Type const&); + + virtual void + enum_pre (Type&); + + virtual void + enum_pre (Type const&); + + virtual void + enum_next (Type&); + + virtual void + enum_next (Type const&); + + virtual void + enum_post (Type&); + + virtual void + enum_post (Type const&); + + virtual void + enum_none (Type&); + + virtual void + enum_none (Type const&); + + virtual void + string (Type&); + + virtual void + string (Type const&); + + virtual void + string_pre (Type&); + + virtual void + string_pre (Type const&); + + virtual void + string_next (Type&); + + virtual void + string_next (Type const&); + + virtual void + string_post (Type&); + + virtual void + string_post (Type const&); + + virtual void + string_none (Type&); + + virtual void + string_none (Type const&); + + virtual void + longlong (Type&); + + virtual void + longlong (Type const&); + + virtual void + longlong_pre (Type&); + + virtual void + longlong_pre (Type const&); + + virtual void + longlong_next (Type&); + + virtual void + longlong_next (Type const&); + + virtual void + longlong_post (Type&); + + virtual void + longlong_post (Type const&); + + virtual void + longlong_none (Type&); + + virtual void + longlong_none (Type const&); + + virtual void + ulonglong (Type&); + + virtual void + ulonglong (Type const&); + + virtual void + ulonglong_pre (Type&); + + virtual void + ulonglong_pre (Type const&); + + virtual void + ulonglong_next (Type&); + + virtual void + ulonglong_next (Type const&); + + virtual void + ulonglong_post (Type&); + + virtual void + ulonglong_post (Type const&); + + virtual void + ulonglong_none (Type&); + + virtual void + ulonglong_none (Type const&); + + virtual void + longdouble (Type&); + + virtual void + longdouble (Type const&); + + virtual void + longdouble_pre (Type&); + + virtual void + longdouble_pre (Type const&); + + virtual void + longdouble_next (Type&); + + virtual void + longdouble_next (Type const&); + + virtual void + longdouble_post (Type&); + + virtual void + longdouble_post (Type const&); + + virtual void + longdouble_none (Type&); + + virtual void + longdouble_none (Type const&); + + virtual void + element (Type&); + + virtual void + element (Type const&); + + virtual void + element_pre (Type&); + + virtual void + element_pre (Type const&); + + virtual void + element_next (Type&); + + virtual void + element_next (Type const&); + + virtual void + element_post (Type&); + + virtual void + element_post (Type const&); + + virtual void + element_none (Type&); + + virtual void + element_none (Type const&); + + virtual void + member (Type&); + + virtual void + member (Type const&); + + virtual void + member_pre (Type&); + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type&); + + virtual void + member_next (Type const&); + + virtual void + member_post (Type&); + + virtual void + member_post (Type const&); + + virtual void + member_none (Type&); + + virtual void + member_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export AliasType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::AliasType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + typeId (Type&); + + virtual void + typeId (Type const&); + + virtual void + elementType (Type&); + + virtual void + elementType (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export EnumType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::EnumType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + typeId (Type&); + + virtual void + typeId (Type const&); + + virtual void + member (Type&); + + virtual void + member (Type const&); + + virtual void + member_pre (Type&); + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type&); + + virtual void + member_next (Type const&); + + virtual void + member_post (Type&); + + virtual void + member_post (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export StructType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::StructType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + typeId (Type&); + + virtual void + typeId (Type const&); + + virtual void + member (Type&); + + virtual void + member (Type const&); + + virtual void + member_pre (Type&); + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type&); + + virtual void + member_next (Type const&); + + virtual void + member_post (Type&); + + virtual void + member_post (Type const&); + + virtual void + member_none (Type&); + + virtual void + member_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export StructMemberType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::StructMemberType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + type (Type&); + + virtual void + type (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ValueType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ValueType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + typeId (Type&); + + virtual void + typeId (Type const&); + + virtual void + modifier (Type&); + + virtual void + modifier (Type const&); + + virtual void + baseType (Type&); + + virtual void + baseType (Type const&); + + virtual void + member (Type&); + + virtual void + member (Type const&); + + virtual void + member_pre (Type&); + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type&); + + virtual void + member_next (Type const&); + + virtual void + member_post (Type&); + + virtual void + member_post (Type const&); + + virtual void + member_none (Type&); + + virtual void + member_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ValueMemberType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ValueMemberType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + visibility (Type&); + + virtual void + visibility (Type const&); + + virtual void + type (Type&); + + virtual void + type (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export NamedValue : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::NamedValue > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + value (Type&); + + virtual void + value (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export SequenceType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SequenceType > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + bound (Type&); + + virtual void + bound (Type const&); + + virtual void + bound_none (Type&); + + virtual void + bound_none (Type const&); + + virtual void + elementType (Type&); + + virtual void + elementType (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Any : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Any > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + type (Type&); + + virtual void + type (Type const&); + + virtual void + value (Type&); + + virtual void + value (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Property : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Property > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + value (Type&); + + virtual void + value (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + typedef + ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SatisfierPropertyKind > + SatisfierPropertyKind; + + struct XSC_XML_Handlers_Export SatisfierProperty : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SatisfierProperty > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + kind (Type&); + + virtual void + kind (Type const&); + + virtual void + dynamic (Type&); + + virtual void + dynamic (Type const&); + + virtual void + value (Type&); + + virtual void + value (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Resource : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Resource > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + resourceType (Type&); + + virtual void + resourceType (Type const&); + + virtual void + resourceType_pre (Type&); + + virtual void + resourceType_pre (Type const&); + + virtual void + resourceType_next (Type&); + + virtual void + resourceType_next (Type const&); + + virtual void + resourceType_post (Type&); + + virtual void + resourceType_post (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Requirement : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Requirement > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + resourceType (Type&); + + virtual void + resourceType (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ResourceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ResourceDeploymentDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + requirementName (Type&); + + virtual void + requirementName (Type const&); + + virtual void + resourceName (Type&); + + virtual void + resourceName (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ArtifactDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ArtifactDeploymentDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + source (Type&); + + virtual void + source (Type const&); + + virtual void + source_pre (Type&); + + virtual void + source_pre (Type const&); + + virtual void + source_next (Type&); + + virtual void + source_next (Type const&); + + virtual void + source_post (Type&); + + virtual void + source_post (Type const&); + + virtual void + source_none (Type&); + + virtual void + source_none (Type const&); + + virtual void + node (Type&); + + virtual void + node (Type const&); + + virtual void + location (Type&); + + virtual void + location (Type const&); + + virtual void + location_pre (Type&); + + virtual void + location_pre (Type const&); + + virtual void + location_next (Type&); + + virtual void + location_next (Type const&); + + virtual void + location_post (Type&); + + virtual void + location_post (Type const&); + + virtual void + location_none (Type&); + + virtual void + location_none (Type const&); + + virtual void + execParameter (Type&); + + virtual void + execParameter (Type const&); + + virtual void + execParameter_pre (Type&); + + virtual void + execParameter_pre (Type const&); + + virtual void + execParameter_next (Type&); + + virtual void + execParameter_next (Type const&); + + virtual void + execParameter_post (Type&); + + virtual void + execParameter_post (Type const&); + + virtual void + execParameter_none (Type&); + + virtual void + execParameter_none (Type const&); + + virtual void + deployRequirement (Type&); + + virtual void + deployRequirement (Type const&); + + virtual void + deployRequirement_pre (Type&); + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type&); + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type&); + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployRequirement_none (Type&); + + virtual void + deployRequirement_none (Type const&); + + virtual void + deployedResource (Type&); + + virtual void + deployedResource (Type const&); + + virtual void + deployedResource_pre (Type&); + + virtual void + deployedResource_pre (Type const&); + + virtual void + deployedResource_next (Type&); + + virtual void + deployedResource_next (Type const&); + + virtual void + deployedResource_post (Type&); + + virtual void + deployedResource_post (Type const&); + + virtual void + deployedResource_none (Type&); + + virtual void + deployedResource_none (Type const&); + + virtual void + id (Type&); + + virtual void + id (Type const&); + + virtual void + id_none (Type&); + + virtual void + id_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export MonolithicDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::MonolithicDeploymentDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + source (Type&); + + virtual void + source (Type const&); + + virtual void + source_pre (Type&); + + virtual void + source_pre (Type const&); + + virtual void + source_next (Type&); + + virtual void + source_next (Type const&); + + virtual void + source_post (Type&); + + virtual void + source_post (Type const&); + + virtual void + source_none (Type&); + + virtual void + source_none (Type const&); + + virtual void + artifact (Type&); + + virtual void + artifact (Type const&); + + virtual void + artifact_pre (Type&); + + virtual void + artifact_pre (Type const&); + + virtual void + artifact_next (Type&); + + virtual void + artifact_next (Type const&); + + virtual void + artifact_post (Type&); + + virtual void + artifact_post (Type const&); + + virtual void + artifact_none (Type&); + + virtual void + artifact_none (Type const&); + + virtual void + execParameter (Type&); + + virtual void + execParameter (Type const&); + + virtual void + execParameter_pre (Type&); + + virtual void + execParameter_pre (Type const&); + + virtual void + execParameter_next (Type&); + + virtual void + execParameter_next (Type const&); + + virtual void + execParameter_post (Type&); + + virtual void + execParameter_post (Type const&); + + virtual void + execParameter_none (Type&); + + virtual void + execParameter_none (Type const&); + + virtual void + deployRequirement (Type&); + + virtual void + deployRequirement (Type const&); + + virtual void + deployRequirement_pre (Type&); + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type&); + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type&); + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployRequirement_none (Type&); + + virtual void + deployRequirement_none (Type const&); + + virtual void + id (Type&); + + virtual void + id (Type const&); + + virtual void + id_none (Type&); + + virtual void + id_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + typedef + ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ResourceUsageKind > + ResourceUsageKind; + + struct XSC_XML_Handlers_Export InstanceResourceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + resourceUsage (Type&); + + virtual void + resourceUsage (Type const&); + + virtual void + requirementName (Type&); + + virtual void + requirementName (Type const&); + + virtual void + resourceName (Type&); + + virtual void + resourceName (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export InstanceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::InstanceDeploymentDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + node (Type&); + + virtual void + node (Type const&); + + virtual void + source (Type&); + + virtual void + source (Type const&); + + virtual void + implementation (Type&); + + virtual void + implementation (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + deployedResource (Type&); + + virtual void + deployedResource (Type const&); + + virtual void + deployedResource_pre (Type&); + + virtual void + deployedResource_pre (Type const&); + + virtual void + deployedResource_next (Type&); + + virtual void + deployedResource_next (Type const&); + + virtual void + deployedResource_post (Type&); + + virtual void + deployedResource_post (Type const&); + + virtual void + deployedResource_none (Type&); + + virtual void + deployedResource_none (Type const&); + + virtual void + deployedSharedResource (Type&); + + virtual void + deployedSharedResource (Type const&); + + virtual void + deployedSharedResource_none (Type&); + + virtual void + deployedSharedResource_none (Type const&); + + virtual void + id (Type&); + + virtual void + id (Type const&); + + virtual void + id_none (Type&); + + virtual void + id_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + typedef + ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::CCMComponentPortKind > + CCMComponentPortKind; + + struct XSC_XML_Handlers_Export ComponentPortDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPortDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + specificType (Type&); + + virtual void + specificType (Type const&); + + virtual void + specificType_none (Type&); + + virtual void + specificType_none (Type const&); + + virtual void + supportedType (Type&); + + virtual void + supportedType (Type const&); + + virtual void + supportedType_pre (Type&); + + virtual void + supportedType_pre (Type const&); + + virtual void + supportedType_next (Type&); + + virtual void + supportedType_next (Type const&); + + virtual void + supportedType_post (Type&); + + virtual void + supportedType_post (Type const&); + + virtual void + supportedType_none (Type&); + + virtual void + supportedType_none (Type const&); + + virtual void + provider (Type&); + + virtual void + provider (Type const&); + + virtual void + exclusiveProvider (Type&); + + virtual void + exclusiveProvider (Type const&); + + virtual void + exclusiveUser (Type&); + + virtual void + exclusiveUser (Type const&); + + virtual void + optional (Type&); + + virtual void + optional (Type const&); + + virtual void + kind (Type&); + + virtual void + kind (Type const&); + + virtual void + templateParam (Type&); + + virtual void + templateParam (Type const&); + + virtual void + templateParam_pre (Type&); + + virtual void + templateParam_pre (Type const&); + + virtual void + templateParam_next (Type&); + + virtual void + templateParam_next (Type const&); + + virtual void + templateParam_post (Type&); + + virtual void + templateParam_post (Type const&); + + virtual void + templateParam_none (Type&); + + virtual void + templateParam_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ComponentPropertyDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPropertyDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + type (Type&); + + virtual void + type (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ComponentExternalPortEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + portName (Type&); + + virtual void + portName (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export PlanSubcomponentPortEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + portName (Type&); + + virtual void + portName (Type const&); + + virtual void + provider (Type&); + + virtual void + provider (Type const&); + + virtual void + provider_none (Type&); + + virtual void + provider_none (Type const&); + + virtual void + kind (Type&); + + virtual void + kind (Type const&); + + virtual void + instance (Type&); + + virtual void + instance (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ExternalReferenceEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ExternalReferenceEndpoint > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + location (Type&); + + virtual void + location (Type const&); + + virtual void + provider (Type&); + + virtual void + provider (Type const&); + + virtual void + portName (Type&); + + virtual void + portName (Type const&); + + virtual void + portName_none (Type&); + + virtual void + portName_none (Type const&); + + virtual void + supportedType (Type&); + + virtual void + supportedType (Type const&); + + virtual void + supportedType_pre (Type&); + + virtual void + supportedType_pre (Type const&); + + virtual void + supportedType_next (Type&); + + virtual void + supportedType_next (Type const&); + + virtual void + supportedType_post (Type&); + + virtual void + supportedType_post (Type const&); + + virtual void + supportedType_none (Type&); + + virtual void + supportedType_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ConnectionResourceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + targetName (Type&); + + virtual void + targetName (Type const&); + + virtual void + requirementName (Type&); + + virtual void + requirementName (Type const&); + + virtual void + resourceName (Type&); + + virtual void + resourceName (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export PlanConnectionDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanConnectionDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + source (Type&); + + virtual void + source (Type const&); + + virtual void + source_none (Type&); + + virtual void + source_none (Type const&); + + virtual void + deployRequirement (Type&); + + virtual void + deployRequirement (Type const&); + + virtual void + deployRequirement_pre (Type&); + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type&); + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type&); + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployRequirement_none (Type&); + + virtual void + deployRequirement_none (Type const&); + + virtual void + externalEndpoint (Type&); + + virtual void + externalEndpoint (Type const&); + + virtual void + externalEndpoint_pre (Type&); + + virtual void + externalEndpoint_pre (Type const&); + + virtual void + externalEndpoint_next (Type&); + + virtual void + externalEndpoint_next (Type const&); + + virtual void + externalEndpoint_post (Type&); + + virtual void + externalEndpoint_post (Type const&); + + virtual void + externalEndpoint_none (Type&); + + virtual void + externalEndpoint_none (Type const&); + + virtual void + internalEndpoint (Type&); + + virtual void + internalEndpoint (Type const&); + + virtual void + internalEndpoint_pre (Type&); + + virtual void + internalEndpoint_pre (Type const&); + + virtual void + internalEndpoint_next (Type&); + + virtual void + internalEndpoint_next (Type const&); + + virtual void + internalEndpoint_post (Type&); + + virtual void + internalEndpoint_post (Type const&); + + virtual void + internalEndpoint_none (Type&); + + virtual void + internalEndpoint_none (Type const&); + + virtual void + externalReference (Type&); + + virtual void + externalReference (Type const&); + + virtual void + externalReference_pre (Type&); + + virtual void + externalReference_pre (Type const&); + + virtual void + externalReference_next (Type&); + + virtual void + externalReference_next (Type const&); + + virtual void + externalReference_post (Type&); + + virtual void + externalReference_post (Type const&); + + virtual void + externalReference_none (Type&); + + virtual void + externalReference_none (Type const&); + + virtual void + deployedResource (Type&); + + virtual void + deployedResource (Type const&); + + virtual void + deployedResource_pre (Type&); + + virtual void + deployedResource_pre (Type const&); + + virtual void + deployedResource_next (Type&); + + virtual void + deployedResource_next (Type const&); + + virtual void + deployedResource_post (Type&); + + virtual void + deployedResource_post (Type const&); + + virtual void + deployedResource_none (Type&); + + virtual void + deployedResource_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ImplementationDependency : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ImplementationDependency > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + requiredType (Type&); + + virtual void + requiredType (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Capability : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Capability > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + resourceType (Type&); + + virtual void + resourceType (Type const&); + + virtual void + resourceType_pre (Type&); + + virtual void + resourceType_pre (Type const&); + + virtual void + resourceType_next (Type&); + + virtual void + resourceType_next (Type const&); + + virtual void + resourceType_post (Type&); + + virtual void + resourceType_post (Type const&); + + virtual void + resourceType_none (Type&); + + virtual void + resourceType_none (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ImplementationRequirement : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ImplementationRequirement > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + resourceUsage (Type&); + + virtual void + resourceUsage (Type const&); + + virtual void + resourceUsage_none (Type&); + + virtual void + resourceUsage_none (Type const&); + + virtual void + resourcePort (Type&); + + virtual void + resourcePort (Type const&); + + virtual void + resourcePort_none (Type&); + + virtual void + resourcePort_none (Type const&); + + virtual void + componentPort (Type&); + + virtual void + componentPort (Type const&); + + virtual void + componentPort_none (Type&); + + virtual void + componentPort_none (Type const&); + + virtual void + resourceType (Type&); + + virtual void + resourceType (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export SubcomponentPortEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SubcomponentPortEndpoint > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + portName (Type&); + + virtual void + portName (Type const&); + + virtual void + instance (Type&); + + virtual void + instance (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export AssemblyConnectionDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::AssemblyConnectionDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + deployRequirement (Type&); + + virtual void + deployRequirement (Type const&); + + virtual void + deployRequirement_pre (Type&); + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type&); + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type&); + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployRequirement_none (Type&); + + virtual void + deployRequirement_none (Type const&); + + virtual void + internalEndpoint (Type&); + + virtual void + internalEndpoint (Type const&); + + virtual void + internalEndpoint_pre (Type&); + + virtual void + internalEndpoint_pre (Type const&); + + virtual void + internalEndpoint_next (Type&); + + virtual void + internalEndpoint_next (Type const&); + + virtual void + internalEndpoint_post (Type&); + + virtual void + internalEndpoint_post (Type const&); + + virtual void + internalEndpoint_none (Type&); + + virtual void + internalEndpoint_none (Type const&); + + virtual void + externalEndpoint (Type&); + + virtual void + externalEndpoint (Type const&); + + virtual void + externalEndpoint_pre (Type&); + + virtual void + externalEndpoint_pre (Type const&); + + virtual void + externalEndpoint_next (Type&); + + virtual void + externalEndpoint_next (Type const&); + + virtual void + externalEndpoint_post (Type&); + + virtual void + externalEndpoint_post (Type const&); + + virtual void + externalEndpoint_none (Type&); + + virtual void + externalEndpoint_none (Type const&); + + virtual void + externalReference (Type&); + + virtual void + externalReference (Type const&); + + virtual void + externalReference_pre (Type&); + + virtual void + externalReference_pre (Type const&); + + virtual void + externalReference_next (Type&); + + virtual void + externalReference_next (Type const&); + + virtual void + externalReference_post (Type&); + + virtual void + externalReference_post (Type const&); + + virtual void + externalReference_none (Type&); + + virtual void + externalReference_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + typedef + ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanLocalityKind > + PlanLocalityKind; + + struct XSC_XML_Handlers_Export PlanLocality : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanLocality > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + constraint (Type&); + + virtual void + constraint (Type const&); + + virtual void + constrainedInstance (Type&); + + virtual void + constrainedInstance (Type const&); + + virtual void + constrainedInstance_pre (Type&); + + virtual void + constrainedInstance_pre (Type const&); + + virtual void + constrainedInstance_next (Type&); + + virtual void + constrainedInstance_next (Type const&); + + virtual void + constrainedInstance_post (Type&); + + virtual void + constrainedInstance_post (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct IdRef : Traversal::IdRef, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::IdRef Type; + IdRef (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + virtual void + idref (Type &o) + { + this->idref (const_cast (o)); + } + + virtual void + idref (Type const&); + + protected: + IdRef (); + }; + + struct TCKind : Traversal::TCKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + TCKind (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + protected: + TCKind (); + }; + + struct DataType : Traversal::DataType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::DataType Type; + DataType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + kind (Type &o) + { + this->kind (const_cast (o)); + } + + virtual void + kind (Type const&); + + virtual void + enum_ (Type &o) + { + this->enum_ (const_cast (o)); + } + + virtual void + enum_ (Type const&); + + virtual void + struct_ (Type &o) + { + this->struct_ (const_cast (o)); + } + + virtual void + struct_ (Type const&); + + virtual void + value (Type &o) + { + this->value (const_cast (o)); + } + + virtual void + value (Type const&); + + virtual void + sequence (Type &o) + { + this->sequence (const_cast (o)); + } + + virtual void + sequence (Type const&); + + virtual void + alias (Type &o) + { + this->alias (const_cast (o)); + } + + virtual void + alias (Type const&); + + virtual void + id (Type &o) + { + this->id (const_cast (o)); + } + + virtual void + id (Type const&); + + protected: + DataType (); + }; + + struct DataValue : Traversal::DataValue, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::DataValue Type; + DataValue (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + short_pre (Type &o) + { + this->short_pre (const_cast (o)); + } + + virtual void + short_pre (Type const&); + + virtual void + short_next (Type &o) + { + this->short_next (const_cast (o)); + } + + virtual void + short_next (Type const&); + + virtual void + short_post (Type &o) + { + this->short_post (const_cast (o)); + } + + virtual void + short_post (Type const&); + + virtual void + long_pre (Type &o) + { + this->long_pre (const_cast (o)); + } + + virtual void + long_pre (Type const&); + + virtual void + long_next (Type &o) + { + this->long_next (const_cast (o)); + } + + virtual void + long_next (Type const&); + + virtual void + long_post (Type &o) + { + this->long_post (const_cast (o)); + } + + virtual void + long_post (Type const&); + + virtual void + ushort_pre (Type &o) + { + this->ushort_pre (const_cast (o)); + } + + virtual void + ushort_pre (Type const&); + + virtual void + ushort_next (Type &o) + { + this->ushort_next (const_cast (o)); + } + + virtual void + ushort_next (Type const&); + + virtual void + ushort_post (Type &o) + { + this->ushort_post (const_cast (o)); + } + + virtual void + ushort_post (Type const&); + + virtual void + ulong_pre (Type &o) + { + this->ulong_pre (const_cast (o)); + } + + virtual void + ulong_pre (Type const&); + + virtual void + ulong_next (Type &o) + { + this->ulong_next (const_cast (o)); + } + + virtual void + ulong_next (Type const&); + + virtual void + ulong_post (Type &o) + { + this->ulong_post (const_cast (o)); + } + + virtual void + ulong_post (Type const&); + + virtual void + float_pre (Type &o) + { + this->float_pre (const_cast (o)); + } + + virtual void + float_pre (Type const&); + + virtual void + float_next (Type &o) + { + this->float_next (const_cast (o)); + } + + virtual void + float_next (Type const&); + + virtual void + float_post (Type &o) + { + this->float_post (const_cast (o)); + } + + virtual void + float_post (Type const&); + + virtual void + double_pre (Type &o) + { + this->double_pre (const_cast (o)); + } + + virtual void + double_pre (Type const&); + + virtual void + double_next (Type &o) + { + this->double_next (const_cast (o)); + } + + virtual void + double_next (Type const&); + + virtual void + double_post (Type &o) + { + this->double_post (const_cast (o)); + } + + virtual void + double_post (Type const&); + + virtual void + boolean_pre (Type &o) + { + this->boolean_pre (const_cast (o)); + } + + virtual void + boolean_pre (Type const&); + + virtual void + boolean_next (Type &o) + { + this->boolean_next (const_cast (o)); + } + + virtual void + boolean_next (Type const&); + + virtual void + boolean_post (Type &o) + { + this->boolean_post (const_cast (o)); + } + + virtual void + boolean_post (Type const&); + + virtual void + octet_pre (Type &o) + { + this->octet_pre (const_cast (o)); + } + + virtual void + octet_pre (Type const&); + + virtual void + octet_next (Type &o) + { + this->octet_next (const_cast (o)); + } + + virtual void + octet_next (Type const&); + + virtual void + octet_post (Type &o) + { + this->octet_post (const_cast (o)); + } + + virtual void + octet_post (Type const&); + + virtual void + enum_pre (Type &o) + { + this->enum_pre (const_cast (o)); + } + + virtual void + enum_pre (Type const&); + + virtual void + enum_next (Type &o) + { + this->enum_next (const_cast (o)); + } + + virtual void + enum_next (Type const&); + + virtual void + enum_post (Type &o) + { + this->enum_post (const_cast (o)); + } + + virtual void + enum_post (Type const&); + + virtual void + string_pre (Type &o) + { + this->string_pre (const_cast (o)); + } + + virtual void + string_pre (Type const&); + + virtual void + string_next (Type &o) + { + this->string_next (const_cast (o)); + } + + virtual void + string_next (Type const&); + + virtual void + string_post (Type &o) + { + this->string_post (const_cast (o)); + } + + virtual void + string_post (Type const&); + + virtual void + longlong_pre (Type &o) + { + this->longlong_pre (const_cast (o)); + } + + virtual void + longlong_pre (Type const&); + + virtual void + longlong_next (Type &o) + { + this->longlong_next (const_cast (o)); + } + + virtual void + longlong_next (Type const&); + + virtual void + longlong_post (Type &o) + { + this->longlong_post (const_cast (o)); + } + + virtual void + longlong_post (Type const&); + + virtual void + ulonglong_pre (Type &o) + { + this->ulonglong_pre (const_cast (o)); + } + + virtual void + ulonglong_pre (Type const&); + + virtual void + ulonglong_next (Type &o) + { + this->ulonglong_next (const_cast (o)); + } + + virtual void + ulonglong_next (Type const&); + + virtual void + ulonglong_post (Type &o) + { + this->ulonglong_post (const_cast (o)); + } + + virtual void + ulonglong_post (Type const&); + + virtual void + longdouble_pre (Type &o) + { + this->longdouble_pre (const_cast (o)); + } + + virtual void + longdouble_pre (Type const&); + + virtual void + longdouble_next (Type &o) + { + this->longdouble_next (const_cast (o)); + } + + virtual void + longdouble_next (Type const&); + + virtual void + longdouble_post (Type &o) + { + this->longdouble_post (const_cast (o)); + } + + virtual void + longdouble_post (Type const&); + + virtual void + element_pre (Type &o) + { + this->element_pre (const_cast (o)); + } + + virtual void + element_pre (Type const&); + + virtual void + element_next (Type &o) + { + this->element_next (const_cast (o)); + } + + virtual void + element_next (Type const&); + + virtual void + element_post (Type &o) + { + this->element_post (const_cast (o)); + } + + virtual void + element_post (Type const&); + + virtual void + member_pre (Type &o) + { + this->member_pre (const_cast (o)); + } + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type &o) + { + this->member_next (const_cast (o)); + } + + virtual void + member_next (Type const&); + + virtual void + member_post (Type &o) + { + this->member_post (const_cast (o)); + } + + virtual void + member_post (Type const&); + + protected: + DataValue (); + }; + + struct AliasType : Traversal::AliasType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::AliasType Type; + AliasType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + typeId (Type &o) + { + this->typeId (const_cast (o)); + } + + virtual void + typeId (Type const&); + + virtual void + elementType (Type &o) + { + this->elementType (const_cast (o)); + } + + virtual void + elementType (Type const&); + + protected: + AliasType (); + }; + + struct EnumType : Traversal::EnumType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::EnumType Type; + EnumType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + typeId (Type &o) + { + this->typeId (const_cast (o)); + } + + virtual void + typeId (Type const&); + + virtual void + member_pre (Type &o) + { + this->member_pre (const_cast (o)); + } + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type &o) + { + this->member_next (const_cast (o)); + } + + virtual void + member_next (Type const&); + + virtual void + member_post (Type &o) + { + this->member_post (const_cast (o)); + } + + virtual void + member_post (Type const&); + + protected: + EnumType (); + }; + + struct StructType : Traversal::StructType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::StructType Type; + StructType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + typeId (Type &o) + { + this->typeId (const_cast (o)); + } + + virtual void + typeId (Type const&); + + virtual void + member_pre (Type &o) + { + this->member_pre (const_cast (o)); + } + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type &o) + { + this->member_next (const_cast (o)); + } + + virtual void + member_next (Type const&); + + virtual void + member_post (Type &o) + { + this->member_post (const_cast (o)); + } + + virtual void + member_post (Type const&); + + protected: + StructType (); + }; + + struct StructMemberType : Traversal::StructMemberType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::StructMemberType Type; + StructMemberType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + type (Type &o) + { + this->type (const_cast (o)); + } + + virtual void + type (Type const&); + + protected: + StructMemberType (); + }; + + struct ValueType : Traversal::ValueType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ValueType Type; + ValueType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + typeId (Type &o) + { + this->typeId (const_cast (o)); + } + + virtual void + typeId (Type const&); + + virtual void + modifier (Type &o) + { + this->modifier (const_cast (o)); + } + + virtual void + modifier (Type const&); + + virtual void + baseType (Type &o) + { + this->baseType (const_cast (o)); + } + + virtual void + baseType (Type const&); + + virtual void + member_pre (Type &o) + { + this->member_pre (const_cast (o)); + } + + virtual void + member_pre (Type const&); + + virtual void + member_next (Type &o) + { + this->member_next (const_cast (o)); + } + + virtual void + member_next (Type const&); + + virtual void + member_post (Type &o) + { + this->member_post (const_cast (o)); + } + + virtual void + member_post (Type const&); + + protected: + ValueType (); + }; + + struct ValueMemberType : Traversal::ValueMemberType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ValueMemberType Type; + ValueMemberType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + visibility (Type &o) + { + this->visibility (const_cast (o)); + } + + virtual void + visibility (Type const&); + + virtual void + type (Type &o) + { + this->type (const_cast (o)); + } + + virtual void + type (Type const&); + + protected: + ValueMemberType (); + }; + + struct NamedValue : Traversal::NamedValue, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::NamedValue Type; + NamedValue (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + value (Type &o) + { + this->value (const_cast (o)); + } + + virtual void + value (Type const&); + + protected: + NamedValue (); + }; + + struct SequenceType : Traversal::SequenceType, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::SequenceType Type; + SequenceType (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + bound (Type &o) + { + this->bound (const_cast (o)); + } + + virtual void + bound (Type const&); + + virtual void + elementType (Type &o) + { + this->elementType (const_cast (o)); + } + + virtual void + elementType (Type const&); + + protected: + SequenceType (); + }; + + struct Any : Traversal::Any, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Any Type; + Any (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + type (Type &o) + { + this->type (const_cast (o)); + } + + virtual void + type (Type const&); + + virtual void + value (Type &o) + { + this->value (const_cast (o)); + } + + virtual void + value (Type const&); + + protected: + Any (); + }; + + struct Property : Traversal::Property, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Property Type; + Property (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + value (Type &o) + { + this->value (const_cast (o)); + } + + virtual void + value (Type const&); + + protected: + Property (); + }; + + struct SatisfierPropertyKind : Traversal::SatisfierPropertyKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + protected: + SatisfierPropertyKind (); + }; + + struct SatisfierProperty : Traversal::SatisfierProperty, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::SatisfierProperty Type; + SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + kind (Type &o) + { + this->kind (const_cast (o)); + } + + virtual void + kind (Type const&); + + virtual void + dynamic (Type &o) + { + this->dynamic (const_cast (o)); + } + + virtual void + dynamic (Type const&); + + virtual void + value (Type &o) + { + this->value (const_cast (o)); + } + + virtual void + value (Type const&); + + protected: + SatisfierProperty (); + }; + + struct Resource : Traversal::Resource, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Resource Type; + Resource (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + resourceType_pre (Type &o) + { + this->resourceType_pre (const_cast (o)); + } + + virtual void + resourceType_pre (Type const&); + + virtual void + resourceType_next (Type &o) + { + this->resourceType_next (const_cast (o)); + } + + virtual void + resourceType_next (Type const&); + + virtual void + resourceType_post (Type &o) + { + this->resourceType_post (const_cast (o)); + } + + virtual void + resourceType_post (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + Resource (); + }; + + struct Requirement : Traversal::Requirement, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Requirement Type; + Requirement (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + resourceType (Type &o) + { + this->resourceType (const_cast (o)); + } + + virtual void + resourceType (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + Requirement (); + }; + + struct ResourceDeploymentDescription : Traversal::ResourceDeploymentDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ResourceDeploymentDescription Type; + ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + requirementName (Type &o) + { + this->requirementName (const_cast (o)); + } + + virtual void + requirementName (Type const&); + + virtual void + resourceName (Type &o) + { + this->resourceName (const_cast (o)); + } + + virtual void + resourceName (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + ResourceDeploymentDescription (); + }; + + struct ArtifactDeploymentDescription : Traversal::ArtifactDeploymentDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ArtifactDeploymentDescription Type; + ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + source_pre (Type &o) + { + this->source_pre (const_cast (o)); + } + + virtual void + source_pre (Type const&); + + virtual void + source_next (Type &o) + { + this->source_next (const_cast (o)); + } + + virtual void + source_next (Type const&); + + virtual void + source_post (Type &o) + { + this->source_post (const_cast (o)); + } + + virtual void + source_post (Type const&); + + virtual void + node (Type &o) + { + this->node (const_cast (o)); + } + + virtual void + node (Type const&); + + virtual void + location_pre (Type &o) + { + this->location_pre (const_cast (o)); + } + + virtual void + location_pre (Type const&); + + virtual void + location_next (Type &o) + { + this->location_next (const_cast (o)); + } + + virtual void + location_next (Type const&); + + virtual void + location_post (Type &o) + { + this->location_post (const_cast (o)); + } + + virtual void + location_post (Type const&); + + virtual void + execParameter_pre (Type &o) + { + this->execParameter_pre (const_cast (o)); + } + + virtual void + execParameter_pre (Type const&); + + virtual void + execParameter_next (Type &o) + { + this->execParameter_next (const_cast (o)); + } + + virtual void + execParameter_next (Type const&); + + virtual void + execParameter_post (Type &o) + { + this->execParameter_post (const_cast (o)); + } + + virtual void + execParameter_post (Type const&); + + virtual void + deployRequirement_pre (Type &o) + { + this->deployRequirement_pre (const_cast (o)); + } + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type &o) + { + this->deployRequirement_next (const_cast (o)); + } + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type &o) + { + this->deployRequirement_post (const_cast (o)); + } + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployedResource_pre (Type &o) + { + this->deployedResource_pre (const_cast (o)); + } + + virtual void + deployedResource_pre (Type const&); + + virtual void + deployedResource_next (Type &o) + { + this->deployedResource_next (const_cast (o)); + } + + virtual void + deployedResource_next (Type const&); + + virtual void + deployedResource_post (Type &o) + { + this->deployedResource_post (const_cast (o)); + } + + virtual void + deployedResource_post (Type const&); + + virtual void + id (Type &o) + { + this->id (const_cast (o)); + } + + virtual void + id (Type const&); + + protected: + ArtifactDeploymentDescription (); + }; + + struct MonolithicDeploymentDescription : Traversal::MonolithicDeploymentDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::MonolithicDeploymentDescription Type; + MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + source_pre (Type &o) + { + this->source_pre (const_cast (o)); + } + + virtual void + source_pre (Type const&); + + virtual void + source_next (Type &o) + { + this->source_next (const_cast (o)); + } + + virtual void + source_next (Type const&); + + virtual void + source_post (Type &o) + { + this->source_post (const_cast (o)); + } + + virtual void + source_post (Type const&); + + virtual void + artifact_pre (Type &o) + { + this->artifact_pre (const_cast (o)); + } + + virtual void + artifact_pre (Type const&); + + virtual void + artifact_next (Type &o) + { + this->artifact_next (const_cast (o)); + } + + virtual void + artifact_next (Type const&); + + virtual void + artifact_post (Type &o) + { + this->artifact_post (const_cast (o)); + } + + virtual void + artifact_post (Type const&); + + virtual void + execParameter_pre (Type &o) + { + this->execParameter_pre (const_cast (o)); + } + + virtual void + execParameter_pre (Type const&); + + virtual void + execParameter_next (Type &o) + { + this->execParameter_next (const_cast (o)); + } + + virtual void + execParameter_next (Type const&); + + virtual void + execParameter_post (Type &o) + { + this->execParameter_post (const_cast (o)); + } + + virtual void + execParameter_post (Type const&); + + virtual void + deployRequirement_pre (Type &o) + { + this->deployRequirement_pre (const_cast (o)); + } + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type &o) + { + this->deployRequirement_next (const_cast (o)); + } + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type &o) + { + this->deployRequirement_post (const_cast (o)); + } + + virtual void + deployRequirement_post (Type const&); + + virtual void + id (Type &o) + { + this->id (const_cast (o)); + } + + virtual void + id (Type const&); + + protected: + MonolithicDeploymentDescription (); + }; + + struct ResourceUsageKind : Traversal::ResourceUsageKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + protected: + ResourceUsageKind (); + }; + + struct InstanceResourceDeploymentDescription : Traversal::InstanceResourceDeploymentDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription Type; + InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + resourceUsage (Type &o) + { + this->resourceUsage (const_cast (o)); + } + + virtual void + resourceUsage (Type const&); + + virtual void + requirementName (Type &o) + { + this->requirementName (const_cast (o)); + } + + virtual void + requirementName (Type const&); + + virtual void + resourceName (Type &o) + { + this->resourceName (const_cast (o)); + } + + virtual void + resourceName (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + InstanceResourceDeploymentDescription (); + }; + + struct InstanceDeploymentDescription : Traversal::InstanceDeploymentDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::InstanceDeploymentDescription Type; + InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + node (Type &o) + { + this->node (const_cast (o)); + } + + virtual void + node (Type const&); + + virtual void + source (Type &o) + { + this->source (const_cast (o)); + } + + virtual void + source (Type const&); + + virtual void + implementation (Type &o) + { + this->implementation (const_cast (o)); + } + + virtual void + implementation (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + deployedResource_pre (Type &o) + { + this->deployedResource_pre (const_cast (o)); + } + + virtual void + deployedResource_pre (Type const&); + + virtual void + deployedResource_next (Type &o) + { + this->deployedResource_next (const_cast (o)); + } + + virtual void + deployedResource_next (Type const&); + + virtual void + deployedResource_post (Type &o) + { + this->deployedResource_post (const_cast (o)); + } + + virtual void + deployedResource_post (Type const&); + + virtual void + deployedSharedResource (Type &o) + { + this->deployedSharedResource (const_cast (o)); + } + + virtual void + deployedSharedResource (Type const&); + + virtual void + id (Type &o) + { + this->id (const_cast (o)); + } + + virtual void + id (Type const&); + + protected: + InstanceDeploymentDescription (); + }; + + struct CCMComponentPortKind : Traversal::CCMComponentPortKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + protected: + CCMComponentPortKind (); + }; + + struct ComponentPortDescription : Traversal::ComponentPortDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentPortDescription Type; + ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + specificType (Type &o) + { + this->specificType (const_cast (o)); + } + + virtual void + specificType (Type const&); + + virtual void + supportedType_pre (Type &o) + { + this->supportedType_pre (const_cast (o)); + } + + virtual void + supportedType_pre (Type const&); + + virtual void + supportedType_next (Type &o) + { + this->supportedType_next (const_cast (o)); + } + + virtual void + supportedType_next (Type const&); + + virtual void + supportedType_post (Type &o) + { + this->supportedType_post (const_cast (o)); + } + + virtual void + supportedType_post (Type const&); + + virtual void + provider (Type &o) + { + this->provider (const_cast (o)); + } + + virtual void + provider (Type const&); + + virtual void + exclusiveProvider (Type &o) + { + this->exclusiveProvider (const_cast (o)); + } + + virtual void + exclusiveProvider (Type const&); + + virtual void + exclusiveUser (Type &o) + { + this->exclusiveUser (const_cast (o)); + } + + virtual void + exclusiveUser (Type const&); + + virtual void + optional (Type &o) + { + this->optional (const_cast (o)); + } + + virtual void + optional (Type const&); + + virtual void + kind (Type &o) + { + this->kind (const_cast (o)); + } + + virtual void + kind (Type const&); + + virtual void + templateParam_pre (Type &o) + { + this->templateParam_pre (const_cast (o)); + } + + virtual void + templateParam_pre (Type const&); + + virtual void + templateParam_next (Type &o) + { + this->templateParam_next (const_cast (o)); + } + + virtual void + templateParam_next (Type const&); + + virtual void + templateParam_post (Type &o) + { + this->templateParam_post (const_cast (o)); + } + + virtual void + templateParam_post (Type const&); + + protected: + ComponentPortDescription (); + }; + + struct ComponentPropertyDescription : Traversal::ComponentPropertyDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentPropertyDescription Type; + ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + type (Type &o) + { + this->type (const_cast (o)); + } + + virtual void + type (Type const&); + + protected: + ComponentPropertyDescription (); + }; + + struct ComponentExternalPortEndpoint : Traversal::ComponentExternalPortEndpoint, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentExternalPortEndpoint Type; + ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + portName (Type &o) + { + this->portName (const_cast (o)); + } + + virtual void + portName (Type const&); + + protected: + ComponentExternalPortEndpoint (); + }; + + struct PlanSubcomponentPortEndpoint : Traversal::PlanSubcomponentPortEndpoint, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint Type; + PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + portName (Type &o) + { + this->portName (const_cast (o)); + } + + virtual void + portName (Type const&); + + virtual void + provider (Type &o) + { + this->provider (const_cast (o)); + } + + virtual void + provider (Type const&); + + virtual void + kind (Type &o) + { + this->kind (const_cast (o)); + } + + virtual void + kind (Type const&); + + virtual void + instance (Type &o) + { + this->instance (const_cast (o)); + } + + virtual void + instance (Type const&); + + protected: + PlanSubcomponentPortEndpoint (); + }; + + struct ExternalReferenceEndpoint : Traversal::ExternalReferenceEndpoint, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ExternalReferenceEndpoint Type; + ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + location (Type &o) + { + this->location (const_cast (o)); + } + + virtual void + location (Type const&); + + virtual void + provider (Type &o) + { + this->provider (const_cast (o)); + } + + virtual void + provider (Type const&); + + virtual void + portName (Type &o) + { + this->portName (const_cast (o)); + } + + virtual void + portName (Type const&); + + virtual void + supportedType_pre (Type &o) + { + this->supportedType_pre (const_cast (o)); + } + + virtual void + supportedType_pre (Type const&); + + virtual void + supportedType_next (Type &o) + { + this->supportedType_next (const_cast (o)); + } + + virtual void + supportedType_next (Type const&); + + virtual void + supportedType_post (Type &o) + { + this->supportedType_post (const_cast (o)); + } + + virtual void + supportedType_post (Type const&); + + protected: + ExternalReferenceEndpoint (); + }; + + struct ConnectionResourceDeploymentDescription : Traversal::ConnectionResourceDeploymentDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription Type; + ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + targetName (Type &o) + { + this->targetName (const_cast (o)); + } + + virtual void + targetName (Type const&); + + virtual void + requirementName (Type &o) + { + this->requirementName (const_cast (o)); + } + + virtual void + requirementName (Type const&); + + virtual void + resourceName (Type &o) + { + this->resourceName (const_cast (o)); + } + + virtual void + resourceName (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + ConnectionResourceDeploymentDescription (); + }; + + struct PlanConnectionDescription : Traversal::PlanConnectionDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PlanConnectionDescription Type; + PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + source (Type &o) + { + this->source (const_cast (o)); + } + + virtual void + source (Type const&); + + virtual void + deployRequirement_pre (Type &o) + { + this->deployRequirement_pre (const_cast (o)); + } + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type &o) + { + this->deployRequirement_next (const_cast (o)); + } + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type &o) + { + this->deployRequirement_post (const_cast (o)); + } + + virtual void + deployRequirement_post (Type const&); + + virtual void + externalEndpoint_pre (Type &o) + { + this->externalEndpoint_pre (const_cast (o)); + } + + virtual void + externalEndpoint_pre (Type const&); + + virtual void + externalEndpoint_next (Type &o) + { + this->externalEndpoint_next (const_cast (o)); + } + + virtual void + externalEndpoint_next (Type const&); + + virtual void + externalEndpoint_post (Type &o) + { + this->externalEndpoint_post (const_cast (o)); + } + + virtual void + externalEndpoint_post (Type const&); + + virtual void + internalEndpoint_pre (Type &o) + { + this->internalEndpoint_pre (const_cast (o)); + } + + virtual void + internalEndpoint_pre (Type const&); + + virtual void + internalEndpoint_next (Type &o) + { + this->internalEndpoint_next (const_cast (o)); + } + + virtual void + internalEndpoint_next (Type const&); + + virtual void + internalEndpoint_post (Type &o) + { + this->internalEndpoint_post (const_cast (o)); + } + + virtual void + internalEndpoint_post (Type const&); + + virtual void + externalReference_pre (Type &o) + { + this->externalReference_pre (const_cast (o)); + } + + virtual void + externalReference_pre (Type const&); + + virtual void + externalReference_next (Type &o) + { + this->externalReference_next (const_cast (o)); + } + + virtual void + externalReference_next (Type const&); + + virtual void + externalReference_post (Type &o) + { + this->externalReference_post (const_cast (o)); + } + + virtual void + externalReference_post (Type const&); + + virtual void + deployedResource_pre (Type &o) + { + this->deployedResource_pre (const_cast (o)); + } + + virtual void + deployedResource_pre (Type const&); + + virtual void + deployedResource_next (Type &o) + { + this->deployedResource_next (const_cast (o)); + } + + virtual void + deployedResource_next (Type const&); + + virtual void + deployedResource_post (Type &o) + { + this->deployedResource_post (const_cast (o)); + } + + virtual void + deployedResource_post (Type const&); + + protected: + PlanConnectionDescription (); + }; + + struct ImplementationDependency : Traversal::ImplementationDependency, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ImplementationDependency Type; + ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + requiredType (Type &o) + { + this->requiredType (const_cast (o)); + } + + virtual void + requiredType (Type const&); + + protected: + ImplementationDependency (); + }; + + struct Capability : Traversal::Capability, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Capability Type; + Capability (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + resourceType_pre (Type &o) + { + this->resourceType_pre (const_cast (o)); + } + + virtual void + resourceType_pre (Type const&); + + virtual void + resourceType_next (Type &o) + { + this->resourceType_next (const_cast (o)); + } + + virtual void + resourceType_next (Type const&); + + virtual void + resourceType_post (Type &o) + { + this->resourceType_post (const_cast (o)); + } + + virtual void + resourceType_post (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + Capability (); + }; + + struct ImplementationRequirement : Traversal::ImplementationRequirement, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ImplementationRequirement Type; + ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + resourceUsage (Type &o) + { + this->resourceUsage (const_cast (o)); + } + + virtual void + resourceUsage (Type const&); + + virtual void + resourcePort (Type &o) + { + this->resourcePort (const_cast (o)); + } + + virtual void + resourcePort (Type const&); + + virtual void + componentPort (Type &o) + { + this->componentPort (const_cast (o)); + } + + virtual void + componentPort (Type const&); + + virtual void + resourceType (Type &o) + { + this->resourceType (const_cast (o)); + } + + virtual void + resourceType (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + protected: + ImplementationRequirement (); + }; + + struct SubcomponentPortEndpoint : Traversal::SubcomponentPortEndpoint, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::SubcomponentPortEndpoint Type; + SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + portName (Type &o) + { + this->portName (const_cast (o)); + } + + virtual void + portName (Type const&); + + virtual void + instance (Type &o) + { + this->instance (const_cast (o)); + } + + virtual void + instance (Type const&); + + protected: + SubcomponentPortEndpoint (); + }; + + struct AssemblyConnectionDescription : Traversal::AssemblyConnectionDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::AssemblyConnectionDescription Type; + AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + deployRequirement_pre (Type &o) + { + this->deployRequirement_pre (const_cast (o)); + } + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type &o) + { + this->deployRequirement_next (const_cast (o)); + } + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type &o) + { + this->deployRequirement_post (const_cast (o)); + } + + virtual void + deployRequirement_post (Type const&); + + virtual void + internalEndpoint_pre (Type &o) + { + this->internalEndpoint_pre (const_cast (o)); + } + + virtual void + internalEndpoint_pre (Type const&); + + virtual void + internalEndpoint_next (Type &o) + { + this->internalEndpoint_next (const_cast (o)); + } + + virtual void + internalEndpoint_next (Type const&); + + virtual void + internalEndpoint_post (Type &o) + { + this->internalEndpoint_post (const_cast (o)); + } + + virtual void + internalEndpoint_post (Type const&); + + virtual void + externalEndpoint_pre (Type &o) + { + this->externalEndpoint_pre (const_cast (o)); + } + + virtual void + externalEndpoint_pre (Type const&); + + virtual void + externalEndpoint_next (Type &o) + { + this->externalEndpoint_next (const_cast (o)); + } + + virtual void + externalEndpoint_next (Type const&); + + virtual void + externalEndpoint_post (Type &o) + { + this->externalEndpoint_post (const_cast (o)); + } + + virtual void + externalEndpoint_post (Type const&); + + virtual void + externalReference_pre (Type &o) + { + this->externalReference_pre (const_cast (o)); + } + + virtual void + externalReference_pre (Type const&); + + virtual void + externalReference_next (Type &o) + { + this->externalReference_next (const_cast (o)); + } + + virtual void + externalReference_next (Type const&); + + virtual void + externalReference_post (Type &o) + { + this->externalReference_post (const_cast (o)); + } + + virtual void + externalReference_post (Type const&); + + protected: + AssemblyConnectionDescription (); + }; + + struct PlanLocalityKind : Traversal::PlanLocalityKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + PlanLocalityKind (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + protected: + PlanLocalityKind (); + }; + + struct PlanLocality : Traversal::PlanLocality, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PlanLocality Type; + PlanLocality (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + constraint (Type &o) + { + this->constraint (const_cast (o)); + } + + virtual void + constraint (Type const&); + + virtual void + constrainedInstance_pre (Type &o) + { + this->constrainedInstance_pre (const_cast (o)); + } + + virtual void + constrainedInstance_pre (Type const&); + + virtual void + constrainedInstance_next (Type &o) + { + this->constrainedInstance_next (const_cast (o)); + } + + virtual void + constrainedInstance_next (Type const&); + + virtual void + constrainedInstance_post (Type &o) + { + this->constrainedInstance_post (const_cast (o)); + } + + virtual void + constrainedInstance_post (Type const&); + + protected: + PlanLocality (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // BASIC_DEPLOYMENT_DATA_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.cpp new file mode 100644 index 00000000000..686a5e143d0 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.cpp @@ -0,0 +1,181 @@ +// $Id$ + +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" + +#include "DAnCE/Logger/Log_Macros.h" +#include "CCD_Handler.h" +#include "ccd.hpp" +#include "Property_Handler.h" +#include "CPD_Handler.h" +#include "ComponentPropertyDescription_Handler.h" +#include "DAnCE/Deployment/Deployment_DataC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + CCD_Handler::component_interface_descr ( + const ComponentInterfaceDescription &desc, + Deployment::ComponentInterfaceDescription& toconfig) + { + DANCE_TRACE("CCD_Handler::component_interface_descr"); + if (desc.UUID_p ()) + toconfig.UUID = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.UUID ().c_str ())); + + if (desc.label_p ()) + { + toconfig.label = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.label ().c_str ())); + } + + if (desc.specificType_p ()) + { + toconfig.specificType = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.specificType ().c_str ())); + } + + ComponentInterfaceDescription::supportedType_const_iterator + end = desc.end_supportedType (); + + CORBA::ULong pos = 0; + toconfig.supportedType.length (desc.count_supportedType ()); + for (ComponentInterfaceDescription::supportedType_const_iterator s = + desc.begin_supportedType (); + s != end; + ++s) + { + toconfig.supportedType[pos++] = ACE_TEXT_ALWAYS_CHAR ((*s)->c_str ()); + } + + ComponentInterfaceDescription::idlFile_const_iterator + eidl = desc.end_idlFile (); + pos = 0; + toconfig.idlFile.length (desc.count_idlFile ()); + for (ComponentInterfaceDescription::idlFile_const_iterator sidl= + desc.begin_idlFile (); + sidl != eidl; + ++sidl) + { + toconfig.idlFile [pos++] = ACE_TEXT_ALWAYS_CHAR ((*sidl)->c_str ()); + } + + ComponentInterfaceDescription::configProperty_const_iterator pend = + desc.end_configProperty (); + pos = 0; + toconfig.configProperty.length (desc.count_configProperty ()); + for (ComponentInterfaceDescription::configProperty_const_iterator pstart = + desc.begin_configProperty (); + pstart != pend; + ++pstart) + { + Property_Handler::handle_property (*(*pstart), + toconfig.configProperty [pos++]); + } + + pos = 0; + toconfig.port.length (desc.count_port ()); + for (ComponentInterfaceDescription::port_const_iterator + port (desc.begin_port ()); + port != desc.end_port (); + ++port) + { + CPD_Handler::handle_component_port_description (*(*port), + toconfig.port[pos++]); + } + + pos = 0; + CORBA::ULong len = desc.count_property (); + toconfig.property.length ( len ); + for(ComponentInterfaceDescription::property_const_iterator + prop (desc.begin_property()); + prop != desc.end_property(); + prop++) + { + ComponentPropertyDescription_Handler::component_property_description (*(*prop), + toconfig.property[pos++]); + } + + pos = 0; + toconfig.infoProperty.length (desc.count_infoProperty ()); + for ( ComponentInterfaceDescription::infoProperty_const_iterator + infoProp (desc.begin_infoProperty()); + infoProp != desc.end_infoProperty(); + infoProp++) + { + Property_Handler::handle_property (*(*infoProp), + toconfig.infoProperty[pos]); + } + } + + ComponentInterfaceDescription + CCD_Handler::component_interface_descr ( + const ::Deployment::ComponentInterfaceDescription& src) + { + DANCE_TRACE("CCD_Handler::component_interface_descr - reverse"); + ComponentInterfaceDescription cid; + + //Load up the basic string members + XMLSchema::string< ACE_TCHAR > uuid (ACE_TEXT_CHAR_TO_TCHAR (src.UUID)); + XMLSchema::string< ACE_TCHAR > label (ACE_TEXT_CHAR_TO_TCHAR (src.label)); + XMLSchema::string< ACE_TCHAR > specifict (ACE_TEXT_CHAR_TO_TCHAR (src.specificType)); + + //Then put them in the CID + cid.UUID (uuid); + cid.label (label); + cid.specificType (specifict); + + //Get the supported type(s) and load them into cid + ::CORBA::ULong total = src.supportedType.length (); + for (size_t i = 0; i < total; ++i) + { + XMLSchema::string< ACE_TCHAR > curr (ACE_TEXT_CHAR_TO_TCHAR (src.supportedType[i])); + //cid.add_supportedType (new XMLSchema::string< ACE_TCHAR > (curr)); + } + + //Get the idlFile(s) and store them into the cid + total = src.idlFile.length (); + for (size_t j = 0; j < total; ++j) + { + XMLSchema::string< ACE_TCHAR > curr (ACE_TEXT_CHAR_TO_TCHAR (src.idlFile[j])); + //cid.add_idlFile (curr); + } + + //Get the configProperty(ies) and store them into the cid + total = src.configProperty.length (); + for (size_t k = 0; k < total; ++k) + { + //cid.add_configProperty (Property_Handler::get_property (src.configProperty[k])); + } + + //Same drill for the component port description(s) + total = src.port.length (); + for (size_t l = 0; l < total; ++l) + { + //cid.add_port (CPD_Handler::component_port_description (src.port[l])); + } + + + //Load up the property field + total = src.property.length(); + for(size_t m = 0; + m < total; + m++) + { + //cid.add_property(ComponentPropertyDescription_Handler::component_property_description (src.property[m])); + } + + //Load up the infoProperty(s) + total = src.infoProperty.length(); + for(size_t n = 0; + n < total; + n++) + { + //cid.add_infoProperty(Property_Handler::get_property (src.infoProperty[n])); + } + + return cid; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.h new file mode 100644 index 00000000000..b3e8292f038 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CCD_Handler.h @@ -0,0 +1,57 @@ +//================================================ +/** +* @file CCD_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_CCD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_CCD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ +struct ComponentInterfaceDescription; +} + +namespace CIAO +{ +namespace Config_Handlers +{ +class ComponentInterfaceDescription; + +/* +* @class CCD_Handler +* +* @brief Handler class for types. +* +* This class is named CCD_Handler but actually fills +* . Why is this confusion? We +* want to maintain the correlation between the XSD file and the +* actual datatype. The file name corresponds to the XSD file but +* the data type being filled in is of type +* +*/ +class Config_Handlers_Export CCD_Handler +{ +public: +static void component_interface_descr (const ComponentInterfaceDescription &src, +::Deployment::ComponentInterfaceDescription& dest); +static ComponentInterfaceDescription +component_interface_descr (const ::Deployment::ComponentInterfaceDescription& src); + +}; +} +} + +#include /**/ "ace/post.h" +#endif /* CID_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.cpp new file mode 100644 index 00000000000..bd29956181d --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.cpp @@ -0,0 +1,51 @@ +// $Id$ + +#include "CEPE_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + void + CEPE_Handler::external_port_endpoints ( + const PlanConnectionDescription &src, + ::Deployment::ComponentExternalPortEndpoints &dest) + { + DANCE_TRACE("CEOE_Handler::external_port_endpoints"); + PlanConnectionDescription::externalEndpoint_const_iterator eeci_e = + src.end_externalEndpoint (); + + CORBA::ULong pos = 0; + dest.length (src.count_externalEndpoint ()); + for (PlanConnectionDescription::externalEndpoint_const_iterator eeci_b = + src.begin_externalEndpoint (); + eeci_b != eeci_e; + ++eeci_b) + { + CEPE_Handler::handle_external_port_endpoint (*(*eeci_b), + dest[pos++]); + } + } + + void + CEPE_Handler::handle_external_port_endpoint ( + const ComponentExternalPortEndpoint &src, + ::Deployment::ComponentExternalPortEndpoint &dest) + { + DANCE_TRACE("CEOE_Handler::external_port_endpoint"); + dest.portName = ACE_TEXT_ALWAYS_CHAR (src.portName ().c_str ()); + } + + ComponentExternalPortEndpoint + CEPE_Handler::external_port_endpoint ( + const ::Deployment::ComponentExternalPortEndpoint &src) + { + DANCE_TRACE("CEOE_Handler::external_port_endpoint - reverse"); + //MAJO Unfinished + XMLSchema::string< ACE_TCHAR > portname (ACE_TEXT_CHAR_TO_TCHAR (src.portName)); + return ComponentExternalPortEndpoint (portname); + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.h new file mode 100644 index 00000000000..b3b0938b8c2 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CEPE_Handler.h @@ -0,0 +1,67 @@ +//============================================================== +/** + * @file CEPE_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H +#define CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Common_Export.h" +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + class ComponentExternalPortEndpoints; + struct ComponentExternalPortEndpoint; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class PlanConnectionDescription; + class ComponentExternalPortEndpoint; + + /* + * @class CEPE_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC ComponentExternalPortEndpoint objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Common_Export CEPE_Handler + { + public: + static void external_port_endpoints (const PlanConnectionDescription &src, + ::Deployment::ComponentExternalPortEndpoints &dest); + + static ComponentExternalPortEndpoint + external_port_endpoint (const ::Deployment::ComponentExternalPortEndpoint &src); + + static void handle_external_port_endpoint (const ComponentExternalPortEndpoint &src, + ::Deployment::ComponentExternalPortEndpoint &dest); + }; + + typedef Sequence_Handler < ComponentExternalPortEndpoint, + ::Deployment::ComponentExternalPortEndpoints, + ::Deployment::ComponentExternalPortEndpoint, + CEPE_Handler::handle_external_port_endpoint > CEPE_Functor; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.cpp new file mode 100644 index 00000000000..70fbd104390 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.cpp @@ -0,0 +1,152 @@ +// $Id$ + +#include "CPD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + CPD_Handler::handle_component_port_description ( + const ComponentPortDescription& desc, + Deployment::ComponentPortDescription& toconfig) + { + DANCE_TRACE("CPD_Handler::component_port_description"); + toconfig.name = + ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()); + + if (desc.specificType_p ()) + toconfig.specificType = + ACE_TEXT_ALWAYS_CHAR (desc.specificType ().c_str ()); + + toconfig.supportedType.length (desc.count_supportedType ()); + std::for_each (desc.begin_supportedType (), + desc.end_supportedType (), + String_Seq_Functor (toconfig.supportedType)); + + + switch (desc.kind ().integral ()) + { + case CCMComponentPortKind::Facet_l: + toconfig.kind = Deployment::Facet; + break; + + case CCMComponentPortKind::SimplexReceptacle_l: + toconfig.kind = Deployment::SimplexReceptacle; + break; + + case CCMComponentPortKind::MultiplexReceptacle_l: + toconfig.kind = Deployment::MultiplexReceptacle; + break; + + case CCMComponentPortKind::EventEmitter_l: + toconfig.kind = Deployment::EventEmitter; + break; + + case CCMComponentPortKind::EventPublisher_l: + toconfig.kind = Deployment::EventPublisher; + break; + + case CCMComponentPortKind::EventConsumer_l: + toconfig.kind = Deployment::EventConsumer; + break; + + default: + ACE_ERROR ((LM_ERROR, "Invalid port type in connection %s\n", + desc.name ().c_str ())); + throw 1; + } + + /* @@BUG: We need to consider how to handle booleans. */ + toconfig.provider = desc.provider (); + toconfig.exclusiveProvider = desc.exclusiveProvider (); + toconfig.exclusiveUser = desc.exclusiveUser (); + toconfig.optional = desc.optional (); + } + + ComponentPortDescription + CPD_Handler::component_port_description ( + const Deployment::ComponentPortDescription& src) + { + DANCE_TRACE("CPD_Handler::component_port_description - reverse"); + ::XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + ::XMLSchema::string< ACE_TCHAR > stype (ACE_TEXT_CHAR_TO_TCHAR (src.specificType)); + + ::XMLSchema::string< ACE_TCHAR > tval (ACE_TEXT ("true")); + ::XMLSchema::string< ACE_TCHAR > fval (ACE_TEXT ("false")); + XMLSchema::boolean provider; + XMLSchema::boolean exclusiveProvider; + XMLSchema::boolean exclusiveUser; + XMLSchema::boolean optional; + + if (src.provider) + provider = true; + else + provider = false; + + if (src.exclusiveUser) + exclusiveUser = true; + else + provider = false; + + if (src.exclusiveProvider) + exclusiveProvider = true; + else + provider = false; + + if (src.optional) + optional = true; + else + provider = false; + + ComponentPortDescription cpd (name, + provider, + exclusiveProvider, + exclusiveUser, + optional, + CCMComponentPortKind::Facet); + + switch (src.kind) + { + case ::Deployment::Facet: + cpd.kind (CCMComponentPortKind::Facet); + break; + + case ::Deployment::SimplexReceptacle: + cpd.kind (CCMComponentPortKind::SimplexReceptacle); + break; + + case ::Deployment::MultiplexReceptacle: + cpd.kind (CCMComponentPortKind::MultiplexReceptacle); + break; + + case ::Deployment::EventEmitter: + cpd.kind (CCMComponentPortKind::EventEmitter); + break; + + case ::Deployment::EventPublisher: + cpd.kind (CCMComponentPortKind::EventPublisher); + break; + + case ::Deployment::EventConsumer: + cpd.kind (CCMComponentPortKind::EventConsumer); + break; + + default: + ACE_ERROR ((LM_ERROR, ACE_TEXT("Invalid port kind in connection %C\n"), + name.c_str ())); + } + + for (CORBA::ULong i = 0; i < src.supportedType.length (); ++i) + { + //cpd.add_supportedType (XMLSchema::string< ACE_TCHAR > ((src.supportedType[i]))); + } + + return cpd; + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.h new file mode 100644 index 00000000000..445d2c5f329 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CPD_Handler.h @@ -0,0 +1,68 @@ +//================================================ +/** + * @file CPD_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_CPD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_CPD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Common_Export.h" +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct ComponentPortDescription; + class ComponentPortDescriptions; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentPortDescription; + /* + * @class CPD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + + class Config_Handlers_Common_Export CPD_Handler + { + + public: + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void handle_component_port_description (const ComponentPortDescription &desc, + ::Deployment::ComponentPortDescription &toconfig); + + static ComponentPortDescription + component_port_description (const Deployment::ComponentPortDescription& src); + }; + + typedef Sequence_Handler < ComponentPortDescription, + ::Deployment::ComponentPortDescriptions, + ::Deployment::ComponentPortDescription, + CPD_Handler::handle_component_port_description > CPD_Functor; + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_CPD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.cpp new file mode 100644 index 00000000000..180213a21d5 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.cpp @@ -0,0 +1,66 @@ +// $Id$ + +#include "CRDD_Handler.h" +#include "Any_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "Property_Handler.h" + +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + + CRDD_Handler::CRDD_Handler (void) + { + } + + CRDD_Handler::~CRDD_Handler (void) + { + } + + ///This method takes a + ///and maps the values from the passed in XSC + ///ConnectionResourceDeploymentDescription to its members. + void CRDD_Handler::get_ConnectionResourceDeploymentDescription (Deployment::ConnectionResourceDeploymentDescription& toconfig, + const ConnectionResourceDeploymentDescription& desc) + { + DANCE_TRACE("CRDD_Handler::get_ConnectionResourceDD"); + + toconfig.targetName = ACE_TEXT_ALWAYS_CHAR ( desc.targetName ().c_str ()); + toconfig.requirementName = ACE_TEXT_ALWAYS_CHAR ( desc.requirementName ().c_str ()); + toconfig.resourceName = ACE_TEXT_ALWAYS_CHAR ( desc.resourceName ().c_str ()); + + std::for_each (desc.begin_property (), + desc.end_property (), + Property_Functor (toconfig.property)); + } + + ConnectionResourceDeploymentDescription + CRDD_Handler::connection_resource_depl_desc ( + const ::Deployment::ConnectionResourceDeploymentDescription& src) + { + DANCE_TRACE("CRDD_Handler::get_ConnectionResourceDeploymentDescription- reverse"); + XMLSchema::string< ACE_TCHAR > tname (ACE_TEXT_CHAR_TO_TCHAR (src.targetName)); + XMLSchema::string< ACE_TCHAR > reqname (ACE_TEXT_CHAR_TO_TCHAR(src.requirementName)); + XMLSchema::string resname (ACE_TEXT_CHAR_TO_TCHAR (src.resourceName)); + + ConnectionResourceDeploymentDescription crdd (tname, + reqname, + resname); + + for (CORBA::ULong i = 0; + i != src.property.length (); + ++i) + { + //crdd.add_property (Property_Handler::get_property (src.property[i])); + } + + + return crdd; + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.h new file mode 100644 index 00000000000..8f5c964aab4 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/CRDD_Handler.h @@ -0,0 +1,67 @@ +//============================================================== +/** + * @file CRDD_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_CRDD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_CRDD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct ConnectionResourceDeploymentDescription; +} + +namespace CIAO +{ + + namespace Config_Handlers + { + + class ConnectionResourceDeploymentDescription; + + /* + * @class CRDD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC ConnectionResourceDeploymentDescription objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Export CRDD_Handler{ + + public: + + CRDD_Handler (void); + virtual ~CRDD_Handler (void); + + ///This method takes a + ///and maps the values from the passed in XSC + ///ConnectionResourceDeploymentDescription to its members. + void get_ConnectionResourceDeploymentDescription (Deployment::ConnectionResourceDeploymentDescription& toconfig, + const ConnectionResourceDeploymentDescription& desc); + + static ConnectionResourceDeploymentDescription + connection_resource_depl_desc ( + const ::Deployment::ConnectionResourceDeploymentDescription& src); + + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_CRDD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Common.h b/modules/CIAO/DAnCE/Config_Handlers/Common.h new file mode 100644 index 00000000000..dec8f4b497a --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Common.h @@ -0,0 +1,46 @@ +// $Id$ +/** + * @file Common.h + * @author Will Otte + * + * Some common definitions for all config_handlers. + */ +#ifndef CONFIG_HANDLERS_COMMON_H +#define CONFIG_HANDLERS_COMMON_H +#include + +namespace CIAO +{ + namespace Config_Handlers + { + /** + * @class Config_Error + * @brief Exception to communicate a config_handlers error + */ + class Config_Error + { + public: + Config_Error (const std::basic_string &name, + const std::basic_string &error) : + name_ (name), + error_ (error) + {}; + + void add_name (const std::basic_string &name) + { + name_ = name + ACE_TEXT (":") + name_; + } + + /// Some identifying information about the element that + /// caused the error + std::basic_string name_; + + /// A human readable error message + std::basic_string error_; + + }; + } +} +#endif /* CONFIG_HANDLERS_COMMON_H */ + + diff --git a/modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp new file mode 100644 index 00000000000..236f3de946b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp @@ -0,0 +1,41 @@ +//$Id$ + +#include "ComponentPropertyDescription_Handler.h" +#include "DataType_Handler.h" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + void + ComponentPropertyDescription_Handler::component_property_description ( + const ComponentPropertyDescription& desc, + ::Deployment::ComponentPropertyDescription& toconfig) + { + DANCE_TRACE("ComponentPropertyDescription_Handler::component_property_description"); + toconfig.name = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ())); + + // Delegate the DataType to the + // DataType_Handler. + + // @@ There is a lurking bug here. + //#if 0 + CORBA::TypeCode_ptr tcptr = toconfig.type.in (); + DataType_Handler::data_type (desc.type (), tcptr); + //#endif /*if 0*/ + } + + ComponentPropertyDescription + ComponentPropertyDescription_Handler::component_property_description ( + const ::Deployment::ComponentPropertyDescription &src) + { + DANCE_TRACE("ComponentPropertyDescription_Handler::component_property_description - reverse"); + XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + DataType dt (DataType_Handler::data_type (src.type)); + ComponentPropertyDescription cpd (name,dt); + return cpd; + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h new file mode 100644 index 00000000000..f87edc7fcea --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h @@ -0,0 +1,61 @@ +//============================================================== +/** +* @file ComponentPropertyDescription_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_ComponentPropertyDescription_Handler_H +#define CIAO_CONFIG_HANDLERS_ComponentPropertyDescription_Handler_H +#include /**/ "ace/pre.h" + + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ +struct ComponentPropertyDescription; +} + +namespace CIAO +{ +namespace Config_Handlers +{ +class ComponentPropertyDescription; + +/* +* @class ComponentPropertyDescription_Handler +* +* @brief Handler class for types. +* +* This class defines handler methods to map values from +* XSC objects, parsed from the descriptor files, to the +* corresponding CORBA IDL type for the schema element. +* +*/ +class Config_Handlers_Export ComponentPropertyDescription_Handler +{ +public: + +/// This method maps the values from the XSC object +/// to the CORBA IDL type +/// . +static void component_property_description ( +const ComponentPropertyDescription& desc, +::Deployment::ComponentPropertyDescription& toconfig); +static ComponentPropertyDescription +component_property_description ( +const ::Deployment::ComponentPropertyDescription &src); +}; +} +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_ComponentPropertyDescription_Handler_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers.mpc b/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers.mpc new file mode 100644 index 00000000000..942730618e8 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers.mpc @@ -0,0 +1,126 @@ +//$Id$ + +project (XSC_XML_Generation) : xscdefaults { + requires += xsc + + xscflags += --cxx-banner-file $(DANCE_ROOT)/docs/schema/xsc-banner.cpp + xscflags += --cxx-header-banner-file $(DANCE_ROOT)/docs/schema/xsc-banner.h + xscflags += --cxx-export-symbol XSC_XML_Handlers_Export + xscflags += --cxx-namespace-regex "%.*Deployment.*%CIAO/Config_Handlers%" //<%quote%> + xscflags += --cxx-export-header XSC_XML_Handlers_Export.h + xscflags += --search-path "$(DANCE_ROOT)/docs/schema" + + custom_only = 1 + + XSC_Files { + gendir = . + $(CIAO_ROOT)/docs/schema/Basic_Deployment_Data.xsd + $(CIAO_ROOT)/docs/schema/Deployment.xsd + $(CIAO_ROOT)/docs/schema/XMI.xsd + $(CIAO_ROOT)/docs/schema/ccd.xsd + $(CIAO_ROOT)/docs/schema/cdd.xsd + $(CIAO_ROOT)/docs/schema/cdp.xsd + $(CIAO_ROOT)/docs/schema/cid.xsd + $(CIAO_ROOT)/docs/schema/cpd.xsd + $(CIAO_ROOT)/docs/schema/iad.xsd + $(CIAO_ROOT)/docs/schema/pcd.xsd + $(CIAO_ROOT)/docs/schema/toplevel.xsd + } + + Source_Files { + } +} + +project (XSC_XML_Handlers) : acelib, xerces, ciao_lib, ciao_xml_utils { + sharedname += XSC_XML_Handlers + dynamicflags = XSC_XML_HANDLERS_BUILD_DLL + macros += XML_USE_PTHREADS + includes += $(DANCE_ROOT)/Config_Handlers $(CIAO_ROOT)/tools + after += XSC_XML_Generation + + Source_Files { + XMI.cpp + Deployment.cpp + ccd.cpp + cdd.cpp + cdp.cpp + cid.cpp + cpd.cpp + iad.cpp + pcd.cpp + toplevel.cpp + Basic_Deployment_Data.cpp + XML_Typedefs.cpp + } + + Header_Files { + XSC_XML_Handlers_Export.h + XML_Typedefs.h + } + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + +} + +project (XSC_Config_Handlers) : dance_deployment_stub, ciao_config_handlers_base, ciao_lib, dance, dance_logger { + after += XSC_DynAny_Handler \ + XSC_Config_Handlers_Common + + sharedname = XSC_Config_Handlers + dynamicflags = CONFIG_HANDLERS_BUILD_DLL + libs += CIAO_XML_Utils \ + XSC_XML_Handlers \ + XSC_DynAny_Handler \ + XSC_Config_Handlers_Common + + Source_Files { + DP_Handler.cpp + CCD_Handler.cpp + ComponentPropertyDescription_Handler.cpp + MDD_Handler.cpp + ComponentPropertyDescription_Handler.cpp + MDD_Handler.cpp + PSPE_Handler.cpp + CRDD_Handler.cpp + IDD_Handler.cpp + ADD_Handler.cpp + ComponentPropertyDescription_Handler.cpp + RDD_Handler.cpp + ID_Handler.cpp + PL_Handler.cpp + XML_File_Intf.cpp + IDREF_Base.cpp + Dump_Obj.cpp + PCD_Handler.cpp + IRDD_Handler.cpp + DD_Handler.cpp + DnC_Dump.cpp + } + + Header_Files { + Config_Handlers_Export.h + } + +} + +project (XSC_Config_Handlers_Common) : dance_deployment_stub, ciao_config_handlers_base, ciao_lib, dance { + after += XSC_DynAny_Handler + sharedname = XSC_Config_Handlers_Common + dynamicflags = CONFIG_HANDLERS_COMMON_BUILD_DLL + + libs += XSC_DynAny_Handler + + Source_Files { + ERE_Handler.cpp + Req_Handler.cpp + DataType_Handler.cpp + Property_Handler.cpp + SatisfierProperty_Handler.cpp + CPD_Handler.cpp + CEPE_Handler.cpp + Any_Handler.cpp + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Common_Export.h b/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Common_Export.h new file mode 100644 index 00000000000..f1583c7e71d --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Common_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s Config_Handlers_Common +// ------------------------------ +#ifndef CONFIG_HANDLERS_COMMON_EXPORT_H +#define CONFIG_HANDLERS_COMMON_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CONFIG_HANDLERS_COMMON_HAS_DLL) +# define CONFIG_HANDLERS_COMMON_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CONFIG_HANDLERS_COMMON_HAS_DLL */ + +#if !defined (CONFIG_HANDLERS_COMMON_HAS_DLL) +# define CONFIG_HANDLERS_COMMON_HAS_DLL 1 +#endif /* ! CONFIG_HANDLERS_COMMON_HAS_DLL */ + +#if defined (CONFIG_HANDLERS_COMMON_HAS_DLL) && (CONFIG_HANDLERS_COMMON_HAS_DLL == 1) +# if defined (CONFIG_HANDLERS_COMMON_BUILD_DLL) +# define Config_Handlers_Common_Export ACE_Proper_Export_Flag +# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CONFIG_HANDLERS_COMMON_BUILD_DLL */ +# define Config_Handlers_Common_Export ACE_Proper_Import_Flag +# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CONFIG_HANDLERS_COMMON_BUILD_DLL */ +#else /* CONFIG_HANDLERS_COMMON_HAS_DLL == 1 */ +# define Config_Handlers_Common_Export +# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARATION(T) +# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CONFIG_HANDLERS_COMMON_HAS_DLL == 1 */ + +// Set CONFIG_HANDLERS_COMMON_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CONFIG_HANDLERS_COMMON_NTRACE) +# if (ACE_NTRACE == 1) +# define CONFIG_HANDLERS_COMMON_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CONFIG_HANDLERS_COMMON_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CONFIG_HANDLERS_COMMON_NTRACE */ + +#if (CONFIG_HANDLERS_COMMON_NTRACE == 1) +# define CONFIG_HANDLERS_COMMON_TRACE(X) +#else /* (CONFIG_HANDLERS_COMMON_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CONFIG_HANDLERS_COMMON_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CONFIG_HANDLERS_COMMON_NTRACE == 1) */ + +#endif /* CONFIG_HANDLERS_COMMON_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Export.h b/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Export.h new file mode 100644 index 00000000000..64dec8bdfa5 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Config_Handlers_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s Config_Handlers +// ------------------------------ +#ifndef CONFIG_HANDLERS_EXPORT_H +#define CONFIG_HANDLERS_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CONFIG_HANDLERS_HAS_DLL) +# define CONFIG_HANDLERS_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CONFIG_HANDLERS_HAS_DLL */ + +#if !defined (CONFIG_HANDLERS_HAS_DLL) +# define CONFIG_HANDLERS_HAS_DLL 1 +#endif /* ! CONFIG_HANDLERS_HAS_DLL */ + +#if defined (CONFIG_HANDLERS_HAS_DLL) && (CONFIG_HANDLERS_HAS_DLL == 1) +# if defined (CONFIG_HANDLERS_BUILD_DLL) +# define Config_Handlers_Export ACE_Proper_Export_Flag +# define CONFIG_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CONFIG_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CONFIG_HANDLERS_BUILD_DLL */ +# define Config_Handlers_Export ACE_Proper_Import_Flag +# define CONFIG_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CONFIG_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CONFIG_HANDLERS_BUILD_DLL */ +#else /* CONFIG_HANDLERS_HAS_DLL == 1 */ +# define Config_Handlers_Export +# define CONFIG_HANDLERS_SINGLETON_DECLARATION(T) +# define CONFIG_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CONFIG_HANDLERS_HAS_DLL == 1 */ + +// Set CONFIG_HANDLERS_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CONFIG_HANDLERS_NTRACE) +# if (ACE_NTRACE == 1) +# define CONFIG_HANDLERS_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CONFIG_HANDLERS_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CONFIG_HANDLERS_NTRACE */ + +#if (CONFIG_HANDLERS_NTRACE == 1) +# define CONFIG_HANDLERS_TRACE(X) +#else /* (CONFIG_HANDLERS_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CONFIG_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CONFIG_HANDLERS_NTRACE == 1) */ + +#endif /* CONFIG_HANDLERS_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Config_Handlers/DD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DD_Handler.cpp new file mode 100644 index 00000000000..81ec2526fc1 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DD_Handler.cpp @@ -0,0 +1,212 @@ +// $Id$ + +#include "XML_Typedefs.h" +#include "SatisfierProperty_Handler.h" +#include "DD_Handler.h" +#include "Any_Handler.h" +#include "Deployment.hpp" +#include "DAnCE/Deployment/Deployment_TargetDataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +using namespace std; + +namespace CIAO +{ + namespace Config_Handlers + { + DD_Handler::DD_Handler (const ACE_TCHAR *file) : + idl_domain_(0), + domain_ (0), + retval_ (false) + { + DANCE_TRACE("DP_PCD_Handler::constructor"); + + XERCES_CPP_NAMESPACE::DOMDocument *dom = + XML_Helper::XML_HELPER.create_dom (file); + + if (!dom) + throw DD_Handler::NoDomain (); + + Domain *dm = + new Domain (reader::domain (dom)); + + // Domain d = domain (dom); + + this->domain_.reset (dm); + + if (!this->build_domain ()) + throw NoDomain (); + } + + DD_Handler::DD_Handler (Domain *dmn): + idl_domain_(0), + domain_(dmn), + retval_(false) + { + DANCE_TRACE("DP_PCD_Handler::constructor - Domain"); + if(!this->build_domain ()) + throw NoDomain (); + } + + DD_Handler::DD_Handler (::Deployment::Domain *dmn): + idl_domain_(dmn), + domain_(0), + retval_(false) + { + if(!this->build_xsc()) + throw NoDomain (); + } + + DD_Handler::~DD_Handler (void) + { + } + + bool + DD_Handler::build_domain () + { + DANCE_TRACE("DP_PCD_Handler::build_domain"); + this->idl_domain_.reset ( new ::Deployment::Domain ); + + // Read in the name + // Check if the label is there or not + if (domain_->label_p ()) + this->idl_domain_->label = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (domain_->label ().c_str ())); + + if (domain_->UUID_p ()) + this->idl_domain_->UUID = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (domain_->UUID ().c_str ())); + + CORBA::ULong len = domain_->count_node (); + this->idl_domain_->node.length (len); + + //Resource _resource; + int i =0; + for (Domain::node_const_iterator iter = domain_->begin_node (); + iter != domain_->end_node (); + ++iter,++i + ) + { + // Node* thisNode = (Node*)iter; + this->idl_domain_->node[i].name = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR ((*iter)->name ().c_str ())); + + if ((*iter)->label_p ()) + this->idl_domain_->node[i].label = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR ((*iter)->label ().c_str ())); + + // length is hard-coded for now ... + // here iterate over the resources ... + CORBA::ULong res_len = (*iter)->count_resource (); + this->idl_domain_->node[i].resource.length (res_len); + + int res_id=0; + // FOR EACH RESOURCE .... + for (Node::resource_const_iterator res_iter = (*iter)->begin_resource (); + res_iter != (*iter)->end_resource (); + res_iter++, res_id++) + { + + this->idl_domain_->node[i].resource[res_id].name = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR ((*res_iter)->name ().c_str ())); + + CORBA::ULong resource_type_len = (*res_iter)->count_resourceType (); + this->idl_domain_->node[i].resource[res_id].resourceType.length (resource_type_len); + + int res_type_id =0; + + // FOR EACH RESOURCE TYPE + for (Resource::resourceType_const_iterator res_type_iter = + (*res_iter)->begin_resourceType (); + res_type_iter != (*res_iter)->end_resourceType (); + res_type_iter++, res_type_id++) + { + this->idl_domain_->node[i].resource[res_id].resourceType[res_type_id] = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR ((*res_type_iter)->c_str ())); + } + + CORBA::ULong property_len = (*res_iter)->count_property (); + this->idl_domain_->node[i].resource[res_id].property.length (property_len); + + // int property_id =0; + + std::for_each ((*res_iter)->begin_property (), + (*res_iter)->end_property (), + SatisfierProperty_Functor (this->idl_domain_->node[i].resource[res_id].property)); + + /* + //FOR EACH PROPERTY + for (Resource::property_const_iterator property_iter = + (*res_iter)->begin_property (); + property_iter != (*res_iter)->end_property (); + property_iter++, property_id++) + { + this->idl_domain_->node[i].resource[res_id].property[property_id ].name = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (property_iter->name ().c_str ())); + + + this->idl_domain_->node[i].resource[res_id].property[property_id].kind = + ::Deployment::Quantity; + + Any the_any = property_iter->value (); + CORBA::Any a_corba_any; + Any_Handler::extract_into_any (the_any , a_corba_any); + this->idl_domain_->node[i].resource[res_id].property[property_id].value + = a_corba_any; + } + */ + } + } + + return true; + + } + + bool + DD_Handler::build_xsc () + { + return true; + } + + ::Deployment::Domain const * + DD_Handler::domain_idl () const + { + if(!this->idl_domain_.get()) + throw NoDomain (); + + //else + return this->idl_domain_.get(); + } + + ::Deployment::Domain * + DD_Handler::domain_idl () + { + if(!this->idl_domain_.get()) + throw NoDomain(); + + //else + return this->idl_domain_.release(); + } + + Domain const * + DD_Handler::domain_xsc () const + { + if(!this->domain_.get()) + throw NoDomain (); + + //else + return this->domain_.get(); + } + + Domain * + DD_Handler::domain_xsc () + { + if(!this->domain_.get()) + throw NoDomain (); + + //else + return this->domain_.release(); + } + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DD_Handler.h new file mode 100644 index 00000000000..f3a9e0c60c9 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DD_Handler.h @@ -0,0 +1,114 @@ +// $Id$ +//====================================== +/** +* @file DD_Handler.h +* +* @brief Contains the Domain Descriptior +* Handler +* +* @author Nilabja Roy +* +*/ +//====================================== + +#ifndef CIAO_CONFIG_HANDLERS_DD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" +#include "ace/Auto_Ptr.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ +struct Domain; +} + +namespace CIAO +{ +namespace Config_Handlers +{ +class Domain; + +/* +* @class DD_Handler +* +* @brief Handler class for +*/ + +class Config_Handlers_Export DD_Handler +{ +public: +class NoDomain {}; + +/** +* @param file The file to be read +*/ +DD_Handler (const ACE_TCHAR *file); + +/** +* @param dmn The Domain structure +*/ +DD_Handler(Domain *dmn); + +/** +* @param dmn The Deployment::Domain structure +*/ +DD_Handler(::Deployment::Domain *dmn); + +/** +*/ +~DD_Handler (void); + +/** +* @brief Returns the const IDL domain +* @return Domain* the IDL domain pointer +*/ + ::Deployment::Domain const *domain_idl (void) const; + +/** +* @brief Returns the IDL domain +* @return Domain* the IDL domain pointer +*/ + ::Deployment::Domain *domain_idl (void); + +/** +* @brief Returns the const XSC domain +* @return Domain* the XSC domain pointer +*/ + Domain const *domain_xsc (void) const; + +/** +* @brief Returns the XSC domain +* @return Domain* the XSC domain pointer +*/ + Domain *domain_xsc (void); + +private: +/** +* @brief builds the domain structure +*/ +bool build_domain (); + +/** +* @brief builds the XSC data structure +*/ +bool build_xsc (); + +/// The Deployment Domain structure +auto_ptr < ::Deployment::Domain > idl_domain_; + +/// The XSC Domain structure +auto_ptr domain_; + +/// The return value used +bool retval_; +}; +} +} + +#include /**/ "ace/post.h" +#endif /* DD_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DP_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DP_Handler.cpp new file mode 100644 index 00000000000..c045e15c17c --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DP_Handler.cpp @@ -0,0 +1,276 @@ +// $Id$ + +#include "DP_Handler.h" +#include "ace/UUID.h" +#include "DAnCE/Deployment/Deployment_DataC.h" + +#include "CCD_Handler.h" +#include "ADD_Handler.h" +#include "MDD_Handler.h" +#include "IDD_Handler.h" +#include "ID_Handler.h" +#include "PL_Handler.h" +#include "Property_Handler.h" +#include "cdp.hpp" + +#include "PCD_Handler.h" + +ACE_RCSID (Config_Handlers, + DP_Handler, + "$Id$") + + namespace CIAO + { + namespace Config_Handlers + { + DP_Handler::DP_Handler (deploymentPlan &dp) + : xsc_dp_ (0) + , idl_dp_ (0) + , retval_ (true) + { + if (!this->resolve_plan (dp)) + throw; + } + + DP_Handler::DP_Handler (const ::Deployment::DeploymentPlan &plan) + : xsc_dp_ (new deploymentPlan), + idl_dp_ (0), + retval_ (0) + { + if (!this->build_xsc (plan)) + throw; + } + + DP_Handler::~DP_Handler (void) + throw () + { + } + + deploymentPlan const * + DP_Handler::xsc (void) const + { + if (this->retval_ && this->xsc_dp_.get () != 0) + return this->xsc_dp_.get (); + + throw NoPlan (); + } + + deploymentPlan * + DP_Handler::xsc (void) + { + if (this->retval_ && this->xsc_dp_.get () != 0) + return this->xsc_dp_.release (); + + throw NoPlan (); + } + + ::Deployment::DeploymentPlan const * + DP_Handler::plan (void) const + { + if (this->retval_ && this->idl_dp_.get () != 0) + return this->idl_dp_.get (); + + throw NoPlan (); + } + + ::Deployment::DeploymentPlan * + DP_Handler::plan (void) + { + if (this->retval_ && this->idl_dp_.get () != 0) + return this->idl_dp_.release (); + + throw NoPlan (); + } + + bool + DP_Handler::resolve_plan (deploymentPlan &xsc_dp) + { + DANCE_TRACE ("DP_Handler::resolve_plan"); + + ::Deployment::DeploymentPlan *tmp = + new Deployment::DeploymentPlan; + + this->idl_dp_.reset (tmp); + + // Read in the label, if present, since minoccurs = 0 + if (xsc_dp.label_p ()) + { + this->idl_dp_->label = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (xsc_dp.label ().c_str ())); + } + + // Read in the UUID, if present + if (xsc_dp.UUID_p ()) + { + this->idl_dp_->UUID = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (xsc_dp.UUID ().c_str ())); + } + + // Similar thing for dependsOn + for (deploymentPlan::dependsOn_const_iterator dstart = xsc_dp.begin_dependsOn (); + dstart != xsc_dp.end_dependsOn (); + ++dstart) + { + CORBA::ULong len = this->idl_dp_->dependsOn.length (); + this->idl_dp_->dependsOn.length (len + 1); + ID_Handler::get_ImplementationDependency (*(*dstart), + this->idl_dp_->dependsOn [len]); + + } + + // ... An the property stuff + for (deploymentPlan::infoProperty_const_iterator pstart = xsc_dp.begin_infoProperty (); + pstart != xsc_dp.end_infoProperty (); + ++pstart) + { + CORBA::ULong len = + this->idl_dp_->infoProperty.length (); + + this->idl_dp_->infoProperty.length (len + 1); + + Property_Handler::handle_property (*(*pstart), + this->idl_dp_->infoProperty [len]); + } + + // Read in the realizes, if present + if (xsc_dp.realizes_p ()) + { + CCD_Handler::component_interface_descr ( + xsc_dp.realizes (), + this->idl_dp_->realizes); + } + + ADD_Handler::artifact_deployment_descrs (xsc_dp, + this->idl_dp_->artifact); + + MDD_Handler::mono_deployment_descriptions (xsc_dp, + this->idl_dp_->implementation); + + IDD_Handler::instance_deployment_descrs (xsc_dp, + this->idl_dp_->instance); + + this->idl_dp_->connection.length (xsc_dp.count_connection ()); + std::for_each (xsc_dp.begin_connection (), + xsc_dp.end_connection (), + PCD_Functor (this->idl_dp_->connection)); + + this->idl_dp_->localityConstraint.length (xsc_dp.count_localityConstraint ()); + + std::for_each (xsc_dp.begin_localityConstraint (), + xsc_dp.end_localityConstraint (), + PL_Functor (this->idl_dp_->localityConstraint)); + + //PCD_Handler::get_PlanConnectionDescription (xsc_dp, this->idl_dp_->connection); + + return true; + } + + bool + DP_Handler::build_xsc (const ::Deployment::DeploymentPlan &plan) + { + DANCE_TRACE ("DP_Handler::build_xsc"); + + // Initialize the UUID generator. + ACE_Utils::UUID_GENERATOR::instance ()->init (); + + // Clear IDREF tables + IDD_Handler::IDREF.unbind_refs (); + MDD_Handler::IDREF.unbind_refs (); + ADD_Handler::IDREF.unbind_refs (); + + + size_t len; //Used for checking the length of struct data members + + // Read in the label, if present, since minoccurs = 0 + if (plan.label != 0) + { + XMLSchema::string< ACE_TCHAR > i(ACE_TEXT_CHAR_TO_TCHAR (plan.label)); + this->xsc_dp_->label(i); + } + + // Read in the UUID, if present + if (plan.UUID != 0) + { + XMLSchema::string< ACE_TCHAR > j(ACE_TEXT_CHAR_TO_TCHAR(plan.UUID)); + this->xsc_dp_->UUID(j); + } + + // Similar thing for dependsOn + len = plan.dependsOn.length(); + for (size_t j = 0; + j < len; + ++j) + { + //this->xsc_dp_->add_dependsOn(ID_Handler::impl_dependency(plan.dependsOn[j])); + } + + // ... And the property stuff + len = plan.infoProperty.length(); + for (size_t q = 0; + q < len; + q++) + { + if (ACE_OS::strcmp (plan.infoProperty[q].name.in (), + "CIAOServerResources") == 0) + { + ACE_ERROR ((LM_ERROR, + "(%P|%t) DP_Handler: Dumping of ServerResources not currently supported.")); + continue; + } + + //this->xsc_dp_->add_infoProperty (Property_Handler::get_property (plan.infoProperty[q])); + } + + + // We are assuming there is a realizes for the moment + // @@ We may want to change this at a later date by creating a sequence of + // @@ ComponentInterfaceDescriptions in the DeploymentPlan in ../DAnCE/Deployment/Deployment_Data.idl + // @@ so we can check for length + this->xsc_dp_->realizes(CCD_Handler::component_interface_descr(plan.realizes)); + if (!this->xsc_dp_->realizes_p()) + { + ACE_ERROR ((LM_ERROR, + "(%P|%t) DP_Handler: " + "Error parsing Component Interface Descriptor.")); + return false; + } + + //Take care of the artifact(s) if they exist + len = plan.artifact.length(); + for(size_t k = 0; + k < len; + k++) + { + //this->xsc_dp_->add_artifact (ADD_Handler::artifact_deployment_descr (plan.artifact[k])); + } + + //Take care of the implementation(s) if they exist + len = plan.implementation.length(); + for(size_t l = 0; + l < len; + l++) + { + //this->xsc_dp_->add_implementation (MDD_Handler::mono_deployment_description (plan.implementation[l])); + } + + //Ditto for the instance(s) + len = plan.instance.length(); + for(size_t m = 0; + m < len; + m++) + { + //this->xsc_dp_->add_instance (IDD_Handler::instance_deployment_descr (plan.instance[m])); + } + + //Finally, take care of the Connection Planning + len = plan.connection.length(); + for(size_t n = 0; n < len; n++) + { + //this->xsc_dp_->add_connection (PCD_Handler::get_PlanConnectionDescription (plan.connection[n])); + } + + retval_ = true; + return true; + } + } + } diff --git a/modules/CIAO/DAnCE/Config_Handlers/DP_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DP_Handler.h new file mode 100644 index 00000000000..82d93aaa62f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DP_Handler.h @@ -0,0 +1,87 @@ +//============================================================== +/** + * @file DP_Handler.h + * + * $Id$ + * + * @author Bala Natarajan + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_DP_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DP_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" +#include +using std::auto_ptr; + + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace Deployment +{ + struct DeploymentPlan ; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class deploymentPlan; + + /* + * @class DP_Handler + * + * @brief Handler for Deployment::DeploymentPlan + */ + class Config_Handlers_Export DP_Handler + { + public: + class NoPlan {}; + + /// Use this constructor if you want to use + /// the XSC->IDL mapping + DP_Handler (deploymentPlan &dp); + + /// Use this constructor if you want to use + /// the IDL->XSC mapping + DP_Handler (const ::Deployment::DeploymentPlan &plan); + + ~DP_Handler (void) + throw (); + + /// Generates the IDL->XSC mapping. returns + /// null if the method fails or if the class was + /// constructed with the wrong source. + deploymentPlan const *xsc (void) const; + + deploymentPlan *xsc (void); + + /// Generates the XSC->IDL mapping. returns null + /// if the method fails or the class was constructed + ::Deployment::DeploymentPlan const *plan (void) const; + + ::Deployment::DeploymentPlan *plan (void); + + private: + + bool resolve_plan (deploymentPlan &dp); + + bool build_xsc (const ::Deployment::DeploymentPlan &plan); + + private: + auto_ptr< deploymentPlan > xsc_dp_; + + auto_ptr< ::Deployment::DeploymentPlan> idl_dp_; + + bool retval_; + }; + } +} + +#include /**/ "ace/post.h" +#endif /*CIAO_CONFIG_HANDLERS_DP_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.cpp new file mode 100644 index 00000000000..d69f6035897 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.cpp @@ -0,0 +1,107 @@ +// $Id$ + +#include "DP_PCD_Handler.h" +#include "CEPE_Handler.h" +#include "PSPE_Handler.h" +#include "ERE_Handler.h" +#include "CRDD_Handler.h" +#include "PCD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "cdp.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + void + DP_PCD_Handler::plan_connection_descrs ( + const DeploymentPlan &src, + Deployment::PlanConnectionDescriptions& dest) + { + DANCE_TRACE("DP_PCD_Handler::plan_connection_descrs"); + DeploymentPlan::connection_const_iterator cci_e = + src.end_connection (); + + CORBA::ULong pos = 0; + dest.length (src.count_connection ()); + for (DeploymentPlan::connection_const_iterator cci_b = + src.begin_connection (); + cci_b != cci_e; + ++cci_b) + { + DP_PCD_Handler::plan_connection_descr (*(cci_b), + dest[pos++]); + } + } + + PlanConnectionDescription + DP_PCD_Handler::plan_connection_descr ( + const Deployment::PlanConnectionDescription &src) + { + DANCE_TRACE("DP_PCD_Handler::plan_connection_descr"); + PlanConnectionDescription pcd = PCD_Handler::get_PlanConnectionDescription(src); + return pcd; + } + + void + DP_PCD_Handler::plan_connection_descr ( + const PlanConnectionDescription &src, + Deployment::PlanConnectionDescription &dest) + { + DANCE_TRACE("DP_PCD_Handler::plan_connection_descr - reverse"); + dest.name = + src.name ().c_str (); + + if (src.source_p ()) + { + // There will be only one as per the schema + dest.source.length (1); + dest.source[0] = + src.source ().c_str (); + } + + + CEPE_Handler::external_port_endpoints (src, + dest.externalEndpoint); + ERE_Handler::external_ref_endpoints (src, + dest.externalReference); + + PSPE_Handler::sub_component_port_endpoints (src, + dest.internalEndpoint); + +#if 0 + // @@MAJO: Need to figure how to use this. + if (desc.deployedResource_p ()) + { + CRDD_Handler crddhandler; + + toconfig.deployedResource.length ( + toconfig.deployedResource.length () + 1); + + crddhandler.get_ConnectionResourceDeploymentDescription ( + toconfig.deployedResource[toconfig.deployedResource.length () - 1], + desc.deployedResource ()); + } + + if (desc.deployRequirement_p ()) + { + + // @@ MAJO: Not sure how to use this + //Create the handler for the requirements. + Requirement_Handler reqhandler; + + //Increase the sequence length and delgate + //the Requirement to the Req_Handler. + toconfig.deployRequirement.length ( + toconfig.deployRequirement.length () + 1); + reqhandler.get_Requirement ( + toconfig.deployRequirement[toconfig.deployRequirement.length () - 1], + desc.deployRequirement ()); + + + } +#endif /*if 0*/ + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.h new file mode 100644 index 00000000000..eceb6f03bb6 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DP_PCD_Handler.h @@ -0,0 +1,67 @@ +//============================================================== +/** + * @file DP_PCD_Handler.h + * + * $Id$ + * + * Handler for Deployment::PlanConnectionHandler + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_DP_PCD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DP_PCD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct PlanConnectionDescription; + class PlanConnectionDescriptions; +} + +namespace CIAO +{ + + namespace Config_Handlers + { + class DeploymentPlan; + class PlanConnectionDescription; + + /* + * @class DP_PCD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC PlanConnectionDescription objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Export DP_PCD_Handler + { + public: + static void plan_connection_descrs ( + const DeploymentPlan &src, + Deployment::PlanConnectionDescriptions& toconfig); + + static PlanConnectionDescription plan_connection_descr( + const Deployment::PlanConnectionDescription &src); + + private: + static void plan_connection_descr ( + const PlanConnectionDescription& desc, + Deployment::PlanConnectionDescription& toconfig); + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_PCD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.cpp new file mode 100644 index 00000000000..57318d35a4a --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.cpp @@ -0,0 +1,179 @@ +//$Id$ + +#include "DataType_Handler.h" +#include "tao/AnyTypeCode/TypeCode.h" +#include "tao/AnyTypeCode/TypeCode_Constants.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + + DataType_Handler::DataType_Handler (void) + { + } + DataType_Handler::~DataType_Handler (void) + { + } + + ///This method takes a + ///and returns the corresponding CORBA::TypeCode. + void + DataType_Handler::data_type (const DataType& desc, + CORBA::TypeCode_ptr& type) + { + DANCE_TRACE("DataType_Handler::data_type"); + TCKind kind (desc.kind ()); + + switch (kind.integral ()) + { + case TCKind::tk_null_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_null); + break; + + case TCKind::tk_short_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_short); + break; + + case TCKind::tk_long_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_long); + break; + + case TCKind::tk_ushort_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_ushort); + break; + + case TCKind::tk_ulong_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_ulong); + break; + + case TCKind::tk_float_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_float); + break; + + case TCKind::tk_double_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_double); + break; + + case TCKind::tk_boolean_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_boolean); + break; + + case TCKind::tk_char_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_char); + break; + + case TCKind::tk_octet_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_octet); + break; + + case TCKind::tk_string_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_string); + break; + + case TCKind::tk_longlong_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_longlong); + break; + + case TCKind::tk_ulonglong_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_ulonglong); + break; + + case TCKind::tk_longdouble_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_longdouble); + break; + + case TCKind::tk_wchar_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_wchar); + break; + + case TCKind::tk_wstring_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_wstring); + break; + + case TCKind::tk_any_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_any); + break; + + case TCKind::tk_TypeCode_l: + type = CORBA::TypeCode::_duplicate (CORBA::_tc_TypeCode); + break; + + default: + ACE_ERROR ((LM_ERROR, "DataType_Handler::data_type, Invalid typecode in any\n")); + throw 1; + } + + // This case used to be supported...is it not in the schema? + // case TCKind::tk_Object) + // type = CORBA::TypeCode::_duplicate (CORBA::_tc_Object);*/ + + } + + DataType + DataType_Handler::data_type (const CORBA::TypeCode_ptr& src) + { + DANCE_TRACE("DataType_Handler::data_type - reverse"); + switch (src->kind ()) + { + case ::CORBA::tk_null: + return DataType (TCKind::tk_null); + break; + case CORBA::tk_short: + return DataType (TCKind::tk_short); + break; + case CORBA::tk_long: + return DataType (TCKind::tk_long); + break; + case CORBA::tk_ushort: + return DataType (TCKind::tk_ushort); + break; + case CORBA::tk_ulong: + return DataType (TCKind::tk_ulong); + break; + case CORBA::tk_float: + return DataType (TCKind::tk_float); + break; + case CORBA::tk_double: + return DataType (TCKind::tk_double); + break; + case CORBA::tk_boolean: + return DataType (TCKind::tk_boolean); + break; + case CORBA::tk_char: + return DataType (TCKind::tk_char); + break; + case CORBA::tk_octet: + return DataType (TCKind::tk_octet); + break; + case CORBA::tk_string: + return DataType (TCKind::tk_string); + break; + case CORBA::tk_longlong: + return DataType (TCKind::tk_longlong); + break; + case CORBA::tk_ulonglong: + return DataType (TCKind::tk_ulonglong); + break; + case CORBA::tk_longdouble: + return DataType (TCKind::tk_longdouble); + break; + case CORBA::tk_wchar: + return DataType (TCKind::tk_wchar); + break; + case CORBA::tk_wstring: + return DataType (TCKind::tk_wstring); + break; + case CORBA::tk_any: + return DataType (TCKind::tk_any); + break; + case CORBA::tk_TypeCode: + return DataType (TCKind::tk_TypeCode); + default: + ACE_ERROR ((LM_ERROR, "DataType_Handler::data_type, Invalid typecode\n")); + throw 1; + } + throw 1; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.h new file mode 100644 index 00000000000..b2a3240fbec --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DataType_Handler.h @@ -0,0 +1,62 @@ +//================================================ +/** +* @file DataType_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================ + +#ifndef DATATYPE_HANDLER_H +#define DATATYPE_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "DAnCE/Deployment/DeploymentC.h" +#include "Basic_Deployment_Data.hpp" + +#include "Config_Handlers_Common_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace CIAO{ + +namespace Config_Handlers{ + +/* +* @class DataType_Handler +* +* @brief Handler class for types. +* +* This class defines handler methods to map values from +* XSC objects, parsed from the descriptor files, to the +* corresponding CORBA IDL type for the schema element. +* +*/ + +class Config_Handlers_Common_Export DataType_Handler { + +public: + +DataType_Handler (void); +virtual ~DataType_Handler (void); + +////This method takes a +///and returns the corresponding CORBA::TypeCode. +static void +data_type (const DataType& desc, +CORBA::TypeCode_ptr& type); + + +static DataType data_type (const CORBA::TypeCode_ptr& type); +}; + +} +} + +#include /**/ "ace/post.h" +#endif /* DATATYPE_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Deployment.cpp b/modules/CIAO/DAnCE/Config_Handlers/Deployment.cpp new file mode 100644 index 00000000000..cce77ace34b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Deployment.cpp @@ -0,0 +1,854 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "Deployment.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace reader + { + ::CIAO::Config_Handlers::Domain + domain (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("domain")) + { + ::CIAO::Config_Handlers::Domain r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::deploymentPlan + DeploymentPlan (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("DeploymentPlan")) + { + ::CIAO::Config_Handlers::deploymentPlan r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::ImplementationArtifactDescription + implementationArtifactDescription (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("implementationArtifactDescription")) + { + ::CIAO::Config_Handlers::ImplementationArtifactDescription r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription + componentInterfaceDescription (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("componentInterfaceDescription")) + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::ComponentImplementationDescription + componentImplementationDescription (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("componentImplementationDescription")) + { + ::CIAO::Config_Handlers::ComponentImplementationDescription r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::ComponentPackageDescription + componentPackageDescription (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("componentPackageDescription")) + { + ::CIAO::Config_Handlers::ComponentPackageDescription r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::PackageConfiguration + packageConfiguration (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("packageConfiguration")) + { + ::CIAO::Config_Handlers::PackageConfiguration r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + + namespace reader + { + ::CIAO::Config_Handlers::TopLevelPackageDescription + topLevelPackageDescription (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("topLevelPackageDescription")) + { + ::CIAO::Config_Handlers::TopLevelPackageDescription r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace writer + { + void + domain (::CIAO::Config_Handlers::Domain const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("domain")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::Domain, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::Node, + virtual ::CIAO::Config_Handlers::Writer::Interconnect, + virtual ::CIAO::Config_Handlers::Writer::Bridge, + virtual ::CIAO::Config_Handlers::Writer::Resource, + virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty, + virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::SharedResource, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + DeploymentPlan (::CIAO::Config_Handlers::deploymentPlan const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("DeploymentPlan")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::deploymentPlan, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription, + virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind, + virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription, + virtual ::CIAO::Config_Handlers::Writer::MonolithicDeploymentDescription, + virtual ::CIAO::Config_Handlers::Writer::IdRef, + virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::Requirement, + virtual ::CIAO::Config_Handlers::Writer::InstanceDeploymentDescription, + virtual ::CIAO::Config_Handlers::Writer::InstanceResourceDeploymentDescription, + virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind, + virtual ::CIAO::Config_Handlers::Writer::PlanConnectionDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::PlanSubcomponentPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint, + virtual ::CIAO::Config_Handlers::Writer::ConnectionResourceDeploymentDescription, + virtual ::CIAO::Config_Handlers::Writer::PlanPropertyMapping, + virtual ::CIAO::Config_Handlers::Writer::PlanSubcomponentPropertyReference, + virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency, + virtual ::CIAO::Config_Handlers::Writer::ArtifactDeploymentDescription, + virtual ::CIAO::Config_Handlers::Writer::ResourceDeploymentDescription, + virtual ::CIAO::Config_Handlers::Writer::PlanLocality, + virtual ::CIAO::Config_Handlers::Writer::PlanLocalityKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + implementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("implementationArtifactDescription")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::Requirement, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + componentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("componentInterfaceDescription")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription, + virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind, + virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + componentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("componentImplementationDescription")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription, + virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind, + virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription, + virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation, + virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference, + virtual ::CIAO::Config_Handlers::Writer::Requirement, + virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::IdRef, + virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint, + virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference, + virtual ::CIAO::Config_Handlers::Writer::Locality, + virtual ::CIAO::Config_Handlers::Writer::LocalityKind, + virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement, + virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind, + virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact, + virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription, + virtual ::CIAO::Config_Handlers::Writer::Capability, + virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty, + virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind, + virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + componentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("componentPackageDescription")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription, + virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind, + virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription, + virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation, + virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription, + virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference, + virtual ::CIAO::Config_Handlers::Writer::Requirement, + virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::IdRef, + virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint, + virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference, + virtual ::CIAO::Config_Handlers::Writer::Locality, + virtual ::CIAO::Config_Handlers::Writer::LocalityKind, + virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement, + virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind, + virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact, + virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription, + virtual ::CIAO::Config_Handlers::Writer::Capability, + virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty, + virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind, + virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + packageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("packageConfiguration")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription, + virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind, + virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription, + virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation, + virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription, + virtual ::CIAO::Config_Handlers::Writer::Requirement, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport, + virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::IdRef, + virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint, + virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference, + virtual ::CIAO::Config_Handlers::Writer::Locality, + virtual ::CIAO::Config_Handlers::Writer::LocalityKind, + virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement, + virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind, + virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact, + virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription, + virtual ::CIAO::Config_Handlers::Writer::Capability, + virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty, + virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind, + virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + + namespace writer + { + void + topLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("topLevelPackageDescription")) + { + throw 1; + } + + struct W : virtual ::CIAO::Config_Handlers::Writer::TopLevelPackageDescription, + virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription, + virtual ::CIAO::Config_Handlers::Writer::Property, + virtual ::CIAO::Config_Handlers::Writer::Any, + virtual ::CIAO::Config_Handlers::Writer::DataType, + virtual ::CIAO::Config_Handlers::Writer::TCKind, + virtual ::CIAO::Config_Handlers::Writer::EnumType, + virtual ::CIAO::Config_Handlers::Writer::StructType, + virtual ::CIAO::Config_Handlers::Writer::StructMemberType, + virtual ::CIAO::Config_Handlers::Writer::ValueType, + virtual ::CIAO::Config_Handlers::Writer::ValueMemberType, + virtual ::CIAO::Config_Handlers::Writer::SequenceType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::AliasType, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::DataValue, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::NamedValue, + virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription, + virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind, + virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription, + virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation, + virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription, + virtual ::CIAO::Config_Handlers::Writer::Requirement, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference, + virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport, + virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::IdRef, + virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >, + virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint, + virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint, + virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping, + virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference, + virtual ::CIAO::Config_Handlers::Writer::Locality, + virtual ::CIAO::Config_Handlers::Writer::LocalityKind, + virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription, + virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement, + virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind, + virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact, + virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription, + virtual ::CIAO::Config_Handlers::Writer::Capability, + virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty, + virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind, + virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Deployment.hpp b/modules/CIAO/DAnCE/Config_Handlers/Deployment.hpp new file mode 100644 index 00000000000..2a039912b19 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Deployment.hpp @@ -0,0 +1,221 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef DEPLOYMENT_HPP +#define DEPLOYMENT_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "Basic_Deployment_Data.hpp" + +#include "cpd.hpp" + +#include "cdd.hpp" + +#include "cdp.hpp" + +#include "toplevel.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::Domain + domain (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::deploymentPlan + DeploymentPlan (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::ImplementationArtifactDescription + implementationArtifactDescription (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::ComponentInterfaceDescription + componentInterfaceDescription (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::ComponentImplementationDescription + componentImplementationDescription (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::ComponentPackageDescription + componentPackageDescription (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::PackageConfiguration + packageConfiguration (xercesc::DOMDocument const*); + } + + + namespace reader + { + XSC_XML_Handlers_Export + ::CIAO::Config_Handlers::TopLevelPackageDescription + topLevelPackageDescription (xercesc::DOMDocument const*); + } + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace writer + { + XSC_XML_Handlers_Export + void + domain (::CIAO::Config_Handlers::Domain const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + DeploymentPlan (::CIAO::Config_Handlers::deploymentPlan const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + implementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + componentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + componentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + componentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + packageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const&, xercesc::DOMDocument*); + } + + + namespace writer + { + XSC_XML_Handlers_Export + void + topLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const&, xercesc::DOMDocument*); + } + } +} + +#endif // DEPLOYMENT_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.cpp b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.cpp new file mode 100644 index 00000000000..3bee947afd3 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.cpp @@ -0,0 +1,982 @@ +// $Id$ + +#include "ace/Log_Msg.h" +#include "tao/SystemException.h" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DnC_Dump.h" +#include "DnC_Dump_T.h" +#include + +using namespace ::Deployment::DnC_Dump_T; +namespace Deployment +{ + void + DnC_Dump::dump (const char* caption, const ::CORBA::StringSeq &str_seq) + { + CORBA::ULong size = str_seq.length (); + + if (size != 0) + { + Dump_Obj dump_obj (caption); + + for (CORBA::ULong i = 0; i < size; ++i) + { + ACE_DEBUG ((LM_DEBUG, "%s%s %d:\n", + Dump_Obj::indent(), caption, i)); + ACE_DEBUG ((LM_DEBUG, "%s %s:\n", + Dump_Obj::indent(), str_seq[i].in ())); + } + } + } + + // Dumps a string + void DnC_Dump::dump (const char* caption, const TAO::String_Manager& str) + { + ACE_DEBUG ((LM_DEBUG, "%s%s: %s\n", Dump_Obj::indent(), + caption, str.in())); + } + + // Dumps a boolean + void DnC_Dump::dump (const char* caption, const CORBA::Boolean& val) + { + ACE_DEBUG ((LM_DEBUG, "%s%s: %s\n", Dump_Obj::indent(), + caption, val ? "true" : "false")); + } + + /* + * Object dump methods + */ + + // SatisfierProperty + void DnC_Dump::dump (const Deployment::SatisfierProperty& sp) + { + Dump_Obj dump_obj("SatisfierProperty"); + dump ("name", sp.name); + + ACE_DEBUG ((LM_DEBUG, "%skind: ", Dump_Obj::indent())); + switch (sp.kind) { + case Quantity: ACE_DEBUG ((LM_DEBUG, "Quantity\n")); break; + case Capacity: ACE_DEBUG ((LM_DEBUG, "Capacity\n")); break; + case Minimum: ACE_DEBUG ((LM_DEBUG, "Minimum\n")); break; + case Maximum: ACE_DEBUG ((LM_DEBUG, "Maximum\n")); break; + case Attribute: ACE_DEBUG ((LM_DEBUG, "Attribute\n")); break; + case Selection: ACE_DEBUG ((LM_DEBUG, "Selection\n")); break; + } + + ACE_DEBUG ((LM_DEBUG, "%svalue:\n", Dump_Obj::indent())); + dump (sp.value); + } + + // SharedResource + void DnC_Dump::dump (const Deployment::SharedResource& sr) + { + Dump_Obj dump_obj("SharedResource"); + dump ("name", sr.name); + dump ("resourceType", sr.resourceType); +#if 0 + dump_ref_seq ("nodeRef", + sr.nodeRef, + "Domain", + &Domain::node); +#endif /*if 0*/ + dump_sequence ("property", + sr.property); + } + + // Resource + void DnC_Dump::dump (const Deployment::Resource& resource) + { + Dump_Obj dump_obj("Resource"); + dump ("name", resource.name); + dump ("resourceType", resource.resourceType); + dump_sequence ("property", + resource.property); + } + + // Node + void DnC_Dump::dump (const Deployment::Node& node) + { + Dump_Obj dump_obj("Node"); + dump ("name", node.name); + dump ("label", node.label); + +#if (_MSC_VER) + dump_ref_seq ( + "sharedResourceRef", + node.sharedResourceRef, + "Domain", + &Domain::sharedResource); +#endif + +#if (_MSC_VER) + dump_ref_seq ( + "connectionRef", + node.connectionRef, + "Domain", + &Domain::interconnect); +#endif + + dump_sequence ("resource", + node.resource); + + } + + // Interconnect + void DnC_Dump::dump (const Deployment::Interconnect& conn) + { + Dump_Obj dump_obj("Interconnect"); + dump ("name", conn.name); + dump ("label", conn.label); + +#if (_MSC_VER) + dump_ref_seq ( + "connectionRef", + conn.connectionRef, + "Domain", + &Domain::bridge); +#endif +#if (_MSC_VER) + dump_ref_seq ( + "connectRef", + conn.connectRef, + "Domain", + &Domain::node); +#endif + dump_sequence ("resource", + conn.resource); + } + + // Bridge + void + DnC_Dump::dump (const Deployment::Bridge& bridge) + { + Dump_Obj dump_obj("Bridge"); + dump ("name", bridge.name); + dump ("label", bridge.label); + +#if (_MSC_VER) + dump_ref_seq ( + "connectRef", + bridge.connectRef, + "Domain", + &Domain::interconnect); +#endif + + dump_sequence ("resource", bridge.resource); + } + + void DnC_Dump::dump (const ::Deployment::Domain &domain) + { + CORBA::Any val; + val <<= domain; + + Dump_Obj dump_obj ("Domain", + val); + + dump ("UUID", + domain.UUID); + dump ("label", + domain.label); + + dump_sequence ("sharedResource", + domain.sharedResource); + dump_sequence ("node", + domain.node); + dump_sequence ("interconnect", + domain.interconnect); + dump_sequence ("bridge", + domain.bridge); + + dump_sequence ("infoProperty", + domain.infoProperty); + } + + // ComponentPortDescription + + void DnC_Dump::dump (const ::Deployment::ComponentPortDescription + &compportdesc) + { + Dump_Obj dump_obj("ComponentPortDescription"); + + dump ("name", compportdesc.name); + dump ("specificType", compportdesc.specificType); + dump ("supportedType", compportdesc.supportedType); + dump ("provider", compportdesc.provider); + dump ("exclusiveProvider", compportdesc.exclusiveProvider); + dump ("exclusiveUser", compportdesc.exclusiveUser); + dump ("optional", compportdesc.optional); + + ACE_DEBUG ((LM_DEBUG, "%skind: ", Dump_Obj::indent())); + switch (compportdesc.kind) { + case Facet: ACE_DEBUG ((LM_DEBUG, "Facet\n")); break; + case SimplexReceptacle: ACE_DEBUG ((LM_DEBUG, "SimplexReceptacle\n")); break; + case MultiplexReceptacle: ACE_DEBUG ((LM_DEBUG, "MultiplexReceptacle\n")); break; + case EventEmitter: ACE_DEBUG ((LM_DEBUG, "EventEmitter\n")); break; + case EventPublisher: ACE_DEBUG ((LM_DEBUG, "EventPublisher\n")); break; + case EventConsumer: ACE_DEBUG ((LM_DEBUG, "EventConsumer\n")); break; + default: ACE_DEBUG ((LM_DEBUG, "Unknown port kind\n")); break; + } + } + + // ComponentPropertyDescription + + void DnC_Dump::dump (const ::Deployment::ComponentPropertyDescription &comppropdesc) + { + Dump_Obj dump_obj("ComponentPropertyDescription"); + + dump ("name", comppropdesc.name); + + ACE_DEBUG ((LM_DEBUG, "%stype: ", Dump_Obj::indent())); + switch (comppropdesc.type.in()->kind()) { + case ::CORBA::tk_null: ACE_DEBUG ((LM_DEBUG, "tk_null\n")); break; + case ::CORBA::tk_void: ACE_DEBUG ((LM_DEBUG, "tk_void\n")); break; + case ::CORBA::tk_short: ACE_DEBUG ((LM_DEBUG, "tk_short\n")); break; + case ::CORBA::tk_long: ACE_DEBUG ((LM_DEBUG, "tk_long\n")); break; + case ::CORBA::tk_ushort: ACE_DEBUG ((LM_DEBUG, "tk_ushort\n")); break; + case ::CORBA::tk_ulong: ACE_DEBUG ((LM_DEBUG, "tk_ulong\n")); break; + case ::CORBA::tk_float: ACE_DEBUG ((LM_DEBUG, "tk_float\n")); break; + case ::CORBA::tk_double: ACE_DEBUG ((LM_DEBUG, "tk_double\n")); break; + case ::CORBA::tk_boolean: ACE_DEBUG ((LM_DEBUG, "tk_boolean\n")); break; + case ::CORBA::tk_char: ACE_DEBUG ((LM_DEBUG, "tk_char\n")); break; + case ::CORBA::tk_octet: ACE_DEBUG ((LM_DEBUG, "tk_octet\n")); break; + case ::CORBA::tk_any: ACE_DEBUG ((LM_DEBUG, "tk_any\n")); break; + case ::CORBA::tk_TypeCode: ACE_DEBUG ((LM_DEBUG, "tk_TypeCode\n")); break; + case ::CORBA::tk_Principal: ACE_DEBUG ((LM_DEBUG, "tk_Principal\n")); break; + case ::CORBA::tk_objref: ACE_DEBUG ((LM_DEBUG, "tk_objref\n")); break; + case ::CORBA::tk_struct: ACE_DEBUG ((LM_DEBUG, "tk_struct\n")); break; + case ::CORBA::tk_union: ACE_DEBUG ((LM_DEBUG, "tk_union\n")); break; + case ::CORBA::tk_enum: ACE_DEBUG ((LM_DEBUG, "tk_enum\n")); break; + case ::CORBA::tk_string: ACE_DEBUG ((LM_DEBUG, "tk_string\n")); break; + case ::CORBA::tk_sequence: ACE_DEBUG ((LM_DEBUG, "tk_sequence\n")); break; + case ::CORBA::tk_array: ACE_DEBUG ((LM_DEBUG, "tk_array\n")); break; + case ::CORBA::tk_alias: ACE_DEBUG ((LM_DEBUG, "tk_alias\n")); break; + case ::CORBA::tk_except: ACE_DEBUG ((LM_DEBUG, "tk_except\n")); break; + case ::CORBA::tk_longlong: ACE_DEBUG ((LM_DEBUG, "tk_longlong\n")); break; + case ::CORBA::tk_ulonglong: ACE_DEBUG ((LM_DEBUG, "tk_ulonglong\n")); break; + case ::CORBA::tk_longdouble: ACE_DEBUG ((LM_DEBUG, "tk_longdouble\n")); break; + case ::CORBA::tk_wchar: ACE_DEBUG ((LM_DEBUG, "tk_wchar\n")); break; + case ::CORBA::tk_wstring: ACE_DEBUG ((LM_DEBUG, "tk_wstring\n")); break; + case ::CORBA::tk_fixed: ACE_DEBUG ((LM_DEBUG, "tk_fixed\n")); break; + case ::CORBA::tk_value: ACE_DEBUG ((LM_DEBUG, "tk_value\n")); break; + case ::CORBA::tk_value_box: ACE_DEBUG ((LM_DEBUG, "tk_value_box\n")); break; + case ::CORBA::tk_native: ACE_DEBUG ((LM_DEBUG, "tk_native\n")); break; + case ::CORBA::tk_abstract_interface: ACE_DEBUG ((LM_DEBUG, "tk_abstract_interface\n")); break; + case ::CORBA::tk_local_interface: ACE_DEBUG ((LM_DEBUG, "tk_local_interface\n")); break; + case ::CORBA::tk_component: ACE_DEBUG ((LM_DEBUG, "tk_component\n")); break; + case ::CORBA::tk_home: ACE_DEBUG ((LM_DEBUG, "tk_home\n")); break; + case ::CORBA::tk_event: ACE_DEBUG ((LM_DEBUG, "tk_event\n")); break; + default: + break; + }; + } + + // ComponentInterfaceDescription + + void DnC_Dump::dump (const ::Deployment::ComponentInterfaceDescription &cid) + { + Dump_Obj dump_obj("ComponentInterfaceDescription"); + dump ("label", cid.label); + dump ("UUID", cid.UUID); + dump ("specificType", cid.specificType); + dump ("supportedType", cid.supportedType); + dump ("idlFile", cid.idlFile); + dump_sequence ("configProperty", cid.configProperty); + dump_sequence ("port", cid.port); + dump_sequence ("property", cid.property); + dump_sequence ("infoProperty", cid.infoProperty); + } + + // Requirement + + void DnC_Dump::dump (const ::Deployment::Requirement &req) + { + Dump_Obj dump_obj("Requirement"); + + dump ("resourceType", req.resourceType); + dump ("name", req.name); + dump_sequence ("property", req.property); + } + + // MonolithicDeploymentDescription + + void DnC_Dump::dump(const Deployment::MonolithicDeploymentDescription &mdd) + { + Dump_Obj dump_obj("MonolithicDeploymentDescription"); + + dump ("name", mdd.name); + dump ("source", mdd.source); + +#if (_MSC_VER) + dump_ref_seq ("artifactRef", mdd.artifactRef, + "DeploymentPlan", + &DeploymentPlan::artifact); +#endif + dump_sequence ("execParameter", mdd.execParameter); + dump_sequence ("deployRequirement", mdd.deployRequirement); + } + + // ResourceUsageKind + + void DnC_Dump::dump(const Deployment::ResourceUsageKind &ruk) + { + ACE_DEBUG ((LM_DEBUG, "%sresourceUsage: ", Dump_Obj::indent())); + switch (ruk) { + case None: ACE_DEBUG ((LM_DEBUG, "None\n")); break; + case InstanceUsesResource: ACE_DEBUG ((LM_DEBUG, "InstanceUsesResource\n")); break; + case ResourceUsesInstance: ACE_DEBUG ((LM_DEBUG, "ResourceUsesInstance\n")); break; + case PortUsesResource: ACE_DEBUG ((LM_DEBUG, "PortUsesResource\n")); break; + case ResourceUsesPort: ACE_DEBUG ((LM_DEBUG, "ResourceUsesPort\n")); break; + } + } + + // InstanceResourceDeploymentDescription + + void DnC_Dump::dump(const Deployment::InstanceResourceDeploymentDescription &irdd) + { + Dump_Obj dump_obj("InstanceResourceDeploymentDescription"); + + dump (irdd.resourceUsage); + dump ("requirementName", irdd.requirementName); + dump ("resourceName", irdd.resourceName); + ACE_DEBUG ((LM_DEBUG, "%sresourceValue:\n", Dump_Obj::indent())); + dump_sequence ("property", irdd.property); + } + + // InstanceDeploymentDescription + + void DnC_Dump::dump(const Deployment::InstanceDeploymentDescription &idd) + { + Dump_Obj dump_obj("InstanceDeploymentDescription"); + + dump ("name", idd.name); + dump ("node", idd.node); + dump ("source", idd.source); + +#if (_MSC_VER) + dump_ref ("implementationRef", + idd.implementationRef, + "DeploymentPlan", + &DeploymentPlan::implementation); +#endif + dump_sequence ("configProperty", idd.configProperty); + dump_sequence ("deployedResource", idd.deployedResource); + dump_sequence ("deployedSharedResource", idd.deployedSharedResource); + } + + // ComponentExternalPortEndpoint + + void DnC_Dump::dump (const ::Deployment::ComponentExternalPortEndpoint &cepe) + { + Dump_Obj dump_obj("ComponentExternalPortEndpoint"); + + dump ("portName", cepe.portName); + } + + // PlanSubcomponentPortEndpoint + + void DnC_Dump::dump(const Deployment::PlanSubcomponentPortEndpoint &pspe) + { + Dump_Obj dump_obj("PlanSubcomponentPortEndpoint"); + + dump ("portName", pspe.portName); + dump ("provider", pspe.provider); + ACE_DEBUG ((LM_DEBUG, "%skind: ", Dump_Obj::indent())); + switch (pspe.kind) { + case Facet: ACE_DEBUG ((LM_DEBUG, "Facet\n")); break; + case SimplexReceptacle: ACE_DEBUG ((LM_DEBUG, "SimplexReceptacle\n")); break; + case MultiplexReceptacle: ACE_DEBUG ((LM_DEBUG, "MultiplexReceptacle\n")); break; + case EventEmitter: ACE_DEBUG ((LM_DEBUG, "EventEmitter\n")); break; + case EventPublisher: ACE_DEBUG ((LM_DEBUG, "EventPublisher\n")); break; + case EventConsumer: ACE_DEBUG ((LM_DEBUG, "EventConsumer\n")); break; + default: ACE_DEBUG ((LM_DEBUG, "Unknown port kind\n")); break; + } +#if (_MSC_VER) + dump_ref ("instanceRef", pspe.instanceRef, + "DeploymentPlan", + &DeploymentPlan::instance); +#endif + } + + // ExternalReferenceEndpoint + + void DnC_Dump::dump (const ::Deployment::ExternalReferenceEndpoint &ere) + { + Dump_Obj dump_obj("ExternalReferenceEndpoint"); + + dump ("location", ere.location); + } + + // ConnectionResourceDeploymentDescription + + void DnC_Dump::dump(const Deployment::ConnectionResourceDeploymentDescription &crdd) + { + Dump_Obj dump_obj("ConnectionResourceDeploymentDescription"); + + dump ("targetName", crdd.targetName); + dump ("requirementName", crdd.requirementName); + dump ("resourceName", crdd.resourceName); + ACE_DEBUG ((LM_DEBUG, "%sresourceValue:\n", Dump_Obj::indent())); + dump_sequence ("properties", crdd.property); + } + + // PlanConnectionDescription + + void DnC_Dump::dump(const Deployment::PlanConnectionDescription &pcd) + { + Dump_Obj dump_obj("PlanConnectionDescription"); + + dump ("name", pcd.name); + dump ("source", pcd.source); + dump_sequence ("deployRequirement", pcd.deployRequirement); + dump_sequence ("externalEndpoint", pcd.externalEndpoint); + dump_sequence ("internalEndpoint", pcd.internalEndpoint); + dump_sequence ("externalReference", pcd.externalReference); + dump_sequence ("deployedResource", pcd.deployedResource); + } + + // PlanSubcomponentPropertyReference + + void DnC_Dump::dump(const Deployment::PlanSubcomponentPropertyReference &pspr) + { + Dump_Obj dump_obj("PlanSubcomponentPropertyReference"); + + dump ("propertyName", pspr.propertyName); + +#if (_MSC_VER) + dump_ref ("instanceRef", pspr.instanceRef, + "DeploymentPlan", + &DeploymentPlan::instance); +#endif + } + + // PlanPropertyMapping + + void DnC_Dump::dump(const Deployment::PlanPropertyMapping &ppm) + { + Dump_Obj dump_obj("PlanPropertyMapping"); + + dump ("name", ppm.name); + dump ("source", ppm.source); + dump ("externalName", ppm.externalName); + dump_sequence ("delegatesTo", ppm.delegatesTo); + } + + // ImplementationDependency + + void DnC_Dump::dump(const Deployment::ImplementationDependency &id) + { + Dump_Obj dump_obj("ImplementationDependency"); + + dump ("requiredType", id.requiredType); + } + + // ResourceDeploymentDescription + + void DnC_Dump::dump(const Deployment::ResourceDeploymentDescription &rdd) + { + Dump_Obj dump_obj("ResourceDeploymentDescription"); + + dump ("requirementName", rdd.requirementName); + dump ("resourceName", rdd.resourceName); + ACE_DEBUG ((LM_DEBUG, "%sresourceValue:\n", Dump_Obj::indent())); + dump_sequence ("properties", rdd.property); + } + + // ArtifactDeploymentDescription + + void DnC_Dump::dump(const Deployment::ArtifactDeploymentDescription &add) + { + Dump_Obj dump_obj("ArtifactDeploymentDescription"); + + dump ("name", add.name); + dump ("location", add.location); + dump ("node", add.node); + dump ("source", add.source); + dump_sequence ("execParameter", add.execParameter); + dump_sequence ("deployRequirement", add.deployRequirement); + dump_sequence ("deployedResource", add.deployedResource); + } + + void DnC_Dump::dump(const Deployment::DeploymentPlan &plan) + { + CORBA::Any val; + + val <<= plan; + + Dump_Obj dump_obj("DeploymentPlan", val); + + dump ("label", plan.label); + dump ("UUID", plan.UUID); + dump (plan.realizes); + dump_sequence ("implementation", plan.implementation); + dump_sequence ("instance", plan.instance); + //dump_sequence ("connection", plan.connection); + dump_sequence ("externalProperty", plan.externalProperty); + dump_sequence ("dependsOn", plan.dependsOn); + dump_sequence ("artifact", plan.artifact); + dump_sequence ("infoProperty", plan.infoProperty); + } + + // ComponentPackageReference + + void DnC_Dump::dump (const ::Deployment::ComponentPackageReference &cpr) + { + Dump_Obj dump_obj("ComponentPackageReference"); + + dump ("requiredUUID", cpr.requiredUUID); + dump ("requiredName", cpr.requiredName); + dump ("requiredType", cpr.requiredType.specificType); + } + + // SubcomponentInstantiationDescription + + void DnC_Dump::dump (const ::Deployment::SubcomponentInstantiationDescription &sid) + { + Dump_Obj dump_obj("SubcomponentInstantiationDescription"); + + dump ("name", sid.name); + // dump_sequence ("basePackage", sid.package); + dump_sequence ("configProperty", sid.configProperty); + dump_sequence ("selectRequirement", sid.selectRequirement); + // dump_sequence ("reference", sid.reference); + } + + // SubcomponentPortEndpoint + + void DnC_Dump::dump (const ::Deployment::SubcomponentPortEndpoint& spe) + { + Dump_Obj dump_obj("SubcomponentPortEndpoint"); + + dump ("portName", spe.portName); + int value = spe.instanceRef; + ::Deployment::ComponentAssemblyDescription *v; + const CORBA::Any &a = + Dump_Obj::desc ("ComponentAssemblyDescription"); + + a >>= v; + + ACE_DEBUG ((LM_DEBUG, "%sinstance: %s\n", Dump_Obj::indent (), + v->instance[value].name.in ())); + } + + // AssemblyConnectionDescription + + void DnC_Dump::dump (const ::Deployment::AssemblyConnectionDescription &acd) + { + Dump_Obj dump_obj("AssemblyConnectionDescription"); + + dump ("name", acd.name); + dump_sequence ("deployRequirement", acd.deployRequirement); + dump_sequence ("externalEndpoint", acd.externalEndpoint); + dump_sequence ("internalEndpoint", acd.internalEndpoint); + dump_sequence ("externalReference", acd.externalReference); + } + + // SubcomponentPropertyReference + + void DnC_Dump::dump (const ::Deployment::SubcomponentPropertyReference &spr) + { + Dump_Obj dump_obj("SubcomponentPropertyReference"); + + dump ("propertyName", spr.propertyName); + int value = spr.instanceRef; + + ::Deployment::ComponentAssemblyDescription *v; + + const CORBA::Any &a = + Dump_Obj::desc ("ComponentAssemblyDescription"); + + a >>= v; + + ACE_DEBUG ((LM_DEBUG, "%sinstance: %s\n", Dump_Obj::indent (), + v->instance[value].name.in ())); + } + + void + DnC_Dump::dump (const ::Deployment::AssemblyPropertyMapping &apm) + { + Dump_Obj dump_obj("AssemblyPropertyMapping"); + + dump ("name", apm.name); + dump ("externalName", apm.externalName); + dump_sequence ("delegatesTo", apm.delegatesTo); + } + + // ComponentAssemblyDescription + + void DnC_Dump::dump (const ::Deployment::ComponentAssemblyDescription& cad) + { + CORBA::Any a; + a <<= cad; + + Dump_Obj dump_obj ("ComponentAssemblyDescription", + a); + + dump_sequence ("instance", cad.instance); + dump_sequence ("connection", cad.connection); + dump_sequence ("externalProperty", cad.externalProperty); + } + + // ImplementationArtifactDescription + + void DnC_Dump::dump (const ::Deployment::ImplementationArtifactDescription &iad) + { + Dump_Obj dump_obj("ImplementationArtifactDescription"); + + dump ("label", iad.label); + dump ("UUID", iad.UUID); + dump ("location", iad.location); + dump_sequence ("execParameter", iad.execParameter); + dump_sequence ("deployRequirement", iad.deployRequirement); + dump_sequence ("dependsOn", iad.dependsOn); + dump_sequence ("infoProperty", iad.infoProperty); + } + + // NamedImplementationArtifact + + void DnC_Dump::dump (const ::Deployment::NamedImplementationArtifact &nia) + { + Dump_Obj dump_obj("NamedImplementationArtifact"); + + dump ("name", nia.name); + dump (nia.referencedArtifact); + } + + // ImplementationRequirement + + void DnC_Dump::dump (const ::Deployment::ImplementationRequirement &ir) + { + Dump_Obj dump_obj("ImplementationRequirement"); + + dump_sequence ("resourceUsage", ir.resourceUsage); + dump ("resourcePort", ir.resourcePort); + dump ("componentPort", ir.componentPort); + dump ("resourceType", ir.resourceType); + dump ("name", ir.name); + dump_sequence ("property", ir.property); + } + + // MonolithicImplementationDescription + + void DnC_Dump::dump (const ::Deployment::MonolithicImplementationDescription + &mid) + { + Dump_Obj dump_obj("MonolithicImplementationDescription"); + + // dump_sequence ("execParameter", mid.execParameter); + dump_sequence ("primaryArtifact", mid.primaryArtifact); + dump_sequence ("deployRequirement", mid.deployRequirement); + } + + void + DnC_Dump::dump (const ::Deployment::Capability &capability) + { + Dump_Obj dump_obj("Capability"); + + dump ("name", capability.name); + DnC_Dump::dump ("resourceType", capability.resourceType); + dump_sequence ("property", + capability.property); + } + + // ComponentImplementationDescription + + void DnC_Dump::dump ( + const ::Deployment::ComponentImplementationDescription &cid) + { + Dump_Obj dump_obj("ComponentImplementationDescription"); + + dump ("label", cid.label); + dump ("UUID", cid.UUID); + ACE_DEBUG ((LM_DEBUG, "%sImplements:\n", Dump_Obj::indent())); + dump (cid.implements); + dump_sequence ("assemblyImpl", cid.assemblyImpl); + dump_sequence ("monolithicImpl", cid.monolithicImpl); + dump_sequence ("configProperty", cid.configProperty); + dump_sequence ("capability", cid.capability); + dump_sequence ("dependsOn", cid.dependsOn); + dump_sequence ("infoProperty", cid.infoProperty); + } + + // PackagedComponentImplementation + + void DnC_Dump::dump (const ::Deployment::PackagedComponentImplementation &pci) + { + Dump_Obj dump_obj("PackagedComponentImplementation"); + + dump ("Name", pci.name); + ACE_DEBUG ((LM_DEBUG, + "%sreferencedImplementation:\n", Dump_Obj::indent())); + DnC_Dump::dump (pci.referencedImplementation); + } + + // ComponentPackageDescription + + void DnC_Dump::dump (const ::Deployment::ComponentPackageDescription + &comppkgdesc) + { + Dump_Obj dump_obj("ComponentPackageDescription"); + + dump ("label", comppkgdesc.label); + dump ("UUID", comppkgdesc.UUID); + ACE_DEBUG ((LM_DEBUG, "%srealizes:\n", Dump_Obj::indent ())); + DnC_Dump::dump (comppkgdesc.realizes); // ComponentInterfaceDescription + dump_sequence ("configProperty", comppkgdesc.configProperty); + dump_sequence ("implementation", comppkgdesc.implementation); + dump_sequence ("infoProperty", comppkgdesc.infoProperty); + } + + // PackageConfiguration + + void DnC_Dump::dump (const ::Deployment::PackageConfiguration &pc) + { + Dump_Obj dump_obj("PackageConfiguration"); + + dump ("label", pc.label); + dump ("UUID", pc.UUID); + dump_sequence ("specializedConfig", pc.specializedConfig); + dump_sequence ("basePackage", pc.basePackage); + dump_sequence ("reference", pc.referencedPackage); + dump_sequence ("selectRequirement", pc.selectRequirement); + dump_sequence ("configProperty", pc.configProperty); + } + + // Property + void DnC_Dump::dump (const Deployment::Property& property) + { + Dump_Obj dump_obj("Property"); + dump ("name", property.name); + ACE_DEBUG ((LM_DEBUG, "%svalue:\n", Dump_Obj::indent())); + dump (property.value); + } + + // CORBA::Any + + void DnC_Dump::dump (const ::CORBA::Any &any) + { + ::CORBA::TypeCode * type = any.type (); + switch (type->kind ()) + { + case CORBA::tk_short: + { + CORBA::Short temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC_Dump::dump (CORBA::Any), expected short\ +encoded different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %d\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_null: + ACE_DEBUG ((LM_DEBUG, "%sAny value: null value encoded\n", + Dump_Obj::indent ())); + break; + + case CORBA::tk_void: + ACE_DEBUG ((LM_DEBUG, "Any value: void type encoded\n")); + break; + case CORBA::tk_long: + { + CORBA::Long temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected long\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %d\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_ushort: + { + CORBA::UShort temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected u short\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %u\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_ulong: + { + CORBA::ULong temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected ulong\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %u\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_float: + { + CORBA::Float temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected float\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %f\n", Dump_Obj::indent (), + temp)); + } + break; + case CORBA::tk_double: + { + CORBA::Double temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected double\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %f\n", Dump_Obj::indent (), + temp)); + } + break; + case CORBA::tk_boolean: + { + CORBA::Boolean temp; + if (! (any >>= CORBA::Any::to_boolean (temp))) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected bool\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + + if (temp) + ACE_DEBUG ((LM_DEBUG, "Any value: True\n")); + else + ACE_DEBUG ((LM_DEBUG, "Any value: False\n")); + } + break; + + case CORBA::tk_char: + { + CORBA::Char temp; + if (! (any >>= CORBA::Any::to_char (temp))) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected char\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %c\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_octet: + { + CORBA::Octet temp; + if (! (any >>= CORBA::Any::to_octet (temp))) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected octet\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %d\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_string: + { + const char * temp = 0; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected string\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %s\n", Dump_Obj::indent (), + temp)); + } + break; + case CORBA::tk_longlong: + { + CORBA::LongLong temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected longlong\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %l\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_longdouble: + { + CORBA::LongDouble temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected longdouble\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %d\n", Dump_Obj::indent (), + temp)); + } + + break; + case CORBA::tk_wchar: + { + CORBA::WChar temp; + if (! (any >>= CORBA::Any::to_wchar (temp))) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected wchar\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %c\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_wstring: + { + const CORBA::WChar * temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected wstring\ +encoded with different type")); + throw CORBA::INTERNAL (); + } + ACE_DEBUG ((LM_DEBUG, "%sAny value: %s\n", Dump_Obj::indent (), + temp)); + } + break; + + case CORBA::tk_enum: + { +/* CORBA::Enum temp; + if (! (any >>= temp)) + { + ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected enum \ +encoded with different type")); + throw CORBA::INTERNAL (); + } +*/ ACE_DEBUG ((LM_DEBUG, "%sAny value: some enum\n", Dump_Obj::indent ())); + } + break; + + default: + ACE_DEBUG ((LM_DEBUG, "Unknown type encoded in Any\n")); + throw CORBA::INTERNAL (); + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.h b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.h new file mode 100644 index 00000000000..4cddf38cc31 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump.h @@ -0,0 +1,153 @@ +//================================================================== +/** +* @file DnC_Dump.h +* +* $Id$ +* +* @author Gan Deng +*/ +//===================================================================== + +#ifndef DNC_DUMP_H +#define DNC_DUMP_H +#include /**/ "ace/pre.h" + +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "DAnCE/Deployment/Deployment_TargetDataC.h" +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace Deployment +{ + +/** +* @class DnC_Dump +* +* @brief This class defines a set of overloaded "dump" methods to print +* the contents of various IDL data types, which passed as input. +*/ +class Config_Handlers_Export DnC_Dump +{ +public: +/// Dump functions for CORBA sequences +static void dump (const char* caption, +const ::CORBA::StringSeq &str_seq); + +static void dump (const char* caption, const TAO::String_Manager& str); + +static void dump (const char* caption, const CORBA::Boolean& val); + +/// A whole slew of overloaded dump routines for different IDL +/// data types. + +static void dump(const Deployment::SatisfierProperty &sp); + +static void dump (const Deployment::SharedResource& sr); + +static void dump (const Deployment::Node& node); + +static void dump (const Deployment::Resource& resource); + +static void dump (const Deployment::Interconnect& conn); + +static void dump (const Deployment::Bridge& bridge); + +static void dump (const ::Deployment::Property &property); + +static void dump (const ::Deployment::AssemblyConnectionDescription &acd); + +static void dump (const ::Deployment::AssemblyPropertyMapping &apm); + +static void dump (const ::Deployment::ComponentPackageDescription +&comppkgdesc); + +static void dump (const ::Deployment::ComponentPortDescription +&compportdesc); + +static void dump (const ::Deployment::ComponentPropertyDescription +&comppropdesc); + +static void dump (const ::Deployment::MonolithicImplementationDescription +&mid); + +static void dump (const ::Deployment::PackageConfiguration &pc); + +static void dump (const ::Deployment::PackagedComponentImplementation +&pci); + +static void dump (const ::Deployment::SubcomponentPortEndpoint &spe); + +static void dump (const ::Deployment::Requirement &requirement); + +static void dump (const ::Deployment::ComponentExternalPortEndpoint +&cepe); + +static void dump (const ::Deployment::ComponentPackageReference &cpr); + +static void dump (const ::Deployment::ComponentImplementationDescription +&cid); + +static void dump (const ::Deployment::SubcomponentInstantiationDescription +&sid); + +static void dump (const ::Deployment::NamedImplementationArtifact +&named_implementation); + +static void dump (const ::Deployment::ComponentInterfaceDescription &cid); + +static void dump (const ::Deployment::SubcomponentPropertyReference +&scpr); + +static void dump (const ::Deployment::ExternalReferenceEndpoint &ere); + +static void dump (const ::Deployment::Domain &domain); + +static void dump (const ::Deployment::Capability &capability); + +static void dump (const ::Deployment::ImplementationArtifactDescription +&iad); + +static void dump (const ::Deployment::ImplementationRequirement &ir); + +static void dump(const Deployment::ResourceUsageKind &ruk); + +static void dump(const Deployment::DeploymentPlan &plan); + +static void dump(const Deployment::MonolithicDeploymentDescription &mdd); + +static void dump(const Deployment::InstanceDeploymentDescription &idd); + +static void dump(const Deployment::PlanConnectionDescription &pcd); + +static void dump(const Deployment::PlanPropertyMapping &ppm); + +static void dump(const Deployment::ImplementationDependency &id); + +static void dump(const Deployment::ArtifactDeploymentDescription &add); + +static void dump(const Deployment::InstanceResourceDeploymentDescription +&irdd); + +static void dump(const PlanSubcomponentPortEndpoint &pspe); + +static void dump(const ConnectionResourceDeploymentDescription &crdd); + +static void dump(const PlanSubcomponentPropertyReference &pspr); + +static void dump(const ResourceDeploymentDescription &rdd); + +static void dump (const ::Deployment::ComponentAssemblyDescription& cad); + +private: +static void dump (const ::CORBA::Any &any); +// Helper function to print an Any +}; +} + +#include /**/ "ace/post.h" + +#endif /* DNC_DUMP_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.cpp b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.cpp new file mode 100644 index 00000000000..0f95945fb0f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.cpp @@ -0,0 +1,90 @@ +// $Id$ +#ifndef DNC_DUMP_T_C +#define DNC_DUMP_T_C +#include "DnC_Dump.h" +#include "DnC_Dump_T.h" +#include "Dump_Obj.h" + +ACE_RCSID (Config_Handlers, + DnC_Dump_T, + "$Id$") + namespace Deployment + { + namespace DnC_Dump_T + { + // Dumps a reference + template + void + dump_ref (const char* caption, REFERENCE& ref, + const char* root, DATA_TYPE CLASS::*data) + { + ACE_DEBUG ((LM_DEBUG, "%s%s:\n", + Dump_Obj::indent(), caption)); + + const CORBA::Any &val = Dump_Obj::desc (root); + + ROOT *t = 0; + + val >>= t; + + const ROOT &root_obj = *t; + + int value = ref; + ACE_DEBUG ((LM_DEBUG, "%s%s.name: %s\n", + Dump_Obj::indent(), caption, + (root_obj.*data)[value].name.in())); + } + + // Dumps a reference sequence + template + void + dump_ref_seq (const char* caption, SEQUENCE& seq, + const char* root, DATA_TYPE CLASS::*data) + { + ACE_DEBUG ((LM_DEBUG, + "%s%s:\n", + Dump_Obj::indent(), caption)); + + CORBA::Any val; + val <<= root; + + for (size_t i = 0; i < seq.length(); ++i) + { + const CORBA::Any &val = Dump_Obj::desc (root); + + ROOT *t = 0; + + val >>= t; + + const ROOT &root_obj = *t; + int value = seq[i]; + ACE_DEBUG ((LM_DEBUG, "%s%s[%d].name: %s\n", + Dump_Obj::indent(), caption, i, + (root_obj.*data)[value].name.in())); + } + } + + // Dumps a sequence + template + void + dump_sequence (const char* caption, const SEQUENCE &seq) + { + CORBA::ULong size = seq.length (); + + if (size != 0) + { + Dump_Obj dump_obj(caption); + + for (CORBA::ULong i = 0; i < size; ++i) + { + ACE_DEBUG ((LM_DEBUG, "%s%s %d:\n", Dump_Obj::indent(), + caption, i)); + DnC_Dump::dump (seq[i]); + } + } + } + } + } +#endif /* DNC_DUMP_C */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.h b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.h new file mode 100644 index 00000000000..88a5c55f3cd --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DnC_Dump_T.h @@ -0,0 +1,50 @@ +//================================================================== +/** +* @file DnC_Dump_T.h +* +* $Id$ +* +* @author Gan Deng +*/ +//===================================================================== + +#ifndef CIAO_CONFIG_HANDLERS_DNC_DUMP_T_H +#define CIAO_CONFIG_HANDLERS_DNC_DUMP_T_H +#include /**/ "ace/pre.h" + +#include "ace/config-lite.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ +namespace DnC_Dump_T +{ +template +void dump_sequence (const char* caption, const SEQUENCE &seq); + +template +void dump_ref_seq (const char* caption, SEQUENCE& seq, +const char* root, DATA_TYPE CLASS::*data); + +template +void dump_ref (const char* caption, REFERENCE& ref, +const char* root, DATA_TYPE CLASS::*data); +} +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "DnC_Dump_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("DnC_Dump_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + + +#include /**/ "ace/post.h" +#endif /*CIAO_CONFIG_HANDLERS_DNC_DUMP_T_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.cpp b/modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.cpp new file mode 100644 index 00000000000..b2cc34fd089 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.cpp @@ -0,0 +1,65 @@ +// $Id$ +#include "Dump_Obj.h" +#include "ace/Log_Msg.h" + +ACE_RCSID (Config_Handlers, + Dump_Obj, + "$Id$") + + namespace Deployment + { + // static member initialization + std::string Dump_Obj::indent_ = "-"; + std::map Dump_Obj::desc_map_; + + Dump_Obj::Dump_Obj(const char* caption) + : desc_() + { + ACE_DEBUG ((LM_DEBUG, "%C%C:\n", indent_.c_str(), caption)); + indent_.append(" "); + } + + + Dump_Obj::Dump_Obj(const char* caption, + CORBA::Any &val) + : desc_(caption) + { + ACE_DEBUG ((LM_DEBUG, "%C%C:\n", + indent_.c_str(), + caption)); + + indent_.append(" "); + + if (desc_map_.find (std::string (caption)) != desc_map_.end()) + { + ACE_DEBUG ((LM_DEBUG, "DnC_Dump.cpp:Dump_Obj - \ +The item with name %C is already in \ +the node map.\n", caption)); + throw Node_Exist(); + } + else + { + desc_map_[std::string(caption)] = val; + } + } + + Dump_Obj::~Dump_Obj() + { + indent_.erase(indent_.size() - 2, 2); + if (desc_.size() != 0) + { + if (desc_map_.find(desc_) != desc_map_.end()) + { + desc_map_.erase(desc_map_.find(desc_)); + } + else + { + ACE_DEBUG ((LM_DEBUG, "DnC_Dump.cpp:Dump_Obj - \ +The item with name %C is not in the node map.\n", + desc_.c_str())); + throw Node_Not_Exist(); + } + } + } + + } diff --git a/modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.h b/modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.h new file mode 100644 index 00000000000..babffe43bac --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Dump_Obj.h @@ -0,0 +1,77 @@ +//================================================================== +/** +* @file Dump_Obj.h +* +* $Id$ +* +* @author Gan Deng +*/ +//===================================================================== + +#ifndef CIAO_DUMP_OBJ_H +#define CIAO_DUMP_OBJ_H +#include /**/ "ace/pre.h" + +#include "DAnCE/Deployment/DeploymentC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Config_Handlers_Export.h" +#include "tao/AnyTypeCode/Any.h" +#include +#include + +namespace Deployment +{ +/* +* @brief class Dump_Obj handles the indentation and keeps a map of +* structures for reference look-up. +*/ +class Config_Handlers_Export Dump_Obj +{ + public: + /// Exception thrown when there is a node with the same name in the + /// map + class Node_Exist { }; + + /// Exception thrown when there is no node with the name given in + /// the map + class Node_Not_Exist { }; + + /// Constructors prints out the caption and increases indent + Dump_Obj (const char *caption); + + /// Additionally insets @a val into the map + Dump_Obj (const char* caption, CORBA::Any &val); + + /// Destructor + ~Dump_Obj (void); + + /// return the indent string + static const char* indent() + { + return indent_.c_str(); + } + + static CORBA::Any& desc(const char* caption) + { + return desc_map_[caption]; + } + +private: + /// indent string + static std::string indent_; + + /// map for reference lookup + static std::map desc_map_; + + /// descriptor - used by destructor for deleting the + /// correct descriptor from the map + std::string desc_; +}; +} + +#include /**/ "ace/post.h" +#endif /*CIAO_DUMP_OBJ_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.cpp new file mode 100644 index 00000000000..0e2bfe0e411 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.cpp @@ -0,0 +1,181 @@ +//$Id$ + +#include "DataType_Handler.h" +#include "tao/AnyTypeCode/TypeCode.h" + +namespace CIAO{ + + namespace Config_Handlers{ + + DataType_Handler::DataType_Handler (void) + { + } + DataType_Handler::~DataType_Handler (void) + { + } + + ///This method takes a + ///and returns the corresponding CORBA::TypeCode. + CORBA::TypeCode_ptr + DataType_Handler::data_type (const DataType& desc) + { + + TCKind kind (desc.kind ()); + + switch (kind.integral ()) + { + case TCKind::tk_null_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_null); + + + case TCKind::tk_short_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_short); + + + case TCKind::tk_long_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_long); + + + case TCKind::tk_ushort_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_ushort); + + + case TCKind::tk_ulong_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_ulong); + + + case TCKind::tk_float_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_float); + + + case TCKind::tk_double_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_double); + + + case TCKind::tk_boolean_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_boolean); + + + case TCKind::tk_char_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_char); + + + case TCKind::tk_octet_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_octet); + + + case TCKind::tk_string_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_string); + + + case TCKind::tk_longlong_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_longlong); + + + case TCKind::tk_ulonglong_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_ulonglong); + + + case TCKind::tk_longdouble_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_longdouble); + + + case TCKind::tk_wchar_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_wchar); + + + case TCKind::tk_wstring_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_wstring); + + + case TCKind::tk_any_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_any); + + + case TCKind::tk_TypeCode_l: + return CORBA::TypeCode::_duplicate (CORBA::_tc_TypeCode); + + + default: + ACE_ERROR ((LM_ERROR, "Invalid typecode in any\n")); + throw Config_Error ("", "Invalid typecode"); + } + + // This case used to be supported...is it not in the schema? + // case TCKind::tk_Object) + // return CORBA::TypeCode::_duplicate (CORBA::_tc_Object);*/ + + } + + DataType + DataType_Handler::data_type ( + const CORBA::TypeCode_ptr& src) + { + DataType type; + + switch (src->kind ()) + { + case ::CORBA::tk_null: + type.kind (TCKind::tk_null); + break; + case CORBA::tk_short: + type.kind (TCKind::tk_short); + break; + case CORBA::tk_long: + type.kind (TCKind::tk_long); + break; + case CORBA::tk_ushort: + type.kind (TCKind::tk_ushort); + break; + case CORBA::tk_ulong: + type.kind (TCKind::tk_ulong); + break; + case CORBA::tk_float: + type.kind (TCKind::tk_float); + break; + case CORBA::tk_double: + type.kind (TCKind::tk_double); + break; + case CORBA::tk_boolean: + type.kind (TCKind::tk_boolean); + break; + case CORBA::tk_char: + type.kind (TCKind::tk_char); + break; + case CORBA::tk_octet: + type.kind (TCKind::tk_octet); + break; + case CORBA::tk_string: + type.kind (TCKind::tk_string); + break; + case CORBA::tk_longlong: + type.kind (TCKind::tk_longlong); + break; + case CORBA::tk_ulonglong: + type.kind (TCKind::tk_ulonglong); + break; + case CORBA::tk_longdouble: + type.kind (TCKind::tk_longdouble); + break; + case CORBA::tk_wchar: + type.kind (TCKind::tk_wchar); + break; + case CORBA::tk_wstring: + type.kind (TCKind::tk_wstring); + break; + case CORBA::tk_any: + type.kind (TCKind::tk_any); + break; + case CORBA::tk_TypeCode: + type.kind (TCKind::tk_TypeCode); + default: + ACE_ERROR ((LM_ERROR, "Invalid typecode\n")); + throw Config_Error ("", "Invalid typecode"); + } + + return type; + } + + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.h new file mode 100644 index 00000000000..c16b4b21fe3 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DataType_Handler.h @@ -0,0 +1,60 @@ +//================================================ +/** + * @file DataType_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================ + +#ifndef DATATYPE_HANDLER_H +#define DATATYPE_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "ciao/DeploymentC.h" +#include "Basic_Deployment_Data.hpp" + + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace CIAO{ + + namespace Config_Handlers{ + + /* + * @class DataType_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + + class DataType_Handler{ + + public: + + DataType_Handler (void); + virtual ~DataType_Handler (void); + + ////This method takes a + ///and returns the corresponding CORBA::TypeCode. + static void + data_type (CORBA::TypeCode_ptr& type, + const DataType& desc); + + static DataType data_type (const CORBA::TypeCode_ptr& type); + }; + + } +} + +#include /**/ "ace/post.h" +#endif /* DATATYPE_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp new file mode 100644 index 00000000000..a16e5c882c1 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.cpp @@ -0,0 +1,195 @@ +// $Id$ + +#include "DynAlias_Handler.h" +#include "DynAny_Handler.h" + +#include "Basic_Deployment_Data.hpp" +#include "Common.h" + +#include "tao/AnyTypeCode/TypeCode.h" +#include "tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h" +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/AnyTypeCode/Enum_TypeCode.h" +#include "tao/IFR_Client/IFR_BasicC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + DynamicAny::DynAny_ptr + DynAlias_Handler::extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr req_tc) + { + try + { + CORBA::TypeCode_ptr tc; + + if (req_tc) + tc = req_tc; + else + tc = DynAlias_Handler::create_typecode (type); + + // Make the actual DynAlias + // DynamicAny::DynAny_var retval = + //DYNANY_HANDLER->daf ()->create_dyn_any_from_type_code (tc); + // DynamicAny::DynAlias_var retval = DynamicAny::DynAlias::_narrow (temp.in ()); + + DynamicAny::DynAny_var alias = DYNANY_HANDLER->extract_into_dynany (type.alias ().elementType (), value, tc); + return alias._retn (); + /* + switch (type.kind ().integral ()) + { + // ========== BASIC TYPES + case TCKind::tk_null_l: + case TCKind::tk_void_l: + ACE_ERROR ((LM_WARNING, "I don't know how to handle null or void types\n")); + + case TCKind::tk_short_l: + retval->insert_short (CORBA::Short (static_cast < ::XMLSchema::short_ const & > (*value.begin_short ()))); + break; + + case TCKind::tk_long_l: + retval->insert_long (CORBA::Long (static_cast < ::XMLSchema::int_ const& > (*value.begin_long ()))); + break; + + case TCKind::tk_ushort_l: + retval->insert_ushort (CORBA::UShort (static_cast< ::XMLSchema::unsignedShort const & > (*value.begin_ushort ()))); + break; + + case TCKind::tk_ulong_l: + retval->insert_ulong (CORBA::ULong (static_cast < ::XMLSchema::unsignedInt const& > (*value.begin_ulong ()))); + break; + + case TCKind::tk_float_l: + retval->insert_float (CORBA::Float (*value.begin_float ())); + break; + + case TCKind::tk_double_l: + retval->insert_double (CORBA::Double (*value.begin_double ())); + break; + + case TCKind::tk_boolean_l: + retval->insert_boolean (static_cast < ::XMLSchema::boolean const& > (*value.begin_boolean ())); + break; + + case TCKind::tk_char_l: + retval->insert_char (CORBA::Char (*value.begin_string ()->c_str ())); + break; + + case TCKind::tk_octet_l: + retval->insert_octet (static_cast (*value.begin_octet ())); + break; + + case TCKind::tk_string_l: + retval->insert_string (value.begin_string ()->c_str ()); + break; + + case TCKind::tk_longlong_l: + retval->insert_longlong (CORBA::LongLong (static_cast < ::XMLSchema::long_ const& > (*value.begin_longlong ()))); + break; + + case TCKind::tk_ulonglong_l: + retval->insert_ulonglong (CORBA::ULongLong (static_cast < ::XMLSchema::unsignedLong const& > (*value.begin_ulonglong ()))); + break; + + case TCKind::tk_wchar_l: + retval->insert_wchar (CORBA::WChar (*value.begin_string ()->c_str ())); + break; + + case TCKind::tk_enum_l: + return DynEnum_Handler::extract_into_dynany (type, value); + + case TCKind::tk_sequence_l: + return DynSequence_Handler::extract_into_dynany (type, value); + + case TCKind::tk_struct_l: + return DynStruct_Handler::extract_into_dynany (type, value); + + case TCKind::tk_alias_l: + return DynAlias_Handler::extract_into_dynany (type, value); + + case TCKind::tk_longdouble_l: + case TCKind::tk_wstring_l: + case TCKind::tk_wfixed_l: + case TCKind::tk_any_l: + case TCKind::tk_TypeCode_l: + case TCKind::tk_Principal_l: + case TCKind::tk_objref_l: + case TCKind::tk_union_l: + case TCKind::tk_array_l: + case TCKind::tk_except_l: + case TCKind::tk_value_l: + case TCKind::tk_value_box_l: + case TCKind::tk_native_l: + case TCKind::tk_abstract_interface_l: + case TCKind::tk_local_interface_l: + case TCKind::tk_component_l: + case TCKind::tk_home_l: + case TCKind::tk_event_l: + ACE_ERROR ((LM_ERROR, "Type not supported\n")); + throw Config_Error ("", "Type not supported"); + } + */ + // retval->assign (alias); + + // return retval._retn (); + } + catch (DynamicAny::DynAny::InvalidValue) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Invalid value provided in XML when trying to ") + ACE_TEXT ("initialize an instance of enumerated type %s\n"), + type.alias ().typeId ().c_str ())); + throw Config_Error (type.alias ().typeId (), + ACE_TEXT ("Invalid value provided in XML")); + } + catch (Config_Error &ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DynAlias_Handler caught Config_Error\n"))); + if (type.alias_p ()) + ex.add_name (type.alias ().typeId ()); + + throw ex; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DynAlias_Handler caught unknown exception\n"))); + throw Config_Error (type.alias ().typeId (), + ACE_TEXT ("Unknown exception")); + } + } + + void + DynAlias_Handler::extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn) + { + ACE_UNUSED_ARG (dyn); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Extracting Enums not yet supported\n"))); + } + + CORBA::TypeCode_ptr + DynAlias_Handler::create_typecode (const DataType &type) + { + if (!type.alias_p ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Alias type description required"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Did not find expected alias type description, tk_kind may be wrong.")); + } + + + // @@ Leak this guy onto the heap to avoid a compile problem. + CORBA::TypeCode_ptr tc = + DYNANY_HANDLER->orb ()->create_alias_tc + (ACE_TEXT_ALWAYS_CHAR (type.alias ().typeId ().c_str ()), + ACE_TEXT_ALWAYS_CHAR (type.alias ().name ().c_str ()), + DYNANY_HANDLER->create_typecode (type.alias ().elementType ())); + + DYNANY_HANDLER->register_typecode (type.alias ().typeId (), + tc); + + return tc; + } + + } +} + + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.h new file mode 100644 index 00000000000..b5bca3c7377 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAlias_Handler.h @@ -0,0 +1,52 @@ +/** + * $Id$ + * + * @file DynAlias_Handler.h + * @author Will Otte + */ + +#ifndef CIAO_CONFIG_HANDLERS_DYNALIAS_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DYNALIAS_HANDLER_H +#include /**/ "ace/pre.h" + +#include "DynAny_Handler_Export.h" + +#include "tao/ORB.h" +#include "tao/DynamicAny/DynamicAny.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + namespace Config_Handlers + { + class Any; + class DataType; + class DataValue; + + /** + * @class DynAlias_Handler + * @brief Translates enums specified in deployment plans into Dynamic Anys + * + */ + class DynAlias_Handler + { + public: + static DynamicAny::DynAny_ptr extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr = 0); + + static void extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn); + + static CORBA::TypeCode_ptr create_typecode (const DataType &type); + }; + + } +} + + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H*/ + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp new file mode 100644 index 00000000000..0998d5c5cca --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp @@ -0,0 +1,381 @@ +// $Id$ + +#include /**/ "ace/pre.h" + +#include "DynAny_Handler.h" +#include "DynEnum_Handler.h" +#include "DynSequence_Handler.h" +#include "DynStruct_Handler.h" +#include "DynAlias_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "Common.h" + +namespace CIAO +{ + namespace Config_Handlers + { + DynAny_Handler::DynAny_Handler (void) : + orb_ (0), + daf_ (0) + { + int argc = 0; + char **argv = 0; + + orb_ = CORBA::ORB_init (argc, argv); + + CORBA::Object_var temp = orb_->resolve_initial_references ("DynAnyFactory"); + daf_ = DynamicAny::DynAnyFactory::_narrow (temp.in ()); + + if (CORBA::is_nil (daf_.in ())) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to narrow Dynamic Any factory\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Unable to narrow DynAny factory")); + } + } + + DynAny_Handler::~DynAny_Handler (void) + { + } + + CORBA::ORB_ptr + DynAny_Handler::orb () + { + return orb_.in (); + } + + DynamicAny::DynAnyFactory_ptr + DynAny_Handler::daf () + { + return daf_.in (); + } + + DynamicAny::DynAny_ptr + DynAny_Handler::extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr req_tc) + { + DynamicAny::DynAny_var retval; + + if (req_tc) + retval = this->daf_->create_dyn_any_from_type_code (req_tc); + + switch (type.kind ().integral ()) + { + // ========== BASIC TYPES + case TCKind::tk_null_l: + case TCKind::tk_void_l: + ACE_ERROR ((LM_WARNING, ACE_TEXT ("I don't know how to handle null or void types\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Null or void types not supported")); + break; + + case TCKind::tk_short_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_short); + retval->insert_short (CORBA::Short (static_cast < ::XMLSchema::short_ const & > (*(*value.begin_short ())))); + break; + + case TCKind::tk_long_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_long); + retval->insert_long (CORBA::Long (static_cast < ::XMLSchema::int_ const& > (*(*value.begin_long ())))); + break; + + case TCKind::tk_ushort_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ushort); + retval->insert_ushort (CORBA::UShort (static_cast< ::XMLSchema::unsignedShort const & > (*(*value.begin_ushort ())))); + break; + + case TCKind::tk_ulong_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ulong); + retval->insert_ulong (CORBA::ULong (static_cast < ::XMLSchema::unsignedInt const& > (*(*value.begin_ulong ())))); + break; + + case TCKind::tk_float_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_float); + retval->insert_float (CORBA::Float (*(*value.begin_float ()))); + break; + + case TCKind::tk_double_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_double); + retval->insert_double (CORBA::Double (*(*value.begin_double ()))); + break; + + case TCKind::tk_boolean_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_boolean); + retval->insert_boolean (static_cast < ::XMLSchema::boolean const& > (*(*value.begin_boolean ()))); + break; + + case TCKind::tk_char_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_char); + retval->insert_char (CORBA::Char (*(*value.begin_string ())->c_str ())); + break; + + case TCKind::tk_octet_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_octet); + retval->insert_octet (static_cast (*(*(value.begin_octet ())))); + break; + + case TCKind::tk_string_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_string); + retval->insert_string (ACE_TEXT_ALWAYS_CHAR ((*value.begin_string ())->c_str ())); + break; + + case TCKind::tk_longlong_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_longlong); + retval->insert_longlong (CORBA::LongLong (static_cast < ::XMLSchema::long_ const& > (*(*value.begin_longlong ())))); + break; + + case TCKind::tk_ulonglong_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ulonglong); + retval->insert_ulonglong (CORBA::ULongLong (static_cast < ::XMLSchema::unsignedLong const& > (*(*value.begin_ulonglong ())))); + break; + + case TCKind::tk_wchar_l: + if (!req_tc) retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_wchar); + retval->insert_wchar (CORBA::WChar (*(*value.begin_string ())->c_str ())); + break; + + case TCKind::tk_enum_l: + return DynEnum_Handler::extract_into_dynany (type, value, req_tc); + + case TCKind::tk_sequence_l: + return DynSequence_Handler::extract_into_dynany (type, value, req_tc); + + case TCKind::tk_struct_l: + return DynStruct_Handler::extract_into_dynany (type, value, req_tc); + + case TCKind::tk_alias_l: + return DynAlias_Handler::extract_into_dynany (type, value, req_tc); + + case TCKind::tk_longdouble_l: + case TCKind::tk_wstring_l: + case TCKind::tk_fixed_l: + case TCKind::tk_any_l: + case TCKind::tk_TypeCode_l: + case TCKind::tk_Principal_l: + case TCKind::tk_objref_l: + case TCKind::tk_union_l: + case TCKind::tk_array_l: + case TCKind::tk_except_l: + case TCKind::tk_value_l: + case TCKind::tk_value_box_l: + case TCKind::tk_native_l: + case TCKind::tk_abstract_interface_l: + case TCKind::tk_local_interface_l: + case TCKind::tk_component_l: + case TCKind::tk_home_l: + case TCKind::tk_event_l: + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Type not supported\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Type not supported")); + } + + return retval._retn (); + } + + Any + DynAny_Handler::extract_from_dynany (const CORBA::Any &any) + { + DynamicAny::DynAny_var dyn = this->daf_->create_dyn_any (any); + + DataValue val; +#if 0 + switch (dyn->type ()->kind ()) + { + case CORBA::tk_short: + val.add_short (dyn->get_short ()); + return Any (TCKind::tk_short, val); + + case CORBA::tk_long: + val.add_long (dyn->get_long ()); + return Any (TCKind::tk_long, val); + + case CORBA::tk_ushort: + val.add_ushort (dyn->get_ushort ()); + return Any (TCKind::tk_ushort, val); + + case CORBA::tk_ulong: + val.add_ulong (dyn->get_ulong ()); + return Any (TCKind::tk_ulong, val); + + case CORBA::tk_float: + val.add_float (dyn->get_float ()); + return Any (TCKind::tk_float, val); + + case CORBA::tk_double: + val.add_double (dyn->get_double ()); + return Any (TCKind::tk_double, val); + + case CORBA::tk_boolean: + val.add_boolean (dyn->get_boolean ()); + return Any (TCKind::tk_boolean, val); + + case CORBA::tk_octet: + val.add_octet (dyn->get_octet ()); + return Any (TCKind::tk_octet, val); + + case CORBA::tk_string: + val.add_string (dyn->get_string ()); + return Any (TCKind::tk_string, val); + + case CORBA::tk_longlong: + val.add_longlong (dyn->get_longlong ()); + return Any (TCKind::tk_longlong, val); + + case CORBA::tk_ulonglong: + val.add_ulonglong (dyn->get_ulonglong ()); + return Any (TCKind::tk_ulonglong, val); + + case CORBA::tk_longdouble: + // return Any (TCKind::tk_longdouble); + // @@MAJO: Need to add longdouble to schema. + //val.add_longdouble (dyn->get_longdouble ()); + + case CORBA::tk_wchar: + // return Any (TCKind::tk_wchar); + // @@MAJO: Need to add wchar to schema + // val.add_wchar (dyn->get_wchar ()); + case CORBA::tk_char: + // return Any (TCKind::tk_char); + // @@MAJO: Need to add char into the schema. + // val.add_char (dyn->get_char ()); + + case CORBA::tk_wstring: + case CORBA::tk_any: + case CORBA::tk_TypeCode: + case ::CORBA::tk_null: + default: + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DynAny_Handler: I have no idea how to perform a referse mapping.\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("reverse mapping for this type not supported")); + } +#endif + Any retval (TCKind::tk_char, val); + return retval; + } + + CORBA::TypeCode_ptr + DynAny_Handler::create_typecode (const DataType &type) + { + + switch (type.kind ().integral ()) + { + // ========== BASIC TYPES + case TCKind::tk_null_l: + case TCKind::tk_void_l: + ACE_ERROR ((LM_WARNING, ACE_TEXT ("I don't know how to handle null or void types\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Null or void types not supported")); + break; + + case TCKind::tk_short_l: + return CORBA::_tc_short; + break; + + case TCKind::tk_long_l: + return CORBA::_tc_long; + break; + + case TCKind::tk_ushort_l: + return CORBA::_tc_ushort; + break; + + case TCKind::tk_ulong_l: + return CORBA::_tc_ulong; + break; + + case TCKind::tk_float_l: + return CORBA::_tc_float; + break; + + case TCKind::tk_double_l: + return CORBA::_tc_double; + break; + + case TCKind::tk_boolean_l: + return CORBA::_tc_boolean; + break; + + case TCKind::tk_char_l: + return CORBA::_tc_char; + break; + + case TCKind::tk_octet_l: + return CORBA::_tc_octet; + break; + + case TCKind::tk_string_l: + return CORBA::_tc_string; + break; + + case TCKind::tk_longlong_l: + return CORBA::_tc_longlong; + break; + + case TCKind::tk_ulonglong_l: + return CORBA::_tc_ulonglong; + break; + + case TCKind::tk_longdouble_l: + break; + + case TCKind::tk_wchar_l: + return CORBA::_tc_wchar; + break; + + case TCKind::tk_wstring_l: + break; + + case TCKind::tk_enum_l: + return DynEnum_Handler::create_typecode (type); + + case TCKind::tk_struct_l: + return DynStruct_Handler::create_typecode (type); + + case TCKind::tk_sequence_l: + return DynSequence_Handler::create_typecode (type); + + case TCKind::tk_alias_l: + return DynAlias_Handler::create_typecode (type); + + case TCKind::tk_fixed_l: + case TCKind::tk_any_l: + case TCKind::tk_TypeCode_l: + case TCKind::tk_Principal_l: + case TCKind::tk_objref_l: + case TCKind::tk_union_l: + case TCKind::tk_array_l: + case TCKind::tk_except_l: + case TCKind::tk_value_l: + case TCKind::tk_value_box_l: + case TCKind::tk_native_l: + case TCKind::tk_abstract_interface_l: + case TCKind::tk_local_interface_l: + case TCKind::tk_component_l: + case TCKind::tk_home_l: + case TCKind::tk_event_l: + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Type not supported\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Type not supported")); + } + + return 0; + } + + void + DynAny_Handler::register_typecode (const std::basic_string typeID, + CORBA::TypeCode_ptr tc) + { + this->typecode_map_[typeID] = tc; + } + + + CORBA::TypeCode_ptr + DynAny_Handler::get_typecode (const std::basic_string typeID) + { + try + { + return this->typecode_map_ [typeID]; + } + catch (...) + { + return 0; + } + } + } +} +#include /**/ "ace/post.h" diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.h new file mode 100644 index 00000000000..d0cf66e9c32 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.h @@ -0,0 +1,85 @@ +//============================================================== +/** + * @file DynAny_Handler.h + * + * $Id$ + * + * @author Will Otte + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_DYNANY_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DYNANY_HANDLER_H +#include /**/ "ace/pre.h" + +#include "DynAny_Handler_Export.h" + +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/ORB.h" +#include "tao/DynamicAny/DynamicAny.h" +#include "ace/Singleton.h" + +#include + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + namespace Config_Handlers + { + class Any; + class DataType; + class DataValue; + + /** + * @class Any_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC Any objects, parsed from the descriptor files, to the + * corresponding CORBA IDL Any type. + * + */ + class DynAny_Handler_Export DynAny_Handler + { + public: + DynAny_Handler (); + + ~DynAny_Handler (void); + + DynamicAny::DynAny_ptr extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr = 0); + + Any extract_from_dynany (const CORBA::Any &any); + + CORBA::ORB_ptr orb (); + + DynamicAny::DynAnyFactory_ptr daf (); + + CORBA::TypeCode_ptr create_typecode (const DataType &type); + + void register_typecode (const std::basic_string typeID, + CORBA::TypeCode_ptr tc); + + CORBA::TypeCode_ptr get_typecode (const std::basic_string typeID); + + private: + + CORBA::ORB_var orb_; + + DynamicAny::DynAnyFactory_var daf_; + + std::map , CORBA::TypeCode_ptr> typecode_map_; + }; + + typedef ACE_Singleton DynAny_Singleton; + #define DYNANY_HANDLER DynAny_Singleton::instance() + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_ANY_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc new file mode 100644 index 00000000000..857e013e131 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc @@ -0,0 +1,22 @@ +// $Id$ + +project (XSC_DynAny_Handler) : xerces, dynamicany, typecodefactory, dance_deployment_stub, \ + ciao_config_handlers_base, ciao_lib, dance, ifr_client { + after += XSC_XML_Handlers + libs += XSC_XML_Handlers + dynamicflags += DYNANY_HANDLER_BUILD_DLL + macros += XML_USE_PTHREADS + includes += $(DANCE_ROOT)/Config_Handlers + + Source_Files { + DynAny_Handler.cpp + DynEnum_Handler.cpp + DynSequence_Handler.cpp + DynStruct_Handler.cpp + DynAlias_Handler.cpp + } + + Header_Files { + DynAny_Handler_Export.h + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h new file mode 100644 index 00000000000..78a3ee57b77 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DynAny_Handler +// ------------------------------ +#ifndef DYNANY_HANDLER_EXPORT_H +#define DYNANY_HANDLER_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (DYNANY_HANDLER_HAS_DLL) +# define DYNANY_HANDLER_HAS_DLL 1 +#endif /* ! DYNANY_HANDLER_HAS_DLL */ + +#if defined (DYNANY_HANDLER_HAS_DLL) && (DYNANY_HANDLER_HAS_DLL == 1) +# if defined (DYNANY_HANDLER_BUILD_DLL) +# define DynAny_Handler_Export ACE_Proper_Export_Flag +# define DYNANY_HANDLER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DYNANY_HANDLER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DYNANY_HANDLER_BUILD_DLL */ +# define DynAny_Handler_Export ACE_Proper_Import_Flag +# define DYNANY_HANDLER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DYNANY_HANDLER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DYNANY_HANDLER_BUILD_DLL */ +#else /* DYNANY_HANDLER_HAS_DLL == 1 */ +# define DynAny_Handler_Export +# define DYNANY_HANDLER_SINGLETON_DECLARATION(T) +# define DYNANY_HANDLER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DYNANY_HANDLER_HAS_DLL == 1 */ + +// Set DYNANY_HANDLER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DYNANY_HANDLER_NTRACE) +# if (ACE_NTRACE == 1) +# define DYNANY_HANDLER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DYNANY_HANDLER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DYNANY_HANDLER_NTRACE */ + +#if (DYNANY_HANDLER_NTRACE == 1) +# define DYNANY_HANDLER_TRACE(X) +#else /* (DYNANY_HANDLER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DYNANY_HANDLER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DYNANY_HANDLER_NTRACE == 1) */ + +#endif /* DYNANY_HANDLER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp new file mode 100644 index 00000000000..2b01a870ba6 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp @@ -0,0 +1,109 @@ +// $Id$ + +#include "DynEnum_Handler.h" +#include "DynAny_Handler.h" + +#include "Basic_Deployment_Data.hpp" +#include "Common.h" + +#include "tao/AnyTypeCode/TypeCode.h" +#include "tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h" +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/AnyTypeCode/Enum_TypeCode.h" +#include "tao/IFR_Client/IFR_BasicC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + DynamicAny::DynAny_ptr + DynEnum_Handler::extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr req_tc) + { + try + { + CORBA::TypeCode_ptr tc; + + if (req_tc) + tc = req_tc; + else + tc = DynEnum_Handler::create_typecode (type); + + // Make the actual DynEnum + DynamicAny::DynAny_var temp = + DYNANY_HANDLER->daf ()->create_dyn_any_from_type_code (tc); + DynamicAny::DynEnum_var retval = DynamicAny::DynEnum::_narrow (temp.in ()); + + retval->set_as_string (ACE_TEXT_ALWAYS_CHAR ((*value.begin_enum ())->c_str ())); + + return retval._retn (); + } + catch (DynamicAny::DynAny::InvalidValue) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Invalid value provided in XML when trying to ") + ACE_TEXT ("initialize an instance of enumerated type %s\n"), + type.enum_ ().typeId ().c_str ())); + throw Config_Error (type.enum_ ().typeId (), + ACE_TEXT ("Invalid value provided in XML")); + } + catch (Config_Error &ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DynEnum_Handler caught Config_Error\n"))); + if (type.enum_p ()) + ex.add_name (type.enum_ ().typeId ()); + + throw ex; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DynEnum_Handler caught unknown exception\n"))); + throw Config_Error (type.enum_ ().typeId (), + ACE_TEXT ("Unknown exception")); + } + } + + void + DynEnum_Handler::extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn) + { + ACE_UNUSED_ARG (dyn); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Extracting Enums not yet supported\n"))); + } + + CORBA::TypeCode_ptr + DynEnum_Handler::create_typecode (const DataType &type) + { + if (!type.enum_p ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Enum type descriptioin required"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Did not find expected enum type description, tk_kind may be wrong.")); + } + + // Construct TypeCode for the enum + CORBA::EnumMemberSeq members; + members.length (type.enum_ ().count_member ()); + CORBA::ULong index (0); + + for (EnumType::member_const_iterator i = type.enum_ ().begin_member (); + i != type.enum_ ().end_member (); + ++i) + { + members[index++] = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR ((*i)->c_str ())); + } + + // @@ Leak this guy onto the heap to avoid a compile problem. + CORBA::TypeCode_ptr tc = + DYNANY_HANDLER->orb ()->create_enum_tc (ACE_TEXT_ALWAYS_CHAR (type.enum_ ().typeId ().c_str ()), + ACE_TEXT_ALWAYS_CHAR (type.enum_ ().name ().c_str ()), + members); + + DYNANY_HANDLER->register_typecode ((type.enum_ ().typeId ()), + tc); + + return tc; + } + + } +} + + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.h new file mode 100644 index 00000000000..8eaa1f11897 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynEnum_Handler.h @@ -0,0 +1,52 @@ +/** + * $Id$ + * + * @file DynEnum_Handler.h + * @author Will Otte + */ + +#ifndef CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H +#include /**/ "ace/pre.h" + +#include "DynAny_Handler_Export.h" + +#include "tao/ORB.h" +#include "tao/DynamicAny/DynamicAny.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + namespace Config_Handlers + { + class Any; + class DataType; + class DataValue; + + /** + * @class DynEnum_Handler + * @brief Translates enums specified in deployment plans into Dynamic Anys + * + */ + class DynEnum_Handler + { + public: + static DynamicAny::DynAny_ptr extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr = 0); + + static void extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn); + + static CORBA::TypeCode_ptr create_typecode (const DataType &type); + }; + + } +} + + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H*/ + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp new file mode 100644 index 00000000000..6da77d30e75 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp @@ -0,0 +1,163 @@ +// $Id$ + +#include "DynSequence_Handler.h" +#include "DynAny_Handler.h" + +#include "Basic_Deployment_Data.hpp" +#include "Common.h" + +#include "ace/Null_Mutex.h" + +#include "tao/AnyTypeCode/TypeCode.h" +#include "tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h" +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/AnyTypeCode/Sequence_TypeCode.h" +#include "tao/IFR_Client/IFR_BasicC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + DynamicAny::DynAny_ptr + DynSequence_Handler::extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr req_tc) + { + CORBA::TypeCode_ptr tc; + if (req_tc) + tc = req_tc; + else + tc = DynSequence_Handler::create_typecode (type); + + // Make the actual DynSequence + DynamicAny::DynAny_var temp = + DYNANY_HANDLER->daf ()->create_dyn_any_from_type_code (tc); + DynamicAny::DynSequence_var retval = DynamicAny::DynSequence::_narrow (temp.in ()); + + DynamicAny::DynAnySeq dynseq; + CORBA::ULong pos = 0; + + switch (type.sequence ().elementType ().kind ().integral ()) + { + // ========== BASIC TYPES + case TCKind::tk_null_l: + case TCKind::tk_void_l: + case TCKind::tk_objref_l: + case TCKind::tk_fixed_l: + case TCKind::tk_component_l: + case TCKind::tk_home_l: + + ACE_ERROR ((LM_WARNING, "I don't know how to handle null or void types\n")); + throw 1; + + case TCKind::tk_short_l: + case TCKind::tk_long_l: + case TCKind::tk_ushort_l: + case TCKind::tk_ulong_l: + case TCKind::tk_float_l: + case TCKind::tk_double_l: + case TCKind::tk_boolean_l: + case TCKind::tk_octet_l: + case TCKind::tk_string_l: + case TCKind::tk_longlong_l: + case TCKind::tk_ulonglong_l: + case TCKind::tk_longdouble_l: + case TCKind::tk_wstring_l: + case TCKind::tk_enum_l: + case TCKind::tk_struct_l: + try + { + dynseq.length (value.count_element ()); + retval->set_length (value.count_element ()); + + for (DataValue::element_const_iterator i = value.begin_element (); + i != value.end_element (); + ++i) + { + DynamicAny::DynAny_var dynany + (DYNANY_HANDLER->extract_into_dynany (type.sequence ().elementType (), + **i)); + dynseq[pos++] = dynany->copy (); + } + + retval->set_elements_as_dyn_any (dynseq); + return retval._retn (); + } + catch (DynamicAny::DynAny::InvalidValue) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Invalid value provided in XML when trying to ") + ACE_TEXT ("populate %ith element of a sequence\n"), + pos)); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Invalid value whilst populating the sequence.")); + } + + case TCKind::tk_char_l: + case TCKind::tk_wchar_l: + // special case where value iterataor multiplicity should be one, and should + // represent a string, each character of which becomes a element of the sequence. + + case TCKind::tk_sequence_l: + case TCKind::tk_array_l: + // Several special cases here. + + case TCKind::tk_any_l: + case TCKind::tk_TypeCode_l: + case TCKind::tk_Principal_l: + case TCKind::tk_union_l: + case TCKind::tk_alias_l: + case TCKind::tk_except_l: + case TCKind::tk_value_l: + case TCKind::tk_value_box_l: + case TCKind::tk_native_l: + case TCKind::tk_abstract_interface_l: + case TCKind::tk_local_interface_l: + case TCKind::tk_event_l: + // Special case where element association in datavalue contains another datavalue. + + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Type not supported\n"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Type not supported")); + } + + return retval._retn (); + } + + void + DynSequence_Handler::extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn) + { + ACE_UNUSED_ARG (dyn); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Extracting Sequences not yet supported\n"))); + } + + CORBA::TypeCode_ptr + DynSequence_Handler::create_typecode (const DataType &type) + { + if (!type.sequence_p ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sequence type descriptioin required"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Expected element, incorrect tc_kind.")); + } + + CORBA::TypeCode_ptr etc = + DYNANY_HANDLER->create_typecode (type.sequence ().elementType ()); + + CORBA::ULong bound (0); + if (type.sequence ().bound_p ()) + bound = type.sequence ().bound (); + + // @@ Leak this guy onto the heap to avoid a compile problem. + CORBA::TypeCode_ptr tc = + DYNANY_HANDLER->orb ()->create_sequence_tc (bound, + etc); + + // Sequences don't have names. + // DYNANY_HANDLER->register_typecode (type.sequence_ ().typeId (), + // tc); + + return tc; + } + + } +} + + + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.h new file mode 100644 index 00000000000..7d6a5b6ba6c --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynSequence_Handler.h @@ -0,0 +1,52 @@ +/** + * $Id$ + * + * @file DynSequence_Handler.h + * @author Will Otte + */ + +#ifndef CIAO_CONFIG_HANDLERS_DYNSEQUENCE_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DYNSEQUENCE_HANDLER_H +#include /**/ "ace/pre.h" + +#include "DynAny_Handler_Export.h" + +#include "tao/ORB.h" +#include "tao/DynamicAny/DynamicAny.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + namespace Config_Handlers + { + class Any; + class DataType; + class DataValue; + + /** + * @class DynSequence_Handler + * @brief Translates sequences specified in deployment plans into Dynamic Anys + * + */ + class DynSequence_Handler + { + public: + static DynamicAny::DynAny_ptr extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr = 0); + + static void extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn); + + static CORBA::TypeCode_ptr create_typecode (const DataType &type); + }; + + } +} + + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_DYNSEQUENCE_HANDLER_H*/ + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp new file mode 100644 index 00000000000..b075d418e7b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.cpp @@ -0,0 +1,130 @@ +// $Id$ + +#include "DynStruct_Handler.h" +#include "DynAny_Handler.h" + +#include "Basic_Deployment_Data.hpp" +#include "Common.h" + +#include "ace/Null_Mutex.h" + +//#include "tao/ORB.h" +#include "tao/IFR_Client/IFR_BasicC.h" +//#include "tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h" + +#include "tao/AnyTypeCode/Struct_TypeCode.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void create_type_map (const DataType &type, + std::map , DataType const *> &dt_map) + { + for (StructType::member_const_iterator i = type.struct_ ().begin_member (); + i != type.struct_ ().end_member (); ++i) + { + dt_map[(*i)->name ()] = &((*i)->type ()); + } + } + + DynamicAny::DynAny_ptr + DynStruct_Handler::extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr req_tc) + { + try + { + CORBA::TypeCode_ptr tc; + + if (req_tc) + tc = req_tc; + else + tc = DynStruct_Handler::create_typecode (type); + + std::map , DataType const*> dt_map; + create_type_map (type, dt_map); + + // Make the actual DynStruct + DynamicAny::DynAny_var temp = + DYNANY_HANDLER->daf ()->create_dyn_any_from_type_code (tc); + DynamicAny::DynStruct_var retval = DynamicAny::DynStruct::_narrow (temp.in ()); + + CORBA::ULong pos (0); + DynamicAny::NameDynAnyPairSeq values; + values.length (value.count_member ()); + + for (DataValue::member_const_iterator i = value.begin_member (); + i != value.end_member (); ++i) + { + values[pos].id = ACE_TEXT_ALWAYS_CHAR ((*i)->name ().c_str ()); + values[pos].value = DYNANY_HANDLER->extract_into_dynany (*dt_map[(*i)->name ()], + (*i)->value ()); + pos++; + } + + retval->set_members_as_dyn_any (values); + + return retval._retn (); + } + catch (Config_Error &ex) + { + if (type.struct_p ()) + ex.add_name (type.struct_ ().typeId ()); + throw ex; + } + catch (...) + { + throw Config_Error (type.struct_ ().typeId (), + ACE_TEXT ("Unknown exception")); + } + } + + + void + DynStruct_Handler::extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn) + { + ACE_UNUSED_ARG (dyn); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Extracting Structs not yet supported\n"))); + } + + CORBA::TypeCode_ptr + DynStruct_Handler::create_typecode (const DataType &type) + { + if (!type.struct_p ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Struct type descriptioin required"))); + throw Config_Error (ACE_TEXT (""), ACE_TEXT ("Expected struct type information, tc_kind may be incorrect\n")); + } + + std::basic_string rid (type.struct_ ().typeId ()); + std::basic_string name (type.struct_ ().name ()); + + CORBA::StructMemberSeq members; + members.length (type.struct_ ().count_member ()); + CORBA::ULong pos (0); + + for (StructType::member_const_iterator i = type.struct_ ().begin_member (); + i != type.struct_ ().end_member (); ++i) + { + members[pos].name = ACE_TEXT_ALWAYS_CHAR ((*i)->name ().c_str ()); + members[pos].type = DYNANY_HANDLER->create_typecode ((*i)->type ()); + ++pos; + } + + // @@ Leak this guy onto the heap to avoid a compile problem. + CORBA::TypeCode_ptr tc = + DYNANY_HANDLER->orb ()->create_struct_tc (ACE_TEXT_ALWAYS_CHAR (rid.c_str ()), + ACE_TEXT_ALWAYS_CHAR (name.c_str ()), + members); + + DYNANY_HANDLER->register_typecode (type.struct_ ().typeId (), + tc); + + return tc; + } + } +} + + + diff --git a/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.h new file mode 100644 index 00000000000..554912378c6 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/DynAny_Handler/DynStruct_Handler.h @@ -0,0 +1,52 @@ +/** + * $Id$ + * + * @file DynStruct_Handler.h + * @author Will Otte + */ + +#ifndef CIAO_CONFIG_HANDLERS_DYNSTRUCT_HANDLER_H +#define CIAO_CONFIG_HANDLERS_DYNSTRUCT_HANDLER_H +#include /**/ "ace/pre.h" + +#include "DynAny_Handler_Export.h" +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/ORB.h" +#include "tao/DynamicAny/DynamicAny.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + namespace Config_Handlers + { + class Any; + class DataType; + class DataValue; + + /** + * @class DynStruct_Handler + * @brief Translates structs specified in deployment plans into Dynamic Anys + * + */ + class DynStruct_Handler + { + public: + static DynamicAny::DynAny_ptr extract_into_dynany (const DataType &type, + const DataValue &value, + CORBA::TypeCode_ptr = 0); + + static void extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn); + + static CORBA::TypeCode_ptr create_typecode (const DataType &type); + }; + + } +} + + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_DYNSTRUCT_HANDLER_H*/ + diff --git a/modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.cpp new file mode 100644 index 00000000000..eece0a3f09a --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.cpp @@ -0,0 +1,61 @@ +// $Id$ + +#include "ERE_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + void + ERE_Handler::external_ref_endpoints ( + const PlanConnectionDescription &src, + Deployment::ExternalReferenceEndpoints &dest) + { + DANCE_TRACE("ERE_Handler::external_ref_endpoints"); + PlanConnectionDescription::externalReference_const_iterator erep_e = + src.end_externalReference (); + + CORBA::ULong pos = 0; + dest.length (src.count_externalReference ()); + for (PlanConnectionDescription::externalReference_const_iterator erep_b = + src.begin_externalReference (); + erep_b != erep_e; + ++erep_b) + { + ERE_Handler::handle_external_ref_endpoint (*(*erep_b), + dest[pos++]); + } + } + + void + ERE_Handler::handle_external_ref_endpoint ( + const ExternalReferenceEndpoint &src, + Deployment::ExternalReferenceEndpoint &dest) + { + DANCE_TRACE("ERE_Handler::external_ref_endpoint"); + dest.location = ACE_TEXT_ALWAYS_CHAR ( src.location ().c_str ()); + dest.provider = src.provider (); + if (src.portName_p ()) + dest.portName = ACE_TEXT_ALWAYS_CHAR ( src.portName ().c_str ()); + dest.supportedType.length (src.count_supportedType ()); + std::for_each (src.begin_supportedType (), + src.end_supportedType (), + String_Seq_Functor (dest.supportedType)); + } + + ExternalReferenceEndpoint + ERE_Handler::external_ref_endpoint ( + const Deployment::ExternalReferenceEndpoint& src) + { + DANCE_TRACE("ERE_Handler::external_ref_endpoint - reverse"); + XMLSchema::string< ACE_TCHAR > loc (ACE_TEXT_CHAR_TO_TCHAR (src.location)); + // XMLSchema::string< char > provider ((src.provider)); + XMLSchema::string< ACE_TCHAR > pn (ACE_TEXT_CHAR_TO_TCHAR (src.portName)); + // XMLSchema::string< char > st ((src.supportedType)); + ExternalReferenceEndpoint erp (loc, src.provider); + return erp; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.h new file mode 100644 index 00000000000..5e4d1e1054e --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ERE_Handler.h @@ -0,0 +1,70 @@ +//============================================================== +/** + * @file ERE_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_ERE_HANDLER_H +#define CIAO_CONFIG_HANDLERS_ERE_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Common_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Utils/Functors.h" + +namespace Deployment +{ + class ExternalReferenceEndpoints; + struct ExternalReferenceEndpoint; +} + +namespace CIAO +{ + + namespace Config_Handlers + { + class PlanConnectionDescription; + class ExternalReferenceEndpoint; + + /* + * @class ERE_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC ExternalReferenceEndpoint objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Common_Export ERE_Handler + { + public: + static void external_ref_endpoints (const PlanConnectionDescription &src, + ::Deployment::ExternalReferenceEndpoints &dest); + + static ExternalReferenceEndpoint external_ref_endpoint ( + const Deployment::ExternalReferenceEndpoint& src); + + static void handle_external_ref_endpoint (const ExternalReferenceEndpoint &src, + Deployment::ExternalReferenceEndpoint &dest); + }; + + typedef Sequence_Handler < ExternalReferenceEndpoint, + ::Deployment::ExternalReferenceEndpoints, + ::Deployment::ExternalReferenceEndpoint, + ERE_Handler::handle_external_ref_endpoint > ERE_Functor; + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_ERE_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.cpp new file mode 100644 index 00000000000..8cfb39ae871 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.cpp @@ -0,0 +1,124 @@ +// $Id$ + +#include "ESD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "cdp.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + void + ESD_Handler::es_deployment_descrs ( + const DeploymentPlan &src, + Deployment::EventServiceDeploymentDescriptions& dest) + { + DANCE_TRACE("ESD_Handler::instance_deployment_descrs"); + DeploymentPlan::es_const_iterator esd_e = src.end_instance (); + + CORBA::ULong pos = 0; + dest.length (src.count_instance ()); + for (DeploymentPlan::es_const_iterator esd_b = + src.begin_instance (); + esd_b != esd_e; + ++esd_b) + { + ESD_Handler::instance_deployment_descr ((*esd_b), + dest[pos], pos); + pos++; + } + } + + + void + ESD_Handler::es_deployment_descr ( + const EventServiceDeploymentDescription& src, + Deployment::EventServiceDeploymentDescription& dest, + CORBA::ULong pos) + { + DANCE_TRACE("IDD_Handler::es_deployment_descr"); + try + { + dest.name = src.name ().c_str (); + dest.node = src.node ().c_str (); + dest.svc_cfg_file = src.svc_cfg_file ().c_str ()); + + switch (desc.type ().integral ()) + { + case EventServiceType::EC_l: + dest.type = Deployment::EC; + break; + + case EventServiceType::RTEC_l: + dest.type = Deployment::RTEC; + break; + + case EventServiceType::NOTIFY_l: + dest.type = Deployment::NOTIFY; + break; + + case EventServiceType::RTNOTIFY_l: + dest.type = Deployment::RTNOTIFY; + break; + + default: + throw Config_Error (desc.requirementName (), + "Unknown EventServiceType."); + break; + } + } + catch (Config_Error &ex) + { + ex.name_ = src.name () + ":" + ex.name_; + throw ex; + } + // Done! + } + + EventServiceDeploymentDescription + ESD_Handler::es_deployment_descr ( + const Deployment::EventServiceDeploymentDescription& src) + { + DANCE_TRACE("ESD_Handler::es_deployment_descr - reverse"); + //Get all the string + XMLSchema::string < ACE_TCHAR > name ((src.name)); + XMLSchema::string < ACE_TCHAR > node ((src.node)); + XMLSchema::string < ACE_TCHAR > svc_cfg_file ((src.svc_cfg_file)); + + // Instantiate the IDD + EventServiceDeploymentDescription esd ( + name, + node, + EventServiceType::RTEC_l, + svc_cfg_file); + + switch (src.EventServiceType) + { + case Deployment::EC: + esd.EventServiceType (EventServiceType::EC); + break; + + case Deployment::RTEC: + esd.EventServiceType (EventServiceType::RTEC); + break; + + case Deployment::NOTIFY: + esd.EventServiceType (EventServiceType::NOTIFY); + break; + + case Deployment::RTNOTIFY: + esd.EventServiceType (EventServiceType::RTNOTIFY); + break; + + default: + throw Config_Error (src.resourceName.in (), + "Unknown EventServiceType."); + break; + } + + return esd; + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.h new file mode 100644 index 00000000000..b20828a9713 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ESD_Handler.h @@ -0,0 +1,69 @@ +//============================================================== +/** + * @file ESD_Handler.h + * + * $Id$ + * + * @author Gan Deng + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_IDD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_IDD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Common.h" +#include "tao/Basic_Types.h" +#include "Config_Handlers_Export.h" +#include "IDREF_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct EventServiceDeploymentDescription; + class EventServiceDeploymentDescriptions; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class DeploymentPlan; + class EventServiceDeploymentDescription; + + /* + * @class ESD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC EventServiceDeploymentDescription objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Export ESD_Handler + { + public: + static void es_deployment_descrs ( + const DeploymentPlan &src, + ::Deployment::EventServiceDeploymentDescriptions& dest); + + static EventServiceDeploymentDescription es_deployment_descr (const Deployment::EventServiceDeploymentDescription &src); + + static IDREF_Base IDREF; + + private: + static void es_deployment_descr ( + const EventServiceDeploymentDescription &src, + ::Deployment::EventServiceDeploymentDescription &dest, + CORBA::ULong pos); + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_IDD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.cpp new file mode 100644 index 00000000000..905b202b081 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.cpp @@ -0,0 +1,165 @@ +// $Id$ + +#include "ace/UUID.h" +#include "IDD_Handler.h" +#include "IRDD_Handler.h" +#include "MDD_Handler.h" +#include "Property_Handler.h" +#include "Any_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "cdp.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + IDREF_Base IDD_Handler::IDREF; + + void + IDD_Handler::instance_deployment_descrs (const deploymentPlan &src, + Deployment::InstanceDeploymentDescriptions& dest) + { + DANCE_TRACE("IDD_Handler::instance_deployment_descrs"); + deploymentPlan::instance_const_iterator idd_e = + src.end_instance (); + + CORBA::ULong pos = 0; + dest.length (src.count_instance ()); + for (deploymentPlan::instance_const_iterator idd_b = + src.begin_instance (); + idd_b != idd_e; + ++idd_b) + { + IDD_Handler::instance_deployment_descr (*(*idd_b), + dest[pos], pos); + pos++; + } + } + + void + IDD_Handler::instance_deployment_descr ( + const InstanceDeploymentDescription& src, + Deployment::InstanceDeploymentDescription& dest, + CORBA::ULong pos) + { + DANCE_TRACE("IDD_Handler::instance_deployment_descr"); + try + { + dest.name = ACE_TEXT_ALWAYS_CHAR ( src.name ().c_str ()); + dest.node = ACE_TEXT_ALWAYS_CHAR ( src.node ().c_str ()); + + if (src.id_p ()) + { + ACE_TString cstr (src.id ().c_str ()); + IDD_Handler::IDREF.bind_ref (cstr, pos); + } + else + { + ACE_DEBUG((LM_ERROR, + "(%P|%t) Warning: IDD %s has no idref\n", + ACE_TEXT_ALWAYS_CHAR ( src.name ().c_str ()))); + } + + // We know there should be only one element + dest.source.length (1); + dest.source [0] = + ACE_TEXT_ALWAYS_CHAR (src.source ().c_str ()); + + CORBA::ULong tmp = 0; + MDD_Handler::IDREF.find_ref (ACE_TString (src.implementation ().idref ().id ().c_str ()), tmp); + + dest.implementationRef = tmp; + + dest.configProperty.length (src.count_configProperty ()); + std::for_each (src.begin_configProperty (), + src.end_configProperty (), + Property_Functor (dest.configProperty)); + + dest.deployedResource.length (src.count_deployedResource ()); + std::for_each (src.begin_deployedResource (), + src.end_deployedResource (), + IRDD_Functor (dest.deployedResource)); + + if (src.deployedSharedResource_p ()) + { + dest.deployedSharedResource.length (1); + IRDD_Handler::handle_irdd (src.deployedSharedResource (), + dest.deployedSharedResource[0]); + } + + } + catch (Config_Error &ex) + { + ex.name_ = src.name () + ACE_TEXT (":") + ex.name_; + throw ex; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unknown exception at IDD:%s"), + src.name ().c_str ())); + throw Config_Error (src.name (), ACE_TEXT ("Unknown exception")); + } + + // Done! + } + + InstanceDeploymentDescription + IDD_Handler::instance_deployment_descr ( + const Deployment::InstanceDeploymentDescription& src) + { + DANCE_TRACE("IDD_Handler::instance_deployment_descr - reverse"); + //Get all the string/IDREFs + XMLSchema::string < ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + XMLSchema::string < ACE_TCHAR > node (ACE_TEXT_CHAR_TO_TCHAR (src.node)); + XMLSchema::string < ACE_TCHAR > source (ACE_TEXT ("")); + if (src.source.length () > 0) + { + XMLSchema::string < ACE_TCHAR > source_detail (ACE_TEXT_CHAR_TO_TCHAR (src.source[0])); + source = source_detail; + } + ACE_TString temp; + MDD_Handler::IDREF.find_ref(src.implementationRef, temp); + XMLSchema::IDREF< ACE_TCHAR > implementation ((temp.c_str())); + + // Instantiate the IDD + IdRef xid; + xid.idref (implementation); + InstanceDeploymentDescription idd (name, node, source, xid); + + //Get and store the configProperty(s) + size_t total = src.configProperty.length(); + for(size_t j = 0; j < total; j++) + { + //idd.add_configProperty(Property_Handler::get_property (src.configProperty[j])); + } + + // Get and store the deployedResource(s) + size_t dp_total = src.deployedResource.length (); + for (size_t k = 0; k < dp_total; k++) + { + //idd.add_deployedResource (IRDD_Handler::instance_resource_deployment_descr (src.deployedResource[k])); + } + + //Check if there is a deployedSharedResource, if so store it + if(src.deployedSharedResource.length() != 0) + idd. deployedSharedResource(IRDD_Handler::instance_resource_deployment_descr(src.deployedSharedResource[0])); + + // Generate a UUID to use for the IDREF. + ACE_Utils::UUID uuid; + ACE_Utils::UUID_GENERATOR::instance ()->generate_UUID (uuid); + ACE_TString idd_id (ACE_TEXT ("_")); + idd_id += ACE_TEXT_CHAR_TO_TCHAR (uuid.to_string ()->c_str ()); + + XMLSchema::ID< ACE_TCHAR > xml_id (idd_id.c_str ()); + + // Bind the ref and set it in the IDD + IDD_Handler::IDREF.bind_next_available (idd_id); + + idd.id (xml_id); + + return idd; + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.h new file mode 100644 index 00000000000..313b7d9e6b2 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/IDD_Handler.h @@ -0,0 +1,70 @@ +//============================================================== +/** + * @file IDD_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_IDD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_IDD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Common.h" +#include "tao/Basic_Types.h" +#include "Config_Handlers_Export.h" +#include "IDREF_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct InstanceDeploymentDescription; + class InstanceDeploymentDescriptions; + struct InstanceResourceDeploymentDescription; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class deploymentPlan; + class InstanceDeploymentDescription; + class InstanceResourceDeploymentDescription; + + /* + * @class IDD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC InstanceDeploymentDescriptionn objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Export IDD_Handler + { + public: + static void instance_deployment_descrs (const deploymentPlan &src, + ::Deployment::InstanceDeploymentDescriptions& dest); + + static InstanceDeploymentDescription instance_deployment_descr (const Deployment::InstanceDeploymentDescription &src); + + static IDREF_Base IDREF; + + private: + static void instance_deployment_descr (const InstanceDeploymentDescription &src, + ::Deployment::InstanceDeploymentDescription &dest, + CORBA::ULong pos); + + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_IDD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.cpp b/modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.cpp new file mode 100644 index 00000000000..9f11efb7535 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.cpp @@ -0,0 +1,111 @@ +// $Id$ + +#ifndef IDREF_BASE_CPP +#define IDREF_BASE_CPP + +#include "DAnCE/Logger/Log_Macros.h" +#include "IDREF_Base.h" +#include + + +ACE_RCSID (DAnCE, + IDREF_Base, + "$Id$") + +namespace CIAO + { + namespace Config_Handlers + { + template + void + IDREF_Base::bind_ref (ACE_TString& id, T value) + { + DANCE_TRACE("IDREF_Base::bind_ref"); + + int retval = + idref_map_.bind (id, value); + + pos_map_.bind (value,id); + + if (retval < 0) + throw Config_Error (id.c_str (), + ACE_TEXT ("Failed to bind an IDRef. This likely indicates a name clash.")); + } + + template + void + IDREF_Base::bind_next_available (ACE_TString &id) + { + // Note: For this function to compile and work properly, + // T must have the postincrement operator defined. + DANCE_TRACE ("IDREF_Base::bind_next_available"); + // ACE_DEBUG ((LM_DEBUG, "**** Binding %s to %i\n", + // id.c_str (), + // this->next_)); + + int retval = idref_map_.bind (id, this->next_); + + int pos_retval = pos_map_.bind (this->next_, id); + + ++this->next_; + + if (retval < 0 || pos_retval < 0) + throw Config_Error (id.c_str (), + ACE_TEXT ("Failed to bind an IDRef. This likely indicates a name clash")); + + } + + template + void + IDREF_Base::find_ref (const ACE_TString& id, T& val) + { + DANCE_TRACE("IDREF_Base::find_ref(C_String, T)"); + + int retval = + idref_map_.find (id, val); + + if (retval < 0) + throw Config_Error (id.c_str (), + ACE_TEXT ("Unable to look up an IDRef.")); + } + + template + void + IDREF_Base::find_ref (const T& value, ACE_TString& id) + { + DANCE_TRACE("IDREF_Base::find_ref (T, CString)"); + + int retval = + pos_map_.find (value, id); + + // ACE_ERROR ((LM_ERROR, "**** Looking up value %i\n", + // value)); + + if (retval < 0) + throw Config_Error (ACE_TEXT ("No location information for reverse IDREF lookup"), + id.c_str ()); + } + + template + bool + IDREF_Base::unbind_refs (void) + { + DANCE_TRACE("IDREF_Base::unbind_refs"); + + int retval = + idref_map_.unbind_all (); + + pos_map_.unbind_all (); + + this->next_ = 0; + + if (retval < 0) + return false; + + return true; + } + } + + } + +#endif /* IDREF_BASE_CPP */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.h b/modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.h new file mode 100644 index 00000000000..3707f66142d --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/IDREF_Base.h @@ -0,0 +1,89 @@ +/** +* $Id$ +* @file IDREF_Base.h +* @author Will Otte +* +* Defines the IDREF_Base class, which is an abstract class that serves +* as a base for any config handler that must map IDREFS. +*/ + +#ifndef CIAO_CONFIG_HANDLERS_IDREF_BASE_H +#define CIAO_CONFIG_HANDLERS_IDREF_BASE_H + +#include /**/ "ace/pre.h" + +#include "Common.h" +#include "Config_Handlers_Export.h" +#include "ace/Hash_Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "ace/SString.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ +namespace Config_Handlers +{ + +/** +* @class IDREF_Handler +* @brief Base class for any handler that must process idrefs. +* +*/ +template +class IDREF_Base +{ +public: +IDREF_Base () +{ +} + +IDREF_Base (T start_point) +: next_ (start_point) +{ +} + +/// Bind an IDREF to an index + void bind_ref (ACE_TString& id, T value); + +void bind_next_available (ACE_TString &id); + +/// Get the index associated with an IDREF + void find_ref (const ACE_TString& id, T& value); + +/// get the IDREF associated with an index + void find_ref (const T &value, ACE_TString& id); + +/// Unbind all IDREFS +bool +unbind_refs (void); + +typedef ACE_Hash_Map_Manager IDREF_MAP; + + +typedef ACE_Hash_Map_Manager POS_MAP; +protected: +/// The map used to store and look up the indexes of elements +/// referenced by their IDREF. +IDREF_MAP idref_map_; +/// The map used to store and look up the IDREFS of elements +/// referenced by their index. +POS_MAP pos_map_; + +T next_; +}; + +} + +} + +#include "IDREF_Base.cpp" + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_IDREF_BASE_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/ID_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/ID_Handler.cpp new file mode 100644 index 00000000000..f4e361e0d5d --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ID_Handler.cpp @@ -0,0 +1,45 @@ +// $Id$ + +#include "ID_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + ID_Handler::ID_Handler (void) + { + } + + ID_Handler::~ID_Handler (void) + { + } + + + void + ID_Handler::get_ImplementationDependency (const ImplementationDependency& desc, + Deployment::ImplementationDependency& toconfig) + { + + DANCE_TRACE("ID_Handler::get_ImplementationDependency"); + + toconfig.requiredType= + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.requiredType ().c_str ())); + } + + ImplementationDependency + ID_Handler::impl_dependency ( + const ::Deployment::ImplementationDependency& src) + { + DANCE_TRACE("ID_Handler::get_ImplementationDependency - reverse"); + XMLSchema::string< ACE_TCHAR > reqtype (ACE_TEXT_CHAR_TO_TCHAR (src.requiredType)); + + ImplementationDependency id (reqtype); + + return id; + } + + } + +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/ID_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/ID_Handler.h new file mode 100644 index 00000000000..bea6ec2b1a6 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ID_Handler.h @@ -0,0 +1,78 @@ + +//============================================================== +/** +* @file ID_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_ID_Handler_H +#define CIAO_CONFIG_HANDLERS_ID_Handler_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" +#include "ace/config-lite.h" + +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + + +namespace Deployment +{ +struct ImplementationDependency; +class ImplementationDependencies; + +} + + +namespace CIAO +{ + +namespace Config_Handlers +{ + +class ImplementationDependency; + + +/* +* @class ID_Handler +* +* @brief Handler class for types. +* +* This class defines handler methods to map values from +* XSC ImplementationDependency objects, parsed from the descriptor files, to the +* corresponding CORBA IDL Any type. +* +*/ +class Config_Handlers_Export ID_Handler +{ +public: + +ID_Handler (void); +virtual ~ID_Handler (void); + +static void get_ImplementationDependency ( +const ImplementationDependency& desc, +Deployment::ImplementationDependency& toconfig); + +static ImplementationDependency impl_dependency ( +const ::Deployment::ImplementationDependency& src); +}; + +typedef Sequence_Handler < ImplementationDependency, +::Deployment::ImplementationDependencies, +::Deployment::ImplementationDependency, +ID_Handler::get_ImplementationDependency > ID_Functor; + +} +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_ID_Handler_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.cpp new file mode 100644 index 00000000000..5f98bd0fbb0 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.cpp @@ -0,0 +1,118 @@ +// $Id$ + +#include "IRDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "Property_Handler.h" +#include "DAnCE/Logger/Log_Macros.h" + + +namespace CIAO +{ + namespace Config_Handlers + { + + IRDD_Handler::IRDD_Handler (void) + { + } + + IRDD_Handler::~IRDD_Handler (void) + { + } + + + void + IRDD_Handler::handle_irdd (const InstanceResourceDeploymentDescription& desc, + Deployment::InstanceResourceDeploymentDescription& toconfig) + { + DANCE_TRACE("IRDD_Handler::instance_resource_deployment_descr"); + + switch (desc.resourceUsage ().integral ()) + { + case ResourceUsageKind::None_l: + toconfig.resourceUsage = Deployment::None; + break; + + case ResourceUsageKind::InstanceUsesResource_l: + toconfig.resourceUsage = Deployment::InstanceUsesResource; + break; + + case ResourceUsageKind::ResourceUsesInstance_l: + toconfig.resourceUsage = Deployment::ResourceUsesInstance; + break; + + case ResourceUsageKind::PortUsesResource_l: + toconfig.resourceUsage = Deployment::PortUsesResource; + break; + + case ResourceUsageKind::ResourceUsesPort_l: + toconfig.resourceUsage = Deployment::ResourceUsesPort; + break; + + default: + throw Config_Error (desc.requirementName (), + ACE_TEXT ("Unknown ResourceUsageKind.")); + break; + } + + toconfig.requirementName = ACE_TEXT_ALWAYS_CHAR ( desc.requirementName ().c_str ()); + + toconfig.resourceName= ACE_TEXT_ALWAYS_CHAR ( desc.resourceName ().c_str ()); + + toconfig.property.length (desc.count_property ()); + std::for_each (desc.begin_property (), + desc.end_property (), + Property_Functor (toconfig.property)); + } + + InstanceResourceDeploymentDescription + IRDD_Handler::instance_resource_deployment_descr (const Deployment::InstanceResourceDeploymentDescription& src) + { + DANCE_TRACE("IRDD_Handler::instance_resource_deployment_descr - reverse"); + + XMLSchema::string< ACE_TCHAR > reqname (ACE_TEXT_CHAR_TO_TCHAR (src.requirementName)); + XMLSchema::string< ACE_TCHAR > resname (ACE_TEXT_CHAR_TO_TCHAR (src.resourceName)); + + InstanceResourceDeploymentDescription irdd (ResourceUsageKind::None, + reqname, + resname); + + switch (src.resourceUsage) + { + case Deployment::None: + irdd.resourceUsage (ResourceUsageKind::None); + break; + + case Deployment::InstanceUsesResource: + irdd.resourceUsage (ResourceUsageKind::InstanceUsesResource); + break; + + case Deployment::ResourceUsesInstance: + irdd.resourceUsage (ResourceUsageKind::ResourceUsesInstance); + break; + + case Deployment::PortUsesResource: + irdd.resourceUsage (ResourceUsageKind::PortUsesResource); + break; + + case Deployment::ResourceUsesPort: + irdd.resourceUsage (ResourceUsageKind::ResourceUsesPort); + break; + + default: + throw Config_Error (ACE_TEXT_CHAR_TO_TCHAR (src.resourceName.in ()), + ACE_TEXT ("Unknown ResourceUsageKind.")); + break; + } + + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + { + //irdd.add_property (Property_Handler::get_property (src.property[i])); + } + + + return irdd; + } + } + +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.h new file mode 100644 index 00000000000..afebf61cc24 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/IRDD_Handler.h @@ -0,0 +1,69 @@ +//============================================================== +/** +* @file IRDD_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_IRDD_Handler_H +#define CIAO_CONFIG_HANDLERS_IRDD_Handler_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" +#include "Common.h" +#include "ace/config-lite.h" +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct InstanceResourceDeploymentDescription; + class InstanceResourceDeploymentDescriptions; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class InstanceResourceDeploymentDescription; + + /* + * @class IRDD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC InstanceResourceDeploymentDescription objects, parsed from the descriptor files, to the + * corresponding CORBA IDL Any type. + * + */ + class Config_Handlers_Export IRDD_Handler { + public: + IRDD_Handler (void); + virtual ~IRDD_Handler (void); + + static void handle_irdd (const InstanceResourceDeploymentDescription& desc, + Deployment::InstanceResourceDeploymentDescription& toconfig) + /*throw (Config_Error)*/; + + static InstanceResourceDeploymentDescription + instance_resource_deployment_descr (const Deployment::InstanceResourceDeploymentDescription& src) + /*throw (Config_Error)*/; + }; + + typedef Sequence_Handler < InstanceResourceDeploymentDescription, + ::Deployment::InstanceResourceDeploymentDescriptions, + ::Deployment::InstanceResourceDeploymentDescription, + IRDD_Handler::handle_irdd > IRDD_Functor; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_IRDD_Handler_H */ + diff --git a/modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.cpp new file mode 100644 index 00000000000..7bf2d6ea121 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.cpp @@ -0,0 +1,174 @@ +// $Id$ + +#include "MDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "ADD_Handler.h" +#include "Property_Handler.h" +#include "Req_Handler.h" +#include "cdp.hpp" +#include "ace/UUID.h" + +namespace CIAO +{ + namespace Config_Handlers + { + IDREF_Base MDD_Handler::IDREF; + + void + MDD_Handler::mono_deployment_descriptions (const deploymentPlan& src, + Deployment::MonolithicDeploymentDescriptions& dest) + { + DANCE_TRACE("MDD_Handler::mono_deployment_descriptions"); + + deploymentPlan::implementation_const_iterator imp_e = + src.end_implementation (); + CORBA::ULong pos = 0; + dest.length (src.count_implementation ()); + for (deploymentPlan::implementation_const_iterator imp_b = + src.begin_implementation (); + imp_b != imp_e; + ++imp_b) + { + MDD_Handler::mono_deployment_description (*(*imp_b), + dest[pos], + pos); + pos++; + } + } + + void + MDD_Handler::mono_deployment_description (const MonolithicDeploymentDescription& desc, + Deployment::MonolithicDeploymentDescription& toconfig, + CORBA::ULong pos) + { + toconfig.name = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ())); + + MonolithicDeploymentDescription::source_const_iterator me = + desc.end_source (); + + CORBA::ULong len = 0; + toconfig.source.length (desc.count_source ()); + for (MonolithicDeploymentDescription::source_const_iterator se = + desc.begin_source (); + se != me; + ++se) + { + toconfig.source[len++] = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR ((*se)->c_str ())); + } + + MonolithicDeploymentDescription::artifact_const_iterator ae = + desc.end_artifact (); + len = 0; + toconfig.artifactRef.length (desc.count_artifact ()); + for (MonolithicDeploymentDescription::artifact_const_iterator + ab = desc.begin_artifact (); + ae != ab; + ++ab) + { + CORBA::ULong tmp = 0; + + ADD_Handler::IDREF.find_ref (ACE_TString ((*ab)->idref ().id ().c_str ()), + tmp); + + toconfig.artifactRef[len++] = tmp; + } + + MonolithicDeploymentDescription::execParameter_const_iterator epce = + desc.end_execParameter (); + len = 0; + toconfig.execParameter.length (desc.count_execParameter ()); + for (MonolithicDeploymentDescription::execParameter_const_iterator epcb = + desc.begin_execParameter (); + epcb != epce; + ++epcb) + { + Property_Handler::handle_property (*(*epcb), + toconfig.execParameter[len++]); + } + + toconfig.deployRequirement.length (desc.count_deployRequirement ()); + std::for_each (desc.begin_deployRequirement (), + desc.end_deployRequirement (), + Requirement_Functor (toconfig.deployRequirement)); + + // Handle the idref + if (desc.id_p ()) + { + ACE_TString cstr (desc.id ().c_str ()); + + MDD_Handler::IDREF.bind_ref (cstr, pos); + } + else + { + ACE_DEBUG((LM_ERROR, + "(%P|%t) Warning: MDD %s has no idref\n", + desc.name ().c_str ())); + } + } + + + MonolithicDeploymentDescription + MDD_Handler::mono_deployment_description( + const Deployment::MonolithicDeploymentDescription &src) + { + DANCE_TRACE("mono_deployment_description - reverse"); + + //Get the name and instantiate the mdd + XMLSchema::string < ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + MonolithicDeploymentDescription mdd (name); + + //Get the source(s) from the IDL and store them + size_t total = src.source.length(); + for(size_t i = 0; i < total; i++) + { + XMLSchema::string< ACE_TCHAR > curr (ACE_TEXT_CHAR_TO_TCHAR(src.source[i])); + //mdd.add_source(curr); + } + + //Get the artifactRef(s) from the IDL and store them + total = src.artifactRef.length(); + for(size_t j = 0; j < total; j++) + { + ACE_TString tmp; + ADD_Handler::IDREF.find_ref(src.artifactRef[j], tmp); + IdRef idref; + idref.idref (tmp.c_str ()); + //mdd.add_artifact (idref); + } + + //Get the execParameter(s) from the IDL and store them + total = src.execParameter.length(); + for(size_t k = 0; k < total; k++) + { + //mdd.add_execParameter (Property_Handler::get_property (src.execParameter[k])); + } + + //Get the deployRequirement(s) from the IDL and store them + total = src.deployRequirement.length(); + for(size_t l = 0; l < total; l++) + { + //mdd.add_deployRequirement(Req_Handler::get_requirement (src.deployRequirement[l])); + } + + // Generate a UUID to use for the IDREF. + ACE_Utils::UUID uuid; + ACE_Utils::UUID_GENERATOR::instance ()->generate_UUID (uuid); + ACE_TString mdd_id (ACE_TEXT ("_")); + mdd_id += ACE_TEXT_CHAR_TO_TCHAR (uuid.to_string ()->c_str ()); + + XMLSchema::ID< ACE_TCHAR > xml_id (mdd_id.c_str ()); + + // Bind the ref and set it in the IDD + MDD_Handler::IDREF.bind_next_available (mdd_id); + + mdd.id (xml_id); + + return mdd; + } + } + +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.h new file mode 100644 index 00000000000..c36efe6885b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/MDD_Handler.h @@ -0,0 +1,68 @@ +//============================================================== +/** + * @file MDD_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_MDD_Handler_H +#define CIAO_CONFIG_HANDLERS_MDD_Handler_H +#include /**/ "ace/pre.h" +#include "tao/Basic_Types.h" +#include "Config_Handlers_Export.h" +#include "IDREF_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace Deployment +{ + struct MonolithicDeploymentDescription; + class MonolithicDeploymentDescriptions; +} + + +namespace CIAO +{ + + namespace Config_Handlers + { + class MonolithicDeploymentDescription; + class deploymentPlan; + + /* + * @class MDD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from XSC + * MonolithicDeploymentDescription objects, parsed from the + * descriptor files, to the corresponding CORBA IDL types. + * + */ + + class Config_Handlers_Export MDD_Handler + { + public: + static void mono_deployment_descriptions (const deploymentPlan &src, + Deployment::MonolithicDeploymentDescriptions &dest); + + static MonolithicDeploymentDescription mono_deployment_description(const Deployment::MonolithicDeploymentDescription &src); + + static IDREF_Base IDREF; + + private: + static void mono_deployment_description (const MonolithicDeploymentDescription& desc, + Deployment::MonolithicDeploymentDescription& toconfig, + CORBA::ULong pos); + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_MDD_Handler_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.cpp new file mode 100644 index 00000000000..d7136389160 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.cpp @@ -0,0 +1,135 @@ +// $Id$ + +#include "PCD_Handler.h" +#include "Req_Handler.h" +#include "CEPE_Handler.h" +#include "PSPE_Handler.h" +#include "ERE_Handler.h" +#include "CRDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + + PCD_Handler::PCD_Handler (void) + { + } + + PCD_Handler::~PCD_Handler (void) + { + } + + ///This method takes a + ///and maps the values from the passed in XSC + ///PlanConnectionDescription to its members. + void PCD_Handler::handle_PlanConnectionDescription (const PlanConnectionDescription& desc, + Deployment::PlanConnectionDescription& toconfig) + { + DANCE_TRACE("PCD_Handler::get_PlanConnectionDescription"); + + toconfig.name =( CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()))); + + //Source is mapped to a string in the schema and a sequence + //in the IDL. We just assign the source string from the xml + //to the first position in the IDL type's sequence. We + //make sure that the source is present before lengthening + //the sequence. + if (desc.source_p ()) + { + // Only one..... + toconfig.source.length (1); + toconfig.source[0] = ACE_TEXT_ALWAYS_CHAR ( desc.source ().c_str ()); + } + + toconfig.deployRequirement.length (desc.count_deployRequirement ()); + std::for_each (desc.begin_deployRequirement (), + desc.end_deployRequirement (), + Requirement_Functor (toconfig.deployRequirement)); + + + //Create the ComponentExternalPortEndpoint handler. + CEPE_Handler::external_port_endpoints (desc, + toconfig.externalEndpoint); + + //Configure the PlanSubcomponentPortEndpoint's. + PSPE_Handler::sub_component_port_endpoints (desc, + toconfig.internalEndpoint); + + //Configure the ExternalReferenceEndpoint's. + ERE_Handler::external_ref_endpoints (desc, + toconfig.externalReference); + + //Configure the resource value. + CRDD_Handler crddhandler; + CORBA::ULong pos = 0; + toconfig.deployedResource.length (desc.count_deployedResource ()); + for(PlanConnectionDescription::deployedResource_const_iterator res = + desc.begin_deployedResource(); + res != desc.end_deployedResource(); + res++) + { + crddhandler.get_ConnectionResourceDeploymentDescription (toconfig.deployedResource[pos++], + *(*res)); + } + + } + + PlanConnectionDescription + PCD_Handler::get_PlanConnectionDescription (const Deployment::PlanConnectionDescription &src) + { + DANCE_TRACE("PCD_Handler::get_PlanConnectionDescription"); + + XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + + PlanConnectionDescription pcd(name); + + //Get the source if it exists + if(src.source.length() != 0) + { + XMLSchema::string< ACE_TCHAR > source(ACE_TEXT_CHAR_TO_TCHAR (src.source[0])); + pcd.source(source); + } + + //Get any externalEndpoint(s) and store them + size_t total = src.externalEndpoint.length(); + for(size_t i = 0; i < total; i++) + { + //pcd.add_externalEndpoint(CEPE_Handler::external_port_endpoint(src.externalEndpoint[i])); + } + + //Get any externalReference(s) and store them + total = src.externalReference.length(); + for(size_t j = 0; j < total; j++) + { + //pcd.add_externalReference(ERE_Handler::external_ref_endpoint(src.externalReference[j])); + } + + //Get any internalEndpoint(s) and store them + total = src.internalEndpoint.length(); + for(size_t k = 0; k < total; k++) + { + //pcd.add_internalEndpoint(PSPE_Handler::sub_component_port_endpoint(src.internalEndpoint[k])); + } + + //Get any deployedResource(s) and store them + total = src.deployedResource.length(); + for(size_t l = 0; l < total; l++) + { + //pcd.add_deployedResource(CRDD_Handler::connection_resource_depl_desc(src.deployedResource[l])); + } + + //Get any deployRequirement(s) and store them + total = src.deployRequirement.length(); + for(size_t m = 0; m < total; m++) + { + //pcd.add_deployRequirement(Req_Handler::get_requirement(src.deployRequirement[m])); + } + + return pcd; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.h new file mode 100644 index 00000000000..3813fa2badc --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/PCD_Handler.h @@ -0,0 +1,75 @@ +//============================================================== +/** + * @file PCD_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_PCD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_PCD_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" +#include "Utils/Functors.h" +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct PlanConnectionDescription; + class PlanConnectionDescriptions; +} + +namespace CIAO +{ + + namespace Config_Handlers + { + + class PlanConnectionDescription; + + /* + * @class PCD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC PlanConnectionDescription objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Export PCD_Handler{ + + public: + + PCD_Handler (void); + virtual ~PCD_Handler (void); + + ///This method takes a + ///and maps the values from the passed in XSC + ///PlanConnectionDescription to its members. + static void handle_PlanConnectionDescription (const PlanConnectionDescription& desc, + ::Deployment::PlanConnectionDescription& toconfig); + + //This method takes a + //converts it into a + //and returns the value + static PlanConnectionDescription + get_PlanConnectionDescription (const Deployment::PlanConnectionDescription &src); + }; + + typedef Sequence_Handler < PlanConnectionDescription, + ::Deployment::PlanConnectionDescriptions, + ::Deployment::PlanConnectionDescription, + PCD_Handler::handle_PlanConnectionDescription > PCD_Functor; + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_PCD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/PL_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/PL_Handler.cpp new file mode 100644 index 00000000000..856a7d51983 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/PL_Handler.cpp @@ -0,0 +1,52 @@ +// $Id$ + +#include "PL_Handler.h" +#include "IDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + PL_Handler::get_PlanLocality (const PlanLocality &desc, + Deployment::PlanLocality &toconfig) + { + DANCE_TRACE ("PL_Handler::get_PlanLocality"); + + switch (desc.constraint ().integral ()) + { + case PlanLocalityKind::SameProcess_l: + toconfig.constraint = Deployment::PlanSameProcess; + break; + + case PlanLocalityKind::DifferentProcess_l: + toconfig.constraint = Deployment::PlanDifferentProcess; + break; + + case PlanLocalityKind::NoConstraint_l: + toconfig.constraint = Deployment::PlanNoConstraint; + break; + } + + + size_t pos = 0; + toconfig.constrainedInstanceRef.length (desc.count_constrainedInstance ()); + + for (PlanLocality::constrainedInstance_const_iterator i = desc.begin_constrainedInstance (); + i != desc.end_constrainedInstance (); + ++i) + { + CORBA::ULong tmp = 0; + IDD_Handler::IDREF.find_ref ((*i)->idref ().id ().c_str (), tmp); + + toconfig.constrainedInstanceRef[pos] = tmp; + ++pos; + } + } + + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/PL_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/PL_Handler.h new file mode 100644 index 00000000000..0511b81be48 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/PL_Handler.h @@ -0,0 +1,53 @@ +// $Id$ + +/** + * @file PL_Handler.h + * @author William R. Otte + * + * Handles PlanLocality elements + * + */ + +#ifndef CIAO_CONFIG_HANDLERS_PL_HANDLER_ +#define CIAO_CONFIG_HANDLERS_PL_HANDLER_ + +#include "Config_Handlers_Export.h" +#include "ace/config-lite.h" + +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{// $Id$ + + struct PlanLocality; + class PlanLocalities; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class PlanLocality; + + class Config_Handlers_Export PL_Handler + { + public: + static void get_PlanLocality (const PlanLocality &desc, + Deployment::PlanLocality &toconfig); + + static PlanLocality plan_locality (const ::Deployment::PlanLocality &src); + }; + + typedef Sequence_Handler < PlanLocality, + ::Deployment::PlanLocalities, + ::Deployment::PlanLocality, + PL_Handler::get_PlanLocality > PL_Functor; + + } +} + +#endif diff --git a/modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.cpp new file mode 100644 index 00000000000..486bf060381 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.cpp @@ -0,0 +1,148 @@ +// $Id$ + +#include "PSPE_Handler.h" +#include "IDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + PSPE_Handler::sub_component_port_endpoints ( + const PlanConnectionDescription &src, + ::Deployment::PlanSubcomponentPortEndpoints &dest) + { + DANCE_TRACE("PSPE_Handler::sub_component_port_endpoints"); + + PlanConnectionDescription::internalEndpoint_const_iterator iei_e = + src.end_internalEndpoint (); + CORBA::ULong pos = 0; + dest.length (src.count_internalEndpoint ()); + + for (PlanConnectionDescription::internalEndpoint_const_iterator iei_b = + src.begin_internalEndpoint (); + iei_b != iei_e; + ++iei_b) + { + PSPE_Handler::sub_component_port_endpoint (*(*iei_b), + dest[pos++]); + } + } + + void + PSPE_Handler::sub_component_port_endpoint ( + const PlanSubcomponentPortEndpoint &src, + ::Deployment::PlanSubcomponentPortEndpoint &dest) + { + DANCE_TRACE("PSPE_Handler::sub_component_port_endpoint"); + dest.portName = + ACE_TEXT_ALWAYS_CHAR (src.portName ().c_str ()); + + if (src.provider_p ()) + { + dest.provider = src.provider () == ACE_TEXT ("true"); + } + else + { + dest.provider = false; + } + + CORBA::ULong tmp = 0; + + IDD_Handler::IDREF.find_ref (ACE_TString (src.instance ().idref ().id ().c_str ()), + tmp); + + dest.instanceRef = tmp; + + switch (src.kind ().integral ()) + { + case CCMComponentPortKind::Facet_l: + dest.kind = Deployment::Facet; + break; + + case CCMComponentPortKind::SimplexReceptacle_l: + dest.kind = Deployment::SimplexReceptacle; + break; + + case CCMComponentPortKind::MultiplexReceptacle_l: + dest.kind = Deployment::MultiplexReceptacle; + break; + + case CCMComponentPortKind::EventEmitter_l: + dest.kind = Deployment::EventEmitter; + break; + + case CCMComponentPortKind::EventPublisher_l: + dest.kind = Deployment::EventPublisher; + break; + + case CCMComponentPortKind::EventConsumer_l: + dest.kind = Deployment::EventConsumer; + break; + + default: + ACE_DEBUG ((LM_DEBUG, "Invalid port kind in connection\n")); + + } + } + + PlanSubcomponentPortEndpoint + PSPE_Handler::sub_component_port_endpoint ( + const Deployment::PlanSubcomponentPortEndpoint &src) + { // @@MAJO + DANCE_TRACE("PSPE_Handler::sub_component_port_endpoint - reverse"); + XMLSchema::string< ACE_TCHAR > pname (ACE_TEXT_CHAR_TO_TCHAR (src.portName)); + XMLSchema::string< ACE_TCHAR > tval (ACE_TEXT ("true")); + XMLSchema::string< ACE_TCHAR > prov (ACE_TEXT ("")); + ACE_TString id; + IDD_Handler::IDREF.find_ref(src.instanceRef, id); + XMLSchema::IDREF < ACE_TCHAR > idref(id.c_str()); + + if (src.provider) + prov = tval; + + IdRef idr; + idr.idref (idref); + + PlanSubcomponentPortEndpoint pspe (pname, + CCMComponentPortKind::Facet, + idr); + pspe.provider (prov); + + switch (src.kind) + { + case ::Deployment::Facet: + pspe.kind (CCMComponentPortKind::Facet); + break; + + case ::Deployment::SimplexReceptacle: + pspe.kind (CCMComponentPortKind::SimplexReceptacle); + break; + + case ::Deployment::MultiplexReceptacle: + pspe.kind (CCMComponentPortKind::MultiplexReceptacle); + break; + + case ::Deployment::EventEmitter: + pspe.kind (CCMComponentPortKind::EventEmitter); + break; + + case ::Deployment::EventPublisher: + pspe.kind (CCMComponentPortKind::EventPublisher); + break; + + case ::Deployment::EventConsumer: + pspe.kind (CCMComponentPortKind::EventConsumer); + break; + + default: + ACE_ERROR ((LM_ERROR, "Invalid port kind in PSPE\n")); + } + + + return pspe; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.h new file mode 100644 index 00000000000..aeb92da9eb0 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/PSPE_Handler.h @@ -0,0 +1,65 @@ +//============================================================== +/** +* @file PSPE_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_PSPE_HANDLER_H +#define CIAO_CONFIG_HANDLERS_PSPE_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ +class PlanSubcomponentPortEndpoints; +struct PlanSubcomponentPortEndpoint; +} + +namespace CIAO +{ + +namespace Config_Handlers +{ +class PlanConnectionDescription; +class PlanSubcomponentPortEndpoint; + +/* +* @class PSPE_Handler +* +* @brief Handler class for types. +* +* This class defines handler methods to map values from +* XSC PlanSubcomponentPortEndpoint objects, parsed from +* the descriptor files, to the corresponding CORBA IDL type. +* +*/ +class Config_Handlers_Export PSPE_Handler +{ +public: +static void sub_component_port_endpoints ( +const PlanConnectionDescription &src, +::Deployment::PlanSubcomponentPortEndpoints &dest); + +static PlanSubcomponentPortEndpoint +sub_component_port_endpoint ( +const Deployment::PlanSubcomponentPortEndpoint &src); + +private: +static void sub_component_port_endpoint ( +const PlanSubcomponentPortEndpoint &src, +::Deployment::PlanSubcomponentPortEndpoint &dest); +}; +} +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_PSPE_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.cpp new file mode 100644 index 00000000000..cd58f3e08bb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.cpp @@ -0,0 +1,271 @@ +// $Id$ + +#include "tao/AnyTypeCode/TypeCode.h" +#include "Package_Handlers/CAD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "cid.hpp" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "Req_Handler.h" +#include "CEPE_Handler.h" +#include "ERE_Handler.h" +#include "Utils/Exceptions.h" + +#include "Package_Handlers/SID_Handler.h" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + struct Packaging_Handlers_Export SPE_Handler + { + static void handle_spe (const SubcomponentPortEndpoint &desc, + ::Deployment::SubcomponentPortEndpoint &toconfig) + { + DANCE_TRACE("SPE_Handler::get_spe"); + + toconfig.portName = ACE_TEXT_ALWAYS_CHAR ( desc.portName ().c_str ()); + + ACE_TString str (desc.instance ().idref ().id ().c_str ()); + CORBA::ULong pos (0); + + SID_Handler::IDREF.find_ref (str, pos); + toconfig.instanceRef = pos; + } + + static SubcomponentPortEndpoint + get_spe (const ::Deployment::SubcomponentPortEndpoint &src) + { + DANCE_TRACE("SPE_Handler::get_spe - reverse"); + ACE_TString str; + SID_Handler::IDREF.find_ref (src.instanceRef, str); + + IdRef xid; + xid.idref (str.c_str ()); + + return SubcomponentPortEndpoint (ACE_TEXT_CHAR_TO_TCHAR (src.portName.in ()), + xid); + } + }; + + typedef Sequence_Handler < SubcomponentPortEndpoint, + ::Deployment::SubcomponentPortEndpoints, + ::Deployment::SubcomponentPortEndpoint, + SPE_Handler::handle_spe > SPE_Functor; + + struct Packaging_Handlers_Export ACD_Handler + { + static void handle_acd (const AssemblyConnectionDescription &desc, + ::Deployment::AssemblyConnectionDescription &toconfig) + { + DANCE_TRACE("ACD_Handler::get_acd"); + + toconfig.name = ACE_TEXT_ALWAYS_CHAR ( desc.name ().c_str ()); + + toconfig.deployRequirement.length (desc.count_deployRequirement ()); + std::for_each (desc.begin_deployRequirement (), + desc.end_deployRequirement (), + Requirement_Functor (toconfig.deployRequirement)); + + toconfig.internalEndpoint.length (desc.count_internalEndpoint ()); + SEQ_HAND_GCC_BUG_WORKAROUND (SPE_Handler::handle_spe, + (*desc.begin_internalEndpoint ()), + toconfig.internalEndpoint); + std::for_each (desc.begin_internalEndpoint (), + desc.end_internalEndpoint (), + SPE_Functor (toconfig.internalEndpoint)); + + toconfig.externalEndpoint.length (desc.count_externalEndpoint ()); + std::for_each (desc.begin_externalEndpoint (), + desc.end_externalEndpoint (), + CEPE_Functor (toconfig.externalEndpoint)); + + toconfig.externalReference.length (desc.count_externalReference ()); + std::for_each (desc.begin_externalReference (), + desc.end_externalReference (), + ERE_Functor (toconfig.externalReference)); + + } + + static AssemblyConnectionDescription + get_acd (const ::Deployment::AssemblyConnectionDescription &src) + { + DANCE_TRACE("ACD_Handler::get_acd - reverse"); + + AssemblyConnectionDescription retval (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ())); +#if 0 + for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i) + retval.add_deployRequirement (Req_Handler::get_requirement (src.deployRequirement[i])); + + for (CORBA::ULong i = 0; i < src.internalEndpoint.length (); ++i) + retval.add_internalEndpoint + (SPE_Handler::get_spe (src.internalEndpoint[i])); + + for (CORBA::ULong i = 0; i < src.externalEndpoint.length (); ++i) + retval.add_externalEndpoint + (CEPE_Handler::external_port_endpoint (src.externalEndpoint[i])); + + for (CORBA::ULong i = 0; i < src.externalReference.length (); ++i) + retval.add_externalReference + (ERE_Handler::external_ref_endpoint (src.externalReference[i])); +#endif + return retval; + } + }; + + typedef Sequence_Handler < AssemblyConnectionDescription, + ::Deployment::AssemblyConnectionDescriptions, + ::Deployment::AssemblyConnectionDescription, + ACD_Handler::handle_acd > ACD_Functor; + + + struct Packaging_Handlers_Export SPR_Handler + { + static void handle_spr (const SubcomponentPropertyReference &desc, + ::Deployment::SubcomponentPropertyReference &toconfig) + { + DANCE_TRACE("SPR_Handler::get_spr"); + + toconfig.propertyName = ACE_TEXT_ALWAYS_CHAR ( desc.propertyName ().c_str ()); + + ACE_TString str (desc.instance ().idref ().id ().c_str ()); + CORBA::ULong pos (0); + + SID_Handler::IDREF.find_ref (str, pos); + toconfig.instanceRef = pos; + + } + + static SubcomponentPropertyReference + get_spr (const ::Deployment::SubcomponentPropertyReference &src) + { + DANCE_TRACE("SPR_HAndler::get_spr - reverse"); + ACE_TString str; + SID_Handler::IDREF.find_ref (src.instanceRef, str); + + IdRef xid; + xid.idref (str.c_str ()); + return SubcomponentPropertyReference (ACE_TEXT_CHAR_TO_TCHAR (src.propertyName.in ()), + xid); + } + + }; + + typedef Sequence_Handler < SubcomponentPropertyReference, + ::Deployment::SubcomponentPropertyReferences, + ::Deployment::SubcomponentPropertyReference, + SPR_Handler::handle_spr > SPR_Functor; + + struct Packaging_Handlers_Export APM_Handler + { + static void handle_apm (const AssemblyPropertyMapping &desc, + ::Deployment::AssemblyPropertyMapping &toconfig) + { + DANCE_TRACE("APM_Handler::get_apm"); + + toconfig.name = ACE_TEXT_ALWAYS_CHAR ( desc.name ().c_str ()); + toconfig.externalName = ACE_TEXT_ALWAYS_CHAR ( desc.externalName ().c_str ()); + + toconfig.delegatesTo.length (desc.count_delegatesTo ()); + SEQ_HAND_GCC_BUG_WORKAROUND (SPR_Handler::handle_spr, + (*desc.begin_delegatesTo ()), + toconfig.delegatesTo); + std::for_each (desc.begin_delegatesTo (), + desc.end_delegatesTo (), + SPR_Functor (toconfig.delegatesTo)); + } + + static AssemblyPropertyMapping + get_apm (const ::Deployment::AssemblyPropertyMapping &src) + { + DANCE_TRACE("APM_Handler::get_apm - reverse"); + + AssemblyPropertyMapping retval (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ()), + ACE_TEXT_CHAR_TO_TCHAR (src.externalName.in ())); +#if 0 + for (CORBA::ULong i = 0; i < src.delegatesTo.length (); ++i) + retval.add_delegatesTo (SPR_Handler::get_spr (src.delegatesTo[i])); +#endif + return retval; + } + }; + + typedef Sequence_Handler < AssemblyPropertyMapping, + ::Deployment::AssemblyPropertyMappings, + ::Deployment::AssemblyPropertyMapping, + APM_Handler::handle_apm > APM_Functor; + + void + CAD_Handler::component_assem_descr (const ComponentAssemblyDescription &desc, + ::Deployment::ComponentAssemblyDescription &toconfig) + { + DANCE_TRACE("CAD_Handler::component_assem_descr"); + + toconfig.instance.length (desc.count_instance ()); + std::for_each (desc.begin_instance (), + desc.end_instance (), + SID_Functor (toconfig.instance)); + + /* @@ MAJO: Implement Locality */ + + toconfig.connection.length (desc.count_connection ()); + SEQ_HAND_GCC_BUG_WORKAROUND (ACD_Handler::handle_acd, + (*desc.begin_connection ()), + toconfig.connection); + std::for_each (desc.begin_connection (), + desc.end_connection (), + ACD_Functor (toconfig.connection)); + + toconfig.externalProperty.length (desc.count_externalProperty ()); + SEQ_HAND_GCC_BUG_WORKAROUND (APM_Handler::handle_apm, + (*desc.begin_externalProperty ()), + toconfig.externalProperty); + std::for_each (desc.begin_externalProperty (), + desc.end_externalProperty (), + APM_Functor (toconfig.externalProperty)); + } + + ComponentAssemblyDescription + CAD_Handler::component_assem_descr (const ::Deployment::ComponentAssemblyDescription &/*src*/) + { + DANCE_TRACE("CAD_Handler::component_assem_descr - reverse"); + + ComponentAssemblyDescription retval; +#if 0 + for (CORBA::ULong i = 0; i < src.instance.length (); ++i) + retval.add_instance + (SID_Handler::sub_comp_inst_descr (src.instance[i])); + + for (CORBA::ULong i = 0; i < src.connection.length (); ++i) + retval.add_connection (ACD_Handler::get_acd (src.connection[i])); + + for (CORBA::ULong i = 0; i < src.externalProperty.length (); ++i) + retval.add_externalProperty (APM_Handler::get_apm (src.externalProperty[i])); +#endif + return retval; + + } + + ComponentAssemblyDescription * + CAD_Handler::resolve_cad (const char *) + { + /* xercesc::DOMDocument *dom = + this->xml_helper_->create_dom (uri); + + if (!dom) + throw Parse_Error ("Unable to create DOM for CAD"); + + try { + return new ComponentAssemblyDescription + (componentAssemblyDescription (dom)); + } + catch (...) { + throw Parse_Error ("Unable to create XSC structure for CAD"); + */ + return 0; + } + } + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.h new file mode 100644 index 00000000000..b42f13dcdc3 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CAD_Handler.h @@ -0,0 +1,59 @@ +/** + * @file CAD_Handler.h + * @author William Otte + * + * $Id$ + */ + +#ifndef CIAO_PACKAGING_CAD_HANDLER_H +#define CIAO_PACKAGING_CAD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "XML_Typedefs.h" +#include "DAnCE/Deployment/DeploymentC.h" +#include "Package_Handlers/Packaging_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct ComponentAssemblyDescription; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentAssemblyDescription; + + namespace Packaging + { + + /** + * @class CAD_Handler + * + * @brief Handler class for ComponentAssemblyDescription. + */ + class Packaging_Handlers_Export CAD_Handler + { + public: + static void component_assem_descr (const ComponentAssemblyDescription &desc, + ::Deployment::ComponentAssemblyDescription &toconfig); + + static ComponentAssemblyDescription + component_assem_descr (const ::Deployment::ComponentAssemblyDescription &src); + + private: + static ComponentAssemblyDescription * resolve_cad (const char *uri); + }; + + } + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_PACKAGING_CAD_HANDLER_H */ + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.cpp new file mode 100644 index 00000000000..4be49ae2bcb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.cpp @@ -0,0 +1,390 @@ +// $Id$ +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "Package_Handlers/CID_Handler.h" +#include "Package_Handlers/CPD_Handler.h" +#include "Package_Handlers/IAD_Handler.h" +#include "Package_Handlers/CAD_Handler.h" +#include "Package_Handlers/Comp_Intf_Descr_Handler.h" +#include "Package_Handlers/NIA_Handler.h" +#include "SatisfierProperty_Handler.h" +#include "Req_Handler.h" + +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "XML_Typedefs.h" +#include "Utils/Exceptions.h" + +#include "Deployment.hpp" +#include "Property_Handler.h" + + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + + IDREF_Base CID_Handler::IDREF; + + struct Capability_Handler + { + static void handle_capability (const Capability &desc, + ::Deployment::Capability &toconfig) + { + DANCE_TRACE ("Capability_Handler::get_capability"); + + toconfig.name = ACE_TEXT_ALWAYS_CHAR ( desc.name ().c_str ()); + + toconfig.resourceType.length (desc.count_resourceType ()); + std::for_each (desc.begin_resourceType (), + desc.end_resourceType (), + String_Seq_Functor (toconfig.resourceType)); + + toconfig.property.length (desc.count_property ()); + std::for_each (desc.begin_property (), + desc.end_property (), + SatisfierProperty_Functor (toconfig.property)); + } + + static Capability get_capability (const ::Deployment::Capability &src) + { + DANCE_TRACE ("Capability_Handler::get_capability - reverse"); + + Capability retval (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ())); +#if 0 + for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i) + retval.add_resourceType (src.resourceType[i].in ()); + + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i])); +#endif + return retval; + } + }; + + typedef Sequence_Handler < Capability, + ::Deployment::Capabilities, + ::Deployment::Capability, + Capability_Handler::handle_capability > Capability_Functor; + + struct IR_Handler + { + static void handle_ir (const ImplementationRequirement &desc, + ::Deployment::ImplementationRequirement &toconfig) + { + DANCE_TRACE ("IR_Handler::get_ir"); + + if (desc.resourceUsage_p ()) + { + switch (desc.resourceUsage ().integral ()) + { + case ResourceUsageKind::None_l: + toconfig.resourceUsage = Deployment::None; + break; + + case ResourceUsageKind::InstanceUsesResource_l: + toconfig.resourceUsage = Deployment::InstanceUsesResource; + break; + + case ResourceUsageKind::ResourceUsesInstance_l: + toconfig.resourceUsage = Deployment::ResourceUsesInstance; + break; + + case ResourceUsageKind::PortUsesResource_l: + toconfig.resourceUsage = Deployment::PortUsesResource; + break; + + case ResourceUsageKind::ResourceUsesPort_l: + toconfig.resourceUsage = Deployment::ResourceUsesPort; + break; + + default: + throw Config_Error (desc.name (), + ACE_TEXT ("Unknown ResourceUsageKind.")); + break; + } + } + + if (desc.resourcePort_p ()) + toconfig.resourcePort = ACE_TEXT_ALWAYS_CHAR ( desc.resourcePort ().c_str ()); + + if (desc.componentPort_p ()) + toconfig.componentPort = ACE_TEXT_ALWAYS_CHAR ( desc.componentPort ().c_str ()); + + toconfig.resourceType = ACE_TEXT_ALWAYS_CHAR ( desc.resourceType ().c_str ()); + toconfig.name = ACE_TEXT_ALWAYS_CHAR ( desc.name ().c_str ()); + + std::for_each (desc.begin_property (), + desc.end_property (), + Property_Functor (toconfig.property )); + } + + static ImplementationRequirement + get_ir (const ::Deployment::ImplementationRequirement &src) + { + DANCE_TRACE ("IR_Handler::get_ir - reverse"); + + ImplementationRequirement retval (ACE_TEXT_CHAR_TO_TCHAR (src.resourceType.in ()), + ACE_TEXT_CHAR_TO_TCHAR (src.name.in ())); + + if (src.resourceUsage.length () == 1) + switch (src.resourceUsage[0]) + { + case Deployment::None: + retval.resourceUsage (ResourceUsageKind::None); + break; + + case Deployment::InstanceUsesResource: + retval.resourceUsage (ResourceUsageKind::InstanceUsesResource); + break; + + case Deployment::ResourceUsesInstance: + retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance); + break; + + case Deployment::PortUsesResource: + retval.resourceUsage (ResourceUsageKind::PortUsesResource); + break; + + case Deployment::ResourceUsesPort: + retval.resourceUsage (ResourceUsageKind::ResourceUsesPort); + break; + + default: + throw Config_Error (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ()), + ACE_TEXT ("Unknown ResourceUsageKind.")); + break; + } + + retval.resourcePort (ACE_TEXT_CHAR_TO_TCHAR (src.resourcePort.in ())); + + retval.componentPort (ACE_TEXT_CHAR_TO_TCHAR (src.componentPort.in ())); +#if 0 + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + retval.add_property (Property_Handler::get_property (src.property[i])); +#endif + return retval; + } + }; + + typedef Sequence_Handler < ImplementationRequirement, + ::Deployment::ImplementationRequirements, + ::Deployment::ImplementationRequirement, + IR_Handler::handle_ir > IR_Functor; + + struct MID_Handler + { + static void handle_mid (const MonolithicImplementationDescription &desc, + ::Deployment::MonolithicImplementationDescription &toconfig) + { + DANCE_TRACE ("MID_Handler::get_mid"); + + toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ()); + std::for_each (desc.begin_nodeExecParameter (), + desc.end_nodeExecParameter (), + Property_Functor (toconfig.nodeExecParameter)); + + toconfig.componentExecParameter.length (desc.count_componentExecParameter ()); + std::for_each (desc.begin_componentExecParameter (), + desc.end_componentExecParameter (), + Property_Functor (toconfig.componentExecParameter)); + + toconfig.deployRequirement.length (desc.count_deployRequirement ()); + while (0) + { + IR_Handler::handle_ir (*(*desc.begin_deployRequirement ()), + toconfig.deployRequirement[0]); + } + std::for_each (desc.begin_deployRequirement (), + desc.end_deployRequirement (), + IR_Functor (toconfig.deployRequirement)); + + toconfig.primaryArtifact.length (desc.count_primaryArtifact ()); + SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia, + (*desc.begin_primaryArtifact ()), + toconfig.primaryArtifact); + std::for_each (desc.begin_primaryArtifact (), + desc.end_primaryArtifact (), + NIA_Functor (toconfig.primaryArtifact)); + } + + static MonolithicImplementationDescription + get_mid (const ::Deployment::MonolithicImplementationDescription &/*src*/) + { + DANCE_TRACE ("MID_Handler::get_mid - reverse"); + + MonolithicImplementationDescription retval; +#if 0 + for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i) + retval.add_nodeExecParameter + (Property_Handler::get_property (src.nodeExecParameter[i])); + + for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i) + retval.add_componentExecParameter + (Property_Handler::get_property (src.componentExecParameter[i])); + + for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i) + retval.add_deployRequirement + (IR_Handler::get_ir (src.deployRequirement[i])); + + for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i) + retval.add_primaryArtifact + (NIA_Handler::get_nia (src.primaryArtifact[i])); +#endif + return retval; + } + + }; + + typedef Sequence_Handler < MonolithicImplementationDescription, + ::Deployment::MonolithicImplementationDescriptions, + ::Deployment::MonolithicImplementationDescription, + MID_Handler::handle_mid > MID_Functor; + + + + void + CID_Handler::component_impl_descr ( + const ComponentImplementationDescription &desc, + ::Deployment::ComponentImplementationDescription &toconfig) + { + DANCE_TRACE ("CID_Handler::component_impl_descr"); + + const ComponentImplementationDescription *cid = 0; + std::auto_ptr xsc_cid; + + if (desc.href_p ()) + { + xsc_cid.reset (CID_Handler::resolve_cid ((desc.href ().c_str ()))); + cid = xsc_cid.get (); + } + else + cid = &desc; + + if (cid->label_p ()) + toconfig.label = ACE_TEXT_ALWAYS_CHAR ( cid->label ().c_str ()); + + if (cid->UUID_p ()) + toconfig.UUID = ACE_TEXT_ALWAYS_CHAR ( cid->UUID ().c_str ()); + + if (cid->implements_p ()) + { // MAJO: We should be able to assume this exists, fix broken interpeters.. + Comp_Intf_Descr_Handler::comp_intf_descr (cid->implements (), + toconfig.implements); + } + + if (cid->assemblyImpl_p ()) + { + toconfig.assemblyImpl.length (1); + CAD_Handler::component_assem_descr (cid->assemblyImpl (), + toconfig.assemblyImpl[0]); + } + else if (cid->monolithicImpl_p ()) + { + toconfig.monolithicImpl.length (1); + MID_Handler::handle_mid (cid->monolithicImpl (), + toconfig.monolithicImpl[0]); + } + else + throw Plan_Error (ACE_TEXT ("ComponentImplementationDescription must have either assemblyImpl or monolithicImpl")); + + // configProperty + toconfig.configProperty.length (cid->count_configProperty ()); + std::for_each (cid->begin_configProperty (), + cid->end_configProperty (), + Property_Functor (toconfig.configProperty)); + + // capability + toconfig.capability.length (cid->count_capability ()); + SEQ_HAND_GCC_BUG_WORKAROUND (Capability_Handler::handle_capability, + (*cid->begin_capability ()), + toconfig.capability); + std::for_each (cid->begin_capability (), + cid->end_capability (), + Capability_Functor (toconfig.capability)); + + // dependsOn + toconfig.dependsOn.length (cid->count_dependsOn ()); + CORBA::ULong pos = 0; + for (ComponentImplementationDescription::dependsOn_const_iterator i = cid->begin_dependsOn (); + i != cid->end_dependsOn (); + ++i) + toconfig.dependsOn[pos++].requiredType = ACE_TEXT_ALWAYS_CHAR ( (*i)->requiredType ().c_str ()); + + // infoProperty + toconfig.infoProperty.length (cid->count_infoProperty ()); + std::for_each (cid->begin_infoProperty (), + cid->end_infoProperty (), + Property_Functor (toconfig.infoProperty)); + + } + + ComponentImplementationDescription + CID_Handler::component_impl_descr (const Deployment::ComponentImplementationDescription& src) + { + DANCE_TRACE ("CID_Handler::component_impl_descr - reverse"); + + ComponentImplementationDescription retval; + + retval.label (ACE_TEXT_CHAR_TO_TCHAR (src.label.in ())); + retval.UUID (ACE_TEXT_CHAR_TO_TCHAR (src.UUID.in ())); + + { + retval.implements (Comp_Intf_Descr_Handler::comp_intf_descr (src.implements)); + } + + if (src.assemblyImpl.length () == 1) + { + retval.assemblyImpl (CAD_Handler::component_assem_descr (src.assemblyImpl[0])); + } + else if (src.monolithicImpl.length () == 1) + { + retval.monolithicImpl (MID_Handler::get_mid (src.monolithicImpl[0])); + } + else + ACE_DEBUG ((LM_WARNING, "Warning: ComponentImplementationDescription lacks " + "either a required assemblyImpl or monolithicImpl, or has too many")); +#if 0 + for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i) + { + retval.add_configProperty ( + Property_Handler::get_property (src.configProperty[i])); + } + + for (CORBA::ULong i = 0; i < src.dependsOn.length (); ++i) + { + retval.add_dependsOn (ImplementationDependency (src.dependsOn[i].requiredType.in ())); + } + + for (CORBA::ULong i = 0; i < src.infoProperty.length (); ++i) + { + retval.add_infoProperty ( + Property_Handler::get_property (src.infoProperty[i])); + } +#endif + return retval; + } + + ComponentImplementationDescription * + CID_Handler::resolve_cid (const ACE_TCHAR *uri) + { + DANCE_TRACE ("CID_Handler::resolve_cid"); + + xercesc::DOMDocument *dom = XML_Helper::XML_HELPER.create_dom (uri); + + if (!dom) + throw Parse_Error (ACE_TEXT ("Unable to create DOM for CID")); + + try { + return new ComponentImplementationDescription + (reader::componentImplementationDescription (dom)); + } + catch (...) { + throw Parse_Error (ACE_TEXT ("Unable to create XSC structure for CID")); + } + } + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.h new file mode 100644 index 00000000000..d00304d8cfe --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CID_Handler.h @@ -0,0 +1,67 @@ +/** + * @file CID_Handler.h + * + * $Id$ + * + * @author William Otte types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Packaging_Handlers_Export CID_Handler + { + + public: + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void component_impl_descr (const ComponentImplementationDescription &desc, + ::Deployment::ComponentImplementationDescription &toconfig); + + static IDREF_Base IDREF; + + static ComponentImplementationDescription + component_impl_descr (const Deployment::ComponentImplementationDescription& src); + + private: + + static ComponentImplementationDescription * resolve_cid (const ACE_TCHAR *uri); + }; + } + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_PACKAGING_CID_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.cpp new file mode 100644 index 00000000000..ba2c14309b2 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.cpp @@ -0,0 +1,160 @@ +// $Id$ +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "Package_Handlers/CPD_Handler.h" +#include "Package_Handlers/CID_Handler.h" +#include "Package_Handlers/Comp_Intf_Descr_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "Deployment.hpp" +#include "Utils/Exceptions.h" +#include "Property_Handler.h" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + struct Packaging_Handlers_Export PCI_Handler + { + static void handle_pci (const PackagedComponentImplementation &desc, + ::Deployment::PackagedComponentImplementation &toconfig) + { + DANCE_TRACE ("PCI_Handler::get_pci"); + toconfig.name = ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()); + + CID_Handler::component_impl_descr (desc.referencedImplementation (), + toconfig.referencedImplementation); + } + + static PackagedComponentImplementation + get_pci (const ::Deployment::PackagedComponentImplementation &src) + { + DANCE_TRACE ("PCI_Handler::get_pci - reverse"); + return PackagedComponentImplementation (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ()), + CID_Handler::component_impl_descr (src.referencedImplementation)); + } + }; + + typedef Sequence_Handler < PackagedComponentImplementation, + ::Deployment::PackagedComponentImplementations, + ::Deployment::PackagedComponentImplementation, + PCI_Handler::handle_pci > PCI_Functor; + + + void + CPD_Handler::handle_component_package_descr (const ComponentPackageDescription &desc, + ::Deployment::ComponentPackageDescription &toconfig) + { + DANCE_TRACE ("CPD_Handler::component_package_descr"); + + auto_ptr < ComponentPackageDescription > xsc_cpd; + const ComponentPackageDescription *cpd = 0; + + if (desc.href_p ()) + { + xsc_cpd.reset (CPD_Handler::resolve_cpd (desc.href ().c_str ())); + cpd = xsc_cpd.get (); + } + else + cpd = &desc; + + if (cpd->label_p ()) + toconfig.label = ACE_TEXT_ALWAYS_CHAR (cpd->label ().c_str ()); + + if (cpd->UUID_p ()) + toconfig.UUID = ACE_TEXT_ALWAYS_CHAR (cpd->UUID ().c_str ()); + + // CID + if (cpd->realizes_p ()) + Comp_Intf_Descr_Handler::comp_intf_descr (cpd->realizes (), + toconfig.realizes); + + // Config Properties + toconfig.configProperty.length (desc.count_configProperty ()); + std::for_each (cpd->begin_infoProperty (), + cpd->end_infoProperty (), + Property_Functor (toconfig.configProperty)); + + // ACE_ERROR ((LM_ERROR, "***** Count of PCIs is %i\n", + // cpd->count_implementation ())); + + // Packaged Component Implementations + toconfig.implementation.length ( cpd->count_implementation ()); + SEQ_HAND_GCC_BUG_WORKAROUND (PCI_Handler::handle_pci, + (*cpd->begin_implementation ()), + toconfig.implementation); + std::for_each (cpd->begin_implementation (), + cpd->end_implementation (), + PCI_Functor (toconfig.implementation)); + + // Info Properties + toconfig.infoProperty.length (cpd->count_infoProperty ()); + std::for_each (cpd->begin_infoProperty (), + cpd->end_infoProperty (), + Property_Functor (toconfig.infoProperty)); + } + + ComponentPackageDescription + CPD_Handler::component_package_descr (const Deployment::ComponentPackageDescription& src) + { + DANCE_TRACE ("CPD_Handler::component_package_descr - reverse"); + ComponentPackageDescription toconfig; + + if (src.label.in () != 0) + toconfig.label (ACE_TEXT_CHAR_TO_TCHAR (src.label.in ())); + + if (src.UUID.in () != 0) + toconfig.UUID (ACE_TEXT_CHAR_TO_TCHAR (src.UUID.in ())); + + { + toconfig.realizes + (Comp_Intf_Descr_Handler::comp_intf_descr (src.realizes)); + } +#if 0 + for (size_t i = 0; i < src.configProperty.length (); ++i) + { + toconfig.add_configProperty ( + Property_Handler::get_property (src.configProperty[i])); + } + + { // Packaged Component Implementations + for (size_t i = 0; i < src.implementation.length (); ++i) + toconfig.add_implementation ( + PCI_Handler::get_pci (src.implementation[i])); + } + + for (size_t i = 0; i < src.infoProperty.length (); ++i) + { + toconfig.add_infoProperty ( + Property_Handler::get_property (src.infoProperty[i])); + } +#endif + return toconfig; + } + + ComponentPackageDescription * CPD_Handler::resolve_cpd (const ACE_TCHAR *uri) + { + DANCE_TRACE ("CPD_Handler::resolve_cpd"); + if (!XML_Helper::XML_HELPER.is_initialized ()) + return 0; + + xercesc::DOMDocument* dom = + XML_Helper::XML_HELPER.create_dom (uri); + + if (!dom) + throw Parse_Error (ACE_TEXT ("Unable to create DOM for component package description")); + + try { + //ACE_ERROR ((LM_ERROR, "Creating new CPD XSC Object\n")); + return new ComponentPackageDescription (reader::componentPackageDescription (dom)); + } + catch (...) { + throw Parse_Error (ACE_TEXT ("Unable to create XSC structure for CID")); + } + } + } + + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.h new file mode 100644 index 00000000000..049b2a72cb2 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/CPD_Handler.h @@ -0,0 +1,74 @@ +//================================================ +/** + * @file CPD_Handler.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include +#include "XML_Typedefs.h" +#include "Utils/Functors.h" +#include "Package_Handlers/Packaging_Handlers_Export.h" + +namespace Deployment +{ + struct ComponentPackageDescription; + class ComponentPackageDescriptions; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentPackageDescription; + + namespace Packaging + { + + /* + * @class CPD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Packaging_Handlers_Export CPD_Handler + { + + public: + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void handle_component_package_descr (const ComponentPackageDescription &desc, + ::Deployment::ComponentPackageDescription &toconfig); + + static ComponentPackageDescription + component_package_descr (const Deployment::ComponentPackageDescription& src); + private: + static ComponentPackageDescription * resolve_cpd (const ACE_TCHAR *uri); + + }; + + typedef Sequence_Handler < ComponentPackageDescription, + ::Deployment::ComponentPackageDescriptions, + ::Deployment::ComponentPackageDescription, + CPD_Handler::handle_component_package_descr > CPD_Functor; + + } + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_CPD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp new file mode 100644 index 00000000000..c4f6058505e --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp @@ -0,0 +1,165 @@ +// $Id$ +#include "tao/AnyTypeCode/TypeCode.h" +#include "Comp_Intf_Descr_Handler.h" +#include "XML_Typedefs.h" +#include "Utils/Exceptions.h" +#include "Utils/Functors.h" +#include "DataType_Handler.h" +#include "Property_Handler.h" +#include "Deployment.hpp" +#include "Package_Handlers/CPD_Handler.h" +#include "Config_Handlers/CPD_Handler.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + struct Comp_Prop_Handler + { + static void handle_cpd (const ComponentPropertyDescription &desc, + ::Deployment::ComponentPropertyDescription &toconfig) + { + DANCE_TRACE ("Comp_Prop_Handler::get_cpd"); + + toconfig.name = ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()); + DataType_Handler::data_type (desc.type (), + toconfig.type); + } + + static ComponentPropertyDescription + get_cpd (const ::Deployment::ComponentPropertyDescription &src) + { + DANCE_TRACE ("Comp_Prop_Handler::get_cpd - reverse"); + + return ComponentPropertyDescription (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ()), + DataType_Handler::data_type (src.type)); + } + + }; + + typedef Sequence_Handler < ComponentPropertyDescription, + ::Deployment::ComponentPropertyDescriptions, + ::Deployment::ComponentPropertyDescription, + Comp_Prop_Handler::handle_cpd > Comp_Prop_Functor; + + + void + Comp_Intf_Descr_Handler::comp_intf_descr ( + const ComponentInterfaceDescription &desc, + ::Deployment::ComponentInterfaceDescription &toconfig) + { + DANCE_TRACE ("Comp_Intf_Descr_Handler::comp_intf_descr"); + + const ComponentInterfaceDescription *cid = 0; + std::auto_ptr safe_cid; + + if (desc.href_p ()) + { + safe_cid.reset (Comp_Intf_Descr_Handler::resolve_cid (desc.href ().c_str ())); + cid = safe_cid.get (); + } + else + cid = &desc; + + if (cid->label_p ()) + toconfig.label = ACE_TEXT_ALWAYS_CHAR (cid->label ().c_str ()); + + if (cid->UUID_p ()) + toconfig.UUID = ACE_TEXT_ALWAYS_CHAR (cid->UUID ().c_str ()); + + // MAJO: SpecificType should be required. + if (cid->specificType_p ()) + toconfig.specificType = ACE_TEXT_ALWAYS_CHAR (cid->specificType ().c_str ()); + + toconfig.supportedType.length (cid->count_supportedType ()); + std::for_each (cid->begin_supportedType (), + cid->end_supportedType (), + String_Seq_Functor (toconfig.supportedType)); + + toconfig.idlFile.length (cid->count_idlFile ()); + std::for_each (cid->begin_idlFile (), + cid->end_idlFile (), + String_Seq_Functor (toconfig.idlFile)); + + toconfig.configProperty.length (cid->count_configProperty ()); + std::for_each (cid->begin_configProperty (), + cid->end_configProperty (), + Property_Functor (toconfig.configProperty)); + + toconfig.port.length (cid->count_port ()); + std::for_each (cid->begin_port (), + cid->end_port (), + CIAO::Config_Handlers::CPD_Functor (toconfig.port)); + + toconfig.property.length (cid->count_property ()); + SEQ_HAND_GCC_BUG_WORKAROUND (Comp_Prop_Handler::handle_cpd, + (*cid->begin_property ()), + toconfig.property); + std::for_each (cid->begin_property (), + cid->end_property (), + Comp_Prop_Functor (toconfig.property)); + + toconfig.infoProperty.length (cid->count_infoProperty ()); + std::for_each (cid->begin_infoProperty (), + cid->end_infoProperty (), + Property_Functor (toconfig.infoProperty)); + } + + + ComponentInterfaceDescription + Comp_Intf_Descr_Handler::comp_intf_descr ( + const ::Deployment::ComponentInterfaceDescription &src) + { + DANCE_TRACE ("Comp_Intf_Descr_Handler::comp_intf_descr - reverse"); + ComponentInterfaceDescription retval; + + retval.label (ACE_TEXT_CHAR_TO_TCHAR (src.label.in ())); + retval.UUID (ACE_TEXT_CHAR_TO_TCHAR (src.UUID.in ())); + retval.specificType (ACE_TEXT_CHAR_TO_TCHAR (src.specificType.in ())); +#if 0 + for (CORBA::ULong i = 0; i < src.supportedType.length (); ++i) + retval.add_supportedType (src.supportedType[i].in ()); + + for (CORBA::ULong i = 0; i < src.idlFile.length (); ++i) + retval.add_idlFile (src.idlFile[i].in ()); + + for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i) + retval.add_configProperty ( + Property_Handler::get_property (src.configProperty[i])); + + for (CORBA::ULong i = 0; i < src.port.length (); ++i) + retval.add_port + (CIAO::Config_Handlers::CPD_Handler::component_port_description (src.port[i])); + + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + retval.add_property (Comp_Prop_Handler::get_cpd (src.property[i])); + + for (CORBA::ULong i = 0; i < src.infoProperty.length (); ++i) + retval.add_infoProperty ( + Property_Handler::get_property (src.infoProperty[i])); +#endif + return retval; + } + + ComponentInterfaceDescription * + Comp_Intf_Descr_Handler::resolve_cid (const ACE_TCHAR *uri) + { + DANCE_TRACE ("Comp_Intf_Descr_Handler::resolve_cid"); + + xercesc::DOMDocument *dom = XML_Helper::XML_HELPER.create_dom (uri); + + if (!dom) + throw Parse_Error (ACE_TEXT ("Unable to create DOM for Component Interface Description.")); + + try { + return new ComponentInterfaceDescription + (reader::componentInterfaceDescription (dom)); + } + catch (...) { + throw Parse_Error (ACE_TEXT ("Unable to create XSC structure for Component Interface Description")); + } + } + } + }} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h new file mode 100644 index 00000000000..4655edfa97b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h @@ -0,0 +1,54 @@ +/** + * @file Comp_Intf_Descr_Handler.h + * @author William Otte + * + * $Id$ + */ + +#ifndef CIAO_PACKAGING_COMP_INTF_DESCR_HANDLER_H +#define CIAO_PACKAGING_COMP_INTF_DESCR_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "XML_Typedefs.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "Package_Handlers/Packaging_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentInterfaceDescription; + + namespace Packaging + { + + /** + * @class Comp_Intf_Descr_Handler + * + * @brief Handler class for ComponentInterfaceDescription. + */ + class Packaging_Handlers_Export Comp_Intf_Descr_Handler + { + public: + static void comp_intf_descr (const ComponentInterfaceDescription &descr, + ::Deployment::ComponentInterfaceDescription &toconfig); + + static ComponentInterfaceDescription + comp_intf_descr (const ::Deployment::ComponentInterfaceDescription &src); + + private: + static ComponentInterfaceDescription *resolve_cid (const ACE_TCHAR *uri); + }; + } + } +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_PACKAGING_COMP_INTF_DESCR_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.cpp new file mode 100644 index 00000000000..99fe7fe2ade --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.cpp @@ -0,0 +1,124 @@ +// $Id$ +#include "Package_Handlers/IAD_Handler.h" +#include "Package_Handlers/NIA_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "Property_Handler.h" +#include "Req_Handler.h" +#include "Utils/Functors.h" +#include "Utils/Exceptions.h" +#include "XML_Typedefs.h" + +#include "Deployment.hpp" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + + void + IAD_Handler::impl_artifact_descr (const ImplementationArtifactDescription &desc, + ::Deployment::ImplementationArtifactDescription &toconfig) + { + DANCE_TRACE ("IAD_Handler::impl_artifact_descr"); + + const ImplementationArtifactDescription *iad = 0; + std::auto_ptr safe_iad; + + if (desc.href_p ()) + { + safe_iad.reset (IAD_Handler::resolve_iad (desc.href ().c_str ())); + iad = safe_iad.get (); + } + else + iad = &desc; + + + if (iad->label_p ()) + toconfig.label = ACE_TEXT_ALWAYS_CHAR ( iad->label ().c_str ()); + + if (iad->UUID_p ()) + toconfig.UUID = ACE_TEXT_ALWAYS_CHAR (iad->UUID ().c_str ()); + + toconfig.location.length (iad->count_location ()); + std::for_each (iad->begin_location (), + iad->end_location (), + String_Seq_Functor (toconfig.location)); + + toconfig.dependsOn.length (iad->count_dependsOn ()); + SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia, + (*desc.begin_dependsOn ()), + toconfig.dependsOn); + std::for_each (iad->begin_dependsOn (), + iad->end_dependsOn (), + NIA_Functor (toconfig.dependsOn)); + + toconfig.execParameter.length (iad->count_execParameter ()); + std::for_each (iad->begin_execParameter (), + iad->end_execParameter (), + Property_Functor (toconfig.execParameter)); + + toconfig.infoProperty.length (iad->count_infoProperty ()); + std::for_each (iad->begin_infoProperty (), + iad->end_infoProperty (), + Property_Functor (toconfig.infoProperty)); + + toconfig.deployRequirement.length (iad->count_deployRequirement ()); + std::for_each (iad->begin_deployRequirement (), + iad->end_deployRequirement (), + Requirement_Functor (toconfig.deployRequirement )); + } + + ImplementationArtifactDescription + IAD_Handler::impl_artifact_descr (const ::Deployment::ImplementationArtifactDescription &src) + { + DANCE_TRACE ("IAD_Handler::impl_artifact_descr - reverse"); + ImplementationArtifactDescription retval; + + retval.label (ACE_TEXT_CHAR_TO_TCHAR (src.label.in ())); + retval.UUID (ACE_TEXT_CHAR_TO_TCHAR (src.UUID.in ())); +#if 0 + for (CORBA::ULong i = 0; i < src.location.length (); ++i) + retval.add_location (src.location[i].in ()); + + for (CORBA::ULong i = 0; i < src.dependsOn.length (); ++i) + retval.add_dependsOn (NIA_Handler::get_nia (src.dependsOn[i])); + + for (CORBA::ULong i = 0; i < src.execParameter.length (); ++i) + retval.add_execParameter + (Property_Handler::get_property (src.execParameter[i])); + + for (CORBA::ULong i = 0; i < src.infoProperty.length (); ++i) + retval.add_infoProperty + (Property_Handler::get_property ( src.infoProperty[i])); + + for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i) + retval.add_deployRequirement + (Req_Handler::get_requirement (src.deployRequirement[i])); +#endif + return retval; + } + + ImplementationArtifactDescription * IAD_Handler::resolve_iad (const ACE_TCHAR *uri) + { + DANCE_TRACE ("IAD_Handler::resolve_iad"); + + xercesc::DOMDocument *dom = XML_Helper::XML_HELPER.create_dom (uri); + + if (!dom) + throw Parse_Error (ACE_TEXT ("Unable to create DOM for IAD")); + + try { + return new ImplementationArtifactDescription + (reader::implementationArtifactDescription (dom)); + } + catch (...) { + throw Parse_Error (ACE_TEXT ("Unable to create XSC structure for IAD")); + } + } + + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.h new file mode 100644 index 00000000000..89fdab073bf --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/IAD_Handler.h @@ -0,0 +1,66 @@ +//================================================ +/** + * @file IAD_Handler.h + * + * $Id$ + * + * @author William Otte + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Package_Handlers/Packaging_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct ImplementationArtifactDescription; + struct ImplementationArtifactDescriptions; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class ImplementationArtifactDescription; + namespace Packaging + { + /* + * @class IAD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Packaging_Handlers_Export IAD_Handler + { + public: + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void + impl_artifact_descr (const ImplementationArtifactDescription &desc, + ::Deployment::ImplementationArtifactDescription &toconfig); + + + static ImplementationArtifactDescription + impl_artifact_descr (const Deployment::ImplementationArtifactDescription& src); + + static ImplementationArtifactDescription * resolve_iad (const ACE_TCHAR *uri); + }; + } + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/NIA_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/NIA_Handler.h new file mode 100644 index 00000000000..923104dc27b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/NIA_Handler.h @@ -0,0 +1,65 @@ +/** + * @file NIA_Handler.h + * @author William Otte + * $Id$ + */ + +#ifndef CIAO_PACKAGING_NIA_HANDLER_H +#define CIAO_PACKAGING_NIA_HANDLER_H + +#include /**/ "ace/pre.h" +#include "Package_Handlers/Packaging_Handlers_Export.h" +#include "Utils/Functors.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "iad.hpp" + +namespace Deployment +{ + struct NamedImplementationArtifact; + class NamedImplementationArtifacts; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class NamedImplementationArtifact; + + namespace Packaging + { + /** + * @class NIA_Handler + * @brief Handler class for NamedImplementationArtifact types. + */ + class Packaging_Handlers_Export NIA_Handler + { + public: + static void handle_nia (const NamedImplementationArtifact &desc, + ::Deployment::NamedImplementationArtifact &toconfig) + { + toconfig.name = ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()); + IAD_Handler::impl_artifact_descr (desc.referencedArtifact (), + toconfig.referencedArtifact); + } + + + static NamedImplementationArtifact + get_nia (const ::Deployment::NamedImplementationArtifact &src) + { + return NamedImplementationArtifact (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ()), + IAD_Handler::impl_artifact_descr (src.referencedArtifact)); + } + + }; + + typedef Sequence_Handler < NamedImplementationArtifact, + ::Deployment::NamedImplementationArtifacts, + ::Deployment::NamedImplementationArtifact, + NIA_Handler::handle_nia > NIA_Functor; + } + } +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_PACKAGING_NIA_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.cpp new file mode 100644 index 00000000000..791f153d126 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.cpp @@ -0,0 +1,165 @@ +// $Id$ +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "XML_Typedefs.h" +#include "XML/XercesString.h" +#include "Utils/Exceptions.h" +#include "Package_Handlers/PCD_Handler.h" +#include "Package_Handlers/CPD_Handler.h" +#include "toplevel.hpp" +#include "Deployment.hpp" +#include "Property_Handler.h" +#include "Req_Handler.h" + +#include + +using CIAO::XML::XStr; + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + void + PCD_Handler::package_config (const ACE_TCHAR *uri, + ::Deployment::PackageConfiguration &toconfig) + { + XERCES_CPP_NAMESPACE::DOMDocument *dom = XML_Helper::XML_HELPER.create_dom (uri); + + if (dom == 0) + { + std::basic_string error (ACE_TEXT ("Unable to open file: ")); + error += uri; + throw Parse_Error (error); + } + + XStr root = dom->getDocumentElement ()->getTagName (); + + if (root == XStr (ACE_TEXT ("Deployment:topLevelPackageDescription"))) + { + TopLevelPackageDescription tpd; + + tpd = reader::topLevelPackageDescription (dom); + + PCD_Handler::package_config (*(*tpd.begin_package ()), + toconfig); + } + else if (root == XStr (ACE_TEXT ("Deployment:packageConfiguration"))) + { + PackageConfiguration pcd; + pcd = reader::packageConfiguration (dom); + PCD_Handler::package_config (pcd, toconfig); + } + else + { + std::string error ("Invliad file passed to package_config, has base "); + + char *croot = xercesc::XMLString::transcode (root); + + error += croot; + + delete [] croot; + + throw Plan_Error (ACE_TEXT ("Invalid file passed to package_config, had base")); + } + } + + void + PCD_Handler::package_config (const PackageConfiguration &desc, + ::Deployment::PackageConfiguration &toconfig) + { + DANCE_TRACE ("PCD_Handler::package_config"); + std::auto_ptr < PackageConfiguration > xsc_pcd; + + const PackageConfiguration *pcd; + + if (desc.contentLocation_p ()) + { + // Take ownership of the resolved pcd + xsc_pcd.reset (PCD_Handler::resolve_package_config (desc.contentLocation ().c_str ())); + pcd = xsc_pcd.get (); + } + else + pcd = &desc; + + if (pcd->label_p ()) + toconfig.label = + ACE_TEXT_ALWAYS_CHAR (pcd->label ().c_str ()); + + if (pcd->UUID_p ()) + toconfig.UUID = + ACE_TEXT_ALWAYS_CHAR (pcd->UUID ().c_str ()); + + if (pcd->basePackage_p ()) + { + toconfig.basePackage.length (1); + CPD_Handler::handle_component_package_descr (pcd->basePackage (), + toconfig.basePackage [0]); + } + + // @@ MAJO: Support other elements present here. + + toconfig.configProperty.length (desc.count_configProperty ()); + std::for_each (desc.begin_configProperty (), + desc.end_configProperty (), + Property_Functor (toconfig.configProperty)); + + toconfig.selectRequirement.length (desc.count_selectRequirement ()); + std::for_each (desc.begin_selectRequirement (), + desc.end_selectRequirement (), + Requirement_Functor (toconfig.selectRequirement)); + + } + + PackageConfiguration + PCD_Handler::package_config (const Deployment::PackageConfiguration& src) + { + DANCE_TRACE ("PCD_Handler::package_config - reverse"); + PackageConfiguration pcd = PackageConfiguration (); + + if (src.label.in () != 0) + pcd.label (ACE_TEXT_CHAR_TO_TCHAR (src.label.in ())); + + if (src.UUID.in () != 0) + pcd.UUID (ACE_TEXT_CHAR_TO_TCHAR (src.UUID.in ())); + + if (src.basePackage.length () > 0) + { + ACE_DEBUG ((LM_DEBUG, "5\n")); + pcd.basePackage (CPD_Handler::component_package_descr (src.basePackage[0])); + } +#if 0 + // @@ MAJO: Support other elements present here. + for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i) + pcd.add_configProperty (Property_Handler::get_property (src.configProperty[i])); + + for (CORBA::ULong i = 0; i < src.selectRequirement.length (); ++i) + pcd.add_selectRequirement (Req_Handler::get_requirement (src.selectRequirement[i])); +#endif + return pcd; + + } + + PackageConfiguration * PCD_Handler::resolve_package_config (const ACE_TCHAR *uri) + { + xercesc::DOMDocument* dom = + XML_Helper::XML_HELPER.create_dom (uri); + + if (!dom) + throw Parse_Error (ACE_TEXT ("Unable to create DOM for PackageConfiguration")); + + try { + return new PackageConfiguration (reader::packageConfiguration (dom)); + } + catch (...) { + throw Parse_Error (ACE_TEXT ("Unable to create XSC structure for PackageConfiguration")); + } + + } + + + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.h new file mode 100644 index 00000000000..b1a0c377d9d --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PCD_Handler.h @@ -0,0 +1,69 @@ +//================================================ +/** + * @file PCD_Handler.h + * + * $Id$ + * + * @author William Otte + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_PCD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_PCD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Packaging_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct PackageConfiguration; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class PackageConfiguration; + + namespace Packaging + { + /* + * @class PCD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Packaging_Handlers_Export PCD_Handler + { + + public: + static void package_config (const ACE_TCHAR *uri, + ::Deployment::PackageConfiguration &toconfig); + + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void package_config (const PackageConfiguration &desc, + ::Deployment::PackageConfiguration &toconfig); + + static PackageConfiguration package_config (const Deployment::PackageConfiguration& src); + + private: + static PackageConfiguration *resolve_package_config (const ACE_TCHAR *uri); + }; + } + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.cpp new file mode 100644 index 00000000000..5bddb09af60 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.cpp @@ -0,0 +1,75 @@ +// $Id$ + +#include "STD_PC_Intf.h" +#include "Utils/XML_Helper.h" +#include "Deployment.hpp" +#include "STD_PCD_Handler.h" +#include "ciao/Packaging_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + STD_PC_Intf::STD_PC_Intf (const char *file) + { + if (!this->prepare_PC (file)) + throw; + } + + bool + STD_PC_Intf::prepare_PC (const char *file) + { + DANCE_TRACE("STD_PC_Intf::prepare_PC"); + + ACE_Auto_Ptr helper (new XML_Helper); + + if (!helper->is_initialized ()) + return false; + + // parse the .pcd (PackageConfigurationDescription) file + xercesc::DOMDocument *dom = + helper->create_dom (file); + + if (!dom) + return false; + + + PackageConfiguration pc = + packageConfiguration (dom); + + + Deployment::PackageConfiguration idl_pc; + + + STD_PCD_Handler pcd_handler (helper.get ()); + + pcd_handler.package_config (pc, + idl_pc); + + + Deployment::PackageConfiguration *p_idl_pc = + new Deployment::PackageConfiguration (idl_pc); + + // let ACE_Auto_Ptr take over + this->idl_pc_.reset (p_idl_pc); + + if (this->idl_pc_.get ()) + return true; + + return false; + } + + ::Deployment::PackageConfiguration const * + STD_PC_Intf::get_PC (void) const + { + return this->idl_pc_.get (); + } + + ::Deployment::PackageConfiguration * + STD_PC_Intf::get_PC (void) + { + return this->idl_pc_.release (); + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.h new file mode 100644 index 00000000000..c15ae0389b9 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/PC_Intf.h @@ -0,0 +1,58 @@ +//============================================================== +/** + * @file PC_Intf.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================================ + +#ifndef CIAO_CONFIG_STD_PC_INTF_H +#define CIAO_CONFIG_STD_PC_INTF_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#include "ace/Auto_Ptr.h" + + +namespace Deployment +{ + struct PackageConfiguration ; +} + +namespace CIAO +{ + namespace Config_Handlers + { + /* + * @class PC_Intf + * + * @brief Wrapper class for PackageConfiguration extraction + * + * This class defines wrapper functions for extracting + * PackageConfiguration IDL structures from XSC structures. + * It serves as the public interface used by application + * developers. + * + */ + class Config_Handlers_Export STD_PC_Intf + { + public: + STD_PC_Intf (const char *file); + + ::Deployment::PackageConfiguration const *get_PC (void) const; + ::Deployment::PackageConfiguration *get_PC (void); + + protected: + bool prepare_PC (const char *file); + + private: + ACE_Auto_Ptr< ::Deployment::PackageConfiguration> idl_pc_; + }; + } +} + +#include /**/ "ace/post.h" +#endif /*CIAO_CONFIG_STD_PC_INTF_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Package_Handlers.mpc b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Package_Handlers.mpc new file mode 100644 index 00000000000..4ac1cf47981 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Package_Handlers.mpc @@ -0,0 +1,43 @@ +// $Id$ + +project (Package_Config_Handlers) : acelib, dance_deployment_stub, ciao_config_handlers_base, dance, typecodefactory, ciao_output { + sharedname = Package_Config_Handlers + dynamicflags = PACKAGING_HANDLERS_BUILD_DLL + + includes += $(CIAO_ROOT)/ciao + libpaths += $(CIAO_ROOT)/bin + + after += XSC_Config_Handlers_Common \ + XSC_Config_Handlers \ + XSC_DynAny_Handler \ + XSC_XML_Handlers \ + CIAO_XML_Utils \ + + libs += XSC_Config_Handlers_Common \ + XSC_Config_Handlers \ + XSC_DynAny_Handler \ + XSC_XML_Handlers \ + CIAO_XML_Utils \ + + Source_files { + CAD_Handler.cpp + CID_Handler.cpp + Comp_Intf_Descr_Handler.cpp + CPD_Handler.cpp + IAD_Handler.cpp + PCD_Handler.cpp + SID_Handler.cpp + } + + Header_Files { + CAD_Handler.h + CID_Handler.h + Comp_Intf_Descr_Handler.h + CPD_Handler.h + IAD_Handler.h + PCD_Handler.h + SID_Handler.h + } + +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h new file mode 100644 index 00000000000..86193a1a664 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl Packaging_Handlers +// ------------------------------ +#ifndef PACKAGING_HANDLERS_EXPORT_H +#define PACKAGING_HANDLERS_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (PACKAGING_HANDLERS_HAS_DLL) +# define PACKAGING_HANDLERS_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && PACKAGING_HANDLERS_HAS_DLL */ + +#if !defined (PACKAGING_HANDLERS_HAS_DLL) +# define PACKAGING_HANDLERS_HAS_DLL 1 +#endif /* ! PACKAGING_HANDLERS_HAS_DLL */ + +#if defined (PACKAGING_HANDLERS_HAS_DLL) && (PACKAGING_HANDLERS_HAS_DLL == 1) +# if defined (PACKAGING_HANDLERS_BUILD_DLL) +# define Packaging_Handlers_Export ACE_Proper_Export_Flag +# define PACKAGING_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define PACKAGING_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* PACKAGING_HANDLERS_BUILD_DLL */ +# define Packaging_Handlers_Export ACE_Proper_Import_Flag +# define PACKAGING_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define PACKAGING_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* PACKAGING_HANDLERS_BUILD_DLL */ +#else /* PACKAGING_HANDLERS_HAS_DLL == 1 */ +# define Packaging_Handlers_Export +# define PACKAGING_HANDLERS_SINGLETON_DECLARATION(T) +# define PACKAGING_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* PACKAGING_HANDLERS_HAS_DLL == 1 */ + +// Set PACKAGING_HANDLERS_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (PACKAGING_HANDLERS_NTRACE) +# if (ACE_NTRACE == 1) +# define PACKAGING_HANDLERS_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define PACKAGING_HANDLERS_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !PACKAGING_HANDLERS_NTRACE */ + +#if (PACKAGING_HANDLERS_NTRACE == 1) +# define PACKAGING_HANDLERS_TRACE(X) +#else /* (PACKAGING_HANDLERS_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define PACKAGING_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (PACKAGING_HANDLERS_NTRACE == 1) */ + +#endif /* PACKAGING_HANDLERS_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.cpp new file mode 100644 index 00000000000..f19aa3ef4bb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.cpp @@ -0,0 +1,142 @@ +// $Id$ +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "Package_Handlers/SID_Handler.h" +#include "cid.hpp" +#include "DAnCE/Deployment/DeploymentC.h" +#include "Package_Handlers/CPD_Handler.h" +#include "Package_Handlers/PCD_Handler.h" +#include "Package_Handlers/Comp_Intf_Descr_Handler.h" +#include "Req_Handler.h" +#include "Property_Handler.h" + +#include "ace/UUID.h" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Packaging + { + IDREF_Base SID_Handler::IDREF; + + void + SID_Handler::handle_sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc, + ::Deployment::SubcomponentInstantiationDescription &toconfig) + { + DANCE_TRACE ("SID_Handler::sub_comp_inst_descr"); + toconfig.name = ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()); + + if (desc.basePackage_p ()) + { + toconfig.basePackage.length (1); + CPD_Handler::handle_component_package_descr (desc.basePackage (), + toconfig.basePackage[0]); + } + else if (desc.specializedConfig_p ()) + { + toconfig.specializedConfig.length (1); + PCD_Handler::package_config (desc.specializedConfig (), + toconfig.specializedConfig[0]); + } + else if (desc.importedPackage_p ()) + { + toconfig.importedPackage.length (1); + toconfig.importedPackage[0].location.length (desc.importedPackage ().count_location ()); + + std::for_each (desc.importedPackage ().begin_location (), + desc.importedPackage ().end_location (), + String_Seq_Functor (toconfig.importedPackage[0].location)); + } + else if (desc.referencedPackage_p ()) + { + toconfig.referencedPackage.length (1); + + if (desc.referencedPackage ().requiredUUID_p ()) + toconfig.referencedPackage[0].requiredUUID = + ACE_TEXT_ALWAYS_CHAR (desc.referencedPackage ().requiredUUID ().c_str ()); + + if (desc.referencedPackage ().requiredName_p ()) + toconfig.referencedPackage[0].requiredName = + ACE_TEXT_ALWAYS_CHAR (desc.referencedPackage ().requiredName ().c_str ()); + + Comp_Intf_Descr_Handler::comp_intf_descr (desc.referencedPackage ().requiredType (), + toconfig.referencedPackage[0].requiredType); + + } + + toconfig.selectRequirement.length (desc.count_selectRequirement ()); + std::for_each (desc.begin_selectRequirement (), + desc.end_selectRequirement (), + Requirement_Functor (toconfig.selectRequirement)); + + toconfig.configProperty.length (desc.count_configProperty ()); + std::for_each (desc.begin_configProperty (), + desc.end_configProperty (), + Property_Functor (toconfig.configProperty)); + + if (desc.id_p ()) + { + ACE_TString str (desc.id ().c_str ()); + SID_Handler::IDREF.bind_next_available (str); + } + else + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Warning: SID With Name %s has no ID\n"), + desc.name ().c_str ())); + + } + + SubcomponentInstantiationDescription + SID_Handler::sub_comp_inst_descr (const Deployment::SubcomponentInstantiationDescription &src) + { + DANCE_TRACE ("SID_Handler::sub_comp_inst_descr - reverse"); + SubcomponentInstantiationDescription retval (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ())); + + if (src.basePackage.length () == 1) + retval.basePackage + (CPD_Handler::component_package_descr (src.basePackage[0])); + else if (src.specializedConfig.length () == 1) + retval.specializedConfig + (PCD_Handler::package_config (src.specializedConfig[0])); + else if (src.importedPackage.length () == 1) + { + ComponentPackageImport ci; +#if 0 + for (CORBA::ULong i = 0; i < src.importedPackage[0].location.length (); ++i) + ci.add_location (src.importedPackage[0].location[i].in ()); +#endif + retval.importedPackage (ci); + } + else if (src.referencedPackage.length () == 1) + { + ComponentPackageReference cpr (Comp_Intf_Descr_Handler::comp_intf_descr (src.referencedPackage[0].requiredType)); + cpr.requiredUUID (ACE_TEXT_CHAR_TO_TCHAR (src.referencedPackage[0].requiredUUID.in ())); + cpr.requiredName (ACE_TEXT_CHAR_TO_TCHAR (src.referencedPackage[0].requiredName.in ())); + + retval.referencedPackage (cpr); + } +#if 0 + for (CORBA::ULong i = 0; i < src.selectRequirement.length (); ++i) + retval.add_selectRequirement + (Req_Handler::get_requirement (src.selectRequirement[i])); + + for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i) + retval.add_configProperty + (Property_Handler::get_property (src.configProperty[i])); +#endif + // @@MAJO This is not a good way of binding reverse IDREFS. + std::auto_ptr safe_uuid ( + ACE_Utils::UUID_GENERATOR::instance ()->generate_UUID ()); + ACE_TString uuid ( ACE_TEXT_CHAR_TO_TCHAR (safe_uuid->to_string ()->c_str ())); + + // ACE_ERROR ((LM_ERROR, "*** Binding to %s\n", + // uuid.c_str ())); + + SID_Handler::IDREF.bind_next_available (uuid); + + return retval; + } + + } + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.h new file mode 100644 index 00000000000..2083b91b9b6 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Package_Handlers/SID_Handler.h @@ -0,0 +1,71 @@ +/** + * @file SID_Handler.h + * @author William Otte + * + * $Id$ + */ + + +#ifndef CIAO_PACKAGING_SID_HANDLER_H +#define CIAO_PACKAGING_SID_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "XML_Typedefs.h" +#include "Utils/Functors.h" +#include "IDREF_Base.h" +#include "Package_Handlers/Packaging_Handlers_Export.h" + +namespace Deployment +{ + struct SubcomponentInstantiationDescription; + class SubcomponentInstantiationDescriptions; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class SubcomponentInstantiationDescription; + + namespace Packaging + { + /** + * @class SID_Handler + * @brief Handler class for SubcomponentInstantiationDescription + */ + class Packaging_Handlers_Export SID_Handler + { + SID_Handler (XML_Helper *xml_helper) + : xml_helper_ (xml_helper) + { + + } + + public: + static void handle_sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc, + ::Deployment::SubcomponentInstantiationDescription &toconfig); + + static SubcomponentInstantiationDescription + sub_comp_inst_descr (const ::Deployment::SubcomponentInstantiationDescription &src); + + static IDREF_Base< CORBA::ULong > IDREF; + + private: + static SubcomponentInstantiationDescription *resolve_sid (const char *uri); + + XML_Helper *xml_helper_; + + }; + + typedef Sequence_Handler < SubcomponentInstantiationDescription, + ::Deployment::SubcomponentInstantiationDescriptions, + ::Deployment::SubcomponentInstantiationDescription, + SID_Handler::handle_sub_comp_inst_descr > SID_Functor; + + } + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_PACKAGING_SID_HANDLER_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Property_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Property_Handler.cpp new file mode 100644 index 00000000000..ab4289637e1 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Property_Handler.cpp @@ -0,0 +1,56 @@ +//$Id$ + +#include "Property_Handler.h" +#include "Any_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + + Property_Handler::Property_Handler (void) + { + } + + Property_Handler::~Property_Handler (void) + { + } + + void + Property_Handler::handle_property (const Property& desc, + Deployment::Property& toconfig) + { + DANCE_TRACE("Property_Handler::get_property"); + + try + { + toconfig.name = + CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ())); + + Any_Handler::extract_into_any (desc.value (), + toconfig.value); + } + catch (Config_Error &ex) + { + ex.name_ = desc.name (); + throw ex; + } + } + + Property + Property_Handler::get_property (const Deployment::Property& src) + { + DANCE_TRACE("Property_Handler::get_property - reverse"); + + ::XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR(src.name)); + Any value (Any_Handler::get_any (src.value)); + + Property prop (name,value); + + return prop; + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Property_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Property_Handler.h new file mode 100644 index 00000000000..422aa1d4a44 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Property_Handler.h @@ -0,0 +1,70 @@ +//================================================ +/** + * @file Property_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H +#define CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Common_Export.h" +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct Property; + class Properties; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class Property; + + /* + * @class Property_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + + class Config_Handlers_Common_Export Property_Handler + { + public: + Property_Handler (void); + virtual ~Property_Handler (void); + + /// This method maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void handle_property (const Property& desc, + ::Deployment::Property& toconfig); + static Property get_property (const ::Deployment::Property& src); + }; + + + typedef Sequence_Handler < Property, + ::Deployment::Properties, + ::Deployment::Property, + Property_Handler::handle_property > Property_Functor; + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.cpp new file mode 100644 index 00000000000..dd386b5efb8 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.cpp @@ -0,0 +1,55 @@ +// $Id$ + +#include "RDD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "Any_Handler.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Property_Handler.h" + +namespace CIAO +{ + namespace Config_Handlers + { + void + RDD_Handler::resource_deployment_descr ( + const ResourceDeploymentDescription &src, + ::Deployment::ResourceDeploymentDescription &dest) + { + DANCE_TRACE("RDD_Handler::resource_deployment_descr"); + + dest.requirementName = src.requirementName ().c_str (); + + dest.resourceName= src.resourceName ().c_str (); + + std::for_each (src.begin_property (), + src.end_property (), + Property_Functor (dest.property)); + + } + + ResourceDeploymentDescription + RDD_Handler::resource_deployment_descr ( + const ::Deployment::ResourceDeploymentDescription &src) + { + DANCE_TRACE("RDD_Handler::resource_deployment_descr - reverse"); + + XMLSchema::string< ACE_TCHAR > reqname (ACE_TEXT_CHAR_TO_TCHAR (src.requirementName)); + XMLSchema::string< ACE_TCHAR > resname (ACE_TEXT_CHAR_TO_TCHAR (src.resourceName.in ())); + + ResourceDeploymentDescription rdd (reqname,resname); + + for (CORBA::ULong i = 0; + i != src.property.length (); + ++i) + { + //rdd.add_property (Property_Handler::get_property (src.property[i])); + } + + return rdd; + } + + + } + +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.h new file mode 100644 index 00000000000..e0d19c58ee2 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/RDD_Handler.h @@ -0,0 +1,63 @@ + +//============================================================== +/** +* @file RDD_Handler.h +* +* $Id$ +* +* @author Jules White +*/ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_RDD_Handler_H +#define CIAO_CONFIG_HANDLERS_RDD_Handler_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + + +namespace Deployment +{ +struct ResourceDeploymentDescription; +} + + +namespace CIAO +{ + +namespace Config_Handlers +{ +class ResourceDeploymentDescription; + +/* +* @class RDD_Handler +* +* @brief Handler class for types. +* +* This class defines handler methods to map values from XSC +* ResourceDeploymentDescription objects, parsed from the +* descriptor files, to the corresponding CORBA IDL Any type. +* +*/ + +class Config_Handlers_Export RDD_Handler +{ +public: +static void resource_deployment_descr ( +const ResourceDeploymentDescription& desc, +::Deployment::ResourceDeploymentDescription& toconfig); +static ResourceDeploymentDescription +resource_deployment_descr ( +const ::Deployment::ResourceDeploymentDescription &src); + +}; +} +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_RDD_Handler_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Req_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/Req_Handler.cpp new file mode 100644 index 00000000000..4a40afc1647 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Req_Handler.cpp @@ -0,0 +1,57 @@ +// $Id$ + +#include "Req_Handler.h" +#include "Property_Handler.h" +#include "DAnCE/Deployment/Deployment_BaseC.h" +#include "DAnCE/Logger/Log_Macros.h" +namespace CIAO +{ + namespace Config_Handlers + { + + Req_Handler::Req_Handler (void) + { + } + + Req_Handler::~Req_Handler (void) + { + } + + void + Req_Handler::handle_requirement (const Requirement& desc, + Deployment::Requirement& toconfig) + { + DANCE_TRACE("Req_Handler::get_Requirement"); + + //Map the basic string types to their Deployment::Req + //counterparts. + toconfig.name = ACE_TEXT_ALWAYS_CHAR ( desc.name ().c_str ()); + toconfig.resourceType = ACE_TEXT_ALWAYS_CHAR ( desc.resourceType ().c_str ()); + + toconfig.property.length (desc.count_property ()); + std::for_each (desc.begin_property (), + desc.end_property (), + Property_Functor (toconfig.property)); + } + + Requirement + Req_Handler::get_requirement (const Deployment::Requirement& src) + { + DANCE_TRACE("Req_Handler::get_requirement - reverse"); + + //Get the values for name and res + XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR (src.name)); + XMLSchema::string< ACE_TCHAR > res (ACE_TEXT_CHAR_TO_TCHAR (src.resourceType)); + + //Instantiate the Requirement + Requirement req (name,res); + + for (CORBA::ULong i = 0; i < src.property.length (); ++i) + { + //req.add_property (Property_Handler::get_property (src.property[i])); + } + + return req; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/Req_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/Req_Handler.h new file mode 100644 index 00000000000..3955b85a55f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Req_Handler.h @@ -0,0 +1,71 @@ +//============================================================== +/** + * @file Req_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================================ + +#ifndef CIAO_CONFIG_HANDLERS_REQ_HANDLER_H +#define CIAO_CONFIG_HANDLERS_REQ_HANDLER_H +#include /**/ "ace/pre.h" + +#include "Basic_Deployment_Data.hpp" +#include "Config_Handlers_Common_Export.h" +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct Requirement; + class Requirements; +} + +namespace CIAO +{ + + namespace Config_Handlers + { + /* + * @class REQ_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC Requirement objects, parsed from + * the descriptor files, to the corresponding CORBA IDL type. + * + */ + + class Config_Handlers_Common_Export Req_Handler + { + public: + + Req_Handler (void); + virtual ~Req_Handler (void); + + ///This method takes a + ///and maps the values from the passed in XSC + ///Requirement to its members. + static void handle_requirement (const Requirement& desc, + Deployment::Requirement& toconfig); + static Requirement + get_requirement (const Deployment::Requirement& src); + }; + + typedef Sequence_Handler < Requirement, + ::Deployment::Requirements, + ::Deployment::Requirement, + Req_Handler::handle_requirement > Requirement_Functor; + + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_REQ_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.cpp new file mode 100644 index 00000000000..d0bd4e92904 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.cpp @@ -0,0 +1,173 @@ +// $Id$ +#include "STD_CID_Handler.h" +#include "STD_CPD_Handler.h" +#include "STD_IAD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "Utils/XML_Helper.h" +#include "Deployment.hpp" +#include "Property_Handler.h" + +namespace CIAO +{ + namespace Config_Handlers + { + IDREF_Base STD_CID_Handler::IDREF; + + bool + STD_CID_Handler::component_impl_descr ( + const ComponentImplementationDescription &desc, + ::Deployment::ComponentImplementationDescription &toconfig) + { + toconfig.label = + desc.label ().c_str (); + + toconfig.UUID = + desc.UUID ().c_str (); + + + if (desc.assemblyImpl_p ()) + { + Deployment::ComponentAssemblyDescription idl_cad; + ComponentAssemblyDescription cad = + desc.assemblyImpl (); + + // @@: handle + for (ComponentAssemblyDescription::instance_const_iterator iter = + cad.begin_instance (); + iter != cad.end_instance (); + iter++) + { + CORBA::ULong len = + idl_cad.instance.length (); + idl_cad.instance.length (len + 1); + idl_cad.instance [len].name = + (*iter).name ().c_str (); + + // Bind the instance id with the index + if ((*iter).id_p ()) + { + ACE_CString cstr ((*iter).id ().c_str ()); + + STD_CID_Handler::IDREF.bind_ref (cstr,len); + } + + if (!this->xml_helper_->is_initialized ()) + return false; + + // parse the .cpd (ComponentPackageDescription) file + // that links to + xercesc::DOMDocument* dom = + this->xml_helper_->create_dom (((*iter).package ()).href ().c_str ()); + + if (!dom) + return false; + + ComponentPackageDescription cpd = + componentPackageDescription (dom); + + Deployment::ComponentPackageDescription idl_cpd; + + STD_CPD_Handler cpd_handler (this->xml_helper_); + + cpd_handler.component_package_descr (cpd, + idl_cpd); + + idl_cad.instance [len].package.length (1); + idl_cad.instance [len].package [0] = idl_cpd; + } + + // @@: handle + for (ComponentAssemblyDescription::connection_const_iterator conn_iter = + cad.begin_connection (); + conn_iter != cad.end_connection (); + conn_iter++) + { + CORBA::ULong conn_len = + idl_cad.connection.length (); + + idl_cad.connection.length (conn_len + 1); + idl_cad.connection [conn_len].name = + (*conn_iter).name ().c_str (); + + + for (AssemblyConnectionDescription::internalEndpoint_const_iterator ep_iter = + (*conn_iter).begin_internalEndpoint (); + ep_iter != (*conn_iter).end_internalEndpoint (); + ep_iter++) + { + CORBA::ULong endp_len = + idl_cad.connection [conn_len].internalEndpoint.length (); + idl_cad.connection [conn_len].internalEndpoint.length (endp_len + 1); + idl_cad.connection [conn_len].internalEndpoint [endp_len].portName = + (*ep_iter).portName ().c_str (); + + CORBA::ULong tmp = 0; + STD_CID_Handler::IDREF.find_ref (ACE_CString ((((*ep_iter).instance ()).id ()).c_str ()), + tmp); + CORBA::ULong ref = tmp; + idl_cad.connection[conn_len].internalEndpoint [endp_len].instanceRef = ref; + } + } + + toconfig.assemblyImpl.length (1); + toconfig.assemblyImpl [0] = idl_cad; + } + + // handle + if (desc.monolithicImpl_p ()) + { + Deployment::MonolithicImplementationDescription idl_mid; + MonolithicImplementationDescription mid = + desc.monolithicImpl (); + + for (MonolithicImplementationDescription::primaryArtifact_const_iterator iter = + mid.begin_primaryArtifact (); + iter != mid.end_primaryArtifact (); + iter++) + { + CORBA::ULong len = + idl_mid.primaryArtifact.length (); + idl_mid.primaryArtifact.length (len + 1); + idl_mid.primaryArtifact [len].name = (*iter).name ().c_str (); + + if (!this->xml_helper_->is_initialized ()) + return false; + + // parse the .iad (ImplementationArtifactDescription) file + // that the links to + xercesc::DOMDocument* dom = + this->xml_helper_->create_dom (((*iter).referencedArtifact ()).href ().c_str ()); // here location indicates .iad file + + if (!dom) + return false; + + ImplementationArtifactDescription iad = + implementationArtifactDescription (dom); + + Deployment::ImplementationArtifactDescription idl_iad; + + STD_IAD_Handler::impl_artifact_descr (iad, + idl_iad); + + idl_mid.primaryArtifact [len].referencedArtifact = idl_iad; + + } + toconfig.monolithicImpl.length (1); + toconfig.monolithicImpl [0] = idl_mid; + } + + // handle + if (desc.configProperty_p ()) + { + Property p = desc.configProperty (); + Deployment::Property idl_p; + Property_Handler::get_property (p, idl_p); + toconfig.configProperty.length (1); + toconfig.configProperty [0] = idl_p; + } + + return true; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.h new file mode 100644 index 00000000000..c875d05edba --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_CID_Handler.h @@ -0,0 +1,75 @@ +//================================================ +/** + * @file STD_CID_Handler.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_STD_CID_HANDLER_H +#define CIAO_CONFIG_HANDLERS_STD_CID_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "IDREF_Base.h" +#include "Config_Handlers_Export.h" +#include "DAnCE/Deployment/DeploymentC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentImplementationDescription; + + /* + * @class STD_CID_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Config_Handlers_Export STD_CID_Handler + { + + public: + + STD_CID_Handler (void) + { + } + + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + bool component_impl_descr ( + const ComponentImplementationDescription &desc, + ::Deployment::ComponentImplementationDescription &toconfig); + + static IDREF_Base IDREF; + +//@@Note: This part has yet to be added in the future +// ComponentImplementationDescription +// component_port_description ( +// const Deployment::ComponentImplementationDescription& src); + + private: + // disable the default constructor + STD_CID_Handler () + :xml_helper_ (0) + { + } + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_STD_CID_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.cpp new file mode 100644 index 00000000000..c9fa40f0258 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.cpp @@ -0,0 +1,59 @@ +// $Id$ +#include "STD_CPD_Handler.h" +#include "STD_CID_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "Deployment.hpp" +#include "Utils/XML_Typedefs.h" + +namespace CIAO +{ + namespace Config_Handlers + { + bool + STD_CPD_Handler::component_package_descr ( + const ComponentPackageDescription &desc, + ::Deployment::ComponentPackageDescription &toconfig) + { + toconfig.label = + desc.label ().c_str (); + + toconfig.UUID = + desc.UUID ().c_str (); + + PackagedComponentImplementation pci = desc.implementation (); + Deployment::PackagedComponentImplementation idl_pci; + idl_pci.name = + pci.name ().c_str (); + + if (XML_Helper::XML_HELPER.is_initialized ()) + return false; + + // parse the .cid (ComponentImplementationDescription) file + // that links to + xercesc::DOMDocument* dom = + XML_Helper::XML_HELPER.create_dom + ((pci.referencedImplementation ()).href ().c_str ()); // here location indicates .pcd file + + if (!dom) + return false; + + ComponentImplementationDescription cid = + componentImplementationDescription (dom); + + Deployment::ComponentImplementationDescription idl_cid; + + STD_CID_Handler cid_handler; + + cid_handler.component_impl_descr (cid, + idl_cid); + + idl_pci.referencedImplementation = idl_cid; + + toconfig.implementation.length (1); + toconfig.implementation [0] = idl_pci; + + return true; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.h new file mode 100644 index 00000000000..654fb0155ca --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_CPD_Handler.h @@ -0,0 +1,78 @@ +//================================================ +/** + * @file STD_CPD_Handler.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Utils/XML_Helper.h" +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct ComponentPackageDescription; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentPackageDescription; + + /* + * @class STD_CPD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Config_Handlers_Export STD_CPD_Handler + { + + public: + + STD_CPD_Handler (XML_Helper *xml_helper) + :xml_helper_ (xml_helper) + { + } + + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + bool component_package_descr( + const ComponentPackageDescription &desc, + ::Deployment::ComponentPackageDescription &toconfig); + + //@@Note: This part has yet to be added in the future + // ComponentPortDescription + // component_package_descr ( + // const Deployment::ComponentPortDescription& src); + private: + // disable the default constructor + STD_CPD_Handler () + :xml_helper_ (0) + { + } + + XML_Helper *xml_helper_; + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_CPD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.cpp new file mode 100644 index 00000000000..020396582d3 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.cpp @@ -0,0 +1,46 @@ +// $Id$ +#include "STD_IAD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "ciao/Packaging_DataC.h" +#include "Property_Handler.h" + +#include "iad.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + bool + STD_IAD_Handler::impl_artifact_descr ( + const ImplementationArtifactDescription &desc, + ::Deployment::ImplementationArtifactDescription &toconfig) + { + toconfig.label = + desc.label ().c_str (); + + toconfig.UUID = + desc.UUID ().c_str (); + + for (ImplementationArtifactDescription::location_const_iterator iter = + desc.begin_location (); + iter != desc.end_location (); + iter++) + { + CORBA::ULong len = + toconfig.location.length (); + toconfig.location.length (len + 1); + toconfig.location [len] = (*iter).c_str (); + } + + if (desc.execParameter_p ()) + { + Property p = desc.execParameter (); + Deployment::Property idl_p; + Property_Handler::get_property (p, idl_p); + toconfig.execParameter.length (1); + toconfig.execParameter [0] = idl_p; + } + return true; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.h new file mode 100644 index 00000000000..3523526f5be --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_IAD_Handler.h @@ -0,0 +1,64 @@ +//================================================ +/** + * @file STD_IAD_Handler.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct ImplementationArtifactDescription; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class ImplementationArtifactDescription; + + /* + * @class STD_IAD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Config_Handlers_Export STD_IAD_Handler + { + + public: + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + static bool + impl_artifact_descr ( + const ImplementationArtifactDescription &desc, + ::Deployment::ImplementationArtifactDescription &toconfig); + +//@@Note: The reverse part has yet to be handed in the future +// ImplementationArtifactDescription +// impl_artifact_descr ( +// const Deployment::ComponentPortDescription& src); + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.cpp new file mode 100644 index 00000000000..5a65826f340 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.cpp @@ -0,0 +1,52 @@ +// $Id$ +#include "STD_PCD_Handler.h" +#include "STD_CPD_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "ciao/Packaging_DataC.h" +#include "Deployment.hpp" + + +namespace CIAO +{ + namespace Config_Handlers + { + + bool + STD_PCD_Handler::package_config ( + const PackageConfiguration &desc, + ::Deployment::PackageConfiguration &toconfig) + { + toconfig.label = + desc.label ().c_str (); + + toconfig.UUID = + desc.UUID ().c_str (); + + if (!XML_Helper::XML_HELPER.is_initialized ()) + return false; + + // parse the .cpd (ComponentPackageDescription) file + // that links to + xercesc::DOMDocument* dom = + XML_Helper::XML_HELPER.create_dom ((desc.basePackage()).href ().c_str ()); + + if (!dom) + return false; + + ComponentPackageDescription cpc = + componentPackageDescription (dom); + + Deployment::ComponentPackageDescription idl_cpc; + + STD_CPD_Handler cpd_handler; + + cpd_handler.component_package_descr (cpc, + idl_cpc); + + toconfig.basePackage.length (1); + toconfig.basePackage [0] = idl_cpc; + + return true; + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.h new file mode 100644 index 00000000000..8c65f6eb6f3 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_PCD_Handler.h @@ -0,0 +1,74 @@ +//================================================ +/** + * @file STD_PCD_Handler.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H +#define CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct PackageConfiguration; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class PackageConfiguration; + + /* + * @class STD_PCD_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + class Config_Handlers_Export STD_PCD_Handler + { + + public: + STD_PCD_Handler () + { + } + + /// Maps the values from the XSC object + /// to the CORBA IDL type + /// . + bool package_config ( + const PackageConfiguration &desc, + ::Deployment::PackageConfiguration &toconfig); + +//@@Note: This part has yet to be added in the future +// PackageConfiguration +// package_config ( +// const Deployment::ComponentPortDescription& src); + + private: + // Disable the default constructor + STD_PCD_Handler () + { + } + + }; + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.cpp b/modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.cpp new file mode 100644 index 00000000000..01fa67f23ad --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.cpp @@ -0,0 +1,71 @@ +// $Id$ + +#include "STD_PC_Intf.h" +#include "Utils/XML_Typedefs.h" +#include "Deployment.hpp" +#include "STD_PCD_Handler.h" +#include "ciao/Packaging_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + STD_PC_Intf::STD_PC_Intf (const char *file) + { + if (!this->prepare_PC (file)) + throw; + } + + bool + STD_PC_Intf::prepare_PC (const char *file) + { + DANCE_TRACE("STD_PC_Intf::prepare_PC"); + + + // parse the .pcd (PackageConfigurationDescription) file + xercesc::DOMDocument *dom = + XML_Helper::XML_HELPER.create_dom (file); + + if (!dom) + return false; + + + PackageConfiguration pc = + packageConfiguration (dom); + + + Deployment::PackageConfiguration idl_pc; + + + STD_PCD_Handler pcd_handler; + + pcd_handler.package_config (pc, + idl_pc); + + + Deployment::PackageConfiguration *p_idl_pc = + new Deployment::PackageConfiguration (idl_pc); + + // let ACE_Auto_Ptr take over + this->idl_pc_.reset (p_idl_pc); + + if (this->idl_pc_.get ()) + return true; + + return false; + } + + ::Deployment::PackageConfiguration const * + STD_PC_Intf::get_PC (void) const + { + return this->idl_pc_.get (); + } + + ::Deployment::PackageConfiguration * + STD_PC_Intf::get_PC (void) + { + return this->idl_pc_.release (); + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.h b/modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.h new file mode 100644 index 00000000000..2e07e1922eb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/STD_PC_Intf.h @@ -0,0 +1,62 @@ +//============================================================== +/** + * @file STD_PC_Intf.h + * + * $Id$ + * + * @author Ming Xiong + */ +//================================================================ + +#ifndef CIAO_CONFIG_STD_PC_INTF_H +#define CIAO_CONFIG_STD_PC_INTF_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Auto_Ptr.h" + + +namespace Deployment +{ + struct PackageConfiguration ; +} + +namespace CIAO +{ + namespace Config_Handlers + { + /* + * @class STD_PC_Intf + * + * @brief Wrapper class for PackageConfiguration extraction + * + * This class defines wrapper functions for extracting + * PackageConfiguration IDL structures from XSC structures. + * It serves as the public interface used by application + * developers. + * + */ + class Config_Handlers_Export STD_PC_Intf + { + public: + STD_PC_Intf (const char *file); + + ::Deployment::PackageConfiguration const *get_PC (void) const; + ::Deployment::PackageConfiguration *get_PC (void); + + protected: + bool prepare_PC (const char *file); + + private: + ACE_Auto_Ptr< ::Deployment::PackageConfiguration> idl_pc_; + }; + } +} + +#include /**/ "ace/post.h" +#endif /*CIAO_CONFIG_STD_PC_INTF_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.cpp b/modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.cpp new file mode 100644 index 00000000000..a0951505138 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.cpp @@ -0,0 +1,126 @@ +//$Id$ + +#include "SatisfierProperty_Handler.h" +#include "Any_Handler.h" +#include "Basic_Deployment_Data.hpp" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Utils/Exceptions.h" +namespace CIAO +{ + namespace Config_Handlers + { + + SatisfierProperty_Handler::SatisfierProperty_Handler (void) + { + } + + SatisfierProperty_Handler::~SatisfierProperty_Handler (void) + { + } + + void + SatisfierProperty_Handler::handle_sat_property ( + const SatisfierProperty& desc, + Deployment::SatisfierProperty& toconfig) + { + DANCE_TRACE("SatisfierProperty_Handler::get_sat_property"); + + toconfig.name = ACE_TEXT_ALWAYS_CHAR (desc.name ().c_str ()); + + switch (desc.kind ().integral ()) + { + case SatisfierPropertyKind::Quantity_l: + toconfig.kind = Deployment::Quantity; + break; + + case SatisfierPropertyKind::Capacity_l: + toconfig.kind = Deployment::Capacity; + break; + + case SatisfierPropertyKind::Minimum_l: + toconfig.kind = Deployment::Minimum; + break; + + case SatisfierPropertyKind::Maximum_l: + toconfig.kind = Deployment::Maximum; + break; + + // case SatisfierPropertyKind::Attribute_l: + //toconfig.kind = Deployment::_Attribute; + //break; + + case SatisfierPropertyKind::Selection_l: + toconfig.kind = Deployment::Selection; + break; + + default: + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unknown SatisfierPropertyKind\n"))); + throw Config_Error (desc.name (), ACE_TEXT ("Unknown SatisfierPropertyKind")); + + } + + toconfig.dynamic = desc.dynamic (); + + try + { + Any_Handler::extract_into_any (desc.value (), + toconfig.value); + } + catch (Config_Error &ex) + { + ex.name_ = desc.name (); + throw ex; + } + } + + SatisfierProperty + SatisfierProperty_Handler::get_sat_property ( + const Deployment::SatisfierProperty& src) + { + DANCE_TRACE("SatisfierProperty_Handler::get_sat_property - reverse"); + + ::XMLSchema::string< ACE_TCHAR > name (ACE_TEXT_CHAR_TO_TCHAR ((src.name))); + SatisfierPropertyKind::Value kind; + + const SatisfierPropertyKind *spk = 0; + + switch (src.kind) + { + case Deployment::Quantity: + spk = &SatisfierPropertyKind::Quantity; + break; + + case Deployment::Capacity: + spk = &SatisfierPropertyKind::Capacity; + break; + + case Deployment::Minimum: + spk = &SatisfierPropertyKind::Minimum; + break; + + case Deployment::Maximum: + spk = &SatisfierPropertyKind::Maximum; + break; + + // case Deployment::_Attribute: + //kind = SatisfierPropertyKind::Attribute_l; + //break; + + case Deployment::Selection: + kind = SatisfierPropertyKind::Selection_l; + break; + + default: + throw Plan_Error (ACE_TEXT ("Invalid SatisfierPropertyKind")); + } + + bool dynamic = src.dynamic; + + Any value (Any_Handler::get_any (src.value)); + + return SatisfierProperty (name, *spk, dynamic, value); + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.h b/modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.h new file mode 100644 index 00000000000..e166b341d9f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/SatisfierProperty_Handler.h @@ -0,0 +1,69 @@ +//================================================ +/** + * @file SatisfierProperty_Handler.h + * + * $Id$ + * + * @author Jules White + */ +//================================================ + +#ifndef CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H +#define CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H + +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Common_Export.h" +#include "Utils/Functors.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace Deployment +{ + struct SatisfierProperty; + class SatisfierProperties; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class SatisfierProperty; + + /* + * @class SatisfierProperty_Handler + * + * @brief Handler class for types. + * + * This class defines handler methods to map values from + * XSC objects, parsed from the descriptor files, to the + * corresponding CORBA IDL type for the schema element. + * + */ + + class Config_Handlers_Common_Export SatisfierProperty_Handler + { + public: + SatisfierProperty_Handler (void); + virtual ~SatisfierProperty_Handler (void); + + /// This method maps the values from the XSC object + /// to the CORBA IDL type + /// . + static void handle_sat_property (const SatisfierProperty& desc, + ::Deployment::SatisfierProperty& toconfig); + static SatisfierProperty get_sat_property (const ::Deployment::SatisfierProperty& src); + }; + + typedef Sequence_Handler < SatisfierProperty, + ::Deployment::SatisfierProperties, + ::Deployment::SatisfierProperty, + SatisfierProperty_Handler::handle_sat_property> SatisfierProperty_Functor; + + } +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/Utils/Exceptions.h b/modules/CIAO/DAnCE/Config_Handlers/Utils/Exceptions.h new file mode 100644 index 00000000000..63b3563c879 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Utils/Exceptions.h @@ -0,0 +1,39 @@ +// $Id$ +/** + * @file Exceptions.h + * @author William Otte + * + * Defines exceptions that may be thrown during the XSC<=>IDL translation process. + */ +#include + +namespace CIAO +{ + namespace Config_Handlers + { + struct Parse_Error + { + Parse_Error (const std::basic_string &reason) + : reason_ (reason) + { + } + + std::basic_string reason_; + }; + + struct Plan_Error + { + Plan_Error (const std::basic_string &reason) + : reason_ (reason) + { + } + + std::basic_string reason_; + }; + + } +} + + + + diff --git a/modules/CIAO/DAnCE/Config_Handlers/Utils/Functors.h b/modules/CIAO/DAnCE/Config_Handlers/Utils/Functors.h new file mode 100644 index 00000000000..c07a377aa41 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/Utils/Functors.h @@ -0,0 +1,87 @@ +#ifndef CONFIG_HANDLERS_FUNCTORS_H +#define CONFIG_HANDLERS_FUNCTORS_H + +/** + * @file Functors.h + * @author William Otte + * $Id$ + * Functors useful in the config handlers + */ +#include + +#include "tao/Basic_Types.h" // For CORBA::ULong +#include "tao/StringSeqC.h" + +#include "XMLSchema/Types.hpp" +namespace CIAO +{ + namespace Config_Handlers + { + template +#else + void (&Func)(const Source &, Dest_Type &)> +#endif + struct Sequence_Handler + { + Sequence_Handler (Dest &dest, CORBA::ULong pos = 0) + : dest_ (dest), + pos_ (pos) + { + } + + void operator() (const ACE_Refcounted_Auto_Ptr &src) + { + Func (*src, dest_[pos_++]); + } + + private: + Dest &dest_; + CORBA::ULong pos_; + }; + + /* + * This is a workaround for a GCC bug that for some reason causes + * functions that appear ONLY in a Sequence_Handler typedef to not + * be present in the compiled object file. + * This bug was first observed in GCC 4.02. + * + * W: The function we want to be defined + * X: First argument to the function + * Y: Second argument to the function + */ +#define SEQ_HAND_GCC_BUG_WORKAROUND(W, X, Y) \ + while(0) { \ + W (*X, Y[0]); \ + } + + + template + struct String_Seq_Handler + { + String_Seq_Handler (Dest &dest, CORBA::ULong pos = 0) + : dest_ (dest), + pos_ (pos) + { + } + + void operator() (const ACE_Refcounted_Auto_Ptr < ::XMLSchema::string, ACE_Null_Mutex> &src) + { + dest_[pos_++] = ACE_TEXT_ALWAYS_CHAR (src->c_str ()); + } + + private: + Dest &dest_; + CORBA::ULong pos_; + }; + + typedef String_Seq_Handler < ::CORBA::StringSeq, + ::CORBA::String_var > String_Seq_Functor; + + } +} + +#endif /* CONFIG_HANDLERS_FUNCTORS_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMI.cpp b/modules/CIAO/DAnCE/Config_Handlers/XMI.cpp new file mode 100644 index 00000000000..66c0ee02f0e --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMI.cpp @@ -0,0 +1,888 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "XMI.hpp" + +namespace XMI +{ + // Extension + // + + Extension:: + Extension () + : + regulator__ () + { + } + + Extension:: + Extension (Extension const& s) + : XSCRT::Type (), + id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + uuid_ (s.uuid_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.uuid_) : 0), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + idref_ (s.idref_.get () ? new ::XMLSchema::IDREF< ACE_TCHAR > (*s.idref_) : 0), + version_ (s.version_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.version_) : 0), + extender_ (s.extender_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.extender_) : 0), + extenderID_ (s.extenderID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.extenderID_) : 0), + regulator__ () + { + if (id_.get ()) id_->container (this); + if (label_.get ()) label_->container (this); + if (uuid_.get ()) uuid_->container (this); + if (href_.get ()) href_->container (this); + if (idref_.get ()) idref_->container (this); + if (version_.get ()) version_->container (this); + if (extender_.get ()) extender_->container (this); + if (extenderID_.get ()) extenderID_->container (this); + } + + Extension& Extension:: + operator= (Extension const& s) + { + if (s.id_.get ()) id (*(s.id_)); + else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0); + + if (s.label_.get ()) label (*(s.label_)); + else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + if (s.uuid_.get ()) uuid (*(s.uuid_)); + else uuid_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + if (s.idref_.get ()) idref (*(s.idref_)); + else idref_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (0); + + if (s.version_.get ()) version (*(s.version_)); + else version_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + if (s.extender_.get ()) extender (*(s.extender_)); + else extender_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + if (s.extenderID_.get ()) extenderID (*(s.extenderID_)); + else extenderID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // Extension + // + bool Extension:: + id_p () const + { + return id_.get () != 0; + } + + ::XMLSchema::ID< ACE_TCHAR > const& Extension:: + id () const + { + return *id_; + } + + ::XMLSchema::ID< ACE_TCHAR >& Extension:: + id () + { + return *id_; + } + + void Extension:: + id (::XMLSchema::ID< ACE_TCHAR > const& e) + { + if (id_.get ()) + { + *id_ = e; + } + + else + { + id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e)); + id_->container (this); + } + } + + // Extension + // + bool Extension:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Extension:: + label () const + { + return *label_; + } + + ::XMLSchema::string< ACE_TCHAR >& Extension:: + label () + { + return *label_; + } + + void Extension:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // Extension + // + bool Extension:: + uuid_p () const + { + return uuid_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Extension:: + uuid () const + { + return *uuid_; + } + + ::XMLSchema::string< ACE_TCHAR >& Extension:: + uuid () + { + return *uuid_; + } + + void Extension:: + uuid (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (uuid_.get ()) + { + *uuid_ = e; + } + + else + { + uuid_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + uuid_->container (this); + } + } + + // Extension + // + bool Extension:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Extension:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& Extension:: + href () + { + return *href_; + } + + void Extension:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + + // Extension + // + bool Extension:: + idref_p () const + { + return idref_.get () != 0; + } + + ::XMLSchema::IDREF< ACE_TCHAR > const& Extension:: + idref () const + { + return *idref_; + } + + ::XMLSchema::IDREF< ACE_TCHAR >& Extension:: + idref () + { + return *idref_; + } + + ::XSCRT::Type* Extension:: + idref_ptr () + { + std::basic_string temp (idref().id()); + return this->get_idref(temp.c_str()); + } + + + void Extension:: + idref (::XMLSchema::IDREF< ACE_TCHAR > const& e) + { + if (idref_.get ()) + { + *idref_ = e; + } + + else + { + idref_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (new ::XMLSchema::IDREF< ACE_TCHAR > (e)); + idref_->container (this); + } + } + + // Extension + // + bool Extension:: + version_p () const + { + return version_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Extension:: + version () const + { + return *version_; + } + + ::XMLSchema::string< ACE_TCHAR >& Extension:: + version () + { + return *version_; + } + + void Extension:: + version (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (version_.get ()) + { + *version_ = e; + } + + else + { + version_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + version_->container (this); + } + } + + // Extension + // + bool Extension:: + extender_p () const + { + return extender_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Extension:: + extender () const + { + return *extender_; + } + + ::XMLSchema::string< ACE_TCHAR >& Extension:: + extender () + { + return *extender_; + } + + void Extension:: + extender (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (extender_.get ()) + { + *extender_ = e; + } + + else + { + extender_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + extender_->container (this); + } + } + + // Extension + // + bool Extension:: + extenderID_p () const + { + return extenderID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Extension:: + extenderID () const + { + return *extenderID_; + } + + ::XMLSchema::string< ACE_TCHAR >& Extension:: + extenderID () + { + return *extenderID_; + } + + void Extension:: + extenderID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (extenderID_.get ()) + { + *extenderID_ = e; + } + + else + { + extenderID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + extenderID_->container (this); + } + } +} + +namespace XMI +{ + // Extension + // + + Extension:: + Extension (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("id")) + { + ::XMLSchema::ID< ACE_TCHAR > t (a); + id (t); + std::basic_string temp ((*id_).c_str()); + (*ACE_Singleton::instance())-> + add_id(temp, dynamic_cast (this)); + } + + else if (n == ACE_TEXT ("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + label (t); + } + + else if (n == ACE_TEXT ("uuid")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + uuid (t); + } + + else if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else if (n == ACE_TEXT ("idref")) + { + ::XMLSchema::IDREF< ACE_TCHAR > t (a); + idref (t); + std::basic_string temp ((*idref_).id().c_str()); + + (*ACE_Singleton::instance())-> + add_idref(temp, dynamic_cast (this)); + } + + else if (n == ACE_TEXT ("version")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + version (t); + } + + else if (n == ACE_TEXT ("extender")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + extender (t); + } + + else if (n == ACE_TEXT ("extenderID")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + extenderID (t); + } + + else + { + } + } + } +} + +namespace XMI +{ + namespace reader + { + ::XMI::Extension + extension (xercesc::DOMDocument const* d) + { + //Initiate our Singleton as an ACE_TSS object (ensures thread + //specific storage + ID_Map::TSS_ID_Map* TSS_ID_Map (ACE_Singleton::instance()); + + + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () == ACE_TEXT("extension")) + { + ::XMI::Extension r (e); + + (*TSS_ID_Map)->resolve_idref(); + + return r; + } + + else + { + throw 1; + } + } + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace XMI +{ + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct ExtensionTypeInfoInitializer + { + ExtensionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::XMI::Extension)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ExtensionTypeInfoInitializer ExtensionTypeInfoInitializer_; + } +} + +namespace XMI +{ + namespace Traversal + { + // Extension + // + // + + void Extension:: + traverse (Type& o) + { + pre (o); + if (o.id_p ()) id (o); + else id_none (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.uuid_p ()) uuid (o); + else uuid_none (o); + if (o.href_p ()) href (o); + else href_none (o); + if (o.idref_p ()) idref (o); + else idref_none (o); + if (o.version_p ()) version (o); + else version_none (o); + if (o.extender_p ()) extender (o); + else extender_none (o); + if (o.extenderID_p ()) extenderID (o); + else extenderID_none (o); + post (o); + } + + void Extension:: + traverse (Type const& o) + { + pre (o); + if (o.id_p ()) id (o); + else id_none (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.uuid_p ()) uuid (o); + else uuid_none (o); + if (o.href_p ()) href (o); + else href_none (o); + if (o.idref_p ()) idref (o); + else idref_none (o); + if (o.version_p ()) version (o); + else version_none (o); + if (o.extender_p ()) extender (o); + else extender_none (o); + if (o.extenderID_p ()) extenderID (o); + else extenderID_none (o); + post (o); + } + + void Extension:: + pre (Type&) + { + } + + void Extension:: + pre (Type const&) + { + } + + void Extension:: + id (Type& o) + { + dispatch (o.id ()); + } + + void Extension:: + id (Type const& o) + { + dispatch (o.id ()); + } + + void Extension:: + id_none (Type&) + { + } + + void Extension:: + id_none (Type const&) + { + } + + void Extension:: + label (Type& o) + { + dispatch (o.label ()); + } + + void Extension:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void Extension:: + label_none (Type&) + { + } + + void Extension:: + label_none (Type const&) + { + } + + void Extension:: + uuid (Type& o) + { + dispatch (o.uuid ()); + } + + void Extension:: + uuid (Type const& o) + { + dispatch (o.uuid ()); + } + + void Extension:: + uuid_none (Type&) + { + } + + void Extension:: + uuid_none (Type const&) + { + } + + void Extension:: + href (Type& o) + { + dispatch (o.href ()); + } + + void Extension:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void Extension:: + href_none (Type&) + { + } + + void Extension:: + href_none (Type const&) + { + } + + void Extension:: + idref (Type& o) + { + dispatch (o.idref ()); + } + + void Extension:: + idref (Type const& o) + { + dispatch (o.idref ()); + } + + void Extension:: + idref_none (Type&) + { + } + + void Extension:: + idref_none (Type const&) + { + } + + void Extension:: + version (Type& o) + { + dispatch (o.version ()); + } + + void Extension:: + version (Type const& o) + { + dispatch (o.version ()); + } + + void Extension:: + version_none (Type&) + { + } + + void Extension:: + version_none (Type const&) + { + } + + void Extension:: + extender (Type& o) + { + dispatch (o.extender ()); + } + + void Extension:: + extender (Type const& o) + { + dispatch (o.extender ()); + } + + void Extension:: + extender_none (Type&) + { + } + + void Extension:: + extender_none (Type const&) + { + } + + void Extension:: + extenderID (Type& o) + { + dispatch (o.extenderID ()); + } + + void Extension:: + extenderID (Type const& o) + { + dispatch (o.extenderID ()); + } + + void Extension:: + extenderID_none (Type&) + { + } + + void Extension:: + extenderID_none (Type const&) + { + } + + void Extension:: + post (Type&) + { + } + + void Extension:: + post (Type const&) + { + } + } +} + +namespace XMI +{ + namespace Writer + { + // Extension + // + // + + Extension:: + Extension (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Extension:: + Extension () + { + } + + void Extension:: + traverse (Type const& o) + { + Traversal::Extension::traverse (o); + } + + void Extension:: + id (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("id"), ACE_TEXT ("http://www.omg.org/XMI"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::id (o); + attr_ (0); + } + + void Extension:: + label (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("label"), ACE_TEXT ("http://www.omg.org/XMI"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::label (o); + attr_ (0); + } + + void Extension:: + uuid (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("uuid"), ACE_TEXT ("http://www.omg.org/XMI"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::uuid (o); + attr_ (0); + } + + void Extension:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::href (o); + attr_ (0); + } + + void Extension:: + idref (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("idref"), ACE_TEXT ("http://www.omg.org/XMI"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::idref (o); + attr_ (0); + } + + void Extension:: + version (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("version"), ACE_TEXT ("http://www.omg.org/XMI"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::version (o); + attr_ (0); + } + + void Extension:: + extender (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("extender"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::extender (o); + attr_ (0); + } + + void Extension:: + extenderID (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("extenderID"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::Extension::extenderID (o); + attr_ (0); + } + } +} + +namespace XMI +{ + namespace writer + { + void + extension (::XMI::Extension const& s, xercesc::DOMDocument* d) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ()); + if (e.name () != ACE_TEXT ("extension")) + { + throw 1; + } + + struct W : virtual ::XMI::Writer::Extension, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >, + virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >, + virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + W (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + }; + + W w (e); + w.dispatch (s); + } + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMI.hpp b/modules/CIAO/DAnCE/Config_Handlers/XMI.hpp new file mode 100644 index 00000000000..143691b8d4a --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMI.hpp @@ -0,0 +1,397 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef XMI_HPP +#define XMI_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace XMI +{ + class Extension; +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +namespace XMI +{ + class XSC_XML_Handlers_Export Extension : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Extension, ACE_Null_Mutex > _ptr; + + // id + // + public: + bool id_p () const; + ::XMLSchema::ID< ACE_TCHAR > const& id () const; + ::XMLSchema::ID< ACE_TCHAR >& id (); + void id (::XMLSchema::ID< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + ::XMLSchema::string< ACE_TCHAR >& label (); + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // uuid + // + public: + bool uuid_p () const; + ::XMLSchema::string< ACE_TCHAR > const& uuid () const; + ::XMLSchema::string< ACE_TCHAR >& uuid (); + void uuid (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > uuid_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + // idref + // + public: + bool idref_p () const; + ::XMLSchema::IDREF< ACE_TCHAR > const& idref () const; + ::XMLSchema::IDREF< ACE_TCHAR >& idref (); + void idref (::XMLSchema::IDREF< ACE_TCHAR > const& ); + ::XSCRT::Type* idref_ptr (); + + + protected: + ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > idref_; + + // version + // + public: + bool version_p () const; + ::XMLSchema::string< ACE_TCHAR > const& version () const; + ::XMLSchema::string< ACE_TCHAR >& version (); + void version (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > version_; + + // extender + // + public: + bool extender_p () const; + ::XMLSchema::string< ACE_TCHAR > const& extender () const; + ::XMLSchema::string< ACE_TCHAR >& extender (); + void extender (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > extender_; + + // extenderID + // + public: + bool extenderID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& extenderID () const; + ::XMLSchema::string< ACE_TCHAR >& extenderID (); + void extenderID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > extenderID_; + + public: + Extension (); + + Extension (::XSCRT::XML::Element< ACE_TCHAR > const&); + Extension (Extension const& s); + + Extension& + operator= (Extension const& s); + + private: + char regulator__; + }; +} + +namespace XMI +{ + namespace reader + { + XSC_XML_Handlers_Export + ::XMI::Extension + extension (xercesc::DOMDocument const*); + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace XMI +{ + namespace Traversal + { + struct XSC_XML_Handlers_Export Extension : ::XMLSchema::Traversal::Traverser< ::XMI::Extension > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + id (Type&); + + virtual void + id (Type const&); + + virtual void + id_none (Type&); + + virtual void + id_none (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + uuid (Type&); + + virtual void + uuid (Type const&); + + virtual void + uuid_none (Type&); + + virtual void + uuid_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + idref (Type&); + + virtual void + idref (Type const&); + + virtual void + idref_none (Type&); + + virtual void + idref_none (Type const&); + + virtual void + version (Type&); + + virtual void + version (Type const&); + + virtual void + version_none (Type&); + + virtual void + version_none (Type const&); + + virtual void + extender (Type&); + + virtual void + extender (Type const&); + + virtual void + extender_none (Type&); + + virtual void + extender_none (Type const&); + + virtual void + extenderID (Type&); + + virtual void + extenderID (Type const&); + + virtual void + extenderID_none (Type&); + + virtual void + extenderID_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } +} + +#include "XMLSchema/Writer.hpp" + +namespace XMI +{ + namespace Writer + { + struct Extension : Traversal::Extension, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::XMI::Extension Type; + Extension (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + id (Type &o) + { + this->id (const_cast (o)); + } + + virtual void + id (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + uuid (Type &o) + { + this->uuid (const_cast (o)); + } + + virtual void + uuid (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + virtual void + idref (Type &o) + { + this->idref (const_cast (o)); + } + + virtual void + idref (Type const&); + + virtual void + version (Type &o) + { + this->version (const_cast (o)); + } + + virtual void + version (Type const&); + + virtual void + extender (Type &o) + { + this->extender (const_cast (o)); + } + + virtual void + extender (Type const&); + + virtual void + extenderID (Type &o) + { + this->extenderID (const_cast (o)); + } + + virtual void + extenderID (Type const&); + + protected: + Extension (); + }; + } +} + +namespace XMI +{ + namespace writer + { + XSC_XML_Handlers_Export + void + extension (::XMI::Extension const&, xercesc::DOMDocument*); + } +} + +#endif // XMI_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.hpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.hpp new file mode 100644 index 00000000000..24fa7a9eb6e --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.hpp @@ -0,0 +1,77 @@ +// file : XMLSchema/Traversal.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XMLSCHEMA_TRAVERSAL_HPP +#define XMLSCHEMA_TRAVERSAL_HPP + +#include +#include + +namespace XMLSchema +{ + namespace Traversal + { + // Automatic traversal of IDREFs. + // + // + struct IDREF : + XSCRT::Traversal::Traverser + { + virtual void + traverse (XMLSchema::IDREF_Base& r) + { + if (r.get ()) dispatch (*(r.get ())); + } + + virtual void + traverse (XMLSchema::IDREF_Base const& r) + { + if (r.get ()) dispatch (*(r.get ())); + } + }; + + + template + struct Traverser : XSCRT::Traversal::Traverser + { + }; + + typedef Traverser byte; + typedef Traverser unsignedByte; + + typedef Traverser short_; + typedef Traverser unsignedShort; + + typedef Traverser int_; + typedef Traverser unsignedInt; + + typedef Traverser long_; + typedef Traverser unsignedLong; + + typedef Traverser boolean; + + typedef Traverser float_; + typedef Traverser double_; + + template + struct string : Traverser > + { + }; + + template + struct ID : Traverser > + { + }; + + template + struct anyURI : Traverser > + { + }; + } +} + +#include +#include + +#endif // XMLSCHEMA_TRAVERSAL_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.ipp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.ipp new file mode 100644 index 00000000000..a5c614182a3 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.ipp @@ -0,0 +1,10 @@ +// file : XMLSchema/Traversal.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + namespace Traversal + { + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.tpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.tpp new file mode 100644 index 00000000000..d79c13630fb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Traversal.tpp @@ -0,0 +1,11 @@ +// file : XMLSchema/Traversal.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + namespace Traversal + { + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp new file mode 100644 index 00000000000..e4fa52dbb9c --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp @@ -0,0 +1,22 @@ +// file : XMLSchema/TypeInfo.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XMLSCHEMA_TYPE_INFO_HPP +#define XMLSCHEMA_TYPE_INFO_HPP + +#include + +namespace XMLSchema +{ + template + struct TypeInfoInitializer + { + TypeInfoInitializer (XSCRT::ExtendedTypeInfoMap&); + }; +} + +#include +#include + +#endif // XMLSCHEMA_TYPE_INFO_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp new file mode 100644 index 00000000000..5b9422f38c8 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp @@ -0,0 +1,7 @@ +// file : XMLSchema/TypeInfo.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp new file mode 100644 index 00000000000..918197937b7 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp @@ -0,0 +1,98 @@ +// file : XMLSchema/TypeInfo.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + //@@ VC6 + // + template + void + add_info (XSCRT::ExtendedTypeInfoMap& map, T*) + { + using XSCRT::TypeId; + using XSCRT::ExtendedTypeInfo; + + TypeId id (typeid (T)); + ExtendedTypeInfo info (id); + + info.add_base (ExtendedTypeInfo::Access::public_, + false, + typeid (XSCRT::Type)); + + map.insert (std::make_pair (id, info)); + } + + + template + inline + TypeInfoInitializer:: + TypeInfoInitializer (XSCRT::ExtendedTypeInfoMap& map) + { + using XSCRT::TypeId; + using XSCRT::ExtendedTypeInfo; + + // XSCRT::Type + // + { + TypeId id (typeid (XSCRT::Type)); + map.insert (std::make_pair (id, ExtendedTypeInfo (id))); + } + + //@@ VC6 + + add_info (map, 0); + add_info (map, 0); + + add_info (map, 0); + add_info (map, 0); + + add_info (map, 0); + add_info (map, 0); + + add_info (map, 0); + add_info (map, 0); + + add_info (map, 0); + + add_info (map, 0);; + add_info (map, 0); + + add_info > (map, 0); + + add_info > (map, 0); + add_info > (map, 0); + add_info > (map, 0); + add_info > (map, 0); + add_info > (map, 0); + add_info > (map, 0); + + add_info > (map, 0); + + // IDREF_Base + // + { + TypeId id (typeid (IDREF_Base)); + ExtendedTypeInfo info (id); + + info.add_base (ExtendedTypeInfo::Access::public_, + false, + typeid (XSCRT::Type)); + + map.insert (std::make_pair (id, info)); + } + + // IDREF + // + { + TypeId id (typeid (IDREF)); + ExtendedTypeInfo info (id); + + info.add_base (ExtendedTypeInfo::Access::public_, + false, + typeid (IDREF_Base)); + + map.insert (std::make_pair (id, info)); + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.hpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.hpp new file mode 100644 index 00000000000..9f4ea91f3c4 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.hpp @@ -0,0 +1,670 @@ +// file : XMLSchema/Types.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XMLSCHEMA_TYPES_HPP +#define XMLSCHEMA_TYPES_HPP + +#include +#include "XSCRT/Elements.hpp" + +#include "ace/Basic_Types.h" +/** + * @@ HACK: VC7 + * + * Disabled the warning about using this in the base member initialization section. + * Our use in this file is fine. + */ +#ifdef _MSC_VER +# pragma warning ( disable: 4355 ) +#endif +namespace XMLSchema +{ + typedef XSCRT::FundamentalType byte; + typedef XSCRT::FundamentalType unsignedByte; + + typedef XSCRT::FundamentalType short_; + typedef XSCRT::FundamentalType unsignedShort; + + typedef XSCRT::FundamentalType int_; + typedef XSCRT::FundamentalType unsignedInt; + + typedef XSCRT::FundamentalType long_; + typedef XSCRT::FundamentalType unsignedLong; + + //@@ It would be nice to use some arbitrary-length integer class. + // + typedef long_ decimal; + typedef decimal integer; + typedef integer nonPositiveInteger; + typedef integer nonNegativeInteger; + typedef nonNegativeInteger positiveInteger; + typedef nonPositiveInteger negativeInteger; + + + typedef XSCRT::FundamentalType boolean; + + typedef XSCRT::FundamentalType float_; + typedef XSCRT::FundamentalType double_; + + // Just to make GCC 3.3 and other broken compilers shutup. + // + using std::basic_string; + + + template + class string : public XSCRT::Type, public basic_string + { + protected: + typedef basic_string Base__ ; + + public: + // typedef ACE_Refcounted_Auto_Ptr < string, ACE_Null_Mutex > _ptr; + + //@@ VC6 does not inject XSCRT::Type into the scope so I have + // to qualify it all the time. + // + + string () + { + } + + string (XSCRT::XML::Element const& e) + : Base__ (e.value ()) + { + } + + string (XSCRT::XML::Attribute const& a) + : Base__ (a.value ()) + { + } + + string (Base__ const& x) + : Base__ (x) + { + } + + string (C const* x) + : Base__ (x) + { + } + + string& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class normalizedString : public string + { + protected: + typedef typename string::Base__ Base__; + + public: + normalizedString () + { + } + + normalizedString (XSCRT::XML::Element const& e) + : string (e) + { + } + + normalizedString (XSCRT::XML::Attribute const& a) + : string (a) + { + } + + normalizedString (Base__ const& x) + : string (x) + { + } + + normalizedString (C const* x) + : string (x) + { + } + + normalizedString& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class token : public normalizedString + { + protected: + typedef typename normalizedString::Base__ Base__; + + public: + token () + { + } + + token (XSCRT::XML::Element const& e) + : normalizedString (e) + { + } + + token (XSCRT::XML::Attribute const& a) + : normalizedString (a) + { + } + + token (Base__ const& x) + : normalizedString (x) + { + } + + token (C const* x) + : normalizedString (x) + { + } + + token& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class NMTOKEN : public token + { + protected: + typedef typename token::Base__ Base__; + + public: + NMTOKEN () + { + } + + NMTOKEN (XSCRT::XML::Element const& e) + : token (e) + { + } + + NMTOKEN (XSCRT::XML::Attribute const& a) + : token (a) + { + } + + NMTOKEN (Base__ const& x) + : token (x) + { + } + + NMTOKEN (C const* x) + : token (x) + { + } + + NMTOKEN& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + template + class Name: public token + { + protected: + typedef typename token::Base__ Base__; + + public: + Name() + { + } + + Name(XSCRT::XML::Element const& e) + : token (e) + { + } + + Name(XSCRT::XML::Attribute const& a) + : token (a) + { + } + + Name(Base__ const& x) + : token (x) + { + } + + Name (C const* x) + : token (x) + { + } + + Name& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class NCName: public Name + { + protected: + typedef typename Name::Base__ Base__; + + public: + NCName() + { + } + + NCName(XSCRT::XML::Element const& e) + : Name (e) + { + } + + NCName(XSCRT::XML::Attribute const& a) + : Name (a) + { + } + + NCName(Base__ const& x) + : Name (x) + { + } + + NCName (C const* x) + : Name (x) + { + } + + NCName& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + template + class QName: public Name + { + protected: + typedef typename Name::Base__ Base__; + + public: + QName() + { + } + + QName(XSCRT::XML::Element const& e) + : Name (e) + { + } + + QName(XSCRT::XML::Attribute const& a) + : Name (a) + { + } + + QName(Base__ const& x) + : Name (x) + { + } + + QName (C const* x) + : Name (x) + { + } + + QName& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + template + struct IdentityProvider : XSCRT::IdentityProvider + { + IdentityProvider (NCName const& id) + : id_ (id) + { + } + + virtual ~IdentityProvider (void) + { + } + + virtual bool + before (XSCRT::IdentityProvider const& y) const + { + return id_ < dynamic_cast (y).id_; + } + + private: + NCName const& id_; + + private: + IdentityProvider (IdentityProvider const&); + + IdentityProvider& + operator= (IdentityProvider const&); + }; + + + template + class ID : public NCName + { + protected: + typedef typename NCName::Base__ Base__; + + public: + ~ID() + { + unregister_id (); + } + + ID () + : id_provider_ (*this) + { + } + + ID (XSCRT::XML::Element const& e) + : NCName (e), id_provider_ (*this) + { + } + + ID (XSCRT::XML::Attribute const& a) + : NCName (a), id_provider_ (*this) + { + } + + ID (ID const& x) + : NCName (x), id_provider_ (*this) + { + } + + ID (Base__ const& x) + : NCName (x), id_provider_ (*this) + { + } + + ID (C const* x) + : NCName (x), id_provider_ (*this) + { + } + + ID& + operator= (Base__ const& x) + { + unregister_id (); + + static_cast&>(*this) = x; + + register_id (); + + return *this; + } + + ID& + operator= (ID const& x) + { + unregister_id (); + + static_cast&>(*this) = static_cast const&>(x); + + register_id (); + + return *this; + } + + public: + using NCName::container; + + virtual void + container (XSCRT::Type* c) + { + unregister_id (); + + NCName::container (c); + + register_id (); + } + + private: + using NCName::empty; + using NCName::root; + + void + register_id () + { + if (NCName::container () != this && !empty ()) + { + //std::wcerr << "registering " << container () + // << " as '" << *this + // << "' on " << container () << std::endl; + NCName::container ()->register_id (id_provider_, + NCName::container ()); + } + } + + void + unregister_id () + { + if (NCName::container () != this && !empty ()) + { + //std::wcerr << "un-registering " << container () + // << " as '" << *this + // << "' on " << container () << std::endl; + NCName::container ()->unregister_id (id_provider_); + } + } + + private: + IdentityProvider id_provider_; + }; + + struct IDREF_Base : public XSCRT::Type + { + virtual XSCRT::Type const* + get () const = 0; + + virtual XSCRT::Type* + get () = 0; + }; + + template + class IDREF : public IDREF_Base + { + public: + typedef C CDR_Type__; + IDREF () + : id_provider_ (id_) + { + } + + IDREF (XSCRT::XML::Element const& e) + : id_ (e), id_provider_ (id_) + { + } + + IDREF (XSCRT::XML::Attribute const& a) + : id_ (a), id_provider_ (id_) + { + } + + IDREF (IDREF const& x) + : XMLSchema::IDREF_Base (), + id_ (x.id_), id_provider_ (id_) + { + } + + IDREF (basic_string const& id) + : id_ (id), id_provider_ (id_) + { + } + + IDREF (C const* id) + : id_ (id), id_provider_ (id_) + { + } + + IDREF& + operator= (IDREF const& x) + { + id_ = x.id_; + return *this; + } + + IDREF& + operator= (basic_string const& x) + { + id_ = x; + return *this; + } + + public: + NCName + id () const + { + return id_; + } + + public: + XSCRT::Type const* + operator-> () const + { + return get (); + } + + XSCRT::Type* + operator-> () + { + return get (); + } + + XSCRT::Type const& + operator* () const + { + return *(get ()); + } + + XSCRT::Type& + operator* () + { + return *(get ()); + } + + virtual XSCRT::Type const* + get () const + { + if (!id_.empty () && container () != this) + { + return root ()->lookup_id (id_provider_); + } + else + { + return 0; + } + } + + virtual XSCRT::Type* + get () + { + if (!id_.empty () && container () != this) + { + return root ()->lookup_id (id_provider_); + } + else + { + return 0; + } + } + + // conversion to bool + // + typedef void (IDREF::*bool_convertable)(); + + operator bool_convertable () const + { + return get () ? &IDREF::true_ : 0; + } + + private: + void true_ () + { + } + + private: + NCName id_; + IdentityProvider id_provider_; + }; + + template + class anyURI : public XSCRT::Type, public basic_string + { + protected: + typedef basic_string Base__ ; + + public: + // Trait for marshaling string + typedef C CDR_Type__; + + //@@ VC6 does not inject XSCRT::Type into the scope so I have + // to qualify it all the time. + // + + anyURI (void) + { + } + + anyURI (XSCRT::XML::Element const& e) + : Base__ (e.value ()) + { + } + + anyURI (XSCRT::XML::Attribute const& a) + : Base__ (a.value ()) + { + } + + anyURI (Base__ const& x) + : Base__ (x) + { + } + + anyURI (C const * x) + : Base__ (x) + { + } + + anyURI (const anyURI& s) + : Base__ (s) + { + + } + + anyURI & operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; +} + +#include "XMLSchema/Types.ipp" +#include "XMLSchema/Types.tpp" + +#endif // XMLSCHEMA_TYPES_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.ipp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.ipp new file mode 100644 index 00000000000..6b749260f55 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.ipp @@ -0,0 +1,8 @@ +// file : XMLSchema/Types.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.tpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.tpp new file mode 100644 index 00000000000..4a8bddcf597 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Types.tpp @@ -0,0 +1,9 @@ +// file : XMLSchema/Types.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.hpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.hpp new file mode 100644 index 00000000000..4a0c1603efa --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.hpp @@ -0,0 +1,159 @@ +// file : XMLSchema/Writer.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XMLSCHEMA_WRITER_HPP +#define XMLSCHEMA_WRITER_HPP + +#include + +#include + +#include +#include + +#include + +namespace XMLSchema +{ + namespace Writer + { + template + struct FundamentalType : Traversal::Traverser, + virtual XSCRT::Writer + { + FundamentalType (XSCRT::XML::Element& e) + : XSCRT::Writer (e) + { + } + + using XSCRT::Writer::top_; + using XSCRT::Writer::attr_; + + virtual void + traverse (T const& o) + { + using namespace XSCRT::XML; + + std::basic_ostringstream os; + + os << o; + + if (Attribute* a = attr_ ()) + { + a->value (os.str ()); + } + else + { + top_().value (os.str ()); + } + } + + protected: + virtual void + traverse (T &t) + { + Traversal::Traverser::traverse (t); + } + + FundamentalType () + { + } + }; + + template + struct FundamentalType , C> : + Traversal::Traverser >, + virtual XSCRT::Writer + { + FundamentalType (XSCRT::XML::Element &e) + : XSCRT::Writer (e) + { + } + + using XSCRT::Writer::top_; + using XSCRT::Writer::attr_; + + virtual void + traverse (XSCRT::FundamentalType const &o) + { + using namespace XSCRT::XML; + + std::basic_ostringstream os; + + if (o) + { + os << "true"; + } + else + { + os << "false"; + } + + if (Attribute* a = attr_ ()) + { + a->value (os.str ()); + } + else + { + top_().value (os.str ()); + } + } + + protected: + virtual void + traverse (XSCRT::FundamentalType &t) + { + Traversal::Traverser >::traverse (t); + } + + FundamentalType () + { + } + }; + + + template + struct IDREF : Traversal::Traverser >, + virtual XSCRT::Writer + { + IDREF (XSCRT::XML::Element& e) + : XSCRT::Writer (e) + { + } + + virtual void + traverse ( + typename Traversal::Traverser >::Type const& o) + { + using namespace XSCRT::XML; + + if (Attribute* a = XSCRT::Writer::attr_ ()) + { + a->value (o.id ()); + } + else + { + XSCRT::Writer::top_().value (o.id ()); + } + } + + protected: + + virtual void + traverse (typename Traversal::Traverser >::Type &o) + { + Traversal::Traverser >::traverse (o); + } + + IDREF () + { + } + }; + } +} + +#include +#include + +#endif // XMLSCHEMA_WRITER_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.ipp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.ipp new file mode 100644 index 00000000000..2b7c9a4b939 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.ipp @@ -0,0 +1,10 @@ +// file : XMLSchema/Writer.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + namespace Writer + { + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.tpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.tpp new file mode 100644 index 00000000000..6c57de04d81 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/Writer.tpp @@ -0,0 +1,10 @@ +// file : XMLSchema/Writer.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XMLSchema +{ + namespace Writer + { + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/id_map.hpp b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/id_map.hpp new file mode 100644 index 00000000000..a2843d44693 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XMLSchema/id_map.hpp @@ -0,0 +1,138 @@ +// -*- C++ -*- +// $Id$ + +//============================================================================= +/** + * @file id_map.hpp + * + * This file contains the ID_Map class which has the responsibility of linking + * XML IDREF objects to their XML ID counterparts. In the output files, this + * means that a _ptr() will return a pointer to the identified + * object. + * + * Exception NULL_PTR_Entry is thrown when a program attempts to add a NULL_PTR + * to either the id_map or idref_map. + * + * Exception Unresolved_IDREF is thrown if an element in an XML document attempts + * to reference an ID that does not exist. + * + * @author Jason R. Cody + */ +//============================================================================= + +#ifndef _ID_MAP_H +#define _ID_MAP_H + +//ID_Map makes use of the Types::idref_ data member to set it to the appropriate +//object created during parsing +#include "XMLSchema/Types.hpp" + +//The ID_Map is a Thread Specific Storage element. +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" + + /** + * @class ID_Map + * + * @brief A class that handles the mapping of IDREF objects to objects with the + * respective ID. + */ + class ID_Map + { + public: + + //Trait to allow for ease of thread specific storage. + typedef ACE_TSS TSS_ID_Map; + typedef std::map, XSCRT::Type*>::iterator id_iterator; + typedef std::multimap, XSCRT::Type*>::iterator idref_iterator; + typedef std::map, XSCRT::Type*> ID_MAP; + typedef std::multimap, XSCRT::Type*> IDREF_MAP; + + + //Exception Classes + //NULL_PTR_Entry thrown when a NULL PTR is added to the + //ID_Map + class NULL_PTR_Entry {}; + + //Unresolved_IDREF thrown when there are IDREF's in the + //XML document. + class Unresolved_IDREF {}; + + //Only a default constructor and destructor are needed + //Constructor + ID_Map () + { + } + + //Destructor + ~ID_Map () + { + } + + //Add an ID to the ID map + void add_id (std::basic_string id, XSCRT::Type *obj_ref) + { + if (obj_ref) + { + this->id_map_.insert (ID_MAP::value_type(id, obj_ref)); + } + else + { + throw NULL_PTR_Entry(); + } + return; + } + + //Add an IDREF to the IDREF map + void add_idref (std::basic_string idref, XSCRT::Type *obj_ref) + { + if (obj_ref) + { + this->idref_map_.insert (IDREF_MAP::value_type(idref, obj_ref)); + } + else + { + throw NULL_PTR_Entry(); + } + return; + } + + //Sets the referencing elements XSCRT::Type::idref_ to point to the + //referenced element. + //Note: The pointer is of type "XSCRT::Type*" + void resolve_idref ( void ) + { + //Declare iterators to navigate the maps + ID_Map::id_iterator id_iterator; + ID_Map::idref_iterator idref_iterator; + + for (idref_iterator = this->idref_map_.begin(); + idref_iterator != this->idref_map_.end(); + ++idref_iterator) + { + //Find the ID that matches the IDREF element + id_iterator = this->id_map_.find(idref_iterator->first); + if (id_iterator != this->id_map_.end()) + { + //Add the IDREF identifier and the reference to the + //identified object + std::basic_string temp_id = id_iterator->first; + idref_iterator->second->set_idref(temp_id, id_iterator->second); + } + else + { + //throw Unresolved_IDREF(); + } + } + } + + private: + //id_map_: maps the ID string to the element with the + // ID attribute + //idref_map_: multimap that maps the IDREF string to the + // element with the IDREF attribute + ID_MAP id_map_; + IDREF_MAP idref_map_; + }; + +#endif /* _ID_MAP_HPP */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp b/modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp new file mode 100644 index 00000000000..b44f31c452a --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp @@ -0,0 +1,103 @@ +// $Id$ + +#include "XML_File_Intf.h" +#include "XML_Typedefs.h" +#include "Deployment.hpp" +#include "DP_Handler.h" +#include "Common.h" + +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Config_Handlers + { + XML_File_Intf::XML_File_Intf (const ACE_TCHAR *file) + : file_ (file), + idl_dp_ (0) + { + } + + bool + XML_File_Intf::read_process_file (const ACE_TCHAR *file) + { + DANCE_TRACE("XML_File_Intf::read_process_file"); + + try + { + if (!XML_Helper::XML_HELPER.is_initialized ()) + return false; + + DANCE_DEBUG (6, (LM_TRACE, DLINFO "XML_File_Intf::read_process_file - " + "Constructing DOM\n")); + XERCES_CPP_NAMESPACE::DOMDocument *dom = + XML_Helper::XML_HELPER.create_dom ((file)); + + if (dom == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "XML_File_Intf::read_process_file - " + "Failed to open file %s\n", file)); + return false; + } + + XERCES_CPP_NAMESPACE::DOMElement *foo = dom->getDocumentElement (); + DANCE_DEBUG (6, (LM_TRACE, DLINFO "XML_File_Intf::read_process_file - " + "DOMElement pointer: %u\n", foo)); + + DANCE_DEBUG (6, (LM_TRACE, DLINFO "XML_File_Intf::read_process_file - " + "Parsing XML file with XSC\n")); + deploymentPlan dp = + CIAO::Config_Handlers::reader::DeploymentPlan (dom); + + DANCE_DEBUG (6, (LM_TRACE, DLINFO "XML_File_Intf::read_process_file - " + "Processing using config handlers\n")); + DP_Handler dp_handler (dp); + + this->idl_dp_.reset (dp_handler.plan ()); + + if (this->idl_dp_.get ()) + return true; + } + catch (const Config_Error &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "XML_File_Intf::error at %C: %C\n", + ex.name_.c_str (), ex.error_.c_str ())); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "XML_File_Intf::caught - " + "Unexpected exception whilst parsing XML into IDL.\n")); + } + + return false; + } + + ::Deployment::DeploymentPlan const * + XML_File_Intf::get_plan (void) + { + DANCE_TRACE("get_plan"); + if (this->idl_dp_.get () == 0 && !this->read_process_file (this->file_.c_str ())) + return 0; + + return this->idl_dp_.get (); + } + + ::Deployment::DeploymentPlan * + XML_File_Intf::release_plan (void) + { + DANCE_TRACE("XML_File_Intf::get_plan"); + if (this->idl_dp_.get () == 0 && !this->read_process_file (this->file_.c_str ())) + return 0; + return this->idl_dp_.release (); + } + + void + XML_File_Intf::add_search_path (const ACE_TCHAR *environment, + const ACE_TCHAR *relpath) + { + XML_Helper::_path_resolver.add_path (environment, relpath); + } + + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.h b/modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.h new file mode 100644 index 00000000000..95fb1dc2df7 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XML_File_Intf.h @@ -0,0 +1,56 @@ +//============================================================== +/** + * @file XML_File_Intf.h + * + * $Id$ + * + * @author Bala Natarajan + */ +//================================================================ + +#ifndef CIAO_CONFIG_XML_FILE_INTF_H +#define CIAO_CONFIG_XML_FILE_INTF_H +#include /**/ "ace/pre.h" + +#include "Config_Handlers_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Auto_Ptr.h" + +#include + +namespace Deployment +{ + struct DeploymentPlan; +} + +namespace CIAO +{ + namespace Config_Handlers + { + class Config_Handlers_Export XML_File_Intf + { + public: + XML_File_Intf (const ACE_TCHAR *file); + + ::Deployment::DeploymentPlan const *get_plan (void); + ::Deployment::DeploymentPlan *release_plan (void); + + void add_search_path (const ACE_TCHAR *environment, + const ACE_TCHAR *relpath); + + protected: + + bool read_process_file (const ACE_TCHAR *file); + + private: + std::basic_string file_; + ACE_Auto_Ptr< ::Deployment::DeploymentPlan> idl_dp_; + }; + } +} +#include /**/ "ace/post.h" +#endif /*CIAO_CONFIG_XML_FILE_INTF_H*/ diff --git a/modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.cpp b/modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.cpp new file mode 100644 index 00000000000..9d57ac17e92 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.cpp @@ -0,0 +1,14 @@ +// $Id$ + +#include "XML_Typedefs.h" + +namespace CIAO +{ + namespace Config_Handlers + { + XML_Helper::PATH_RESOLVER XML_Helper::_path_resolver; + XML_Helper::XML_RESOLVER XML_Helper::_xml_resolver (XML_Helper::_path_resolver); + XML_Helper::ERROR_HANDLER XML_Helper::_xml_error_handler; + XML_Helper::HELPER XML_Helper::XML_HELPER (XML_Helper::_xml_resolver, XML_Helper::_xml_error_handler); + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.h b/modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.h new file mode 100644 index 00000000000..f0054df2e57 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XML_Typedefs.h @@ -0,0 +1,38 @@ +/** + * @file XML_Typedefs.h + * @author William R. Otte + * $Id$ + * Typedefs from the XML Utilities. + */ +#ifndef XML_TYPEDEFS_H +#define XML_TYPEDEFS_H + +#include "XSC_XML_Handlers_Export.h" +#include "XML/XML_Helper.h" +#include "XML/XML_Schema_Resolver.h" +#include "XML/XML_Error_Handler.h" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export XML_Helper + { + public: + typedef ::CIAO::XML::Environment_Resolver PATH_RESOLVER; + typedef ::CIAO::XML::XML_Schema_Resolver< ::CIAO::XML::Environment_Resolver > XML_RESOLVER; + typedef ::CIAO::XML::XML_Error_Handler ERROR_HANDLER; + typedef ::CIAO::XML::XML_Helper< XML_RESOLVER, ERROR_HANDLER > HELPER; + + static PATH_RESOLVER _path_resolver; + static XML_RESOLVER _xml_resolver; + static ERROR_HANDLER _xml_error_handler; + + public: + static HELPER XML_HELPER; + }; + } +} + + +#endif /* XML_TYPEDEFS_H */ diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.hpp new file mode 100644 index 00000000000..0c8b6979282 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.hpp @@ -0,0 +1,572 @@ +// file : XSCRT/Elements.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XSCRT_ELEMENTS_HPP +#define XSCRT_ELEMENTS_HPP + +#include +#include +#include +#include "ace/ace_wchar.h" +// #include //@@ tmp + +#include +#include "ace/Refcounted_Auto_Ptr.h" + +namespace XSCRT +{ + struct IdentityProvider + { + virtual bool + before (IdentityProvider const&) const = 0; + + virtual ~IdentityProvider (void) + { + + } + }; + + class Type + { + public: + + virtual ~Type (void) + { + } + + protected: + Type (void) + : container_ (0) + { + } + + template + Type (XML::Element const&) + : container_ (0) + { + } + + template + Type (XML::Attribute const&) + : container_ (0) + { + } + + Type (Type const&) + : container_ (0) + { + } + + Type& + operator= (Type const&) + { + //@@ I don't need this. + //if (map_.get ()) map_->clear (); // Flush the map. + return *this; + } + + public: + Type const* + container () const + { + return container_ ? container_ : this; + } + + Type* + container () + { + return container_ ? container_ : this; + } + + + Type const* + root () const + { + Type const* r = container (); + + //@@ VC6 can't handle this inside the loop. + // + Type const* c = r->container (); + + for (; c != r; c = c->container ()) r = c; + + return r; + } + + Type* + root () + { + Type* r = container (); + + for (Type* c = r->container (); c != r; c = c->container ()) r = c; + + return r; + } + + //@@ + //protected: + + public: + virtual void + container (Type* c) + { + if (container_ == c) return; + + // Revoke registrations from our old container. + // + if (container_ != 0 && map_.get ()) + { + for (Map_::iterator i (map_->begin ()); i != map_->end (); ++i) + { + //std::wcerr << "revoking " << i->second + // << " to " << container_ << std::endl; + + container_->unregister_id (*(i->first)); + } + } + + // Copy registrations to our new container. + // + if (c != 0 && map_.get ()) + { + for (Map_::iterator i (map_->begin ()); i != map_->end (); ++i) + { + //std::wcerr << "copying " << i->second + // << " to " << c << std::endl; + + c->register_id (*(i->first), i->second); + } + } + + container_ = c; + } + + //@@ + //protected: + + public: + void + register_id (IdentityProvider const& id, Type* t) + { + if (map_.get () == 0) + { + map_ = std::auto_ptr (new Map_); + } + + if (!map_->insert ( + std::pair (&id, t)).second) + { + throw 1; + } + + if (container () != this) container ()->register_id (id, t); + } + + void + unregister_id (IdentityProvider const& id) + { + if (map_.get ()) + { + Map_::iterator it (map_->find (&id)); + + if (it != map_->end ()) + { + map_->erase (it); + + if (container () != this) container ()->unregister_id (id); + + return; + } + } + + throw 1; + } + + Type* + lookup_id (IdentityProvider const& id) const + { + if (map_.get ()) + { + Map_::const_iterator it (map_->find (&id)); + + if (it != map_->end ()) + { + return it->second; + } + } + + return 0; + } + + //Get and set methods for the idref_map_ data member + Type* get_idref (const char* name) + { + std::basic_string name_string (ACE_TEXT_CHAR_TO_TCHAR(name)); + std::map, XSCRT::Type*>::iterator i = + this->idref_map_.find(name_string); + if (i != idref_map_.end()) + { + return i->second; + } + else + { + return 0; + } + } + + Type* get_idref (const wchar_t *name) + { + std::basic_string name_string (ACE_TEXT_WCHAR_TO_TCHAR(name)); + std::map, XSCRT::Type*>::iterator i = + this->idref_map_.find(name_string); + if (i != idref_map_.end()) + { + return i->second; + } + else + { + return 0; + } + } + + + void set_idref (std::basic_string name, Type* new_idref) + { + this->idref_map_.insert(std::pair,Type*>(name, new_idref)); + return; + } + + private: + + //Data member to handle unbounded IDREF attributes and elements + std::map, XSCRT::Type*> idref_map_; + + Type* container_; + + struct IdentityComparator + { + bool operator () (IdentityProvider const* x, + IdentityProvider const* y) const + { + return x->before (*y); + } + }; + + typedef + std::map + Map_; + + std::auto_ptr map_; + }; + + // Fundamental types template. + // + // + template + class FundamentalType : public Type + { + public: + // Trait for marshaling a FundamentalType X + typedef X CDR_Type__; +#if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x620) + typedef ACE_Refcounted_Auto_Ptr < FundamentalType, ACE_Null_Mutex > _ptr; +#endif /* !__BORLANDC__ */ + + FundamentalType () + { + } + + template + FundamentalType (XML::Element const& e) + { + std::basic_stringstream s; + s << e.value (); + s >> x_; + } + + template + FundamentalType (XML::Attribute const& a) + { + std::basic_stringstream s; + s << a.value (); + s >> x_; + } + + FundamentalType (X const& x) + : x_ (x) + { + } + + FundamentalType& + operator= (X const& x) + { + x_ = x; + return *this; + } + + public: + operator X const& () const + { + return x_; + } + + operator X& () + { + return x_; + } + + protected: + X x_; + }; + +#if !((defined (__GNUC__) && (__GNUC__ == 3 && (__GNUC_MINOR__ < 3))) || \ + (defined (__BORLANDC__) && (__BORLANDC__ < 0x620)) || \ + (defined (__SUNPRO_CC) && (__SUNPRO_CC <= 0x5100))) + + // Stuff for normal compilers. + // + + // Specialization for `signed char' + // + // + template<> + template + inline + FundamentalType:: + FundamentalType (XML::Element const& e) + { + std::basic_stringstream s; + s << e.value (); + + short t; + s >> t; + + x_ = static_cast (t); + } + + template<> + template + inline + FundamentalType:: + FundamentalType (XML::Attribute const& a) + { + std::basic_stringstream s; + s << a.value (); + + short t; + s >> t; + + x_ = static_cast (t); + } + + // Specialization for `unsigned char' + // + // + template<> + template + inline + FundamentalType:: + FundamentalType (XML::Element const& e) + { + std::basic_stringstream s; + s << e.value (); + + unsigned short t; + s >> t; + + x_ = static_cast (t); + } + + template<> + template + inline + FundamentalType:: + FundamentalType (XML::Attribute const& a) + { + std::basic_stringstream s; + s << a.value (); + + unsigned short t; + s >> t; + + x_ = static_cast (t); + } + +#else + + // Stuff for broken VC6 & gcc < 3.3. Don't like what you see - use better + // compiler! + // + + // Specialization for signed char. + // + template <> + class FundamentalType : public Type + { + public: + FundamentalType () + { + } + + template + FundamentalType (XML::Element const& e) + { + std::basic_stringstream s; + s << e.value (); + + short t; + s >> t; + + x_ = static_cast (t); + } + + template + FundamentalType (XML::Attribute const& a) + { + std::basic_stringstream s; + s << a.value (); + + short t; + s >> t; + + x_ = static_cast (t); + } + + FundamentalType (signed char const& x) + : x_ (x) + { + } + + FundamentalType& + operator= (signed char const& x) + { + x_ = x; + return *this; + } + + public: + operator signed char const& () const + { + return x_; + } + + operator signed char& () + { + return x_; + } + + protected: + signed char x_; + }; + + // Specialization for unsigned char. + // + template <> + class FundamentalType : public Type + { + public: + FundamentalType () + { + } + + template + FundamentalType (XML::Element const& e) + { + std::basic_stringstream s; + s << e.value (); + + unsigned short t; + s >> t; + + x_ = static_cast (t); + } + + template + FundamentalType (XML::Attribute const& a) + { + std::basic_stringstream s; + s << a.value (); + + unsigned short t; + s >> t; + + x_ = static_cast (t); + } + + FundamentalType (unsigned char const& x) + : x_ (x) + { + } + + FundamentalType& + operator= (unsigned char const& x) + { + x_ = x; + return *this; + } + + public: + operator unsigned char const& () const + { + return x_; + } + + operator unsigned char& () + { + return x_; + } + + protected: + unsigned char x_; + }; + +#endif + + + // Specialization for bool. + // + // + + template<> + template<> + inline + FundamentalType:: + FundamentalType (XML::Element const& e) + { + x_ = (e.value () == "true") || (e.value () == "1"); + } + + template<> + template<> + inline + FundamentalType:: + FundamentalType (XML::Element const& e) + { + x_ = (e.value () == L"true") || (e.value () == L"1"); + } + + template<> + template<> + inline + FundamentalType:: + FundamentalType (XML::Attribute const& a) + { + x_ = (a.value () == "true") || (a.value () == "1"); + } + + template<> + template<> + inline + FundamentalType:: + FundamentalType (XML::Attribute const& a) + { + x_ = (a.value () == L"true") || (a.value () == L"1"); + } + +} + +#include +#include + +#endif // XSCRT_ELEMENTS_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.ipp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.ipp new file mode 100644 index 00000000000..414f03eb031 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.ipp @@ -0,0 +1,7 @@ +// file : XSC/Elements.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSC +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.tpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.tpp new file mode 100644 index 00000000000..7539a36d75f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Elements.tpp @@ -0,0 +1,7 @@ +// file : XSC/Elements.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSC +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp new file mode 100644 index 00000000000..e2ab4b64956 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp @@ -0,0 +1,182 @@ +// file : XSCRT/ExtendedTypeInfo.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XSCRT_EXTENDED_TYPE_INFO_HPP +#define XSCRT_EXTENDED_TYPE_INFO_HPP + +#include +#include +#include + +namespace XSCRT +{ + // + // + // + class TypeId + { + public: + template + TypeId (T const& t); + + TypeId (std::type_info const& tid); + + public: + bool + operator == (TypeId const& other) const; + + bool + operator != (TypeId const& other) const; + + bool + operator < (TypeId const& other) const; + + /* + friend std::ostream& + operator << (std::ostream& os, TypeId const& t); + */ + + public: + char const* + name () const + { + return tid_->name (); + } + + private: + std::type_info const* tid_; + }; + + + // + // + // + class ExtendedTypeInfo + { + public: + + // + // + // + struct Access + { + enum Value + { + private_, + protected_, + public_ + }; + }; + + + // + // + // + class BaseInfo + { + public: + BaseInfo (Access::Value access, bool virtual_base, TypeId const& tid); + + public: + ExtendedTypeInfo const& + type_info () const; + + Access::Value + access () const; + + bool + virtual_base () const; + + private: + TypeId tid_; + mutable ExtendedTypeInfo const* ti_; + bool virtual_base_; + Access::Value access_; + }; + + private: + typedef + std::vector + BaseInfoList; + + public: + typedef + BaseInfoList::const_iterator + BaseIterator; + + public: + ExtendedTypeInfo (TypeId const& tid); + + TypeId + type_id () const; + + BaseIterator + begin_base () const; + + BaseIterator + end_base () const; + + void + add_base (Access::Value access, bool virtual_base, TypeId const& tid); + + private: + TypeId tid_; + BaseInfoList base_; + }; + + typedef + std::map + ExtendedTypeInfoMap; + + + ExtendedTypeInfoMap& + extended_type_info_map (); + + + class NotAvailable {}; + + + template + ExtendedTypeInfo const& + extended_type_info (T const& t) + { + return extended_type_info (typeid (t)); + } + + template + ExtendedTypeInfo const& + extended_type_info () + { + return extended_type_info (typeid (T)); + } + + //@@ Had to use function template specialization because VC6 + // cannot handle simply overloaded functions. + // + + template <> + inline + ExtendedTypeInfo const& + extended_type_info (TypeId const& tid) + { + ExtendedTypeInfoMap::const_iterator i ( + extended_type_info_map ().find (tid)); + + if (i == extended_type_info_map ().end ()) throw NotAvailable (); + + return i->second; + } + + template <> + inline + ExtendedTypeInfo const& + extended_type_info (std::type_info const& tid) + { + return extended_type_info (TypeId (tid)); + } +} + +#include + +#endif // XSCRT_EXTENDED_TYPE_INFO_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp new file mode 100644 index 00000000000..6c4fba2cf88 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp @@ -0,0 +1,141 @@ +// file : XSCRT/ExtendedTypeInfo.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + + +/* + * @@HACK: Visual Studio. + * I think the return value for operator== for type_info + * in VC7 (perhaps others) is int when is should be bool. + * This causes a warning about converting the return value from + * int to bool. + */ +#ifdef _MSC_VER +# pragma warning( disable: 4800 ) +#endif + +namespace XSCRT +{ + // TypeId + // + // + inline + TypeId:: + TypeId (std::type_info const& tid) + : tid_ (&tid) + { + } + + inline + bool TypeId:: + operator == (TypeId const& other) const + { + return *tid_ == *other.tid_; + } + + inline + bool TypeId:: + operator != (TypeId const& other) const + { + return *tid_ != *other.tid_; + } + + inline + bool TypeId:: + operator < (TypeId const& other) const + { + return tid_->before (*other.tid_); + } + + + // ExtendedTypeInfo::BaseInfo + // + // + + inline + ExtendedTypeInfo::BaseInfo:: + BaseInfo (Access::Value access, bool virtual_base, TypeId const& tid) + : tid_ (tid), + ti_ (0), + virtual_base_ (virtual_base), + access_ (access) + { + } + + inline + ExtendedTypeInfo const& ExtendedTypeInfo::BaseInfo:: + type_info () const + { + if (ti_ == 0) ti_ = &(extended_type_info (tid_)); + + return *ti_; + } + + + inline + ExtendedTypeInfo::Access::Value ExtendedTypeInfo::BaseInfo:: + access () const + { + return access_; + } + + inline + bool ExtendedTypeInfo::BaseInfo:: + virtual_base () const + { + return virtual_base_; + } + + + // ExtendedTypeInfo + // + // + inline + ExtendedTypeInfo:: + ExtendedTypeInfo (TypeId const& tid) + : tid_ (tid) + { + } + + inline + TypeId ExtendedTypeInfo:: + type_id () const + { + return tid_; + } + + inline + ExtendedTypeInfo::BaseIterator ExtendedTypeInfo:: + begin_base () const + { + return base_.begin (); + } + + + inline + ExtendedTypeInfo::BaseIterator ExtendedTypeInfo:: + end_base () const + { + return base_.end (); + } + + inline + void ExtendedTypeInfo:: + add_base (Access::Value access, bool virtual_base, TypeId const& tid) + { + base_.push_back (BaseInfo (access, virtual_base, tid)); + } + + // ExtendedTypeInfoMap + // + // + + inline + ExtendedTypeInfoMap& + extended_type_info_map () + { + static ExtendedTypeInfoMap extended_type_info_map_; + + return extended_type_info_map_; + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.hpp new file mode 100644 index 00000000000..5fa1e827f8d --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.hpp @@ -0,0 +1,67 @@ +// file : XSCRT/Parser.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XSCRT_PARSER_HPP +#define XSCRT_PARSER_HPP + +#include + +#include "XSCRT/XML.hpp" + +namespace XSCRT +{ + template + class Parser + { + public: + Parser (XML::Element const& e) + : e_ (e.dom_element ()->getChildNodes ()), ei_ (0), + a_ (e.dom_element ()->getAttributes ()), ai_ (0) + { + } + + bool + more_elements () const + { + return e_->getLength () > ei_; + } + + XML::Element + next_element () + { + return XML::Element (XML::dom_cast (e_->item (ei_++))); + } + + bool + more_attributes () const + { + return a_->getLength () > ai_; + } + + XML::Attribute + next_attribute () + { + return XML::Attribute ( + XML::dom_cast (a_->item (ai_++))); + } + + private: + xercesc::DOMNodeList const* e_; + unsigned long ei_; + + xercesc::DOMNamedNodeMap const* a_; + unsigned long ai_; + + private: + Parser (Parser const&); + + void + operator= (Parser const&); + }; +} + +#include "XSCRT/Parser.ipp" +#include "XSCRT/Parser.tpp" + +#endif // XSCRT_PARSER_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.ipp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.ipp new file mode 100644 index 00000000000..f7de09602ae --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.ipp @@ -0,0 +1,7 @@ +// file : XSCRT/Parser.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.tpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.tpp new file mode 100644 index 00000000000..75b9f48eb1f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Parser.tpp @@ -0,0 +1,7 @@ +// file : XSCRT/Parser.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp new file mode 100644 index 00000000000..482d5fc77e1 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp @@ -0,0 +1,266 @@ +// file : XSCRT/Traversal.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XSCRT_TRAVERSAL_HPP +#define XSCRT_TRAVERSAL_HPP + +#include +#include +#include + +#include "XSCRT/ExtendedTypeInfo.hpp" + +namespace XSCRT +{ + namespace Traversal + { + // + // + // + template + class TraverserBase + { + protected: + virtual + ~TraverserBase (); + + //@@ VC6 + public: + virtual void + trampoline (B& n) = 0; + + virtual void + trampoline (B const& n) = 0; + }; + + + // + // + // + template + class DispatcherBase + { + public: + virtual + ~DispatcherBase (); + + virtual void + dispatch (B& n); + + virtual void + dispatch (B const& n); + + void + map (TypeId id, TraverserBase& t) + { + //wcerr << "map for " << id.name () << " to " << &t + // << " in " << &traversal_map_ << endl; + + //@@ VC6 + Traversers& traversers = traversal_map_[id]; + traversers.push_back (&t); + } + + public: + typedef + std::vector*> + Traversers; + + typedef + std::map + TraversalMap; + + typedef + typename TraversalMap::const_iterator + Iterator; + + Iterator + begin () const + { + return traversal_map_.begin (); + } + + Iterator + end () const + { + return traversal_map_.end (); + } + + private: + struct TypeInfoComparator + { + bool + operator () (ExtendedTypeInfo const& x, + ExtendedTypeInfo const& y) const + { + return x.type_id () < y.type_id (); + } + }; + + typedef + std::map + LevelMap; + + typedef + std::set + TypeInfoSet; + + static unsigned long + compute_levels (ExtendedTypeInfo const& ti, + unsigned long cur, + LevelMap& map); + + static void + flatten_tree (ExtendedTypeInfo const& ti, TypeInfoSet& set); + + private: + TraversalMap traversal_map_; + }; + + + // + // + // + template + class Dispatcher : public virtual DispatcherBase + { + public: + Dispatcher () + : merge_ (true) + { + } + + void + traverser (DispatcherBase& d) + { + for (typename DispatcherBase::Iterator + i (d.begin ()), end (d.end ()); + i != end; ++i) + { + for (typename DispatcherBase::Traversers::const_iterator + t (i->second.begin ()), end (i->second.end ()); + t != end; ++t) + { + dispatcher_.map (i->first, **t); + } + } + } + + public: + virtual void + dispatch (B& n) + { + merge (); + dispatcher_.dispatch (n); + } + + virtual void + dispatch (B const& n) + { + merge (); + dispatcher_.dispatch (n); + } + + using DispatcherBase::begin; + using DispatcherBase::end; + + private: + void + merge () + { + if (merge_) + { + for (typename DispatcherBase::Iterator + i (begin ()), e (end ()); i != e; ++i) + { + for (typename DispatcherBase::Traversers::const_iterator + t (i->second.begin ()), e (i->second.end ()); t != e; ++t) + { + dispatcher_.map (i->first, **t); + } + } + + merge_ = false; + } + } + + protected: + // DispatcherBase& + // traverser () + // { + // return dispatcher_; + // } + + template + void + iterate_and_dispatch (I begin, I end, X& x, void (X::*next)(A&), A& a) + { + for (; begin != end;) + { + dispatch (*begin); + + if (++begin != end) (x.*next) (a); + } + } + + private: + bool merge_; + DispatcherBase dispatcher_; + }; + + + + // + // + // + template + struct Traverser : TraverserBase, virtual Dispatcher + { + typedef + T + Type; + + Traverser () + { + map (typeid (Type), *this); + } + + virtual void + traverse (Type&) + { + abort (); + } + + virtual void + traverse (Type const&) + { + abort (); + } + + protected: + virtual void + trampoline (B& n) + { + //wcerr << "trampoline for " << &n << " to type " + // << typeid (Type).name () << endl; + + traverse (dynamic_cast (n)); + } + + virtual void + trampoline (B const& n) + { + //wcerr << "trampoline for " << &n << " to type " + // << typeid (Type).name () << endl; + + traverse (dynamic_cast (n)); + } + }; + } +} + +#include +#include + +#endif // XSCRT_TRAVERSAL_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.ipp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.ipp new file mode 100644 index 00000000000..bc2a462334a --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.ipp @@ -0,0 +1,7 @@ +// file : XSCRT/Traversal.ixx +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.tpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.tpp new file mode 100644 index 00000000000..51889c0fb9b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.tpp @@ -0,0 +1,195 @@ +// file : XSCRT/Traversal.txx +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ + namespace Traversal + { + // TraverserBase + // + // + + template + TraverserBase:: + ~TraverserBase () + { + } + + // DispatcherBase + // + // + + template + DispatcherBase:: + ~DispatcherBase () + { + } + + //@@ merge after dropping VC6 + // + // + template + void DispatcherBase:: + dispatch (B& n) + { + LevelMap levels; + + //@@ VC6 + ExtendedTypeInfo const& ti = extended_type_info (n); + + unsigned long max = compute_levels (ti, 0, levels); + + + //wcerr << "starting dispatch process for " + // << typeid (n).name () << " with " + // << max << " levels" << endl; + + for (unsigned long l = 0; l < max + 1; ++l) + { + TypeInfoSet dispatched; + + for (typename LevelMap::const_iterator + i (levels.begin ()), e (levels.end ()); + i != e; ++i) + { + if (i->second == l) + { + typename TraversalMap::const_iterator v ( + traversal_map_.find (i->first.type_id ())); + + if (v != traversal_map_.end ()) + { + //wcerr << "dispatching traversers for " + // << typeid (n).name () << " as " + // << i->first.type_id ().name () << endl; + + //@@ VC6 + Traversers const& traversers = v->second; + for (typename Traversers::const_iterator + ti (traversers.begin ()), te (traversers.end ()); + ti != te; ++ti) + { + (*ti)->trampoline (n); + } + + flatten_tree (i->first, dispatched); + } + } + } + + // Remove traversed types from the level map. + // + //@@ VC6 + { + for (typename TypeInfoSet::const_iterator i = dispatched.begin (); + i != dispatched.end (); + ++i) + { + levels.erase (*i); + } + } + } + } + + template + void DispatcherBase:: + dispatch (B const& n) + { + LevelMap levels; + + //@@ VC6 + ExtendedTypeInfo const& ti = extended_type_info (n); + + unsigned long max = compute_levels (ti, 0, levels); + + + //wcerr << "starting dispatch process for " + // << typeid (n).name () << " with " + // << max << " levels" << endl; + + //wcerr << "using " << &traversal_map_ << " traversal map" << endl; + + for (unsigned long l = 0; l < max + 1; ++l) + { + TypeInfoSet dispatched; + + for (typename LevelMap::const_iterator + i (levels.begin ()), e (levels.end ()); + i != e; ++i) + { + if (i->second == l) + { + typename TraversalMap::const_iterator v ( + traversal_map_.find (i->first.type_id ())); + + if (v != traversal_map_.end ()) + { + //wcerr << "dispatching traversers for " + // << typeid (n).name () << " as " + // << i->first.type_id ().name () << endl; + + //@@ VC6 + Traversers const& traversers = v->second; + for (typename Traversers::const_iterator + ti (traversers.begin ()), te (traversers.end ()); + ti != te; ++ti) + { + (*ti)->trampoline (n); + } + + flatten_tree (i->first, dispatched); + } + } + } + + // Remove traversed types from the level map. + // + //@@ VC6 + { + for (typename TypeInfoSet::const_iterator i = dispatched.begin (); + i != dispatched.end (); + ++i) + { + levels.erase (*i); + } + } + } + } + + template + unsigned long DispatcherBase:: + compute_levels (ExtendedTypeInfo const& ti, + unsigned long cur, + LevelMap& map) + { + unsigned long ret = cur; + + if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur; + + for (ExtendedTypeInfo::BaseIterator i = ti.begin_base (); + i != ti.end_base (); + i++) + { + unsigned long t = compute_levels (i->type_info (), cur + 1, map); + if (t > ret) ret = t; + } + + return ret; + } + + template + void DispatcherBase:: + flatten_tree (ExtendedTypeInfo const& ti, TypeInfoSet& set) + { + set.insert (ti); + + for (ExtendedTypeInfo::BaseIterator i = ti.begin_base (); + i != ti.end_base (); + i++) + { + flatten_tree (i->type_info (), set); + } + } + } +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.hpp new file mode 100644 index 00000000000..6fdd82f6f3e --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.hpp @@ -0,0 +1,81 @@ +// file : XSCRT/Writer.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XSCRT_WRITER_HPP +#define XSCRT_WRITER_HPP + +#include +#include + +#include "XSCRT/XML.hpp" + +namespace XSCRT +{ + template + class Writer + { + public: + Writer (XML::Element& e) + : attr__ (0) + { + push_ (e); + } + + protected: + // This c-tor should never be called. + // + Writer () + { + abort (); + } + + public: + void + push_ (XML::Element const& e) + { + stack_.push (e); + } + + void + pop_ () + { + stack_.pop (); + } + + XML::Element& + top_ () + { + return stack_.top (); + } + + public: + XML::Attribute* + attr_ () + { + return attr__; + } + + void + attr_ (XML::Attribute* a) + { + attr__ = a; + } + + private: + std::stack > stack_; + + XML::Attribute* attr__; + + private: + Writer (Writer const&); + + void + operator= (Writer const&); + }; +} + +#include +#include + +#endif // XSCRT_WRITER_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.ipp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.ipp new file mode 100644 index 00000000000..caa9fc99235 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.ipp @@ -0,0 +1,7 @@ +// file : XSCRT/Writer.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.tpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.tpp new file mode 100644 index 00000000000..8593004687f --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/Writer.tpp @@ -0,0 +1,7 @@ +// file : XSCRT/Writer.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.hpp new file mode 100644 index 00000000000..d0fdd30affe --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.hpp @@ -0,0 +1,493 @@ +// file : XSCRT/XML.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + + +#ifndef XSCRT_XML_HPP +#define XSCRT_XML_HPP + +#include + +#include +#include + +namespace XSCRT +{ + namespace XML + { + //@@ VC6 + // + template + std::basic_string + transcode (XMLCh const* s, C*); + + template + XMLCh* + transcode (std::basic_string const& s); + + // + // + // + class string + { + public : + template + string (std::basic_string const& s) + : s_ (XSCRT::XML::transcode (s)) + { + } + + template + string (C const* s) + : s_ (XSCRT::XML::transcode (s)) + { + } + + ~string () + { + delete[] s_; + } + + XMLCh const* + c_str () const + { + return s_; + } + + private : + XMLCh* s_; + }; + + + template <> + inline + std::basic_string + transcode (XMLCh const* s, char*) + { + if (s == 0) return std::basic_string (); + + char* buf = xercesc::XMLString::transcode (s); + + std::basic_string r (buf); + + xercesc::XMLString::release (&buf); + + return r; + } + + template <> + inline + std::basic_string + transcode (XMLCh const* s, wchar_t*) + { + if (s == 0) return std::basic_string (); + + // std::wcerr << s << std::endl; + + std::basic_string r (xercesc::XMLString::stringLen (s), L'0'); + + for (std::size_t i (0); *s != XMLCh (0); ++s, ++i) + { + r[i] = *s; + } + + return r; + } + + template <> + inline + XMLCh* + transcode (std::basic_string const& s) + { + return xercesc::XMLString::transcode (s.c_str ()); + } + + template <> + inline + XMLCh* + transcode (std::basic_string const& s) + { + //@@ VC6 + std::size_t l = s.length (); + + //@@ VC6 + XMLCh* r = new XMLCh[l + 1]; + XMLCh* ir = r; + + for (std::size_t i (0); i < l; ++ir, ++i) + { + *ir = static_cast(s[i]); + //std::wcerr << s[i] << "->" << *ir << std::endl; + } + + *ir = XMLCh (0); + + // std::wcerr << r << std::endl; + + return r; + } + + + template + class Element; + + template + std::basic_string + ns_prefix (std::basic_string const& ns, Element const& e); + + // Casting helpers, made necessary by the Xerces project's braindead + // avoidance of RTTI. + template struct dom_traits; + + // Specializations for different node types + template <> + struct dom_traits + { + static const xercesc::DOMNode::NodeType node_type = xercesc::DOMNode::ELEMENT_NODE; + }; + + template <> + struct dom_traits + { + static const xercesc::DOMNode::NodeType node_type = xercesc::DOMNode::ATTRIBUTE_NODE; + }; + + template + DERIVED_PTR dom_cast (xercesc::DOMNode *node) + { + DERIVED_PTR elem = 0; + if ((node != 0) && + (node->getNodeType () == dom_traits::node_type)) + { + elem = reinterpret_cast (node); + } + return elem; + } + + template + class Element + { + typedef std::basic_string string_; + + public: + Element (xercesc::DOMElement const* e) + : e_ (0), + ce_ (e), + name_ (transcode (e->getLocalName (), 0)), + namespace__ (transcode (e->getNamespaceURI (), 0)) + { + } + + Element (xercesc::DOMElement* e) + : e_ (e), + ce_ (e), + name_ (transcode (e->getLocalName (), 0)), + namespace__ (transcode (e->getNamespaceURI (), 0)) + { + } + + Element (string_ const& name, Element& parent) + : e_ (0), + ce_ (0), + name_ (name) + { + xercesc::DOMDocument* doc ( + parent.dom_element ()->getOwnerDocument ()); + + e_ = doc->createElement (string (name).c_str ()); + + parent.dom_element ()->appendChild (e_); + + ce_ = e_; + } + + Element (string_ const& name, string_ const& ns, Element& parent) + : e_ (0), + ce_ (0), + name_ (name), + namespace__ (ns) + { + string_ prefix (ns_prefix (ns, parent)); + + xercesc::DOMDocument* doc ( + parent.dom_element ()->getOwnerDocument ()); + + e_ = doc->createElementNS ( + string (ns).c_str (), + string (prefix.empty () + ? name + : prefix + string_ (1, ':') + name).c_str ()); + + parent.dom_element ()->appendChild (e_); + + ce_ = e_; + } + + public: + string_ + name () const + { + return name_; + } + + string_ + namespace_ () const + { + return namespace__; + } + + public: + Element + parent () const + { + return dom_cast (ce_->getParentNode ()); + } + + public: + string_ + value () const + { + return XML::transcode (dom_element ()->getTextContent (), 0); + } + + void + value (string_ const& v) + { + xercesc::DOMText* text ( + dom_element ()->getOwnerDocument ()->createTextNode( + string (v).c_str ())); + + dom_element ()->appendChild (text); + } + + public: + string_ + operator[] (string_ const& s) const + { + //@@ VC6 + XMLCh const* value = ce_->getAttribute (string (s).c_str ()); + + return transcode (value, 0); + } + + public: + xercesc::DOMElement const* + dom_element () const + { + return ce_; + } + + xercesc::DOMElement* + dom_element () + { + return e_; + } + + private: + xercesc::DOMElement* e_; + xercesc::DOMElement const* ce_; + + string_ name_; + string_ namespace__; + }; + + + template + class Attribute + { + typedef std::basic_string string_; + + public: + Attribute (xercesc::DOMAttr const* a) + : a_ (0), + ca_ (a), + name_ (transcode (a->getLocalName (), 0)), + value_ (transcode (a->getValue (), 0)) + { + } + + Attribute (xercesc::DOMAttr* a) + : a_ (a), + ca_ (a), + name_ (transcode (a->getLocalName (), 0)), + value_ (transcode (a->getValue (), 0)) + { + } + + Attribute (string_ const& name, + string_ const& v, + Element& parent) + : a_ (0), + ca_ (0), + name_ (name), + value_ () + { + xercesc::DOMDocument* doc ( + parent.dom_element ()->getOwnerDocument ()); + + a_ = doc->createAttribute (string (name).c_str ()); + + value (v); + + parent.dom_element ()->setAttributeNode (a_); + + ca_ = a_; + } + + Attribute (string_ const& name, + string_ const& ns, + string_ const& v, + Element& parent) + : a_ (0), + ca_ (0), + name_ (name), + value_ () + { + string_ prefix (ns_prefix (ns, parent)); + + xercesc::DOMDocument* doc ( + parent.dom_element ()->getOwnerDocument ()); + + a_ = doc->createAttributeNS ( + string (ns).c_str (), + string (prefix.empty () + ? name + : prefix + string_ (1, ':') + name).c_str ()); + + value (v); + + parent.dom_element ()->setAttributeNodeNS (a_); + + ca_ = a_; + } + + string_ + name () const + { + return name_; + } + + string_ + value () const + { + return value_; + } + + void + value (string_ const& v) + { + value_ = v; + a_->setValue (string (v).c_str ()); + } + + public: + xercesc::DOMAttr const* + dom_attribute () const + { + return ca_; + } + + xercesc::DOMAttr* + dom_attribute () + { + return a_; + } + + private: + + private: + xercesc::DOMAttr* a_; + xercesc::DOMAttr const* ca_; + + string_ name_; + string_ value_; + }; + + template + std::basic_string + prefix (std::basic_string const& n) + { + std::size_t i (0); + while (i < n.length () && n[i] != ':') ++i; + + //std::wcerr << "prefix " << n << " " + // << std::wstring (n, i == n.length () ? i : 0, i) << std::endl; + + return std::basic_string (n, i == n.length () ? i : 0, i); + } + + template + std::basic_string + uq_name (std::basic_string const& n) + { + std::size_t i (0); + while (i < n.length () && n[i] != ':') ++i; + + return std::basic_string (n.c_str () + (i == n.length () ? 0 : i + 1)); + } + + template + std::basic_string + ns_name (Element const& e, std::basic_string const& n) + { + std::basic_string wp (prefix (n)); + + //@@ VC6 + XMLCh const* xns = e.dom_element ()->lookupNamespaceURI ( + wp.empty () ? 0 : string (wp).c_str ()); + + + std::basic_string ns ( + xns ? transcode (xns, 0) : std::basic_string ()); + + return ns; + + } + + template + std::basic_string + fq_name (Element const& e, std::basic_string const& n) + { + std::basic_string ns (ns_name (e, n)); + std::basic_string un (uq_name (n)); + + return ns.empty () ? un : (ns + C ('#') + un); + } + + class no_prefix {}; + + template + std::basic_string + ns_prefix (std::basic_string const& ns, Element const& e) + { + string xns (ns); + +#if defined(XERCES_VERSION_MAJOR) && XERCES_VERSION_MAJOR > 2 + XMLCh const* p (e.dom_element ()->lookupPrefix (xns.c_str ())); +#else + XMLCh const* p (e.dom_element ()->lookupNamespacePrefix (xns.c_str (), false)); +#endif + + if (p == 0) + { + bool r (e.dom_element ()->isDefaultNamespace (xns.c_str ())); + + if (r) + { + return std::basic_string (); + } + else + { + throw no_prefix (); + } + } + + return transcode (p, 0); + } + } +} + +#include "XSCRT/XML.ipp" +#include "XSCRT/XML.tpp" + +#endif // XSCRT_XML_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.ipp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.ipp new file mode 100644 index 00000000000..4a7b83efd1c --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.ipp @@ -0,0 +1,7 @@ +// file : XSCRT/XML.ipp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.tpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.tpp new file mode 100644 index 00000000000..63023a05d28 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XML.tpp @@ -0,0 +1,7 @@ +// file : XSCRT/XML.tpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +namespace XSCRT +{ +} diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp new file mode 100644 index 00000000000..95575267eee --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp @@ -0,0 +1,588 @@ +// file : XSCRT/XMLSchema.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XSCRT_XMLSCHEMA_HPP +#define XSCRT_XMLSCHEMA_HPP + +#include +// #include //@@ tmp + +#include "XSCRT/Elements.hpp" + +namespace XMLSchema +{ + typedef XSCRT::FundamentalType byte; + typedef XSCRT::FundamentalType unsignedByte; + + typedef XSCRT::FundamentalType short_; + typedef XSCRT::FundamentalType unsignedShort; + + typedef XSCRT::FundamentalType int_; + typedef XSCRT::FundamentalType unsignedInt; + + typedef XSCRT::FundamentalType long_; + typedef XSCRT::FundamentalType unsignedLong; + + //@@ It would be nice to use some arbitrary-length integer class. + // + typedef long_ decimal; + typedef decimal integer; + typedef integer nonPositiveInteger; + typedef integer nonNegativeInteger; + typedef nonNegativeInteger positiveInteger; + typedef nonPositiveInteger negativeInteger; + + + typedef XSCRT::FundamentalType boolean; + + typedef XSCRT::FundamentalType float_; + typedef XSCRT::FundamentalType double_; + + // Just to make GCC 3.3 and other broken compilers shutup. + // + using std::basic_string; + + + template + class string : public XSCRT::Type, public basic_string + { + protected: + typedef basic_string Base__ ; + + public: + + //@@ VC6 does not inject XSCRT::Type into the scope so I have + // to qualify it all the time. + // + + string () + { + } + + string (XSCRT::XML::Element const& e) + : Base__ (e.value ()) + { + } + + string (XSCRT::XML::Attribute const& a) + : Base__ (a.value ()) + { + } + + string (Base__ const& x) + : Base__ (x) + { + } + + string& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class normalizedString : public string + { + protected: + typedef typename string::Base__ Base__; + + public: + normalizedString () + { + } + + normalizedString (XSCRT::XML::Element const& e) + : string (e) + { + } + + normalizedString (XSCRT::XML::Attribute const& a) + : string (a) + { + } + + normalizedString (Base__ const& x) + : string (x) + { + } + + normalizedString& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class token : public normalizedString + { + protected: + typedef typename normalizedString::Base__ Base__; + + public: + token () + { + } + + token (XSCRT::XML::Element const& e) + : normalizedString (e) + { + } + + token (XSCRT::XML::Attribute const& a) + : normalizedString (a) + { + } + + token (Base__ const& x) + : normalizedString (x) + { + } + + token& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class NMTOKEN : public token + { + protected: + typedef typename token::Base__ Base__; + + public: + NMTOKEN () + { + } + + NMTOKEN (XSCRT::XML::Element const& e) + : token (e) + { + } + + NMTOKEN (XSCRT::XML::Attribute const& a) + : token (a) + { + } + + NMTOKEN (Base__ const& x) + : token (x) + { + } + + NMTOKEN& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + template + class Name: public token + { + protected: + typedef typename token::Base__ Base__; + + public: + Name() + { + } + + Name(XSCRT::XML::Element const& e) + : token (e) + { + } + + Name(XSCRT::XML::Attribute const& a) + : token (a) + { + } + + Name(Base__ const& x) + : token (x) + { + } + + Name& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + + template + class NCName: public Name + { + protected: + typedef typename Name::Base__ Base__; + + public: + NCName() + { + } + + NCName(XSCRT::XML::Element const& e) + : Name (e) + { + } + + NCName(XSCRT::XML::Attribute const& a) + : Name (a) + { + } + + NCName(Base__ const& x) + : Name (x) + { + } + + NCName& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + template + class QName: public Name + { + protected: + typedef typename Name::Base__ Base__; + + public: + QName() + { + } + + QName(XSCRT::XML::Element const& e) + : Name (e) + { + } + + QName(XSCRT::XML::Attribute const& a) + : Name (a) + { + } + + QName(Base__ const& x) + : Name (x) + { + } + + QName& + operator= (Base__ const& x) + { + static_cast (*this) = x; + return *this; + } + }; + + template + struct IdentityProvider : XSCRT::IdentityProvider + { + IdentityProvider (NCName const& id) + : id_ (id) + { + } + + virtual bool + before (XSCRT::IdentityProvider const& y) const + { + return id_ < dynamic_cast (y).id_; + } + + private: + NCName const& id_; + + private: + IdentityProvider (IdentityProvider const&); + + IdentityProvider& + operator= (IdentityProvider const&); + }; + + + template + class ID : public NCName + { + protected: + typedef typename NCName::Base__ Base__; + + public: + ~ID() + { + unregister_id (); + } + + ID () + : id_provider_ (*this) + { + } + + ID (XSCRT::XML::Element const& e) + : NCName (e), id_provider_ (*this) + { + } + + ID (XSCRT::XML::Attribute const& a) + : NCName (a), id_provider_ (*this) + { + } + + ID (ID const& x) + : NCName (x), id_provider_ (*this) + { + } + + ID (Base__ const& x) + : NCName (x), id_provider_ (*this) + { + } + + ID& + operator= (Base__ const& x) + { + unregister_id (); + + static_cast&>(*this) = x; + + register_id (); + + return *this; + } + + ID& + operator= (ID const& x) + { + unregister_id (); + + static_cast&>(*this) = static_cast const&>(x); + + register_id (); + + return *this; + } + + public: + using NCName::container; + + virtual void + container (XSCRT::Type* c) + { + unregister_id (); + + NCName::container (c); + + register_id (); + } + + private: + using NCName::empty; + using NCName::root; + + void + register_id () + { + if (container () != this && !empty ()) + { + //std::wcerr << "registering " << container () + // << " as '" << *this + // << "' on " << container () << std::endl; + container ()->register_id (id_provider_, container ()); + } + } + + void + unregister_id () + { + if (container () != this && !empty ()) + { + //std::wcerr << "un-registering " << container () + // << " as '" << *this + // << "' on " << container () << std::endl; + container ()->unregister_id (id_provider_); + } + } + + private: + IdentityProvider id_provider_; + }; + + struct IDREF_Base : public XSCRT::Type + { + virtual XSCRT::Type* + get () const = 0; + }; + + template + class IDREF : public IDREF_Base + { + public: + IDREF () + : id_provider_ (id_) + { + } + + IDREF (XSCRT::XML::Element const& e) + : id_ (e), id_provider_ (id_) + { + } + + IDREF (XSCRT::XML::Attribute const& a) + : id_ (a), id_provider_ (id_) + { + } + + IDREF (IDREF const& x) + : id_ (x.id_), id_provider_ (id_) + { + } + + IDREF (basic_string const& id) + : id_ (id), id_provider_ (id_) + { + } + + IDREF& + operator= (IDREF const& x) + { + id_ = x.id_; + return *this; + } + + IDREF& + operator= (basic_string const& x) + { + id_ = x; + return *this; + } + + public: + XSCRT::Type* + operator-> () const + { + return get (); + } + + XSCRT::Type& + operator* () const + { + return *(get ()); + } + + virtual XSCRT::Type* + get () const + { + if (!id_.empty () && container () != this) + { + return root ()->lookup_id (id_provider_); + } + else + { + return 0; + } + } + + // conversion to bool + // + typedef XSCRT::Type* (IDREF::*bool_convertable)() const; + + operator bool_convertable () const + { + return get () ? &IDREF::operator-> : 0; + } + + private: + NCName id_; + IdentityProvider id_provider_; + }; +} + +// Traversal +// +// + +#include "XSCRT/Traversal.hpp" + +namespace XMLSchema +{ + namespace Traversal + { + template + struct Traverser : XSCRT::Traversal::Traverser, + XSCRT::Traversal::Traverser + { + typedef + T + Type; + + virtual void + traverse (XMLSchema::IDREF_Base& r) + { + if (r.get ()) dispatch (*(r.get ())); + } + }; + + typedef Traverser byte; + typedef Traverser unsignedByte; + + typedef Traverser short_; + typedef Traverser unsignedShort; + + typedef Traverser int_; + typedef Traverser unsignedInt; + + typedef Traverser long_; + typedef Traverser unsignedLong; + + typedef Traverser boolean; + + typedef Traverser float_; + typedef Traverser double_; + + template + struct string : Traverser > + { + }; + + template + struct ID : Traverser > + { + }; + } +} + + +// ExtendedTypeInfo for XML Schema types +// +// + +#include "XSCRT/ExtendedTypeInfo.hpp" + +namespace XMLSchema +{ + template + struct TypeInfoInitializer + { + TypeInfoInitializer (XSCRT::ExtendedTypeInfoMap&); + }; +} + +#include "XSCRT/XMLSchema.ipp" +#include "XSCRT/XMLSchema.tpp" + +#endif // XSCRT_XMLSCHEMA_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/XSC_XML_Handlers_Export.h b/modules/CIAO/DAnCE/Config_Handlers/XSC_XML_Handlers_Export.h new file mode 100644 index 00000000000..82272eb6c05 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/XSC_XML_Handlers_Export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl XSC_XML_Handlers +// ------------------------------ +#ifndef XSC_XML_HANDLERS_EXPORT_H +#define XSC_XML_HANDLERS_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (XSC_XML_HANDLERS_HAS_DLL) +# define XSC_XML_HANDLERS_HAS_DLL 1 +#endif /* ! XSC_XML_HANDLERS_HAS_DLL */ + +#if defined (XSC_XML_HANDLERS_HAS_DLL) && (XSC_XML_HANDLERS_HAS_DLL == 1) +# if defined (XSC_XML_HANDLERS_BUILD_DLL) +# define XSC_XML_Handlers_Export ACE_Proper_Export_Flag +# define XSC_XML_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define XSC_XML_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* XSC_XML_HANDLERS_BUILD_DLL */ +# define XSC_XML_Handlers_Export ACE_Proper_Import_Flag +# define XSC_XML_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define XSC_XML_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* XSC_XML_HANDLERS_BUILD_DLL */ +#else /* XSC_XML_HANDLERS_HAS_DLL == 1 */ +# define XSC_XML_Handlers_Export +# define XSC_XML_HANDLERS_SINGLETON_DECLARATION(T) +# define XSC_XML_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* XSC_XML_HANDLERS_HAS_DLL == 1 */ + +// Set XSC_XML_HANDLERS_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (XSC_XML_HANDLERS_NTRACE) +# if (ACE_NTRACE == 1) +# define XSC_XML_HANDLERS_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define XSC_XML_HANDLERS_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !XSC_XML_HANDLERS_NTRACE */ + +#if (XSC_XML_HANDLERS_NTRACE == 1) +# define XSC_XML_HANDLERS_TRACE(X) +#else /* (XSC_XML_HANDLERS_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define XSC_XML_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (XSC_XML_HANDLERS_NTRACE == 1) */ + +#endif /* XSC_XML_HANDLERS_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Config_Handlers/ccd.cpp b/modules/CIAO/DAnCE/Config_Handlers/ccd.cpp new file mode 100644 index 00000000000..8ed4163970b --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ccd.cpp @@ -0,0 +1,1502 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "ccd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // ComponentInterfaceDescription + // + + ComponentInterfaceDescription:: + ComponentInterfaceDescription () + : + ::XSCRT::Type (), + regulator__ () + { + } + + ComponentInterfaceDescription:: + ComponentInterfaceDescription (ComponentInterfaceDescription const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + specificType_ (s.specificType_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.specificType_) : 0), + supportedType_ (s.supportedType_), + idlFile_ (s.idlFile_), + configProperty_ (s.configProperty_), + port_ (s.port_), + property_ (s.property_), + infoProperty_ (s.infoProperty_), + contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (specificType_.get ()) specificType_->container (this); + if (contentLocation_.get ()) contentLocation_->container (this); + if (href_.get ()) href_->container (this); + } + + ComponentInterfaceDescription& ComponentInterfaceDescription:: + operator= (ComponentInterfaceDescription const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.specificType_.get ()) + specificType (*(s.specificType_)); + else + specificType_.reset (0); + + supportedType_ = s.supportedType_; + + idlFile_ = s.idlFile_; + + configProperty_ = s.configProperty_; + + port_ = s.port_; + + property_ = s.property_; + + infoProperty_ = s.infoProperty_; + + if (s.contentLocation_.get ()) + contentLocation (*(s.contentLocation_)); + else + contentLocation_.reset (0); + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // ComponentInterfaceDescription + // + bool ComponentInterfaceDescription:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription:: + label () const + { + return *label_; + } + + void ComponentInterfaceDescription:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // ComponentInterfaceDescription + // + bool ComponentInterfaceDescription:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription:: + UUID () const + { + return *UUID_; + } + + void ComponentInterfaceDescription:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // ComponentInterfaceDescription + // + bool ComponentInterfaceDescription:: + specificType_p () const + { + return specificType_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription:: + specificType () const + { + return *specificType_; + } + + void ComponentInterfaceDescription:: + specificType (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (specificType_.get ()) + { + *specificType_ = e; + } + + else + { + specificType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + specificType_->container (this); + } + } + + // ComponentInterfaceDescription + // + ComponentInterfaceDescription::supportedType_iterator ComponentInterfaceDescription:: + begin_supportedType () + { + return supportedType_.begin (); + } + + ComponentInterfaceDescription::supportedType_iterator ComponentInterfaceDescription:: + end_supportedType () + { + return supportedType_.end (); + } + + ComponentInterfaceDescription::supportedType_const_iterator ComponentInterfaceDescription:: + begin_supportedType () const + { + return supportedType_.begin (); + } + + ComponentInterfaceDescription::supportedType_const_iterator ComponentInterfaceDescription:: + end_supportedType () const + { + return supportedType_.end (); + } + + void ComponentInterfaceDescription:: + add_supportedType (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + supportedType_.push_back (e); + } + + size_t ComponentInterfaceDescription:: + count_supportedType(void) const + { + return supportedType_.size (); + } + + // ComponentInterfaceDescription + // + ComponentInterfaceDescription::idlFile_iterator ComponentInterfaceDescription:: + begin_idlFile () + { + return idlFile_.begin (); + } + + ComponentInterfaceDescription::idlFile_iterator ComponentInterfaceDescription:: + end_idlFile () + { + return idlFile_.end (); + } + + ComponentInterfaceDescription::idlFile_const_iterator ComponentInterfaceDescription:: + begin_idlFile () const + { + return idlFile_.begin (); + } + + ComponentInterfaceDescription::idlFile_const_iterator ComponentInterfaceDescription:: + end_idlFile () const + { + return idlFile_.end (); + } + + void ComponentInterfaceDescription:: + add_idlFile (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + idlFile_.push_back (e); + } + + size_t ComponentInterfaceDescription:: + count_idlFile(void) const + { + return idlFile_.size (); + } + + // ComponentInterfaceDescription + // + ComponentInterfaceDescription::configProperty_iterator ComponentInterfaceDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + ComponentInterfaceDescription::configProperty_iterator ComponentInterfaceDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + ComponentInterfaceDescription::configProperty_const_iterator ComponentInterfaceDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + ComponentInterfaceDescription::configProperty_const_iterator ComponentInterfaceDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void ComponentInterfaceDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t ComponentInterfaceDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // ComponentInterfaceDescription + // + ComponentInterfaceDescription::port_iterator ComponentInterfaceDescription:: + begin_port () + { + return port_.begin (); + } + + ComponentInterfaceDescription::port_iterator ComponentInterfaceDescription:: + end_port () + { + return port_.end (); + } + + ComponentInterfaceDescription::port_const_iterator ComponentInterfaceDescription:: + begin_port () const + { + return port_.begin (); + } + + ComponentInterfaceDescription::port_const_iterator ComponentInterfaceDescription:: + end_port () const + { + return port_.end (); + } + + void ComponentInterfaceDescription:: + add_port (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPortDescription, ACE_Null_Mutex > const& e) + { + port_.push_back (e); + } + + size_t ComponentInterfaceDescription:: + count_port(void) const + { + return port_.size (); + } + + // ComponentInterfaceDescription + // + ComponentInterfaceDescription::property_iterator ComponentInterfaceDescription:: + begin_property () + { + return property_.begin (); + } + + ComponentInterfaceDescription::property_iterator ComponentInterfaceDescription:: + end_property () + { + return property_.end (); + } + + ComponentInterfaceDescription::property_const_iterator ComponentInterfaceDescription:: + begin_property () const + { + return property_.begin (); + } + + ComponentInterfaceDescription::property_const_iterator ComponentInterfaceDescription:: + end_property () const + { + return property_.end (); + } + + void ComponentInterfaceDescription:: + add_property (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPropertyDescription, ACE_Null_Mutex > const& e) + { + property_.push_back (e); + } + + size_t ComponentInterfaceDescription:: + count_property(void) const + { + return property_.size (); + } + + // ComponentInterfaceDescription + // + ComponentInterfaceDescription::infoProperty_iterator ComponentInterfaceDescription:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + ComponentInterfaceDescription::infoProperty_iterator ComponentInterfaceDescription:: + end_infoProperty () + { + return infoProperty_.end (); + } + + ComponentInterfaceDescription::infoProperty_const_iterator ComponentInterfaceDescription:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + ComponentInterfaceDescription::infoProperty_const_iterator ComponentInterfaceDescription:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void ComponentInterfaceDescription:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t ComponentInterfaceDescription:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // ComponentInterfaceDescription + // + bool ComponentInterfaceDescription:: + contentLocation_p () const + { + return contentLocation_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription:: + contentLocation () const + { + return *contentLocation_; + } + + void ComponentInterfaceDescription:: + contentLocation (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (contentLocation_.get ()) + { + *contentLocation_ = e; + } + + else + { + contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + contentLocation_->container (this); + } + } + + // ComponentInterfaceDescription + // + bool ComponentInterfaceDescription:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& ComponentInterfaceDescription:: + href () + { + return *href_; + } + + void ComponentInterfaceDescription:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // ComponentInterfaceDescription + // + + ComponentInterfaceDescription:: + ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("specificType")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + specificType (t); + } + + else if (n == ACE_TEXT("supportedType")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_supportedType (t); + } + + else if (n == ACE_TEXT("idlFile")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_idlFile (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("port")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPortDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ComponentPortDescription (e)); + add_port (t); + } + + else if (n == ACE_TEXT("property")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPropertyDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ComponentPropertyDescription (e)); + add_property (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else if (n == ACE_TEXT("contentLocation")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + contentLocation (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct ComponentInterfaceDescriptionTypeInfoInitializer + { + ComponentInterfaceDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentInterfaceDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentInterfaceDescriptionTypeInfoInitializer ComponentInterfaceDescriptionTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // ComponentInterfaceDescription + // + // + + void ComponentInterfaceDescription:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.specificType_p ()) specificType (o); + else specificType_none (o); + supportedType (o); + idlFile (o); + configProperty (o); + port (o); + property (o); + infoProperty (o); + if (o.contentLocation_p ()) contentLocation (o); + else contentLocation_none (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ComponentInterfaceDescription:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.specificType_p ()) specificType (o); + else specificType_none (o); + supportedType (o); + idlFile (o); + configProperty (o); + port (o); + property (o); + infoProperty (o); + if (o.contentLocation_p ()) contentLocation (o); + else contentLocation_none (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ComponentInterfaceDescription:: + pre (Type&) + { + } + + void ComponentInterfaceDescription:: + pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + label (Type& o) + { + dispatch (o.label ()); + } + + void ComponentInterfaceDescription:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void ComponentInterfaceDescription:: + label_none (Type&) + { + } + + void ComponentInterfaceDescription:: + label_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void ComponentInterfaceDescription:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void ComponentInterfaceDescription:: + UUID_none (Type&) + { + } + + void ComponentInterfaceDescription:: + UUID_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + specificType (Type& o) + { + dispatch (o.specificType ()); + } + + void ComponentInterfaceDescription:: + specificType (Type const& o) + { + dispatch (o.specificType ()); + } + + void ComponentInterfaceDescription:: + specificType_none (Type&) + { + } + + void ComponentInterfaceDescription:: + specificType_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + supportedType (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::supportedType_iterator b (o.begin_supportedType()), e (o.end_supportedType()); + + if (b != e) + { + supportedType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) supportedType_next (o); + } + + supportedType_post (o); + } + + else supportedType_none (o); + } + + void ComponentInterfaceDescription:: + supportedType (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::supportedType_const_iterator b (o.begin_supportedType()), e (o.end_supportedType()); + + if (b != e) + { + supportedType_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) supportedType_next (o); + } + + supportedType_post (o); + } + + else supportedType_none (o); + } + + void ComponentInterfaceDescription:: + supportedType_pre (Type&) + { + } + + void ComponentInterfaceDescription:: + supportedType_pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + supportedType_next (Type&) + { + } + + void ComponentInterfaceDescription:: + supportedType_next (Type const&) + { + } + + void ComponentInterfaceDescription:: + supportedType_post (Type&) + { + } + + void ComponentInterfaceDescription:: + supportedType_post (Type const&) + { + } + + void ComponentInterfaceDescription:: + supportedType_none (Type&) + { + } + + void ComponentInterfaceDescription:: + supportedType_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + idlFile (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::idlFile_iterator b (o.begin_idlFile()), e (o.end_idlFile()); + + if (b != e) + { + idlFile_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) idlFile_next (o); + } + + idlFile_post (o); + } + + else idlFile_none (o); + } + + void ComponentInterfaceDescription:: + idlFile (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::idlFile_const_iterator b (o.begin_idlFile()), e (o.end_idlFile()); + + if (b != e) + { + idlFile_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) idlFile_next (o); + } + + idlFile_post (o); + } + + else idlFile_none (o); + } + + void ComponentInterfaceDescription:: + idlFile_pre (Type&) + { + } + + void ComponentInterfaceDescription:: + idlFile_pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + idlFile_next (Type&) + { + } + + void ComponentInterfaceDescription:: + idlFile_next (Type const&) + { + } + + void ComponentInterfaceDescription:: + idlFile_post (Type&) + { + } + + void ComponentInterfaceDescription:: + idlFile_post (Type const&) + { + } + + void ComponentInterfaceDescription:: + idlFile_none (Type&) + { + } + + void ComponentInterfaceDescription:: + idlFile_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ComponentInterfaceDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ComponentInterfaceDescription:: + configProperty_pre (Type&) + { + } + + void ComponentInterfaceDescription:: + configProperty_pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + configProperty_next (Type&) + { + } + + void ComponentInterfaceDescription:: + configProperty_next (Type const&) + { + } + + void ComponentInterfaceDescription:: + configProperty_post (Type&) + { + } + + void ComponentInterfaceDescription:: + configProperty_post (Type const&) + { + } + + void ComponentInterfaceDescription:: + configProperty_none (Type&) + { + } + + void ComponentInterfaceDescription:: + configProperty_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + port (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::port_iterator b (o.begin_port()), e (o.end_port()); + + if (b != e) + { + port_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) port_next (o); + } + + port_post (o); + } + + else port_none (o); + } + + void ComponentInterfaceDescription:: + port (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::port_const_iterator b (o.begin_port()), e (o.end_port()); + + if (b != e) + { + port_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) port_next (o); + } + + port_post (o); + } + + else port_none (o); + } + + void ComponentInterfaceDescription:: + port_pre (Type&) + { + } + + void ComponentInterfaceDescription:: + port_pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + port_next (Type&) + { + } + + void ComponentInterfaceDescription:: + port_next (Type const&) + { + } + + void ComponentInterfaceDescription:: + port_post (Type&) + { + } + + void ComponentInterfaceDescription:: + port_post (Type const&) + { + } + + void ComponentInterfaceDescription:: + port_none (Type&) + { + } + + void ComponentInterfaceDescription:: + port_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + property (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::property_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ComponentInterfaceDescription:: + property (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::property_const_iterator b (o.begin_property()), e (o.end_property()); + + if (b != e) + { + property_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) property_next (o); + } + + property_post (o); + } + + else property_none (o); + } + + void ComponentInterfaceDescription:: + property_pre (Type&) + { + } + + void ComponentInterfaceDescription:: + property_pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + property_next (Type&) + { + } + + void ComponentInterfaceDescription:: + property_next (Type const&) + { + } + + void ComponentInterfaceDescription:: + property_post (Type&) + { + } + + void ComponentInterfaceDescription:: + property_post (Type const&) + { + } + + void ComponentInterfaceDescription:: + property_none (Type&) + { + } + + void ComponentInterfaceDescription:: + property_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ComponentInterfaceDescription:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ComponentInterfaceDescription:: + infoProperty_pre (Type&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_pre (Type const&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_next (Type&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_next (Type const&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_post (Type&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_post (Type const&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_none (Type&) + { + } + + void ComponentInterfaceDescription:: + infoProperty_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + contentLocation (Type& o) + { + dispatch (o.contentLocation ()); + } + + void ComponentInterfaceDescription:: + contentLocation (Type const& o) + { + dispatch (o.contentLocation ()); + } + + void ComponentInterfaceDescription:: + contentLocation_none (Type&) + { + } + + void ComponentInterfaceDescription:: + contentLocation_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + href (Type& o) + { + dispatch (o.href ()); + } + + void ComponentInterfaceDescription:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void ComponentInterfaceDescription:: + href_none (Type&) + { + } + + void ComponentInterfaceDescription:: + href_none (Type const&) + { + } + + void ComponentInterfaceDescription:: + post (Type&) + { + } + + void ComponentInterfaceDescription:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // ComponentInterfaceDescription + // + // + + ComponentInterfaceDescription:: + ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentInterfaceDescription:: + ComponentInterfaceDescription () + { + } + + void ComponentInterfaceDescription:: + traverse (Type const& o) + { + Traversal::ComponentInterfaceDescription::traverse (o); + } + + void ComponentInterfaceDescription:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::ComponentInterfaceDescription::label (o); + pop_ (); + } + + void ComponentInterfaceDescription:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::ComponentInterfaceDescription::UUID (o); + pop_ (); + } + + void ComponentInterfaceDescription:: + specificType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("specificType"), top_ ())); + Traversal::ComponentInterfaceDescription::specificType (o); + pop_ (); + } + + void ComponentInterfaceDescription:: + supportedType_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("supportedType"), top_ ())); + } + + void ComponentInterfaceDescription:: + supportedType_next (Type const& o) + { + supportedType_post (o); + supportedType_pre (o); + } + + void ComponentInterfaceDescription:: + supportedType_post (Type const&) + { + pop_ (); + } + + void ComponentInterfaceDescription:: + idlFile_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("idlFile"), top_ ())); + } + + void ComponentInterfaceDescription:: + idlFile_next (Type const& o) + { + idlFile_post (o); + idlFile_pre (o); + } + + void ComponentInterfaceDescription:: + idlFile_post (Type const&) + { + pop_ (); + } + + void ComponentInterfaceDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void ComponentInterfaceDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void ComponentInterfaceDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void ComponentInterfaceDescription:: + port_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("port"), top_ ())); + } + + void ComponentInterfaceDescription:: + port_next (Type const& o) + { + port_post (o); + port_pre (o); + } + + void ComponentInterfaceDescription:: + port_post (Type const&) + { + pop_ (); + } + + void ComponentInterfaceDescription:: + property_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + } + + void ComponentInterfaceDescription:: + property_next (Type const& o) + { + property_post (o); + property_pre (o); + } + + void ComponentInterfaceDescription:: + property_post (Type const&) + { + pop_ (); + } + + void ComponentInterfaceDescription:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void ComponentInterfaceDescription:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void ComponentInterfaceDescription:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void ComponentInterfaceDescription:: + contentLocation (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("contentLocation"), top_ ())); + Traversal::ComponentInterfaceDescription::contentLocation (o); + pop_ (); + } + + void ComponentInterfaceDescription:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ComponentInterfaceDescription::href (o); + attr_ (0); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/ccd.hpp b/modules/CIAO/DAnCE/Config_Handlers/ccd.hpp new file mode 100644 index 00000000000..7bb0245ead6 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/ccd.hpp @@ -0,0 +1,741 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef CCD_HPP +#define CCD_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentInterfaceDescription; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "Basic_Deployment_Data.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export ComponentInterfaceDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentInterfaceDescription, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // specificType + // + public: + bool specificType_p () const; + ::XMLSchema::string< ACE_TCHAR > const& specificType () const; + void specificType (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > specificType_; + + // supportedType + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator supportedType_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator supportedType_const_iterator; + supportedType_iterator begin_supportedType (); + supportedType_iterator end_supportedType (); + supportedType_const_iterator begin_supportedType () const; + supportedType_const_iterator end_supportedType () const; + void add_supportedType ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* supportedType_ptr ( std::basic_string idref ); + size_t count_supportedType (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > supportedType_; + + // idlFile + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator idlFile_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator idlFile_const_iterator; + idlFile_iterator begin_idlFile (); + idlFile_iterator end_idlFile (); + idlFile_const_iterator begin_idlFile () const; + idlFile_const_iterator end_idlFile () const; + void add_idlFile ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* idlFile_ptr ( std::basic_string idref ); + size_t count_idlFile (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > idlFile_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // port + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPortDescription, ACE_Null_Mutex > >::iterator port_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPortDescription, ACE_Null_Mutex > >::const_iterator port_const_iterator; + port_iterator begin_port (); + port_iterator end_port (); + port_const_iterator begin_port () const; + port_const_iterator end_port () const; + void add_port ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPortDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* port_ptr ( std::basic_string idref ); + size_t count_port (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPortDescription, ACE_Null_Mutex > > port_; + + // property + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPropertyDescription, ACE_Null_Mutex > >::iterator property_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPropertyDescription, ACE_Null_Mutex > >::const_iterator property_const_iterator; + property_iterator begin_property (); + property_iterator end_property (); + property_const_iterator begin_property () const; + property_const_iterator end_property () const; + void add_property ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPropertyDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* property_ptr ( std::basic_string idref ); + size_t count_property (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ComponentPropertyDescription, ACE_Null_Mutex > > property_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // contentLocation + // + public: + bool contentLocation_p () const; + ::XMLSchema::string< ACE_TCHAR > const& contentLocation () const; + void contentLocation (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + public: + ComponentInterfaceDescription (); + + ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentInterfaceDescription (ComponentInterfaceDescription const& s); + + ComponentInterfaceDescription& + operator= (ComponentInterfaceDescription const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export ComponentInterfaceDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentInterfaceDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + specificType (Type&); + + virtual void + specificType (Type const&); + + virtual void + specificType_none (Type&); + + virtual void + specificType_none (Type const&); + + virtual void + supportedType (Type&); + + virtual void + supportedType (Type const&); + + virtual void + supportedType_pre (Type&); + + virtual void + supportedType_pre (Type const&); + + virtual void + supportedType_next (Type&); + + virtual void + supportedType_next (Type const&); + + virtual void + supportedType_post (Type&); + + virtual void + supportedType_post (Type const&); + + virtual void + supportedType_none (Type&); + + virtual void + supportedType_none (Type const&); + + virtual void + idlFile (Type&); + + virtual void + idlFile (Type const&); + + virtual void + idlFile_pre (Type&); + + virtual void + idlFile_pre (Type const&); + + virtual void + idlFile_next (Type&); + + virtual void + idlFile_next (Type const&); + + virtual void + idlFile_post (Type&); + + virtual void + idlFile_post (Type const&); + + virtual void + idlFile_none (Type&); + + virtual void + idlFile_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + port (Type&); + + virtual void + port (Type const&); + + virtual void + port_pre (Type&); + + virtual void + port_pre (Type const&); + + virtual void + port_next (Type&); + + virtual void + port_next (Type const&); + + virtual void + port_post (Type&); + + virtual void + port_post (Type const&); + + virtual void + port_none (Type&); + + virtual void + port_none (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + property_pre (Type&); + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type&); + + virtual void + property_next (Type const&); + + virtual void + property_post (Type&); + + virtual void + property_post (Type const&); + + virtual void + property_none (Type&); + + virtual void + property_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + contentLocation (Type&); + + virtual void + contentLocation (Type const&); + + virtual void + contentLocation_none (Type&); + + virtual void + contentLocation_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct ComponentInterfaceDescription : Traversal::ComponentInterfaceDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentInterfaceDescription Type; + ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + specificType (Type &o) + { + this->specificType (const_cast (o)); + } + + virtual void + specificType (Type const&); + + virtual void + supportedType_pre (Type &o) + { + this->supportedType_pre (const_cast (o)); + } + + virtual void + supportedType_pre (Type const&); + + virtual void + supportedType_next (Type &o) + { + this->supportedType_next (const_cast (o)); + } + + virtual void + supportedType_next (Type const&); + + virtual void + supportedType_post (Type &o) + { + this->supportedType_post (const_cast (o)); + } + + virtual void + supportedType_post (Type const&); + + virtual void + idlFile_pre (Type &o) + { + this->idlFile_pre (const_cast (o)); + } + + virtual void + idlFile_pre (Type const&); + + virtual void + idlFile_next (Type &o) + { + this->idlFile_next (const_cast (o)); + } + + virtual void + idlFile_next (Type const&); + + virtual void + idlFile_post (Type &o) + { + this->idlFile_post (const_cast (o)); + } + + virtual void + idlFile_post (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + port_pre (Type &o) + { + this->port_pre (const_cast (o)); + } + + virtual void + port_pre (Type const&); + + virtual void + port_next (Type &o) + { + this->port_next (const_cast (o)); + } + + virtual void + port_next (Type const&); + + virtual void + port_post (Type &o) + { + this->port_post (const_cast (o)); + } + + virtual void + port_post (Type const&); + + virtual void + property_pre (Type &o) + { + this->property_pre (const_cast (o)); + } + + virtual void + property_pre (Type const&); + + virtual void + property_next (Type &o) + { + this->property_next (const_cast (o)); + } + + virtual void + property_next (Type const&); + + virtual void + property_post (Type &o) + { + this->property_post (const_cast (o)); + } + + virtual void + property_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + contentLocation (Type &o) + { + this->contentLocation (const_cast (o)); + } + + virtual void + contentLocation (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + protected: + ComponentInterfaceDescription (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // CCD_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/cdd.cpp b/modules/CIAO/DAnCE/Config_Handlers/cdd.cpp new file mode 100644 index 00000000000..4dc1a9d9915 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cdd.cpp @@ -0,0 +1,3334 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "cdd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // Domain + // + + Domain:: + Domain (::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > > const& node__) + : + ::XSCRT::Type (), + node_ (node__), + regulator__ () + { + } + + Domain:: + Domain (Domain const& s) + : + ::XSCRT::Type (), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + node_ (s.node_), + interconnect_ (s.interconnect_), + bridge_ (s.bridge_), + sharedResource_ (s.sharedResource_), + infoProperty_ (s.infoProperty_), + regulator__ () + { + if (UUID_.get ()) UUID_->container (this); + if (label_.get ()) label_->container (this); + } + + Domain& Domain:: + operator= (Domain const& s) + { + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + node_ = s.node_; + + interconnect_ = s.interconnect_; + + bridge_ = s.bridge_; + + sharedResource_ = s.sharedResource_; + + infoProperty_ = s.infoProperty_; + + return *this; + } + + + // Domain + // + bool Domain:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Domain:: + UUID () const + { + return *UUID_; + } + + void Domain:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // Domain + // + bool Domain:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Domain:: + label () const + { + return *label_; + } + + void Domain:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // Domain + // + Domain::node_iterator Domain:: + begin_node () + { + return node_.begin (); + } + + Domain::node_iterator Domain:: + end_node () + { + return node_.end (); + } + + Domain::node_const_iterator Domain:: + begin_node () const + { + return node_.begin (); + } + + Domain::node_const_iterator Domain:: + end_node () const + { + return node_.end (); + } + + void Domain:: + add_node (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > const& e) + { + node_.push_back (e); + } + + size_t Domain:: + count_node(void) const + { + return node_.size (); + } + + // Domain + // + Domain::interconnect_iterator Domain:: + begin_interconnect () + { + return interconnect_.begin (); + } + + Domain::interconnect_iterator Domain:: + end_interconnect () + { + return interconnect_.end (); + } + + Domain::interconnect_const_iterator Domain:: + begin_interconnect () const + { + return interconnect_.begin (); + } + + Domain::interconnect_const_iterator Domain:: + end_interconnect () const + { + return interconnect_.end (); + } + + void Domain:: + add_interconnect (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > const& e) + { + interconnect_.push_back (e); + } + + size_t Domain:: + count_interconnect(void) const + { + return interconnect_.size (); + } + + // Domain + // + Domain::bridge_iterator Domain:: + begin_bridge () + { + return bridge_.begin (); + } + + Domain::bridge_iterator Domain:: + end_bridge () + { + return bridge_.end (); + } + + Domain::bridge_const_iterator Domain:: + begin_bridge () const + { + return bridge_.begin (); + } + + Domain::bridge_const_iterator Domain:: + end_bridge () const + { + return bridge_.end (); + } + + void Domain:: + add_bridge (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > const& e) + { + bridge_.push_back (e); + } + + size_t Domain:: + count_bridge(void) const + { + return bridge_.size (); + } + + // Domain + // + Domain::sharedResource_iterator Domain:: + begin_sharedResource () + { + return sharedResource_.begin (); + } + + Domain::sharedResource_iterator Domain:: + end_sharedResource () + { + return sharedResource_.end (); + } + + Domain::sharedResource_const_iterator Domain:: + begin_sharedResource () const + { + return sharedResource_.begin (); + } + + Domain::sharedResource_const_iterator Domain:: + end_sharedResource () const + { + return sharedResource_.end (); + } + + void Domain:: + add_sharedResource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > const& e) + { + sharedResource_.push_back (e); + } + + size_t Domain:: + count_sharedResource(void) const + { + return sharedResource_.size (); + } + + // Domain + // + Domain::infoProperty_iterator Domain:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + Domain::infoProperty_iterator Domain:: + end_infoProperty () + { + return infoProperty_.end (); + } + + Domain::infoProperty_const_iterator Domain:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + Domain::infoProperty_const_iterator Domain:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void Domain:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t Domain:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + + // Bridge + // + + Bridge:: + Bridge (::XMLSchema::string< ACE_TCHAR > const& name__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > > const& connect__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + connect_ (connect__), + regulator__ () + { + name_->container (this); + } + + Bridge:: + Bridge (Bridge const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + connect_ (s.connect_), + resource_ (s.resource_), + regulator__ () + { + name_->container (this); + if (label_.get ()) label_->container (this); + } + + Bridge& Bridge:: + operator= (Bridge const& s) + { + name (*s.name_); + + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + connect_ = s.connect_; + + resource_ = s.resource_; + + return *this; + } + + + // Bridge + // + ::XMLSchema::string< ACE_TCHAR > const& Bridge:: + name () const + { + return *name_; + } + + void Bridge:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Bridge + // + bool Bridge:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Bridge:: + label () const + { + return *label_; + } + + void Bridge:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // Bridge + // + Bridge::connect_iterator Bridge:: + begin_connect () + { + return connect_.begin (); + } + + Bridge::connect_iterator Bridge:: + end_connect () + { + return connect_.end (); + } + + Bridge::connect_const_iterator Bridge:: + begin_connect () const + { + return connect_.begin (); + } + + Bridge::connect_const_iterator Bridge:: + end_connect () const + { + return connect_.end (); + } + + void Bridge:: + add_connect (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > const& e) + { + connect_.push_back (e); + } + + size_t Bridge:: + count_connect(void) const + { + return connect_.size (); + } + + // Bridge + // + Bridge::resource_iterator Bridge:: + begin_resource () + { + return resource_.begin (); + } + + Bridge::resource_iterator Bridge:: + end_resource () + { + return resource_.end (); + } + + Bridge::resource_const_iterator Bridge:: + begin_resource () const + { + return resource_.begin (); + } + + Bridge::resource_const_iterator Bridge:: + end_resource () const + { + return resource_.end (); + } + + void Bridge:: + add_resource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > const& e) + { + resource_.push_back (e); + } + + size_t Bridge:: + count_resource(void) const + { + return resource_.size (); + } + + + // Interconnect + // + + Interconnect:: + Interconnect (::XMLSchema::string< ACE_TCHAR > const& name__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > > const& connect__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + connect_ (connect__), + regulator__ () + { + name_->container (this); + } + + Interconnect:: + Interconnect (Interconnect const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + connection_ (s.connection_), + connect_ (s.connect_), + resource_ (s.resource_), + regulator__ () + { + name_->container (this); + if (label_.get ()) label_->container (this); + } + + Interconnect& Interconnect:: + operator= (Interconnect const& s) + { + name (*s.name_); + + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + connection_ = s.connection_; + + connect_ = s.connect_; + + resource_ = s.resource_; + + return *this; + } + + + // Interconnect + // + ::XMLSchema::string< ACE_TCHAR > const& Interconnect:: + name () const + { + return *name_; + } + + void Interconnect:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Interconnect + // + bool Interconnect:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Interconnect:: + label () const + { + return *label_; + } + + void Interconnect:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // Interconnect + // + Interconnect::connection_iterator Interconnect:: + begin_connection () + { + return connection_.begin (); + } + + Interconnect::connection_iterator Interconnect:: + end_connection () + { + return connection_.end (); + } + + Interconnect::connection_const_iterator Interconnect:: + begin_connection () const + { + return connection_.begin (); + } + + Interconnect::connection_const_iterator Interconnect:: + end_connection () const + { + return connection_.end (); + } + + void Interconnect:: + add_connection (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > const& e) + { + connection_.push_back (e); + } + + size_t Interconnect:: + count_connection(void) const + { + return connection_.size (); + } + + // Interconnect + // + Interconnect::connect_iterator Interconnect:: + begin_connect () + { + return connect_.begin (); + } + + Interconnect::connect_iterator Interconnect:: + end_connect () + { + return connect_.end (); + } + + Interconnect::connect_const_iterator Interconnect:: + begin_connect () const + { + return connect_.begin (); + } + + Interconnect::connect_const_iterator Interconnect:: + end_connect () const + { + return connect_.end (); + } + + void Interconnect:: + add_connect (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > const& e) + { + connect_.push_back (e); + } + + size_t Interconnect:: + count_connect(void) const + { + return connect_.size (); + } + + // Interconnect + // + Interconnect::resource_iterator Interconnect:: + begin_resource () + { + return resource_.begin (); + } + + Interconnect::resource_iterator Interconnect:: + end_resource () + { + return resource_.end (); + } + + Interconnect::resource_const_iterator Interconnect:: + begin_resource () const + { + return resource_.begin (); + } + + Interconnect::resource_const_iterator Interconnect:: + end_resource () const + { + return resource_.end (); + } + + void Interconnect:: + add_resource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > const& e) + { + resource_.push_back (e); + } + + size_t Interconnect:: + count_resource(void) const + { + return resource_.size (); + } + + + // Node + // + + Node:: + Node (::XMLSchema::string< ACE_TCHAR > const& name__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + name_->container (this); + } + + Node:: + Node (Node const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + connection_ (s.connection_), + sharedResource_ (s.sharedResource_), + resource_ (s.resource_), + regulator__ () + { + name_->container (this); + if (label_.get ()) label_->container (this); + } + + Node& Node:: + operator= (Node const& s) + { + name (*s.name_); + + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + connection_ = s.connection_; + + sharedResource_ = s.sharedResource_; + + resource_ = s.resource_; + + return *this; + } + + + // Node + // + ::XMLSchema::string< ACE_TCHAR > const& Node:: + name () const + { + return *name_; + } + + void Node:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // Node + // + bool Node:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& Node:: + label () const + { + return *label_; + } + + void Node:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // Node + // + Node::connection_iterator Node:: + begin_connection () + { + return connection_.begin (); + } + + Node::connection_iterator Node:: + end_connection () + { + return connection_.end (); + } + + Node::connection_const_iterator Node:: + begin_connection () const + { + return connection_.begin (); + } + + Node::connection_const_iterator Node:: + end_connection () const + { + return connection_.end (); + } + + void Node:: + add_connection (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > const& e) + { + connection_.push_back (e); + } + + size_t Node:: + count_connection(void) const + { + return connection_.size (); + } + + // Node + // + Node::sharedResource_iterator Node:: + begin_sharedResource () + { + return sharedResource_.begin (); + } + + Node::sharedResource_iterator Node:: + end_sharedResource () + { + return sharedResource_.end (); + } + + Node::sharedResource_const_iterator Node:: + begin_sharedResource () const + { + return sharedResource_.begin (); + } + + Node::sharedResource_const_iterator Node:: + end_sharedResource () const + { + return sharedResource_.end (); + } + + void Node:: + add_sharedResource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > const& e) + { + sharedResource_.push_back (e); + } + + size_t Node:: + count_sharedResource(void) const + { + return sharedResource_.size (); + } + + // Node + // + Node::resource_iterator Node:: + begin_resource () + { + return resource_.begin (); + } + + Node::resource_iterator Node:: + end_resource () + { + return resource_.end (); + } + + Node::resource_const_iterator Node:: + begin_resource () const + { + return resource_.begin (); + } + + Node::resource_const_iterator Node:: + end_resource () const + { + return resource_.end (); + } + + void Node:: + add_resource (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > const& e) + { + resource_.push_back (e); + } + + size_t Node:: + count_resource(void) const + { + return resource_.size (); + } + + + // SharedResource + // + + SharedResource:: + SharedResource (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& resourceType__, + ::CIAO::Config_Handlers::Node const& node__, + ::CIAO::Config_Handlers::SatisfierProperty const& property__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (resourceType__)), + node_ (new ::CIAO::Config_Handlers::Node (node__)), + property_ (new ::CIAO::Config_Handlers::SatisfierProperty (property__)), + regulator__ () + { + name_->container (this); + resourceType_->container (this); + node_->container (this); + property_->container (this); + } + + SharedResource:: + SharedResource (SharedResource const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceType_)), + node_ (new ::CIAO::Config_Handlers::Node (*s.node_)), + property_ (new ::CIAO::Config_Handlers::SatisfierProperty (*s.property_)), + regulator__ () + { + name_->container (this); + resourceType_->container (this); + node_->container (this); + property_->container (this); + } + + SharedResource& SharedResource:: + operator= (SharedResource const& s) + { + name (*s.name_); + + resourceType (*s.resourceType_); + + node (*s.node_); + + property (*s.property_); + + return *this; + } + + + // SharedResource + // + ::XMLSchema::string< ACE_TCHAR > const& SharedResource:: + name () const + { + return *name_; + } + + void SharedResource:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // SharedResource + // + ::XMLSchema::string< ACE_TCHAR > const& SharedResource:: + resourceType () const + { + return *resourceType_; + } + + void SharedResource:: + resourceType (::XMLSchema::string< ACE_TCHAR > const& e) + { + *resourceType_ = e; + } + + // SharedResource + // + ::CIAO::Config_Handlers::Node const& SharedResource:: + node () const + { + return *node_; + } + + void SharedResource:: + node (::CIAO::Config_Handlers::Node const& e) + { + *node_ = e; + } + + // SharedResource + // + ::CIAO::Config_Handlers::SatisfierProperty const& SharedResource:: + property () const + { + return *property_; + } + + void SharedResource:: + property (::CIAO::Config_Handlers::SatisfierProperty const& e) + { + *property_ = e; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // Domain + // + + Domain:: + Domain (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("node")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Node (e)); + add_node (t); + } + + else if (n == ACE_TEXT("interconnect")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Interconnect (e)); + add_interconnect (t); + } + + else if (n == ACE_TEXT("bridge")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Bridge (e)); + add_bridge (t); + } + + else if (n == ACE_TEXT("sharedResource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SharedResource (e)); + add_sharedResource (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else + { + } + } + } + + // Bridge + // + + Bridge:: + Bridge (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("connect")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Interconnect (e)); + add_connect (t); + } + + else if (n == ACE_TEXT("resource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Resource (e)); + add_resource (t); + } + + else + { + } + } + } + + // Interconnect + // + + Interconnect:: + Interconnect (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("connection")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Bridge (e)); + add_connection (t); + } + + else if (n == ACE_TEXT("connect")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Node (e)); + add_connect (t); + } + + else if (n == ACE_TEXT("resource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Resource (e)); + add_resource (t); + } + + else + { + } + } + } + + // Node + // + + Node:: + Node (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("connection")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Interconnect (e)); + add_connection (t); + } + + else if (n == ACE_TEXT("sharedResource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SharedResource (e)); + add_sharedResource (t); + } + + else if (n == ACE_TEXT("resource")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Resource (e)); + add_resource (t); + } + + else + { + } + } + } + + // SharedResource + // + + SharedResource:: + SharedResource (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("resourceType")) + { + resourceType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + resourceType_->container (this); + } + + else if (n == ACE_TEXT("node")) + { + node_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Node > (new ::CIAO::Config_Handlers::Node (e)); + node_->container (this); + } + + else if (n == ACE_TEXT("property")) + { + property_ = ::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierProperty > (new ::CIAO::Config_Handlers::SatisfierProperty (e)); + property_->container (this); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct DomainTypeInfoInitializer + { + DomainTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Domain)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + DomainTypeInfoInitializer DomainTypeInfoInitializer_; + + struct BridgeTypeInfoInitializer + { + BridgeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Bridge)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + BridgeTypeInfoInitializer BridgeTypeInfoInitializer_; + + struct InterconnectTypeInfoInitializer + { + InterconnectTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Interconnect)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + InterconnectTypeInfoInitializer InterconnectTypeInfoInitializer_; + + struct NodeTypeInfoInitializer + { + NodeTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Node)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + NodeTypeInfoInitializer NodeTypeInfoInitializer_; + + struct SharedResourceTypeInfoInitializer + { + SharedResourceTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::SharedResource)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SharedResourceTypeInfoInitializer SharedResourceTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // Domain + // + // + + void Domain:: + traverse (Type& o) + { + pre (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.label_p ()) label (o); + else label_none (o); + node (o); + interconnect (o); + bridge (o); + sharedResource (o); + infoProperty (o); + post (o); + } + + void Domain:: + traverse (Type const& o) + { + pre (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.label_p ()) label (o); + else label_none (o); + node (o); + interconnect (o); + bridge (o); + sharedResource (o); + infoProperty (o); + post (o); + } + + void Domain:: + pre (Type&) + { + } + + void Domain:: + pre (Type const&) + { + } + + void Domain:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void Domain:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void Domain:: + UUID_none (Type&) + { + } + + void Domain:: + UUID_none (Type const&) + { + } + + void Domain:: + label (Type& o) + { + dispatch (o.label ()); + } + + void Domain:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void Domain:: + label_none (Type&) + { + } + + void Domain:: + label_none (Type const&) + { + } + + void Domain:: + node (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::node_iterator b (o.begin_node()), e (o.end_node()); + + if (b != e) + { + node_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) node_next (o); + } + + node_post (o); + } + } + + void Domain:: + node (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::node_const_iterator b (o.begin_node()), e (o.end_node()); + + if (b != e) + { + node_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) node_next (o); + } + + node_post (o); + } + } + + void Domain:: + node_pre (Type&) + { + } + + void Domain:: + node_pre (Type const&) + { + } + + void Domain:: + node_next (Type&) + { + } + + void Domain:: + node_next (Type const&) + { + } + + void Domain:: + node_post (Type&) + { + } + + void Domain:: + node_post (Type const&) + { + } + + void Domain:: + interconnect (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::interconnect_iterator b (o.begin_interconnect()), e (o.end_interconnect()); + + if (b != e) + { + interconnect_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) interconnect_next (o); + } + + interconnect_post (o); + } + + else interconnect_none (o); + } + + void Domain:: + interconnect (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::interconnect_const_iterator b (o.begin_interconnect()), e (o.end_interconnect()); + + if (b != e) + { + interconnect_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) interconnect_next (o); + } + + interconnect_post (o); + } + + else interconnect_none (o); + } + + void Domain:: + interconnect_pre (Type&) + { + } + + void Domain:: + interconnect_pre (Type const&) + { + } + + void Domain:: + interconnect_next (Type&) + { + } + + void Domain:: + interconnect_next (Type const&) + { + } + + void Domain:: + interconnect_post (Type&) + { + } + + void Domain:: + interconnect_post (Type const&) + { + } + + void Domain:: + interconnect_none (Type&) + { + } + + void Domain:: + interconnect_none (Type const&) + { + } + + void Domain:: + bridge (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::bridge_iterator b (o.begin_bridge()), e (o.end_bridge()); + + if (b != e) + { + bridge_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) bridge_next (o); + } + + bridge_post (o); + } + + else bridge_none (o); + } + + void Domain:: + bridge (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::bridge_const_iterator b (o.begin_bridge()), e (o.end_bridge()); + + if (b != e) + { + bridge_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) bridge_next (o); + } + + bridge_post (o); + } + + else bridge_none (o); + } + + void Domain:: + bridge_pre (Type&) + { + } + + void Domain:: + bridge_pre (Type const&) + { + } + + void Domain:: + bridge_next (Type&) + { + } + + void Domain:: + bridge_next (Type const&) + { + } + + void Domain:: + bridge_post (Type&) + { + } + + void Domain:: + bridge_post (Type const&) + { + } + + void Domain:: + bridge_none (Type&) + { + } + + void Domain:: + bridge_none (Type const&) + { + } + + void Domain:: + sharedResource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::sharedResource_iterator b (o.begin_sharedResource()), e (o.end_sharedResource()); + + if (b != e) + { + sharedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) sharedResource_next (o); + } + + sharedResource_post (o); + } + + else sharedResource_none (o); + } + + void Domain:: + sharedResource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::sharedResource_const_iterator b (o.begin_sharedResource()), e (o.end_sharedResource()); + + if (b != e) + { + sharedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) sharedResource_next (o); + } + + sharedResource_post (o); + } + + else sharedResource_none (o); + } + + void Domain:: + sharedResource_pre (Type&) + { + } + + void Domain:: + sharedResource_pre (Type const&) + { + } + + void Domain:: + sharedResource_next (Type&) + { + } + + void Domain:: + sharedResource_next (Type const&) + { + } + + void Domain:: + sharedResource_post (Type&) + { + } + + void Domain:: + sharedResource_post (Type const&) + { + } + + void Domain:: + sharedResource_none (Type&) + { + } + + void Domain:: + sharedResource_none (Type const&) + { + } + + void Domain:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void Domain:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Domain::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void Domain:: + infoProperty_pre (Type&) + { + } + + void Domain:: + infoProperty_pre (Type const&) + { + } + + void Domain:: + infoProperty_next (Type&) + { + } + + void Domain:: + infoProperty_next (Type const&) + { + } + + void Domain:: + infoProperty_post (Type&) + { + } + + void Domain:: + infoProperty_post (Type const&) + { + } + + void Domain:: + infoProperty_none (Type&) + { + } + + void Domain:: + infoProperty_none (Type const&) + { + } + + void Domain:: + post (Type&) + { + } + + void Domain:: + post (Type const&) + { + } + + // Bridge + // + // + + void Bridge:: + traverse (Type& o) + { + pre (o); + name (o); + if (o.label_p ()) label (o); + else label_none (o); + connect (o); + resource (o); + post (o); + } + + void Bridge:: + traverse (Type const& o) + { + pre (o); + name (o); + if (o.label_p ()) label (o); + else label_none (o); + connect (o); + resource (o); + post (o); + } + + void Bridge:: + pre (Type&) + { + } + + void Bridge:: + pre (Type const&) + { + } + + void Bridge:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Bridge:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Bridge:: + label (Type& o) + { + dispatch (o.label ()); + } + + void Bridge:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void Bridge:: + label_none (Type&) + { + } + + void Bridge:: + label_none (Type const&) + { + } + + void Bridge:: + connect (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Bridge::connect_iterator b (o.begin_connect()), e (o.end_connect()); + + if (b != e) + { + connect_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connect_next (o); + } + + connect_post (o); + } + } + + void Bridge:: + connect (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Bridge::connect_const_iterator b (o.begin_connect()), e (o.end_connect()); + + if (b != e) + { + connect_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connect_next (o); + } + + connect_post (o); + } + } + + void Bridge:: + connect_pre (Type&) + { + } + + void Bridge:: + connect_pre (Type const&) + { + } + + void Bridge:: + connect_next (Type&) + { + } + + void Bridge:: + connect_next (Type const&) + { + } + + void Bridge:: + connect_post (Type&) + { + } + + void Bridge:: + connect_post (Type const&) + { + } + + void Bridge:: + resource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Bridge::resource_iterator b (o.begin_resource()), e (o.end_resource()); + + if (b != e) + { + resource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resource_next (o); + } + + resource_post (o); + } + + else resource_none (o); + } + + void Bridge:: + resource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Bridge::resource_const_iterator b (o.begin_resource()), e (o.end_resource()); + + if (b != e) + { + resource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resource_next (o); + } + + resource_post (o); + } + + else resource_none (o); + } + + void Bridge:: + resource_pre (Type&) + { + } + + void Bridge:: + resource_pre (Type const&) + { + } + + void Bridge:: + resource_next (Type&) + { + } + + void Bridge:: + resource_next (Type const&) + { + } + + void Bridge:: + resource_post (Type&) + { + } + + void Bridge:: + resource_post (Type const&) + { + } + + void Bridge:: + resource_none (Type&) + { + } + + void Bridge:: + resource_none (Type const&) + { + } + + void Bridge:: + post (Type&) + { + } + + void Bridge:: + post (Type const&) + { + } + + // Interconnect + // + // + + void Interconnect:: + traverse (Type& o) + { + pre (o); + name (o); + if (o.label_p ()) label (o); + else label_none (o); + connection (o); + connect (o); + resource (o); + post (o); + } + + void Interconnect:: + traverse (Type const& o) + { + pre (o); + name (o); + if (o.label_p ()) label (o); + else label_none (o); + connection (o); + connect (o); + resource (o); + post (o); + } + + void Interconnect:: + pre (Type&) + { + } + + void Interconnect:: + pre (Type const&) + { + } + + void Interconnect:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Interconnect:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Interconnect:: + label (Type& o) + { + dispatch (o.label ()); + } + + void Interconnect:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void Interconnect:: + label_none (Type&) + { + } + + void Interconnect:: + label_none (Type const&) + { + } + + void Interconnect:: + connection (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Interconnect::connection_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void Interconnect:: + connection (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Interconnect::connection_const_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void Interconnect:: + connection_pre (Type&) + { + } + + void Interconnect:: + connection_pre (Type const&) + { + } + + void Interconnect:: + connection_next (Type&) + { + } + + void Interconnect:: + connection_next (Type const&) + { + } + + void Interconnect:: + connection_post (Type&) + { + } + + void Interconnect:: + connection_post (Type const&) + { + } + + void Interconnect:: + connection_none (Type&) + { + } + + void Interconnect:: + connection_none (Type const&) + { + } + + void Interconnect:: + connect (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Interconnect::connect_iterator b (o.begin_connect()), e (o.end_connect()); + + if (b != e) + { + connect_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connect_next (o); + } + + connect_post (o); + } + } + + void Interconnect:: + connect (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Interconnect::connect_const_iterator b (o.begin_connect()), e (o.end_connect()); + + if (b != e) + { + connect_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connect_next (o); + } + + connect_post (o); + } + } + + void Interconnect:: + connect_pre (Type&) + { + } + + void Interconnect:: + connect_pre (Type const&) + { + } + + void Interconnect:: + connect_next (Type&) + { + } + + void Interconnect:: + connect_next (Type const&) + { + } + + void Interconnect:: + connect_post (Type&) + { + } + + void Interconnect:: + connect_post (Type const&) + { + } + + void Interconnect:: + resource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Interconnect::resource_iterator b (o.begin_resource()), e (o.end_resource()); + + if (b != e) + { + resource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resource_next (o); + } + + resource_post (o); + } + + else resource_none (o); + } + + void Interconnect:: + resource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Interconnect::resource_const_iterator b (o.begin_resource()), e (o.end_resource()); + + if (b != e) + { + resource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resource_next (o); + } + + resource_post (o); + } + + else resource_none (o); + } + + void Interconnect:: + resource_pre (Type&) + { + } + + void Interconnect:: + resource_pre (Type const&) + { + } + + void Interconnect:: + resource_next (Type&) + { + } + + void Interconnect:: + resource_next (Type const&) + { + } + + void Interconnect:: + resource_post (Type&) + { + } + + void Interconnect:: + resource_post (Type const&) + { + } + + void Interconnect:: + resource_none (Type&) + { + } + + void Interconnect:: + resource_none (Type const&) + { + } + + void Interconnect:: + post (Type&) + { + } + + void Interconnect:: + post (Type const&) + { + } + + // Node + // + // + + void Node:: + traverse (Type& o) + { + pre (o); + name (o); + if (o.label_p ()) label (o); + else label_none (o); + connection (o); + sharedResource (o); + resource (o); + post (o); + } + + void Node:: + traverse (Type const& o) + { + pre (o); + name (o); + if (o.label_p ()) label (o); + else label_none (o); + connection (o); + sharedResource (o); + resource (o); + post (o); + } + + void Node:: + pre (Type&) + { + } + + void Node:: + pre (Type const&) + { + } + + void Node:: + name (Type& o) + { + dispatch (o.name ()); + } + + void Node:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void Node:: + label (Type& o) + { + dispatch (o.label ()); + } + + void Node:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void Node:: + label_none (Type&) + { + } + + void Node:: + label_none (Type const&) + { + } + + void Node:: + connection (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Node::connection_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void Node:: + connection (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Node::connection_const_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void Node:: + connection_pre (Type&) + { + } + + void Node:: + connection_pre (Type const&) + { + } + + void Node:: + connection_next (Type&) + { + } + + void Node:: + connection_next (Type const&) + { + } + + void Node:: + connection_post (Type&) + { + } + + void Node:: + connection_post (Type const&) + { + } + + void Node:: + connection_none (Type&) + { + } + + void Node:: + connection_none (Type const&) + { + } + + void Node:: + sharedResource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Node::sharedResource_iterator b (o.begin_sharedResource()), e (o.end_sharedResource()); + + if (b != e) + { + sharedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) sharedResource_next (o); + } + + sharedResource_post (o); + } + + else sharedResource_none (o); + } + + void Node:: + sharedResource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Node::sharedResource_const_iterator b (o.begin_sharedResource()), e (o.end_sharedResource()); + + if (b != e) + { + sharedResource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) sharedResource_next (o); + } + + sharedResource_post (o); + } + + else sharedResource_none (o); + } + + void Node:: + sharedResource_pre (Type&) + { + } + + void Node:: + sharedResource_pre (Type const&) + { + } + + void Node:: + sharedResource_next (Type&) + { + } + + void Node:: + sharedResource_next (Type const&) + { + } + + void Node:: + sharedResource_post (Type&) + { + } + + void Node:: + sharedResource_post (Type const&) + { + } + + void Node:: + sharedResource_none (Type&) + { + } + + void Node:: + sharedResource_none (Type const&) + { + } + + void Node:: + resource (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Node::resource_iterator b (o.begin_resource()), e (o.end_resource()); + + if (b != e) + { + resource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resource_next (o); + } + + resource_post (o); + } + + else resource_none (o); + } + + void Node:: + resource (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::Node::resource_const_iterator b (o.begin_resource()), e (o.end_resource()); + + if (b != e) + { + resource_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) resource_next (o); + } + + resource_post (o); + } + + else resource_none (o); + } + + void Node:: + resource_pre (Type&) + { + } + + void Node:: + resource_pre (Type const&) + { + } + + void Node:: + resource_next (Type&) + { + } + + void Node:: + resource_next (Type const&) + { + } + + void Node:: + resource_post (Type&) + { + } + + void Node:: + resource_post (Type const&) + { + } + + void Node:: + resource_none (Type&) + { + } + + void Node:: + resource_none (Type const&) + { + } + + void Node:: + post (Type&) + { + } + + void Node:: + post (Type const&) + { + } + + // SharedResource + // + // + + void SharedResource:: + traverse (Type& o) + { + pre (o); + name (o); + resourceType (o); + node (o); + property (o); + post (o); + } + + void SharedResource:: + traverse (Type const& o) + { + pre (o); + name (o); + resourceType (o); + node (o); + property (o); + post (o); + } + + void SharedResource:: + pre (Type&) + { + } + + void SharedResource:: + pre (Type const&) + { + } + + void SharedResource:: + name (Type& o) + { + dispatch (o.name ()); + } + + void SharedResource:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void SharedResource:: + resourceType (Type& o) + { + dispatch (o.resourceType ()); + } + + void SharedResource:: + resourceType (Type const& o) + { + dispatch (o.resourceType ()); + } + + void SharedResource:: + node (Type& o) + { + dispatch (o.node ()); + } + + void SharedResource:: + node (Type const& o) + { + dispatch (o.node ()); + } + + void SharedResource:: + property (Type& o) + { + dispatch (o.property ()); + } + + void SharedResource:: + property (Type const& o) + { + dispatch (o.property ()); + } + + void SharedResource:: + post (Type&) + { + } + + void SharedResource:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // Domain + // + // + + Domain:: + Domain (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Domain:: + Domain () + { + } + + void Domain:: + traverse (Type const& o) + { + Traversal::Domain::traverse (o); + } + + void Domain:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::Domain::UUID (o); + pop_ (); + } + + void Domain:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::Domain::label (o); + pop_ (); + } + + void Domain:: + node_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("node"), top_ ())); + } + + void Domain:: + node_next (Type const& o) + { + node_post (o); + node_pre (o); + } + + void Domain:: + node_post (Type const&) + { + pop_ (); + } + + void Domain:: + interconnect_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("interconnect"), top_ ())); + } + + void Domain:: + interconnect_next (Type const& o) + { + interconnect_post (o); + interconnect_pre (o); + } + + void Domain:: + interconnect_post (Type const&) + { + pop_ (); + } + + void Domain:: + bridge_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("bridge"), top_ ())); + } + + void Domain:: + bridge_next (Type const& o) + { + bridge_post (o); + bridge_pre (o); + } + + void Domain:: + bridge_post (Type const&) + { + pop_ (); + } + + void Domain:: + sharedResource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("sharedResource"), top_ ())); + } + + void Domain:: + sharedResource_next (Type const& o) + { + sharedResource_post (o); + sharedResource_pre (o); + } + + void Domain:: + sharedResource_post (Type const&) + { + pop_ (); + } + + void Domain:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void Domain:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void Domain:: + infoProperty_post (Type const&) + { + pop_ (); + } + + // Bridge + // + // + + Bridge:: + Bridge (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Bridge:: + Bridge () + { + } + + void Bridge:: + traverse (Type const& o) + { + Traversal::Bridge::traverse (o); + } + + void Bridge:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Bridge::name (o); + pop_ (); + } + + void Bridge:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::Bridge::label (o); + pop_ (); + } + + void Bridge:: + connect_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("connect"), top_ ())); + } + + void Bridge:: + connect_next (Type const& o) + { + connect_post (o); + connect_pre (o); + } + + void Bridge:: + connect_post (Type const&) + { + pop_ (); + } + + void Bridge:: + resource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resource"), top_ ())); + } + + void Bridge:: + resource_next (Type const& o) + { + resource_post (o); + resource_pre (o); + } + + void Bridge:: + resource_post (Type const&) + { + pop_ (); + } + + // Interconnect + // + // + + Interconnect:: + Interconnect (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Interconnect:: + Interconnect () + { + } + + void Interconnect:: + traverse (Type const& o) + { + Traversal::Interconnect::traverse (o); + } + + void Interconnect:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Interconnect::name (o); + pop_ (); + } + + void Interconnect:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::Interconnect::label (o); + pop_ (); + } + + void Interconnect:: + connection_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("connection"), top_ ())); + } + + void Interconnect:: + connection_next (Type const& o) + { + connection_post (o); + connection_pre (o); + } + + void Interconnect:: + connection_post (Type const&) + { + pop_ (); + } + + void Interconnect:: + connect_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("connect"), top_ ())); + } + + void Interconnect:: + connect_next (Type const& o) + { + connect_post (o); + connect_pre (o); + } + + void Interconnect:: + connect_post (Type const&) + { + pop_ (); + } + + void Interconnect:: + resource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resource"), top_ ())); + } + + void Interconnect:: + resource_next (Type const& o) + { + resource_post (o); + resource_pre (o); + } + + void Interconnect:: + resource_post (Type const&) + { + pop_ (); + } + + // Node + // + // + + Node:: + Node (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Node:: + Node () + { + } + + void Node:: + traverse (Type const& o) + { + Traversal::Node::traverse (o); + } + + void Node:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::Node::name (o); + pop_ (); + } + + void Node:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::Node::label (o); + pop_ (); + } + + void Node:: + connection_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("connection"), top_ ())); + } + + void Node:: + connection_next (Type const& o) + { + connection_post (o); + connection_pre (o); + } + + void Node:: + connection_post (Type const&) + { + pop_ (); + } + + void Node:: + sharedResource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("sharedResource"), top_ ())); + } + + void Node:: + sharedResource_next (Type const& o) + { + sharedResource_post (o); + sharedResource_pre (o); + } + + void Node:: + sharedResource_post (Type const&) + { + pop_ (); + } + + void Node:: + resource_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resource"), top_ ())); + } + + void Node:: + resource_next (Type const& o) + { + resource_post (o); + resource_pre (o); + } + + void Node:: + resource_post (Type const&) + { + pop_ (); + } + + // SharedResource + // + // + + SharedResource:: + SharedResource (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SharedResource:: + SharedResource () + { + } + + void SharedResource:: + traverse (Type const& o) + { + Traversal::SharedResource::traverse (o); + } + + void SharedResource:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::SharedResource::name (o); + pop_ (); + } + + void SharedResource:: + resourceType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("resourceType"), top_ ())); + Traversal::SharedResource::resourceType (o); + pop_ (); + } + + void SharedResource:: + node (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("node"), top_ ())); + Traversal::SharedResource::node (o); + pop_ (); + } + + void SharedResource:: + property (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("property"), top_ ())); + Traversal::SharedResource::property (o); + pop_ (); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/cdd.hpp b/modules/CIAO/DAnCE/Config_Handlers/cdd.hpp new file mode 100644 index 00000000000..37cf50be3db --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cdd.hpp @@ -0,0 +1,1654 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef CDD_HPP +#define CDD_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class Domain; + class Bridge; + class Interconnect; + class Node; + class SharedResource; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "Basic_Deployment_Data.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export Domain : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Domain, ACE_Null_Mutex > _ptr; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // node + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > >::iterator node_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > >::const_iterator node_const_iterator; + node_iterator begin_node (); + node_iterator end_node (); + node_const_iterator begin_node () const; + node_const_iterator end_node () const; + void add_node ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > const& ); + XSCRT::Type* node_ptr ( std::basic_string idref ); + size_t count_node (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > > node_; + + // interconnect + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > >::iterator interconnect_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > >::const_iterator interconnect_const_iterator; + interconnect_iterator begin_interconnect (); + interconnect_iterator end_interconnect (); + interconnect_const_iterator begin_interconnect () const; + interconnect_const_iterator end_interconnect () const; + void add_interconnect ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > const& ); + XSCRT::Type* interconnect_ptr ( std::basic_string idref ); + size_t count_interconnect (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > > interconnect_; + + // bridge + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > >::iterator bridge_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > >::const_iterator bridge_const_iterator; + bridge_iterator begin_bridge (); + bridge_iterator end_bridge (); + bridge_const_iterator begin_bridge () const; + bridge_const_iterator end_bridge () const; + void add_bridge ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > const& ); + XSCRT::Type* bridge_ptr ( std::basic_string idref ); + size_t count_bridge (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > > bridge_; + + // sharedResource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > >::iterator sharedResource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > >::const_iterator sharedResource_const_iterator; + sharedResource_iterator begin_sharedResource (); + sharedResource_iterator end_sharedResource (); + sharedResource_const_iterator begin_sharedResource () const; + sharedResource_const_iterator end_sharedResource () const; + void add_sharedResource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > const& ); + XSCRT::Type* sharedResource_ptr ( std::basic_string idref ); + size_t count_sharedResource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > > sharedResource_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + public: + Domain (::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > > const& node__); + + Domain (::XSCRT::XML::Element< ACE_TCHAR > const&); + Domain (Domain const& s); + + Domain& + operator= (Domain const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Bridge : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Bridge, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // connect + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > >::iterator connect_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > >::const_iterator connect_const_iterator; + connect_iterator begin_connect (); + connect_iterator end_connect (); + connect_const_iterator begin_connect () const; + connect_const_iterator end_connect () const; + void add_connect ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > const& ); + XSCRT::Type* connect_ptr ( std::basic_string idref ); + size_t count_connect (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > > connect_; + + // resource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > >::iterator resource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > >::const_iterator resource_const_iterator; + resource_iterator begin_resource (); + resource_iterator end_resource (); + resource_const_iterator begin_resource () const; + resource_const_iterator end_resource () const; + void add_resource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > const& ); + XSCRT::Type* resource_ptr ( std::basic_string idref ); + size_t count_resource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > > resource_; + + public: + Bridge (::XMLSchema::string< ACE_TCHAR > const& name__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > > const& connect__); + + Bridge (::XSCRT::XML::Element< ACE_TCHAR > const&); + Bridge (Bridge const& s); + + Bridge& + operator= (Bridge const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Interconnect : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Interconnect, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // connection + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > >::iterator connection_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > >::const_iterator connection_const_iterator; + connection_iterator begin_connection (); + connection_iterator end_connection (); + connection_const_iterator begin_connection () const; + connection_const_iterator end_connection () const; + void add_connection ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > const& ); + XSCRT::Type* connection_ptr ( std::basic_string idref ); + size_t count_connection (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Bridge, ACE_Null_Mutex > > connection_; + + // connect + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > >::iterator connect_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > >::const_iterator connect_const_iterator; + connect_iterator begin_connect (); + connect_iterator end_connect (); + connect_const_iterator begin_connect () const; + connect_const_iterator end_connect () const; + void add_connect ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > const& ); + XSCRT::Type* connect_ptr ( std::basic_string idref ); + size_t count_connect (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > > connect_; + + // resource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > >::iterator resource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > >::const_iterator resource_const_iterator; + resource_iterator begin_resource (); + resource_iterator end_resource (); + resource_const_iterator begin_resource () const; + resource_const_iterator end_resource () const; + void add_resource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > const& ); + XSCRT::Type* resource_ptr ( std::basic_string idref ); + size_t count_resource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > > resource_; + + public: + Interconnect (::XMLSchema::string< ACE_TCHAR > const& name__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Node, ACE_Null_Mutex > > const& connect__); + + Interconnect (::XSCRT::XML::Element< ACE_TCHAR > const&); + Interconnect (Interconnect const& s); + + Interconnect& + operator= (Interconnect const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export Node : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Node, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // connection + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > >::iterator connection_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > >::const_iterator connection_const_iterator; + connection_iterator begin_connection (); + connection_iterator end_connection (); + connection_const_iterator begin_connection () const; + connection_const_iterator end_connection () const; + void add_connection ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > const& ); + XSCRT::Type* connection_ptr ( std::basic_string idref ); + size_t count_connection (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Interconnect, ACE_Null_Mutex > > connection_; + + // sharedResource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > >::iterator sharedResource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > >::const_iterator sharedResource_const_iterator; + sharedResource_iterator begin_sharedResource (); + sharedResource_iterator end_sharedResource (); + sharedResource_const_iterator begin_sharedResource () const; + sharedResource_const_iterator end_sharedResource () const; + void add_sharedResource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > const& ); + XSCRT::Type* sharedResource_ptr ( std::basic_string idref ); + size_t count_sharedResource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SharedResource, ACE_Null_Mutex > > sharedResource_; + + // resource + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > >::iterator resource_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > >::const_iterator resource_const_iterator; + resource_iterator begin_resource (); + resource_iterator end_resource (); + resource_const_iterator begin_resource () const; + resource_const_iterator end_resource () const; + void add_resource ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > const& ); + XSCRT::Type* resource_ptr ( std::basic_string idref ); + size_t count_resource (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Resource, ACE_Null_Mutex > > resource_; + + public: + Node (::XMLSchema::string< ACE_TCHAR > const& name__); + + Node (::XSCRT::XML::Element< ACE_TCHAR > const&); + Node (Node const& s); + + Node& + operator= (Node const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export SharedResource : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < SharedResource, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // resourceType + // + public: + ::XMLSchema::string< ACE_TCHAR > const& resourceType () const; + void resourceType (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceType_; + + // node + // + public: + ::CIAO::Config_Handlers::Node const& node () const; + void node (::CIAO::Config_Handlers::Node const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::Node > node_; + + // property + // + public: + ::CIAO::Config_Handlers::SatisfierProperty const& property () const; + void property (::CIAO::Config_Handlers::SatisfierProperty const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierProperty > property_; + + public: + SharedResource (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& resourceType__, + ::CIAO::Config_Handlers::Node const& node__, + ::CIAO::Config_Handlers::SatisfierProperty const& property__); + + SharedResource (::XSCRT::XML::Element< ACE_TCHAR > const&); + SharedResource (SharedResource const& s); + + SharedResource& + operator= (SharedResource const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export Domain : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Domain > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + node (Type&); + + virtual void + node (Type const&); + + virtual void + node_pre (Type&); + + virtual void + node_pre (Type const&); + + virtual void + node_next (Type&); + + virtual void + node_next (Type const&); + + virtual void + node_post (Type&); + + virtual void + node_post (Type const&); + + virtual void + interconnect (Type&); + + virtual void + interconnect (Type const&); + + virtual void + interconnect_pre (Type&); + + virtual void + interconnect_pre (Type const&); + + virtual void + interconnect_next (Type&); + + virtual void + interconnect_next (Type const&); + + virtual void + interconnect_post (Type&); + + virtual void + interconnect_post (Type const&); + + virtual void + interconnect_none (Type&); + + virtual void + interconnect_none (Type const&); + + virtual void + bridge (Type&); + + virtual void + bridge (Type const&); + + virtual void + bridge_pre (Type&); + + virtual void + bridge_pre (Type const&); + + virtual void + bridge_next (Type&); + + virtual void + bridge_next (Type const&); + + virtual void + bridge_post (Type&); + + virtual void + bridge_post (Type const&); + + virtual void + bridge_none (Type&); + + virtual void + bridge_none (Type const&); + + virtual void + sharedResource (Type&); + + virtual void + sharedResource (Type const&); + + virtual void + sharedResource_pre (Type&); + + virtual void + sharedResource_pre (Type const&); + + virtual void + sharedResource_next (Type&); + + virtual void + sharedResource_next (Type const&); + + virtual void + sharedResource_post (Type&); + + virtual void + sharedResource_post (Type const&); + + virtual void + sharedResource_none (Type&); + + virtual void + sharedResource_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Bridge : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Bridge > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + connect (Type&); + + virtual void + connect (Type const&); + + virtual void + connect_pre (Type&); + + virtual void + connect_pre (Type const&); + + virtual void + connect_next (Type&); + + virtual void + connect_next (Type const&); + + virtual void + connect_post (Type&); + + virtual void + connect_post (Type const&); + + virtual void + resource (Type&); + + virtual void + resource (Type const&); + + virtual void + resource_pre (Type&); + + virtual void + resource_pre (Type const&); + + virtual void + resource_next (Type&); + + virtual void + resource_next (Type const&); + + virtual void + resource_post (Type&); + + virtual void + resource_post (Type const&); + + virtual void + resource_none (Type&); + + virtual void + resource_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Interconnect : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Interconnect > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + connection (Type&); + + virtual void + connection (Type const&); + + virtual void + connection_pre (Type&); + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type&); + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type&); + + virtual void + connection_post (Type const&); + + virtual void + connection_none (Type&); + + virtual void + connection_none (Type const&); + + virtual void + connect (Type&); + + virtual void + connect (Type const&); + + virtual void + connect_pre (Type&); + + virtual void + connect_pre (Type const&); + + virtual void + connect_next (Type&); + + virtual void + connect_next (Type const&); + + virtual void + connect_post (Type&); + + virtual void + connect_post (Type const&); + + virtual void + resource (Type&); + + virtual void + resource (Type const&); + + virtual void + resource_pre (Type&); + + virtual void + resource_pre (Type const&); + + virtual void + resource_next (Type&); + + virtual void + resource_next (Type const&); + + virtual void + resource_post (Type&); + + virtual void + resource_post (Type const&); + + virtual void + resource_none (Type&); + + virtual void + resource_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export Node : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Node > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + connection (Type&); + + virtual void + connection (Type const&); + + virtual void + connection_pre (Type&); + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type&); + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type&); + + virtual void + connection_post (Type const&); + + virtual void + connection_none (Type&); + + virtual void + connection_none (Type const&); + + virtual void + sharedResource (Type&); + + virtual void + sharedResource (Type const&); + + virtual void + sharedResource_pre (Type&); + + virtual void + sharedResource_pre (Type const&); + + virtual void + sharedResource_next (Type&); + + virtual void + sharedResource_next (Type const&); + + virtual void + sharedResource_post (Type&); + + virtual void + sharedResource_post (Type const&); + + virtual void + sharedResource_none (Type&); + + virtual void + sharedResource_none (Type const&); + + virtual void + resource (Type&); + + virtual void + resource (Type const&); + + virtual void + resource_pre (Type&); + + virtual void + resource_pre (Type const&); + + virtual void + resource_next (Type&); + + virtual void + resource_next (Type const&); + + virtual void + resource_post (Type&); + + virtual void + resource_post (Type const&); + + virtual void + resource_none (Type&); + + virtual void + resource_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export SharedResource : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SharedResource > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + resourceType (Type&); + + virtual void + resourceType (Type const&); + + virtual void + node (Type&); + + virtual void + node (Type const&); + + virtual void + property (Type&); + + virtual void + property (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct Domain : Traversal::Domain, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Domain Type; + Domain (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + node_pre (Type &o) + { + this->node_pre (const_cast (o)); + } + + virtual void + node_pre (Type const&); + + virtual void + node_next (Type &o) + { + this->node_next (const_cast (o)); + } + + virtual void + node_next (Type const&); + + virtual void + node_post (Type &o) + { + this->node_post (const_cast (o)); + } + + virtual void + node_post (Type const&); + + virtual void + interconnect_pre (Type &o) + { + this->interconnect_pre (const_cast (o)); + } + + virtual void + interconnect_pre (Type const&); + + virtual void + interconnect_next (Type &o) + { + this->interconnect_next (const_cast (o)); + } + + virtual void + interconnect_next (Type const&); + + virtual void + interconnect_post (Type &o) + { + this->interconnect_post (const_cast (o)); + } + + virtual void + interconnect_post (Type const&); + + virtual void + bridge_pre (Type &o) + { + this->bridge_pre (const_cast (o)); + } + + virtual void + bridge_pre (Type const&); + + virtual void + bridge_next (Type &o) + { + this->bridge_next (const_cast (o)); + } + + virtual void + bridge_next (Type const&); + + virtual void + bridge_post (Type &o) + { + this->bridge_post (const_cast (o)); + } + + virtual void + bridge_post (Type const&); + + virtual void + sharedResource_pre (Type &o) + { + this->sharedResource_pre (const_cast (o)); + } + + virtual void + sharedResource_pre (Type const&); + + virtual void + sharedResource_next (Type &o) + { + this->sharedResource_next (const_cast (o)); + } + + virtual void + sharedResource_next (Type const&); + + virtual void + sharedResource_post (Type &o) + { + this->sharedResource_post (const_cast (o)); + } + + virtual void + sharedResource_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + protected: + Domain (); + }; + + struct Bridge : Traversal::Bridge, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Bridge Type; + Bridge (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + connect_pre (Type &o) + { + this->connect_pre (const_cast (o)); + } + + virtual void + connect_pre (Type const&); + + virtual void + connect_next (Type &o) + { + this->connect_next (const_cast (o)); + } + + virtual void + connect_next (Type const&); + + virtual void + connect_post (Type &o) + { + this->connect_post (const_cast (o)); + } + + virtual void + connect_post (Type const&); + + virtual void + resource_pre (Type &o) + { + this->resource_pre (const_cast (o)); + } + + virtual void + resource_pre (Type const&); + + virtual void + resource_next (Type &o) + { + this->resource_next (const_cast (o)); + } + + virtual void + resource_next (Type const&); + + virtual void + resource_post (Type &o) + { + this->resource_post (const_cast (o)); + } + + virtual void + resource_post (Type const&); + + protected: + Bridge (); + }; + + struct Interconnect : Traversal::Interconnect, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Interconnect Type; + Interconnect (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + connection_pre (Type &o) + { + this->connection_pre (const_cast (o)); + } + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type &o) + { + this->connection_next (const_cast (o)); + } + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type &o) + { + this->connection_post (const_cast (o)); + } + + virtual void + connection_post (Type const&); + + virtual void + connect_pre (Type &o) + { + this->connect_pre (const_cast (o)); + } + + virtual void + connect_pre (Type const&); + + virtual void + connect_next (Type &o) + { + this->connect_next (const_cast (o)); + } + + virtual void + connect_next (Type const&); + + virtual void + connect_post (Type &o) + { + this->connect_post (const_cast (o)); + } + + virtual void + connect_post (Type const&); + + virtual void + resource_pre (Type &o) + { + this->resource_pre (const_cast (o)); + } + + virtual void + resource_pre (Type const&); + + virtual void + resource_next (Type &o) + { + this->resource_next (const_cast (o)); + } + + virtual void + resource_next (Type const&); + + virtual void + resource_post (Type &o) + { + this->resource_post (const_cast (o)); + } + + virtual void + resource_post (Type const&); + + protected: + Interconnect (); + }; + + struct Node : Traversal::Node, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Node Type; + Node (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + connection_pre (Type &o) + { + this->connection_pre (const_cast (o)); + } + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type &o) + { + this->connection_next (const_cast (o)); + } + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type &o) + { + this->connection_post (const_cast (o)); + } + + virtual void + connection_post (Type const&); + + virtual void + sharedResource_pre (Type &o) + { + this->sharedResource_pre (const_cast (o)); + } + + virtual void + sharedResource_pre (Type const&); + + virtual void + sharedResource_next (Type &o) + { + this->sharedResource_next (const_cast (o)); + } + + virtual void + sharedResource_next (Type const&); + + virtual void + sharedResource_post (Type &o) + { + this->sharedResource_post (const_cast (o)); + } + + virtual void + sharedResource_post (Type const&); + + virtual void + resource_pre (Type &o) + { + this->resource_pre (const_cast (o)); + } + + virtual void + resource_pre (Type const&); + + virtual void + resource_next (Type &o) + { + this->resource_next (const_cast (o)); + } + + virtual void + resource_next (Type const&); + + virtual void + resource_post (Type &o) + { + this->resource_post (const_cast (o)); + } + + virtual void + resource_post (Type const&); + + protected: + Node (); + }; + + struct SharedResource : Traversal::SharedResource, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::SharedResource Type; + SharedResource (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + resourceType (Type &o) + { + this->resourceType (const_cast (o)); + } + + virtual void + resourceType (Type const&); + + virtual void + node (Type &o) + { + this->node (const_cast (o)); + } + + virtual void + node (Type const&); + + virtual void + property (Type &o) + { + this->property (const_cast (o)); + } + + virtual void + property (Type const&); + + protected: + SharedResource (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // CDD_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/cdp.cpp b/modules/CIAO/DAnCE/Config_Handlers/cdp.cpp new file mode 100644 index 00000000000..f1e8538a788 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cdp.cpp @@ -0,0 +1,2366 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "cdp.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // PlanSubcomponentPropertyReference + // + + PlanSubcomponentPropertyReference:: + PlanSubcomponentPropertyReference (::XMLSchema::string< ACE_TCHAR > const& propertyName__, + ::CIAO::Config_Handlers::InstanceDeploymentDescription const& instance__) + : + ::XSCRT::Type (), + propertyName_ (new ::XMLSchema::string< ACE_TCHAR > (propertyName__)), + instance_ (new ::CIAO::Config_Handlers::InstanceDeploymentDescription (instance__)), + regulator__ () + { + propertyName_->container (this); + instance_->container (this); + } + + PlanSubcomponentPropertyReference:: + PlanSubcomponentPropertyReference (PlanSubcomponentPropertyReference const& s) + : + ::XSCRT::Type (), + propertyName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.propertyName_)), + instance_ (new ::CIAO::Config_Handlers::InstanceDeploymentDescription (*s.instance_)), + regulator__ () + { + propertyName_->container (this); + instance_->container (this); + } + + PlanSubcomponentPropertyReference& PlanSubcomponentPropertyReference:: + operator= (PlanSubcomponentPropertyReference const& s) + { + propertyName (*s.propertyName_); + + instance (*s.instance_); + + return *this; + } + + + // PlanSubcomponentPropertyReference + // + ::XMLSchema::string< ACE_TCHAR > const& PlanSubcomponentPropertyReference:: + propertyName () const + { + return *propertyName_; + } + + void PlanSubcomponentPropertyReference:: + propertyName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *propertyName_ = e; + } + + // PlanSubcomponentPropertyReference + // + ::CIAO::Config_Handlers::InstanceDeploymentDescription const& PlanSubcomponentPropertyReference:: + instance () const + { + return *instance_; + } + + void PlanSubcomponentPropertyReference:: + instance (::CIAO::Config_Handlers::InstanceDeploymentDescription const& e) + { + *instance_ = e; + } + + + // PlanPropertyMapping + // + + PlanPropertyMapping:: + PlanPropertyMapping (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& externalName__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > > const& delegatesTo__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + externalName_ (new ::XMLSchema::string< ACE_TCHAR > (externalName__)), + delegatesTo_ (delegatesTo__), + regulator__ () + { + name_->container (this); + externalName_->container (this); + } + + PlanPropertyMapping:: + PlanPropertyMapping (PlanPropertyMapping const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + source_ (s.source_), + externalName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.externalName_)), + delegatesTo_ (s.delegatesTo_), + regulator__ () + { + name_->container (this); + externalName_->container (this); + } + + PlanPropertyMapping& PlanPropertyMapping:: + operator= (PlanPropertyMapping const& s) + { + name (*s.name_); + + source_ = s.source_; + + externalName (*s.externalName_); + + delegatesTo_ = s.delegatesTo_; + + return *this; + } + + + // PlanPropertyMapping + // + ::XMLSchema::string< ACE_TCHAR > const& PlanPropertyMapping:: + name () const + { + return *name_; + } + + void PlanPropertyMapping:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // PlanPropertyMapping + // + PlanPropertyMapping::source_iterator PlanPropertyMapping:: + begin_source () + { + return source_.begin (); + } + + PlanPropertyMapping::source_iterator PlanPropertyMapping:: + end_source () + { + return source_.end (); + } + + PlanPropertyMapping::source_const_iterator PlanPropertyMapping:: + begin_source () const + { + return source_.begin (); + } + + PlanPropertyMapping::source_const_iterator PlanPropertyMapping:: + end_source () const + { + return source_.end (); + } + + void PlanPropertyMapping:: + add_source (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + source_.push_back (e); + } + + size_t PlanPropertyMapping:: + count_source(void) const + { + return source_.size (); + } + + // PlanPropertyMapping + // + ::XMLSchema::string< ACE_TCHAR > const& PlanPropertyMapping:: + externalName () const + { + return *externalName_; + } + + void PlanPropertyMapping:: + externalName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *externalName_ = e; + } + + // PlanPropertyMapping + // + PlanPropertyMapping::delegatesTo_iterator PlanPropertyMapping:: + begin_delegatesTo () + { + return delegatesTo_.begin (); + } + + PlanPropertyMapping::delegatesTo_iterator PlanPropertyMapping:: + end_delegatesTo () + { + return delegatesTo_.end (); + } + + PlanPropertyMapping::delegatesTo_const_iterator PlanPropertyMapping:: + begin_delegatesTo () const + { + return delegatesTo_.begin (); + } + + PlanPropertyMapping::delegatesTo_const_iterator PlanPropertyMapping:: + end_delegatesTo () const + { + return delegatesTo_.end (); + } + + void PlanPropertyMapping:: + add_delegatesTo (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > const& e) + { + delegatesTo_.push_back (e); + } + + size_t PlanPropertyMapping:: + count_delegatesTo(void) const + { + return delegatesTo_.size (); + } + + + // deploymentPlan + // + + deploymentPlan:: + deploymentPlan () + : + regulator__ () + { + } + + deploymentPlan:: + deploymentPlan (deploymentPlan const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + realizes_ (s.realizes_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.realizes_) : 0), + implementation_ (s.implementation_), + instance_ (s.instance_), + connection_ (s.connection_), + externalProperty_ (s.externalProperty_), + dependsOn_ (s.dependsOn_), + artifact_ (s.artifact_), + infoProperty_ (s.infoProperty_), + localityConstraint_ (s.localityConstraint_), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (realizes_.get ()) realizes_->container (this); + } + + deploymentPlan& deploymentPlan:: + operator= (deploymentPlan const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.realizes_.get ()) + realizes (*(s.realizes_)); + else + realizes_.reset (0); + + implementation_ = s.implementation_; + + instance_ = s.instance_; + + connection_ = s.connection_; + + externalProperty_ = s.externalProperty_; + + dependsOn_ = s.dependsOn_; + + artifact_ = s.artifact_; + + infoProperty_ = s.infoProperty_; + + localityConstraint_ = s.localityConstraint_; + + return *this; + } + + + // deploymentPlan + // + bool deploymentPlan:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& deploymentPlan:: + label () const + { + return *label_; + } + + void deploymentPlan:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // deploymentPlan + // + bool deploymentPlan:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& deploymentPlan:: + UUID () const + { + return *UUID_; + } + + void deploymentPlan:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // deploymentPlan + // + bool deploymentPlan:: + realizes_p () const + { + return realizes_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& deploymentPlan:: + realizes () const + { + return *realizes_; + } + + void deploymentPlan:: + realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e) + { + if (realizes_.get ()) + { + *realizes_ = e; + } + + else + { + realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e)); + realizes_->container (this); + } + } + + // deploymentPlan + // + deploymentPlan::implementation_iterator deploymentPlan:: + begin_implementation () + { + return implementation_.begin (); + } + + deploymentPlan::implementation_iterator deploymentPlan:: + end_implementation () + { + return implementation_.end (); + } + + deploymentPlan::implementation_const_iterator deploymentPlan:: + begin_implementation () const + { + return implementation_.begin (); + } + + deploymentPlan::implementation_const_iterator deploymentPlan:: + end_implementation () const + { + return implementation_.end (); + } + + void deploymentPlan:: + add_implementation (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::MonolithicDeploymentDescription, ACE_Null_Mutex > const& e) + { + implementation_.push_back (e); + } + + size_t deploymentPlan:: + count_implementation(void) const + { + return implementation_.size (); + } + + // deploymentPlan + // + deploymentPlan::instance_iterator deploymentPlan:: + begin_instance () + { + return instance_.begin (); + } + + deploymentPlan::instance_iterator deploymentPlan:: + end_instance () + { + return instance_.end (); + } + + deploymentPlan::instance_const_iterator deploymentPlan:: + begin_instance () const + { + return instance_.begin (); + } + + deploymentPlan::instance_const_iterator deploymentPlan:: + end_instance () const + { + return instance_.end (); + } + + void deploymentPlan:: + add_instance (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceDeploymentDescription, ACE_Null_Mutex > const& e) + { + instance_.push_back (e); + } + + size_t deploymentPlan:: + count_instance(void) const + { + return instance_.size (); + } + + // deploymentPlan + // + deploymentPlan::connection_iterator deploymentPlan:: + begin_connection () + { + return connection_.begin (); + } + + deploymentPlan::connection_iterator deploymentPlan:: + end_connection () + { + return connection_.end (); + } + + deploymentPlan::connection_const_iterator deploymentPlan:: + begin_connection () const + { + return connection_.begin (); + } + + deploymentPlan::connection_const_iterator deploymentPlan:: + end_connection () const + { + return connection_.end (); + } + + void deploymentPlan:: + add_connection (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanConnectionDescription, ACE_Null_Mutex > const& e) + { + connection_.push_back (e); + } + + size_t deploymentPlan:: + count_connection(void) const + { + return connection_.size (); + } + + // deploymentPlan + // + deploymentPlan::externalProperty_iterator deploymentPlan:: + begin_externalProperty () + { + return externalProperty_.begin (); + } + + deploymentPlan::externalProperty_iterator deploymentPlan:: + end_externalProperty () + { + return externalProperty_.end (); + } + + deploymentPlan::externalProperty_const_iterator deploymentPlan:: + begin_externalProperty () const + { + return externalProperty_.begin (); + } + + deploymentPlan::externalProperty_const_iterator deploymentPlan:: + end_externalProperty () const + { + return externalProperty_.end (); + } + + void deploymentPlan:: + add_externalProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanPropertyMapping, ACE_Null_Mutex > const& e) + { + externalProperty_.push_back (e); + } + + size_t deploymentPlan:: + count_externalProperty(void) const + { + return externalProperty_.size (); + } + + // deploymentPlan + // + deploymentPlan::dependsOn_iterator deploymentPlan:: + begin_dependsOn () + { + return dependsOn_.begin (); + } + + deploymentPlan::dependsOn_iterator deploymentPlan:: + end_dependsOn () + { + return dependsOn_.end (); + } + + deploymentPlan::dependsOn_const_iterator deploymentPlan:: + begin_dependsOn () const + { + return dependsOn_.begin (); + } + + deploymentPlan::dependsOn_const_iterator deploymentPlan:: + end_dependsOn () const + { + return dependsOn_.end (); + } + + void deploymentPlan:: + add_dependsOn (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > const& e) + { + dependsOn_.push_back (e); + } + + size_t deploymentPlan:: + count_dependsOn(void) const + { + return dependsOn_.size (); + } + + // deploymentPlan + // + deploymentPlan::artifact_iterator deploymentPlan:: + begin_artifact () + { + return artifact_.begin (); + } + + deploymentPlan::artifact_iterator deploymentPlan:: + end_artifact () + { + return artifact_.end (); + } + + deploymentPlan::artifact_const_iterator deploymentPlan:: + begin_artifact () const + { + return artifact_.begin (); + } + + deploymentPlan::artifact_const_iterator deploymentPlan:: + end_artifact () const + { + return artifact_.end (); + } + + void deploymentPlan:: + add_artifact (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ArtifactDeploymentDescription, ACE_Null_Mutex > const& e) + { + artifact_.push_back (e); + } + + size_t deploymentPlan:: + count_artifact(void) const + { + return artifact_.size (); + } + + // deploymentPlan + // + deploymentPlan::infoProperty_iterator deploymentPlan:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + deploymentPlan::infoProperty_iterator deploymentPlan:: + end_infoProperty () + { + return infoProperty_.end (); + } + + deploymentPlan::infoProperty_const_iterator deploymentPlan:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + deploymentPlan::infoProperty_const_iterator deploymentPlan:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void deploymentPlan:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t deploymentPlan:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // deploymentPlan + // + deploymentPlan::localityConstraint_iterator deploymentPlan:: + begin_localityConstraint () + { + return localityConstraint_.begin (); + } + + deploymentPlan::localityConstraint_iterator deploymentPlan:: + end_localityConstraint () + { + return localityConstraint_.end (); + } + + deploymentPlan::localityConstraint_const_iterator deploymentPlan:: + begin_localityConstraint () const + { + return localityConstraint_.begin (); + } + + deploymentPlan::localityConstraint_const_iterator deploymentPlan:: + end_localityConstraint () const + { + return localityConstraint_.end (); + } + + void deploymentPlan:: + add_localityConstraint (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanLocality, ACE_Null_Mutex > const& e) + { + localityConstraint_.push_back (e); + } + + size_t deploymentPlan:: + count_localityConstraint(void) const + { + return localityConstraint_.size (); + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // PlanSubcomponentPropertyReference + // + + PlanSubcomponentPropertyReference:: + PlanSubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("propertyName")) + { + propertyName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + propertyName_->container (this); + } + + else if (n == ACE_TEXT("instance")) + { + instance_ = ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceDeploymentDescription > (new ::CIAO::Config_Handlers::InstanceDeploymentDescription (e)); + instance_->container (this); + } + + else + { + } + } + } + + // PlanPropertyMapping + // + + PlanPropertyMapping:: + PlanPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("source")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_source (t); + } + + else if (n == ACE_TEXT("externalName")) + { + externalName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + externalName_->container (this); + } + + else if (n == ACE_TEXT("delegatesTo")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference (e)); + add_delegatesTo (t); + } + + else + { + } + } + } + + // deploymentPlan + // + + deploymentPlan:: + deploymentPlan (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("realizes")) + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription t (e); + realizes (t); + } + + else if (n == ACE_TEXT("implementation")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::MonolithicDeploymentDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::MonolithicDeploymentDescription (e)); + add_implementation (t); + } + + else if (n == ACE_TEXT("instance")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceDeploymentDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::InstanceDeploymentDescription (e)); + add_instance (t); + } + + else if (n == ACE_TEXT("connection")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanConnectionDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PlanConnectionDescription (e)); + add_connection (t); + } + + else if (n == ACE_TEXT("externalProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanPropertyMapping, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PlanPropertyMapping (e)); + add_externalProperty (t); + } + + else if (n == ACE_TEXT("dependsOn")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ImplementationDependency (e)); + add_dependsOn (t); + } + + else if (n == ACE_TEXT("artifact")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ArtifactDeploymentDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ArtifactDeploymentDescription (e)); + add_artifact (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else if (n == ACE_TEXT("localityConstraint")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanLocality, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PlanLocality (e)); + add_localityConstraint (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct PlanSubcomponentPropertyReferenceTypeInfoInitializer + { + PlanSubcomponentPropertyReferenceTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PlanSubcomponentPropertyReference)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PlanSubcomponentPropertyReferenceTypeInfoInitializer PlanSubcomponentPropertyReferenceTypeInfoInitializer_; + + struct PlanPropertyMappingTypeInfoInitializer + { + PlanPropertyMappingTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PlanPropertyMapping)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PlanPropertyMappingTypeInfoInitializer PlanPropertyMappingTypeInfoInitializer_; + + struct deploymentPlanTypeInfoInitializer + { + deploymentPlanTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::deploymentPlan)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + deploymentPlanTypeInfoInitializer deploymentPlanTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // PlanSubcomponentPropertyReference + // + // + + void PlanSubcomponentPropertyReference:: + traverse (Type& o) + { + pre (o); + propertyName (o); + instance (o); + post (o); + } + + void PlanSubcomponentPropertyReference:: + traverse (Type const& o) + { + pre (o); + propertyName (o); + instance (o); + post (o); + } + + void PlanSubcomponentPropertyReference:: + pre (Type&) + { + } + + void PlanSubcomponentPropertyReference:: + pre (Type const&) + { + } + + void PlanSubcomponentPropertyReference:: + propertyName (Type& o) + { + dispatch (o.propertyName ()); + } + + void PlanSubcomponentPropertyReference:: + propertyName (Type const& o) + { + dispatch (o.propertyName ()); + } + + void PlanSubcomponentPropertyReference:: + instance (Type& o) + { + dispatch (o.instance ()); + } + + void PlanSubcomponentPropertyReference:: + instance (Type const& o) + { + dispatch (o.instance ()); + } + + void PlanSubcomponentPropertyReference:: + post (Type&) + { + } + + void PlanSubcomponentPropertyReference:: + post (Type const&) + { + } + + // PlanPropertyMapping + // + // + + void PlanPropertyMapping:: + traverse (Type& o) + { + pre (o); + name (o); + source (o); + externalName (o); + delegatesTo (o); + post (o); + } + + void PlanPropertyMapping:: + traverse (Type const& o) + { + pre (o); + name (o); + source (o); + externalName (o); + delegatesTo (o); + post (o); + } + + void PlanPropertyMapping:: + pre (Type&) + { + } + + void PlanPropertyMapping:: + pre (Type const&) + { + } + + void PlanPropertyMapping:: + name (Type& o) + { + dispatch (o.name ()); + } + + void PlanPropertyMapping:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void PlanPropertyMapping:: + source (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanPropertyMapping::source_iterator b (o.begin_source()), e (o.end_source()); + + if (b != e) + { + source_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) source_next (o); + } + + source_post (o); + } + + else source_none (o); + } + + void PlanPropertyMapping:: + source (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanPropertyMapping::source_const_iterator b (o.begin_source()), e (o.end_source()); + + if (b != e) + { + source_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) source_next (o); + } + + source_post (o); + } + + else source_none (o); + } + + void PlanPropertyMapping:: + source_pre (Type&) + { + } + + void PlanPropertyMapping:: + source_pre (Type const&) + { + } + + void PlanPropertyMapping:: + source_next (Type&) + { + } + + void PlanPropertyMapping:: + source_next (Type const&) + { + } + + void PlanPropertyMapping:: + source_post (Type&) + { + } + + void PlanPropertyMapping:: + source_post (Type const&) + { + } + + void PlanPropertyMapping:: + source_none (Type&) + { + } + + void PlanPropertyMapping:: + source_none (Type const&) + { + } + + void PlanPropertyMapping:: + externalName (Type& o) + { + dispatch (o.externalName ()); + } + + void PlanPropertyMapping:: + externalName (Type const& o) + { + dispatch (o.externalName ()); + } + + void PlanPropertyMapping:: + delegatesTo (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanPropertyMapping::delegatesTo_iterator b (o.begin_delegatesTo()), e (o.end_delegatesTo()); + + if (b != e) + { + delegatesTo_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) delegatesTo_next (o); + } + + delegatesTo_post (o); + } + } + + void PlanPropertyMapping:: + delegatesTo (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PlanPropertyMapping::delegatesTo_const_iterator b (o.begin_delegatesTo()), e (o.end_delegatesTo()); + + if (b != e) + { + delegatesTo_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) delegatesTo_next (o); + } + + delegatesTo_post (o); + } + } + + void PlanPropertyMapping:: + delegatesTo_pre (Type&) + { + } + + void PlanPropertyMapping:: + delegatesTo_pre (Type const&) + { + } + + void PlanPropertyMapping:: + delegatesTo_next (Type&) + { + } + + void PlanPropertyMapping:: + delegatesTo_next (Type const&) + { + } + + void PlanPropertyMapping:: + delegatesTo_post (Type&) + { + } + + void PlanPropertyMapping:: + delegatesTo_post (Type const&) + { + } + + void PlanPropertyMapping:: + post (Type&) + { + } + + void PlanPropertyMapping:: + post (Type const&) + { + } + + // deploymentPlan + // + // + + void deploymentPlan:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.realizes_p ()) realizes (o); + else realizes_none (o); + implementation (o); + instance (o); + connection (o); + externalProperty (o); + dependsOn (o); + artifact (o); + infoProperty (o); + localityConstraint (o); + post (o); + } + + void deploymentPlan:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.realizes_p ()) realizes (o); + else realizes_none (o); + implementation (o); + instance (o); + connection (o); + externalProperty (o); + dependsOn (o); + artifact (o); + infoProperty (o); + localityConstraint (o); + post (o); + } + + void deploymentPlan:: + pre (Type&) + { + } + + void deploymentPlan:: + pre (Type const&) + { + } + + void deploymentPlan:: + label (Type& o) + { + dispatch (o.label ()); + } + + void deploymentPlan:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void deploymentPlan:: + label_none (Type&) + { + } + + void deploymentPlan:: + label_none (Type const&) + { + } + + void deploymentPlan:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void deploymentPlan:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void deploymentPlan:: + UUID_none (Type&) + { + } + + void deploymentPlan:: + UUID_none (Type const&) + { + } + + void deploymentPlan:: + realizes (Type& o) + { + dispatch (o.realizes ()); + } + + void deploymentPlan:: + realizes (Type const& o) + { + dispatch (o.realizes ()); + } + + void deploymentPlan:: + realizes_none (Type&) + { + } + + void deploymentPlan:: + realizes_none (Type const&) + { + } + + void deploymentPlan:: + implementation (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::implementation_iterator b (o.begin_implementation()), e (o.end_implementation()); + + if (b != e) + { + implementation_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) implementation_next (o); + } + + implementation_post (o); + } + + else implementation_none (o); + } + + void deploymentPlan:: + implementation (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::implementation_const_iterator b (o.begin_implementation()), e (o.end_implementation()); + + if (b != e) + { + implementation_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) implementation_next (o); + } + + implementation_post (o); + } + + else implementation_none (o); + } + + void deploymentPlan:: + implementation_pre (Type&) + { + } + + void deploymentPlan:: + implementation_pre (Type const&) + { + } + + void deploymentPlan:: + implementation_next (Type&) + { + } + + void deploymentPlan:: + implementation_next (Type const&) + { + } + + void deploymentPlan:: + implementation_post (Type&) + { + } + + void deploymentPlan:: + implementation_post (Type const&) + { + } + + void deploymentPlan:: + implementation_none (Type&) + { + } + + void deploymentPlan:: + implementation_none (Type const&) + { + } + + void deploymentPlan:: + instance (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::instance_iterator b (o.begin_instance()), e (o.end_instance()); + + if (b != e) + { + instance_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) instance_next (o); + } + + instance_post (o); + } + + else instance_none (o); + } + + void deploymentPlan:: + instance (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::instance_const_iterator b (o.begin_instance()), e (o.end_instance()); + + if (b != e) + { + instance_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) instance_next (o); + } + + instance_post (o); + } + + else instance_none (o); + } + + void deploymentPlan:: + instance_pre (Type&) + { + } + + void deploymentPlan:: + instance_pre (Type const&) + { + } + + void deploymentPlan:: + instance_next (Type&) + { + } + + void deploymentPlan:: + instance_next (Type const&) + { + } + + void deploymentPlan:: + instance_post (Type&) + { + } + + void deploymentPlan:: + instance_post (Type const&) + { + } + + void deploymentPlan:: + instance_none (Type&) + { + } + + void deploymentPlan:: + instance_none (Type const&) + { + } + + void deploymentPlan:: + connection (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::connection_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void deploymentPlan:: + connection (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::connection_const_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void deploymentPlan:: + connection_pre (Type&) + { + } + + void deploymentPlan:: + connection_pre (Type const&) + { + } + + void deploymentPlan:: + connection_next (Type&) + { + } + + void deploymentPlan:: + connection_next (Type const&) + { + } + + void deploymentPlan:: + connection_post (Type&) + { + } + + void deploymentPlan:: + connection_post (Type const&) + { + } + + void deploymentPlan:: + connection_none (Type&) + { + } + + void deploymentPlan:: + connection_none (Type const&) + { + } + + void deploymentPlan:: + externalProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::externalProperty_iterator b (o.begin_externalProperty()), e (o.end_externalProperty()); + + if (b != e) + { + externalProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalProperty_next (o); + } + + externalProperty_post (o); + } + + else externalProperty_none (o); + } + + void deploymentPlan:: + externalProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::externalProperty_const_iterator b (o.begin_externalProperty()), e (o.end_externalProperty()); + + if (b != e) + { + externalProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalProperty_next (o); + } + + externalProperty_post (o); + } + + else externalProperty_none (o); + } + + void deploymentPlan:: + externalProperty_pre (Type&) + { + } + + void deploymentPlan:: + externalProperty_pre (Type const&) + { + } + + void deploymentPlan:: + externalProperty_next (Type&) + { + } + + void deploymentPlan:: + externalProperty_next (Type const&) + { + } + + void deploymentPlan:: + externalProperty_post (Type&) + { + } + + void deploymentPlan:: + externalProperty_post (Type const&) + { + } + + void deploymentPlan:: + externalProperty_none (Type&) + { + } + + void deploymentPlan:: + externalProperty_none (Type const&) + { + } + + void deploymentPlan:: + dependsOn (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void deploymentPlan:: + dependsOn (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void deploymentPlan:: + dependsOn_pre (Type&) + { + } + + void deploymentPlan:: + dependsOn_pre (Type const&) + { + } + + void deploymentPlan:: + dependsOn_next (Type&) + { + } + + void deploymentPlan:: + dependsOn_next (Type const&) + { + } + + void deploymentPlan:: + dependsOn_post (Type&) + { + } + + void deploymentPlan:: + dependsOn_post (Type const&) + { + } + + void deploymentPlan:: + dependsOn_none (Type&) + { + } + + void deploymentPlan:: + dependsOn_none (Type const&) + { + } + + void deploymentPlan:: + artifact (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::artifact_iterator b (o.begin_artifact()), e (o.end_artifact()); + + if (b != e) + { + artifact_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) artifact_next (o); + } + + artifact_post (o); + } + + else artifact_none (o); + } + + void deploymentPlan:: + artifact (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::artifact_const_iterator b (o.begin_artifact()), e (o.end_artifact()); + + if (b != e) + { + artifact_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) artifact_next (o); + } + + artifact_post (o); + } + + else artifact_none (o); + } + + void deploymentPlan:: + artifact_pre (Type&) + { + } + + void deploymentPlan:: + artifact_pre (Type const&) + { + } + + void deploymentPlan:: + artifact_next (Type&) + { + } + + void deploymentPlan:: + artifact_next (Type const&) + { + } + + void deploymentPlan:: + artifact_post (Type&) + { + } + + void deploymentPlan:: + artifact_post (Type const&) + { + } + + void deploymentPlan:: + artifact_none (Type&) + { + } + + void deploymentPlan:: + artifact_none (Type const&) + { + } + + void deploymentPlan:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void deploymentPlan:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void deploymentPlan:: + infoProperty_pre (Type&) + { + } + + void deploymentPlan:: + infoProperty_pre (Type const&) + { + } + + void deploymentPlan:: + infoProperty_next (Type&) + { + } + + void deploymentPlan:: + infoProperty_next (Type const&) + { + } + + void deploymentPlan:: + infoProperty_post (Type&) + { + } + + void deploymentPlan:: + infoProperty_post (Type const&) + { + } + + void deploymentPlan:: + infoProperty_none (Type&) + { + } + + void deploymentPlan:: + infoProperty_none (Type const&) + { + } + + void deploymentPlan:: + localityConstraint (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::localityConstraint_iterator b (o.begin_localityConstraint()), e (o.end_localityConstraint()); + + if (b != e) + { + localityConstraint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) localityConstraint_next (o); + } + + localityConstraint_post (o); + } + + else localityConstraint_none (o); + } + + void deploymentPlan:: + localityConstraint (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::deploymentPlan::localityConstraint_const_iterator b (o.begin_localityConstraint()), e (o.end_localityConstraint()); + + if (b != e) + { + localityConstraint_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) localityConstraint_next (o); + } + + localityConstraint_post (o); + } + + else localityConstraint_none (o); + } + + void deploymentPlan:: + localityConstraint_pre (Type&) + { + } + + void deploymentPlan:: + localityConstraint_pre (Type const&) + { + } + + void deploymentPlan:: + localityConstraint_next (Type&) + { + } + + void deploymentPlan:: + localityConstraint_next (Type const&) + { + } + + void deploymentPlan:: + localityConstraint_post (Type&) + { + } + + void deploymentPlan:: + localityConstraint_post (Type const&) + { + } + + void deploymentPlan:: + localityConstraint_none (Type&) + { + } + + void deploymentPlan:: + localityConstraint_none (Type const&) + { + } + + void deploymentPlan:: + post (Type&) + { + } + + void deploymentPlan:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // PlanSubcomponentPropertyReference + // + // + + PlanSubcomponentPropertyReference:: + PlanSubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PlanSubcomponentPropertyReference:: + PlanSubcomponentPropertyReference () + { + } + + void PlanSubcomponentPropertyReference:: + traverse (Type const& o) + { + Traversal::PlanSubcomponentPropertyReference::traverse (o); + } + + void PlanSubcomponentPropertyReference:: + propertyName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("propertyName"), top_ ())); + Traversal::PlanSubcomponentPropertyReference::propertyName (o); + pop_ (); + } + + void PlanSubcomponentPropertyReference:: + instance (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("instance"), top_ ())); + Traversal::PlanSubcomponentPropertyReference::instance (o); + pop_ (); + } + + // PlanPropertyMapping + // + // + + PlanPropertyMapping:: + PlanPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PlanPropertyMapping:: + PlanPropertyMapping () + { + } + + void PlanPropertyMapping:: + traverse (Type const& o) + { + Traversal::PlanPropertyMapping::traverse (o); + } + + void PlanPropertyMapping:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::PlanPropertyMapping::name (o); + pop_ (); + } + + void PlanPropertyMapping:: + source_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("source"), top_ ())); + } + + void PlanPropertyMapping:: + source_next (Type const& o) + { + source_post (o); + source_pre (o); + } + + void PlanPropertyMapping:: + source_post (Type const&) + { + pop_ (); + } + + void PlanPropertyMapping:: + externalName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalName"), top_ ())); + Traversal::PlanPropertyMapping::externalName (o); + pop_ (); + } + + void PlanPropertyMapping:: + delegatesTo_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("delegatesTo"), top_ ())); + } + + void PlanPropertyMapping:: + delegatesTo_next (Type const& o) + { + delegatesTo_post (o); + delegatesTo_pre (o); + } + + void PlanPropertyMapping:: + delegatesTo_post (Type const&) + { + pop_ (); + } + + // deploymentPlan + // + // + + deploymentPlan:: + deploymentPlan (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + deploymentPlan:: + deploymentPlan () + { + } + + void deploymentPlan:: + traverse (Type const& o) + { + Traversal::deploymentPlan::traverse (o); + } + + void deploymentPlan:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::deploymentPlan::label (o); + pop_ (); + } + + void deploymentPlan:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::deploymentPlan::UUID (o); + pop_ (); + } + + void deploymentPlan:: + realizes (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("realizes"), top_ ())); + Traversal::deploymentPlan::realizes (o); + pop_ (); + } + + void deploymentPlan:: + implementation_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("implementation"), top_ ())); + } + + void deploymentPlan:: + implementation_next (Type const& o) + { + implementation_post (o); + implementation_pre (o); + } + + void deploymentPlan:: + implementation_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + instance_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("instance"), top_ ())); + } + + void deploymentPlan:: + instance_next (Type const& o) + { + instance_post (o); + instance_pre (o); + } + + void deploymentPlan:: + instance_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + connection_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("connection"), top_ ())); + } + + void deploymentPlan:: + connection_next (Type const& o) + { + connection_post (o); + connection_pre (o); + } + + void deploymentPlan:: + connection_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + externalProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalProperty"), top_ ())); + } + + void deploymentPlan:: + externalProperty_next (Type const& o) + { + externalProperty_post (o); + externalProperty_pre (o); + } + + void deploymentPlan:: + externalProperty_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + dependsOn_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("dependsOn"), top_ ())); + } + + void deploymentPlan:: + dependsOn_next (Type const& o) + { + dependsOn_post (o); + dependsOn_pre (o); + } + + void deploymentPlan:: + dependsOn_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + artifact_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("artifact"), top_ ())); + } + + void deploymentPlan:: + artifact_next (Type const& o) + { + artifact_post (o); + artifact_pre (o); + } + + void deploymentPlan:: + artifact_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void deploymentPlan:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void deploymentPlan:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void deploymentPlan:: + localityConstraint_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("localityConstraint"), top_ ())); + } + + void deploymentPlan:: + localityConstraint_next (Type const& o) + { + localityConstraint_post (o); + localityConstraint_pre (o); + } + + void deploymentPlan:: + localityConstraint_post (Type const&) + { + pop_ (); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/cdp.hpp b/modules/CIAO/DAnCE/Config_Handlers/cdp.hpp new file mode 100644 index 00000000000..9b1e5f0bc9e --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cdp.hpp @@ -0,0 +1,1187 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef CDP_HPP +#define CDP_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class PlanSubcomponentPropertyReference; + class PlanPropertyMapping; + class deploymentPlan; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "ccd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export PlanSubcomponentPropertyReference : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PlanSubcomponentPropertyReference, ACE_Null_Mutex > _ptr; + + // propertyName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& propertyName () const; + void propertyName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > propertyName_; + + // instance + // + public: + ::CIAO::Config_Handlers::InstanceDeploymentDescription const& instance () const; + void instance (::CIAO::Config_Handlers::InstanceDeploymentDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceDeploymentDescription > instance_; + + public: + PlanSubcomponentPropertyReference (::XMLSchema::string< ACE_TCHAR > const& propertyName__, + ::CIAO::Config_Handlers::InstanceDeploymentDescription const& instance__); + + PlanSubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR > const&); + PlanSubcomponentPropertyReference (PlanSubcomponentPropertyReference const& s); + + PlanSubcomponentPropertyReference& + operator= (PlanSubcomponentPropertyReference const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export PlanPropertyMapping : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PlanPropertyMapping, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // source + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator source_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator source_const_iterator; + source_iterator begin_source (); + source_iterator end_source (); + source_const_iterator begin_source () const; + source_const_iterator end_source () const; + void add_source ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* source_ptr ( std::basic_string idref ); + size_t count_source (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > source_; + + // externalName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& externalName () const; + void externalName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > externalName_; + + // delegatesTo + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > >::iterator delegatesTo_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > >::const_iterator delegatesTo_const_iterator; + delegatesTo_iterator begin_delegatesTo (); + delegatesTo_iterator end_delegatesTo (); + delegatesTo_const_iterator begin_delegatesTo () const; + delegatesTo_const_iterator end_delegatesTo () const; + void add_delegatesTo ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > const& ); + XSCRT::Type* delegatesTo_ptr ( std::basic_string idref ); + size_t count_delegatesTo (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > > delegatesTo_; + + public: + PlanPropertyMapping (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& externalName__, + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference, ACE_Null_Mutex > > const& delegatesTo__); + + PlanPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR > const&); + PlanPropertyMapping (PlanPropertyMapping const& s); + + PlanPropertyMapping& + operator= (PlanPropertyMapping const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export deploymentPlan : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < deploymentPlan, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // realizes + // + public: + bool realizes_p () const; + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const; + void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_; + + // implementation + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::MonolithicDeploymentDescription, ACE_Null_Mutex > >::iterator implementation_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::MonolithicDeploymentDescription, ACE_Null_Mutex > >::const_iterator implementation_const_iterator; + implementation_iterator begin_implementation (); + implementation_iterator end_implementation (); + implementation_const_iterator begin_implementation () const; + implementation_const_iterator end_implementation () const; + void add_implementation ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::MonolithicDeploymentDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* implementation_ptr ( std::basic_string idref ); + size_t count_implementation (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::MonolithicDeploymentDescription, ACE_Null_Mutex > > implementation_; + + // instance + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceDeploymentDescription, ACE_Null_Mutex > >::iterator instance_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceDeploymentDescription, ACE_Null_Mutex > >::const_iterator instance_const_iterator; + instance_iterator begin_instance (); + instance_iterator end_instance (); + instance_const_iterator begin_instance () const; + instance_const_iterator end_instance () const; + void add_instance ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceDeploymentDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* instance_ptr ( std::basic_string idref ); + size_t count_instance (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::InstanceDeploymentDescription, ACE_Null_Mutex > > instance_; + + // connection + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanConnectionDescription, ACE_Null_Mutex > >::iterator connection_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanConnectionDescription, ACE_Null_Mutex > >::const_iterator connection_const_iterator; + connection_iterator begin_connection (); + connection_iterator end_connection (); + connection_const_iterator begin_connection () const; + connection_const_iterator end_connection () const; + void add_connection ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanConnectionDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* connection_ptr ( std::basic_string idref ); + size_t count_connection (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanConnectionDescription, ACE_Null_Mutex > > connection_; + + // externalProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanPropertyMapping, ACE_Null_Mutex > >::iterator externalProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanPropertyMapping, ACE_Null_Mutex > >::const_iterator externalProperty_const_iterator; + externalProperty_iterator begin_externalProperty (); + externalProperty_iterator end_externalProperty (); + externalProperty_const_iterator begin_externalProperty () const; + externalProperty_const_iterator end_externalProperty () const; + void add_externalProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanPropertyMapping, ACE_Null_Mutex > const& ); + XSCRT::Type* externalProperty_ptr ( std::basic_string idref ); + size_t count_externalProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanPropertyMapping, ACE_Null_Mutex > > externalProperty_; + + // dependsOn + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > >::iterator dependsOn_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > >::const_iterator dependsOn_const_iterator; + dependsOn_iterator begin_dependsOn (); + dependsOn_iterator end_dependsOn (); + dependsOn_const_iterator begin_dependsOn () const; + dependsOn_const_iterator end_dependsOn () const; + void add_dependsOn ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > const& ); + XSCRT::Type* dependsOn_ptr ( std::basic_string idref ); + size_t count_dependsOn (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > > dependsOn_; + + // artifact + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ArtifactDeploymentDescription, ACE_Null_Mutex > >::iterator artifact_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ArtifactDeploymentDescription, ACE_Null_Mutex > >::const_iterator artifact_const_iterator; + artifact_iterator begin_artifact (); + artifact_iterator end_artifact (); + artifact_const_iterator begin_artifact () const; + artifact_const_iterator end_artifact () const; + void add_artifact ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ArtifactDeploymentDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* artifact_ptr ( std::basic_string idref ); + size_t count_artifact (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ArtifactDeploymentDescription, ACE_Null_Mutex > > artifact_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // localityConstraint + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanLocality, ACE_Null_Mutex > >::iterator localityConstraint_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanLocality, ACE_Null_Mutex > >::const_iterator localityConstraint_const_iterator; + localityConstraint_iterator begin_localityConstraint (); + localityConstraint_iterator end_localityConstraint (); + localityConstraint_const_iterator begin_localityConstraint () const; + localityConstraint_const_iterator end_localityConstraint () const; + void add_localityConstraint ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanLocality, ACE_Null_Mutex > const& ); + XSCRT::Type* localityConstraint_ptr ( std::basic_string idref ); + size_t count_localityConstraint (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PlanLocality, ACE_Null_Mutex > > localityConstraint_; + + public: + deploymentPlan (); + + deploymentPlan (::XSCRT::XML::Element< ACE_TCHAR > const&); + deploymentPlan (deploymentPlan const& s); + + deploymentPlan& + operator= (deploymentPlan const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export PlanSubcomponentPropertyReference : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + propertyName (Type&); + + virtual void + propertyName (Type const&); + + virtual void + instance (Type&); + + virtual void + instance (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export PlanPropertyMapping : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanPropertyMapping > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + source (Type&); + + virtual void + source (Type const&); + + virtual void + source_pre (Type&); + + virtual void + source_pre (Type const&); + + virtual void + source_next (Type&); + + virtual void + source_next (Type const&); + + virtual void + source_post (Type&); + + virtual void + source_post (Type const&); + + virtual void + source_none (Type&); + + virtual void + source_none (Type const&); + + virtual void + externalName (Type&); + + virtual void + externalName (Type const&); + + virtual void + delegatesTo (Type&); + + virtual void + delegatesTo (Type const&); + + virtual void + delegatesTo_pre (Type&); + + virtual void + delegatesTo_pre (Type const&); + + virtual void + delegatesTo_next (Type&); + + virtual void + delegatesTo_next (Type const&); + + virtual void + delegatesTo_post (Type&); + + virtual void + delegatesTo_post (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export deploymentPlan : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::deploymentPlan > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + realizes (Type&); + + virtual void + realizes (Type const&); + + virtual void + realizes_none (Type&); + + virtual void + realizes_none (Type const&); + + virtual void + implementation (Type&); + + virtual void + implementation (Type const&); + + virtual void + implementation_pre (Type&); + + virtual void + implementation_pre (Type const&); + + virtual void + implementation_next (Type&); + + virtual void + implementation_next (Type const&); + + virtual void + implementation_post (Type&); + + virtual void + implementation_post (Type const&); + + virtual void + implementation_none (Type&); + + virtual void + implementation_none (Type const&); + + virtual void + instance (Type&); + + virtual void + instance (Type const&); + + virtual void + instance_pre (Type&); + + virtual void + instance_pre (Type const&); + + virtual void + instance_next (Type&); + + virtual void + instance_next (Type const&); + + virtual void + instance_post (Type&); + + virtual void + instance_post (Type const&); + + virtual void + instance_none (Type&); + + virtual void + instance_none (Type const&); + + virtual void + connection (Type&); + + virtual void + connection (Type const&); + + virtual void + connection_pre (Type&); + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type&); + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type&); + + virtual void + connection_post (Type const&); + + virtual void + connection_none (Type&); + + virtual void + connection_none (Type const&); + + virtual void + externalProperty (Type&); + + virtual void + externalProperty (Type const&); + + virtual void + externalProperty_pre (Type&); + + virtual void + externalProperty_pre (Type const&); + + virtual void + externalProperty_next (Type&); + + virtual void + externalProperty_next (Type const&); + + virtual void + externalProperty_post (Type&); + + virtual void + externalProperty_post (Type const&); + + virtual void + externalProperty_none (Type&); + + virtual void + externalProperty_none (Type const&); + + virtual void + dependsOn (Type&); + + virtual void + dependsOn (Type const&); + + virtual void + dependsOn_pre (Type&); + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type&); + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type&); + + virtual void + dependsOn_post (Type const&); + + virtual void + dependsOn_none (Type&); + + virtual void + dependsOn_none (Type const&); + + virtual void + artifact (Type&); + + virtual void + artifact (Type const&); + + virtual void + artifact_pre (Type&); + + virtual void + artifact_pre (Type const&); + + virtual void + artifact_next (Type&); + + virtual void + artifact_next (Type const&); + + virtual void + artifact_post (Type&); + + virtual void + artifact_post (Type const&); + + virtual void + artifact_none (Type&); + + virtual void + artifact_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + localityConstraint (Type&); + + virtual void + localityConstraint (Type const&); + + virtual void + localityConstraint_pre (Type&); + + virtual void + localityConstraint_pre (Type const&); + + virtual void + localityConstraint_next (Type&); + + virtual void + localityConstraint_next (Type const&); + + virtual void + localityConstraint_post (Type&); + + virtual void + localityConstraint_post (Type const&); + + virtual void + localityConstraint_none (Type&); + + virtual void + localityConstraint_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct PlanSubcomponentPropertyReference : Traversal::PlanSubcomponentPropertyReference, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PlanSubcomponentPropertyReference Type; + PlanSubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + propertyName (Type &o) + { + this->propertyName (const_cast (o)); + } + + virtual void + propertyName (Type const&); + + virtual void + instance (Type &o) + { + this->instance (const_cast (o)); + } + + virtual void + instance (Type const&); + + protected: + PlanSubcomponentPropertyReference (); + }; + + struct PlanPropertyMapping : Traversal::PlanPropertyMapping, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PlanPropertyMapping Type; + PlanPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + source_pre (Type &o) + { + this->source_pre (const_cast (o)); + } + + virtual void + source_pre (Type const&); + + virtual void + source_next (Type &o) + { + this->source_next (const_cast (o)); + } + + virtual void + source_next (Type const&); + + virtual void + source_post (Type &o) + { + this->source_post (const_cast (o)); + } + + virtual void + source_post (Type const&); + + virtual void + externalName (Type &o) + { + this->externalName (const_cast (o)); + } + + virtual void + externalName (Type const&); + + virtual void + delegatesTo_pre (Type &o) + { + this->delegatesTo_pre (const_cast (o)); + } + + virtual void + delegatesTo_pre (Type const&); + + virtual void + delegatesTo_next (Type &o) + { + this->delegatesTo_next (const_cast (o)); + } + + virtual void + delegatesTo_next (Type const&); + + virtual void + delegatesTo_post (Type &o) + { + this->delegatesTo_post (const_cast (o)); + } + + virtual void + delegatesTo_post (Type const&); + + protected: + PlanPropertyMapping (); + }; + + struct deploymentPlan : Traversal::deploymentPlan, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::deploymentPlan Type; + deploymentPlan (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + realizes (Type &o) + { + this->realizes (const_cast (o)); + } + + virtual void + realizes (Type const&); + + virtual void + implementation_pre (Type &o) + { + this->implementation_pre (const_cast (o)); + } + + virtual void + implementation_pre (Type const&); + + virtual void + implementation_next (Type &o) + { + this->implementation_next (const_cast (o)); + } + + virtual void + implementation_next (Type const&); + + virtual void + implementation_post (Type &o) + { + this->implementation_post (const_cast (o)); + } + + virtual void + implementation_post (Type const&); + + virtual void + instance_pre (Type &o) + { + this->instance_pre (const_cast (o)); + } + + virtual void + instance_pre (Type const&); + + virtual void + instance_next (Type &o) + { + this->instance_next (const_cast (o)); + } + + virtual void + instance_next (Type const&); + + virtual void + instance_post (Type &o) + { + this->instance_post (const_cast (o)); + } + + virtual void + instance_post (Type const&); + + virtual void + connection_pre (Type &o) + { + this->connection_pre (const_cast (o)); + } + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type &o) + { + this->connection_next (const_cast (o)); + } + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type &o) + { + this->connection_post (const_cast (o)); + } + + virtual void + connection_post (Type const&); + + virtual void + externalProperty_pre (Type &o) + { + this->externalProperty_pre (const_cast (o)); + } + + virtual void + externalProperty_pre (Type const&); + + virtual void + externalProperty_next (Type &o) + { + this->externalProperty_next (const_cast (o)); + } + + virtual void + externalProperty_next (Type const&); + + virtual void + externalProperty_post (Type &o) + { + this->externalProperty_post (const_cast (o)); + } + + virtual void + externalProperty_post (Type const&); + + virtual void + dependsOn_pre (Type &o) + { + this->dependsOn_pre (const_cast (o)); + } + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type &o) + { + this->dependsOn_next (const_cast (o)); + } + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type &o) + { + this->dependsOn_post (const_cast (o)); + } + + virtual void + dependsOn_post (Type const&); + + virtual void + artifact_pre (Type &o) + { + this->artifact_pre (const_cast (o)); + } + + virtual void + artifact_pre (Type const&); + + virtual void + artifact_next (Type &o) + { + this->artifact_next (const_cast (o)); + } + + virtual void + artifact_next (Type const&); + + virtual void + artifact_post (Type &o) + { + this->artifact_post (const_cast (o)); + } + + virtual void + artifact_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + localityConstraint_pre (Type &o) + { + this->localityConstraint_pre (const_cast (o)); + } + + virtual void + localityConstraint_pre (Type const&); + + virtual void + localityConstraint_next (Type &o) + { + this->localityConstraint_next (const_cast (o)); + } + + virtual void + localityConstraint_next (Type const&); + + virtual void + localityConstraint_post (Type &o) + { + this->localityConstraint_post (const_cast (o)); + } + + virtual void + localityConstraint_post (Type const&); + + protected: + deploymentPlan (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // CDP_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/cid.cpp b/modules/CIAO/DAnCE/Config_Handlers/cid.cpp new file mode 100644 index 00000000000..32e9bb6b924 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cid.cpp @@ -0,0 +1,6047 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "cid.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // ComponentPackageReference + // + + ComponentPackageReference:: + ComponentPackageReference (::CIAO::Config_Handlers::ComponentInterfaceDescription const& requiredType__) + : + ::XSCRT::Type (), + requiredType_ (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (requiredType__)), + regulator__ () + { + requiredType_->container (this); + } + + ComponentPackageReference:: + ComponentPackageReference (ComponentPackageReference const& s) + : + ::XSCRT::Type (), + requiredUUID_ (s.requiredUUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.requiredUUID_) : 0), + requiredName_ (s.requiredName_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.requiredName_) : 0), + requiredType_ (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.requiredType_)), + regulator__ () + { + if (requiredUUID_.get ()) requiredUUID_->container (this); + if (requiredName_.get ()) requiredName_->container (this); + requiredType_->container (this); + } + + ComponentPackageReference& ComponentPackageReference:: + operator= (ComponentPackageReference const& s) + { + if (s.requiredUUID_.get ()) + requiredUUID (*(s.requiredUUID_)); + else + requiredUUID_.reset (0); + + if (s.requiredName_.get ()) + requiredName (*(s.requiredName_)); + else + requiredName_.reset (0); + + requiredType (*s.requiredType_); + + return *this; + } + + + // ComponentPackageReference + // + bool ComponentPackageReference:: + requiredUUID_p () const + { + return requiredUUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentPackageReference:: + requiredUUID () const + { + return *requiredUUID_; + } + + void ComponentPackageReference:: + requiredUUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (requiredUUID_.get ()) + { + *requiredUUID_ = e; + } + + else + { + requiredUUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + requiredUUID_->container (this); + } + } + + // ComponentPackageReference + // + bool ComponentPackageReference:: + requiredName_p () const + { + return requiredName_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentPackageReference:: + requiredName () const + { + return *requiredName_; + } + + void ComponentPackageReference:: + requiredName (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (requiredName_.get ()) + { + *requiredName_ = e; + } + + else + { + requiredName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + requiredName_->container (this); + } + } + + // ComponentPackageReference + // + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& ComponentPackageReference:: + requiredType () const + { + return *requiredType_; + } + + void ComponentPackageReference:: + requiredType (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e) + { + *requiredType_ = e; + } + + + // SubcomponentInstantiationDescription + // + + SubcomponentInstantiationDescription:: + SubcomponentInstantiationDescription (::XMLSchema::string< ACE_TCHAR > const& name__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + regulator__ () + { + name_->container (this); + } + + SubcomponentInstantiationDescription:: + SubcomponentInstantiationDescription (SubcomponentInstantiationDescription const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + basePackage_ (s.basePackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageDescription (*s.basePackage_) : 0), + specializedConfig_ (s.specializedConfig_.get () ? new ::CIAO::Config_Handlers::PackageConfiguration (*s.specializedConfig_) : 0), + selectRequirement_ (s.selectRequirement_), + configProperty_ (s.configProperty_), + referencedPackage_ (s.referencedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageReference (*s.referencedPackage_) : 0), + importedPackage_ (s.importedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageImport (*s.importedPackage_) : 0), + id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0), + regulator__ () + { + name_->container (this); + if (basePackage_.get ()) basePackage_->container (this); + if (specializedConfig_.get ()) specializedConfig_->container (this); + if (referencedPackage_.get ()) referencedPackage_->container (this); + if (importedPackage_.get ()) importedPackage_->container (this); + if (id_.get ()) id_->container (this); + } + + SubcomponentInstantiationDescription& SubcomponentInstantiationDescription:: + operator= (SubcomponentInstantiationDescription const& s) + { + name (*s.name_); + + if (s.basePackage_.get ()) + basePackage (*(s.basePackage_)); + else + basePackage_.reset (0); + + if (s.specializedConfig_.get ()) + specializedConfig (*(s.specializedConfig_)); + else + specializedConfig_.reset (0); + + selectRequirement_ = s.selectRequirement_; + + configProperty_ = s.configProperty_; + + if (s.referencedPackage_.get ()) + referencedPackage (*(s.referencedPackage_)); + else + referencedPackage_.reset (0); + + if (s.importedPackage_.get ()) + importedPackage (*(s.importedPackage_)); + else + importedPackage_.reset (0); + + if (s.id_.get ()) id (*(s.id_)); + else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0); + + return *this; + } + + + // SubcomponentInstantiationDescription + // + ::XMLSchema::string< ACE_TCHAR > const& SubcomponentInstantiationDescription:: + name () const + { + return *name_; + } + + void SubcomponentInstantiationDescription:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // SubcomponentInstantiationDescription + // + bool SubcomponentInstantiationDescription:: + basePackage_p () const + { + return basePackage_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentPackageDescription const& SubcomponentInstantiationDescription:: + basePackage () const + { + return *basePackage_; + } + + void SubcomponentInstantiationDescription:: + basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& e) + { + if (basePackage_.get ()) + { + *basePackage_ = e; + } + + else + { + basePackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > (new ::CIAO::Config_Handlers::ComponentPackageDescription (e)); + basePackage_->container (this); + } + } + + // SubcomponentInstantiationDescription + // + bool SubcomponentInstantiationDescription:: + specializedConfig_p () const + { + return specializedConfig_.get () != 0; + } + + ::CIAO::Config_Handlers::PackageConfiguration const& SubcomponentInstantiationDescription:: + specializedConfig () const + { + return *specializedConfig_; + } + + void SubcomponentInstantiationDescription:: + specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& e) + { + if (specializedConfig_.get ()) + { + *specializedConfig_ = e; + } + + else + { + specializedConfig_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (new ::CIAO::Config_Handlers::PackageConfiguration (e)); + specializedConfig_->container (this); + } + } + + // SubcomponentInstantiationDescription + // + SubcomponentInstantiationDescription::selectRequirement_iterator SubcomponentInstantiationDescription:: + begin_selectRequirement () + { + return selectRequirement_.begin (); + } + + SubcomponentInstantiationDescription::selectRequirement_iterator SubcomponentInstantiationDescription:: + end_selectRequirement () + { + return selectRequirement_.end (); + } + + SubcomponentInstantiationDescription::selectRequirement_const_iterator SubcomponentInstantiationDescription:: + begin_selectRequirement () const + { + return selectRequirement_.begin (); + } + + SubcomponentInstantiationDescription::selectRequirement_const_iterator SubcomponentInstantiationDescription:: + end_selectRequirement () const + { + return selectRequirement_.end (); + } + + void SubcomponentInstantiationDescription:: + add_selectRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + selectRequirement_.push_back (e); + } + + size_t SubcomponentInstantiationDescription:: + count_selectRequirement(void) const + { + return selectRequirement_.size (); + } + + // SubcomponentInstantiationDescription + // + SubcomponentInstantiationDescription::configProperty_iterator SubcomponentInstantiationDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + SubcomponentInstantiationDescription::configProperty_iterator SubcomponentInstantiationDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + SubcomponentInstantiationDescription::configProperty_const_iterator SubcomponentInstantiationDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + SubcomponentInstantiationDescription::configProperty_const_iterator SubcomponentInstantiationDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void SubcomponentInstantiationDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t SubcomponentInstantiationDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // SubcomponentInstantiationDescription + // + bool SubcomponentInstantiationDescription:: + referencedPackage_p () const + { + return referencedPackage_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentPackageReference const& SubcomponentInstantiationDescription:: + referencedPackage () const + { + return *referencedPackage_; + } + + void SubcomponentInstantiationDescription:: + referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& e) + { + if (referencedPackage_.get ()) + { + *referencedPackage_ = e; + } + + else + { + referencedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > (new ::CIAO::Config_Handlers::ComponentPackageReference (e)); + referencedPackage_->container (this); + } + } + + // SubcomponentInstantiationDescription + // + bool SubcomponentInstantiationDescription:: + importedPackage_p () const + { + return importedPackage_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentPackageImport const& SubcomponentInstantiationDescription:: + importedPackage () const + { + return *importedPackage_; + } + + void SubcomponentInstantiationDescription:: + importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& e) + { + if (importedPackage_.get ()) + { + *importedPackage_ = e; + } + + else + { + importedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > (new ::CIAO::Config_Handlers::ComponentPackageImport (e)); + importedPackage_->container (this); + } + } + + // SubcomponentInstantiationDescription + // + bool SubcomponentInstantiationDescription:: + id_p () const + { + return id_.get () != 0; + } + + ::XMLSchema::ID< ACE_TCHAR > const& SubcomponentInstantiationDescription:: + id () const + { + return *id_; + } + + ::XMLSchema::ID< ACE_TCHAR >& SubcomponentInstantiationDescription:: + id () + { + return *id_; + } + + void SubcomponentInstantiationDescription:: + id (::XMLSchema::ID< ACE_TCHAR > const& e) + { + if (id_.get ()) + { + *id_ = e; + } + + else + { + id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e)); + id_->container (this); + } + } + + + // SubcomponentPropertyReference + // + + SubcomponentPropertyReference:: + SubcomponentPropertyReference (::XMLSchema::string< ACE_TCHAR > const& propertyName__, + ::CIAO::Config_Handlers::IdRef const& instance__) + : + propertyName_ (new ::XMLSchema::string< ACE_TCHAR > (propertyName__)), + instance_ (new ::CIAO::Config_Handlers::IdRef (instance__)), + regulator__ () + { + propertyName_->container (this); + instance_->container (this); + } + + SubcomponentPropertyReference:: + SubcomponentPropertyReference (SubcomponentPropertyReference const& s) + : + ::XSCRT::Type (), + propertyName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.propertyName_)), + instance_ (new ::CIAO::Config_Handlers::IdRef (*s.instance_)), + regulator__ () + { + propertyName_->container (this); + instance_->container (this); + } + + SubcomponentPropertyReference& SubcomponentPropertyReference:: + operator= (SubcomponentPropertyReference const& s) + { + propertyName (*s.propertyName_); + + instance (*s.instance_); + + return *this; + } + + + // SubcomponentPropertyReference + // + ::XMLSchema::string< ACE_TCHAR > const& SubcomponentPropertyReference:: + propertyName () const + { + return *propertyName_; + } + + void SubcomponentPropertyReference:: + propertyName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *propertyName_ = e; + } + + // SubcomponentPropertyReference + // + ::CIAO::Config_Handlers::IdRef const& SubcomponentPropertyReference:: + instance () const + { + return *instance_; + } + + void SubcomponentPropertyReference:: + instance (::CIAO::Config_Handlers::IdRef const& e) + { + *instance_ = e; + } + + + // AssemblyPropertyMapping + // + + AssemblyPropertyMapping:: + AssemblyPropertyMapping (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& externalName__) + : + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + externalName_ (new ::XMLSchema::string< ACE_TCHAR > (externalName__)), + regulator__ () + { + name_->container (this); + externalName_->container (this); + } + + AssemblyPropertyMapping:: + AssemblyPropertyMapping (AssemblyPropertyMapping const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + externalName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.externalName_)), + delegatesTo_ (s.delegatesTo_), + regulator__ () + { + name_->container (this); + externalName_->container (this); + } + + AssemblyPropertyMapping& AssemblyPropertyMapping:: + operator= (AssemblyPropertyMapping const& s) + { + name (*s.name_); + + externalName (*s.externalName_); + + delegatesTo_ = s.delegatesTo_; + + return *this; + } + + + // AssemblyPropertyMapping + // + ::XMLSchema::string< ACE_TCHAR > const& AssemblyPropertyMapping:: + name () const + { + return *name_; + } + + void AssemblyPropertyMapping:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // AssemblyPropertyMapping + // + ::XMLSchema::string< ACE_TCHAR > const& AssemblyPropertyMapping:: + externalName () const + { + return *externalName_; + } + + void AssemblyPropertyMapping:: + externalName (::XMLSchema::string< ACE_TCHAR > const& e) + { + *externalName_ = e; + } + + // AssemblyPropertyMapping + // + AssemblyPropertyMapping::delegatesTo_iterator AssemblyPropertyMapping:: + begin_delegatesTo () + { + return delegatesTo_.begin (); + } + + AssemblyPropertyMapping::delegatesTo_iterator AssemblyPropertyMapping:: + end_delegatesTo () + { + return delegatesTo_.end (); + } + + AssemblyPropertyMapping::delegatesTo_const_iterator AssemblyPropertyMapping:: + begin_delegatesTo () const + { + return delegatesTo_.begin (); + } + + AssemblyPropertyMapping::delegatesTo_const_iterator AssemblyPropertyMapping:: + end_delegatesTo () const + { + return delegatesTo_.end (); + } + + void AssemblyPropertyMapping:: + add_delegatesTo (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPropertyReference, ACE_Null_Mutex > const& e) + { + delegatesTo_.push_back (e); + } + + size_t AssemblyPropertyMapping:: + count_delegatesTo(void) const + { + return delegatesTo_.size (); + } + + + // LocalityKind + // + + LocalityKind::Value LocalityKind:: + integral () const + { + return v_; + } + + bool + operator== (::CIAO::Config_Handlers::LocalityKind const& a, ::CIAO::Config_Handlers::LocalityKind const& b) + { + return a.v_ == b.v_; + } + + bool + operator!= (::CIAO::Config_Handlers::LocalityKind const& a, ::CIAO::Config_Handlers::LocalityKind const& b) + { + return a.v_ != b.v_; + } + + LocalityKind:: + LocalityKind (LocalityKind::Value v) + : v_ (v) + { + } + + // Locality + // + + Locality:: + Locality (::CIAO::Config_Handlers::LocalityKind const& constraint__, + ::CIAO::Config_Handlers::IdRef const& constrainedInstance__) + : + constraint_ (new ::CIAO::Config_Handlers::LocalityKind (constraint__)), + constrainedInstance_ (new ::CIAO::Config_Handlers::IdRef (constrainedInstance__)), + regulator__ () + { + constraint_->container (this); + constrainedInstance_->container (this); + } + + Locality:: + Locality (Locality const& s) + : + ::XSCRT::Type (), + constraint_ (new ::CIAO::Config_Handlers::LocalityKind (*s.constraint_)), + constrainedInstance_ (new ::CIAO::Config_Handlers::IdRef (*s.constrainedInstance_)), + regulator__ () + { + constraint_->container (this); + constrainedInstance_->container (this); + } + + Locality& Locality:: + operator= (Locality const& s) + { + constraint (*s.constraint_); + + constrainedInstance (*s.constrainedInstance_); + + return *this; + } + + + // Locality + // + ::CIAO::Config_Handlers::LocalityKind const& Locality:: + constraint () const + { + return *constraint_; + } + + void Locality:: + constraint (::CIAO::Config_Handlers::LocalityKind const& e) + { + *constraint_ = e; + } + + // Locality + // + ::CIAO::Config_Handlers::IdRef const& Locality:: + constrainedInstance () const + { + return *constrainedInstance_; + } + + void Locality:: + constrainedInstance (::CIAO::Config_Handlers::IdRef const& e) + { + *constrainedInstance_ = e; + } + + + // ComponentAssemblyDescription + // + + ComponentAssemblyDescription:: + ComponentAssemblyDescription () + : + regulator__ () + { + } + + ComponentAssemblyDescription:: + ComponentAssemblyDescription (ComponentAssemblyDescription const& s) + : + ::XSCRT::Type (), + instance_ (s.instance_), + connection_ (s.connection_), + externalProperty_ (s.externalProperty_), + locality_ (s.locality_), + regulator__ () + { + } + + ComponentAssemblyDescription& ComponentAssemblyDescription:: + operator= (ComponentAssemblyDescription const& s) + { + instance_ = s.instance_; + + connection_ = s.connection_; + + externalProperty_ = s.externalProperty_; + + locality_ = s.locality_; + + return *this; + } + + + // ComponentAssemblyDescription + // + ComponentAssemblyDescription::instance_iterator ComponentAssemblyDescription:: + begin_instance () + { + return instance_.begin (); + } + + ComponentAssemblyDescription::instance_iterator ComponentAssemblyDescription:: + end_instance () + { + return instance_.end (); + } + + ComponentAssemblyDescription::instance_const_iterator ComponentAssemblyDescription:: + begin_instance () const + { + return instance_.begin (); + } + + ComponentAssemblyDescription::instance_const_iterator ComponentAssemblyDescription:: + end_instance () const + { + return instance_.end (); + } + + void ComponentAssemblyDescription:: + add_instance (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentInstantiationDescription, ACE_Null_Mutex > const& e) + { + instance_.push_back (e); + } + + size_t ComponentAssemblyDescription:: + count_instance(void) const + { + return instance_.size (); + } + + // ComponentAssemblyDescription + // + ComponentAssemblyDescription::connection_iterator ComponentAssemblyDescription:: + begin_connection () + { + return connection_.begin (); + } + + ComponentAssemblyDescription::connection_iterator ComponentAssemblyDescription:: + end_connection () + { + return connection_.end (); + } + + ComponentAssemblyDescription::connection_const_iterator ComponentAssemblyDescription:: + begin_connection () const + { + return connection_.begin (); + } + + ComponentAssemblyDescription::connection_const_iterator ComponentAssemblyDescription:: + end_connection () const + { + return connection_.end (); + } + + void ComponentAssemblyDescription:: + add_connection (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyConnectionDescription, ACE_Null_Mutex > const& e) + { + connection_.push_back (e); + } + + size_t ComponentAssemblyDescription:: + count_connection(void) const + { + return connection_.size (); + } + + // ComponentAssemblyDescription + // + ComponentAssemblyDescription::externalProperty_iterator ComponentAssemblyDescription:: + begin_externalProperty () + { + return externalProperty_.begin (); + } + + ComponentAssemblyDescription::externalProperty_iterator ComponentAssemblyDescription:: + end_externalProperty () + { + return externalProperty_.end (); + } + + ComponentAssemblyDescription::externalProperty_const_iterator ComponentAssemblyDescription:: + begin_externalProperty () const + { + return externalProperty_.begin (); + } + + ComponentAssemblyDescription::externalProperty_const_iterator ComponentAssemblyDescription:: + end_externalProperty () const + { + return externalProperty_.end (); + } + + void ComponentAssemblyDescription:: + add_externalProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyPropertyMapping, ACE_Null_Mutex > const& e) + { + externalProperty_.push_back (e); + } + + size_t ComponentAssemblyDescription:: + count_externalProperty(void) const + { + return externalProperty_.size (); + } + + // ComponentAssemblyDescription + // + ComponentAssemblyDescription::locality_iterator ComponentAssemblyDescription:: + begin_locality () + { + return locality_.begin (); + } + + ComponentAssemblyDescription::locality_iterator ComponentAssemblyDescription:: + end_locality () + { + return locality_.end (); + } + + ComponentAssemblyDescription::locality_const_iterator ComponentAssemblyDescription:: + begin_locality () const + { + return locality_.begin (); + } + + ComponentAssemblyDescription::locality_const_iterator ComponentAssemblyDescription:: + end_locality () const + { + return locality_.end (); + } + + void ComponentAssemblyDescription:: + add_locality (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Locality, ACE_Null_Mutex > const& e) + { + locality_.push_back (e); + } + + size_t ComponentAssemblyDescription:: + count_locality(void) const + { + return locality_.size (); + } + + + // MonolithicImplementationDescription + // + + MonolithicImplementationDescription:: + MonolithicImplementationDescription () + : + regulator__ () + { + } + + MonolithicImplementationDescription:: + MonolithicImplementationDescription (MonolithicImplementationDescription const& s) + : + ::XSCRT::Type (), + nodeExecParameter_ (s.nodeExecParameter_), + componentExecParameter_ (s.componentExecParameter_), + deployRequirement_ (s.deployRequirement_), + primaryArtifact_ (s.primaryArtifact_), + regulator__ () + { + } + + MonolithicImplementationDescription& MonolithicImplementationDescription:: + operator= (MonolithicImplementationDescription const& s) + { + nodeExecParameter_ = s.nodeExecParameter_; + + componentExecParameter_ = s.componentExecParameter_; + + deployRequirement_ = s.deployRequirement_; + + primaryArtifact_ = s.primaryArtifact_; + + return *this; + } + + + // MonolithicImplementationDescription + // + MonolithicImplementationDescription::nodeExecParameter_iterator MonolithicImplementationDescription:: + begin_nodeExecParameter () + { + return nodeExecParameter_.begin (); + } + + MonolithicImplementationDescription::nodeExecParameter_iterator MonolithicImplementationDescription:: + end_nodeExecParameter () + { + return nodeExecParameter_.end (); + } + + MonolithicImplementationDescription::nodeExecParameter_const_iterator MonolithicImplementationDescription:: + begin_nodeExecParameter () const + { + return nodeExecParameter_.begin (); + } + + MonolithicImplementationDescription::nodeExecParameter_const_iterator MonolithicImplementationDescription:: + end_nodeExecParameter () const + { + return nodeExecParameter_.end (); + } + + void MonolithicImplementationDescription:: + add_nodeExecParameter (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + nodeExecParameter_.push_back (e); + } + + size_t MonolithicImplementationDescription:: + count_nodeExecParameter(void) const + { + return nodeExecParameter_.size (); + } + + // MonolithicImplementationDescription + // + MonolithicImplementationDescription::componentExecParameter_iterator MonolithicImplementationDescription:: + begin_componentExecParameter () + { + return componentExecParameter_.begin (); + } + + MonolithicImplementationDescription::componentExecParameter_iterator MonolithicImplementationDescription:: + end_componentExecParameter () + { + return componentExecParameter_.end (); + } + + MonolithicImplementationDescription::componentExecParameter_const_iterator MonolithicImplementationDescription:: + begin_componentExecParameter () const + { + return componentExecParameter_.begin (); + } + + MonolithicImplementationDescription::componentExecParameter_const_iterator MonolithicImplementationDescription:: + end_componentExecParameter () const + { + return componentExecParameter_.end (); + } + + void MonolithicImplementationDescription:: + add_componentExecParameter (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + componentExecParameter_.push_back (e); + } + + size_t MonolithicImplementationDescription:: + count_componentExecParameter(void) const + { + return componentExecParameter_.size (); + } + + // MonolithicImplementationDescription + // + MonolithicImplementationDescription::deployRequirement_iterator MonolithicImplementationDescription:: + begin_deployRequirement () + { + return deployRequirement_.begin (); + } + + MonolithicImplementationDescription::deployRequirement_iterator MonolithicImplementationDescription:: + end_deployRequirement () + { + return deployRequirement_.end (); + } + + MonolithicImplementationDescription::deployRequirement_const_iterator MonolithicImplementationDescription:: + begin_deployRequirement () const + { + return deployRequirement_.begin (); + } + + MonolithicImplementationDescription::deployRequirement_const_iterator MonolithicImplementationDescription:: + end_deployRequirement () const + { + return deployRequirement_.end (); + } + + void MonolithicImplementationDescription:: + add_deployRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationRequirement, ACE_Null_Mutex > const& e) + { + deployRequirement_.push_back (e); + } + + size_t MonolithicImplementationDescription:: + count_deployRequirement(void) const + { + return deployRequirement_.size (); + } + + // MonolithicImplementationDescription + // + MonolithicImplementationDescription::primaryArtifact_iterator MonolithicImplementationDescription:: + begin_primaryArtifact () + { + return primaryArtifact_.begin (); + } + + MonolithicImplementationDescription::primaryArtifact_iterator MonolithicImplementationDescription:: + end_primaryArtifact () + { + return primaryArtifact_.end (); + } + + MonolithicImplementationDescription::primaryArtifact_const_iterator MonolithicImplementationDescription:: + begin_primaryArtifact () const + { + return primaryArtifact_.begin (); + } + + MonolithicImplementationDescription::primaryArtifact_const_iterator MonolithicImplementationDescription:: + end_primaryArtifact () const + { + return primaryArtifact_.end (); + } + + void MonolithicImplementationDescription:: + add_primaryArtifact (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > const& e) + { + primaryArtifact_.push_back (e); + } + + size_t MonolithicImplementationDescription:: + count_primaryArtifact(void) const + { + return primaryArtifact_.size (); + } + + + // ComponentImplementationDescription + // + + ComponentImplementationDescription:: + ComponentImplementationDescription () + : + regulator__ () + { + } + + ComponentImplementationDescription:: + ComponentImplementationDescription (ComponentImplementationDescription const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + implements_ (s.implements_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.implements_) : 0), + assemblyImpl_ (s.assemblyImpl_.get () ? new ::CIAO::Config_Handlers::ComponentAssemblyDescription (*s.assemblyImpl_) : 0), + monolithicImpl_ (s.monolithicImpl_.get () ? new ::CIAO::Config_Handlers::MonolithicImplementationDescription (*s.monolithicImpl_) : 0), + configProperty_ (s.configProperty_), + capability_ (s.capability_), + dependsOn_ (s.dependsOn_), + infoProperty_ (s.infoProperty_), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (implements_.get ()) implements_->container (this); + if (assemblyImpl_.get ()) assemblyImpl_->container (this); + if (monolithicImpl_.get ()) monolithicImpl_->container (this); + if (href_.get ()) href_->container (this); + } + + ComponentImplementationDescription& ComponentImplementationDescription:: + operator= (ComponentImplementationDescription const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.implements_.get ()) + implements (*(s.implements_)); + else + implements_.reset (0); + + if (s.assemblyImpl_.get ()) + assemblyImpl (*(s.assemblyImpl_)); + else + assemblyImpl_.reset (0); + + if (s.monolithicImpl_.get ()) + monolithicImpl (*(s.monolithicImpl_)); + else + monolithicImpl_.reset (0); + + configProperty_ = s.configProperty_; + + capability_ = s.capability_; + + dependsOn_ = s.dependsOn_; + + infoProperty_ = s.infoProperty_; + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // ComponentImplementationDescription + // + bool ComponentImplementationDescription:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription:: + label () const + { + return *label_; + } + + void ComponentImplementationDescription:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // ComponentImplementationDescription + // + bool ComponentImplementationDescription:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription:: + UUID () const + { + return *UUID_; + } + + void ComponentImplementationDescription:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // ComponentImplementationDescription + // + bool ComponentImplementationDescription:: + implements_p () const + { + return implements_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& ComponentImplementationDescription:: + implements () const + { + return *implements_; + } + + void ComponentImplementationDescription:: + implements (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e) + { + if (implements_.get ()) + { + *implements_ = e; + } + + else + { + implements_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e)); + implements_->container (this); + } + } + + // ComponentImplementationDescription + // + bool ComponentImplementationDescription:: + assemblyImpl_p () const + { + return assemblyImpl_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentAssemblyDescription const& ComponentImplementationDescription:: + assemblyImpl () const + { + return *assemblyImpl_; + } + + void ComponentImplementationDescription:: + assemblyImpl (::CIAO::Config_Handlers::ComponentAssemblyDescription const& e) + { + if (assemblyImpl_.get ()) + { + *assemblyImpl_ = e; + } + + else + { + assemblyImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > (new ::CIAO::Config_Handlers::ComponentAssemblyDescription (e)); + assemblyImpl_->container (this); + } + } + + // ComponentImplementationDescription + // + bool ComponentImplementationDescription:: + monolithicImpl_p () const + { + return monolithicImpl_.get () != 0; + } + + ::CIAO::Config_Handlers::MonolithicImplementationDescription const& ComponentImplementationDescription:: + monolithicImpl () const + { + return *monolithicImpl_; + } + + void ComponentImplementationDescription:: + monolithicImpl (::CIAO::Config_Handlers::MonolithicImplementationDescription const& e) + { + if (monolithicImpl_.get ()) + { + *monolithicImpl_ = e; + } + + else + { + monolithicImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > (new ::CIAO::Config_Handlers::MonolithicImplementationDescription (e)); + monolithicImpl_->container (this); + } + } + + // ComponentImplementationDescription + // + ComponentImplementationDescription::configProperty_iterator ComponentImplementationDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + ComponentImplementationDescription::configProperty_iterator ComponentImplementationDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + ComponentImplementationDescription::configProperty_const_iterator ComponentImplementationDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + ComponentImplementationDescription::configProperty_const_iterator ComponentImplementationDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void ComponentImplementationDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t ComponentImplementationDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // ComponentImplementationDescription + // + ComponentImplementationDescription::capability_iterator ComponentImplementationDescription:: + begin_capability () + { + return capability_.begin (); + } + + ComponentImplementationDescription::capability_iterator ComponentImplementationDescription:: + end_capability () + { + return capability_.end (); + } + + ComponentImplementationDescription::capability_const_iterator ComponentImplementationDescription:: + begin_capability () const + { + return capability_.begin (); + } + + ComponentImplementationDescription::capability_const_iterator ComponentImplementationDescription:: + end_capability () const + { + return capability_.end (); + } + + void ComponentImplementationDescription:: + add_capability (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > const& e) + { + capability_.push_back (e); + } + + size_t ComponentImplementationDescription:: + count_capability(void) const + { + return capability_.size (); + } + + // ComponentImplementationDescription + // + ComponentImplementationDescription::dependsOn_iterator ComponentImplementationDescription:: + begin_dependsOn () + { + return dependsOn_.begin (); + } + + ComponentImplementationDescription::dependsOn_iterator ComponentImplementationDescription:: + end_dependsOn () + { + return dependsOn_.end (); + } + + ComponentImplementationDescription::dependsOn_const_iterator ComponentImplementationDescription:: + begin_dependsOn () const + { + return dependsOn_.begin (); + } + + ComponentImplementationDescription::dependsOn_const_iterator ComponentImplementationDescription:: + end_dependsOn () const + { + return dependsOn_.end (); + } + + void ComponentImplementationDescription:: + add_dependsOn (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > const& e) + { + dependsOn_.push_back (e); + } + + size_t ComponentImplementationDescription:: + count_dependsOn(void) const + { + return dependsOn_.size (); + } + + // ComponentImplementationDescription + // + ComponentImplementationDescription::infoProperty_iterator ComponentImplementationDescription:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + ComponentImplementationDescription::infoProperty_iterator ComponentImplementationDescription:: + end_infoProperty () + { + return infoProperty_.end (); + } + + ComponentImplementationDescription::infoProperty_const_iterator ComponentImplementationDescription:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + ComponentImplementationDescription::infoProperty_const_iterator ComponentImplementationDescription:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void ComponentImplementationDescription:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t ComponentImplementationDescription:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // ComponentImplementationDescription + // + bool ComponentImplementationDescription:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& ComponentImplementationDescription:: + href () + { + return *href_; + } + + void ComponentImplementationDescription:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + + + // ConnectorImplementationDescription + // + + ConnectorImplementationDescription:: + ConnectorImplementationDescription () + : + regulator__ () + { + } + + ConnectorImplementationDescription:: + ConnectorImplementationDescription (ConnectorImplementationDescription const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + implements_ (s.implements_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.implements_) : 0), + assemblyImpl_ (s.assemblyImpl_.get () ? new ::CIAO::Config_Handlers::ComponentAssemblyDescription (*s.assemblyImpl_) : 0), + monolithicImpl_ (s.monolithicImpl_.get () ? new ::CIAO::Config_Handlers::MonolithicImplementationDescription (*s.monolithicImpl_) : 0), + configProperty_ (s.configProperty_), + capability_ (s.capability_), + dependsOn_ (s.dependsOn_), + infoProperty_ (s.infoProperty_), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (implements_.get ()) implements_->container (this); + if (assemblyImpl_.get ()) assemblyImpl_->container (this); + if (monolithicImpl_.get ()) monolithicImpl_->container (this); + if (href_.get ()) href_->container (this); + } + + ConnectorImplementationDescription& ConnectorImplementationDescription:: + operator= (ConnectorImplementationDescription const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.implements_.get ()) + implements (*(s.implements_)); + else + implements_.reset (0); + + if (s.assemblyImpl_.get ()) + assemblyImpl (*(s.assemblyImpl_)); + else + assemblyImpl_.reset (0); + + if (s.monolithicImpl_.get ()) + monolithicImpl (*(s.monolithicImpl_)); + else + monolithicImpl_.reset (0); + + configProperty_ = s.configProperty_; + + capability_ = s.capability_; + + dependsOn_ = s.dependsOn_; + + infoProperty_ = s.infoProperty_; + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // ConnectorImplementationDescription + // + bool ConnectorImplementationDescription:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ConnectorImplementationDescription:: + label () const + { + return *label_; + } + + void ConnectorImplementationDescription:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // ConnectorImplementationDescription + // + bool ConnectorImplementationDescription:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ConnectorImplementationDescription:: + UUID () const + { + return *UUID_; + } + + void ConnectorImplementationDescription:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // ConnectorImplementationDescription + // + bool ConnectorImplementationDescription:: + implements_p () const + { + return implements_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& ConnectorImplementationDescription:: + implements () const + { + return *implements_; + } + + void ConnectorImplementationDescription:: + implements (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e) + { + if (implements_.get ()) + { + *implements_ = e; + } + + else + { + implements_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e)); + implements_->container (this); + } + } + + // ConnectorImplementationDescription + // + bool ConnectorImplementationDescription:: + assemblyImpl_p () const + { + return assemblyImpl_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentAssemblyDescription const& ConnectorImplementationDescription:: + assemblyImpl () const + { + return *assemblyImpl_; + } + + void ConnectorImplementationDescription:: + assemblyImpl (::CIAO::Config_Handlers::ComponentAssemblyDescription const& e) + { + if (assemblyImpl_.get ()) + { + *assemblyImpl_ = e; + } + + else + { + assemblyImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > (new ::CIAO::Config_Handlers::ComponentAssemblyDescription (e)); + assemblyImpl_->container (this); + } + } + + // ConnectorImplementationDescription + // + bool ConnectorImplementationDescription:: + monolithicImpl_p () const + { + return monolithicImpl_.get () != 0; + } + + ::CIAO::Config_Handlers::MonolithicImplementationDescription const& ConnectorImplementationDescription:: + monolithicImpl () const + { + return *monolithicImpl_; + } + + void ConnectorImplementationDescription:: + monolithicImpl (::CIAO::Config_Handlers::MonolithicImplementationDescription const& e) + { + if (monolithicImpl_.get ()) + { + *monolithicImpl_ = e; + } + + else + { + monolithicImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > (new ::CIAO::Config_Handlers::MonolithicImplementationDescription (e)); + monolithicImpl_->container (this); + } + } + + // ConnectorImplementationDescription + // + ConnectorImplementationDescription::configProperty_iterator ConnectorImplementationDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + ConnectorImplementationDescription::configProperty_iterator ConnectorImplementationDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + ConnectorImplementationDescription::configProperty_const_iterator ConnectorImplementationDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + ConnectorImplementationDescription::configProperty_const_iterator ConnectorImplementationDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void ConnectorImplementationDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t ConnectorImplementationDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // ConnectorImplementationDescription + // + ConnectorImplementationDescription::capability_iterator ConnectorImplementationDescription:: + begin_capability () + { + return capability_.begin (); + } + + ConnectorImplementationDescription::capability_iterator ConnectorImplementationDescription:: + end_capability () + { + return capability_.end (); + } + + ConnectorImplementationDescription::capability_const_iterator ConnectorImplementationDescription:: + begin_capability () const + { + return capability_.begin (); + } + + ConnectorImplementationDescription::capability_const_iterator ConnectorImplementationDescription:: + end_capability () const + { + return capability_.end (); + } + + void ConnectorImplementationDescription:: + add_capability (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > const& e) + { + capability_.push_back (e); + } + + size_t ConnectorImplementationDescription:: + count_capability(void) const + { + return capability_.size (); + } + + // ConnectorImplementationDescription + // + ConnectorImplementationDescription::dependsOn_iterator ConnectorImplementationDescription:: + begin_dependsOn () + { + return dependsOn_.begin (); + } + + ConnectorImplementationDescription::dependsOn_iterator ConnectorImplementationDescription:: + end_dependsOn () + { + return dependsOn_.end (); + } + + ConnectorImplementationDescription::dependsOn_const_iterator ConnectorImplementationDescription:: + begin_dependsOn () const + { + return dependsOn_.begin (); + } + + ConnectorImplementationDescription::dependsOn_const_iterator ConnectorImplementationDescription:: + end_dependsOn () const + { + return dependsOn_.end (); + } + + void ConnectorImplementationDescription:: + add_dependsOn (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > const& e) + { + dependsOn_.push_back (e); + } + + size_t ConnectorImplementationDescription:: + count_dependsOn(void) const + { + return dependsOn_.size (); + } + + // ConnectorImplementationDescription + // + ConnectorImplementationDescription::infoProperty_iterator ConnectorImplementationDescription:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + ConnectorImplementationDescription::infoProperty_iterator ConnectorImplementationDescription:: + end_infoProperty () + { + return infoProperty_.end (); + } + + ConnectorImplementationDescription::infoProperty_const_iterator ConnectorImplementationDescription:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + ConnectorImplementationDescription::infoProperty_const_iterator ConnectorImplementationDescription:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void ConnectorImplementationDescription:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t ConnectorImplementationDescription:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // ConnectorImplementationDescription + // + bool ConnectorImplementationDescription:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ConnectorImplementationDescription:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& ConnectorImplementationDescription:: + href () + { + return *href_; + } + + void ConnectorImplementationDescription:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // ComponentPackageReference + // + + ComponentPackageReference:: + ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("requiredUUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + requiredUUID (t); + } + + else if (n == ACE_TEXT("requiredName")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + requiredName (t); + } + + else if (n == ACE_TEXT("requiredType")) + { + requiredType_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e)); + requiredType_->container (this); + } + + else + { + } + } + } + + // SubcomponentInstantiationDescription + // + + SubcomponentInstantiationDescription:: + SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("basePackage")) + { + ::CIAO::Config_Handlers::ComponentPackageDescription t (e); + basePackage (t); + } + + else if (n == ACE_TEXT("specializedConfig")) + { + ::CIAO::Config_Handlers::PackageConfiguration t (e); + specializedConfig (t); + } + + else if (n == ACE_TEXT("selectRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_selectRequirement (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("referencedPackage")) + { + ::CIAO::Config_Handlers::ComponentPackageReference t (e); + referencedPackage (t); + } + + else if (n == ACE_TEXT("importedPackage")) + { + ::CIAO::Config_Handlers::ComponentPackageImport t (e); + importedPackage (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("id")) + { + ::XMLSchema::ID< ACE_TCHAR > t (a); + id (t); + std::basic_string temp ((*id_).c_str()); + (*ACE_Singleton::instance())-> + add_id(temp, dynamic_cast (this)); + } + + else + { + } + } + } + + // SubcomponentPropertyReference + // + + SubcomponentPropertyReference:: + SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("propertyName")) + { + propertyName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + propertyName_->container (this); + } + + else if (n == ACE_TEXT("instance")) + { + instance_ = ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > (new ::CIAO::Config_Handlers::IdRef (e)); + instance_->container (this); + } + + else + { + } + } + } + + // AssemblyPropertyMapping + // + + AssemblyPropertyMapping:: + AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("externalName")) + { + externalName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + externalName_->container (this); + } + + else if (n == ACE_TEXT("delegatesTo")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPropertyReference, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SubcomponentPropertyReference (e)); + add_delegatesTo (t); + } + + else + { + } + } + } + + // LocalityKind + // + + LocalityKind:: + LocalityKind (::XSCRT::XML::Element< ACE_TCHAR > const& e) + : ::XSCRT::Type (e) + { + ::std::basic_string< ACE_TCHAR > v (e.value ()); + + if (v == ACE_TEXT ("SameNodeAnyProcess")) v_ = SameNodeAnyProcess_l; + else if (v == ACE_TEXT ("SameNodeSameProcess")) v_ = SameNodeSameProcess_l; + else if (v == ACE_TEXT ("SameNodeDifferentProcess")) v_ = SameNodeDifferentProcess_l; + else if (v == ACE_TEXT ("DifferentNode")) v_ = DifferentNode_l; + else if (v == ACE_TEXT ("DifferentProcess")) v_ = DifferentProcess_l; + else if (v == ACE_TEXT ("NoConstraint")) v_ = NoConstraint_l; + else + { + } + } + + LocalityKind:: + LocalityKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a) + : ::XSCRT::Type (a) + { + ::std::basic_string< ACE_TCHAR > v (a.value ()); + + if (v == ACE_TEXT ("SameNodeAnyProcess")) v_ = SameNodeAnyProcess_l; + else if (v == ACE_TEXT ("SameNodeSameProcess")) v_ = SameNodeSameProcess_l; + else if (v == ACE_TEXT ("SameNodeDifferentProcess")) v_ = SameNodeDifferentProcess_l; + else if (v == ACE_TEXT ("DifferentNode")) v_ = DifferentNode_l; + else if (v == ACE_TEXT ("DifferentProcess")) v_ = DifferentProcess_l; + else if (v == ACE_TEXT ("NoConstraint")) v_ = NoConstraint_l; + else + { + } + } + + LocalityKind const LocalityKind::SameNodeAnyProcess (LocalityKind::SameNodeAnyProcess_l); + LocalityKind const LocalityKind::SameNodeSameProcess (LocalityKind::SameNodeSameProcess_l); + LocalityKind const LocalityKind::SameNodeDifferentProcess (LocalityKind::SameNodeDifferentProcess_l); + LocalityKind const LocalityKind::DifferentNode (LocalityKind::DifferentNode_l); + LocalityKind const LocalityKind::DifferentProcess (LocalityKind::DifferentProcess_l); + LocalityKind const LocalityKind::NoConstraint (LocalityKind::NoConstraint_l); + + // Locality + // + + Locality:: + Locality (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("constraint")) + { + constraint_ = ::std::auto_ptr< ::CIAO::Config_Handlers::LocalityKind > (new ::CIAO::Config_Handlers::LocalityKind (e)); + constraint_->container (this); + } + + else if (n == ACE_TEXT("constrainedInstance")) + { + constrainedInstance_ = ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > (new ::CIAO::Config_Handlers::IdRef (e)); + constrainedInstance_->container (this); + } + + else + { + } + } + } + + // ComponentAssemblyDescription + // + + ComponentAssemblyDescription:: + ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("instance")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentInstantiationDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::SubcomponentInstantiationDescription (e)); + add_instance (t); + } + + else if (n == ACE_TEXT("connection")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyConnectionDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::AssemblyConnectionDescription (e)); + add_connection (t); + } + + else if (n == ACE_TEXT("externalProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyPropertyMapping, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::AssemblyPropertyMapping (e)); + add_externalProperty (t); + } + + else if (n == ACE_TEXT("locality")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Locality, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Locality (e)); + add_locality (t); + } + + else + { + } + } + } + + // MonolithicImplementationDescription + // + + MonolithicImplementationDescription:: + MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("nodeExecParameter")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_nodeExecParameter (t); + } + + else if (n == ACE_TEXT("componentExecParameter")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_componentExecParameter (t); + } + + else if (n == ACE_TEXT("deployRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationRequirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ImplementationRequirement (e)); + add_deployRequirement (t); + } + + else if (n == ACE_TEXT("primaryArtifact")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::NamedImplementationArtifact (e)); + add_primaryArtifact (t); + } + + else + { + } + } + } + + // ComponentImplementationDescription + // + + ComponentImplementationDescription:: + ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("implements")) + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription t (e); + implements (t); + } + + else if (n == ACE_TEXT("assemblyImpl")) + { + ::CIAO::Config_Handlers::ComponentAssemblyDescription t (e); + assemblyImpl (t); + } + + else if (n == ACE_TEXT("monolithicImpl")) + { + ::CIAO::Config_Handlers::MonolithicImplementationDescription t (e); + monolithicImpl (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("capability")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Capability (e)); + add_capability (t); + } + + else if (n == ACE_TEXT("dependsOn")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ImplementationDependency (e)); + add_dependsOn (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else + { + } + } + } + + // ConnectorImplementationDescription + // + + ConnectorImplementationDescription:: + ConnectorImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("implements")) + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription t (e); + implements (t); + } + + else if (n == ACE_TEXT("assemblyImpl")) + { + ::CIAO::Config_Handlers::ComponentAssemblyDescription t (e); + assemblyImpl (t); + } + + else if (n == ACE_TEXT("monolithicImpl")) + { + ::CIAO::Config_Handlers::MonolithicImplementationDescription t (e); + monolithicImpl (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("capability")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Capability (e)); + add_capability (t); + } + + else if (n == ACE_TEXT("dependsOn")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ImplementationDependency (e)); + add_dependsOn (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct ComponentPackageReferenceTypeInfoInitializer + { + ComponentPackageReferenceTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentPackageReference)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentPackageReferenceTypeInfoInitializer ComponentPackageReferenceTypeInfoInitializer_; + + struct SubcomponentInstantiationDescriptionTypeInfoInitializer + { + SubcomponentInstantiationDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::SubcomponentInstantiationDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SubcomponentInstantiationDescriptionTypeInfoInitializer SubcomponentInstantiationDescriptionTypeInfoInitializer_; + + struct SubcomponentPropertyReferenceTypeInfoInitializer + { + SubcomponentPropertyReferenceTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::SubcomponentPropertyReference)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + SubcomponentPropertyReferenceTypeInfoInitializer SubcomponentPropertyReferenceTypeInfoInitializer_; + + struct AssemblyPropertyMappingTypeInfoInitializer + { + AssemblyPropertyMappingTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::AssemblyPropertyMapping)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + AssemblyPropertyMappingTypeInfoInitializer AssemblyPropertyMappingTypeInfoInitializer_; + + struct LocalityKindTypeInfoInitializer + { + LocalityKindTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (LocalityKind)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + LocalityKindTypeInfoInitializer LocalityKindTypeInfoInitializer_; + + struct LocalityTypeInfoInitializer + { + LocalityTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::Locality)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + LocalityTypeInfoInitializer LocalityTypeInfoInitializer_; + + struct ComponentAssemblyDescriptionTypeInfoInitializer + { + ComponentAssemblyDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentAssemblyDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentAssemblyDescriptionTypeInfoInitializer ComponentAssemblyDescriptionTypeInfoInitializer_; + + struct MonolithicImplementationDescriptionTypeInfoInitializer + { + MonolithicImplementationDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::MonolithicImplementationDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + MonolithicImplementationDescriptionTypeInfoInitializer MonolithicImplementationDescriptionTypeInfoInitializer_; + + struct ComponentImplementationDescriptionTypeInfoInitializer + { + ComponentImplementationDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentImplementationDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentImplementationDescriptionTypeInfoInitializer ComponentImplementationDescriptionTypeInfoInitializer_; + + struct ConnectorImplementationDescriptionTypeInfoInitializer + { + ConnectorImplementationDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ConnectorImplementationDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ConnectorImplementationDescriptionTypeInfoInitializer ConnectorImplementationDescriptionTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // ComponentPackageReference + // + // + + void ComponentPackageReference:: + traverse (Type& o) + { + pre (o); + if (o.requiredUUID_p ()) requiredUUID (o); + else requiredUUID_none (o); + if (o.requiredName_p ()) requiredName (o); + else requiredName_none (o); + requiredType (o); + post (o); + } + + void ComponentPackageReference:: + traverse (Type const& o) + { + pre (o); + if (o.requiredUUID_p ()) requiredUUID (o); + else requiredUUID_none (o); + if (o.requiredName_p ()) requiredName (o); + else requiredName_none (o); + requiredType (o); + post (o); + } + + void ComponentPackageReference:: + pre (Type&) + { + } + + void ComponentPackageReference:: + pre (Type const&) + { + } + + void ComponentPackageReference:: + requiredUUID (Type& o) + { + dispatch (o.requiredUUID ()); + } + + void ComponentPackageReference:: + requiredUUID (Type const& o) + { + dispatch (o.requiredUUID ()); + } + + void ComponentPackageReference:: + requiredUUID_none (Type&) + { + } + + void ComponentPackageReference:: + requiredUUID_none (Type const&) + { + } + + void ComponentPackageReference:: + requiredName (Type& o) + { + dispatch (o.requiredName ()); + } + + void ComponentPackageReference:: + requiredName (Type const& o) + { + dispatch (o.requiredName ()); + } + + void ComponentPackageReference:: + requiredName_none (Type&) + { + } + + void ComponentPackageReference:: + requiredName_none (Type const&) + { + } + + void ComponentPackageReference:: + requiredType (Type& o) + { + dispatch (o.requiredType ()); + } + + void ComponentPackageReference:: + requiredType (Type const& o) + { + dispatch (o.requiredType ()); + } + + void ComponentPackageReference:: + post (Type&) + { + } + + void ComponentPackageReference:: + post (Type const&) + { + } + + // SubcomponentInstantiationDescription + // + // + + void SubcomponentInstantiationDescription:: + traverse (Type& o) + { + pre (o); + name (o); + if (o.basePackage_p ()) basePackage (o); + else basePackage_none (o); + if (o.specializedConfig_p ()) specializedConfig (o); + else specializedConfig_none (o); + selectRequirement (o); + configProperty (o); + if (o.referencedPackage_p ()) referencedPackage (o); + else referencedPackage_none (o); + if (o.importedPackage_p ()) importedPackage (o); + else importedPackage_none (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void SubcomponentInstantiationDescription:: + traverse (Type const& o) + { + pre (o); + name (o); + if (o.basePackage_p ()) basePackage (o); + else basePackage_none (o); + if (o.specializedConfig_p ()) specializedConfig (o); + else specializedConfig_none (o); + selectRequirement (o); + configProperty (o); + if (o.referencedPackage_p ()) referencedPackage (o); + else referencedPackage_none (o); + if (o.importedPackage_p ()) importedPackage (o); + else importedPackage_none (o); + if (o.id_p ()) id (o); + else id_none (o); + post (o); + } + + void SubcomponentInstantiationDescription:: + pre (Type&) + { + } + + void SubcomponentInstantiationDescription:: + pre (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + name (Type& o) + { + dispatch (o.name ()); + } + + void SubcomponentInstantiationDescription:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void SubcomponentInstantiationDescription:: + basePackage (Type& o) + { + dispatch (o.basePackage ()); + } + + void SubcomponentInstantiationDescription:: + basePackage (Type const& o) + { + dispatch (o.basePackage ()); + } + + void SubcomponentInstantiationDescription:: + basePackage_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + basePackage_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + specializedConfig (Type& o) + { + dispatch (o.specializedConfig ()); + } + + void SubcomponentInstantiationDescription:: + specializedConfig (Type const& o) + { + dispatch (o.specializedConfig ()); + } + + void SubcomponentInstantiationDescription:: + specializedConfig_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + specializedConfig_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::SubcomponentInstantiationDescription::selectRequirement_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement()); + + if (b != e) + { + selectRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) selectRequirement_next (o); + } + + selectRequirement_post (o); + } + + else selectRequirement_none (o); + } + + void SubcomponentInstantiationDescription:: + selectRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::SubcomponentInstantiationDescription::selectRequirement_const_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement()); + + if (b != e) + { + selectRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) selectRequirement_next (o); + } + + selectRequirement_post (o); + } + + else selectRequirement_none (o); + } + + void SubcomponentInstantiationDescription:: + selectRequirement_pre (Type&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_pre (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_next (Type&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_next (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_post (Type&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_post (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + selectRequirement_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::SubcomponentInstantiationDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void SubcomponentInstantiationDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::SubcomponentInstantiationDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void SubcomponentInstantiationDescription:: + configProperty_pre (Type&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_pre (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_next (Type&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_next (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_post (Type&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_post (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + configProperty_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + referencedPackage (Type& o) + { + dispatch (o.referencedPackage ()); + } + + void SubcomponentInstantiationDescription:: + referencedPackage (Type const& o) + { + dispatch (o.referencedPackage ()); + } + + void SubcomponentInstantiationDescription:: + referencedPackage_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + referencedPackage_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + importedPackage (Type& o) + { + dispatch (o.importedPackage ()); + } + + void SubcomponentInstantiationDescription:: + importedPackage (Type const& o) + { + dispatch (o.importedPackage ()); + } + + void SubcomponentInstantiationDescription:: + importedPackage_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + importedPackage_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + id (Type& o) + { + dispatch (o.id ()); + } + + void SubcomponentInstantiationDescription:: + id (Type const& o) + { + dispatch (o.id ()); + } + + void SubcomponentInstantiationDescription:: + id_none (Type&) + { + } + + void SubcomponentInstantiationDescription:: + id_none (Type const&) + { + } + + void SubcomponentInstantiationDescription:: + post (Type&) + { + } + + void SubcomponentInstantiationDescription:: + post (Type const&) + { + } + + // SubcomponentPropertyReference + // + // + + void SubcomponentPropertyReference:: + traverse (Type& o) + { + pre (o); + propertyName (o); + instance (o); + post (o); + } + + void SubcomponentPropertyReference:: + traverse (Type const& o) + { + pre (o); + propertyName (o); + instance (o); + post (o); + } + + void SubcomponentPropertyReference:: + pre (Type&) + { + } + + void SubcomponentPropertyReference:: + pre (Type const&) + { + } + + void SubcomponentPropertyReference:: + propertyName (Type& o) + { + dispatch (o.propertyName ()); + } + + void SubcomponentPropertyReference:: + propertyName (Type const& o) + { + dispatch (o.propertyName ()); + } + + void SubcomponentPropertyReference:: + instance (Type& o) + { + dispatch (o.instance ()); + } + + void SubcomponentPropertyReference:: + instance (Type const& o) + { + dispatch (o.instance ()); + } + + void SubcomponentPropertyReference:: + post (Type&) + { + } + + void SubcomponentPropertyReference:: + post (Type const&) + { + } + + // AssemblyPropertyMapping + // + // + + void AssemblyPropertyMapping:: + traverse (Type& o) + { + pre (o); + name (o); + externalName (o); + delegatesTo (o); + post (o); + } + + void AssemblyPropertyMapping:: + traverse (Type const& o) + { + pre (o); + name (o); + externalName (o); + delegatesTo (o); + post (o); + } + + void AssemblyPropertyMapping:: + pre (Type&) + { + } + + void AssemblyPropertyMapping:: + pre (Type const&) + { + } + + void AssemblyPropertyMapping:: + name (Type& o) + { + dispatch (o.name ()); + } + + void AssemblyPropertyMapping:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void AssemblyPropertyMapping:: + externalName (Type& o) + { + dispatch (o.externalName ()); + } + + void AssemblyPropertyMapping:: + externalName (Type const& o) + { + dispatch (o.externalName ()); + } + + void AssemblyPropertyMapping:: + delegatesTo (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyPropertyMapping::delegatesTo_iterator b (o.begin_delegatesTo()), e (o.end_delegatesTo()); + + if (b != e) + { + delegatesTo_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) delegatesTo_next (o); + } + + delegatesTo_post (o); + } + + else delegatesTo_none (o); + } + + void AssemblyPropertyMapping:: + delegatesTo (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::AssemblyPropertyMapping::delegatesTo_const_iterator b (o.begin_delegatesTo()), e (o.end_delegatesTo()); + + if (b != e) + { + delegatesTo_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) delegatesTo_next (o); + } + + delegatesTo_post (o); + } + + else delegatesTo_none (o); + } + + void AssemblyPropertyMapping:: + delegatesTo_pre (Type&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_pre (Type const&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_next (Type&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_next (Type const&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_post (Type&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_post (Type const&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_none (Type&) + { + } + + void AssemblyPropertyMapping:: + delegatesTo_none (Type const&) + { + } + + void AssemblyPropertyMapping:: + post (Type&) + { + } + + void AssemblyPropertyMapping:: + post (Type const&) + { + } + + // Locality + // + // + + void Locality:: + traverse (Type& o) + { + pre (o); + constraint (o); + constrainedInstance (o); + post (o); + } + + void Locality:: + traverse (Type const& o) + { + pre (o); + constraint (o); + constrainedInstance (o); + post (o); + } + + void Locality:: + pre (Type&) + { + } + + void Locality:: + pre (Type const&) + { + } + + void Locality:: + constraint (Type& o) + { + dispatch (o.constraint ()); + } + + void Locality:: + constraint (Type const& o) + { + dispatch (o.constraint ()); + } + + void Locality:: + constrainedInstance (Type& o) + { + dispatch (o.constrainedInstance ()); + } + + void Locality:: + constrainedInstance (Type const& o) + { + dispatch (o.constrainedInstance ()); + } + + void Locality:: + post (Type&) + { + } + + void Locality:: + post (Type const&) + { + } + + // ComponentAssemblyDescription + // + // + + void ComponentAssemblyDescription:: + traverse (Type& o) + { + pre (o); + instance (o); + connection (o); + externalProperty (o); + locality (o); + post (o); + } + + void ComponentAssemblyDescription:: + traverse (Type const& o) + { + pre (o); + instance (o); + connection (o); + externalProperty (o); + locality (o); + post (o); + } + + void ComponentAssemblyDescription:: + pre (Type&) + { + } + + void ComponentAssemblyDescription:: + pre (Type const&) + { + } + + void ComponentAssemblyDescription:: + instance (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::instance_iterator b (o.begin_instance()), e (o.end_instance()); + + if (b != e) + { + instance_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) instance_next (o); + } + + instance_post (o); + } + + else instance_none (o); + } + + void ComponentAssemblyDescription:: + instance (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::instance_const_iterator b (o.begin_instance()), e (o.end_instance()); + + if (b != e) + { + instance_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) instance_next (o); + } + + instance_post (o); + } + + else instance_none (o); + } + + void ComponentAssemblyDescription:: + instance_pre (Type&) + { + } + + void ComponentAssemblyDescription:: + instance_pre (Type const&) + { + } + + void ComponentAssemblyDescription:: + instance_next (Type&) + { + } + + void ComponentAssemblyDescription:: + instance_next (Type const&) + { + } + + void ComponentAssemblyDescription:: + instance_post (Type&) + { + } + + void ComponentAssemblyDescription:: + instance_post (Type const&) + { + } + + void ComponentAssemblyDescription:: + instance_none (Type&) + { + } + + void ComponentAssemblyDescription:: + instance_none (Type const&) + { + } + + void ComponentAssemblyDescription:: + connection (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::connection_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void ComponentAssemblyDescription:: + connection (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::connection_const_iterator b (o.begin_connection()), e (o.end_connection()); + + if (b != e) + { + connection_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) connection_next (o); + } + + connection_post (o); + } + + else connection_none (o); + } + + void ComponentAssemblyDescription:: + connection_pre (Type&) + { + } + + void ComponentAssemblyDescription:: + connection_pre (Type const&) + { + } + + void ComponentAssemblyDescription:: + connection_next (Type&) + { + } + + void ComponentAssemblyDescription:: + connection_next (Type const&) + { + } + + void ComponentAssemblyDescription:: + connection_post (Type&) + { + } + + void ComponentAssemblyDescription:: + connection_post (Type const&) + { + } + + void ComponentAssemblyDescription:: + connection_none (Type&) + { + } + + void ComponentAssemblyDescription:: + connection_none (Type const&) + { + } + + void ComponentAssemblyDescription:: + externalProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::externalProperty_iterator b (o.begin_externalProperty()), e (o.end_externalProperty()); + + if (b != e) + { + externalProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalProperty_next (o); + } + + externalProperty_post (o); + } + + else externalProperty_none (o); + } + + void ComponentAssemblyDescription:: + externalProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::externalProperty_const_iterator b (o.begin_externalProperty()), e (o.end_externalProperty()); + + if (b != e) + { + externalProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) externalProperty_next (o); + } + + externalProperty_post (o); + } + + else externalProperty_none (o); + } + + void ComponentAssemblyDescription:: + externalProperty_pre (Type&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_pre (Type const&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_next (Type&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_next (Type const&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_post (Type&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_post (Type const&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_none (Type&) + { + } + + void ComponentAssemblyDescription:: + externalProperty_none (Type const&) + { + } + + void ComponentAssemblyDescription:: + locality (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::locality_iterator b (o.begin_locality()), e (o.end_locality()); + + if (b != e) + { + locality_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) locality_next (o); + } + + locality_post (o); + } + + else locality_none (o); + } + + void ComponentAssemblyDescription:: + locality (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentAssemblyDescription::locality_const_iterator b (o.begin_locality()), e (o.end_locality()); + + if (b != e) + { + locality_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) locality_next (o); + } + + locality_post (o); + } + + else locality_none (o); + } + + void ComponentAssemblyDescription:: + locality_pre (Type&) + { + } + + void ComponentAssemblyDescription:: + locality_pre (Type const&) + { + } + + void ComponentAssemblyDescription:: + locality_next (Type&) + { + } + + void ComponentAssemblyDescription:: + locality_next (Type const&) + { + } + + void ComponentAssemblyDescription:: + locality_post (Type&) + { + } + + void ComponentAssemblyDescription:: + locality_post (Type const&) + { + } + + void ComponentAssemblyDescription:: + locality_none (Type&) + { + } + + void ComponentAssemblyDescription:: + locality_none (Type const&) + { + } + + void ComponentAssemblyDescription:: + post (Type&) + { + } + + void ComponentAssemblyDescription:: + post (Type const&) + { + } + + // MonolithicImplementationDescription + // + // + + void MonolithicImplementationDescription:: + traverse (Type& o) + { + pre (o); + nodeExecParameter (o); + componentExecParameter (o); + deployRequirement (o); + primaryArtifact (o); + post (o); + } + + void MonolithicImplementationDescription:: + traverse (Type const& o) + { + pre (o); + nodeExecParameter (o); + componentExecParameter (o); + deployRequirement (o); + primaryArtifact (o); + post (o); + } + + void MonolithicImplementationDescription:: + pre (Type&) + { + } + + void MonolithicImplementationDescription:: + pre (Type const&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::nodeExecParameter_iterator b (o.begin_nodeExecParameter()), e (o.end_nodeExecParameter()); + + if (b != e) + { + nodeExecParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) nodeExecParameter_next (o); + } + + nodeExecParameter_post (o); + } + + else nodeExecParameter_none (o); + } + + void MonolithicImplementationDescription:: + nodeExecParameter (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::nodeExecParameter_const_iterator b (o.begin_nodeExecParameter()), e (o.end_nodeExecParameter()); + + if (b != e) + { + nodeExecParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) nodeExecParameter_next (o); + } + + nodeExecParameter_post (o); + } + + else nodeExecParameter_none (o); + } + + void MonolithicImplementationDescription:: + nodeExecParameter_pre (Type&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_pre (Type const&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_next (Type&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_next (Type const&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_post (Type&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_post (Type const&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_none (Type&) + { + } + + void MonolithicImplementationDescription:: + nodeExecParameter_none (Type const&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::componentExecParameter_iterator b (o.begin_componentExecParameter()), e (o.end_componentExecParameter()); + + if (b != e) + { + componentExecParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) componentExecParameter_next (o); + } + + componentExecParameter_post (o); + } + + else componentExecParameter_none (o); + } + + void MonolithicImplementationDescription:: + componentExecParameter (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::componentExecParameter_const_iterator b (o.begin_componentExecParameter()), e (o.end_componentExecParameter()); + + if (b != e) + { + componentExecParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) componentExecParameter_next (o); + } + + componentExecParameter_post (o); + } + + else componentExecParameter_none (o); + } + + void MonolithicImplementationDescription:: + componentExecParameter_pre (Type&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_pre (Type const&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_next (Type&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_next (Type const&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_post (Type&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_post (Type const&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_none (Type&) + { + } + + void MonolithicImplementationDescription:: + componentExecParameter_none (Type const&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void MonolithicImplementationDescription:: + deployRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void MonolithicImplementationDescription:: + deployRequirement_pre (Type&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_pre (Type const&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_next (Type&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_next (Type const&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_post (Type&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_post (Type const&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_none (Type&) + { + } + + void MonolithicImplementationDescription:: + deployRequirement_none (Type const&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::primaryArtifact_iterator b (o.begin_primaryArtifact()), e (o.end_primaryArtifact()); + + if (b != e) + { + primaryArtifact_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) primaryArtifact_next (o); + } + + primaryArtifact_post (o); + } + + else primaryArtifact_none (o); + } + + void MonolithicImplementationDescription:: + primaryArtifact (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::MonolithicImplementationDescription::primaryArtifact_const_iterator b (o.begin_primaryArtifact()), e (o.end_primaryArtifact()); + + if (b != e) + { + primaryArtifact_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) primaryArtifact_next (o); + } + + primaryArtifact_post (o); + } + + else primaryArtifact_none (o); + } + + void MonolithicImplementationDescription:: + primaryArtifact_pre (Type&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_pre (Type const&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_next (Type&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_next (Type const&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_post (Type&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_post (Type const&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_none (Type&) + { + } + + void MonolithicImplementationDescription:: + primaryArtifact_none (Type const&) + { + } + + void MonolithicImplementationDescription:: + post (Type&) + { + } + + void MonolithicImplementationDescription:: + post (Type const&) + { + } + + // ComponentImplementationDescription + // + // + + void ComponentImplementationDescription:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.implements_p ()) implements (o); + else implements_none (o); + if (o.assemblyImpl_p ()) assemblyImpl (o); + else assemblyImpl_none (o); + if (o.monolithicImpl_p ()) monolithicImpl (o); + else monolithicImpl_none (o); + configProperty (o); + capability (o); + dependsOn (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ComponentImplementationDescription:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.implements_p ()) implements (o); + else implements_none (o); + if (o.assemblyImpl_p ()) assemblyImpl (o); + else assemblyImpl_none (o); + if (o.monolithicImpl_p ()) monolithicImpl (o); + else monolithicImpl_none (o); + configProperty (o); + capability (o); + dependsOn (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ComponentImplementationDescription:: + pre (Type&) + { + } + + void ComponentImplementationDescription:: + pre (Type const&) + { + } + + void ComponentImplementationDescription:: + label (Type& o) + { + dispatch (o.label ()); + } + + void ComponentImplementationDescription:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void ComponentImplementationDescription:: + label_none (Type&) + { + } + + void ComponentImplementationDescription:: + label_none (Type const&) + { + } + + void ComponentImplementationDescription:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void ComponentImplementationDescription:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void ComponentImplementationDescription:: + UUID_none (Type&) + { + } + + void ComponentImplementationDescription:: + UUID_none (Type const&) + { + } + + void ComponentImplementationDescription:: + implements (Type& o) + { + dispatch (o.implements ()); + } + + void ComponentImplementationDescription:: + implements (Type const& o) + { + dispatch (o.implements ()); + } + + void ComponentImplementationDescription:: + implements_none (Type&) + { + } + + void ComponentImplementationDescription:: + implements_none (Type const&) + { + } + + void ComponentImplementationDescription:: + assemblyImpl (Type& o) + { + dispatch (o.assemblyImpl ()); + } + + void ComponentImplementationDescription:: + assemblyImpl (Type const& o) + { + dispatch (o.assemblyImpl ()); + } + + void ComponentImplementationDescription:: + assemblyImpl_none (Type&) + { + } + + void ComponentImplementationDescription:: + assemblyImpl_none (Type const&) + { + } + + void ComponentImplementationDescription:: + monolithicImpl (Type& o) + { + dispatch (o.monolithicImpl ()); + } + + void ComponentImplementationDescription:: + monolithicImpl (Type const& o) + { + dispatch (o.monolithicImpl ()); + } + + void ComponentImplementationDescription:: + monolithicImpl_none (Type&) + { + } + + void ComponentImplementationDescription:: + monolithicImpl_none (Type const&) + { + } + + void ComponentImplementationDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ComponentImplementationDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ComponentImplementationDescription:: + configProperty_pre (Type&) + { + } + + void ComponentImplementationDescription:: + configProperty_pre (Type const&) + { + } + + void ComponentImplementationDescription:: + configProperty_next (Type&) + { + } + + void ComponentImplementationDescription:: + configProperty_next (Type const&) + { + } + + void ComponentImplementationDescription:: + configProperty_post (Type&) + { + } + + void ComponentImplementationDescription:: + configProperty_post (Type const&) + { + } + + void ComponentImplementationDescription:: + configProperty_none (Type&) + { + } + + void ComponentImplementationDescription:: + configProperty_none (Type const&) + { + } + + void ComponentImplementationDescription:: + capability (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::capability_iterator b (o.begin_capability()), e (o.end_capability()); + + if (b != e) + { + capability_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) capability_next (o); + } + + capability_post (o); + } + + else capability_none (o); + } + + void ComponentImplementationDescription:: + capability (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::capability_const_iterator b (o.begin_capability()), e (o.end_capability()); + + if (b != e) + { + capability_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) capability_next (o); + } + + capability_post (o); + } + + else capability_none (o); + } + + void ComponentImplementationDescription:: + capability_pre (Type&) + { + } + + void ComponentImplementationDescription:: + capability_pre (Type const&) + { + } + + void ComponentImplementationDescription:: + capability_next (Type&) + { + } + + void ComponentImplementationDescription:: + capability_next (Type const&) + { + } + + void ComponentImplementationDescription:: + capability_post (Type&) + { + } + + void ComponentImplementationDescription:: + capability_post (Type const&) + { + } + + void ComponentImplementationDescription:: + capability_none (Type&) + { + } + + void ComponentImplementationDescription:: + capability_none (Type const&) + { + } + + void ComponentImplementationDescription:: + dependsOn (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void ComponentImplementationDescription:: + dependsOn (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void ComponentImplementationDescription:: + dependsOn_pre (Type&) + { + } + + void ComponentImplementationDescription:: + dependsOn_pre (Type const&) + { + } + + void ComponentImplementationDescription:: + dependsOn_next (Type&) + { + } + + void ComponentImplementationDescription:: + dependsOn_next (Type const&) + { + } + + void ComponentImplementationDescription:: + dependsOn_post (Type&) + { + } + + void ComponentImplementationDescription:: + dependsOn_post (Type const&) + { + } + + void ComponentImplementationDescription:: + dependsOn_none (Type&) + { + } + + void ComponentImplementationDescription:: + dependsOn_none (Type const&) + { + } + + void ComponentImplementationDescription:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ComponentImplementationDescription:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentImplementationDescription::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ComponentImplementationDescription:: + infoProperty_pre (Type&) + { + } + + void ComponentImplementationDescription:: + infoProperty_pre (Type const&) + { + } + + void ComponentImplementationDescription:: + infoProperty_next (Type&) + { + } + + void ComponentImplementationDescription:: + infoProperty_next (Type const&) + { + } + + void ComponentImplementationDescription:: + infoProperty_post (Type&) + { + } + + void ComponentImplementationDescription:: + infoProperty_post (Type const&) + { + } + + void ComponentImplementationDescription:: + infoProperty_none (Type&) + { + } + + void ComponentImplementationDescription:: + infoProperty_none (Type const&) + { + } + + void ComponentImplementationDescription:: + href (Type& o) + { + dispatch (o.href ()); + } + + void ComponentImplementationDescription:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void ComponentImplementationDescription:: + href_none (Type&) + { + } + + void ComponentImplementationDescription:: + href_none (Type const&) + { + } + + void ComponentImplementationDescription:: + post (Type&) + { + } + + void ComponentImplementationDescription:: + post (Type const&) + { + } + + // ConnectorImplementationDescription + // + // + + void ConnectorImplementationDescription:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.implements_p ()) implements (o); + else implements_none (o); + if (o.assemblyImpl_p ()) assemblyImpl (o); + else assemblyImpl_none (o); + if (o.monolithicImpl_p ()) monolithicImpl (o); + else monolithicImpl_none (o); + configProperty (o); + capability (o); + dependsOn (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ConnectorImplementationDescription:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.implements_p ()) implements (o); + else implements_none (o); + if (o.assemblyImpl_p ()) assemblyImpl (o); + else assemblyImpl_none (o); + if (o.monolithicImpl_p ()) monolithicImpl (o); + else monolithicImpl_none (o); + configProperty (o); + capability (o); + dependsOn (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ConnectorImplementationDescription:: + pre (Type&) + { + } + + void ConnectorImplementationDescription:: + pre (Type const&) + { + } + + void ConnectorImplementationDescription:: + label (Type& o) + { + dispatch (o.label ()); + } + + void ConnectorImplementationDescription:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void ConnectorImplementationDescription:: + label_none (Type&) + { + } + + void ConnectorImplementationDescription:: + label_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void ConnectorImplementationDescription:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void ConnectorImplementationDescription:: + UUID_none (Type&) + { + } + + void ConnectorImplementationDescription:: + UUID_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + implements (Type& o) + { + dispatch (o.implements ()); + } + + void ConnectorImplementationDescription:: + implements (Type const& o) + { + dispatch (o.implements ()); + } + + void ConnectorImplementationDescription:: + implements_none (Type&) + { + } + + void ConnectorImplementationDescription:: + implements_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + assemblyImpl (Type& o) + { + dispatch (o.assemblyImpl ()); + } + + void ConnectorImplementationDescription:: + assemblyImpl (Type const& o) + { + dispatch (o.assemblyImpl ()); + } + + void ConnectorImplementationDescription:: + assemblyImpl_none (Type&) + { + } + + void ConnectorImplementationDescription:: + assemblyImpl_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + monolithicImpl (Type& o) + { + dispatch (o.monolithicImpl ()); + } + + void ConnectorImplementationDescription:: + monolithicImpl (Type const& o) + { + dispatch (o.monolithicImpl ()); + } + + void ConnectorImplementationDescription:: + monolithicImpl_none (Type&) + { + } + + void ConnectorImplementationDescription:: + monolithicImpl_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ConnectorImplementationDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ConnectorImplementationDescription:: + configProperty_pre (Type&) + { + } + + void ConnectorImplementationDescription:: + configProperty_pre (Type const&) + { + } + + void ConnectorImplementationDescription:: + configProperty_next (Type&) + { + } + + void ConnectorImplementationDescription:: + configProperty_next (Type const&) + { + } + + void ConnectorImplementationDescription:: + configProperty_post (Type&) + { + } + + void ConnectorImplementationDescription:: + configProperty_post (Type const&) + { + } + + void ConnectorImplementationDescription:: + configProperty_none (Type&) + { + } + + void ConnectorImplementationDescription:: + configProperty_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + capability (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::capability_iterator b (o.begin_capability()), e (o.end_capability()); + + if (b != e) + { + capability_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) capability_next (o); + } + + capability_post (o); + } + + else capability_none (o); + } + + void ConnectorImplementationDescription:: + capability (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::capability_const_iterator b (o.begin_capability()), e (o.end_capability()); + + if (b != e) + { + capability_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) capability_next (o); + } + + capability_post (o); + } + + else capability_none (o); + } + + void ConnectorImplementationDescription:: + capability_pre (Type&) + { + } + + void ConnectorImplementationDescription:: + capability_pre (Type const&) + { + } + + void ConnectorImplementationDescription:: + capability_next (Type&) + { + } + + void ConnectorImplementationDescription:: + capability_next (Type const&) + { + } + + void ConnectorImplementationDescription:: + capability_post (Type&) + { + } + + void ConnectorImplementationDescription:: + capability_post (Type const&) + { + } + + void ConnectorImplementationDescription:: + capability_none (Type&) + { + } + + void ConnectorImplementationDescription:: + capability_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + dependsOn (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void ConnectorImplementationDescription:: + dependsOn (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void ConnectorImplementationDescription:: + dependsOn_pre (Type&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_pre (Type const&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_next (Type&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_next (Type const&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_post (Type&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_post (Type const&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_none (Type&) + { + } + + void ConnectorImplementationDescription:: + dependsOn_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ConnectorImplementationDescription:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorImplementationDescription::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ConnectorImplementationDescription:: + infoProperty_pre (Type&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_pre (Type const&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_next (Type&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_next (Type const&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_post (Type&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_post (Type const&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_none (Type&) + { + } + + void ConnectorImplementationDescription:: + infoProperty_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + href (Type& o) + { + dispatch (o.href ()); + } + + void ConnectorImplementationDescription:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void ConnectorImplementationDescription:: + href_none (Type&) + { + } + + void ConnectorImplementationDescription:: + href_none (Type const&) + { + } + + void ConnectorImplementationDescription:: + post (Type&) + { + } + + void ConnectorImplementationDescription:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // ComponentPackageReference + // + // + + ComponentPackageReference:: + ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentPackageReference:: + ComponentPackageReference () + { + } + + void ComponentPackageReference:: + traverse (Type const& o) + { + Traversal::ComponentPackageReference::traverse (o); + } + + void ComponentPackageReference:: + requiredUUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requiredUUID"), top_ ())); + Traversal::ComponentPackageReference::requiredUUID (o); + pop_ (); + } + + void ComponentPackageReference:: + requiredName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requiredName"), top_ ())); + Traversal::ComponentPackageReference::requiredName (o); + pop_ (); + } + + void ComponentPackageReference:: + requiredType (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("requiredType"), top_ ())); + Traversal::ComponentPackageReference::requiredType (o); + pop_ (); + } + + // SubcomponentInstantiationDescription + // + // + + SubcomponentInstantiationDescription:: + SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SubcomponentInstantiationDescription:: + SubcomponentInstantiationDescription () + { + } + + void SubcomponentInstantiationDescription:: + traverse (Type const& o) + { + Traversal::SubcomponentInstantiationDescription::traverse (o); + } + + void SubcomponentInstantiationDescription:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::SubcomponentInstantiationDescription::name (o); + pop_ (); + } + + void SubcomponentInstantiationDescription:: + basePackage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("basePackage"), top_ ())); + Traversal::SubcomponentInstantiationDescription::basePackage (o); + pop_ (); + } + + void SubcomponentInstantiationDescription:: + specializedConfig (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("specializedConfig"), top_ ())); + Traversal::SubcomponentInstantiationDescription::specializedConfig (o); + pop_ (); + } + + void SubcomponentInstantiationDescription:: + selectRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("selectRequirement"), top_ ())); + } + + void SubcomponentInstantiationDescription:: + selectRequirement_next (Type const& o) + { + selectRequirement_post (o); + selectRequirement_pre (o); + } + + void SubcomponentInstantiationDescription:: + selectRequirement_post (Type const&) + { + pop_ (); + } + + void SubcomponentInstantiationDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void SubcomponentInstantiationDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void SubcomponentInstantiationDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void SubcomponentInstantiationDescription:: + referencedPackage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("referencedPackage"), top_ ())); + Traversal::SubcomponentInstantiationDescription::referencedPackage (o); + pop_ (); + } + + void SubcomponentInstantiationDescription:: + importedPackage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("importedPackage"), top_ ())); + Traversal::SubcomponentInstantiationDescription::importedPackage (o); + pop_ (); + } + + void SubcomponentInstantiationDescription:: + id (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("id"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::SubcomponentInstantiationDescription::id (o); + attr_ (0); + } + + // SubcomponentPropertyReference + // + // + + SubcomponentPropertyReference:: + SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + SubcomponentPropertyReference:: + SubcomponentPropertyReference () + { + } + + void SubcomponentPropertyReference:: + traverse (Type const& o) + { + Traversal::SubcomponentPropertyReference::traverse (o); + } + + void SubcomponentPropertyReference:: + propertyName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("propertyName"), top_ ())); + Traversal::SubcomponentPropertyReference::propertyName (o); + pop_ (); + } + + void SubcomponentPropertyReference:: + instance (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("instance"), top_ ())); + Traversal::SubcomponentPropertyReference::instance (o); + pop_ (); + } + + // AssemblyPropertyMapping + // + // + + AssemblyPropertyMapping:: + AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + AssemblyPropertyMapping:: + AssemblyPropertyMapping () + { + } + + void AssemblyPropertyMapping:: + traverse (Type const& o) + { + Traversal::AssemblyPropertyMapping::traverse (o); + } + + void AssemblyPropertyMapping:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::AssemblyPropertyMapping::name (o); + pop_ (); + } + + void AssemblyPropertyMapping:: + externalName (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalName"), top_ ())); + Traversal::AssemblyPropertyMapping::externalName (o); + pop_ (); + } + + void AssemblyPropertyMapping:: + delegatesTo_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("delegatesTo"), top_ ())); + } + + void AssemblyPropertyMapping:: + delegatesTo_next (Type const& o) + { + delegatesTo_post (o); + delegatesTo_pre (o); + } + + void AssemblyPropertyMapping:: + delegatesTo_post (Type const&) + { + pop_ (); + } + + // LocalityKind + // + // + + LocalityKind:: + LocalityKind (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + LocalityKind:: + LocalityKind () + { + } + + void LocalityKind:: + traverse (Type const& o) + { + ::std::basic_string< ACE_TCHAR > s; + + if (o == ::CIAO::Config_Handlers::LocalityKind::SameNodeAnyProcess) s = ACE_TEXT ("SameNodeAnyProcess"); + else if (o == ::CIAO::Config_Handlers::LocalityKind::SameNodeSameProcess) s = ACE_TEXT ("SameNodeSameProcess"); + else if (o == ::CIAO::Config_Handlers::LocalityKind::SameNodeDifferentProcess) s = ACE_TEXT ("SameNodeDifferentProcess"); + else if (o == ::CIAO::Config_Handlers::LocalityKind::DifferentNode) s = ACE_TEXT ("DifferentNode"); + else if (o == ::CIAO::Config_Handlers::LocalityKind::DifferentProcess) s = ACE_TEXT ("DifferentProcess"); + else if (o == ::CIAO::Config_Handlers::LocalityKind::NoConstraint) s = ACE_TEXT ("NoConstraint"); + else + { + } + + if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ()) + { + a->value (s); + } + + else + { + top_().value (s); + } + } + + // Locality + // + // + + Locality:: + Locality (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + Locality:: + Locality () + { + } + + void Locality:: + traverse (Type const& o) + { + Traversal::Locality::traverse (o); + } + + void Locality:: + constraint (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("constraint"), top_ ())); + Traversal::Locality::constraint (o); + pop_ (); + } + + void Locality:: + constrainedInstance (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("constrainedInstance"), top_ ())); + Traversal::Locality::constrainedInstance (o); + pop_ (); + } + + // ComponentAssemblyDescription + // + // + + ComponentAssemblyDescription:: + ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentAssemblyDescription:: + ComponentAssemblyDescription () + { + } + + void ComponentAssemblyDescription:: + traverse (Type const& o) + { + Traversal::ComponentAssemblyDescription::traverse (o); + } + + void ComponentAssemblyDescription:: + instance_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("instance"), top_ ())); + } + + void ComponentAssemblyDescription:: + instance_next (Type const& o) + { + instance_post (o); + instance_pre (o); + } + + void ComponentAssemblyDescription:: + instance_post (Type const&) + { + pop_ (); + } + + void ComponentAssemblyDescription:: + connection_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("connection"), top_ ())); + } + + void ComponentAssemblyDescription:: + connection_next (Type const& o) + { + connection_post (o); + connection_pre (o); + } + + void ComponentAssemblyDescription:: + connection_post (Type const&) + { + pop_ (); + } + + void ComponentAssemblyDescription:: + externalProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("externalProperty"), top_ ())); + } + + void ComponentAssemblyDescription:: + externalProperty_next (Type const& o) + { + externalProperty_post (o); + externalProperty_pre (o); + } + + void ComponentAssemblyDescription:: + externalProperty_post (Type const&) + { + pop_ (); + } + + void ComponentAssemblyDescription:: + locality_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("locality"), top_ ())); + } + + void ComponentAssemblyDescription:: + locality_next (Type const& o) + { + locality_post (o); + locality_pre (o); + } + + void ComponentAssemblyDescription:: + locality_post (Type const&) + { + pop_ (); + } + + // MonolithicImplementationDescription + // + // + + MonolithicImplementationDescription:: + MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + MonolithicImplementationDescription:: + MonolithicImplementationDescription () + { + } + + void MonolithicImplementationDescription:: + traverse (Type const& o) + { + Traversal::MonolithicImplementationDescription::traverse (o); + } + + void MonolithicImplementationDescription:: + nodeExecParameter_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("nodeExecParameter"), top_ ())); + } + + void MonolithicImplementationDescription:: + nodeExecParameter_next (Type const& o) + { + nodeExecParameter_post (o); + nodeExecParameter_pre (o); + } + + void MonolithicImplementationDescription:: + nodeExecParameter_post (Type const&) + { + pop_ (); + } + + void MonolithicImplementationDescription:: + componentExecParameter_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("componentExecParameter"), top_ ())); + } + + void MonolithicImplementationDescription:: + componentExecParameter_next (Type const& o) + { + componentExecParameter_post (o); + componentExecParameter_pre (o); + } + + void MonolithicImplementationDescription:: + componentExecParameter_post (Type const&) + { + pop_ (); + } + + void MonolithicImplementationDescription:: + deployRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployRequirement"), top_ ())); + } + + void MonolithicImplementationDescription:: + deployRequirement_next (Type const& o) + { + deployRequirement_post (o); + deployRequirement_pre (o); + } + + void MonolithicImplementationDescription:: + deployRequirement_post (Type const&) + { + pop_ (); + } + + void MonolithicImplementationDescription:: + primaryArtifact_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("primaryArtifact"), top_ ())); + } + + void MonolithicImplementationDescription:: + primaryArtifact_next (Type const& o) + { + primaryArtifact_post (o); + primaryArtifact_pre (o); + } + + void MonolithicImplementationDescription:: + primaryArtifact_post (Type const&) + { + pop_ (); + } + + // ComponentImplementationDescription + // + // + + ComponentImplementationDescription:: + ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentImplementationDescription:: + ComponentImplementationDescription () + { + } + + void ComponentImplementationDescription:: + traverse (Type const& o) + { + Traversal::ComponentImplementationDescription::traverse (o); + } + + void ComponentImplementationDescription:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::ComponentImplementationDescription::label (o); + pop_ (); + } + + void ComponentImplementationDescription:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::ComponentImplementationDescription::UUID (o); + pop_ (); + } + + void ComponentImplementationDescription:: + implements (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("implements"), top_ ())); + Traversal::ComponentImplementationDescription::implements (o); + pop_ (); + } + + void ComponentImplementationDescription:: + assemblyImpl (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("assemblyImpl"), top_ ())); + Traversal::ComponentImplementationDescription::assemblyImpl (o); + pop_ (); + } + + void ComponentImplementationDescription:: + monolithicImpl (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("monolithicImpl"), top_ ())); + Traversal::ComponentImplementationDescription::monolithicImpl (o); + pop_ (); + } + + void ComponentImplementationDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void ComponentImplementationDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void ComponentImplementationDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void ComponentImplementationDescription:: + capability_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("capability"), top_ ())); + } + + void ComponentImplementationDescription:: + capability_next (Type const& o) + { + capability_post (o); + capability_pre (o); + } + + void ComponentImplementationDescription:: + capability_post (Type const&) + { + pop_ (); + } + + void ComponentImplementationDescription:: + dependsOn_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("dependsOn"), top_ ())); + } + + void ComponentImplementationDescription:: + dependsOn_next (Type const& o) + { + dependsOn_post (o); + dependsOn_pre (o); + } + + void ComponentImplementationDescription:: + dependsOn_post (Type const&) + { + pop_ (); + } + + void ComponentImplementationDescription:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void ComponentImplementationDescription:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void ComponentImplementationDescription:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void ComponentImplementationDescription:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ComponentImplementationDescription::href (o); + attr_ (0); + } + + // ConnectorImplementationDescription + // + // + + ConnectorImplementationDescription:: + ConnectorImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ConnectorImplementationDescription:: + ConnectorImplementationDescription () + { + } + + void ConnectorImplementationDescription:: + traverse (Type const& o) + { + Traversal::ConnectorImplementationDescription::traverse (o); + } + + void ConnectorImplementationDescription:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::ConnectorImplementationDescription::label (o); + pop_ (); + } + + void ConnectorImplementationDescription:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::ConnectorImplementationDescription::UUID (o); + pop_ (); + } + + void ConnectorImplementationDescription:: + implements (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("implements"), top_ ())); + Traversal::ConnectorImplementationDescription::implements (o); + pop_ (); + } + + void ConnectorImplementationDescription:: + assemblyImpl (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("assemblyImpl"), top_ ())); + Traversal::ConnectorImplementationDescription::assemblyImpl (o); + pop_ (); + } + + void ConnectorImplementationDescription:: + monolithicImpl (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("monolithicImpl"), top_ ())); + Traversal::ConnectorImplementationDescription::monolithicImpl (o); + pop_ (); + } + + void ConnectorImplementationDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void ConnectorImplementationDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void ConnectorImplementationDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void ConnectorImplementationDescription:: + capability_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("capability"), top_ ())); + } + + void ConnectorImplementationDescription:: + capability_next (Type const& o) + { + capability_post (o); + capability_pre (o); + } + + void ConnectorImplementationDescription:: + capability_post (Type const&) + { + pop_ (); + } + + void ConnectorImplementationDescription:: + dependsOn_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("dependsOn"), top_ ())); + } + + void ConnectorImplementationDescription:: + dependsOn_next (Type const& o) + { + dependsOn_post (o); + dependsOn_pre (o); + } + + void ConnectorImplementationDescription:: + dependsOn_post (Type const&) + { + pop_ (); + } + + void ConnectorImplementationDescription:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void ConnectorImplementationDescription:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void ConnectorImplementationDescription:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void ConnectorImplementationDescription:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ConnectorImplementationDescription::href (o); + attr_ (0); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/cid.hpp b/modules/CIAO/DAnCE/Config_Handlers/cid.hpp new file mode 100644 index 00000000000..dbf48c94913 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cid.hpp @@ -0,0 +1,2885 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef CID_HPP +#define CID_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentPackageReference; + class SubcomponentInstantiationDescription; + class SubcomponentPropertyReference; + class AssemblyPropertyMapping; + class LocalityKind; + class Locality; + class ComponentAssemblyDescription; + class MonolithicImplementationDescription; + class ComponentImplementationDescription; + class ConnectorImplementationDescription; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "Basic_Deployment_Data.hpp" + +#include "ccd.hpp" + +#include "iad.hpp" + +#include "pcd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export ComponentPackageReference : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentPackageReference, ACE_Null_Mutex > _ptr; + + // requiredUUID + // + public: + bool requiredUUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& requiredUUID () const; + void requiredUUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredUUID_; + + // requiredName + // + public: + bool requiredName_p () const; + ::XMLSchema::string< ACE_TCHAR > const& requiredName () const; + void requiredName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredName_; + + // requiredType + // + public: + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& requiredType () const; + void requiredType (::CIAO::Config_Handlers::ComponentInterfaceDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > requiredType_; + + public: + ComponentPackageReference (::CIAO::Config_Handlers::ComponentInterfaceDescription const& requiredType__); + + ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentPackageReference (ComponentPackageReference const& s); + + ComponentPackageReference& + operator= (ComponentPackageReference const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export SubcomponentInstantiationDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < SubcomponentInstantiationDescription, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // basePackage + // + public: + bool basePackage_p () const; + ::CIAO::Config_Handlers::ComponentPackageDescription const& basePackage () const; + void basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > basePackage_; + + // specializedConfig + // + public: + bool specializedConfig_p () const; + ::CIAO::Config_Handlers::PackageConfiguration const& specializedConfig () const; + void specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > specializedConfig_; + + // selectRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator selectRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator selectRequirement_const_iterator; + selectRequirement_iterator begin_selectRequirement (); + selectRequirement_iterator end_selectRequirement (); + selectRequirement_const_iterator begin_selectRequirement () const; + selectRequirement_const_iterator end_selectRequirement () const; + void add_selectRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* selectRequirement_ptr ( std::basic_string idref ); + size_t count_selectRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > selectRequirement_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // referencedPackage + // + public: + bool referencedPackage_p () const; + ::CIAO::Config_Handlers::ComponentPackageReference const& referencedPackage () const; + void referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > referencedPackage_; + + // importedPackage + // + public: + bool importedPackage_p () const; + ::CIAO::Config_Handlers::ComponentPackageImport const& importedPackage () const; + void importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > importedPackage_; + + // id + // + public: + bool id_p () const; + ::XMLSchema::ID< ACE_TCHAR > const& id () const; + ::XMLSchema::ID< ACE_TCHAR >& id (); + void id (::XMLSchema::ID< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_; + + public: + SubcomponentInstantiationDescription (::XMLSchema::string< ACE_TCHAR > const& name__); + + SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + SubcomponentInstantiationDescription (SubcomponentInstantiationDescription const& s); + + SubcomponentInstantiationDescription& + operator= (SubcomponentInstantiationDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export SubcomponentPropertyReference : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < SubcomponentPropertyReference, ACE_Null_Mutex > _ptr; + + // propertyName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& propertyName () const; + void propertyName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > propertyName_; + + // instance + // + public: + ::CIAO::Config_Handlers::IdRef const& instance () const; + void instance (::CIAO::Config_Handlers::IdRef const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > instance_; + + public: + SubcomponentPropertyReference (::XMLSchema::string< ACE_TCHAR > const& propertyName__, + ::CIAO::Config_Handlers::IdRef const& instance__); + + SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR > const&); + SubcomponentPropertyReference (SubcomponentPropertyReference const& s); + + SubcomponentPropertyReference& + operator= (SubcomponentPropertyReference const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export AssemblyPropertyMapping : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < AssemblyPropertyMapping, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // externalName + // + public: + ::XMLSchema::string< ACE_TCHAR > const& externalName () const; + void externalName (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > externalName_; + + // delegatesTo + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPropertyReference, ACE_Null_Mutex > >::iterator delegatesTo_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPropertyReference, ACE_Null_Mutex > >::const_iterator delegatesTo_const_iterator; + delegatesTo_iterator begin_delegatesTo (); + delegatesTo_iterator end_delegatesTo (); + delegatesTo_const_iterator begin_delegatesTo () const; + delegatesTo_const_iterator end_delegatesTo () const; + void add_delegatesTo ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPropertyReference, ACE_Null_Mutex > const& ); + XSCRT::Type* delegatesTo_ptr ( std::basic_string idref ); + size_t count_delegatesTo (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentPropertyReference, ACE_Null_Mutex > > delegatesTo_; + + public: + AssemblyPropertyMapping (::XMLSchema::string< ACE_TCHAR > const& name__, + ::XMLSchema::string< ACE_TCHAR > const& externalName__); + + AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR > const&); + AssemblyPropertyMapping (AssemblyPropertyMapping const& s); + + AssemblyPropertyMapping& + operator= (AssemblyPropertyMapping const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export LocalityKind : public ::XSCRT::Type + { + public: + LocalityKind (::XSCRT::XML::Element< ACE_TCHAR > const&); + LocalityKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&); + + static LocalityKind const SameNodeAnyProcess; + static LocalityKind const SameNodeSameProcess; + static LocalityKind const SameNodeDifferentProcess; + static LocalityKind const DifferentNode; + static LocalityKind const DifferentProcess; + static LocalityKind const NoConstraint; + + enum Value + { + SameNodeAnyProcess_l, SameNodeSameProcess_l, SameNodeDifferentProcess_l, DifferentNode_l, DifferentProcess_l, NoConstraint_l + }; + + + Value + integral () const; + + friend bool XSC_XML_Handlers_Export + operator== (LocalityKind const& a, LocalityKind const& b); + + friend bool XSC_XML_Handlers_Export + operator!= (LocalityKind const& a, LocalityKind const& b); + + private: + LocalityKind (Value v); + + Value v_; + }; + + bool XSC_XML_Handlers_Export operator== (LocalityKind const &a, LocalityKind const &b); + + bool XSC_XML_Handlers_Export operator!= (LocalityKind const &a, LocalityKind const &b); + + + class XSC_XML_Handlers_Export Locality : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < Locality, ACE_Null_Mutex > _ptr; + + // constraint + // + public: + ::CIAO::Config_Handlers::LocalityKind const& constraint () const; + void constraint (::CIAO::Config_Handlers::LocalityKind const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::LocalityKind > constraint_; + + // constrainedInstance + // + public: + ::CIAO::Config_Handlers::IdRef const& constrainedInstance () const; + void constrainedInstance (::CIAO::Config_Handlers::IdRef const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::IdRef > constrainedInstance_; + + public: + Locality (::CIAO::Config_Handlers::LocalityKind const& constraint__, + ::CIAO::Config_Handlers::IdRef const& constrainedInstance__); + + Locality (::XSCRT::XML::Element< ACE_TCHAR > const&); + Locality (Locality const& s); + + Locality& + operator= (Locality const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ComponentAssemblyDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentAssemblyDescription, ACE_Null_Mutex > _ptr; + + // instance + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentInstantiationDescription, ACE_Null_Mutex > >::iterator instance_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentInstantiationDescription, ACE_Null_Mutex > >::const_iterator instance_const_iterator; + instance_iterator begin_instance (); + instance_iterator end_instance (); + instance_const_iterator begin_instance () const; + instance_const_iterator end_instance () const; + void add_instance ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentInstantiationDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* instance_ptr ( std::basic_string idref ); + size_t count_instance (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::SubcomponentInstantiationDescription, ACE_Null_Mutex > > instance_; + + // connection + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyConnectionDescription, ACE_Null_Mutex > >::iterator connection_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyConnectionDescription, ACE_Null_Mutex > >::const_iterator connection_const_iterator; + connection_iterator begin_connection (); + connection_iterator end_connection (); + connection_const_iterator begin_connection () const; + connection_const_iterator end_connection () const; + void add_connection ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyConnectionDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* connection_ptr ( std::basic_string idref ); + size_t count_connection (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyConnectionDescription, ACE_Null_Mutex > > connection_; + + // externalProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyPropertyMapping, ACE_Null_Mutex > >::iterator externalProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyPropertyMapping, ACE_Null_Mutex > >::const_iterator externalProperty_const_iterator; + externalProperty_iterator begin_externalProperty (); + externalProperty_iterator end_externalProperty (); + externalProperty_const_iterator begin_externalProperty () const; + externalProperty_const_iterator end_externalProperty () const; + void add_externalProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyPropertyMapping, ACE_Null_Mutex > const& ); + XSCRT::Type* externalProperty_ptr ( std::basic_string idref ); + size_t count_externalProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::AssemblyPropertyMapping, ACE_Null_Mutex > > externalProperty_; + + // locality + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Locality, ACE_Null_Mutex > >::iterator locality_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Locality, ACE_Null_Mutex > >::const_iterator locality_const_iterator; + locality_iterator begin_locality (); + locality_iterator end_locality (); + locality_const_iterator begin_locality () const; + locality_const_iterator end_locality () const; + void add_locality ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Locality, ACE_Null_Mutex > const& ); + XSCRT::Type* locality_ptr ( std::basic_string idref ); + size_t count_locality (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Locality, ACE_Null_Mutex > > locality_; + + public: + ComponentAssemblyDescription (); + + ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentAssemblyDescription (ComponentAssemblyDescription const& s); + + ComponentAssemblyDescription& + operator= (ComponentAssemblyDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export MonolithicImplementationDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < MonolithicImplementationDescription, ACE_Null_Mutex > _ptr; + + // nodeExecParameter + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator nodeExecParameter_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator nodeExecParameter_const_iterator; + nodeExecParameter_iterator begin_nodeExecParameter (); + nodeExecParameter_iterator end_nodeExecParameter (); + nodeExecParameter_const_iterator begin_nodeExecParameter () const; + nodeExecParameter_const_iterator end_nodeExecParameter () const; + void add_nodeExecParameter ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* nodeExecParameter_ptr ( std::basic_string idref ); + size_t count_nodeExecParameter (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > nodeExecParameter_; + + // componentExecParameter + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator componentExecParameter_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator componentExecParameter_const_iterator; + componentExecParameter_iterator begin_componentExecParameter (); + componentExecParameter_iterator end_componentExecParameter (); + componentExecParameter_const_iterator begin_componentExecParameter () const; + componentExecParameter_const_iterator end_componentExecParameter () const; + void add_componentExecParameter ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* componentExecParameter_ptr ( std::basic_string idref ); + size_t count_componentExecParameter (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > componentExecParameter_; + + // deployRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationRequirement, ACE_Null_Mutex > >::iterator deployRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationRequirement, ACE_Null_Mutex > >::const_iterator deployRequirement_const_iterator; + deployRequirement_iterator begin_deployRequirement (); + deployRequirement_iterator end_deployRequirement (); + deployRequirement_const_iterator begin_deployRequirement () const; + deployRequirement_const_iterator end_deployRequirement () const; + void add_deployRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationRequirement, ACE_Null_Mutex > const& ); + XSCRT::Type* deployRequirement_ptr ( std::basic_string idref ); + size_t count_deployRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationRequirement, ACE_Null_Mutex > > deployRequirement_; + + // primaryArtifact + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > >::iterator primaryArtifact_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > >::const_iterator primaryArtifact_const_iterator; + primaryArtifact_iterator begin_primaryArtifact (); + primaryArtifact_iterator end_primaryArtifact (); + primaryArtifact_const_iterator begin_primaryArtifact () const; + primaryArtifact_const_iterator end_primaryArtifact () const; + void add_primaryArtifact ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > const& ); + XSCRT::Type* primaryArtifact_ptr ( std::basic_string idref ); + size_t count_primaryArtifact (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > > primaryArtifact_; + + public: + MonolithicImplementationDescription (); + + MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + MonolithicImplementationDescription (MonolithicImplementationDescription const& s); + + MonolithicImplementationDescription& + operator= (MonolithicImplementationDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ComponentImplementationDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentImplementationDescription, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // implements + // + public: + bool implements_p () const; + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& implements () const; + void implements (::CIAO::Config_Handlers::ComponentInterfaceDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > implements_; + + // assemblyImpl + // + public: + bool assemblyImpl_p () const; + ::CIAO::Config_Handlers::ComponentAssemblyDescription const& assemblyImpl () const; + void assemblyImpl (::CIAO::Config_Handlers::ComponentAssemblyDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > assemblyImpl_; + + // monolithicImpl + // + public: + bool monolithicImpl_p () const; + ::CIAO::Config_Handlers::MonolithicImplementationDescription const& monolithicImpl () const; + void monolithicImpl (::CIAO::Config_Handlers::MonolithicImplementationDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > monolithicImpl_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // capability + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > >::iterator capability_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > >::const_iterator capability_const_iterator; + capability_iterator begin_capability (); + capability_iterator end_capability (); + capability_const_iterator begin_capability () const; + capability_const_iterator end_capability () const; + void add_capability ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > const& ); + XSCRT::Type* capability_ptr ( std::basic_string idref ); + size_t count_capability (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > > capability_; + + // dependsOn + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > >::iterator dependsOn_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > >::const_iterator dependsOn_const_iterator; + dependsOn_iterator begin_dependsOn (); + dependsOn_iterator end_dependsOn (); + dependsOn_const_iterator begin_dependsOn () const; + dependsOn_const_iterator end_dependsOn () const; + void add_dependsOn ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > const& ); + XSCRT::Type* dependsOn_ptr ( std::basic_string idref ); + size_t count_dependsOn (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > > dependsOn_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + public: + ComponentImplementationDescription (); + + ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentImplementationDescription (ComponentImplementationDescription const& s); + + ComponentImplementationDescription& + operator= (ComponentImplementationDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ConnectorImplementationDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ConnectorImplementationDescription, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // implements + // + public: + bool implements_p () const; + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& implements () const; + void implements (::CIAO::Config_Handlers::ComponentInterfaceDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > implements_; + + // assemblyImpl + // + public: + bool assemblyImpl_p () const; + ::CIAO::Config_Handlers::ComponentAssemblyDescription const& assemblyImpl () const; + void assemblyImpl (::CIAO::Config_Handlers::ComponentAssemblyDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > assemblyImpl_; + + // monolithicImpl + // + public: + bool monolithicImpl_p () const; + ::CIAO::Config_Handlers::MonolithicImplementationDescription const& monolithicImpl () const; + void monolithicImpl (::CIAO::Config_Handlers::MonolithicImplementationDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > monolithicImpl_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // capability + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > >::iterator capability_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > >::const_iterator capability_const_iterator; + capability_iterator begin_capability (); + capability_iterator end_capability (); + capability_const_iterator begin_capability () const; + capability_const_iterator end_capability () const; + void add_capability ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > const& ); + XSCRT::Type* capability_ptr ( std::basic_string idref ); + size_t count_capability (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Capability, ACE_Null_Mutex > > capability_; + + // dependsOn + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > >::iterator dependsOn_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > >::const_iterator dependsOn_const_iterator; + dependsOn_iterator begin_dependsOn (); + dependsOn_iterator end_dependsOn (); + dependsOn_const_iterator begin_dependsOn () const; + dependsOn_const_iterator end_dependsOn () const; + void add_dependsOn ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > const& ); + XSCRT::Type* dependsOn_ptr ( std::basic_string idref ); + size_t count_dependsOn (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ImplementationDependency, ACE_Null_Mutex > > dependsOn_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + public: + ConnectorImplementationDescription (); + + ConnectorImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ConnectorImplementationDescription (ConnectorImplementationDescription const& s); + + ConnectorImplementationDescription& + operator= (ConnectorImplementationDescription const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export ComponentPackageReference : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPackageReference > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + requiredUUID (Type&); + + virtual void + requiredUUID (Type const&); + + virtual void + requiredUUID_none (Type&); + + virtual void + requiredUUID_none (Type const&); + + virtual void + requiredName (Type&); + + virtual void + requiredName (Type const&); + + virtual void + requiredName_none (Type&); + + virtual void + requiredName_none (Type const&); + + virtual void + requiredType (Type&); + + virtual void + requiredType (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export SubcomponentInstantiationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SubcomponentInstantiationDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + basePackage (Type&); + + virtual void + basePackage (Type const&); + + virtual void + basePackage_none (Type&); + + virtual void + basePackage_none (Type const&); + + virtual void + specializedConfig (Type&); + + virtual void + specializedConfig (Type const&); + + virtual void + specializedConfig_none (Type&); + + virtual void + specializedConfig_none (Type const&); + + virtual void + selectRequirement (Type&); + + virtual void + selectRequirement (Type const&); + + virtual void + selectRequirement_pre (Type&); + + virtual void + selectRequirement_pre (Type const&); + + virtual void + selectRequirement_next (Type&); + + virtual void + selectRequirement_next (Type const&); + + virtual void + selectRequirement_post (Type&); + + virtual void + selectRequirement_post (Type const&); + + virtual void + selectRequirement_none (Type&); + + virtual void + selectRequirement_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + referencedPackage (Type&); + + virtual void + referencedPackage (Type const&); + + virtual void + referencedPackage_none (Type&); + + virtual void + referencedPackage_none (Type const&); + + virtual void + importedPackage (Type&); + + virtual void + importedPackage (Type const&); + + virtual void + importedPackage_none (Type&); + + virtual void + importedPackage_none (Type const&); + + virtual void + id (Type&); + + virtual void + id (Type const&); + + virtual void + id_none (Type&); + + virtual void + id_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export SubcomponentPropertyReference : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SubcomponentPropertyReference > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + propertyName (Type&); + + virtual void + propertyName (Type const&); + + virtual void + instance (Type&); + + virtual void + instance (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export AssemblyPropertyMapping : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::AssemblyPropertyMapping > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + externalName (Type&); + + virtual void + externalName (Type const&); + + virtual void + delegatesTo (Type&); + + virtual void + delegatesTo (Type const&); + + virtual void + delegatesTo_pre (Type&); + + virtual void + delegatesTo_pre (Type const&); + + virtual void + delegatesTo_next (Type&); + + virtual void + delegatesTo_next (Type const&); + + virtual void + delegatesTo_post (Type&); + + virtual void + delegatesTo_post (Type const&); + + virtual void + delegatesTo_none (Type&); + + virtual void + delegatesTo_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + typedef + ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::LocalityKind > + LocalityKind; + + struct XSC_XML_Handlers_Export Locality : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Locality > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + constraint (Type&); + + virtual void + constraint (Type const&); + + virtual void + constrainedInstance (Type&); + + virtual void + constrainedInstance (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ComponentAssemblyDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentAssemblyDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + instance (Type&); + + virtual void + instance (Type const&); + + virtual void + instance_pre (Type&); + + virtual void + instance_pre (Type const&); + + virtual void + instance_next (Type&); + + virtual void + instance_next (Type const&); + + virtual void + instance_post (Type&); + + virtual void + instance_post (Type const&); + + virtual void + instance_none (Type&); + + virtual void + instance_none (Type const&); + + virtual void + connection (Type&); + + virtual void + connection (Type const&); + + virtual void + connection_pre (Type&); + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type&); + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type&); + + virtual void + connection_post (Type const&); + + virtual void + connection_none (Type&); + + virtual void + connection_none (Type const&); + + virtual void + externalProperty (Type&); + + virtual void + externalProperty (Type const&); + + virtual void + externalProperty_pre (Type&); + + virtual void + externalProperty_pre (Type const&); + + virtual void + externalProperty_next (Type&); + + virtual void + externalProperty_next (Type const&); + + virtual void + externalProperty_post (Type&); + + virtual void + externalProperty_post (Type const&); + + virtual void + externalProperty_none (Type&); + + virtual void + externalProperty_none (Type const&); + + virtual void + locality (Type&); + + virtual void + locality (Type const&); + + virtual void + locality_pre (Type&); + + virtual void + locality_pre (Type const&); + + virtual void + locality_next (Type&); + + virtual void + locality_next (Type const&); + + virtual void + locality_post (Type&); + + virtual void + locality_post (Type const&); + + virtual void + locality_none (Type&); + + virtual void + locality_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export MonolithicImplementationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::MonolithicImplementationDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + nodeExecParameter (Type&); + + virtual void + nodeExecParameter (Type const&); + + virtual void + nodeExecParameter_pre (Type&); + + virtual void + nodeExecParameter_pre (Type const&); + + virtual void + nodeExecParameter_next (Type&); + + virtual void + nodeExecParameter_next (Type const&); + + virtual void + nodeExecParameter_post (Type&); + + virtual void + nodeExecParameter_post (Type const&); + + virtual void + nodeExecParameter_none (Type&); + + virtual void + nodeExecParameter_none (Type const&); + + virtual void + componentExecParameter (Type&); + + virtual void + componentExecParameter (Type const&); + + virtual void + componentExecParameter_pre (Type&); + + virtual void + componentExecParameter_pre (Type const&); + + virtual void + componentExecParameter_next (Type&); + + virtual void + componentExecParameter_next (Type const&); + + virtual void + componentExecParameter_post (Type&); + + virtual void + componentExecParameter_post (Type const&); + + virtual void + componentExecParameter_none (Type&); + + virtual void + componentExecParameter_none (Type const&); + + virtual void + deployRequirement (Type&); + + virtual void + deployRequirement (Type const&); + + virtual void + deployRequirement_pre (Type&); + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type&); + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type&); + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployRequirement_none (Type&); + + virtual void + deployRequirement_none (Type const&); + + virtual void + primaryArtifact (Type&); + + virtual void + primaryArtifact (Type const&); + + virtual void + primaryArtifact_pre (Type&); + + virtual void + primaryArtifact_pre (Type const&); + + virtual void + primaryArtifact_next (Type&); + + virtual void + primaryArtifact_next (Type const&); + + virtual void + primaryArtifact_post (Type&); + + virtual void + primaryArtifact_post (Type const&); + + virtual void + primaryArtifact_none (Type&); + + virtual void + primaryArtifact_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ComponentImplementationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentImplementationDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + implements (Type&); + + virtual void + implements (Type const&); + + virtual void + implements_none (Type&); + + virtual void + implements_none (Type const&); + + virtual void + assemblyImpl (Type&); + + virtual void + assemblyImpl (Type const&); + + virtual void + assemblyImpl_none (Type&); + + virtual void + assemblyImpl_none (Type const&); + + virtual void + monolithicImpl (Type&); + + virtual void + monolithicImpl (Type const&); + + virtual void + monolithicImpl_none (Type&); + + virtual void + monolithicImpl_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + capability (Type&); + + virtual void + capability (Type const&); + + virtual void + capability_pre (Type&); + + virtual void + capability_pre (Type const&); + + virtual void + capability_next (Type&); + + virtual void + capability_next (Type const&); + + virtual void + capability_post (Type&); + + virtual void + capability_post (Type const&); + + virtual void + capability_none (Type&); + + virtual void + capability_none (Type const&); + + virtual void + dependsOn (Type&); + + virtual void + dependsOn (Type const&); + + virtual void + dependsOn_pre (Type&); + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type&); + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type&); + + virtual void + dependsOn_post (Type const&); + + virtual void + dependsOn_none (Type&); + + virtual void + dependsOn_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ConnectorImplementationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ConnectorImplementationDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + implements (Type&); + + virtual void + implements (Type const&); + + virtual void + implements_none (Type&); + + virtual void + implements_none (Type const&); + + virtual void + assemblyImpl (Type&); + + virtual void + assemblyImpl (Type const&); + + virtual void + assemblyImpl_none (Type&); + + virtual void + assemblyImpl_none (Type const&); + + virtual void + monolithicImpl (Type&); + + virtual void + monolithicImpl (Type const&); + + virtual void + monolithicImpl_none (Type&); + + virtual void + monolithicImpl_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + capability (Type&); + + virtual void + capability (Type const&); + + virtual void + capability_pre (Type&); + + virtual void + capability_pre (Type const&); + + virtual void + capability_next (Type&); + + virtual void + capability_next (Type const&); + + virtual void + capability_post (Type&); + + virtual void + capability_post (Type const&); + + virtual void + capability_none (Type&); + + virtual void + capability_none (Type const&); + + virtual void + dependsOn (Type&); + + virtual void + dependsOn (Type const&); + + virtual void + dependsOn_pre (Type&); + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type&); + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type&); + + virtual void + dependsOn_post (Type const&); + + virtual void + dependsOn_none (Type&); + + virtual void + dependsOn_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct ComponentPackageReference : Traversal::ComponentPackageReference, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentPackageReference Type; + ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + requiredUUID (Type &o) + { + this->requiredUUID (const_cast (o)); + } + + virtual void + requiredUUID (Type const&); + + virtual void + requiredName (Type &o) + { + this->requiredName (const_cast (o)); + } + + virtual void + requiredName (Type const&); + + virtual void + requiredType (Type &o) + { + this->requiredType (const_cast (o)); + } + + virtual void + requiredType (Type const&); + + protected: + ComponentPackageReference (); + }; + + struct SubcomponentInstantiationDescription : Traversal::SubcomponentInstantiationDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::SubcomponentInstantiationDescription Type; + SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + basePackage (Type &o) + { + this->basePackage (const_cast (o)); + } + + virtual void + basePackage (Type const&); + + virtual void + specializedConfig (Type &o) + { + this->specializedConfig (const_cast (o)); + } + + virtual void + specializedConfig (Type const&); + + virtual void + selectRequirement_pre (Type &o) + { + this->selectRequirement_pre (const_cast (o)); + } + + virtual void + selectRequirement_pre (Type const&); + + virtual void + selectRequirement_next (Type &o) + { + this->selectRequirement_next (const_cast (o)); + } + + virtual void + selectRequirement_next (Type const&); + + virtual void + selectRequirement_post (Type &o) + { + this->selectRequirement_post (const_cast (o)); + } + + virtual void + selectRequirement_post (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + referencedPackage (Type &o) + { + this->referencedPackage (const_cast (o)); + } + + virtual void + referencedPackage (Type const&); + + virtual void + importedPackage (Type &o) + { + this->importedPackage (const_cast (o)); + } + + virtual void + importedPackage (Type const&); + + virtual void + id (Type &o) + { + this->id (const_cast (o)); + } + + virtual void + id (Type const&); + + protected: + SubcomponentInstantiationDescription (); + }; + + struct SubcomponentPropertyReference : Traversal::SubcomponentPropertyReference, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::SubcomponentPropertyReference Type; + SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + propertyName (Type &o) + { + this->propertyName (const_cast (o)); + } + + virtual void + propertyName (Type const&); + + virtual void + instance (Type &o) + { + this->instance (const_cast (o)); + } + + virtual void + instance (Type const&); + + protected: + SubcomponentPropertyReference (); + }; + + struct AssemblyPropertyMapping : Traversal::AssemblyPropertyMapping, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::AssemblyPropertyMapping Type; + AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + externalName (Type &o) + { + this->externalName (const_cast (o)); + } + + virtual void + externalName (Type const&); + + virtual void + delegatesTo_pre (Type &o) + { + this->delegatesTo_pre (const_cast (o)); + } + + virtual void + delegatesTo_pre (Type const&); + + virtual void + delegatesTo_next (Type &o) + { + this->delegatesTo_next (const_cast (o)); + } + + virtual void + delegatesTo_next (Type const&); + + virtual void + delegatesTo_post (Type &o) + { + this->delegatesTo_post (const_cast (o)); + } + + virtual void + delegatesTo_post (Type const&); + + protected: + AssemblyPropertyMapping (); + }; + + struct LocalityKind : Traversal::LocalityKind, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + LocalityKind (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + protected: + LocalityKind (); + }; + + struct Locality : Traversal::Locality, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::Locality Type; + Locality (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + constraint (Type &o) + { + this->constraint (const_cast (o)); + } + + virtual void + constraint (Type const&); + + virtual void + constrainedInstance (Type &o) + { + this->constrainedInstance (const_cast (o)); + } + + virtual void + constrainedInstance (Type const&); + + protected: + Locality (); + }; + + struct ComponentAssemblyDescription : Traversal::ComponentAssemblyDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentAssemblyDescription Type; + ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + instance_pre (Type &o) + { + this->instance_pre (const_cast (o)); + } + + virtual void + instance_pre (Type const&); + + virtual void + instance_next (Type &o) + { + this->instance_next (const_cast (o)); + } + + virtual void + instance_next (Type const&); + + virtual void + instance_post (Type &o) + { + this->instance_post (const_cast (o)); + } + + virtual void + instance_post (Type const&); + + virtual void + connection_pre (Type &o) + { + this->connection_pre (const_cast (o)); + } + + virtual void + connection_pre (Type const&); + + virtual void + connection_next (Type &o) + { + this->connection_next (const_cast (o)); + } + + virtual void + connection_next (Type const&); + + virtual void + connection_post (Type &o) + { + this->connection_post (const_cast (o)); + } + + virtual void + connection_post (Type const&); + + virtual void + externalProperty_pre (Type &o) + { + this->externalProperty_pre (const_cast (o)); + } + + virtual void + externalProperty_pre (Type const&); + + virtual void + externalProperty_next (Type &o) + { + this->externalProperty_next (const_cast (o)); + } + + virtual void + externalProperty_next (Type const&); + + virtual void + externalProperty_post (Type &o) + { + this->externalProperty_post (const_cast (o)); + } + + virtual void + externalProperty_post (Type const&); + + virtual void + locality_pre (Type &o) + { + this->locality_pre (const_cast (o)); + } + + virtual void + locality_pre (Type const&); + + virtual void + locality_next (Type &o) + { + this->locality_next (const_cast (o)); + } + + virtual void + locality_next (Type const&); + + virtual void + locality_post (Type &o) + { + this->locality_post (const_cast (o)); + } + + virtual void + locality_post (Type const&); + + protected: + ComponentAssemblyDescription (); + }; + + struct MonolithicImplementationDescription : Traversal::MonolithicImplementationDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::MonolithicImplementationDescription Type; + MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + nodeExecParameter_pre (Type &o) + { + this->nodeExecParameter_pre (const_cast (o)); + } + + virtual void + nodeExecParameter_pre (Type const&); + + virtual void + nodeExecParameter_next (Type &o) + { + this->nodeExecParameter_next (const_cast (o)); + } + + virtual void + nodeExecParameter_next (Type const&); + + virtual void + nodeExecParameter_post (Type &o) + { + this->nodeExecParameter_post (const_cast (o)); + } + + virtual void + nodeExecParameter_post (Type const&); + + virtual void + componentExecParameter_pre (Type &o) + { + this->componentExecParameter_pre (const_cast (o)); + } + + virtual void + componentExecParameter_pre (Type const&); + + virtual void + componentExecParameter_next (Type &o) + { + this->componentExecParameter_next (const_cast (o)); + } + + virtual void + componentExecParameter_next (Type const&); + + virtual void + componentExecParameter_post (Type &o) + { + this->componentExecParameter_post (const_cast (o)); + } + + virtual void + componentExecParameter_post (Type const&); + + virtual void + deployRequirement_pre (Type &o) + { + this->deployRequirement_pre (const_cast (o)); + } + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type &o) + { + this->deployRequirement_next (const_cast (o)); + } + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type &o) + { + this->deployRequirement_post (const_cast (o)); + } + + virtual void + deployRequirement_post (Type const&); + + virtual void + primaryArtifact_pre (Type &o) + { + this->primaryArtifact_pre (const_cast (o)); + } + + virtual void + primaryArtifact_pre (Type const&); + + virtual void + primaryArtifact_next (Type &o) + { + this->primaryArtifact_next (const_cast (o)); + } + + virtual void + primaryArtifact_next (Type const&); + + virtual void + primaryArtifact_post (Type &o) + { + this->primaryArtifact_post (const_cast (o)); + } + + virtual void + primaryArtifact_post (Type const&); + + protected: + MonolithicImplementationDescription (); + }; + + struct ComponentImplementationDescription : Traversal::ComponentImplementationDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentImplementationDescription Type; + ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + implements (Type &o) + { + this->implements (const_cast (o)); + } + + virtual void + implements (Type const&); + + virtual void + assemblyImpl (Type &o) + { + this->assemblyImpl (const_cast (o)); + } + + virtual void + assemblyImpl (Type const&); + + virtual void + monolithicImpl (Type &o) + { + this->monolithicImpl (const_cast (o)); + } + + virtual void + monolithicImpl (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + capability_pre (Type &o) + { + this->capability_pre (const_cast (o)); + } + + virtual void + capability_pre (Type const&); + + virtual void + capability_next (Type &o) + { + this->capability_next (const_cast (o)); + } + + virtual void + capability_next (Type const&); + + virtual void + capability_post (Type &o) + { + this->capability_post (const_cast (o)); + } + + virtual void + capability_post (Type const&); + + virtual void + dependsOn_pre (Type &o) + { + this->dependsOn_pre (const_cast (o)); + } + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type &o) + { + this->dependsOn_next (const_cast (o)); + } + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type &o) + { + this->dependsOn_post (const_cast (o)); + } + + virtual void + dependsOn_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + protected: + ComponentImplementationDescription (); + }; + + struct ConnectorImplementationDescription : Traversal::ConnectorImplementationDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ConnectorImplementationDescription Type; + ConnectorImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + implements (Type &o) + { + this->implements (const_cast (o)); + } + + virtual void + implements (Type const&); + + virtual void + assemblyImpl (Type &o) + { + this->assemblyImpl (const_cast (o)); + } + + virtual void + assemblyImpl (Type const&); + + virtual void + monolithicImpl (Type &o) + { + this->monolithicImpl (const_cast (o)); + } + + virtual void + monolithicImpl (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + capability_pre (Type &o) + { + this->capability_pre (const_cast (o)); + } + + virtual void + capability_pre (Type const&); + + virtual void + capability_next (Type &o) + { + this->capability_next (const_cast (o)); + } + + virtual void + capability_next (Type const&); + + virtual void + capability_post (Type &o) + { + this->capability_post (const_cast (o)); + } + + virtual void + capability_post (Type const&); + + virtual void + dependsOn_pre (Type &o) + { + this->dependsOn_pre (const_cast (o)); + } + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type &o) + { + this->dependsOn_next (const_cast (o)); + } + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type &o) + { + this->dependsOn_post (const_cast (o)); + } + + virtual void + dependsOn_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + protected: + ConnectorImplementationDescription (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // CID_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/cpd.cpp b/modules/CIAO/DAnCE/Config_Handlers/cpd.cpp new file mode 100644 index 00000000000..14774d2a6f0 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cpd.cpp @@ -0,0 +1,2081 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "cpd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // PackagedComponentImplementation + // + + PackagedComponentImplementation:: + PackagedComponentImplementation (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::ComponentImplementationDescription const& referencedImplementation__) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + referencedImplementation_ (new ::CIAO::Config_Handlers::ComponentImplementationDescription (referencedImplementation__)), + regulator__ () + { + name_->container (this); + referencedImplementation_->container (this); + } + + PackagedComponentImplementation:: + PackagedComponentImplementation (PackagedComponentImplementation const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + referencedImplementation_ (new ::CIAO::Config_Handlers::ComponentImplementationDescription (*s.referencedImplementation_)), + regulator__ () + { + name_->container (this); + referencedImplementation_->container (this); + } + + PackagedComponentImplementation& PackagedComponentImplementation:: + operator= (PackagedComponentImplementation const& s) + { + name (*s.name_); + + referencedImplementation (*s.referencedImplementation_); + + return *this; + } + + + // PackagedComponentImplementation + // + ::XMLSchema::string< ACE_TCHAR > const& PackagedComponentImplementation:: + name () const + { + return *name_; + } + + void PackagedComponentImplementation:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // PackagedComponentImplementation + // + ::CIAO::Config_Handlers::ComponentImplementationDescription const& PackagedComponentImplementation:: + referencedImplementation () const + { + return *referencedImplementation_; + } + + void PackagedComponentImplementation:: + referencedImplementation (::CIAO::Config_Handlers::ComponentImplementationDescription const& e) + { + *referencedImplementation_ = e; + } + + + // ComponentPackageDescription + // + + ComponentPackageDescription:: + ComponentPackageDescription () + : + regulator__ () + { + } + + ComponentPackageDescription:: + ComponentPackageDescription (ComponentPackageDescription const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + realizes_ (s.realizes_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.realizes_) : 0), + configProperty_ (s.configProperty_), + implementation_ (s.implementation_), + infoProperty_ (s.infoProperty_), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (realizes_.get ()) realizes_->container (this); + if (href_.get ()) href_->container (this); + } + + ComponentPackageDescription& ComponentPackageDescription:: + operator= (ComponentPackageDescription const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.realizes_.get ()) + realizes (*(s.realizes_)); + else + realizes_.reset (0); + + configProperty_ = s.configProperty_; + + implementation_ = s.implementation_; + + infoProperty_ = s.infoProperty_; + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // ComponentPackageDescription + // + bool ComponentPackageDescription:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription:: + label () const + { + return *label_; + } + + void ComponentPackageDescription:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // ComponentPackageDescription + // + bool ComponentPackageDescription:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription:: + UUID () const + { + return *UUID_; + } + + void ComponentPackageDescription:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // ComponentPackageDescription + // + bool ComponentPackageDescription:: + realizes_p () const + { + return realizes_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& ComponentPackageDescription:: + realizes () const + { + return *realizes_; + } + + void ComponentPackageDescription:: + realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e) + { + if (realizes_.get ()) + { + *realizes_ = e; + } + + else + { + realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e)); + realizes_->container (this); + } + } + + // ComponentPackageDescription + // + ComponentPackageDescription::configProperty_iterator ComponentPackageDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + ComponentPackageDescription::configProperty_iterator ComponentPackageDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + ComponentPackageDescription::configProperty_const_iterator ComponentPackageDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + ComponentPackageDescription::configProperty_const_iterator ComponentPackageDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void ComponentPackageDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t ComponentPackageDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // ComponentPackageDescription + // + ComponentPackageDescription::implementation_iterator ComponentPackageDescription:: + begin_implementation () + { + return implementation_.begin (); + } + + ComponentPackageDescription::implementation_iterator ComponentPackageDescription:: + end_implementation () + { + return implementation_.end (); + } + + ComponentPackageDescription::implementation_const_iterator ComponentPackageDescription:: + begin_implementation () const + { + return implementation_.begin (); + } + + ComponentPackageDescription::implementation_const_iterator ComponentPackageDescription:: + end_implementation () const + { + return implementation_.end (); + } + + void ComponentPackageDescription:: + add_implementation (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackagedComponentImplementation, ACE_Null_Mutex > const& e) + { + implementation_.push_back (e); + } + + size_t ComponentPackageDescription:: + count_implementation(void) const + { + return implementation_.size (); + } + + // ComponentPackageDescription + // + ComponentPackageDescription::infoProperty_iterator ComponentPackageDescription:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + ComponentPackageDescription::infoProperty_iterator ComponentPackageDescription:: + end_infoProperty () + { + return infoProperty_.end (); + } + + ComponentPackageDescription::infoProperty_const_iterator ComponentPackageDescription:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + ComponentPackageDescription::infoProperty_const_iterator ComponentPackageDescription:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void ComponentPackageDescription:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t ComponentPackageDescription:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // ComponentPackageDescription + // + bool ComponentPackageDescription:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& ComponentPackageDescription:: + href () + { + return *href_; + } + + void ComponentPackageDescription:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + + + // ConnectorPackageDescription + // + + ConnectorPackageDescription:: + ConnectorPackageDescription () + : + regulator__ () + { + } + + ConnectorPackageDescription:: + ConnectorPackageDescription (ConnectorPackageDescription const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + realizes_ (s.realizes_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.realizes_) : 0), + configProperty_ (s.configProperty_), + implementation_ (s.implementation_), + infoProperty_ (s.infoProperty_), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (realizes_.get ()) realizes_->container (this); + if (href_.get ()) href_->container (this); + } + + ConnectorPackageDescription& ConnectorPackageDescription:: + operator= (ConnectorPackageDescription const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.realizes_.get ()) + realizes (*(s.realizes_)); + else + realizes_.reset (0); + + configProperty_ = s.configProperty_; + + implementation_ = s.implementation_; + + infoProperty_ = s.infoProperty_; + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // ConnectorPackageDescription + // + bool ConnectorPackageDescription:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ConnectorPackageDescription:: + label () const + { + return *label_; + } + + void ConnectorPackageDescription:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // ConnectorPackageDescription + // + bool ConnectorPackageDescription:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ConnectorPackageDescription:: + UUID () const + { + return *UUID_; + } + + void ConnectorPackageDescription:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // ConnectorPackageDescription + // + bool ConnectorPackageDescription:: + realizes_p () const + { + return realizes_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& ConnectorPackageDescription:: + realizes () const + { + return *realizes_; + } + + void ConnectorPackageDescription:: + realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e) + { + if (realizes_.get ()) + { + *realizes_ = e; + } + + else + { + realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e)); + realizes_->container (this); + } + } + + // ConnectorPackageDescription + // + ConnectorPackageDescription::configProperty_iterator ConnectorPackageDescription:: + begin_configProperty () + { + return configProperty_.begin (); + } + + ConnectorPackageDescription::configProperty_iterator ConnectorPackageDescription:: + end_configProperty () + { + return configProperty_.end (); + } + + ConnectorPackageDescription::configProperty_const_iterator ConnectorPackageDescription:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + ConnectorPackageDescription::configProperty_const_iterator ConnectorPackageDescription:: + end_configProperty () const + { + return configProperty_.end (); + } + + void ConnectorPackageDescription:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t ConnectorPackageDescription:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // ConnectorPackageDescription + // + ConnectorPackageDescription::implementation_iterator ConnectorPackageDescription:: + begin_implementation () + { + return implementation_.begin (); + } + + ConnectorPackageDescription::implementation_iterator ConnectorPackageDescription:: + end_implementation () + { + return implementation_.end (); + } + + ConnectorPackageDescription::implementation_const_iterator ConnectorPackageDescription:: + begin_implementation () const + { + return implementation_.begin (); + } + + ConnectorPackageDescription::implementation_const_iterator ConnectorPackageDescription:: + end_implementation () const + { + return implementation_.end (); + } + + void ConnectorPackageDescription:: + add_implementation (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectorImplementationDescription, ACE_Null_Mutex > const& e) + { + implementation_.push_back (e); + } + + size_t ConnectorPackageDescription:: + count_implementation(void) const + { + return implementation_.size (); + } + + // ConnectorPackageDescription + // + ConnectorPackageDescription::infoProperty_iterator ConnectorPackageDescription:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + ConnectorPackageDescription::infoProperty_iterator ConnectorPackageDescription:: + end_infoProperty () + { + return infoProperty_.end (); + } + + ConnectorPackageDescription::infoProperty_const_iterator ConnectorPackageDescription:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + ConnectorPackageDescription::infoProperty_const_iterator ConnectorPackageDescription:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void ConnectorPackageDescription:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t ConnectorPackageDescription:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // ConnectorPackageDescription + // + bool ConnectorPackageDescription:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ConnectorPackageDescription:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& ConnectorPackageDescription:: + href () + { + return *href_; + } + + void ConnectorPackageDescription:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // PackagedComponentImplementation + // + + PackagedComponentImplementation:: + PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("referencedImplementation")) + { + referencedImplementation_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentImplementationDescription > (new ::CIAO::Config_Handlers::ComponentImplementationDescription (e)); + referencedImplementation_->container (this); + } + + else + { + } + } + } + + // ComponentPackageDescription + // + + ComponentPackageDescription:: + ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("realizes")) + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription t (e); + realizes (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("implementation")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackagedComponentImplementation, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PackagedComponentImplementation (e)); + add_implementation (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else + { + } + } + } + + // ConnectorPackageDescription + // + + ConnectorPackageDescription:: + ConnectorPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("realizes")) + { + ::CIAO::Config_Handlers::ComponentInterfaceDescription t (e); + realizes (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("implementation")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectorImplementationDescription, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::ConnectorImplementationDescription (e)); + add_implementation (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct PackagedComponentImplementationTypeInfoInitializer + { + PackagedComponentImplementationTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PackagedComponentImplementation)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PackagedComponentImplementationTypeInfoInitializer PackagedComponentImplementationTypeInfoInitializer_; + + struct ComponentPackageDescriptionTypeInfoInitializer + { + ComponentPackageDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentPackageDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentPackageDescriptionTypeInfoInitializer ComponentPackageDescriptionTypeInfoInitializer_; + + struct ConnectorPackageDescriptionTypeInfoInitializer + { + ConnectorPackageDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ConnectorPackageDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ConnectorPackageDescriptionTypeInfoInitializer ConnectorPackageDescriptionTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // PackagedComponentImplementation + // + // + + void PackagedComponentImplementation:: + traverse (Type& o) + { + pre (o); + name (o); + referencedImplementation (o); + post (o); + } + + void PackagedComponentImplementation:: + traverse (Type const& o) + { + pre (o); + name (o); + referencedImplementation (o); + post (o); + } + + void PackagedComponentImplementation:: + pre (Type&) + { + } + + void PackagedComponentImplementation:: + pre (Type const&) + { + } + + void PackagedComponentImplementation:: + name (Type& o) + { + dispatch (o.name ()); + } + + void PackagedComponentImplementation:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void PackagedComponentImplementation:: + referencedImplementation (Type& o) + { + dispatch (o.referencedImplementation ()); + } + + void PackagedComponentImplementation:: + referencedImplementation (Type const& o) + { + dispatch (o.referencedImplementation ()); + } + + void PackagedComponentImplementation:: + post (Type&) + { + } + + void PackagedComponentImplementation:: + post (Type const&) + { + } + + // ComponentPackageDescription + // + // + + void ComponentPackageDescription:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.realizes_p ()) realizes (o); + else realizes_none (o); + configProperty (o); + implementation (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ComponentPackageDescription:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.realizes_p ()) realizes (o); + else realizes_none (o); + configProperty (o); + implementation (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ComponentPackageDescription:: + pre (Type&) + { + } + + void ComponentPackageDescription:: + pre (Type const&) + { + } + + void ComponentPackageDescription:: + label (Type& o) + { + dispatch (o.label ()); + } + + void ComponentPackageDescription:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void ComponentPackageDescription:: + label_none (Type&) + { + } + + void ComponentPackageDescription:: + label_none (Type const&) + { + } + + void ComponentPackageDescription:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void ComponentPackageDescription:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void ComponentPackageDescription:: + UUID_none (Type&) + { + } + + void ComponentPackageDescription:: + UUID_none (Type const&) + { + } + + void ComponentPackageDescription:: + realizes (Type& o) + { + dispatch (o.realizes ()); + } + + void ComponentPackageDescription:: + realizes (Type const& o) + { + dispatch (o.realizes ()); + } + + void ComponentPackageDescription:: + realizes_none (Type&) + { + } + + void ComponentPackageDescription:: + realizes_none (Type const&) + { + } + + void ComponentPackageDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ComponentPackageDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ComponentPackageDescription:: + configProperty_pre (Type&) + { + } + + void ComponentPackageDescription:: + configProperty_pre (Type const&) + { + } + + void ComponentPackageDescription:: + configProperty_next (Type&) + { + } + + void ComponentPackageDescription:: + configProperty_next (Type const&) + { + } + + void ComponentPackageDescription:: + configProperty_post (Type&) + { + } + + void ComponentPackageDescription:: + configProperty_post (Type const&) + { + } + + void ComponentPackageDescription:: + configProperty_none (Type&) + { + } + + void ComponentPackageDescription:: + configProperty_none (Type const&) + { + } + + void ComponentPackageDescription:: + implementation (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageDescription::implementation_iterator b (o.begin_implementation()), e (o.end_implementation()); + + if (b != e) + { + implementation_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) implementation_next (o); + } + + implementation_post (o); + } + + else implementation_none (o); + } + + void ComponentPackageDescription:: + implementation (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageDescription::implementation_const_iterator b (o.begin_implementation()), e (o.end_implementation()); + + if (b != e) + { + implementation_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) implementation_next (o); + } + + implementation_post (o); + } + + else implementation_none (o); + } + + void ComponentPackageDescription:: + implementation_pre (Type&) + { + } + + void ComponentPackageDescription:: + implementation_pre (Type const&) + { + } + + void ComponentPackageDescription:: + implementation_next (Type&) + { + } + + void ComponentPackageDescription:: + implementation_next (Type const&) + { + } + + void ComponentPackageDescription:: + implementation_post (Type&) + { + } + + void ComponentPackageDescription:: + implementation_post (Type const&) + { + } + + void ComponentPackageDescription:: + implementation_none (Type&) + { + } + + void ComponentPackageDescription:: + implementation_none (Type const&) + { + } + + void ComponentPackageDescription:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageDescription::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ComponentPackageDescription:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageDescription::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ComponentPackageDescription:: + infoProperty_pre (Type&) + { + } + + void ComponentPackageDescription:: + infoProperty_pre (Type const&) + { + } + + void ComponentPackageDescription:: + infoProperty_next (Type&) + { + } + + void ComponentPackageDescription:: + infoProperty_next (Type const&) + { + } + + void ComponentPackageDescription:: + infoProperty_post (Type&) + { + } + + void ComponentPackageDescription:: + infoProperty_post (Type const&) + { + } + + void ComponentPackageDescription:: + infoProperty_none (Type&) + { + } + + void ComponentPackageDescription:: + infoProperty_none (Type const&) + { + } + + void ComponentPackageDescription:: + href (Type& o) + { + dispatch (o.href ()); + } + + void ComponentPackageDescription:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void ComponentPackageDescription:: + href_none (Type&) + { + } + + void ComponentPackageDescription:: + href_none (Type const&) + { + } + + void ComponentPackageDescription:: + post (Type&) + { + } + + void ComponentPackageDescription:: + post (Type const&) + { + } + + // ConnectorPackageDescription + // + // + + void ConnectorPackageDescription:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.realizes_p ()) realizes (o); + else realizes_none (o); + configProperty (o); + implementation (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ConnectorPackageDescription:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.realizes_p ()) realizes (o); + else realizes_none (o); + configProperty (o); + implementation (o); + infoProperty (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ConnectorPackageDescription:: + pre (Type&) + { + } + + void ConnectorPackageDescription:: + pre (Type const&) + { + } + + void ConnectorPackageDescription:: + label (Type& o) + { + dispatch (o.label ()); + } + + void ConnectorPackageDescription:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void ConnectorPackageDescription:: + label_none (Type&) + { + } + + void ConnectorPackageDescription:: + label_none (Type const&) + { + } + + void ConnectorPackageDescription:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void ConnectorPackageDescription:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void ConnectorPackageDescription:: + UUID_none (Type&) + { + } + + void ConnectorPackageDescription:: + UUID_none (Type const&) + { + } + + void ConnectorPackageDescription:: + realizes (Type& o) + { + dispatch (o.realizes ()); + } + + void ConnectorPackageDescription:: + realizes (Type const& o) + { + dispatch (o.realizes ()); + } + + void ConnectorPackageDescription:: + realizes_none (Type&) + { + } + + void ConnectorPackageDescription:: + realizes_none (Type const&) + { + } + + void ConnectorPackageDescription:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorPackageDescription::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ConnectorPackageDescription:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorPackageDescription::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void ConnectorPackageDescription:: + configProperty_pre (Type&) + { + } + + void ConnectorPackageDescription:: + configProperty_pre (Type const&) + { + } + + void ConnectorPackageDescription:: + configProperty_next (Type&) + { + } + + void ConnectorPackageDescription:: + configProperty_next (Type const&) + { + } + + void ConnectorPackageDescription:: + configProperty_post (Type&) + { + } + + void ConnectorPackageDescription:: + configProperty_post (Type const&) + { + } + + void ConnectorPackageDescription:: + configProperty_none (Type&) + { + } + + void ConnectorPackageDescription:: + configProperty_none (Type const&) + { + } + + void ConnectorPackageDescription:: + implementation (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorPackageDescription::implementation_iterator b (o.begin_implementation()), e (o.end_implementation()); + + if (b != e) + { + implementation_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) implementation_next (o); + } + + implementation_post (o); + } + + else implementation_none (o); + } + + void ConnectorPackageDescription:: + implementation (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorPackageDescription::implementation_const_iterator b (o.begin_implementation()), e (o.end_implementation()); + + if (b != e) + { + implementation_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) implementation_next (o); + } + + implementation_post (o); + } + + else implementation_none (o); + } + + void ConnectorPackageDescription:: + implementation_pre (Type&) + { + } + + void ConnectorPackageDescription:: + implementation_pre (Type const&) + { + } + + void ConnectorPackageDescription:: + implementation_next (Type&) + { + } + + void ConnectorPackageDescription:: + implementation_next (Type const&) + { + } + + void ConnectorPackageDescription:: + implementation_post (Type&) + { + } + + void ConnectorPackageDescription:: + implementation_post (Type const&) + { + } + + void ConnectorPackageDescription:: + implementation_none (Type&) + { + } + + void ConnectorPackageDescription:: + implementation_none (Type const&) + { + } + + void ConnectorPackageDescription:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorPackageDescription::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ConnectorPackageDescription:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ConnectorPackageDescription::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ConnectorPackageDescription:: + infoProperty_pre (Type&) + { + } + + void ConnectorPackageDescription:: + infoProperty_pre (Type const&) + { + } + + void ConnectorPackageDescription:: + infoProperty_next (Type&) + { + } + + void ConnectorPackageDescription:: + infoProperty_next (Type const&) + { + } + + void ConnectorPackageDescription:: + infoProperty_post (Type&) + { + } + + void ConnectorPackageDescription:: + infoProperty_post (Type const&) + { + } + + void ConnectorPackageDescription:: + infoProperty_none (Type&) + { + } + + void ConnectorPackageDescription:: + infoProperty_none (Type const&) + { + } + + void ConnectorPackageDescription:: + href (Type& o) + { + dispatch (o.href ()); + } + + void ConnectorPackageDescription:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void ConnectorPackageDescription:: + href_none (Type&) + { + } + + void ConnectorPackageDescription:: + href_none (Type const&) + { + } + + void ConnectorPackageDescription:: + post (Type&) + { + } + + void ConnectorPackageDescription:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // PackagedComponentImplementation + // + // + + PackagedComponentImplementation:: + PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PackagedComponentImplementation:: + PackagedComponentImplementation () + { + } + + void PackagedComponentImplementation:: + traverse (Type const& o) + { + Traversal::PackagedComponentImplementation::traverse (o); + } + + void PackagedComponentImplementation:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::PackagedComponentImplementation::name (o); + pop_ (); + } + + void PackagedComponentImplementation:: + referencedImplementation (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("referencedImplementation"), top_ ())); + Traversal::PackagedComponentImplementation::referencedImplementation (o); + pop_ (); + } + + // ComponentPackageDescription + // + // + + ComponentPackageDescription:: + ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentPackageDescription:: + ComponentPackageDescription () + { + } + + void ComponentPackageDescription:: + traverse (Type const& o) + { + Traversal::ComponentPackageDescription::traverse (o); + } + + void ComponentPackageDescription:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::ComponentPackageDescription::label (o); + pop_ (); + } + + void ComponentPackageDescription:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::ComponentPackageDescription::UUID (o); + pop_ (); + } + + void ComponentPackageDescription:: + realizes (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("realizes"), top_ ())); + Traversal::ComponentPackageDescription::realizes (o); + pop_ (); + } + + void ComponentPackageDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void ComponentPackageDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void ComponentPackageDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void ComponentPackageDescription:: + implementation_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("implementation"), top_ ())); + } + + void ComponentPackageDescription:: + implementation_next (Type const& o) + { + implementation_post (o); + implementation_pre (o); + } + + void ComponentPackageDescription:: + implementation_post (Type const&) + { + pop_ (); + } + + void ComponentPackageDescription:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void ComponentPackageDescription:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void ComponentPackageDescription:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void ComponentPackageDescription:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ComponentPackageDescription::href (o); + attr_ (0); + } + + // ConnectorPackageDescription + // + // + + ConnectorPackageDescription:: + ConnectorPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ConnectorPackageDescription:: + ConnectorPackageDescription () + { + } + + void ConnectorPackageDescription:: + traverse (Type const& o) + { + Traversal::ConnectorPackageDescription::traverse (o); + } + + void ConnectorPackageDescription:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::ConnectorPackageDescription::label (o); + pop_ (); + } + + void ConnectorPackageDescription:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::ConnectorPackageDescription::UUID (o); + pop_ (); + } + + void ConnectorPackageDescription:: + realizes (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("realizes"), top_ ())); + Traversal::ConnectorPackageDescription::realizes (o); + pop_ (); + } + + void ConnectorPackageDescription:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void ConnectorPackageDescription:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void ConnectorPackageDescription:: + configProperty_post (Type const&) + { + pop_ (); + } + + void ConnectorPackageDescription:: + implementation_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("implementation"), top_ ())); + } + + void ConnectorPackageDescription:: + implementation_next (Type const& o) + { + implementation_post (o); + implementation_pre (o); + } + + void ConnectorPackageDescription:: + implementation_post (Type const&) + { + pop_ (); + } + + void ConnectorPackageDescription:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void ConnectorPackageDescription:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void ConnectorPackageDescription:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void ConnectorPackageDescription:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ConnectorPackageDescription::href (o); + attr_ (0); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/cpd.hpp b/modules/CIAO/DAnCE/Config_Handlers/cpd.hpp new file mode 100644 index 00000000000..a6a295393bb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/cpd.hpp @@ -0,0 +1,1008 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef CPD_HPP +#define CPD_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class PackagedComponentImplementation; + class ComponentPackageDescription; + class ConnectorPackageDescription; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "cid.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export PackagedComponentImplementation : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PackagedComponentImplementation, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // referencedImplementation + // + public: + ::CIAO::Config_Handlers::ComponentImplementationDescription const& referencedImplementation () const; + void referencedImplementation (::CIAO::Config_Handlers::ComponentImplementationDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentImplementationDescription > referencedImplementation_; + + public: + PackagedComponentImplementation (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::ComponentImplementationDescription const& referencedImplementation__); + + PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR > const&); + PackagedComponentImplementation (PackagedComponentImplementation const& s); + + PackagedComponentImplementation& + operator= (PackagedComponentImplementation const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ComponentPackageDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentPackageDescription, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // realizes + // + public: + bool realizes_p () const; + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const; + void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // implementation + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackagedComponentImplementation, ACE_Null_Mutex > >::iterator implementation_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackagedComponentImplementation, ACE_Null_Mutex > >::const_iterator implementation_const_iterator; + implementation_iterator begin_implementation (); + implementation_iterator end_implementation (); + implementation_const_iterator begin_implementation () const; + implementation_const_iterator end_implementation () const; + void add_implementation ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackagedComponentImplementation, ACE_Null_Mutex > const& ); + XSCRT::Type* implementation_ptr ( std::basic_string idref ); + size_t count_implementation (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackagedComponentImplementation, ACE_Null_Mutex > > implementation_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + public: + ComponentPackageDescription (); + + ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentPackageDescription (ComponentPackageDescription const& s); + + ComponentPackageDescription& + operator= (ComponentPackageDescription const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ConnectorPackageDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ConnectorPackageDescription, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // realizes + // + public: + bool realizes_p () const; + ::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const; + void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // implementation + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectorImplementationDescription, ACE_Null_Mutex > >::iterator implementation_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectorImplementationDescription, ACE_Null_Mutex > >::const_iterator implementation_const_iterator; + implementation_iterator begin_implementation (); + implementation_iterator end_implementation (); + implementation_const_iterator begin_implementation () const; + implementation_const_iterator end_implementation () const; + void add_implementation ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectorImplementationDescription, ACE_Null_Mutex > const& ); + XSCRT::Type* implementation_ptr ( std::basic_string idref ); + size_t count_implementation (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::ConnectorImplementationDescription, ACE_Null_Mutex > > implementation_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + public: + ConnectorPackageDescription (); + + ConnectorPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ConnectorPackageDescription (ConnectorPackageDescription const& s); + + ConnectorPackageDescription& + operator= (ConnectorPackageDescription const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export PackagedComponentImplementation : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PackagedComponentImplementation > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + referencedImplementation (Type&); + + virtual void + referencedImplementation (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ComponentPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPackageDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + realizes (Type&); + + virtual void + realizes (Type const&); + + virtual void + realizes_none (Type&); + + virtual void + realizes_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + implementation (Type&); + + virtual void + implementation (Type const&); + + virtual void + implementation_pre (Type&); + + virtual void + implementation_pre (Type const&); + + virtual void + implementation_next (Type&); + + virtual void + implementation_next (Type const&); + + virtual void + implementation_post (Type&); + + virtual void + implementation_post (Type const&); + + virtual void + implementation_none (Type&); + + virtual void + implementation_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ConnectorPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ConnectorPackageDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + realizes (Type&); + + virtual void + realizes (Type const&); + + virtual void + realizes_none (Type&); + + virtual void + realizes_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + implementation (Type&); + + virtual void + implementation (Type const&); + + virtual void + implementation_pre (Type&); + + virtual void + implementation_pre (Type const&); + + virtual void + implementation_next (Type&); + + virtual void + implementation_next (Type const&); + + virtual void + implementation_post (Type&); + + virtual void + implementation_post (Type const&); + + virtual void + implementation_none (Type&); + + virtual void + implementation_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct PackagedComponentImplementation : Traversal::PackagedComponentImplementation, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PackagedComponentImplementation Type; + PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + referencedImplementation (Type &o) + { + this->referencedImplementation (const_cast (o)); + } + + virtual void + referencedImplementation (Type const&); + + protected: + PackagedComponentImplementation (); + }; + + struct ComponentPackageDescription : Traversal::ComponentPackageDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentPackageDescription Type; + ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + realizes (Type &o) + { + this->realizes (const_cast (o)); + } + + virtual void + realizes (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + implementation_pre (Type &o) + { + this->implementation_pre (const_cast (o)); + } + + virtual void + implementation_pre (Type const&); + + virtual void + implementation_next (Type &o) + { + this->implementation_next (const_cast (o)); + } + + virtual void + implementation_next (Type const&); + + virtual void + implementation_post (Type &o) + { + this->implementation_post (const_cast (o)); + } + + virtual void + implementation_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + protected: + ComponentPackageDescription (); + }; + + struct ConnectorPackageDescription : Traversal::ConnectorPackageDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ConnectorPackageDescription Type; + ConnectorPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + realizes (Type &o) + { + this->realizes (const_cast (o)); + } + + virtual void + realizes (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + implementation_pre (Type &o) + { + this->implementation_pre (const_cast (o)); + } + + virtual void + implementation_pre (Type const&); + + virtual void + implementation_next (Type &o) + { + this->implementation_next (const_cast (o)); + } + + virtual void + implementation_next (Type const&); + + virtual void + implementation_post (Type &o) + { + this->implementation_post (const_cast (o)); + } + + virtual void + implementation_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + protected: + ConnectorPackageDescription (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // CPD_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/iad.cpp b/modules/CIAO/DAnCE/Config_Handlers/iad.cpp new file mode 100644 index 00000000000..a3fbba62363 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/iad.cpp @@ -0,0 +1,1491 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "iad.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // NamedImplementationArtifact + // + + NamedImplementationArtifact:: + NamedImplementationArtifact (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::ImplementationArtifactDescription const& referencedArtifact__) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)), + referencedArtifact_ (new ::CIAO::Config_Handlers::ImplementationArtifactDescription (referencedArtifact__)), + regulator__ () + { + name_->container (this); + referencedArtifact_->container (this); + } + + NamedImplementationArtifact:: + NamedImplementationArtifact (NamedImplementationArtifact const& s) + : + ::XSCRT::Type (), + name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)), + referencedArtifact_ (new ::CIAO::Config_Handlers::ImplementationArtifactDescription (*s.referencedArtifact_)), + regulator__ () + { + name_->container (this); + referencedArtifact_->container (this); + } + + NamedImplementationArtifact& NamedImplementationArtifact:: + operator= (NamedImplementationArtifact const& s) + { + name (*s.name_); + + referencedArtifact (*s.referencedArtifact_); + + return *this; + } + + + // NamedImplementationArtifact + // + ::XMLSchema::string< ACE_TCHAR > const& NamedImplementationArtifact:: + name () const + { + return *name_; + } + + void NamedImplementationArtifact:: + name (::XMLSchema::string< ACE_TCHAR > const& e) + { + *name_ = e; + } + + // NamedImplementationArtifact + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription const& NamedImplementationArtifact:: + referencedArtifact () const + { + return *referencedArtifact_; + } + + void NamedImplementationArtifact:: + referencedArtifact (::CIAO::Config_Handlers::ImplementationArtifactDescription const& e) + { + *referencedArtifact_ = e; + } + + + // ImplementationArtifactDescription + // + + ImplementationArtifactDescription:: + ImplementationArtifactDescription () + : + regulator__ () + { + } + + ImplementationArtifactDescription:: + ImplementationArtifactDescription (ImplementationArtifactDescription const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + location_ (s.location_), + dependsOn_ (s.dependsOn_), + execParameter_ (s.execParameter_), + infoProperty_ (s.infoProperty_), + deployRequirement_ (s.deployRequirement_), + contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0), + href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (contentLocation_.get ()) contentLocation_->container (this); + if (href_.get ()) href_->container (this); + } + + ImplementationArtifactDescription& ImplementationArtifactDescription:: + operator= (ImplementationArtifactDescription const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + location_ = s.location_; + + dependsOn_ = s.dependsOn_; + + execParameter_ = s.execParameter_; + + infoProperty_ = s.infoProperty_; + + deployRequirement_ = s.deployRequirement_; + + if (s.contentLocation_.get ()) + contentLocation (*(s.contentLocation_)); + else + contentLocation_.reset (0); + + if (s.href_.get ()) href (*(s.href_)); + else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0); + + return *this; + } + + + // ImplementationArtifactDescription + // + bool ImplementationArtifactDescription:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription:: + label () const + { + return *label_; + } + + void ImplementationArtifactDescription:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // ImplementationArtifactDescription + // + bool ImplementationArtifactDescription:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription:: + UUID () const + { + return *UUID_; + } + + void ImplementationArtifactDescription:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // ImplementationArtifactDescription + // + ImplementationArtifactDescription::location_iterator ImplementationArtifactDescription:: + begin_location () + { + return location_.begin (); + } + + ImplementationArtifactDescription::location_iterator ImplementationArtifactDescription:: + end_location () + { + return location_.end (); + } + + ImplementationArtifactDescription::location_const_iterator ImplementationArtifactDescription:: + begin_location () const + { + return location_.begin (); + } + + ImplementationArtifactDescription::location_const_iterator ImplementationArtifactDescription:: + end_location () const + { + return location_.end (); + } + + void ImplementationArtifactDescription:: + add_location (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + location_.push_back (e); + } + + size_t ImplementationArtifactDescription:: + count_location(void) const + { + return location_.size (); + } + + // ImplementationArtifactDescription + // + ImplementationArtifactDescription::dependsOn_iterator ImplementationArtifactDescription:: + begin_dependsOn () + { + return dependsOn_.begin (); + } + + ImplementationArtifactDescription::dependsOn_iterator ImplementationArtifactDescription:: + end_dependsOn () + { + return dependsOn_.end (); + } + + ImplementationArtifactDescription::dependsOn_const_iterator ImplementationArtifactDescription:: + begin_dependsOn () const + { + return dependsOn_.begin (); + } + + ImplementationArtifactDescription::dependsOn_const_iterator ImplementationArtifactDescription:: + end_dependsOn () const + { + return dependsOn_.end (); + } + + void ImplementationArtifactDescription:: + add_dependsOn (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > const& e) + { + dependsOn_.push_back (e); + } + + size_t ImplementationArtifactDescription:: + count_dependsOn(void) const + { + return dependsOn_.size (); + } + + // ImplementationArtifactDescription + // + ImplementationArtifactDescription::execParameter_iterator ImplementationArtifactDescription:: + begin_execParameter () + { + return execParameter_.begin (); + } + + ImplementationArtifactDescription::execParameter_iterator ImplementationArtifactDescription:: + end_execParameter () + { + return execParameter_.end (); + } + + ImplementationArtifactDescription::execParameter_const_iterator ImplementationArtifactDescription:: + begin_execParameter () const + { + return execParameter_.begin (); + } + + ImplementationArtifactDescription::execParameter_const_iterator ImplementationArtifactDescription:: + end_execParameter () const + { + return execParameter_.end (); + } + + void ImplementationArtifactDescription:: + add_execParameter (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + execParameter_.push_back (e); + } + + size_t ImplementationArtifactDescription:: + count_execParameter(void) const + { + return execParameter_.size (); + } + + // ImplementationArtifactDescription + // + ImplementationArtifactDescription::infoProperty_iterator ImplementationArtifactDescription:: + begin_infoProperty () + { + return infoProperty_.begin (); + } + + ImplementationArtifactDescription::infoProperty_iterator ImplementationArtifactDescription:: + end_infoProperty () + { + return infoProperty_.end (); + } + + ImplementationArtifactDescription::infoProperty_const_iterator ImplementationArtifactDescription:: + begin_infoProperty () const + { + return infoProperty_.begin (); + } + + ImplementationArtifactDescription::infoProperty_const_iterator ImplementationArtifactDescription:: + end_infoProperty () const + { + return infoProperty_.end (); + } + + void ImplementationArtifactDescription:: + add_infoProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + infoProperty_.push_back (e); + } + + size_t ImplementationArtifactDescription:: + count_infoProperty(void) const + { + return infoProperty_.size (); + } + + // ImplementationArtifactDescription + // + ImplementationArtifactDescription::deployRequirement_iterator ImplementationArtifactDescription:: + begin_deployRequirement () + { + return deployRequirement_.begin (); + } + + ImplementationArtifactDescription::deployRequirement_iterator ImplementationArtifactDescription:: + end_deployRequirement () + { + return deployRequirement_.end (); + } + + ImplementationArtifactDescription::deployRequirement_const_iterator ImplementationArtifactDescription:: + begin_deployRequirement () const + { + return deployRequirement_.begin (); + } + + ImplementationArtifactDescription::deployRequirement_const_iterator ImplementationArtifactDescription:: + end_deployRequirement () const + { + return deployRequirement_.end (); + } + + void ImplementationArtifactDescription:: + add_deployRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + deployRequirement_.push_back (e); + } + + size_t ImplementationArtifactDescription:: + count_deployRequirement(void) const + { + return deployRequirement_.size (); + } + + // ImplementationArtifactDescription + // + bool ImplementationArtifactDescription:: + contentLocation_p () const + { + return contentLocation_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription:: + contentLocation () const + { + return *contentLocation_; + } + + void ImplementationArtifactDescription:: + contentLocation (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (contentLocation_.get ()) + { + *contentLocation_ = e; + } + + else + { + contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + contentLocation_->container (this); + } + } + + // ImplementationArtifactDescription + // + bool ImplementationArtifactDescription:: + href_p () const + { + return href_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription:: + href () const + { + return *href_; + } + + ::XMLSchema::string< ACE_TCHAR >& ImplementationArtifactDescription:: + href () + { + return *href_; + } + + void ImplementationArtifactDescription:: + href (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (href_.get ()) + { + *href_ = e; + } + + else + { + href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + href_->container (this); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // NamedImplementationArtifact + // + + NamedImplementationArtifact:: + NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("name")) + { + name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + name_->container (this); + } + + else if (n == ACE_TEXT("referencedArtifact")) + { + referencedArtifact_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ImplementationArtifactDescription > (new ::CIAO::Config_Handlers::ImplementationArtifactDescription (e)); + referencedArtifact_->container (this); + } + + else + { + } + } + } + + // ImplementationArtifactDescription + // + + ImplementationArtifactDescription:: + ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("location")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_location (t); + } + + else if (n == ACE_TEXT("dependsOn")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::NamedImplementationArtifact (e)); + add_dependsOn (t); + } + + else if (n == ACE_TEXT("execParameter")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_execParameter (t); + } + + else if (n == ACE_TEXT("infoProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_infoProperty (t); + } + + else if (n == ACE_TEXT("deployRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_deployRequirement (t); + } + + else if (n == ACE_TEXT("contentLocation")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + contentLocation (t); + } + + else + { + } + } + + while (p.more_attributes ()) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ())); + if (n == ACE_TEXT ("href")) + { + ::XMLSchema::string< ACE_TCHAR > t (a); + href (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct NamedImplementationArtifactTypeInfoInitializer + { + NamedImplementationArtifactTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::NamedImplementationArtifact)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + NamedImplementationArtifactTypeInfoInitializer NamedImplementationArtifactTypeInfoInitializer_; + + struct ImplementationArtifactDescriptionTypeInfoInitializer + { + ImplementationArtifactDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ImplementationArtifactDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ImplementationArtifactDescriptionTypeInfoInitializer ImplementationArtifactDescriptionTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // NamedImplementationArtifact + // + // + + void NamedImplementationArtifact:: + traverse (Type& o) + { + pre (o); + name (o); + referencedArtifact (o); + post (o); + } + + void NamedImplementationArtifact:: + traverse (Type const& o) + { + pre (o); + name (o); + referencedArtifact (o); + post (o); + } + + void NamedImplementationArtifact:: + pre (Type&) + { + } + + void NamedImplementationArtifact:: + pre (Type const&) + { + } + + void NamedImplementationArtifact:: + name (Type& o) + { + dispatch (o.name ()); + } + + void NamedImplementationArtifact:: + name (Type const& o) + { + dispatch (o.name ()); + } + + void NamedImplementationArtifact:: + referencedArtifact (Type& o) + { + dispatch (o.referencedArtifact ()); + } + + void NamedImplementationArtifact:: + referencedArtifact (Type const& o) + { + dispatch (o.referencedArtifact ()); + } + + void NamedImplementationArtifact:: + post (Type&) + { + } + + void NamedImplementationArtifact:: + post (Type const&) + { + } + + // ImplementationArtifactDescription + // + // + + void ImplementationArtifactDescription:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + location (o); + dependsOn (o); + execParameter (o); + infoProperty (o); + deployRequirement (o); + if (o.contentLocation_p ()) contentLocation (o); + else contentLocation_none (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ImplementationArtifactDescription:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + location (o); + dependsOn (o); + execParameter (o); + infoProperty (o); + deployRequirement (o); + if (o.contentLocation_p ()) contentLocation (o); + else contentLocation_none (o); + if (o.href_p ()) href (o); + else href_none (o); + post (o); + } + + void ImplementationArtifactDescription:: + pre (Type&) + { + } + + void ImplementationArtifactDescription:: + pre (Type const&) + { + } + + void ImplementationArtifactDescription:: + label (Type& o) + { + dispatch (o.label ()); + } + + void ImplementationArtifactDescription:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void ImplementationArtifactDescription:: + label_none (Type&) + { + } + + void ImplementationArtifactDescription:: + label_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void ImplementationArtifactDescription:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void ImplementationArtifactDescription:: + UUID_none (Type&) + { + } + + void ImplementationArtifactDescription:: + UUID_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + location (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::location_iterator b (o.begin_location()), e (o.end_location()); + + if (b != e) + { + location_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) location_next (o); + } + + location_post (o); + } + + else location_none (o); + } + + void ImplementationArtifactDescription:: + location (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::location_const_iterator b (o.begin_location()), e (o.end_location()); + + if (b != e) + { + location_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) location_next (o); + } + + location_post (o); + } + + else location_none (o); + } + + void ImplementationArtifactDescription:: + location_pre (Type&) + { + } + + void ImplementationArtifactDescription:: + location_pre (Type const&) + { + } + + void ImplementationArtifactDescription:: + location_next (Type&) + { + } + + void ImplementationArtifactDescription:: + location_next (Type const&) + { + } + + void ImplementationArtifactDescription:: + location_post (Type&) + { + } + + void ImplementationArtifactDescription:: + location_post (Type const&) + { + } + + void ImplementationArtifactDescription:: + location_none (Type&) + { + } + + void ImplementationArtifactDescription:: + location_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + dependsOn (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void ImplementationArtifactDescription:: + dependsOn (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn()); + + if (b != e) + { + dependsOn_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) dependsOn_next (o); + } + + dependsOn_post (o); + } + + else dependsOn_none (o); + } + + void ImplementationArtifactDescription:: + dependsOn_pre (Type&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_pre (Type const&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_next (Type&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_next (Type const&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_post (Type&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_post (Type const&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_none (Type&) + { + } + + void ImplementationArtifactDescription:: + dependsOn_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + execParameter (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::execParameter_iterator b (o.begin_execParameter()), e (o.end_execParameter()); + + if (b != e) + { + execParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) execParameter_next (o); + } + + execParameter_post (o); + } + + else execParameter_none (o); + } + + void ImplementationArtifactDescription:: + execParameter (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::execParameter_const_iterator b (o.begin_execParameter()), e (o.end_execParameter()); + + if (b != e) + { + execParameter_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) execParameter_next (o); + } + + execParameter_post (o); + } + + else execParameter_none (o); + } + + void ImplementationArtifactDescription:: + execParameter_pre (Type&) + { + } + + void ImplementationArtifactDescription:: + execParameter_pre (Type const&) + { + } + + void ImplementationArtifactDescription:: + execParameter_next (Type&) + { + } + + void ImplementationArtifactDescription:: + execParameter_next (Type const&) + { + } + + void ImplementationArtifactDescription:: + execParameter_post (Type&) + { + } + + void ImplementationArtifactDescription:: + execParameter_post (Type const&) + { + } + + void ImplementationArtifactDescription:: + execParameter_none (Type&) + { + } + + void ImplementationArtifactDescription:: + execParameter_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + infoProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ImplementationArtifactDescription:: + infoProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty()); + + if (b != e) + { + infoProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) infoProperty_next (o); + } + + infoProperty_post (o); + } + + else infoProperty_none (o); + } + + void ImplementationArtifactDescription:: + infoProperty_pre (Type&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_pre (Type const&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_next (Type&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_next (Type const&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_post (Type&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_post (Type const&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_none (Type&) + { + } + + void ImplementationArtifactDescription:: + infoProperty_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void ImplementationArtifactDescription:: + deployRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ImplementationArtifactDescription::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement()); + + if (b != e) + { + deployRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) deployRequirement_next (o); + } + + deployRequirement_post (o); + } + + else deployRequirement_none (o); + } + + void ImplementationArtifactDescription:: + deployRequirement_pre (Type&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_pre (Type const&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_next (Type&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_next (Type const&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_post (Type&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_post (Type const&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_none (Type&) + { + } + + void ImplementationArtifactDescription:: + deployRequirement_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + contentLocation (Type& o) + { + dispatch (o.contentLocation ()); + } + + void ImplementationArtifactDescription:: + contentLocation (Type const& o) + { + dispatch (o.contentLocation ()); + } + + void ImplementationArtifactDescription:: + contentLocation_none (Type&) + { + } + + void ImplementationArtifactDescription:: + contentLocation_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + href (Type& o) + { + dispatch (o.href ()); + } + + void ImplementationArtifactDescription:: + href (Type const& o) + { + dispatch (o.href ()); + } + + void ImplementationArtifactDescription:: + href_none (Type&) + { + } + + void ImplementationArtifactDescription:: + href_none (Type const&) + { + } + + void ImplementationArtifactDescription:: + post (Type&) + { + } + + void ImplementationArtifactDescription:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // NamedImplementationArtifact + // + // + + NamedImplementationArtifact:: + NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + NamedImplementationArtifact:: + NamedImplementationArtifact () + { + } + + void NamedImplementationArtifact:: + traverse (Type const& o) + { + Traversal::NamedImplementationArtifact::traverse (o); + } + + void NamedImplementationArtifact:: + name (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("name"), top_ ())); + Traversal::NamedImplementationArtifact::name (o); + pop_ (); + } + + void NamedImplementationArtifact:: + referencedArtifact (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("referencedArtifact"), top_ ())); + Traversal::NamedImplementationArtifact::referencedArtifact (o); + pop_ (); + } + + // ImplementationArtifactDescription + // + // + + ImplementationArtifactDescription:: + ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ImplementationArtifactDescription:: + ImplementationArtifactDescription () + { + } + + void ImplementationArtifactDescription:: + traverse (Type const& o) + { + Traversal::ImplementationArtifactDescription::traverse (o); + } + + void ImplementationArtifactDescription:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::ImplementationArtifactDescription::label (o); + pop_ (); + } + + void ImplementationArtifactDescription:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::ImplementationArtifactDescription::UUID (o); + pop_ (); + } + + void ImplementationArtifactDescription:: + location_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("location"), top_ ())); + } + + void ImplementationArtifactDescription:: + location_next (Type const& o) + { + location_post (o); + location_pre (o); + } + + void ImplementationArtifactDescription:: + location_post (Type const&) + { + pop_ (); + } + + void ImplementationArtifactDescription:: + dependsOn_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("dependsOn"), top_ ())); + } + + void ImplementationArtifactDescription:: + dependsOn_next (Type const& o) + { + dependsOn_post (o); + dependsOn_pre (o); + } + + void ImplementationArtifactDescription:: + dependsOn_post (Type const&) + { + pop_ (); + } + + void ImplementationArtifactDescription:: + execParameter_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("execParameter"), top_ ())); + } + + void ImplementationArtifactDescription:: + execParameter_next (Type const& o) + { + execParameter_post (o); + execParameter_pre (o); + } + + void ImplementationArtifactDescription:: + execParameter_post (Type const&) + { + pop_ (); + } + + void ImplementationArtifactDescription:: + infoProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("infoProperty"), top_ ())); + } + + void ImplementationArtifactDescription:: + infoProperty_next (Type const& o) + { + infoProperty_post (o); + infoProperty_pre (o); + } + + void ImplementationArtifactDescription:: + infoProperty_post (Type const&) + { + pop_ (); + } + + void ImplementationArtifactDescription:: + deployRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("deployRequirement"), top_ ())); + } + + void ImplementationArtifactDescription:: + deployRequirement_next (Type const& o) + { + deployRequirement_post (o); + deployRequirement_pre (o); + } + + void ImplementationArtifactDescription:: + deployRequirement_post (Type const&) + { + pop_ (); + } + + void ImplementationArtifactDescription:: + contentLocation (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("contentLocation"), top_ ())); + Traversal::ImplementationArtifactDescription::contentLocation (o); + pop_ (); + } + + void ImplementationArtifactDescription:: + href (Type const& o) + { + ::XSCRT::XML::Attribute< ACE_TCHAR > a (ACE_TEXT ("href"), ACE_TEXT (""), top_ ()); + attr_ (&a); + Traversal::ImplementationArtifactDescription::href (o); + attr_ (0); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/iad.hpp b/modules/CIAO/DAnCE/Config_Handlers/iad.hpp new file mode 100644 index 00000000000..e26a5a4e1fb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/iad.hpp @@ -0,0 +1,748 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef IAD_HPP +#define IAD_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class NamedImplementationArtifact; + class ImplementationArtifactDescription; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "Basic_Deployment_Data.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export NamedImplementationArtifact : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < NamedImplementationArtifact, ACE_Null_Mutex > _ptr; + + // name + // + public: + ::XMLSchema::string< ACE_TCHAR > const& name () const; + void name (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_; + + // referencedArtifact + // + public: + ::CIAO::Config_Handlers::ImplementationArtifactDescription const& referencedArtifact () const; + void referencedArtifact (::CIAO::Config_Handlers::ImplementationArtifactDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ImplementationArtifactDescription > referencedArtifact_; + + public: + NamedImplementationArtifact (::XMLSchema::string< ACE_TCHAR > const& name__, + ::CIAO::Config_Handlers::ImplementationArtifactDescription const& referencedArtifact__); + + NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR > const&); + NamedImplementationArtifact (NamedImplementationArtifact const& s); + + NamedImplementationArtifact& + operator= (NamedImplementationArtifact const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export ImplementationArtifactDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ImplementationArtifactDescription, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // location + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator location_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator location_const_iterator; + location_iterator begin_location (); + location_iterator end_location (); + location_const_iterator begin_location () const; + location_const_iterator end_location () const; + void add_location ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* location_ptr ( std::basic_string idref ); + size_t count_location (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > location_; + + // dependsOn + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > >::iterator dependsOn_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > >::const_iterator dependsOn_const_iterator; + dependsOn_iterator begin_dependsOn (); + dependsOn_iterator end_dependsOn (); + dependsOn_const_iterator begin_dependsOn () const; + dependsOn_const_iterator end_dependsOn () const; + void add_dependsOn ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > const& ); + XSCRT::Type* dependsOn_ptr ( std::basic_string idref ); + size_t count_dependsOn (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::NamedImplementationArtifact, ACE_Null_Mutex > > dependsOn_; + + // execParameter + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator execParameter_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator execParameter_const_iterator; + execParameter_iterator begin_execParameter (); + execParameter_iterator end_execParameter (); + execParameter_const_iterator begin_execParameter () const; + execParameter_const_iterator end_execParameter () const; + void add_execParameter ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* execParameter_ptr ( std::basic_string idref ); + size_t count_execParameter (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > execParameter_; + + // infoProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator infoProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator infoProperty_const_iterator; + infoProperty_iterator begin_infoProperty (); + infoProperty_iterator end_infoProperty (); + infoProperty_const_iterator begin_infoProperty () const; + infoProperty_const_iterator end_infoProperty () const; + void add_infoProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* infoProperty_ptr ( std::basic_string idref ); + size_t count_infoProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > infoProperty_; + + // deployRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator deployRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator deployRequirement_const_iterator; + deployRequirement_iterator begin_deployRequirement (); + deployRequirement_iterator end_deployRequirement (); + deployRequirement_const_iterator begin_deployRequirement () const; + deployRequirement_const_iterator end_deployRequirement () const; + void add_deployRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* deployRequirement_ptr ( std::basic_string idref ); + size_t count_deployRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > deployRequirement_; + + // contentLocation + // + public: + bool contentLocation_p () const; + ::XMLSchema::string< ACE_TCHAR > const& contentLocation () const; + void contentLocation (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_; + + // href + // + public: + bool href_p () const; + ::XMLSchema::string< ACE_TCHAR > const& href () const; + ::XMLSchema::string< ACE_TCHAR >& href (); + void href (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_; + + public: + ImplementationArtifactDescription (); + + ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + ImplementationArtifactDescription (ImplementationArtifactDescription const& s); + + ImplementationArtifactDescription& + operator= (ImplementationArtifactDescription const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export NamedImplementationArtifact : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::NamedImplementationArtifact > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + name (Type&); + + virtual void + name (Type const&); + + virtual void + referencedArtifact (Type&); + + virtual void + referencedArtifact (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export ImplementationArtifactDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ImplementationArtifactDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + location (Type&); + + virtual void + location (Type const&); + + virtual void + location_pre (Type&); + + virtual void + location_pre (Type const&); + + virtual void + location_next (Type&); + + virtual void + location_next (Type const&); + + virtual void + location_post (Type&); + + virtual void + location_post (Type const&); + + virtual void + location_none (Type&); + + virtual void + location_none (Type const&); + + virtual void + dependsOn (Type&); + + virtual void + dependsOn (Type const&); + + virtual void + dependsOn_pre (Type&); + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type&); + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type&); + + virtual void + dependsOn_post (Type const&); + + virtual void + dependsOn_none (Type&); + + virtual void + dependsOn_none (Type const&); + + virtual void + execParameter (Type&); + + virtual void + execParameter (Type const&); + + virtual void + execParameter_pre (Type&); + + virtual void + execParameter_pre (Type const&); + + virtual void + execParameter_next (Type&); + + virtual void + execParameter_next (Type const&); + + virtual void + execParameter_post (Type&); + + virtual void + execParameter_post (Type const&); + + virtual void + execParameter_none (Type&); + + virtual void + execParameter_none (Type const&); + + virtual void + infoProperty (Type&); + + virtual void + infoProperty (Type const&); + + virtual void + infoProperty_pre (Type&); + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type&); + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type&); + + virtual void + infoProperty_post (Type const&); + + virtual void + infoProperty_none (Type&); + + virtual void + infoProperty_none (Type const&); + + virtual void + deployRequirement (Type&); + + virtual void + deployRequirement (Type const&); + + virtual void + deployRequirement_pre (Type&); + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type&); + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type&); + + virtual void + deployRequirement_post (Type const&); + + virtual void + deployRequirement_none (Type&); + + virtual void + deployRequirement_none (Type const&); + + virtual void + contentLocation (Type&); + + virtual void + contentLocation (Type const&); + + virtual void + contentLocation_none (Type&); + + virtual void + contentLocation_none (Type const&); + + virtual void + href (Type&); + + virtual void + href (Type const&); + + virtual void + href_none (Type&); + + virtual void + href_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct NamedImplementationArtifact : Traversal::NamedImplementationArtifact, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::NamedImplementationArtifact Type; + NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + name (Type &o) + { + this->name (const_cast (o)); + } + + virtual void + name (Type const&); + + virtual void + referencedArtifact (Type &o) + { + this->referencedArtifact (const_cast (o)); + } + + virtual void + referencedArtifact (Type const&); + + protected: + NamedImplementationArtifact (); + }; + + struct ImplementationArtifactDescription : Traversal::ImplementationArtifactDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ImplementationArtifactDescription Type; + ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + location_pre (Type &o) + { + this->location_pre (const_cast (o)); + } + + virtual void + location_pre (Type const&); + + virtual void + location_next (Type &o) + { + this->location_next (const_cast (o)); + } + + virtual void + location_next (Type const&); + + virtual void + location_post (Type &o) + { + this->location_post (const_cast (o)); + } + + virtual void + location_post (Type const&); + + virtual void + dependsOn_pre (Type &o) + { + this->dependsOn_pre (const_cast (o)); + } + + virtual void + dependsOn_pre (Type const&); + + virtual void + dependsOn_next (Type &o) + { + this->dependsOn_next (const_cast (o)); + } + + virtual void + dependsOn_next (Type const&); + + virtual void + dependsOn_post (Type &o) + { + this->dependsOn_post (const_cast (o)); + } + + virtual void + dependsOn_post (Type const&); + + virtual void + execParameter_pre (Type &o) + { + this->execParameter_pre (const_cast (o)); + } + + virtual void + execParameter_pre (Type const&); + + virtual void + execParameter_next (Type &o) + { + this->execParameter_next (const_cast (o)); + } + + virtual void + execParameter_next (Type const&); + + virtual void + execParameter_post (Type &o) + { + this->execParameter_post (const_cast (o)); + } + + virtual void + execParameter_post (Type const&); + + virtual void + infoProperty_pre (Type &o) + { + this->infoProperty_pre (const_cast (o)); + } + + virtual void + infoProperty_pre (Type const&); + + virtual void + infoProperty_next (Type &o) + { + this->infoProperty_next (const_cast (o)); + } + + virtual void + infoProperty_next (Type const&); + + virtual void + infoProperty_post (Type &o) + { + this->infoProperty_post (const_cast (o)); + } + + virtual void + infoProperty_post (Type const&); + + virtual void + deployRequirement_pre (Type &o) + { + this->deployRequirement_pre (const_cast (o)); + } + + virtual void + deployRequirement_pre (Type const&); + + virtual void + deployRequirement_next (Type &o) + { + this->deployRequirement_next (const_cast (o)); + } + + virtual void + deployRequirement_next (Type const&); + + virtual void + deployRequirement_post (Type &o) + { + this->deployRequirement_post (const_cast (o)); + } + + virtual void + deployRequirement_post (Type const&); + + virtual void + contentLocation (Type &o) + { + this->contentLocation (const_cast (o)); + } + + virtual void + contentLocation (Type const&); + + virtual void + href (Type &o) + { + this->href (const_cast (o)); + } + + virtual void + href (Type const&); + + protected: + ImplementationArtifactDescription (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // IAD_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/pcd.cpp b/modules/CIAO/DAnCE/Config_Handlers/pcd.cpp new file mode 100644 index 00000000000..6418d0172dc --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/pcd.cpp @@ -0,0 +1,1304 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "pcd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // ComponentPackageImport + // + + ComponentPackageImport:: + ComponentPackageImport () + : + ::XSCRT::Type (), + regulator__ () + { + } + + ComponentPackageImport:: + ComponentPackageImport (ComponentPackageImport const& s) + : + ::XSCRT::Type (), + location_ (s.location_), + regulator__ () + { + } + + ComponentPackageImport& ComponentPackageImport:: + operator= (ComponentPackageImport const& s) + { + location_ = s.location_; + + return *this; + } + + + // ComponentPackageImport + // + ComponentPackageImport::location_iterator ComponentPackageImport:: + begin_location () + { + return location_.begin (); + } + + ComponentPackageImport::location_iterator ComponentPackageImport:: + end_location () + { + return location_.end (); + } + + ComponentPackageImport::location_const_iterator ComponentPackageImport:: + begin_location () const + { + return location_.begin (); + } + + ComponentPackageImport::location_const_iterator ComponentPackageImport:: + end_location () const + { + return location_.end (); + } + + void ComponentPackageImport:: + add_location (ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& e) + { + location_.push_back (e); + } + + size_t ComponentPackageImport:: + count_location(void) const + { + return location_.size (); + } + + + // PackageConfiguration + // + + PackageConfiguration:: + PackageConfiguration () + : + regulator__ () + { + } + + PackageConfiguration:: + PackageConfiguration (PackageConfiguration const& s) + : + ::XSCRT::Type (), + label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0), + UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0), + basePackage_ (s.basePackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageDescription (*s.basePackage_) : 0), + specializedConfig_ (s.specializedConfig_.get () ? new ::CIAO::Config_Handlers::PackageConfiguration (*s.specializedConfig_) : 0), + importedPackage_ (s.importedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageImport (*s.importedPackage_) : 0), + referencedPackage_ (s.referencedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageReference (*s.referencedPackage_) : 0), + selectRequirement_ (s.selectRequirement_), + configProperty_ (s.configProperty_), + contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0), + regulator__ () + { + if (label_.get ()) label_->container (this); + if (UUID_.get ()) UUID_->container (this); + if (basePackage_.get ()) basePackage_->container (this); + if (specializedConfig_.get ()) specializedConfig_->container (this); + if (importedPackage_.get ()) importedPackage_->container (this); + if (referencedPackage_.get ()) referencedPackage_->container (this); + if (contentLocation_.get ()) contentLocation_->container (this); + } + + PackageConfiguration& PackageConfiguration:: + operator= (PackageConfiguration const& s) + { + if (s.label_.get ()) + label (*(s.label_)); + else + label_.reset (0); + + if (s.UUID_.get ()) + UUID (*(s.UUID_)); + else + UUID_.reset (0); + + if (s.basePackage_.get ()) + basePackage (*(s.basePackage_)); + else + basePackage_.reset (0); + + if (s.specializedConfig_.get ()) + specializedConfig (*(s.specializedConfig_)); + else + specializedConfig_.reset (0); + + if (s.importedPackage_.get ()) + importedPackage (*(s.importedPackage_)); + else + importedPackage_.reset (0); + + if (s.referencedPackage_.get ()) + referencedPackage (*(s.referencedPackage_)); + else + referencedPackage_.reset (0); + + selectRequirement_ = s.selectRequirement_; + + configProperty_ = s.configProperty_; + + if (s.contentLocation_.get ()) + contentLocation (*(s.contentLocation_)); + else + contentLocation_.reset (0); + + return *this; + } + + + // PackageConfiguration + // + bool PackageConfiguration:: + label_p () const + { + return label_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration:: + label () const + { + return *label_; + } + + void PackageConfiguration:: + label (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (label_.get ()) + { + *label_ = e; + } + + else + { + label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + label_->container (this); + } + } + + // PackageConfiguration + // + bool PackageConfiguration:: + UUID_p () const + { + return UUID_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration:: + UUID () const + { + return *UUID_; + } + + void PackageConfiguration:: + UUID (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (UUID_.get ()) + { + *UUID_ = e; + } + + else + { + UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + UUID_->container (this); + } + } + + // PackageConfiguration + // + bool PackageConfiguration:: + basePackage_p () const + { + return basePackage_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentPackageDescription const& PackageConfiguration:: + basePackage () const + { + return *basePackage_; + } + + void PackageConfiguration:: + basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& e) + { + if (basePackage_.get ()) + { + *basePackage_ = e; + } + + else + { + basePackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > (new ::CIAO::Config_Handlers::ComponentPackageDescription (e)); + basePackage_->container (this); + } + } + + // PackageConfiguration + // + bool PackageConfiguration:: + specializedConfig_p () const + { + return specializedConfig_.get () != 0; + } + + ::CIAO::Config_Handlers::PackageConfiguration const& PackageConfiguration:: + specializedConfig () const + { + return *specializedConfig_; + } + + void PackageConfiguration:: + specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& e) + { + if (specializedConfig_.get ()) + { + *specializedConfig_ = e; + } + + else + { + specializedConfig_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (new ::CIAO::Config_Handlers::PackageConfiguration (e)); + specializedConfig_->container (this); + } + } + + // PackageConfiguration + // + bool PackageConfiguration:: + importedPackage_p () const + { + return importedPackage_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentPackageImport const& PackageConfiguration:: + importedPackage () const + { + return *importedPackage_; + } + + void PackageConfiguration:: + importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& e) + { + if (importedPackage_.get ()) + { + *importedPackage_ = e; + } + + else + { + importedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > (new ::CIAO::Config_Handlers::ComponentPackageImport (e)); + importedPackage_->container (this); + } + } + + // PackageConfiguration + // + bool PackageConfiguration:: + referencedPackage_p () const + { + return referencedPackage_.get () != 0; + } + + ::CIAO::Config_Handlers::ComponentPackageReference const& PackageConfiguration:: + referencedPackage () const + { + return *referencedPackage_; + } + + void PackageConfiguration:: + referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& e) + { + if (referencedPackage_.get ()) + { + *referencedPackage_ = e; + } + + else + { + referencedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > (new ::CIAO::Config_Handlers::ComponentPackageReference (e)); + referencedPackage_->container (this); + } + } + + // PackageConfiguration + // + PackageConfiguration::selectRequirement_iterator PackageConfiguration:: + begin_selectRequirement () + { + return selectRequirement_.begin (); + } + + PackageConfiguration::selectRequirement_iterator PackageConfiguration:: + end_selectRequirement () + { + return selectRequirement_.end (); + } + + PackageConfiguration::selectRequirement_const_iterator PackageConfiguration:: + begin_selectRequirement () const + { + return selectRequirement_.begin (); + } + + PackageConfiguration::selectRequirement_const_iterator PackageConfiguration:: + end_selectRequirement () const + { + return selectRequirement_.end (); + } + + void PackageConfiguration:: + add_selectRequirement (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& e) + { + selectRequirement_.push_back (e); + } + + size_t PackageConfiguration:: + count_selectRequirement(void) const + { + return selectRequirement_.size (); + } + + // PackageConfiguration + // + PackageConfiguration::configProperty_iterator PackageConfiguration:: + begin_configProperty () + { + return configProperty_.begin (); + } + + PackageConfiguration::configProperty_iterator PackageConfiguration:: + end_configProperty () + { + return configProperty_.end (); + } + + PackageConfiguration::configProperty_const_iterator PackageConfiguration:: + begin_configProperty () const + { + return configProperty_.begin (); + } + + PackageConfiguration::configProperty_const_iterator PackageConfiguration:: + end_configProperty () const + { + return configProperty_.end (); + } + + void PackageConfiguration:: + add_configProperty (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& e) + { + configProperty_.push_back (e); + } + + size_t PackageConfiguration:: + count_configProperty(void) const + { + return configProperty_.size (); + } + + // PackageConfiguration + // + bool PackageConfiguration:: + contentLocation_p () const + { + return contentLocation_.get () != 0; + } + + ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration:: + contentLocation () const + { + return *contentLocation_; + } + + void PackageConfiguration:: + contentLocation (::XMLSchema::string< ACE_TCHAR > const& e) + { + if (contentLocation_.get ()) + { + *contentLocation_ = e; + } + + else + { + contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e)); + contentLocation_->container (this); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // ComponentPackageImport + // + + ComponentPackageImport:: + ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("location")) + { + ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > t (new ::XMLSchema::string< ACE_TCHAR > (e)); + add_location (t); + } + + else + { + } + } + } + + // PackageConfiguration + // + + PackageConfiguration:: + PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("label")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + label (t); + } + + else if (n == ACE_TEXT("UUID")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + UUID (t); + } + + else if (n == ACE_TEXT("basePackage")) + { + ::CIAO::Config_Handlers::ComponentPackageDescription t (e); + basePackage (t); + } + + else if (n == ACE_TEXT("specializedConfig")) + { + ::CIAO::Config_Handlers::PackageConfiguration t (e); + specializedConfig (t); + } + + else if (n == ACE_TEXT("importedPackage")) + { + ::CIAO::Config_Handlers::ComponentPackageImport t (e); + importedPackage (t); + } + + else if (n == ACE_TEXT("referencedPackage")) + { + ::CIAO::Config_Handlers::ComponentPackageReference t (e); + referencedPackage (t); + } + + else if (n == ACE_TEXT("selectRequirement")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Requirement (e)); + add_selectRequirement (t); + } + + else if (n == ACE_TEXT("configProperty")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::Property (e)); + add_configProperty (t); + } + + else if (n == ACE_TEXT("contentLocation")) + { + ::XMLSchema::string< ACE_TCHAR > t (e); + contentLocation (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct ComponentPackageImportTypeInfoInitializer + { + ComponentPackageImportTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::ComponentPackageImport)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + ComponentPackageImportTypeInfoInitializer ComponentPackageImportTypeInfoInitializer_; + + struct PackageConfigurationTypeInfoInitializer + { + PackageConfigurationTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::PackageConfiguration)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + PackageConfigurationTypeInfoInitializer PackageConfigurationTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // ComponentPackageImport + // + // + + void ComponentPackageImport:: + traverse (Type& o) + { + pre (o); + location (o); + post (o); + } + + void ComponentPackageImport:: + traverse (Type const& o) + { + pre (o); + location (o); + post (o); + } + + void ComponentPackageImport:: + pre (Type&) + { + } + + void ComponentPackageImport:: + pre (Type const&) + { + } + + void ComponentPackageImport:: + location (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageImport::location_iterator b (o.begin_location()), e (o.end_location()); + + if (b != e) + { + location_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) location_next (o); + } + + location_post (o); + } + + else location_none (o); + } + + void ComponentPackageImport:: + location (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::ComponentPackageImport::location_const_iterator b (o.begin_location()), e (o.end_location()); + + if (b != e) + { + location_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) location_next (o); + } + + location_post (o); + } + + else location_none (o); + } + + void ComponentPackageImport:: + location_pre (Type&) + { + } + + void ComponentPackageImport:: + location_pre (Type const&) + { + } + + void ComponentPackageImport:: + location_next (Type&) + { + } + + void ComponentPackageImport:: + location_next (Type const&) + { + } + + void ComponentPackageImport:: + location_post (Type&) + { + } + + void ComponentPackageImport:: + location_post (Type const&) + { + } + + void ComponentPackageImport:: + location_none (Type&) + { + } + + void ComponentPackageImport:: + location_none (Type const&) + { + } + + void ComponentPackageImport:: + post (Type&) + { + } + + void ComponentPackageImport:: + post (Type const&) + { + } + + // PackageConfiguration + // + // + + void PackageConfiguration:: + traverse (Type& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.basePackage_p ()) basePackage (o); + else basePackage_none (o); + if (o.specializedConfig_p ()) specializedConfig (o); + else specializedConfig_none (o); + if (o.importedPackage_p ()) importedPackage (o); + else importedPackage_none (o); + if (o.referencedPackage_p ()) referencedPackage (o); + else referencedPackage_none (o); + selectRequirement (o); + configProperty (o); + if (o.contentLocation_p ()) contentLocation (o); + else contentLocation_none (o); + post (o); + } + + void PackageConfiguration:: + traverse (Type const& o) + { + pre (o); + if (o.label_p ()) label (o); + else label_none (o); + if (o.UUID_p ()) UUID (o); + else UUID_none (o); + if (o.basePackage_p ()) basePackage (o); + else basePackage_none (o); + if (o.specializedConfig_p ()) specializedConfig (o); + else specializedConfig_none (o); + if (o.importedPackage_p ()) importedPackage (o); + else importedPackage_none (o); + if (o.referencedPackage_p ()) referencedPackage (o); + else referencedPackage_none (o); + selectRequirement (o); + configProperty (o); + if (o.contentLocation_p ()) contentLocation (o); + else contentLocation_none (o); + post (o); + } + + void PackageConfiguration:: + pre (Type&) + { + } + + void PackageConfiguration:: + pre (Type const&) + { + } + + void PackageConfiguration:: + label (Type& o) + { + dispatch (o.label ()); + } + + void PackageConfiguration:: + label (Type const& o) + { + dispatch (o.label ()); + } + + void PackageConfiguration:: + label_none (Type&) + { + } + + void PackageConfiguration:: + label_none (Type const&) + { + } + + void PackageConfiguration:: + UUID (Type& o) + { + dispatch (o.UUID ()); + } + + void PackageConfiguration:: + UUID (Type const& o) + { + dispatch (o.UUID ()); + } + + void PackageConfiguration:: + UUID_none (Type&) + { + } + + void PackageConfiguration:: + UUID_none (Type const&) + { + } + + void PackageConfiguration:: + basePackage (Type& o) + { + dispatch (o.basePackage ()); + } + + void PackageConfiguration:: + basePackage (Type const& o) + { + dispatch (o.basePackage ()); + } + + void PackageConfiguration:: + basePackage_none (Type&) + { + } + + void PackageConfiguration:: + basePackage_none (Type const&) + { + } + + void PackageConfiguration:: + specializedConfig (Type& o) + { + dispatch (o.specializedConfig ()); + } + + void PackageConfiguration:: + specializedConfig (Type const& o) + { + dispatch (o.specializedConfig ()); + } + + void PackageConfiguration:: + specializedConfig_none (Type&) + { + } + + void PackageConfiguration:: + specializedConfig_none (Type const&) + { + } + + void PackageConfiguration:: + importedPackage (Type& o) + { + dispatch (o.importedPackage ()); + } + + void PackageConfiguration:: + importedPackage (Type const& o) + { + dispatch (o.importedPackage ()); + } + + void PackageConfiguration:: + importedPackage_none (Type&) + { + } + + void PackageConfiguration:: + importedPackage_none (Type const&) + { + } + + void PackageConfiguration:: + referencedPackage (Type& o) + { + dispatch (o.referencedPackage ()); + } + + void PackageConfiguration:: + referencedPackage (Type const& o) + { + dispatch (o.referencedPackage ()); + } + + void PackageConfiguration:: + referencedPackage_none (Type&) + { + } + + void PackageConfiguration:: + referencedPackage_none (Type const&) + { + } + + void PackageConfiguration:: + selectRequirement (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PackageConfiguration::selectRequirement_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement()); + + if (b != e) + { + selectRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) selectRequirement_next (o); + } + + selectRequirement_post (o); + } + + else selectRequirement_none (o); + } + + void PackageConfiguration:: + selectRequirement (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PackageConfiguration::selectRequirement_const_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement()); + + if (b != e) + { + selectRequirement_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) selectRequirement_next (o); + } + + selectRequirement_post (o); + } + + else selectRequirement_none (o); + } + + void PackageConfiguration:: + selectRequirement_pre (Type&) + { + } + + void PackageConfiguration:: + selectRequirement_pre (Type const&) + { + } + + void PackageConfiguration:: + selectRequirement_next (Type&) + { + } + + void PackageConfiguration:: + selectRequirement_next (Type const&) + { + } + + void PackageConfiguration:: + selectRequirement_post (Type&) + { + } + + void PackageConfiguration:: + selectRequirement_post (Type const&) + { + } + + void PackageConfiguration:: + selectRequirement_none (Type&) + { + } + + void PackageConfiguration:: + selectRequirement_none (Type const&) + { + } + + void PackageConfiguration:: + configProperty (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PackageConfiguration::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void PackageConfiguration:: + configProperty (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::PackageConfiguration::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty()); + + if (b != e) + { + configProperty_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) configProperty_next (o); + } + + configProperty_post (o); + } + + else configProperty_none (o); + } + + void PackageConfiguration:: + configProperty_pre (Type&) + { + } + + void PackageConfiguration:: + configProperty_pre (Type const&) + { + } + + void PackageConfiguration:: + configProperty_next (Type&) + { + } + + void PackageConfiguration:: + configProperty_next (Type const&) + { + } + + void PackageConfiguration:: + configProperty_post (Type&) + { + } + + void PackageConfiguration:: + configProperty_post (Type const&) + { + } + + void PackageConfiguration:: + configProperty_none (Type&) + { + } + + void PackageConfiguration:: + configProperty_none (Type const&) + { + } + + void PackageConfiguration:: + contentLocation (Type& o) + { + dispatch (o.contentLocation ()); + } + + void PackageConfiguration:: + contentLocation (Type const& o) + { + dispatch (o.contentLocation ()); + } + + void PackageConfiguration:: + contentLocation_none (Type&) + { + } + + void PackageConfiguration:: + contentLocation_none (Type const&) + { + } + + void PackageConfiguration:: + post (Type&) + { + } + + void PackageConfiguration:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // ComponentPackageImport + // + // + + ComponentPackageImport:: + ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + ComponentPackageImport:: + ComponentPackageImport () + { + } + + void ComponentPackageImport:: + traverse (Type const& o) + { + Traversal::ComponentPackageImport::traverse (o); + } + + void ComponentPackageImport:: + location_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("location"), top_ ())); + } + + void ComponentPackageImport:: + location_next (Type const& o) + { + location_post (o); + location_pre (o); + } + + void ComponentPackageImport:: + location_post (Type const&) + { + pop_ (); + } + + // PackageConfiguration + // + // + + PackageConfiguration:: + PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + PackageConfiguration:: + PackageConfiguration () + { + } + + void PackageConfiguration:: + traverse (Type const& o) + { + Traversal::PackageConfiguration::traverse (o); + } + + void PackageConfiguration:: + label (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("label"), top_ ())); + Traversal::PackageConfiguration::label (o); + pop_ (); + } + + void PackageConfiguration:: + UUID (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("UUID"), top_ ())); + Traversal::PackageConfiguration::UUID (o); + pop_ (); + } + + void PackageConfiguration:: + basePackage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("basePackage"), top_ ())); + Traversal::PackageConfiguration::basePackage (o); + pop_ (); + } + + void PackageConfiguration:: + specializedConfig (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("specializedConfig"), top_ ())); + Traversal::PackageConfiguration::specializedConfig (o); + pop_ (); + } + + void PackageConfiguration:: + importedPackage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("importedPackage"), top_ ())); + Traversal::PackageConfiguration::importedPackage (o); + pop_ (); + } + + void PackageConfiguration:: + referencedPackage (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("referencedPackage"), top_ ())); + Traversal::PackageConfiguration::referencedPackage (o); + pop_ (); + } + + void PackageConfiguration:: + selectRequirement_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("selectRequirement"), top_ ())); + } + + void PackageConfiguration:: + selectRequirement_next (Type const& o) + { + selectRequirement_post (o); + selectRequirement_pre (o); + } + + void PackageConfiguration:: + selectRequirement_post (Type const&) + { + pop_ (); + } + + void PackageConfiguration:: + configProperty_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("configProperty"), top_ ())); + } + + void PackageConfiguration:: + configProperty_next (Type const& o) + { + configProperty_post (o); + configProperty_pre (o); + } + + void PackageConfiguration:: + configProperty_post (Type const&) + { + pop_ (); + } + + void PackageConfiguration:: + contentLocation (Type const& o) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("contentLocation"), top_ ())); + Traversal::PackageConfiguration::contentLocation (o); + pop_ (); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/pcd.hpp b/modules/CIAO/DAnCE/Config_Handlers/pcd.hpp new file mode 100644 index 00000000000..8d8d6828bab --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/pcd.hpp @@ -0,0 +1,647 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef PCD_HPP +#define PCD_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class ComponentPackageImport; + class PackageConfiguration; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "Basic_Deployment_Data.hpp" + +#include "cpd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export ComponentPackageImport : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < ComponentPackageImport, ACE_Null_Mutex > _ptr; + + // location + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::iterator location_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > >::const_iterator location_const_iterator; + location_iterator begin_location (); + location_iterator end_location (); + location_const_iterator begin_location () const; + location_const_iterator end_location () const; + void add_location ( ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > const& ); + XSCRT::Type* location_ptr ( std::basic_string idref ); + size_t count_location (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::XMLSchema::string< ACE_TCHAR >, ACE_Null_Mutex > > location_; + + public: + ComponentPackageImport (); + + ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR > const&); + ComponentPackageImport (ComponentPackageImport const& s); + + ComponentPackageImport& + operator= (ComponentPackageImport const& s); + + private: + char regulator__; + }; + + + class XSC_XML_Handlers_Export PackageConfiguration : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < PackageConfiguration, ACE_Null_Mutex > _ptr; + + // label + // + public: + bool label_p () const; + ::XMLSchema::string< ACE_TCHAR > const& label () const; + void label (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_; + + // UUID + // + public: + bool UUID_p () const; + ::XMLSchema::string< ACE_TCHAR > const& UUID () const; + void UUID (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_; + + // basePackage + // + public: + bool basePackage_p () const; + ::CIAO::Config_Handlers::ComponentPackageDescription const& basePackage () const; + void basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > basePackage_; + + // specializedConfig + // + public: + bool specializedConfig_p () const; + ::CIAO::Config_Handlers::PackageConfiguration const& specializedConfig () const; + void specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > specializedConfig_; + + // importedPackage + // + public: + bool importedPackage_p () const; + ::CIAO::Config_Handlers::ComponentPackageImport const& importedPackage () const; + void importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > importedPackage_; + + // referencedPackage + // + public: + bool referencedPackage_p () const; + ::CIAO::Config_Handlers::ComponentPackageReference const& referencedPackage () const; + void referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& ); + + protected: + ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > referencedPackage_; + + // selectRequirement + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::iterator selectRequirement_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > >::const_iterator selectRequirement_const_iterator; + selectRequirement_iterator begin_selectRequirement (); + selectRequirement_iterator end_selectRequirement (); + selectRequirement_const_iterator begin_selectRequirement () const; + selectRequirement_const_iterator end_selectRequirement () const; + void add_selectRequirement ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > const& ); + XSCRT::Type* selectRequirement_ptr ( std::basic_string idref ); + size_t count_selectRequirement (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Requirement, ACE_Null_Mutex > > selectRequirement_; + + // configProperty + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::iterator configProperty_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > >::const_iterator configProperty_const_iterator; + configProperty_iterator begin_configProperty (); + configProperty_iterator end_configProperty (); + configProperty_const_iterator begin_configProperty () const; + configProperty_const_iterator end_configProperty () const; + void add_configProperty ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > const& ); + XSCRT::Type* configProperty_ptr ( std::basic_string idref ); + size_t count_configProperty (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::Property, ACE_Null_Mutex > > configProperty_; + + // contentLocation + // + public: + bool contentLocation_p () const; + ::XMLSchema::string< ACE_TCHAR > const& contentLocation () const; + void contentLocation (::XMLSchema::string< ACE_TCHAR > const& ); + + protected: + ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_; + + public: + PackageConfiguration (); + + PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR > const&); + PackageConfiguration (PackageConfiguration const& s); + + PackageConfiguration& + operator= (PackageConfiguration const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export ComponentPackageImport : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPackageImport > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + location (Type&); + + virtual void + location (Type const&); + + virtual void + location_pre (Type&); + + virtual void + location_pre (Type const&); + + virtual void + location_next (Type&); + + virtual void + location_next (Type const&); + + virtual void + location_post (Type&); + + virtual void + location_post (Type const&); + + virtual void + location_none (Type&); + + virtual void + location_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + + struct XSC_XML_Handlers_Export PackageConfiguration : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PackageConfiguration > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + label (Type&); + + virtual void + label (Type const&); + + virtual void + label_none (Type&); + + virtual void + label_none (Type const&); + + virtual void + UUID (Type&); + + virtual void + UUID (Type const&); + + virtual void + UUID_none (Type&); + + virtual void + UUID_none (Type const&); + + virtual void + basePackage (Type&); + + virtual void + basePackage (Type const&); + + virtual void + basePackage_none (Type&); + + virtual void + basePackage_none (Type const&); + + virtual void + specializedConfig (Type&); + + virtual void + specializedConfig (Type const&); + + virtual void + specializedConfig_none (Type&); + + virtual void + specializedConfig_none (Type const&); + + virtual void + importedPackage (Type&); + + virtual void + importedPackage (Type const&); + + virtual void + importedPackage_none (Type&); + + virtual void + importedPackage_none (Type const&); + + virtual void + referencedPackage (Type&); + + virtual void + referencedPackage (Type const&); + + virtual void + referencedPackage_none (Type&); + + virtual void + referencedPackage_none (Type const&); + + virtual void + selectRequirement (Type&); + + virtual void + selectRequirement (Type const&); + + virtual void + selectRequirement_pre (Type&); + + virtual void + selectRequirement_pre (Type const&); + + virtual void + selectRequirement_next (Type&); + + virtual void + selectRequirement_next (Type const&); + + virtual void + selectRequirement_post (Type&); + + virtual void + selectRequirement_post (Type const&); + + virtual void + selectRequirement_none (Type&); + + virtual void + selectRequirement_none (Type const&); + + virtual void + configProperty (Type&); + + virtual void + configProperty (Type const&); + + virtual void + configProperty_pre (Type&); + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type&); + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type&); + + virtual void + configProperty_post (Type const&); + + virtual void + configProperty_none (Type&); + + virtual void + configProperty_none (Type const&); + + virtual void + contentLocation (Type&); + + virtual void + contentLocation (Type const&); + + virtual void + contentLocation_none (Type&); + + virtual void + contentLocation_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct ComponentPackageImport : Traversal::ComponentPackageImport, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::ComponentPackageImport Type; + ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + location_pre (Type &o) + { + this->location_pre (const_cast (o)); + } + + virtual void + location_pre (Type const&); + + virtual void + location_next (Type &o) + { + this->location_next (const_cast (o)); + } + + virtual void + location_next (Type const&); + + virtual void + location_post (Type &o) + { + this->location_post (const_cast (o)); + } + + virtual void + location_post (Type const&); + + protected: + ComponentPackageImport (); + }; + + struct PackageConfiguration : Traversal::PackageConfiguration, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::PackageConfiguration Type; + PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + label (Type &o) + { + this->label (const_cast (o)); + } + + virtual void + label (Type const&); + + virtual void + UUID (Type &o) + { + this->UUID (const_cast (o)); + } + + virtual void + UUID (Type const&); + + virtual void + basePackage (Type &o) + { + this->basePackage (const_cast (o)); + } + + virtual void + basePackage (Type const&); + + virtual void + specializedConfig (Type &o) + { + this->specializedConfig (const_cast (o)); + } + + virtual void + specializedConfig (Type const&); + + virtual void + importedPackage (Type &o) + { + this->importedPackage (const_cast (o)); + } + + virtual void + importedPackage (Type const&); + + virtual void + referencedPackage (Type &o) + { + this->referencedPackage (const_cast (o)); + } + + virtual void + referencedPackage (Type const&); + + virtual void + selectRequirement_pre (Type &o) + { + this->selectRequirement_pre (const_cast (o)); + } + + virtual void + selectRequirement_pre (Type const&); + + virtual void + selectRequirement_next (Type &o) + { + this->selectRequirement_next (const_cast (o)); + } + + virtual void + selectRequirement_next (Type const&); + + virtual void + selectRequirement_post (Type &o) + { + this->selectRequirement_post (const_cast (o)); + } + + virtual void + selectRequirement_post (Type const&); + + virtual void + configProperty_pre (Type &o) + { + this->configProperty_pre (const_cast (o)); + } + + virtual void + configProperty_pre (Type const&); + + virtual void + configProperty_next (Type &o) + { + this->configProperty_next (const_cast (o)); + } + + virtual void + configProperty_next (Type const&); + + virtual void + configProperty_post (Type &o) + { + this->configProperty_post (const_cast (o)); + } + + virtual void + configProperty_post (Type const&); + + virtual void + contentLocation (Type &o) + { + this->contentLocation (const_cast (o)); + } + + virtual void + contentLocation (Type const&); + + protected: + PackageConfiguration (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // PCD_HPP diff --git a/modules/CIAO/DAnCE/Config_Handlers/toplevel.cpp b/modules/CIAO/DAnCE/Config_Handlers/toplevel.cpp new file mode 100644 index 00000000000..a59893146bb --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/toplevel.cpp @@ -0,0 +1,348 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#include "toplevel.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + // TopLevelPackageDescription + // + + TopLevelPackageDescription:: + TopLevelPackageDescription () + : + ::XSCRT::Type (), + regulator__ () + { + } + + TopLevelPackageDescription:: + TopLevelPackageDescription (TopLevelPackageDescription const& s) + : + ::XSCRT::Type (), + package_ (s.package_), + regulator__ () + { + } + + TopLevelPackageDescription& TopLevelPackageDescription:: + operator= (TopLevelPackageDescription const& s) + { + package_ = s.package_; + + return *this; + } + + + // TopLevelPackageDescription + // + TopLevelPackageDescription::package_iterator TopLevelPackageDescription:: + begin_package () + { + return package_.begin (); + } + + TopLevelPackageDescription::package_iterator TopLevelPackageDescription:: + end_package () + { + return package_.end (); + } + + TopLevelPackageDescription::package_const_iterator TopLevelPackageDescription:: + begin_package () const + { + return package_.begin (); + } + + TopLevelPackageDescription::package_const_iterator TopLevelPackageDescription:: + end_package () const + { + return package_.end (); + } + + void TopLevelPackageDescription:: + add_package (ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackageConfiguration, ACE_Null_Mutex > const& e) + { + package_.push_back (e); + } + + size_t TopLevelPackageDescription:: + count_package(void) const + { + return package_.size (); + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + // TopLevelPackageDescription + // + + TopLevelPackageDescription:: + TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) + :Base (e), regulator__ () + { + + ::XSCRT::Parser< ACE_TCHAR > p (e); + + while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == ACE_TEXT("package")) + { + ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackageConfiguration, ACE_Null_Mutex > t (new ::CIAO::Config_Handlers::PackageConfiguration (e)); + add_package (t); + } + + else + { + } + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/TypeInfo.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace + { + ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ()); + + struct TopLevelPackageDescriptionTypeInfoInitializer + { + TopLevelPackageDescriptionTypeInfoInitializer () + { + ::XSCRT::TypeId id (typeid (::CIAO::Config_Handlers::TopLevelPackageDescription)); + ::XSCRT::ExtendedTypeInfo nf (id); + + nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type)); + ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf)); + } + }; + + TopLevelPackageDescriptionTypeInfoInitializer TopLevelPackageDescriptionTypeInfoInitializer_; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + // TopLevelPackageDescription + // + // + + void TopLevelPackageDescription:: + traverse (Type& o) + { + pre (o); + package (o); + post (o); + } + + void TopLevelPackageDescription:: + traverse (Type const& o) + { + pre (o); + package (o); + post (o); + } + + void TopLevelPackageDescription:: + pre (Type&) + { + } + + void TopLevelPackageDescription:: + pre (Type const&) + { + } + + void TopLevelPackageDescription:: + package (Type& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::TopLevelPackageDescription::package_iterator b (o.begin_package()), e (o.end_package()); + + if (b != e) + { + package_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) package_next (o); + } + + package_post (o); + } + + else package_none (o); + } + + void TopLevelPackageDescription:: + package (Type const& o) + { + // VC6 anathema strikes again + // + ::CIAO::Config_Handlers::TopLevelPackageDescription::package_const_iterator b (o.begin_package()), e (o.end_package()); + + if (b != e) + { + package_pre (o); + for (; b != e;) + { + dispatch (*(*b)); + if (++b != e) package_next (o); + } + + package_post (o); + } + + else package_none (o); + } + + void TopLevelPackageDescription:: + package_pre (Type&) + { + } + + void TopLevelPackageDescription:: + package_pre (Type const&) + { + } + + void TopLevelPackageDescription:: + package_next (Type&) + { + } + + void TopLevelPackageDescription:: + package_next (Type const&) + { + } + + void TopLevelPackageDescription:: + package_post (Type&) + { + } + + void TopLevelPackageDescription:: + package_post (Type const&) + { + } + + void TopLevelPackageDescription:: + package_none (Type&) + { + } + + void TopLevelPackageDescription:: + package_none (Type const&) + { + } + + void TopLevelPackageDescription:: + post (Type&) + { + } + + void TopLevelPackageDescription:: + post (Type const&) + { + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + // TopLevelPackageDescription + // + // + + TopLevelPackageDescription:: + TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) + : ::XSCRT::Writer< ACE_TCHAR > (e) + { + } + + TopLevelPackageDescription:: + TopLevelPackageDescription () + { + } + + void TopLevelPackageDescription:: + traverse (Type const& o) + { + Traversal::TopLevelPackageDescription::traverse (o); + } + + void TopLevelPackageDescription:: + package_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > (ACE_TEXT ("package"), top_ ())); + } + + void TopLevelPackageDescription:: + package_next (Type const& o) + { + package_post (o); + package_pre (o); + } + + void TopLevelPackageDescription:: + package_post (Type const&) + { + pop_ (); + } + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + diff --git a/modules/CIAO/DAnCE/Config_Handlers/toplevel.hpp b/modules/CIAO/DAnCE/Config_Handlers/toplevel.hpp new file mode 100644 index 00000000000..e88d2625e26 --- /dev/null +++ b/modules/CIAO/DAnCE/Config_Handlers/toplevel.hpp @@ -0,0 +1,220 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + +#ifndef TOPLEVEL_HPP +#define TOPLEVEL_HPP + +#include "XSC_XML_Handlers_Export.h" +// Forward declarations. +// +namespace CIAO +{ + namespace Config_Handlers + { + class TopLevelPackageDescription; + } +} + +#include +#include +#include +#include "XMLSchema/Types.hpp" +#include "XMLSchema/id_map.hpp" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Null_Mutex.h" +#include "ace/TSS_T.h" +#include "ace/ace_wchar.h" +#include "ace/Singleton.h" + +#include "pcd.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + class XSC_XML_Handlers_Export TopLevelPackageDescription : public ::XSCRT::Type + { + typedef ::XSCRT::Type Base; + + public: + typedef ACE_Refcounted_Auto_Ptr < TopLevelPackageDescription, ACE_Null_Mutex > _ptr; + + // package + // + public: + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackageConfiguration, ACE_Null_Mutex > >::iterator package_iterator; + typedef ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackageConfiguration, ACE_Null_Mutex > >::const_iterator package_const_iterator; + package_iterator begin_package (); + package_iterator end_package (); + package_const_iterator begin_package () const; + package_const_iterator end_package () const; + void add_package ( ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackageConfiguration, ACE_Null_Mutex > const& ); + XSCRT::Type* package_ptr ( std::basic_string idref ); + size_t count_package (void) const; + + protected: + ::std::list< ACE_Refcounted_Auto_Ptr < ::CIAO::Config_Handlers::PackageConfiguration, ACE_Null_Mutex > > package_; + + public: + TopLevelPackageDescription (); + + TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&); + TopLevelPackageDescription (TopLevelPackageDescription const& s); + + TopLevelPackageDescription& + operator= (TopLevelPackageDescription const& s); + + private: + char regulator__; + }; + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#include "XMLSchema/Traversal.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Traversal + { + struct XSC_XML_Handlers_Export TopLevelPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::TopLevelPackageDescription > + { + virtual void + traverse (Type&); + + virtual void + traverse (Type const&); + + virtual void + pre (Type&); + + virtual void + pre (Type const&); + + virtual void + package (Type&); + + virtual void + package (Type const&); + + virtual void + package_pre (Type&); + + virtual void + package_pre (Type const&); + + virtual void + package_next (Type&); + + virtual void + package_next (Type const&); + + virtual void + package_post (Type&); + + virtual void + package_post (Type const&); + + virtual void + package_none (Type&); + + virtual void + package_none (Type const&); + + virtual void + post (Type&); + + virtual void + post (Type const&); + }; + } + } +} + +#include "XMLSchema/Writer.hpp" + +namespace CIAO +{ + namespace Config_Handlers + { + namespace Writer + { + struct TopLevelPackageDescription : Traversal::TopLevelPackageDescription, + virtual ::XSCRT::Writer< ACE_TCHAR > + { + typedef ::CIAO::Config_Handlers::TopLevelPackageDescription Type; + TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&); + + virtual void + traverse (Type &o) + { + this->traverse (const_cast (o)); + } + + virtual void + traverse (Type const&); + + virtual void + package_pre (Type &o) + { + this->package_pre (const_cast (o)); + } + + virtual void + package_pre (Type const&); + + virtual void + package_next (Type &o) + { + this->package_next (const_cast (o)); + } + + virtual void + package_next (Type const&); + + virtual void + package_post (Type &o) + { + this->package_post (const_cast (o)); + } + + virtual void + package_post (Type const&); + + protected: + TopLevelPackageDescription (); + }; + } + } +} + +namespace CIAO +{ + namespace Config_Handlers + { + } +} + +#endif // TOPLEVEL_HPP diff --git a/modules/CIAO/DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl b/modules/CIAO/DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl new file mode 100644 index 00000000000..7f4708baa37 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/CIAO_ExecutionManagerDaemon.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file CIAO_ExecutionManagerDaemon.idl + * + * @brief Simple interface to control the ExecutionManager. This + * interface currently provides an additional method called shutdown + * to terminate the process cleanly. + */ + +#include "DAnCE/Deployment/Deployment_ExecutionManager.idl" + +module DAnCE +{ + /** + * @brief CIAO Execution Manager Program + * + * This feature addition is added using inheritance mechanism currently + */ + interface ExecutionManagerDaemon : Deployment::ExecutionManager + { + // Shutdown the daemon process. + oneway void shutdown (); + }; +}; diff --git a/modules/CIAO/DAnCE/Deployment/CIAO_Interfaces.mpc b/modules/CIAO/DAnCE/Deployment/CIAO_Interfaces.mpc new file mode 100644 index 00000000000..9a5da6c324d --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/CIAO_Interfaces.mpc @@ -0,0 +1,85 @@ +// -*- MPC -*- +// $Id$ + +project (CIAO_ExecutionManager_idl): ciaoidldefaults, anytypecode { + custom_only = 1 + idlflags += -Wb,stub_export_macro=CIAO_EXECUTIONMANAGER_STUB_Export \ + -Wb,stub_export_include=CIAO_ExecutionManager_stub_export.h \ + -Wb,skel_export_macro=CIAO_EXECUTIONMANAGER_SKEL_Export \ + -Wb,skel_export_include=CIAO_ExecutionManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + CIAO_ExecutionManagerDaemon.idl + } +} + +project (CIAO_ExecutionManager_stub): dance_lib, messaging, dance_executionmanager_stub { + sharedname = CIAO_ExecutionManager_stub + after += CIAO_ExecutionManager_idl + dynamicflags = CIAO_EXECUTIONMANAGER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CIAO_ExecutionManagerDaemonC.cpp + } +} + +project (CIAO_ExecutionManager_skel): dance_lib, messaging, ciao_executionmanager_stub, dance_executionmanager_skel { + sharedname = CIAO_ExecutionManager_skel + after += CIAO_ExecutionManager_stub + dynamicflags = CIAO_EXECUTIONMANAGER_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CIAO_ExecutionManagerDaemonS.cpp + } +} + +project (CIAO_NodeManager_idl): ciaoidldefaults, anytypecode { + custom_only = 1 + idlflags += -Wb,stub_export_macro=CIAO_NODEMANAGER_STUB_Export \ + -Wb,stub_export_include=CIAO_NodeManager_stub_export.h \ + -Wb,skel_export_macro=CIAO_NODEMANAGER_SKEL_Export \ + -Wb,skel_export_include=CIAO_NodeManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + CIAO_NodeManagerDaemon.idl + } +} + +project (CIAO_NodeManager_stub): dance_lib, messaging, dance_nodemanager_stub { + after += CIAO_NodeManager_idl + sharedname = CIAO_NodeManager_stub + + dynamicflags = CIAO_NODEMANAGER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CIAO_NodeManagerDaemonC.cpp + } +} + +project (CIAO_NodeManager_skel): dance_lib, messaging, dance_nodemanager_skel, ciao_nodemanager_stub { + after += CIAO_NodeManager_idl + sharedname = CIAO_NodeManager_skel + + dynamicflags = CIAO_NODEMANAGER_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CIAO_NodeManagerDaemonS.cpp + } +} + + + diff --git a/modules/CIAO/DAnCE/Deployment/CIAO_NodeManagerDaemon.idl b/modules/CIAO/DAnCE/Deployment/CIAO_NodeManagerDaemon.idl new file mode 100644 index 00000000000..20b208697b3 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/CIAO_NodeManagerDaemon.idl @@ -0,0 +1,34 @@ +// $Id$ + +/** + * @file CIAO_NodeManagerDaemon.idl + * + * @brief Controling interface for managing and controling CIAO daemon. + */ + +#include "DAnCE/Deployment/Deployment_NodeManager.idl" + +module DAnCE +{ + /** + * @brief CIAO daemon process control program. + * + * @@The Inheritage might cause binary code bloating but + * it's an easy way of combining features. In the future we could + * move this definition into Deployment.idl. + */ + interface NodeManagerDaemon : Deployment::NodeManager + { + // Canonical name of this daemon + readonly attribute string name; + + // Shutdown the daemon process. + oneway void shutdown (); + + /// RACE specific extension. + /// Modify the priority of a node application process. +// long set_priority (in string plan_id, +// in string cid, +// in ::Deployment::Sched_Params nm_params); + }; +}; diff --git a/modules/CIAO/DAnCE/Deployment/DAnCE_Core.mpc b/modules/CIAO/DAnCE/Deployment/DAnCE_Core.mpc new file mode 100644 index 00000000000..d905c176b52 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/DAnCE_Core.mpc @@ -0,0 +1,454 @@ +// -*- MPC -*- +// $Id$ + +project(Deployment_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=Deployment_stub_Export \ + -Wb,stub_export_include=Deployment_stub_export.h \ + -Wb,skel_export_macro=Deployment_svnt_Export \ + -Wb,skel_export_include=Deployment_svnt_export.h + + IDL_Files { + idlflags += -SS -Sci + Deployment_Packaging_Data.idl + Deployment_PlanError.idl + DAnCE_Properties.idl + } + + IDL_Files { + idlflags += -SS + Deployment_Base.idl + Deployment_Connection.idl + Deployment_Data.idl + Deployment_DeploymentPlan.idl + Deployment_TargetData.idl + } + + IDL_Files { + idlflags += -GC + Deployment_ApplicationManager.idl + } + + IDL_Files { + Deployment_ResourceCommitmentManager.idl + Deployment_StopError.idl + Deployment_StartError.idl + Deployment_Application.idl + Deployment.idl + } +} + +project(Deployment_TargetManager_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_TARGETMANAGER_STUB_Export \ + -Wb,stub_export_include=Deployment_TargetManager_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_TARGETMANAGER_SKEL_Export \ + -Wb,skel_export_include=Deployment_TargetManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_TargetManager.idl + } +} + +project(Deployment_RepositoryManager_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_REPOSITORYMANAGER_STUB_Export \ + -Wb,stub_export_include=Deployment_RepositoryManager_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_REPOSITORYMANAGER_SKEL_Export \ + -Wb,skel_export_include=Deployment_RepositoryManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_RepositoryManager.idl + } +} + +project(Deployment_ExecutionManager_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_EXECUTIONMANAGER_STUB_Export \ + -Wb,stub_export_include=Deployment_ExecutionManager_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_EXECUTIONMANAGER_SKEL_Export \ + -Wb,skel_export_include=Deployment_ExecutionManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_ExecutionManager.idl + } +} + +project(Deployment_DAM_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_DOMAINAPPLICATIONMANAGER_STUB_Export \ + -Wb,stub_export_include=Deployment_DomainApplicationManager_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_DOMAINAPPLICATIONMANAGER_SKEL_Export \ + -Wb,skel_export_include=Deployment_DomainApplicationManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_DomainApplicationManager.idl + } +} + +project(Deployment_DomainApplication_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_DOMAINAPPLICATION_STUB_Export \ + -Wb,stub_export_include=Deployment_DomainApplication_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_DOMAINAPPLICATION_SKEL_Export \ + -Wb,skel_export_include=Deployment_DomainApplication_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_DomainApplication.idl + } +} + +project(Deployment_NAM_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_NODEAPPLICATIONMANAGER_STUB_Export \ + -Wb,stub_export_include=Deployment_NodeApplicationManager_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_NODEAPPLICATIONMANAGER_SKEL_Export \ + -Wb,skel_export_include=Deployment_NodeApplicationManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_NodeApplicationManager.idl + } +} + +project(Deployment_NodeManager_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_NODEMANAGER_STUB_Export \ + -Wb,stub_export_include=Deployment_NodeManager_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_NODEMANAGER_SKEL_Export \ + -Wb,skel_export_include=Deployment_NodeManager_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_NodeManager.idl + } +} + +project(Deployment_NodeApplication_IDL) : ciaolib_with_idl, ciao_output, valuetype, gen_ostream { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DEPLOYMENT_NODEAPPLICATION_STUB_Export \ + -Wb,stub_export_include=Deployment_NodeApplication_stub_export.h \ + -Wb,skel_export_macro=DEPLOYMENT_NODEAPPLICATION_SKEL_Export \ + -Wb,skel_export_include=Deployment_NodeApplication_skel_export.h \ + -Gxhst -Gxhsk + + IDL_Files { + Deployment_NodeApplication.idl + } +} + +// Valuetype library must be linked for this project. +// Please don't remove. +project(Deployment_stub) : ciaolib_with_idl, ciao_output, valuetype, ifr_client, messaging, dance_lib, dance_logger, gen_ostream { + sharedname = DAnCE_Deployment_stub + after += Deployment_IDL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + dynamicflags = DEPLOYMENT_STUB_BUILD_DLL + + IDL_Files { + } + Source_Files { + Deployment_StopErrorC.cpp + Deployment_StartErrorC.cpp + Deployment_BaseC.cpp + Deployment_ConnectionC.cpp + Deployment_DataC.cpp + Deployment_DeploymentPlanC.cpp + Deployment_TargetDataC.cpp + Deployment_ApplicationC.cpp + Deployment_Packaging_DataC.cpp + Deployment_PlanErrorC.cpp + DeploymentC.cpp + Deployment_ApplicationManagerC.cpp + Deployment_ResourceCommitmentManagerC.cpp + DAnCE_PropertiesC.cpp + } +} + +project(Deployment_DAM_stub) : ciao_output, dance_deployment_stub { + sharedname = DAnCE_DomainApplicationManager_stub + after += Deployment_DAM_IDL + dynamicflags = DEPLOYMENT_DOMAINAPPLICATIONMANAGER_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_DomainApplicationManagerC.cpp + } +} + +project(Deployment_DAM_skel) : ciao_output, dance_deployment_svnt, dance_domainapplicationmanager_stub { + sharedname = DAnCE_DomainApplicationManager_skel + after += Deployment_DAM_stub + dynamicflags = DEPLOYMENT_DOMAINAPPLICATIONMANAGER_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_DomainApplicationManagerS.cpp + } +} + +project(Deployment_ExecutionManager_stub) : ciao_output, dance_deployment_stub, dance_domainapplicationmanager_stub { + sharedname = DAnCE_ExecutionManager_stub + after += Deployment_ExecutionManager_IDL + dynamicflags = DEPLOYMENT_EXECUTIONMANAGER_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_ExecutionManagerC.cpp + } +} + +project(Deployment_ExecutionManager_skel) : ciao_output, dance_deployment_svnt, dance_executionmanager_stub { + sharedname = DAnCE_ExecutionManager_skel + after += Deployment_ExecutionManager_stub + dynamicflags = DEPLOYMENT_EXECUTIONMANAGER_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_ExecutionManagerS.cpp + } +} + +project(Deployment_DomainApplication_stub) : ciao_output, dance_deployment_stub { + sharedname = DAnCE_DomainApplication_stub + after += Deployment_DomainApplication_IDL + dynamicflags = DEPLOYMENT_DOMAINAPPLICATION_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_DomainApplicationC.cpp + } +} + +project(Deployment_DomainApplication_skel) : ciao_output, dance_deployment_svnt, dance_domainapplication_stub { + sharedname = DAnCE_DomainApplication_skel + after += Deployment_DomainApplication_stub + dynamicflags = DEPLOYMENT_DOMAINAPPLICATION_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_DomainApplicationS.cpp + } +} + +project(Deployment_NAM_stub) : ciao_output, dance_deployment_stub { + sharedname = DAnCE_NodeApplicationManager_stub + after += Deployment_NAM_IDL + dynamicflags = DEPLOYMENT_NODEAPPLICATIONMANAGER_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_NodeApplicationManagerC.cpp + } +} + +project(Deployment_NAM_skel) : ciao_output, dance_deployment_svnt, dance_nodeapplicationmanager_stub { + sharedname = DAnCE_NodeApplicationManager_skel + after += Deployment_NAM_stub + dynamicflags = DEPLOYMENT_NODEAPPLICATIONMANAGER_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_NodeApplicationManagerS.cpp + } +} + +project(Deployment_NodeManager_stub) : ciao_output, dance_deployment_stub, dance_nodeapplicationmanager_stub, dance_targetmanager_stub { + sharedname = DAnCE_NodeManager_stub + after += Deployment_NodeManager_IDL + dynamicflags = DEPLOYMENT_NODEMANAGER_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_NodeManagerC.cpp + } +} + +project(Deployment_NodeManager_skel) : ciao_output, dance_deployment_svnt, dance_nodemanager_stub, dance_nodeapplicationmanager_skel { + sharedname = DAnCE_NodeManager_skel + after += Deployment_NodeManager_stub + dynamicflags = DEPLOYMENT_NODEMANAGER_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_NodeManagerS.cpp + } +} + +project(Deployment_TargetManager_stub) : ciao_output, dance_deployment_stub { + sharedname = DAnCE_TargetManager_stub + after += Deployment_TargetManager_IDL + dynamicflags = DEPLOYMENT_TARGETMANAGER_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_TargetManagerC.cpp + } +} + +project(Deployment_TargetManager_skel) : ciao_output, dance_deployment_svnt, dance_targetmanager_stub { + sharedname = DAnCE_TargetManager_skel + after += Deployment_TargetManager_stub + dynamicflags = DEPLOYMENT_TARGETMANAGER_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_TargetManagerS.cpp + } +} + +project(Deployment_RepositoryManager_stub) : ciao_output, dance_deployment_stub { + sharedname = DAnCE_RepositoryManager_stub + after += Deployment_RepositoryManager_IDL + dynamicflags = DEPLOYMENT_REPOSITORYMANAGER_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_RepositoryManagerC.cpp + } +} + +project(Deployment_RepositoryManager_skel) : ciao_output, dance_deployment_svnt, dance_repositorymanager_stub { + sharedname = DAnCE_RepositoryManager_skel + after += Deployment_RepositoryManager_stub + dynamicflags = DEPLOYMENT_REPOSITORYMANAGER_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_RepositoryManagerS.cpp + } +} + +project(Deployment_NodeApplication_stub) : ciao_output, dance_deployment_stub { + sharedname = DAnCE_NodeApplication_stub + after += Deployment_NodeApplication_IDL + dynamicflags = DEPLOYMENT_NODEAPPLICATION_STUB_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_NodeApplicationC.cpp + } +} + +project(Deployment_NodeApplication_skel) : ciao_output, dance_deployment_svnt, dance_nodeapplication_stub { + sharedname = DAnCE_NodeApplication_skel + after += Deployment_NodeApplication_stub + dynamicflags = DEPLOYMENT_NODEAPPLICATION_SKEL_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_NodeApplicationS.cpp + } +} + +// CIAO_DnC_Client library must be linked for this project. +// Please don't remove. dance_deployment_stub, +project(Deployment_svnt) : dance_deployment_stub, ciao_output, ciaolib_with_idl, portableserver, valuetype, ifr_client, naming, dance_lib, dance_logger, messaging, gen_ostream { + sharedname = DAnCE_Deployment_svnt + dynamicflags = DEPLOYMENT_SVNT_BUILD_DLL + after += Deployment_IDL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + IDL_Files { + } + + Source_Files { + Deployment_StopErrorS.cpp + Deployment_StartErrorS.cpp + Deployment_ApplicationS.cpp + DeploymentS.cpp + Deployment_ApplicationManagerS.cpp + Deployment_ResourceCommitmentManagerS.cpp + } + +} diff --git a/modules/CIAO/DAnCE/Deployment/DAnCE_Loader.h b/modules/CIAO/DAnCE/Deployment/DAnCE_Loader.h new file mode 100644 index 00000000000..cf40a32c288 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/DAnCE_Loader.h @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file DAnCE_Loader.h + * Abstract class for DAnCE object loaders. + */ + +#ifndef DANCE_LOADDER_H_ +#define DANCE_LOADDER_H_ + +namespace DAnCE +{ + class DAnCE_Object_Loader : public TAO_Object_Loader + { + public: + /// Deliver a usage statement about the object. + virtual const char * usage (void) = 0; + + /// Parse args passed to it; is not destructive + virtual bool parse_args (int argc, ACE_TCHAR *argv []) = 0; + }; + + +} + +#endif diff --git a/modules/CIAO/DAnCE/Deployment/DAnCE_Properties.idl b/modules/CIAO/DAnCE/Deployment/DAnCE_Properties.idl new file mode 100644 index 00000000000..a93fcdc40af --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/DAnCE_Properties.idl @@ -0,0 +1,43 @@ +/** + * $Id$ + * + * @file DAnCE_Properties.idl + * @author William R. Otte + * + * Codifies properties used to configure the deployment engine. + */ + +module DAnCE +{ + // Home Configuration Properties + /// Describes the entrypoint for the home executor. Property value is string. + const string HOME_FACTORY = "home factory"; + + // Component Configuration Properties + /// Describes the entrypoint for the component executor. Property value is string. + const string COMPONENT_FACTORY = "component factory"; + /// Indicates that the component instance should be deployed using specified home ID. + /// Property value is string. + const string EXPLICIT_HOME = "edu.vanderbilt.dre.DAnCE.ExplicitHome"; + + // Instance (i.e., Home or Component) Properties + /// Indicates that the instance object reference should be registered in the + /// Instance naming context using a specified name. Property value is string. + const string REGISTER_NAMING = "edu.vanderbilt.dre.DAnCE.RegisterNaming"; + /// Indicates that the instance object reference should be printed to a specifid + /// file. Property value is string. + const string INSTANCE_IOR_FILE = "edu.vanderbilt.dre.DAnCE.InstanceIOR"; + // const string REGISTER_PORT_NAMING = "edu.vanderbilt.dre.DAnCE.RegisterPortNaming"; + + // Node Infrastructure Configuration + /// Indicates that the NodeManager is running as a standalone entity. + const string STANDALONE_NM = "edu.vanderbilt.dre.DAnCE.StandaloneNM"; + /// Indicates the naming context for domain objects, which includes infrastructure + /// and redirection. + const string DOMAIN_NC = "edu.vanderbilt.dre.DAnCE.DomainNC"; + /// Indicates the naming context used for instance objects. + const string INSTANCE_NC = "edu.vanderbilt.dre.DAnCE.InstanceNC"; + + +}; + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment.idl b/modules/CIAO/DAnCE/Deployment/Deployment.idl new file mode 100644 index 00000000000..949903e0af4 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment.idl @@ -0,0 +1,34 @@ +// $Id$ + +#ifndef DEPLOYMENT_IDL +#define DEPLOYMENT_IDL + +module Deployment { + exception InvalidProperty { + string name; + string reason; + }; + + exception InvalidNodeExecParameter { + string name; + string reason; + }; + + exception InvalidComponentExecParameter { + string name; + string reason; + }; + + exception NoSuchName { + }; + + exception LastConfiguration { + }; + + exception InvalidReference { + }; + //@! in DOCGroup added 1 additional exception and one structure +}; + +#endif /* DEPLOYMENT_IDL */ + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_Application.idl b/modules/CIAO/DAnCE/Deployment/Deployment_Application.idl new file mode 100644 index 00000000000..8367689d7e8 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_Application.idl @@ -0,0 +1,28 @@ +// $Id$ + +#ifndef DEPLOYMENT_APPLICATION_IDL +#define DEPLOYMENT_APPLICATION_IDL + +#include "DAnCE/Deployment/Deployment_Connection.idl" +#include "DAnCE/Deployment/Deployment_StartError.idl" +#include "DAnCE/Deployment/Deployment_StopError.idl" + +module Deployment +{ + exception InvalidConnection { + string name; + string reason; + }; + + interface Application { + void finishLaunch (in Connections providedReference, in boolean start) + raises (StartError, InvalidConnection); + + void start () + raises (StartError); + }; + + typedef sequence < Application > Applications; +}; + +#endif /* DEPLOYMENT_APPLICATION_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_ApplicationManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_ApplicationManager.idl new file mode 100644 index 00000000000..215eb31f603 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_ApplicationManager.idl @@ -0,0 +1,35 @@ +// $Id$ +// Compliant with OMG 06-04-01 section 15 + +#ifndef DEPLOYMENT_APPLICATIONMANAGER_IDL +#define DEPLOYMENT_APPLICATIONMANAGER_IDL + +#include "DAnCE/Deployment/Deployment.idl" +#include "DAnCE/Deployment/Deployment_Application.idl" +#include "DAnCE/Deployment/Deployment_Connection.idl" + +module Deployment { + + exception ResourceNotAvailable { + string name; + string resourceType; + string propertyName; + string elementName; + string resourceName; + }; + + interface ApplicationManager { + Application startLaunch (in Properties configProperty, + out Connections providedReference) + raises (ResourceNotAvailable, + StartError, + InvalidProperty, + InvalidNodeExecParameter, + InvalidComponentExecParameter); + + void destroyApplication (in Application app) + raises (StopError); + }; +}; + +#endif /* DEPLOYMENT_APPLICATIONMANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_Base.idl b/modules/CIAO/DAnCE/Deployment/Deployment_Base.idl new file mode 100644 index 00000000000..c0db10ecb14 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_Base.idl @@ -0,0 +1,42 @@ +//$Id$ + +#ifndef DEPLOYMENT_BASE_IDL +#define DEPLOYMENT_BASE_IDL + +module Deployment { + + struct Property { + string name; + any value; + }; + + typedef sequence < Property > Properties; + + struct Requirement { + string name; + string resourceType; + Properties property; + }; + + typedef sequence < Requirement > Requirements; + + enum SatisfierPropertyKind { + Quantity, + Capacity, + Minimum, + Maximum, + _Attribute, + Selection + }; + + struct SatisfierProperty { + string name; + SatisfierPropertyKind kind; + boolean dynamic; + any value; + }; + + typedef sequence < SatisfierProperty > SatisfierProperties; +}; + +#endif /* DEPLOYMENT_BASE_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_Connection.idl b/modules/CIAO/DAnCE/Deployment/Deployment_Connection.idl new file mode 100644 index 00000000000..a07cd7990a4 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_Connection.idl @@ -0,0 +1,18 @@ +// $Id$ + +#ifndef DEPLOYMENT_CONNECTION_IDL +#define DEPLOYMENT_CONNECTION_IDL + +#include "DAnCE/Deployment/Deployment_DeploymentPlan.idl" + +module Deployment +{ + typedef sequence < Object > Endpoints; + struct Connection { + string name; + Endpoints endpoint; + }; + + typedef sequence < Connection > Connections; +}; +#endif /* DEPLOYMENT_CONNECTION_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_Data.idl b/modules/CIAO/DAnCE/Deployment/Deployment_Data.idl new file mode 100644 index 00000000000..ec21e4715f1 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_Data.idl @@ -0,0 +1,41 @@ +// $Id$ + +#ifndef DEPLOYMENT_DATA_IDL +#define DEPLOYMENT_DATA_IDL + +#include "DAnCE/Deployment/Deployment_DeploymentPlan.idl" + +module Deployment { + struct ComponentPackageReference { + string requiredUUID; + string requiredName; + ComponentInterfaceDescription requiredType; + }; + + typedef sequence < ComponentPackageReference > ComponentPackageReferences; + + typedef sequence < ResourceUsageKind > ResourceUsageKinds; + + struct ImplementationRequirement { + ResourceUsageKinds resourceUsage; + string resourcePort; + string componentPort; + string name; + string resourceType; + Properties property; + }; + + typedef sequence < ImplementationRequirement > ImplementationRequirements; + + struct Capability { + string name; + ::CORBA::StringSeq resourceType; + SatisfierProperties property; + }; + + typedef sequence < Capability > Capabilities; +}; + +#endif /* DEPLOYMENT_DATA_IDL */ + + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_DeploymentPlan.idl b/modules/CIAO/DAnCE/Deployment/Deployment_DeploymentPlan.idl new file mode 100644 index 00000000000..14aac0c6f77 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_DeploymentPlan.idl @@ -0,0 +1,211 @@ +// $Id$ + +#ifndef DEPLOYMENT_DEPLOYMENTPLAN_IDL +#define DEPLOYMENT_DEPLOYMENTPLAN_IDL + +#include "DAnCE/Deployment/Deployment_Base.idl" +#include "tao/StringSeq.pidl" +#include "tao/ULongSeq.pidl" +#include "tao/Typecode_types.pidl" + +module Deployment { + enum CCMComponentPortKind { + Facet, + SimplexReceptacle, + MultiplexReceptacle, + EventEmitter, + EventPublisher, + EventConsumer, + ExtendedPort, + _MirrorPort + }; + + struct ComponentPortDescription { + string name; + string specificType; + ::CORBA::StringSeq supportedType; + boolean provider; + boolean exclusiveProvider; + boolean exclusiveUser; + boolean optional; + CCMComponentPortKind kind; + ::CORBA::StringSeq templateParam; + }; + + typedef sequence < ComponentPortDescription > ComponentPortDescriptions; + + struct ComponentPropertyDescription { + string name; + CORBA::TypeCode type; + }; + + typedef sequence < ComponentPropertyDescription > ComponentPropertyDescriptions; + + struct ComponentInterfaceDescription { + string label; + string UUID; + string specificType; + ::CORBA::StringSeq supportedType; + ::CORBA::StringSeq idlFile; + Properties configProperty; + ComponentPortDescriptions _port; + ComponentPropertyDescriptions property; + Properties infoProperty; + }; + + struct MonolithicDeploymentDescription { + string name; + ::CORBA::StringSeq source; + ::CORBA::ULongSeq artifactRef; + Properties execParameter; + Requirements deployRequirement; + }; + + typedef sequence < MonolithicDeploymentDescription > MonolithicDeploymentDescriptions; + + enum ResourceUsageKind { + None, + InstanceUsesResource, + ResourceUsesInstance, + PortUsesResource, + ResourceUsesPort + }; + + struct InstanceResourceDeploymentDescription { + ResourceUsageKind resourceUsage; + string requirementName; + string resourceName; + Properties property; + }; + + typedef sequence < InstanceResourceDeploymentDescription > InstanceResourceDeploymentDescriptions; + + struct InstanceDeploymentDescription { + string name; + string node; + ::CORBA::StringSeq source; + unsigned long implementationRef; + Properties configProperty; + InstanceResourceDeploymentDescriptions deployedResource; + InstanceResourceDeploymentDescriptions deployedSharedResource; + }; + + typedef sequence < InstanceDeploymentDescription > InstanceDeploymentDescriptions; + + struct ComponentExternalPortEndpoint { + string portName; + }; + + typedef sequence < ComponentExternalPortEndpoint > ComponentExternalPortEndpoints; + + struct PlanSubcomponentPortEndpoint { + string portName; + boolean provider; + CCMComponentPortKind kind; + unsigned long instanceRef; + }; + + typedef sequence < PlanSubcomponentPortEndpoint > PlanSubcomponentPortEndpoints; + + //@! in DOCGroup provider, portName and supportesType are removed + struct ExternalReferenceEndpoint { + string location; + boolean provider; + string portName; + ::CORBA::StringSeq supportedType; + }; + + typedef sequence < ExternalReferenceEndpoint > ExternalReferenceEndpoints; + + struct ConnectionResourceDeploymentDescription { + string targetName; + string requirementName; + string resourceName; + Properties property; + }; + + typedef sequence < ConnectionResourceDeploymentDescription > ConnectionResourceDeploymentDescriptions; + + struct PlanConnectionDescription { + string name; + ::CORBA::StringSeq source; + Requirements deployRequirement; + ComponentExternalPortEndpoints externalEndpoint; + PlanSubcomponentPortEndpoints internalEndpoint; + ExternalReferenceEndpoints externalReference; + ConnectionResourceDeploymentDescriptions deployedResource; + }; + + typedef sequence < PlanConnectionDescription > PlanConnectionDescriptions; + + struct PlanSubcomponentPropertyReference { + string propertyName; + unsigned long instanceRef; + }; + + typedef sequence < PlanSubcomponentPropertyReference > PlanSubcomponentPropertyReferences; + + struct PlanPropertyMapping { + string name; + ::CORBA::StringSeq source; + string externalName; + PlanSubcomponentPropertyReferences delegatesTo; + }; + + typedef sequence < PlanPropertyMapping > PlanPropertyMappings; + + struct ImplementationDependency { + string requiredType; + }; + + typedef sequence < ImplementationDependency > ImplementationDependencies; + + struct ResourceDeploymentDescription { + string requirementName; + string resourceName; + Properties property; + }; + + typedef sequence < ResourceDeploymentDescription > ResourceDeploymentDescriptions; + + struct ArtifactDeploymentDescription { + string name; + ::CORBA::StringSeq location; + string node; + ::CORBA::StringSeq source; + Properties execParameter; + Requirements deployRequirement; + ResourceDeploymentDescriptions deployedResource; + }; + + typedef sequence < ArtifactDeploymentDescription > ArtifactDeploymentDescriptions; + + enum PlanLocalityKind { + PlanSameProcess, + PlanDifferentProcess, + PlanNoConstraint + }; + + struct PlanLocality { + PlanLocalityKind constraint; + ::CORBA::ULongSeq constrainedInstanceRef; + }; + //@! in DOCGroup not implemented + typedef sequence < PlanLocality > PlanLocalities; + //@! in DOCGroup localityConstraint is commented + struct DeploymentPlan { + string label; + string UUID; + ComponentInterfaceDescription realizes; + MonolithicDeploymentDescriptions implementation; + InstanceDeploymentDescriptions instance; + PlanConnectionDescriptions connection; + PlanPropertyMappings externalProperty; + ImplementationDependencies dependsOn; + ArtifactDeploymentDescriptions artifact; + Properties infoProperty; + PlanLocalities localityConstraint; + }; +}; + +#endif /* DEPLOYMENT_DATA_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_DomainApplication.idl b/modules/CIAO/DAnCE/Deployment/Deployment_DomainApplication.idl new file mode 100644 index 00000000000..4d8b1c94ba3 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_DomainApplication.idl @@ -0,0 +1,17 @@ +// $Id$ + +#ifndef DEPLOYMENT_DOMAINAPPLICATION_IDL +#define DEPLOYMENT_DOMAINAPPLICATION_IDL + +#include "DAnCE/Deployment/Deployment_Application.idl" + +module Deployment +{ + interface DomainApplication : + Application + { + }; +}; + + +#endif //DEPLOYMENT_DOMAINAPPLICATION_IDL diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_DomainApplicationManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_DomainApplicationManager.idl new file mode 100644 index 00000000000..d8d12e3af40 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_DomainApplicationManager.idl @@ -0,0 +1,19 @@ +// $Id$ + +#ifndef DOMAINAPPLICATIONMANAGER_IDL +#define DOMAINAPPLICATIONMANAGER_IDL + +#include "DAnCE/Deployment/Deployment_DeploymentPlan.idl" +#include "DAnCE/Deployment/Deployment_ApplicationManager.idl" + +module Deployment { + interface DomainApplicationManager : ApplicationManager + { + Applications getApplications (); + DeploymentPlan getPlan (); + }; + + typedef sequence < DomainApplicationManager > DomainApplicationManagers; +}; + +#endif /* DOMAINAPPLICATIONMANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_ExecutionManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_ExecutionManager.idl new file mode 100644 index 00000000000..8a60dbb2ccf --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_ExecutionManager.idl @@ -0,0 +1,20 @@ +// $Id$ +#ifndef EXECUTIONMANAGER_IDL +#define EXECUTIONMANAGER_IDL + +#include "DAnCE/Deployment/Deployment_DomainApplicationManager.idl" +#include "DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl" +#include "DAnCE/Deployment/Deployment_PlanError.idl" + +module Deployment { + interface ExecutionManager { + DomainApplicationManager preparePlan (in DeploymentPlan plan, + in ResourceCommitmentManager resourceCommitment) + raises (ResourceNotAvailable, PlanError, StartError); + DomainApplicationManagers getManagers (); + void destroyManager (in DomainApplicationManager manager) + raises (StopError); + }; +}; + +#endif /* EXECUTIONMANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_NodeApplication.idl b/modules/CIAO/DAnCE/Deployment/Deployment_NodeApplication.idl new file mode 100644 index 00000000000..73677e40f4d --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_NodeApplication.idl @@ -0,0 +1,14 @@ +// $Id$ + +#ifndef DEPLOYMENT_NODEAPPLICATION_IDL +#define DEPLOYMENT_NODEAPPLICATION_IDL + +#include "DAnCE/Deployment/Deployment_Application.idl" + +module Deployment { + interface NodeApplication : Application + { + }; +}; +#endif /* DEPLOYMENT_NODEAPPLICATION_IDL */ + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_NodeApplicationManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_NodeApplicationManager.idl new file mode 100644 index 00000000000..2e7ea458a1d --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_NodeApplicationManager.idl @@ -0,0 +1,14 @@ +// $Id$ +#ifndef NODEAPPLICATIONMANAGER_IDL +#define NODEAPPLICATIONMANAGER_IDL + +#include "DAnCE/Deployment/Deployment_ApplicationManager.idl" + +module Deployment { + interface NodeApplicationManager : + ApplicationManager + { + }; +}; + +#endif /* NODEAPPLICATIONMANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_NodeManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_NodeManager.idl new file mode 100644 index 00000000000..b87bba8db31 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_NodeManager.idl @@ -0,0 +1,34 @@ +// $Id$ +#ifndef NODEMANAGER_IDL +#define NODEMANAGER_IDL + +#include "DAnCE/Deployment/Deployment.idl" +#include "DAnCE/Deployment/Deployment_TargetManager.idl" +#include "DAnCE/Deployment/Deployment_NodeApplicationManager.idl" +#include "DAnCE/Deployment/Deployment_PlanError.idl" + +module Deployment { + + interface Logger { + }; + + interface NodeManager { + void joinDomain ( in Domain theDomain, + in TargetManager manager, + in Logger log, + in long updateInterval); + + void leaveDomain (); + + NodeApplicationManager preparePlan (in DeploymentPlan plan, + in ResourceCommitmentManager resourceCommitment) + raises (StartError, PlanError); + + void destroyManager (in NodeApplicationManager appManager) + raises (StopError); + + Resources getDynamicResources (); + }; +}; + +#endif /* NODEMANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_Packaging_Data.idl b/modules/CIAO/DAnCE/Deployment/Deployment_Packaging_Data.idl new file mode 100644 index 00000000000..88b3ff7c291 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_Packaging_Data.idl @@ -0,0 +1,199 @@ +// $Id$ + +#ifndef PACKAGING_DATA_IDL +#define PACKAGING_DATA_IDL + +#include "DAnCE/Deployment/Deployment_Data.idl" + +module Deployment { + + struct ComponentPackageDescription; + + typedef sequence < ComponentPackageDescription > ComponentPackageDescriptions; + + struct PackageConfiguration; + + typedef sequence < PackageConfiguration > PackageConfigurations; + + struct ComponentPackageImport { + ::CORBA::StringSeq location; + }; + + typedef sequence < ComponentPackageImport > ComponentPackageImports; + + struct SubcomponentInstantiationDescription { + string name; + ComponentPackageDescriptions basePackage; + PackageConfigurations specializedConfig; + Requirements selectRequirement; + Properties configProperty; + ComponentPackageReferences referencedPackage; + ComponentPackageImports importedPackage; + }; + + typedef sequence < SubcomponentInstantiationDescription > SubcomponentInstantiationDescriptions; + + struct SubcomponentPortEndpoint { + string portName; + unsigned long instanceRef; + }; + + typedef sequence < SubcomponentPortEndpoint > SubcomponentPortEndpoints; + + struct AssemblyConnectionDescription { + string name; + Requirements deployRequirement; + ComponentExternalPortEndpoints externalEndpoint; + SubcomponentPortEndpoints internalEndpoint; + ExternalReferenceEndpoints externalReference; + }; + + typedef sequence < AssemblyConnectionDescription > AssemblyConnectionDescriptions; + + struct SubcomponentPropertyReference { + string propertyName; + unsigned long instanceRef; + }; + + typedef sequence < SubcomponentPropertyReference > SubcomponentPropertyReferences; + + struct AssemblyPropertyMapping { + string name; + string externalName; + SubcomponentPropertyReferences delegatesTo; + }; + + typedef sequence < AssemblyPropertyMapping > AssemblyPropertyMappings; + + struct NamedImplementationArtifact; + + typedef sequence < NamedImplementationArtifact > NamedImplementationArtifacts; + + struct ImplementationArtifactDescription { + string label; + string UUID; + ::CORBA::StringSeq location; + Properties execParameter; + Requirements deployRequirement; + NamedImplementationArtifacts dependsOn; + Properties infoProperty; + }; + + struct NamedImplementationArtifact { + string name; + ImplementationArtifactDescription referencedArtifact; + }; + + struct MonolithicImplementationDescription { + Properties nodeExecParameter; + NamedImplementationArtifacts primaryArtifact; + ImplementationRequirements deployRequirement; + Properties componentExecParameter; + }; + + typedef sequence < MonolithicImplementationDescription > MonolithicImplementationDescriptions; + + enum LocalityKind { + SameNodeAnyProcess, + SameNodeSameProcess, + SameNodeDifferentProcess, + DifferentNode, + DifferentProcess, + NoConstraint + }; + + struct Locality { + LocalityKind constraint; + ::CORBA::ULongSeq constrainedInstanceRef; + }; + + typedef sequence < Locality > Localities; + + struct ComponentAssemblyDescription { + SubcomponentInstantiationDescriptions instance; + AssemblyConnectionDescriptions connection; + AssemblyPropertyMappings externalProperty; + Localities localityConstraint; + }; + + typedef sequence < ComponentAssemblyDescription > ComponentAssemblyDescriptions; + + struct ComponentImplementationDescription { + string label; + string UUID; + ComponentInterfaceDescription implements; + ComponentAssemblyDescriptions assemblyImpl; + MonolithicImplementationDescriptions monolithicImpl; + Properties configProperty; + Capabilities capability; + ImplementationDependencies dependsOn; + Properties infoProperty; + }; + + struct ConnectorImplementationDescription { + string label; + string UUID; + ComponentInterfaceDescription implements; + ComponentAssemblyDescriptions assemblyImpl; + MonolithicImplementationDescriptions monolithicImpl; + Properties configProperty; + Capabilities capability; + ImplementationDependencies dependsOn; + Properties infoProperty; + }; + + struct PackagedComponentImplementation { + string name; + ComponentImplementationDescription referencedImplementation; + }; + + typedef sequence < PackagedComponentImplementation > PackagedComponentImplementations; + + struct ComponentPackageDescription { + string label; + string UUID; + ComponentInterfaceDescription realizes; + Properties configProperty; + PackagedComponentImplementations implementation; + Properties infoProperty; + }; + + struct ConnectorPackageDescription { + string label; + string UUID; + ComponentInterfaceDescription realizes; + Properties configProperty; + ConnectorImplementationDescription implementation; + Properties infoProperty; + }; + + struct PackageConfiguration { + string label; + string UUID; + ComponentPackageDescriptions basePackage; + PackageConfigurations specializedConfig; + Requirements selectRequirement; + Properties configProperty; + ComponentPackageReferences referencedPackage; + ComponentPackageImports importedPackage; + }; + + struct ComponentUsageDescription { + ComponentPackageDescriptions basePackage; + ConnectorPackageDescription baseConnectorPackage; + PackageConfigurations specializedConfig; + Requirements selectRequirement; + Properties configProperty; + ComponentPackageReferences referencedPackage; + ComponentPackageImports importedPackage; + }; + + struct RequirementSatisfier { + string name; + ::CORBA::StringSeq resourceType; + SatisfierProperties property; + }; + +}; + +#endif /* PACKAGING_DATA_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_PlanError.idl b/modules/CIAO/DAnCE/Deployment/Deployment_PlanError.idl new file mode 100644 index 00000000000..806983d2a87 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_PlanError.idl @@ -0,0 +1,13 @@ +// $Id$ + +#ifndef DEPLOYMENT_PLANERROR_IDL +#define DEPLOYMENT_PLANERROR_IDL + +module Deployment { + exception PlanError { + string name; + string reason; + }; +}; + +#endif /* DEPLOYMENT_PLANERROR_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_RepositoryManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_RepositoryManager.idl new file mode 100644 index 00000000000..5000b487590 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_RepositoryManager.idl @@ -0,0 +1,47 @@ +// $Id$ +#ifndef REPOSITORY_MANAGER_IDL +#define REPOSITORY_MANAGER_IDL + +#include "DAnCE/Deployment/Deployment_Packaging_Data.idl" +#include "DAnCE/Deployment/Deployment.idl" + +module Deployment { + + exception NameExists { + }; + + exception PackageError { + string source; + string reason; + }; + + interface RepositoryManager { + void installPackage (in string installationName, + in string location, + in boolean replace) + raises (NameExists, PackageError); + + void createPackage (in string installationName, + in PackageConfiguration package, + in string baseLocation, + in boolean replace) + raises (NameExists, PackageError); + + PackageConfiguration findPackageByName (in string name) + raises (NoSuchName); + + PackageConfiguration findPackageByUUID (in string UUID) + raises (NoSuchName); + + ::CORBA::StringSeq findNamesByType (in string type); + + ::CORBA::StringSeq getAllNames (); + + ::CORBA::StringSeq getAllTypes (); + + void deletePackage (in string installationName) + raises (NoSuchName); + }; +}; + +#endif /* REPOSITOR_MANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl new file mode 100644 index 00000000000..346c2626950 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl @@ -0,0 +1,36 @@ +// $Id$ +// +#ifndef RESOURCE_COMMITMENT_MANAGER_IDL +#define RESOURCE_COMMITMENT_MANAGER_IDL + +#include "DAnCE/Deployment/Deployment_Base.idl" +#include "tao/AnyTypeCode/AnySeq.pidl" + +module Deployment { + + struct ResourceAllocation { + string elementName; + string resourceName; + Properties property; + }; + + typedef sequence < ResourceAllocation > ResourceAllocations; + + exception ResourceCommitmentFailure { + string reason; + long index; + string propertyName; + ::CORBA::AnySeq propertyValue; + }; + + interface ResourceCommitmentManager { + void commitResources (in ResourceAllocations resources) + raises (ResourceCommitmentFailure); + void releaseResources (in ResourceAllocations resources) + raises (ResourceCommitmentFailure); + }; + +}; + +#endif //RESOURCE_COMMITMENT_MANAGER_IDL + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_StartError.idl b/modules/CIAO/DAnCE/Deployment/Deployment_StartError.idl new file mode 100644 index 00000000000..9cf092f0796 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_StartError.idl @@ -0,0 +1,14 @@ +// $Id$ +// Compliant with OMG 06-04-01 section 15 + +#ifndef DEPLOYMENT_STARTERROR_IDL +#define DEPLOYMENT_STARTERROR_IDL + +module Deployment { + exception StartError { + string name; + string reason; + }; +}; +#endif /* DEPLOYMENT_STARTERROR_IDL */ + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_StopError.idl b/modules/CIAO/DAnCE/Deployment/Deployment_StopError.idl new file mode 100644 index 00000000000..67279680021 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_StopError.idl @@ -0,0 +1,14 @@ +// $Id$ +// Compliant with OMG 06-04-01 section 15 + +#ifndef DEPLOYMENT_STOPERROR_IDL +#define DEPLOYMENT_STOPERROR_IDL + +module Deployment { + exception StopError { + string name; + string reason; + }; +}; +#endif /* DEPLOYMENT_STOPERROR_IDL */ + diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_TargetData.idl b/modules/CIAO/DAnCE/Deployment/Deployment_TargetData.idl new file mode 100644 index 00000000000..f0ec9732afd --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_TargetData.idl @@ -0,0 +1,69 @@ +//$Id$ + +#ifndef DEPLOYMENT_TARGETDATA_IDL +#define DEPLOYMENT_TARGETDATA_IDL + +#include "DAnCE/Deployment/Deployment_Base.idl" +#include "tao/StringSeq.pidl" +#include "tao/ULongSeq.pidl" + +module Deployment { + + struct Resource { + string name; + ::CORBA::StringSeq resourceType; + SatisfierProperties property; + }; + + typedef sequence < Resource > Resources; + + struct SharedResource { + string name; + ::CORBA::StringSeq resourceType; + ::CORBA::ULongSeq nodeRef; + SatisfierProperties property; + }; + + typedef sequence < SharedResource > SharedResources; + + struct Node { + string name; + string label; + ::CORBA::ULongSeq sharedResourceRef; + ::CORBA::ULongSeq connectionRef; + Resources resource; + }; + + typedef sequence < Node > Nodes; + + struct Interconnect { + string name; + string label; + ::CORBA::ULongSeq connectionRef; + ::CORBA::ULongSeq connectRef; + Resources resource; + }; + + typedef sequence < Interconnect > Interconnects; + + struct Bridge { + string name; + string label; + ::CORBA::ULongSeq connectRef; + Resources resource; + }; + + typedef sequence < Bridge > Bridges; + + struct Domain { + string UUID; + string label; + SharedResources sharedResource; + Nodes node; + Interconnects interconnect; + Bridges bridge; + Properties infoProperty; + }; +}; + +#endif /* DEPLOYMENT_TARGETDATA_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_TargetManager.idl b/modules/CIAO/DAnCE/Deployment/Deployment_TargetManager.idl new file mode 100644 index 00000000000..32de3a9f0e9 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_TargetManager.idl @@ -0,0 +1,34 @@ +// $Id$ + +#ifndef TARGETMANAGER_IDL +#define TARGETMANAGER_IDL + +#include "DAnCE/Deployment/Deployment_TargetData.idl" +#include "DAnCE/Deployment/Deployment_DeploymentPlan.idl" +#include "DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl" + +module Deployment { + enum DomainUpdateKind { + Add, + Delete, + UpdateAll, + UpdateDynamic + }; + + interface TargetManager { + Domain getAllResources (); + + Domain getAvailableResources (); + + ResourceCommitmentManager createResourceCommitment (in ResourceAllocations resources) + raises (ResourceCommitmentFailure); + + void destroyResourceCommitment (in ResourceCommitmentManager manager); + + void updateDomain ( in ::CORBA::StringSeq elements, + in Domain domainSubset, + in DomainUpdateKind updateKind); + }; +}; + +#endif /* TARGETMANAGER_IDL */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_common.h b/modules/CIAO/DAnCE/Deployment/Deployment_common.h new file mode 100644 index 00000000000..dfd44797069 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_common.h @@ -0,0 +1,63 @@ +// $Id$ + +/** + * @file Deployment_common.h + * + * This file collects common type definitions used across different + * objects of DAnCE toolchain. + * + * @author Gan Deng + */ + +#ifndef DANCE_COMMON_H +#define DANCE_COMMON_H +#include /**/ "ace/pre.h" + +#include "ace/config-all.h" +#include "ace/Hash_Map_Manager_T.h" +#include "tao/AnyTypeCode/Any.h" +#include "Deployment/Deployment_ConnectionC.h" + +#if !defined ACE_LACKS_PRAGMA_ONCE +#pragma once +#endif /* ! ACE_LACKS_PRAGMA_ONCE */ + +/// A struct which captures the binding information about a component + +namespace DAnCE +{ + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> PROPERTY_MAP; + + /// A struct which captures the compnent binding information, which + /// is useful for inter-assembly connection setup + typedef struct _component_binding + { + _component_binding () + { + providedReference_ = 0; + } + + ACE_CString name_; + ACE_CString plan_uuid_; + ACE_CString node_; + + Deployment::Connections_var providedReference_; + + bool operator==(const struct _component_binding & comp) + { + if (this->name_ == comp.name_ && + this->plan_uuid_ == comp.plan_uuid_ && + this->node_ == comp.node_) + return true; + else + return false; + } + } Component_Binding_Info; +} + +#include /**/ "ace/post.h" +#endif /* DANCE_COMMON_H */ diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_stub_export.h b/modules/CIAO/DAnCE/Deployment/Deployment_stub_export.h new file mode 100644 index 00000000000..12985a68b5b --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_stub_export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s Deployment_stub +// ------------------------------ +#ifndef DEPLOYMENT_STUB_EXPORT_H +#define DEPLOYMENT_STUB_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DEPLOYMENT_STUB_HAS_DLL) +# define DEPLOYMENT_STUB_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DEPLOYMENT_STUB_HAS_DLL */ + +#if !defined (DEPLOYMENT_STUB_HAS_DLL) +# define DEPLOYMENT_STUB_HAS_DLL 1 +#endif /* ! DEPLOYMENT_STUB_HAS_DLL */ + +#if defined (DEPLOYMENT_STUB_HAS_DLL) && (DEPLOYMENT_STUB_HAS_DLL == 1) +# if defined (DEPLOYMENT_STUB_BUILD_DLL) +# define Deployment_stub_Export ACE_Proper_Export_Flag +# define DEPLOYMENT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DEPLOYMENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DEPLOYMENT_STUB_BUILD_DLL */ +# define Deployment_stub_Export ACE_Proper_Import_Flag +# define DEPLOYMENT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DEPLOYMENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DEPLOYMENT_STUB_BUILD_DLL */ +#else /* DEPLOYMENT_STUB_HAS_DLL == 1 */ +# define Deployment_stub_Export +# define DEPLOYMENT_STUB_SINGLETON_DECLARATION(T) +# define DEPLOYMENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DEPLOYMENT_STUB_HAS_DLL == 1 */ + +// Set DEPLOYMENT_STUB_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DEPLOYMENT_STUB_NTRACE) +# if (ACE_NTRACE == 1) +# define DEPLOYMENT_STUB_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DEPLOYMENT_STUB_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DEPLOYMENT_STUB_NTRACE */ + +#if (DEPLOYMENT_STUB_NTRACE == 1) +# define DEPLOYMENT_STUB_TRACE(X) +#else /* (DEPLOYMENT_STUB_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DEPLOYMENT_STUB_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DEPLOYMENT_STUB_NTRACE == 1) */ + +#endif /* DEPLOYMENT_STUB_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Deployment/Deployment_svnt_export.h b/modules/CIAO/DAnCE/Deployment/Deployment_svnt_export.h new file mode 100644 index 00000000000..e403dbf0c41 --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Deployment_svnt_export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s Deployment_svnt +// ------------------------------ +#ifndef DEPLOYMENT_SVNT_EXPORT_H +#define DEPLOYMENT_SVNT_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DEPLOYMENT_SVNT_HAS_DLL) +# define DEPLOYMENT_SVNT_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DEPLOYMENT_SVNT_HAS_DLL */ + +#if !defined (DEPLOYMENT_SVNT_HAS_DLL) +# define DEPLOYMENT_SVNT_HAS_DLL 1 +#endif /* ! DEPLOYMENT_SVNT_HAS_DLL */ + +#if defined (DEPLOYMENT_SVNT_HAS_DLL) && (DEPLOYMENT_SVNT_HAS_DLL == 1) +# if defined (DEPLOYMENT_SVNT_BUILD_DLL) +# define Deployment_svnt_Export ACE_Proper_Export_Flag +# define DEPLOYMENT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DEPLOYMENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DEPLOYMENT_SVNT_BUILD_DLL */ +# define Deployment_svnt_Export ACE_Proper_Import_Flag +# define DEPLOYMENT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DEPLOYMENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DEPLOYMENT_SVNT_BUILD_DLL */ +#else /* DEPLOYMENT_SVNT_HAS_DLL == 1 */ +# define Deployment_svnt_Export +# define DEPLOYMENT_SVNT_SINGLETON_DECLARATION(T) +# define DEPLOYMENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DEPLOYMENT_SVNT_HAS_DLL == 1 */ + +// Set DEPLOYMENT_SVNT_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DEPLOYMENT_SVNT_NTRACE) +# if (ACE_NTRACE == 1) +# define DEPLOYMENT_SVNT_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DEPLOYMENT_SVNT_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DEPLOYMENT_SVNT_NTRACE */ + +#if (DEPLOYMENT_SVNT_NTRACE == 1) +# define DEPLOYMENT_SVNT_TRACE(X) +#else /* (DEPLOYMENT_SVNT_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DEPLOYMENT_SVNT_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DEPLOYMENT_SVNT_NTRACE == 1) */ + +#endif /* DEPLOYMENT_SVNT_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Deployment/Module_Main.h b/modules/CIAO/DAnCE/Deployment/Module_Main.h new file mode 100644 index 00000000000..35b4ba4336d --- /dev/null +++ b/modules/CIAO/DAnCE/Deployment/Module_Main.h @@ -0,0 +1,90 @@ +// $Id$ +/** + * @file Module_Main.h + * @author William R. Otte + * + * Provides a generic main function used by individual modules. + */ + +#ifndef DANCE_MODULE_MAIN_H_ +#define DANCE_MODULE_MAIN_H_ + +#include "ace/Dynamic_Service.h" +#include "tao/ORB.h" +#include "tao/Object.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Logger/Logger_Service.h" + +#ifndef DANCE_MODULE_MAIN_CLASS_NAME +#error Module_Main.h used without DANCE_MODULE_MAIN_CLASS_NAME defined. +#endif + +//#ifndef DANCE_MODULE_MAIN_INCLUDE_NAME +//#error Module_Main.h used without DANCE_MODULE_MAIN_INCLUDE_NAME defined. +//#endif + +//#include DANCE_MODULE_MAIN_INCLUDE_NAME + +int +ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + DANCE_DISABLE_TRACE (); + + int retval = 0; + + try + { + DAnCE::Logger_Service + * dlf = ACE_Dynamic_Service::instance ("DAnCE_Logger"); + + if (dlf) + { + dlf->init (argc, argv); + } + + DANCE_DEBUG (6, (LM_TRACE, DLINFO + ACE_TEXT("Module_main.h - initializing ORB\n"))); + + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); + + DANCE_DEBUG (6, (LM_TRACE, DLINFO + ACE_TEXT("Module_Main.h - initializing module instance\n"))); + + DANCE_MODULE_MAIN_CLASS_NAME module_instance; + + CORBA::Object_var obj = module_instance.create_object (orb.in (), + argc, + argv); + +#ifndef DANCE_MODULE_MAIN_SKIP_ORB_RUN + if (!CORBA::is_nil (obj.in ())) + { + orb->run (); + } + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("Module_Main.h - Error: No object created.\n"))); + retval = -1; + } + DANCE_DEBUG (6, (LM_TRACE, DLINFO + ACE_TEXT("Module_Main.h - ORB event loop finished, exiting.\n"))); +#endif + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Module_Main.h"); + retval = -1; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, "Module_Main.h - Error: Unknown exception.\n")); + retval = -1; + } + + return retval; +} + +#endif diff --git a/modules/CIAO/DAnCE/DomainApplication/DomainApplication.mpc b/modules/CIAO/DAnCE/DomainApplication/DomainApplication.mpc new file mode 100644 index 00000000000..902d494ccba --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplication/DomainApplication.mpc @@ -0,0 +1,14 @@ +// -*- MPC -*- +// $Id$ + + +project: dance_lib, ciao_output, dance_domainapplication_skel, \ + dance_nodeapplication_stub, dance_nodeapplicationmanager_stub, dance_logger { + sharedname = DAnCE_DomainApplication + dynamicflags = DOMAIN_APPLICATION_BUILD_DLL + + Source_Files { + Domain_Application_Impl.cpp + } +} + diff --git a/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Export.h b/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Export.h new file mode 100644 index 00000000000..fe9b0133ebb --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl Domain_Application +// ------------------------------ +#ifndef DOMAIN_APPLICATION_EXPORT_H +#define DOMAIN_APPLICATION_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DOMAIN_APPLICATION_HAS_DLL) +# define DOMAIN_APPLICATION_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DOMAIN_APPLICATION_HAS_DLL */ + +#if !defined (DOMAIN_APPLICATION_HAS_DLL) +# define DOMAIN_APPLICATION_HAS_DLL 1 +#endif /* ! DOMAIN_APPLICATION_HAS_DLL */ + +#if defined (DOMAIN_APPLICATION_HAS_DLL) && (DOMAIN_APPLICATION_HAS_DLL == 1) +# if defined (DOMAIN_APPLICATION_BUILD_DLL) +# define Domain_Application_Export ACE_Proper_Export_Flag +# define DOMAIN_APPLICATION_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DOMAIN_APPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DOMAIN_APPLICATION_BUILD_DLL */ +# define Domain_Application_Export ACE_Proper_Import_Flag +# define DOMAIN_APPLICATION_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DOMAIN_APPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DOMAIN_APPLICATION_BUILD_DLL */ +#else /* DOMAIN_APPLICATION_HAS_DLL == 1 */ +# define Domain_Application_Export +# define DOMAIN_APPLICATION_SINGLETON_DECLARATION(T) +# define DOMAIN_APPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DOMAIN_APPLICATION_HAS_DLL == 1 */ + +// Set DOMAIN_APPLICATION_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DOMAIN_APPLICATION_NTRACE) +# if (ACE_NTRACE == 1) +# define DOMAIN_APPLICATION_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DOMAIN_APPLICATION_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DOMAIN_APPLICATION_NTRACE */ + +#if (DOMAIN_APPLICATION_NTRACE == 1) +# define DOMAIN_APPLICATION_TRACE(X) +#else /* (DOMAIN_APPLICATION_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DOMAIN_APPLICATION_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DOMAIN_APPLICATION_NTRACE == 1) */ + +#endif /* DOMAIN_APPLICATION_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp b/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp new file mode 100644 index 00000000000..b4110075026 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.cpp @@ -0,0 +1,121 @@ +// $Id$ + +#include "Domain_Application_Impl.h" + +#include "ace/streams.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace DAnCE +{ + + DomainApplication_Impl::DomainApplication_Impl ( + TNam2Nm & nams, + const Deployment::Properties & configProperty, + Deployment::Connections& conn) + : nams_ (nams) + { + DANCE_TRACE("DomainApplication_Impl::DomainApplication_Impl"); + this->startLaunch (configProperty); + conn = this->connections_; + } + + DomainApplication_Impl::~DomainApplication_Impl() + { + DANCE_TRACE ("DomainApplication_Impl::~DomainApplication_Impl()"); + + try + { + for (TApp2Mgr::iterator iter = this->node_applications_.begin(); + iter != this->node_applications_.end(); + ++iter) + { + (*iter).int_id_->destroyApplication ( (*iter).ext_id_.in()); + } + this->node_applications_.unbind_all(); + } + catch (CORBA::Exception &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplication_Impl::~DomainApplication_Impl - ") + ACE_TEXT("caught a CORBA exception %C(%C) \"%C\"\n"), + e._name(), e._rep_id(), e._info().c_str())); + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DomainApplication_Impl::~DomainApplication_Impl - ") + ACE_TEXT("caught an unknown exception.\n"))); + } + } + + void + DomainApplication_Impl::finishLaunch (const Deployment::Connections & connections, + CORBA::Boolean start) + { + DANCE_TRACE ("DomainApplication_Impl::finishLaunch"); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("DomainApplication_impl::finishLaunch - ") + ACE_TEXT("connections length is %d\n"), connections.length())); + for (TApp2Mgr::iterator iter = this->node_applications_.begin(); + iter != this->node_applications_.end(); + ++iter) + { + (*iter).ext_id_->finishLaunch (connections, start); + } + } + + void + DomainApplication_Impl::start () + { + DANCE_TRACE ("DomainApplication_Impl::start"); + for (TApp2Mgr::iterator iter = this->node_applications_.begin(); + iter != this->node_applications_.end(); + ++iter) + { + (*iter).ext_id_->start (); + } + } + + void + DomainApplication_Impl::startLaunch ( + const Deployment::Properties & configProperty) + { + DANCE_TRACE ("DomainApplication_Impl::startLaunch"); + + for (TNam2Nm::iterator iter = this->nams_.begin(); + iter != this->nams_.end(); + ++iter) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplication_Impl::startLaunch - ") + ACE_TEXT("Invoking startLaunch on an application\n"))); + ::Deployment::Connections_var conn; + Deployment::Application_ptr na = (*iter).ext_id_->startLaunch (configProperty, conn.out()); + //Deployment::NodeApplication_ptr na = Deployment::NodeApplication::_narrow (a); + if (CORBA::is_nil (na)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplication_Impl::startLaunch -") + ACE_TEXT("Received nil object reference from startLaunch on node managers.\n"))); + throw Deployment::StartError(); + } + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplication_Impl::startLaunch - ") + ACE_TEXT("Application startLaunch succeeded, received %u connections\n"), + conn->length ())); + + this->node_applications_.bind (na, (*iter).ext_id_); + + size_t before = this->connections_.length(); + this->connections_.length (before + conn->length()); + for (size_t i = 0; i < conn->length(); ++i) + { + this->connections_[before+i] = (*conn) [i]; + } + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("DomainApplication_Impl::startLaunch - ") + ACE_TEXT("Received %u connections from applications\n"), + this->connections_.length ())); + } + +} // DAnCE + diff --git a/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.h b/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.h new file mode 100644 index 00000000000..4d6a848e8f8 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplication/Domain_Application_Impl.h @@ -0,0 +1,81 @@ +// $Id$ +/**======================================================== + * + * @file Domain_Application_Impl.h + * + * @brief This file contains the implementation of + * the DomainApplication interface. + * + * @author Vinzenz Tornow + *========================================================*/ + +#ifndef DOMAIN_APPLICATION_H +#define DOMAIN_APPLICATION_H +#include /**/ "ace/pre.h" + +#include "Domain_Application_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Deployment/Deployment_DomainApplicationS.h" +#include "ace/Map_Manager.h" +#include "Deployment/Deployment_NodeApplicationC.h" +#include "Deployment/Deployment_NodeApplicationManagerC.h" +#include "Deployment/Deployment_NodeManagerC.h" + +namespace DAnCE + { + + /** + * @class DomainApplication_Impl + * + * @brief This class implements the DomainApplication interface. + * + **/ + class Domain_Application_Export DomainApplication_Impl + : public virtual POA_Deployment::DomainApplication + { + public: + typedef ACE_Map_Manager < Deployment::NodeApplicationManager_var, + Deployment::NodeManager_var, + ACE_Null_Mutex > TNam2Nm; + typedef ACE_Map_Manager < Deployment::Application_var, + Deployment::NodeApplicationManager_var, + ACE_Null_Mutex > TApp2Mgr; + + DomainApplication_Impl (TNam2Nm& nams, + const Deployment::Properties & configProperty, + Deployment::Connections& conn); + ~DomainApplication_Impl(); + + void startLaunch (const Deployment::Properties & configProperty); + + /** + * The second step in launching an application in the + * domain-level. If the start parameter is true, the application + * is started as well. Raises the StartError exception if + * launching or starting the application fails. + */ + virtual void + finishLaunch (const Deployment::Connections & connections, + CORBA::Boolean start); + /** + * Starts the application. Raises the StartError exception if + * starting the application fails. + */ + virtual void start (); + + private: + TApp2Mgr node_applications_; + Deployment::Connections connections_; + TNam2Nm & nams_; + Deployment::Application_var na_; + }; +} // DAnCE + +#include /**/ "ace/post.h" +#endif // DOMAIN_APPLICATION_H + + diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc new file mode 100644 index 00000000000..bcff8138ea0 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc @@ -0,0 +1,19 @@ +// -*- MPC -*- +// $Id$ + +project : dance_lib, ciao_output, dance_domainapplicationmanager_skel, dance_domainapplication, dance_nodemanager_stub, naming { + sharedname = DAnCE_DomainApplicationManager + dynamicflags = DOMAINAPPLICATIONMANAGER_BUILD_DLL + + Source_Files { + DomainApplicationManager_Impl.cpp + Node_Locator.cpp + } + + Header_Files { + Node_Locator.h + DomainApplicationManager_Impl.h + DomainApplicationManager_Export.h + } +} + diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h new file mode 100644 index 00000000000..31fa9b914b7 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s DomainApplicationManager +// ------------------------------ +#ifndef DOMAINAPPLICATIONMANAGER_EXPORT_H +#define DOMAINAPPLICATIONMANAGER_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DOMAINAPPLICATIONMANAGER_HAS_DLL) +# define DOMAINAPPLICATIONMANAGER_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DOMAINAPPLICATIONMANAGER_HAS_DLL */ + +#if !defined (DOMAINAPPLICATIONMANAGER_HAS_DLL) +# define DOMAINAPPLICATIONMANAGER_HAS_DLL 1 +#endif /* ! DOMAINAPPLICATIONMANAGER_HAS_DLL */ + +#if defined (DOMAINAPPLICATIONMANAGER_HAS_DLL) && (DOMAINAPPLICATIONMANAGER_HAS_DLL == 1) +# if defined (DOMAINAPPLICATIONMANAGER_BUILD_DLL) +# define DomainApplicationManager_Export ACE_Proper_Export_Flag +# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DOMAINAPPLICATIONMANAGER_BUILD_DLL */ +# define DomainApplicationManager_Export ACE_Proper_Import_Flag +# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DOMAINAPPLICATIONMANAGER_BUILD_DLL */ +#else /* DOMAINAPPLICATIONMANAGER_HAS_DLL == 1 */ +# define DomainApplicationManager_Export +# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) +# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DOMAINAPPLICATIONMANAGER_HAS_DLL == 1 */ + +// Set DOMAINAPPLICATIONMANAGER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DOMAINAPPLICATIONMANAGER_NTRACE) +# if (ACE_NTRACE == 1) +# define DOMAINAPPLICATIONMANAGER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DOMAINAPPLICATIONMANAGER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DOMAINAPPLICATIONMANAGER_NTRACE */ + +#if (DOMAINAPPLICATIONMANAGER_NTRACE == 1) +# define DOMAINAPPLICATIONMANAGER_TRACE(X) +#else /* (DOMAINAPPLICATIONMANAGER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DOMAINAPPLICATIONMANAGER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DOMAINAPPLICATIONMANAGER_NTRACE == 1) */ + +#endif /* DOMAINAPPLICATIONMANAGER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp new file mode 100644 index 00000000000..7654e4c4f37 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp @@ -0,0 +1,469 @@ +// $Id$ + +#include "DomainApplicationManager_Impl.h" +#include "Deployment/Deployment_ConnectionC.h" +#include "DAnCE/Logger/Log_Macros.h" + +using namespace DAnCE; + +DomainApplicationManager_Impl::DomainApplicationManager_Impl ( + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const Deployment::DeploymentPlan& plan, + Node_Locator & nodes) + : orb_ (CORBA::ORB::_duplicate (orb)) + , poa_ (PortableServer::POA::_duplicate (poa)) + , plan_ (plan) + , nodes_ (nodes) +{ + DANCE_TRACE( "DomainApplicationManager_Impl::DomainApplicationManager_Impl"); + + this->preparePlan(); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::DomainApplicationManager_Impl - ") + ACE_TEXT("Successfully prepared plan: %C\n"), this->plan_.UUID.in())); +} + +DomainApplicationManager_Impl::~DomainApplicationManager_Impl() +{ + DANCE_TRACE( "DomainApplicationManager_Impl::~DomainApplicationManager_Impl()"); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::~DomainApplicationManager_Impl - ") + ACE_TEXT("Destroying %u applications\n"), this->running_app_.size())); + while (0 < this->running_app_.size()) + { + DomainApplication_Impl* p = this->running_app_[this->running_app_.size()-1]; + Deployment::DomainApplication_var app = + Deployment::DomainApplication::_narrow (this->poa_->servant_to_reference (p)); + PortableServer::ObjectId_var id = this->poa_->reference_to_id (app); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplicationManager_impl::~DomainApplicationManager_impl - ") + ACE_TEXT("deactivating DomainApplication object...\n"))); + this->poa_->deactivate_object (id); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("DomainApplicationManager_impl::~DomainApplicationManager_impl - ") + ACE_TEXT("deleting DomainApplication.\n"))); + this->running_app_.pop_back(); + delete p; + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("DomainApplicationManager_Impl::~DomainApplicationManager_Impl - ") + ACE_TEXT("Destroying %u managers\n"), this->sub_app_mgr_.current_size())); + for (DomainApplication_Impl::TNam2Nm::iterator iter = this->sub_app_mgr_.begin(); + iter != this->sub_app_mgr_.end(); + ++iter) + { + (*iter).int_id_->destroyManager ( (*iter).ext_id_.in()); + } + this->sub_app_mgr_.unbind_all(); +} + +Deployment::Application_ptr +DomainApplicationManager_Impl::startLaunch ( + const Deployment::Properties & configProperty, + Deployment::Connections_out providedReference) +{ + DANCE_TRACE( "DomainApplicationManager_impl::startLaunch"); + + ::Deployment::Connections_var connections; + ACE_NEW_THROW_EX (connections, + Deployment::Connections (), + CORBA::NO_MEMORY ()); + DomainApplication_Impl* app = 0; + ACE_NEW_THROW_EX (app, + DomainApplication_Impl (this->sub_app_mgr_, + configProperty, + connections.inout()), + CORBA::NO_MEMORY()); + + providedReference = connections._retn(); + + PortableServer::ObjectId_var id = this->poa_->activate_object (app); + this->running_app_.push_back(app); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::startLaunch - ") + ACE_TEXT("Successfully created DomainApplication\n"))); + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::startLaunch - ") + ACE_TEXT("Created %u provided references\n"), + providedReference->length ())); + + CORBA::Object_var ref = this->poa_->id_to_reference (id); + return Deployment::DomainApplication::_narrow (ref.in ()); +} + +void +DomainApplicationManager_Impl::destroyApplication ( + Deployment::Application_ptr application) +{ + DANCE_TRACE ( "DomainApplicationManager_Impl::destroyApplication"); + + try + { + for (size_t i = 0; i < this->running_app_.size(); ++i) + { + DomainApplication_Impl* p = this->running_app_[i]; + Deployment::DomainApplication_var app = + Deployment::DomainApplication::_narrow (this->poa_->servant_to_reference (p)); + if (application->_is_equivalent (app.in())) + { + PortableServer::ObjectId_var id = this->poa_->reference_to_id (application); + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") + ACE_TEXT("deactivating application object\n"))); + this->poa_->deactivate_object (id); + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") + ACE_TEXT("deleting application object\n"))); + delete p; + for (size_t j = i + 1; j < this->running_app_.size(); ++j) + { + this->running_app_[j-1] = this->running_app_[j]; + } + this->running_app_.pop_back(); + return; + } + } + } + catch (const Deployment::StopError &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") + ACE_TEXT("Propagating a received StopError exception\n"))); + throw e; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") + ACE_TEXT("Caught unknown exception."))); + throw Deployment::StopError(); + } + + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_impl::destroyApplication - ") + ACE_TEXT("Provided application reference unknown\n"))); + throw Deployment::StopError(); +} + +::Deployment::Applications * +DomainApplicationManager_Impl::getApplications () +{ + DANCE_TRACE ( "DomainApplicationManager_Impl::getApplications ()"); + + Deployment::Applications* running_app = 0; + ACE_NEW_THROW_EX (running_app, + Deployment::Applications(), + CORBA::NO_MEMORY()); + running_app->length (this->running_app_.size()); + CORBA::ULong index = 0; + for (size_t i = 0; i < this->running_app_.size(); ++i) + { + CORBA::Object_var ref = this->poa_->servant_to_reference (this->running_app_[i]); + (*running_app) [index++] = + Deployment::DomainApplication::_narrow (ref.in ()); + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("DomainApplicationManager_impl::getApplications - ") + ACE_TEXT("Returning %u running applications\n"), + running_app->length ())); + return running_app; +} + +::Deployment::DeploymentPlan * +DomainApplicationManager_Impl::getPlan () +{ + DANCE_TRACE ("DomainApplicationManager_Impl::getPlan ()"); + + Deployment::DeploymentPlan* plan = 0; + + ACE_NEW_THROW_EX (plan, + Deployment::DeploymentPlan (this->plan_), + CORBA::NO_MEMORY()); + + return plan; +} + +void +DomainApplicationManager_Impl::split_plan (const Deployment::DeploymentPlan & plan, + TNodePlans & sub_plans) +{ + DANCE_TRACE ( "DomainApplicationManager_Impl::split_plan"); + + DANCE_DEBUG (9, (LM_TRACE, ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("Creating sub-plans\n"))); + // Create empty sub-plans + for (CORBA::ULong i = 0; i < plan.instance.length(); ++i) + { + ACE_CString node = plan.instance[i].node.in(); + if (0 == sub_plans.find (node)) continue; + + ::Deployment::DeploymentPlan tmp_plan; + + // Construct the UUID for the child plan. + // Currently, this UUID consists of: + // The global UUID for the parent plan + the name of the node the + // child plan is to be installed on. + ACE_CString child_uuid (plan.UUID.in ()); + // child_uuid += "@"; CCM#61 + // child_uuid += node; + + tmp_plan.UUID = CORBA::string_dup (child_uuid.c_str()); + tmp_plan.implementation.length (0); + tmp_plan.instance.length (0); + tmp_plan.connection.length (0); + tmp_plan.externalProperty.length (0); + tmp_plan.dependsOn.length (0); + tmp_plan.artifact.length (0); + + // @@ There is an optimization point here, since we really don't have to + // pass the entire CIAOServerResources into each individual child plan. + tmp_plan.infoProperty = plan.infoProperty; + + sub_plans.bind (node, tmp_plan); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("Created sub-plan for node %C with UUID %C\n"), + node.c_str (), child_uuid.c_str ())); + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("First phase produced %u child plans, proceeding to second\n"), + sub_plans.current_size ())); + + // (1) Iterate over the field of the global DeploymentPlan + // structure. + // (2) Retrieve the necessary information to contruct the node-level + // plans one by one. + for (CORBA::ULong i = 0; i < plan.instance.length (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("Processing instance: %C\n"), plan.instance[i].name.in())); + // @@TODO Fill in the child deployment plan in the map. + // If the component instance already exists in the child plan, + // then we overwrite the existing instance, since the new instance + // might have different resource usage requirements. + + // Get the instance deployment description + const ::Deployment::InstanceDeploymentDescription & my_instance = plan.instance[i]; + + // Get the child plan. + ::Deployment::DeploymentPlan child_plan; + + if (0 != sub_plans.find (my_instance.node.in(), child_plan)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("ERROR: Unable to find sub-plan for instance %C\n"), + my_instance.node.in ())); + } + + // Fill in the contents of the child plan entry. + + // Append the "MonolithicDeploymentDescriptions implementation" + // field with a new "implementation", which is specified by the + // field of entry. NOTE: The + // field needs to be changed accordingly. + ::Deployment::MonolithicDeploymentDescription const & my_implementation + = plan.implementation[my_instance.implementationRef]; + + CORBA::ULong index_imp = child_plan.implementation.length (); + child_plan.implementation.length (++index_imp); + child_plan.implementation[index_imp-1] = my_implementation; + + // Initialize with the correct sequence length. + CORBA::ULongSeq ulong_seq; + ulong_seq.length (my_implementation.artifactRef.length ()); + + // Append the "ArtifactDeploymentDescriptions artifact" field + // with some new "artifacts", which is specified by the + // sequence of entry. + CORBA::ULong const impl_length = my_implementation.artifactRef.length (); + for (CORBA::ULong iter = 0; + iter < impl_length; + iter ++) + { + CORBA::ULong artifact_ref = my_implementation.artifactRef[iter]; + + // Fill in the field of the child plan + CORBA::ULong index_art = child_plan.artifact.length (); + child_plan.artifact.length (++index_art); + child_plan.artifact[index_art-1] = plan.artifact[artifact_ref]; + + // Fill in the artifactRef field of the MonolithicDeploymentDescription + ulong_seq[iter] = index_art - 1; + } + + // Change the field of the "implementation". + child_plan.implementation[index_imp-1].artifactRef = ulong_seq; + + // Append the "InstanceDeploymentDescription instance" field with + // a new "instance", which is almost the same as the "instance" in + // the global plan except the field. + // NOTE: The field needs to be changed accordingly. + CORBA::ULong index_ins = child_plan.instance.length (); + child_plan.instance.length (++index_ins); + child_plan.instance[index_ins-1] = my_instance; + + // Change the field of the "instance". + // @@ The implementationRef starts from 0. + // @@TODO: Below logic needs to be changed once we want to avoid + // duplicate for the optimization. + child_plan.instance[index_ins-1].implementationRef = index_imp - 1; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("Processing connections.\n"))); + // Copy connections + for (CORBA::ULong j = 0; j < plan.connection.length(); ++j) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("For connection: %C\n"), plan.connection[j].name.in())); + for (CORBA::ULong k = 0; k < plan.connection[j].internalEndpoint.length(); ++k) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("For endpoint: %C(%C)\n"), + plan.connection[j].internalEndpoint[k].portName.in(), + plan.connection[j].internalEndpoint[k].provider ? "provider" : "client")); + if (i == plan.connection[j].internalEndpoint[k].instanceRef) // the instance (i) is referenced by the connection + { + Deployment::PlanConnectionDescription * connection_copied = 0; + for (CORBA::ULong m = 0; m < child_plan.connection.length(); ++m) + { + if (ACE_OS::strcmp (plan.connection[j].name.in (), child_plan.connection[m].name.in ()) == 0) + { + connection_copied = &child_plan.connection[m]; + break; + } + } + + if (!connection_copied) + { + // Copy the connection + CORBA::ULong const index_con = child_plan.connection.length(); + child_plan.connection.length (index_con + 1); + child_plan.connection[index_con] = plan.connection[j]; + connection_copied = &child_plan.connection[index_con]; + connection_copied->internalEndpoint.length (0); + } + + // Copy the endpoint + CORBA::ULong const index_ep = connection_copied->internalEndpoint.length(); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT ("Copying endpoint %u from connection into endpoint %u\n"), + k, index_ep)); + + connection_copied->internalEndpoint.length (index_ep + 1); + connection_copied->internalEndpoint[index_ep] = plan.connection[j].internalEndpoint[k]; + connection_copied->internalEndpoint[index_ep].instanceRef = index_ins - 1; + } + } + } + sub_plans.rebind (my_instance.node.in(), child_plan); + } + + //Debug + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("Original plan connection count: %u\n"), plan.connection.length())); + CORBA::ULong cnt = 0; + for (TNodePlans::iterator it = sub_plans.begin(); it != sub_plans.end(); ++it) + { + cnt += (*it).int_id_.connection.length(); + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("DomainApplicationManager_Impl::split_plan - ") + ACE_TEXT("Child plans connection count: %u\n"), cnt)); +} + +void +DomainApplicationManager_Impl::preparePlan() +{ + DANCE_TRACE ("DomainApplicationManager_Impl::preparePlan()"); + + try + { + // Map of sub plans for each node + TNodePlans sub_plans; + // Splitting deployment plan on sub plans for each node + DomainApplicationManager_Impl::split_plan (this->plan_, sub_plans); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplicationManager_Impl::preparePlan - Plan successfully split\n"))); + // Executing preparePlan on each NodeManager described in DeploymentPlan + for (TNodePlans::iterator iter_plans = sub_plans.begin(); + iter_plans != sub_plans.end(); + ++iter_plans) + { + // Finding correspondent NodeManager + Deployment::NodeManager_var nm = this->nodes_.locate_node ((*iter_plans).ext_id_.c_str ());; + // If NodeManager not found throw StartError exception + if (CORBA::is_nil (nm.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("Deployment::StartError exception. NodeManager %C cannot be found\n"), + (*iter_plans).ext_id_.c_str())); + throw Deployment::StartError ( (*iter_plans).ext_id_.c_str(), + "NodeManager not found"); + } + + // Calling preparePlan for node, specified in current sub plan + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("Calling preparePlan on node %C\n"), + (*iter_plans).ext_id_.c_str())); + + Deployment::NodeApplicationManager_ptr nam + = nm->preparePlan ( (*iter_plans).int_id_, + Deployment::ResourceCommitmentManager::_nil()); + + if (CORBA::is_nil (nam)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("PreparePlan failed for node %C, returning a nil ") + ACE_TEXT("NodeApplicationManager pointer.\n"), + (*iter_plans).ext_id_.c_str())); + throw ::Deployment::StartError(); + } + // We save NAM reference ptr in TNodes vector were it places to var variable + this->sub_app_mgr_.bind (nam, nm); + + DANCE_DEBUG (8, (LM_INFO, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("Sucessfully prepared node %C for deployment\n"), + (*iter_plans).ext_id_.c_str())); + } + } + catch (Deployment::StartError &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("Propagating StartError exception caught here\n"))); + throw e; + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("Caught a CORBA exception, propagating StartError: %C\n"), + ex._info ().c_str ())); + throw ::Deployment::StartError (); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DomainApplicationManager_Impl::preparePlan - ") + ACE_TEXT("Caught unknown exception. Propagating StartError\n"))); + throw ::Deployment::StartError (); + } +} + + + + diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h new file mode 100644 index 00000000000..5b5b5b7306b --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h @@ -0,0 +1,70 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file DomainApplicationManager_Impl.h + * + * $Id$ + * + * @brief Implementation of POA_Deployment::DomainApplicationManager + * + * @author Erwin Gottlieb + */ +//============================================================================= + +#ifndef DOMAINAPPLICATIONMANAGER_IMPL_H_ +#define DOMAINAPPLICATIONMANAGER_IMPL_H_ + +#include "ace/Vector_T.h" +#include "ace/SStringfwd.h" +#include "ace/Map_Manager.h" +#include "DomainApplicationManager_Export.h" +#include "Node_Locator.h" +#include "Deployment/Deployment_NodeManagerC.h" +#include "DomainApplication/Domain_Application_Impl.h" +#include "Deployment/Deployment_DomainApplicationManagerS.h" + +namespace DAnCE + { + class DomainApplicationManager_Export DomainApplicationManager_Impl + : public virtual POA_Deployment::DomainApplicationManager + { + private: + typedef ACE_Map_Manager TNodePlans; + + public: + DomainApplicationManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const Deployment::DeploymentPlan& plan, + Node_Locator &nodes); + + virtual ~DomainApplicationManager_Impl(); + + virtual Deployment::Application_ptr startLaunch ( + const Deployment::Properties & configProperty, + Deployment::Connections_out providedReference); + + virtual void destroyApplication (Deployment::Application_ptr); + + virtual ::Deployment::Applications * getApplications (void); + + virtual ::Deployment::DeploymentPlan * getPlan (void); + + private: + CORBA::ORB_var orb_; + PortableServer::POA_var poa_; + const Deployment::DeploymentPlan plan_; + DomainApplication_Impl::TNam2Nm sub_app_mgr_; + Node_Locator &nodes_; + typedef ACE_Vector TApplications; + TApplications running_app_; + + void split_plan (const Deployment::DeploymentPlan & plan, + TNodePlans & sub_plans); + + void preparePlan(); + }; + +}//DAnCE + +#endif /*DOMAINAPPLICATIONMANAGER_IMPL_H_*/ diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.cpp b/modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.cpp new file mode 100644 index 00000000000..301973fa9e8 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.cpp @@ -0,0 +1,161 @@ +// $Id$ + +#include "Node_Locator.h" +#include "ace/Read_Buffer.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace DAnCE +{ + Node_Locator::Node_Locator (CORBA::ORB_ptr orb, + CosNaming::NamingContext_ptr nc) + : orb_ (CORBA::ORB::_duplicate (orb)), + nc_ (CosNaming::NamingContext::_duplicate (nc)) + { + } + + ::Deployment::NodeManager_ptr + Node_Locator::locate_node (const char *name) + { + ACE_CString ior; + + if (this->nodes_.find (name, ior) == 0) + { + return this->resolve_ior (name, ior.c_str ()); + } + else + { + return this->ns_lookup (name); + } + } + + bool + Node_Locator::process_node_map (const char *filename) + { + DANCE_TRACE ("Node_Locator::process_node_map"); + + if (!filename) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::process_node_map - ") + ACE_TEXT("Error: Provided with nil filename\n"))); + return false; + } + + FILE *inf = ACE_OS::fopen (filename, ACE_TEXT("r")); + + if (!inf) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::process_node_map - ") + ACE_TEXT("Fail to open node manager map data file: <%s>\n"), + filename)); + return false; + } + + ACE_Read_Buffer reader (inf, true); + + char * string = 0; + // Read from the file line by line + while ((string = reader.read ('\n')) != 0) + { + if (ACE_OS::strlen (string) == 0) continue; + + // Search from the right to the first space + const char* ior_start = ACE_OS::strrchr (string, ' '); + // Search from the left to the first space + const char* dest_end = ACE_OS::strchr (string, ' '); + + // The destination is first followed by some spaces + ACE_CString destination (string, dest_end - string); + // And then the IOR + ACE_CString ior (ior_start + 1, ACE_OS::strlen (ior_start + 1)); + reader.alloc ()->free (string); + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("Node_Locator::process_node_map - ") + ACE_TEXT("Storing IOR %C for destination %C\n"), + ior.c_str (), destination.c_str ())); + this->nodes_.bind (destination, ior); + } + + return true; + } + + ::Deployment::NodeManager_ptr + Node_Locator::resolve_ior (const char *name, const char *ior) + { + DANCE_TRACE ("Node_Locator::resolve_ior"); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Locator::resolve_ior - ") + ACE_TEXT("Resolving ior %C for destination %C\n"), + ior, name)); + + CORBA::Object_var obj = this->orb_->string_to_object (ior); + + ::Deployment::NodeManager_var nm = ::Deployment::NodeManager::_narrow (obj.in ()); + + if (CORBA::is_nil (nm.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::resolve_ior - ") + ACE_TEXT("Error: Unable to retrieve reference for destination ") + ACE_TEXT("%C and ior %C\n"), + name, ior)); + } + + return nm._retn (); + } + + void + Node_Locator::store_ior (const char *name, const char *ior) + { + DANCE_TRACE ("Node_Locator::store_ior"); + this->nodes_.bind (name, ior); + } + + ::Deployment::NodeManager_ptr + Node_Locator::ns_lookup (const char *nodename) + { + DANCE_TRACE ("Node_Locator::ns_lookup"); + + if (CORBA::is_nil (this->nc_.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::ns_lookup - ") + ACE_TEXT("Nameservice lookup of %C failed because there is no naming service.\n"), + nodename)); + return ::Deployment::NodeManager::_nil (); + } + + try + { + CosNaming::Name name; + name.length (1); + + name[0].id = nodename; + name[0].kind = "NodeManager"; + + CORBA::Object_var obj = this->nc_->resolve (name); + ::Deployment::NodeManager_var nm = ::Deployment::NodeManager::_narrow (obj.in ()); + + if (CORBA::is_nil (nm.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::ns_lookup - ") + ACE_TEXT("Unable to narrow provided reference for node %C\n"), + nodename)); + } + + return nm._retn (); + } + catch (const CORBA::Exception &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::ns_lookup - ") + ACE_TEXT("Caught CORBA exception while looking up name %C:%C\n"), + nodename, e._info ().c_str ())); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Locator::ns_lookup - ") + ACE_TEXT("Caught unexpected exception while looking up name %C\n"), + nodename)); + } + + return ::Deployment::NodeManager::_nil (); + } +} + diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.h b/modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.h new file mode 100644 index 00000000000..ce7401864e3 --- /dev/null +++ b/modules/CIAO/DAnCE/DomainApplicationManager/Node_Locator.h @@ -0,0 +1,55 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Node_Locator.h + * + * $Id$ + * + * @brief Locates NodeManager instances. + * + * @author William R. Otte + */ +//============================================================================= + +#ifndef NODE_LOCATOR_H_ +#define NODE_LOCATOR_H_ + +#include "ace/Map_Manager.h" +#include "orbsvcs/orbsvcs/CosNamingC.h" +#include "tao/ORB.h" +#include "DAnCE/Deployment/Deployment_NodeManagerC.h" +#include "DomainApplicationManager/DomainApplicationManager_Export.h" + +namespace DAnCE +{ + class DomainApplicationManager_Export Node_Locator + { + public: + Node_Locator (CORBA::ORB_ptr orb, + CosNaming::NamingContext_ptr nc); + + ::Deployment::NodeManager_ptr locate_node (const char *name); + + bool process_node_map (const char *file); + + void store_ior (const char *name, const char *ior); + + private: + ::Deployment::NodeManager_ptr resolve_ior (const char *name, + const char *ior); + + ::Deployment::NodeManager_ptr ns_lookup (const char *name); + + typedef ACE_Map_Manager NODEMAP; + + NODEMAP nodes_; + CORBA::ORB_var orb_; + CosNaming::NamingContext_var nc_; + }; + +} + +#endif /* NODE_LOCATOR_H_ */ diff --git a/modules/CIAO/DAnCE/ExecutionManager/DAnCE_ExecutionManager_Module_Export.h b/modules/CIAO/DAnCE/ExecutionManager/DAnCE_ExecutionManager_Module_Export.h new file mode 100644 index 00000000000..6ab710d4044 --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/DAnCE_ExecutionManager_Module_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_ExecutionManager_Module +// ------------------------------ +#ifndef DANCE_EXECUTIONMANAGER_MODULE_EXPORT_H +#define DANCE_EXECUTIONMANAGER_MODULE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL) +# define DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL */ + +#if !defined (DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL) +# define DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL 1 +#endif /* ! DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL */ + +#if defined (DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL) && (DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL == 1) +# if defined (DANCE_EXECUTIONMANAGER_MODULE_BUILD_DLL) +# define DAnCE_ExecutionManager_Module_Export ACE_Proper_Export_Flag +# define DANCE_EXECUTIONMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_EXECUTIONMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_EXECUTIONMANAGER_MODULE_BUILD_DLL */ +# define DAnCE_ExecutionManager_Module_Export ACE_Proper_Import_Flag +# define DANCE_EXECUTIONMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_EXECUTIONMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_EXECUTIONMANAGER_MODULE_BUILD_DLL */ +#else /* DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL == 1 */ +# define DAnCE_ExecutionManager_Module_Export +# define DANCE_EXECUTIONMANAGER_MODULE_SINGLETON_DECLARATION(T) +# define DANCE_EXECUTIONMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_EXECUTIONMANAGER_MODULE_HAS_DLL == 1 */ + +// Set DANCE_EXECUTIONMANAGER_MODULE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_EXECUTIONMANAGER_MODULE_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_EXECUTIONMANAGER_MODULE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_EXECUTIONMANAGER_MODULE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_EXECUTIONMANAGER_MODULE_NTRACE */ + +#if (DANCE_EXECUTIONMANAGER_MODULE_NTRACE == 1) +# define DANCE_EXECUTIONMANAGER_MODULE_TRACE(X) +#else /* (DANCE_EXECUTIONMANAGER_MODULE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_EXECUTIONMANAGER_MODULE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_EXECUTIONMANAGER_MODULE_NTRACE == 1) */ + +#endif /* DANCE_EXECUTIONMANAGER_MODULE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc new file mode 100644 index 00000000000..0b5531f05cb --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc @@ -0,0 +1,23 @@ +// -*- MPC -*- +// $Id$ + +project(ExecutionManager_Module): dance_lib, taolib, iortable, ciao_output, utils, strategies, naming, dance_executionmanager_skel, dance_domainapplicationmanager, dance_deployment_svnt, avoids_minimum_corba, ciao_executionmanager_skel { + sharedname = DAnCE_ExecutionManager + dynamicflags = EXECUTIONMANAGER_BUILD_DLL DANCE_EXECUTIONMANAGER_MODULE_BUILD_DLL + + Source_Files { + ExecutionManager_Impl.cpp + ExecutionManager_Module.cpp + } +} + +project(Execution_Manager_Exec) : dance_exe, naming_serv, ciao_executionmanager_skel, \ + dance_domainapplicationmanager, dance_executionmanager_skel, utils, dance_logger, avoids_minimum_corba { + exename = dance_execution_manager + after += ExecutionManager_Module + libs += DAnCE_ExecutionManager + + Source_Files { + Execution_Manager_Exec.cpp + } +} diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Export.h b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Export.h new file mode 100644 index 00000000000..8633f5d5400 --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Export.h @@ -0,0 +1,57 @@ +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl ExecutionManager +// ------------------------------ +#ifndef EXECUTIONMANAGER_EXPORT_H +#define EXECUTIONMANAGER_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (EXECUTIONMANAGER_HAS_DLL) +# define EXECUTIONMANAGER_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && EXECUTIONMANAGER_HAS_DLL */ + +#if !defined (EXECUTIONMANAGER_HAS_DLL) +# define EXECUTIONMANAGER_HAS_DLL 1 +#endif /* ! EXECUTIONMANAGER_HAS_DLL */ + +#if defined (EXECUTIONMANAGER_HAS_DLL) && (EXECUTIONMANAGER_HAS_DLL == 1) +# if defined (EXECUTIONMANAGER_BUILD_DLL) +# define ExecutionManager_Export ACE_Proper_Export_Flag +# define EXECUTIONMANAGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define EXECUTIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* EXECUTIONMANAGER_BUILD_DLL */ +# define ExecutionManager_Export ACE_Proper_Import_Flag +# define EXECUTIONMANAGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define EXECUTIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* EXECUTIONMANAGER_BUILD_DLL */ +#else /* EXECUTIONMANAGER_HAS_DLL == 1 */ +# define ExecutionManager_Export +# define EXECUTIONMANAGER_SINGLETON_DECLARATION(T) +# define EXECUTIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* EXECUTIONMANAGER_HAS_DLL == 1 */ + +// Set EXECUTIONMANAGER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (EXECUTIONMANAGER_NTRACE) +# if (ACE_NTRACE == 1) +# define EXECUTIONMANAGER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define EXECUTIONMANAGER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !EXECUTIONMANAGER_NTRACE */ + +#if (EXECUTIONMANAGER_NTRACE == 1) +# define EXECUTIONMANAGER_TRACE(X) +#else /* (EXECUTIONMANAGER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define EXECUTIONMANAGER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (EXECUTIONMANAGER_NTRACE == 1) */ + +#endif /* EXECUTIONMANAGER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp new file mode 100644 index 00000000000..1df8c9bb820 --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.cpp @@ -0,0 +1,159 @@ +//--*C++*-- +// $Id$ + +#include "ExecutionManager_Impl.h" + +#include "Config_Handlers/DnC_Dump.h" +#include "DAnCE/Logger/Log_Macros.h" + + +using namespace DAnCE; + +ExecutionManager_Impl::ExecutionManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + CosNaming::NamingContext_ptr nc) + : orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + locator_ (orb, nc) +{ + DANCE_TRACE ( "ExecutionManager_Impl::ExecutionManager_Impl"); +} + +ExecutionManager_Impl::~ExecutionManager_Impl() +{ + DANCE_TRACE ( "ExecutionManager_Impl::~ExecutionManager_Impl"); + for (TDomainManagers::iterator iter = this->managers_.begin(); + iter != this->managers_.end(); + ++iter) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("ExecutionManager_Impl::~ExecutionManager_Impl - ") + ACE_TEXT("deactivating DAM \"%C\"\n"), (*iter).ext_id_.c_str())); + PortableServer::ObjectId_var id = this->poa_->servant_to_id ( (*iter).int_id_); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("ExecutionManager_Impl::~ExecutionManager_Impl - ") + ACE_TEXT("before deactivate_object...\n"))); + this->poa_->deactivate_object (id.in()); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("ExecutionManager_Impl::~ExecutionManager_Impl - ") + ACE_TEXT("deleting DomainApplicationManager\n"))); + delete (*iter).int_id_; + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("ExecutionManager_Impl::~ExecutionManager_Impl - ") + ACE_TEXT("DomainApplicationManager deleted\n"))); + } +} + +::Deployment::DomainApplicationManager_ptr +ExecutionManager_Impl::preparePlan (const ::Deployment::DeploymentPlan & plan, + ::Deployment::ResourceCommitmentManager_ptr /*resourceCommitment*/) +{ + DANCE_TRACE ( "ExecutionManager_Impl::preparePlan"); + + // Check if plan is already deployed. + DomainApplicationManager_Impl * dam = 0; + if (0 == this->managers_.find (plan.UUID.in(), dam)) + { + DANCE_DEBUG (6, (LM_NOTICE, DLINFO ACE_TEXT("ExecutionManager_Impl::preparePlan - ") + ACE_TEXT("DomainApplicationManager with specified UUID already exists\n"))); + // Should we return on this situation reference on existed DomainApplicationManager or + // we should throw PlanError exception? + CORBA::Object_var ref = this->poa_->servant_to_reference (dam); + return Deployment::DomainApplicationManager::_narrow (ref.in ()); + } + + DomainApplicationManager_Impl* dam_servant = 0; + ACE_NEW_THROW_EX (dam_servant, + DAnCE::DomainApplicationManager_Impl (this->orb_.in (), + this->poa_.in (), + plan, + this->locator_), + CORBA::NO_MEMORY ()); + this->managers_.rebind (plan.UUID.in(), dam_servant); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("ExecutionManager_Impl::preparePlan - ") + ACE_TEXT("Domain Application Manager was successfully created.\n"))); + + PortableServer::ObjectId_var id = this->poa_->activate_object (dam_servant); + + DANCE_DEBUG (6, (LM_NOTICE, DLINFO ACE_TEXT("ExecutionManager_Impl::preparePlan - ") + ACE_TEXT("Plan with UUID %C was successfully prepared.\n"), + plan.UUID.in ())); + + CORBA::Object_var ref = this->poa_->id_to_reference (id.in()); + return Deployment::DomainApplicationManager::_narrow (ref.in ()); +} + +::Deployment::DomainApplicationManagers * +ExecutionManager_Impl::getManagers () +{ + DANCE_TRACE ( "ExecutionManager_Impl::getManagers ()"); + + ::Deployment::DomainApplicationManagers * managers = 0; + ACE_NEW_THROW_EX (managers, + ::Deployment::DomainApplicationManagers(), + CORBA::NO_MEMORY()); + + managers->length (this->managers_.current_size()); + unsigned int index = 0; + for (TDomainManagers::iterator iter = this->managers_.begin(); + iter != this->managers_.end(); + ++iter) + { + CORBA::Object_var ref = this->poa_->servant_to_reference ( (*iter).int_id_); + (*managers) [index] + = Deployment::DomainApplicationManager::_narrow (ref.in ()); + ++index; + } + + return managers; +} + +void +ExecutionManager_Impl::destroyManager (::Deployment::DomainApplicationManager_ptr appManager) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("ExecutionManager_Impl::destroyManager - started\n"))); + + for (TDomainManagers::iterator iter = this->managers_.begin(); + iter != this->managers_.end(); + ++iter) + { + CORBA::Object_var app = this->poa_->servant_to_reference ( (*iter).int_id_); + if (appManager->_is_equivalent (app.in ())) + { + this->managers_.unbind ( (*iter).ext_id_); + PortableServer::ObjectId_var id = this->poa_->reference_to_id (appManager); + this->poa_->deactivate_object (id.in()); + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("ExecutionManager_Impl::destroyManager - deleting DomainApplicationManager\n"))); + delete (*iter).int_id_; + (*iter).int_id_ = 0; + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("ExecutionManager_Impl::destroyManager - DomainApplicationManager deleted\n"))); + //this->managers_.unbind ( (*iter).ext_id_); + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("ExecutionManager_Impl::destroyManager - finished\n"))); + return; + } + } + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("ExecutionManager_Impl::destroyManager - ") + ACE_TEXT("corresponding DomainApplicationManager cannot be found\n"))); + throw ::Deployment::StopError(); +} + +// This one derived from ExecutionManagerDaemon interface +// for shutdowning DAnCE agent +void +ExecutionManager_Impl::shutdown () +{ + DANCE_TRACE ("ExecutionManager_Impl::shutdown"); + this->orb_->shutdown(); +} + + +void +ExecutionManager_Impl::add_node_manager (const ACE_TCHAR *name, + const ACE_TCHAR *ior) +{ + DANCE_TRACE ("ExecutionManager_Impl::add_node_manager"); + this->locator_.store_ior (name, ior); +} + +void +ExecutionManager_Impl::load_node_map (const ACE_TCHAR *filename) +{ + DANCE_TRACE ("ExecutionManager_Impl::add_node_manager"); + this->locator_.process_node_map (filename); +} diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.h b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.h new file mode 100644 index 00000000000..544e17ac431 --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Impl.h @@ -0,0 +1,71 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ExecutionManager_Impl.h + * + * $Id$ + * + * @brief Implementation of Deployment::ExecutionManager and POA_DAnCE::ExecutionManagerDaemon + * + * @author Erwin Gottlieb + */ +//============================================================================= + +#ifndef EXECUTIONMANAGER_IMPL_H_ +#define EXECUTIONMANAGER_IMPL_H_ + +#include "ace/Map_Manager.h" +#include "ace/SStringfwd.h" +#include "orbsvcs/orbsvcs/CosNamingC.h" +#include "ExecutionManager_Export.h" +#include "Deployment/CIAO_ExecutionManagerDaemonS.h" +#include "Deployment/Deployment_NodeManagerC.h" +#include "DomainApplicationManager/DomainApplicationManager_Impl.h" +#include "DomainApplicationManager/Node_Locator.h" + +namespace DAnCE + { + class ExecutionManager_Export ExecutionManager_Impl + : public virtual POA_DAnCE::ExecutionManagerDaemon + { + private: + typedef ACE_Map_Manager TDomainManagers; + + public: + + ExecutionManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + CosNaming::NamingContext_ptr); + + virtual ~ExecutionManager_Impl(); + + virtual ::Deployment::DomainApplicationManager_ptr preparePlan ( + const ::Deployment::DeploymentPlan & plan, + ::Deployment::ResourceCommitmentManager_ptr resourceCommitment + ); + + virtual ::Deployment::DomainApplicationManagers * getManagers ( + ); + + virtual void destroyManager ( + ::Deployment::DomainApplicationManager_ptr manager + ); + + // This one derived from ExecutionManagerDaemon interface + // for shutdowning DAnCE agent + virtual void shutdown (); + + void add_node_manager (const ACE_TCHAR *name, const ACE_TCHAR *ior); + + void load_node_map (const ACE_TCHAR *filename); + + private: + CORBA::ORB_var orb_; + PortableServer::POA_var poa_; + TDomainManagers managers_; + Node_Locator locator_; + }; +}//DAnCE + +#endif /*EXECUTIONMANAGER_IMPL_H_*/ diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.cpp b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.cpp new file mode 100644 index 00000000000..41f4a6b1de8 --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.cpp @@ -0,0 +1,367 @@ +// -*- C++ -*- +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/OS_NS_stdio.h" + +#include "tao/TAO_Singleton_Manager.h" +#include "tao/StringSeqC.h" +#include "tao/IORTable/IORTable.h" +#include "tao/Utils/PolicyList_Destroyer.h" +#include "orbsvcs/CosNamingC.h" +#include "ciao/Valuetype_Factories/Cookies.h" +#include "ExecutionManager_Module.h" +#include "ExecutionManager_Impl.h" +#include "DAnCE/Logger/Log_Macros.h" + +ACE_RCSID (DAnCE, + DAnCE_ExecutionManager_Module, + "$Id$") + +namespace DAnCE +{ + namespace ExecutionManager + { + bool + write_IOR (const ACE_TCHAR * ior_file_name, const char* ior) + { + FILE* ior_output_file_ = + ACE_OS::fopen (ior_file_name, ACE_TEXT("w")); + + if (ior_output_file_) + { + ACE_OS::fprintf (ior_output_file_, + "%s", + ior); + ACE_OS::fclose (ior_output_file_); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("ExectionManager::write_IOR - EM's ior was written into file \"%C\"\n"), ior_file_name)); + return true; + } + else + { + DANCE_ERROR (1, (LM_ERROR, + ACE_TEXT("[%M%] DAnCE_ExecutionManager::write_ior-file - ") + ACE_TEXT("Unable to open ExecutionManager IOR output file %C : %m\n"), + ior_file_name)); + return false; + } + return true; + } + } +} + +DAnCE_ExecutionManager_Module::DAnCE_ExecutionManager_Module (void) + : em_impl_ (0) +{ +} + +DAnCE_ExecutionManager_Module::~DAnCE_ExecutionManager_Module (void) +{ + delete this->em_impl_; +} + +bool +DAnCE_ExecutionManager_Module::parse_args (int argc, ACE_TCHAR *argv[]) +{ + DANCE_TRACE ("DAnCE_ExecutionManager_Module::parse_args"); + + ACE_Get_Opt get_opts (argc, + argv, + "n:e::p::c::r::ifh", + 0, + 0, + ACE_Get_Opt::RETURN_IN_ORDER); + + get_opts.long_option (ACE_TEXT("exec-mgr"), 'e', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("node-mgr"), 'n', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("process-ns"), 'p', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("create-plan-ns"), 'c', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("rebind-plan-ns"), 'r', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("port-indirection"), 'i', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("ignore-failure"), 'f', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("node-map"), ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("domain-nc"), ACE_Get_Opt::ARG_REQUIRED); + + //get_opts.long_option ("help", '?'); + + int c; + while ( (c = get_opts ()) != -1) + { + switch (c) + { + case 'e': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("Output filename is %s\n"), + get_opts.opt_arg ())); + this->options_.exec_mgr_file_ = get_opts.opt_arg (); + break; + case 'n': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("--node-mgr option was parsed out for EM\n"))); + this->options_.node_managers_.push_back (get_opts.opt_arg ()); + break; + + case 'p': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("--process-ns enabled for EM\n"))); + this->options_.process_ns_ = true; + this->options_.process_ns_file_ = get_opts.opt_arg (); + break; + + case 'c': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("--create-plan-ns enabled for EM\n"))); + this->options_.create_plan_ns_ = true; + this->options_.create_plan_ns_ior_ = get_opts.opt_arg (); + break; + + case 'r': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("--rebind-plan-ns enabled for EM\n"))); + this->options_.rebind_plan_ns_ = true; + this->options_.rebind_plan_ns_ior_ = get_opts.opt_arg (); + break; + + case 'i': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("--port-indirection enabled for EM\n"))); + this->options_.port_indirection_ = true; + break; + + case 'f': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::parse_args - ") + ACE_TEXT("--ignore-failure enabled for EM\n"))); + this->options_.ignore_failure_ = true; + break; + + case 0: + if (ACE_OS::strcmp (get_opts.long_option (), + ACE_TEXT("node-map")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Found Node map filename %s.\n"), + get_opts.opt_arg ())); + this->options_.node_map_ = get_opts.opt_arg (); + break; + + } + else if (ACE_OS::strcmp (get_opts.long_option (), + ACE_TEXT("domain-nc")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Binding to domain naming context %s.\n"), + get_opts.opt_arg ())); + this->options_.domain_nc_ = get_opts.opt_arg (); + break; + } + + case 'h': + //case '?': // Display help for use of the server. + //default: + DANCE_ERROR_RETURN (1, (LM_ERROR, + "usage: %s\n" + "\t--exec-mgr,-e [execution manager ior file name]\n" + "\t--node-mgr,-n [=node manager ior file name]\n" + "\t--node-map \t\tFile containing a node manager map\n" + "\t--domain-nc \t\tIOR for the Domain Naming Context\n" + //"-p|--process-ns [file name] \t\tcreate process name service and store its ior to file name\n" + //"-c|--create-plan-ns [NC] \t\tcreate plan objects (components and ports) representation in name context with ior NC\n" + //"-r|--rebind-plan-ns [NC] \t\tbind plan representation name context to NC\n" + //"-i \t\t\t\tenable plan objects indirection via servant locator\n", + ,argv [0]), + false); + break; + } + } + return true; +} + +CORBA::Object_ptr +DAnCE_ExecutionManager_Module::create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv[]) +{ + DANCE_TRACE ("DAnCE_ExecutionManager_Module::create_object"); + + try + { + if (this->em_impl_ != 0) + { + DANCE_ERROR (1, (LM_ERROR, + DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("Error: ExecutionManager already exists.\n"))); + return CORBA::Object::_nil (); + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("before parsing arguments.\n"))); + + if (!this->parse_args (argc, argv)) + return CORBA::Object::_nil (); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("before creating value factory.\n"))); + CORBA::ValueFactory_var vf = new Components::Cookie_init(); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("before registering value factory.\n"))); + vf = orb->register_value_factory ("IDL:omg.org/Components/Cookie:1.0", vf.in()); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("after creating value factory.\n"))); + // Get reference to Root POA. + CORBA::Object_var poa_obj + = orb->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var poa + = PortableServer::POA::_narrow (poa_obj.in ()); + + PortableServer::POAManager_var mgr = poa->the_POAManager (); + PortableServer::POA_var persistent_poa; + TAO::Utils::PolicyList_Destroyer policies (2); + policies.length (2); + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("before creating the \"Managers\" POA.\n"))); + + policies[0] = poa->create_id_assignment_policy (PortableServer::USER_ID); + policies[1] = poa->create_lifespan_policy (PortableServer::PERSISTENT); + persistent_poa = poa->create_POA ("Managers", + mgr.in(), + policies); + } + catch (const PortableServer::POA::AdapterAlreadyExists &) + { + persistent_poa = poa->find_POA ("Managers", 0); + } + + CosNaming::NamingContext_var domain_nc; + + // Resolve DomainNC + try + { + if (this->options_.domain_nc_) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("before resolving \"DomainNC\".\n"))); + CORBA::Object_var domain_obj = orb->string_to_object (this->options_.domain_nc_); + if (!CORBA::is_nil (domain_obj.in ())) + { + domain_nc = CosNaming::NamingContext::_narrow (domain_obj.in()); + if (CORBA::is_nil (domain_nc.in ())) + { + DANCE_ERROR (1, (LM_ERROR, + DLINFO ACE_TEXT("Narrow to NamingContext return nil for DomainNC.\n"))); + return CORBA::Object::_nil (); + } + } + } + } + catch (CORBA::Exception&) + { + DANCE_DEBUG (6, (LM_DEBUG, + DLINFO ACE_TEXT("DomainNC context not found!\n"))); + } + + // Initialize IOR table + CORBA::Object_var table_object + = orb->resolve_initial_references ("IORTable"); + + IORTable::Table_var adapter + = IORTable::Table::_narrow (table_object.in ()); + + if (CORBA::is_nil (adapter.in ())) + { + DANCE_ERROR (1, (LM_ERROR, + DLINFO ACE_TEXT("Nil IORTable\n"))); + return CORBA::Object::_nil (); + } + + // Create and install the DAnCE Daemon servant on child POA + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - before creating EM servant.\n"))); + ACE_NEW_RETURN (this->em_impl_, + DAnCE::ExecutionManager_Impl (orb, + poa.in (), + domain_nc.in ()), + CORBA::Object::_nil ()); + + // Explicit activation through the persistent POA + PortableServer::ObjectId_var oid = + PortableServer::string_to_ObjectId ("ExecutionManager"); + persistent_poa->activate_object_with_id (oid, this->em_impl_); + + CORBA::Object_var em_obj = persistent_poa->id_to_reference (oid.in ()); + CORBA::String_var em_ior = orb->object_to_string (em_obj.in ()); + + DAnCE::ExecutionManagerDaemon_var em_daemon + = DAnCE::ExecutionManagerDaemon::_narrow (em_obj.in ()); + + // Binding ior to IOR Table + adapter->bind ("ExecutionManager", em_ior.in ()); + + // Saving execution manager ior + if (0 != this->options_.exec_mgr_file_) + { + DAnCE::ExecutionManager::write_IOR (this->options_.exec_mgr_file_, em_ior.in ()); + } + + // Binding execution manager to name service + if (!CORBA::is_nil (domain_nc.in ())) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Registering EM in NC.\n"))); + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup ("ExecutionManager"); + domain_nc->rebind (name, em_daemon.in()); + } + + // End ExecutionManager initialization part + + // Initializing NodeManagers + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("before processing --node-mgr options(%u).\n"), this->options_.node_managers_.size())); + for (size_t i = 0; i < this->options_.node_managers_.size(); ++i) + { + size_t pos = this->options_.node_managers_[i].find ('='); + ACE_TString node_name = this->options_.node_managers_[i]; + ACE_TString nm_ior; + + if (ACE_CString::npos == pos) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("Execution manager received --node-mgr without IOR\n"))); + continue; + } + + node_name = this->options_.node_managers_[i].substring (0, pos); + nm_ior = this->options_.node_managers_[i].substring (pos + 1); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Placing node \"%C\" to EM's map.\n"), node_name.c_str())); + this->em_impl_->add_node_manager (node_name.c_str(), nm_ior.c_str ()); + } + + if (this->options_.node_map_ != 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_ExecutionManager_Module::create_object - ") + ACE_TEXT("Parsing node map %C\n"), + this->options_.node_map_)); + this->em_impl_->load_node_map (this->options_.node_map_); + } + + + mgr->activate (); + + return em_obj._retn (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("DAnCE_ExecutionManager::run_main\n"); + return CORBA::Object::_nil (); + } +} + +ACE_FACTORY_DEFINE (DAnCE_ExecutionManager_Module, DAnCE_ExecutionManager_Module) + + + diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.h b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.h new file mode 100644 index 00000000000..eebe3f5f52a --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager_Module.h @@ -0,0 +1,102 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ExecutionManager_Module.h + * + * $Id$ + * + * @brief + * + * @author Vinzenz Tornow + */ +//============================================================================= + +#ifndef EXECUTION_MANAGER_MODULE_H +#define EXECUTION_MANAGER_MODULE_H + +#include /**/ "ace/pre.h" + +#include "DAnCE_ExecutionManager_Module_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Service_Config.h" +#include "ace/Vector_T.h" +#include "tao/Object_Loader.h" + +namespace DAnCE +{ + class ExecutionManager_Impl; +} + +/** + * @class Execution_Manager_Module + * + * @brief The shared object that is instantiated when the execution manager + * module/library is dynamically loaded. + * + * This class runs the execution manager instance + */ +class DAnCE_ExecutionManager_Module_Export DAnCE_ExecutionManager_Module + : public TAO_Object_Loader + { + public: + struct SOptions + { + const ACE_TCHAR* exec_mgr_file_; + bool process_ns_; + const ACE_TCHAR* process_ns_file_; + bool create_plan_ns_; + const ACE_TCHAR* create_plan_ns_ior_; + bool rebind_plan_ns_; + const ACE_TCHAR* rebind_plan_ns_ior_; + bool port_indirection_; + ACE_Vector node_managers_; + bool ignore_failure_; + const ACE_TCHAR *node_map_; + const ACE_TCHAR *domain_nc_; + + SOptions() + : exec_mgr_file_ (0), + process_ns_ (false), + process_ns_file_ (0), + create_plan_ns_ (false), + create_plan_ns_ior_ (0), + rebind_plan_ns_ (false), + rebind_plan_ns_ior_ (0), + ignore_failure_ (false), + node_map_(0), + domain_nc_ (0) + { + } + }; + + /// Constructor. + DAnCE_ExecutionManager_Module (void); + + /// Destructor. + ~DAnCE_ExecutionManager_Module (void); + + /// Overload the base class method to create a new instance + /// of a DAnCE_NodeManager_Module object. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv []); + + virtual bool parse_args (int argc, ACE_TCHAR *argv []); + + SOptions options_; + private: + /// Storage for ExecutionManager servant. + DAnCE::ExecutionManager_Impl * em_impl_; + }; + +ACE_FACTORY_DECLARE (DAnCE_ExecutionManager_Module, DAnCE_ExecutionManager_Module) + +#include /**/ "ace/post.h" + +#endif /* EXECUTION_MANAGER_MODULE_H */ + diff --git a/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Exec.cpp b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Exec.cpp new file mode 100644 index 00000000000..2331ec167df --- /dev/null +++ b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Exec.cpp @@ -0,0 +1,7 @@ +// $Id$ +#include "ExecutionManager_Module.h" + +#define DANCE_MODULE_MAIN_CLASS_NAME DAnCE_ExecutionManager_Module +#include "Deployment/Module_Main.h" + + diff --git a/modules/CIAO/DAnCE/Logger/DAnCE_Logger_Export.h b/modules/CIAO/DAnCE/Logger/DAnCE_Logger_Export.h new file mode 100644 index 00000000000..e8e7cb3c81a --- /dev/null +++ b/modules/CIAO/DAnCE/Logger/DAnCE_Logger_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_Logger +// ------------------------------ +#ifndef DANCE_LOGGER_EXPORT_H +#define DANCE_LOGGER_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_LOGGER_HAS_DLL) +# define DANCE_LOGGER_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_LOGGER_HAS_DLL */ + +#if !defined (DANCE_LOGGER_HAS_DLL) +# define DANCE_LOGGER_HAS_DLL 1 +#endif /* ! DANCE_LOGGER_HAS_DLL */ + +#if defined (DANCE_LOGGER_HAS_DLL) && (DANCE_LOGGER_HAS_DLL == 1) +# if defined (DANCE_LOGGER_BUILD_DLL) +# define DAnCE_Logger_Export ACE_Proper_Export_Flag +# define DANCE_LOGGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_LOGGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_LOGGER_BUILD_DLL */ +# define DAnCE_Logger_Export ACE_Proper_Import_Flag +# define DANCE_LOGGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_LOGGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_LOGGER_BUILD_DLL */ +#else /* DANCE_LOGGER_HAS_DLL == 1 */ +# define DAnCE_Logger_Export +# define DANCE_LOGGER_SINGLETON_DECLARATION(T) +# define DANCE_LOGGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_LOGGER_HAS_DLL == 1 */ + +// Set DANCE_LOGGER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_LOGGER_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_LOGGER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_LOGGER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_LOGGER_NTRACE */ + +#if (DANCE_LOGGER_NTRACE == 1) +# define DANCE_LOGGER_TRACE(X) +#else /* (DANCE_LOGGER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_LOGGER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_LOGGER_NTRACE == 1) */ + +#endif /* DANCE_LOGGER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Logger/Log_Macros.cpp b/modules/CIAO/DAnCE/Logger/Log_Macros.cpp new file mode 100644 index 00000000000..212a14111aa --- /dev/null +++ b/modules/CIAO/DAnCE/Logger/Log_Macros.cpp @@ -0,0 +1,6 @@ +// $Id$ + +#include "Log_Macros.h" + +DAnCE_Logger_Export unsigned int DAnCE_debug_level = 0; + diff --git a/modules/CIAO/DAnCE/Logger/Log_Macros.h b/modules/CIAO/DAnCE/Logger/Log_Macros.h new file mode 100644 index 00000000000..52b95024c51 --- /dev/null +++ b/modules/CIAO/DAnCE/Logger/Log_Macros.h @@ -0,0 +1,95 @@ +/** + * @file Log_Macros.h + * @author William R. Otte + * // $Id$ + * Macros used for logging in DAnCE + */ + + +#ifndef DANCE_LOG_MACROS_H_ +#define DANCE_LOG_MACROS_H_ + +#include "DAnCE_Logger_Export.h" + +#if !defined (DLINFO) +# define DLINFO ACE_TEXT("(%P|%t) [%M] - %T - ") +#endif + +extern DAnCE_Logger_Export unsigned int DAnCE_debug_level; + +#if (DANCE_NTRACE == 1) +# if !defined (ACE_NTRACE) +# define DANCE_TRACE(X) do {} while (0) +# define DANCE_ENABLE_TRACE(X) do {} while (0) +# define DANCE_DISABLE_TRACE(X) do {} while (0) +# else +# if (ACE_NTRACE == 0) +# error DANCE_TRACE cannot be disabled if ACE_TRACE is enabled +# else +# define DANCE_TRACE(X) do {} while (0) +# define DANCE_ENABLE_TRACE(X) do {} while (0) +# define DANCE_DISABLE_TRACE(X) do {} while (0) +# endif +# endif +#else +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_TRACE(X) ACE_TRACE_IMPL (X) +# define DANCE_ENABLE_TRACE() ACE_Trace::start_tracing () +# define DANCE_DISABLE_TRACE() ACE_Trace::stop_tracing () +# undef DLINFO // Make log messages indent with tracing. +# define DLINFO ACE_TEXT("%I(%P|%t) [%M] - %T - ") +# include "ace/Trace.h" +#endif /* DANCE_NTRACE */ + +#if defined (DANCE_NLOGGING) +# define DANCE_ERROR(L, X) do {} while (0) +# define DANCE_DEBUG(L, X) do {} while (0) +#define DANCE_ERROR_RETURN(L, X, Y) return (Y) +#define DANCE_ERROR_BREAK(L, X) { break; } +#else +# if !defined (DANCE_ERROR) +# define DANCE_ERROR(L, X) \ + do { \ + if (DAnCE_debug_level >= L) \ + { \ + int const __ace_error = ACE_Log_Msg::last_error_adapter (); \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->conditional_set (__FILE__, __LINE__, -1, __ace_error); \ + ace___->log X; \ + } \ + } while (0) +# endif +# if !defined (DANCE_DEBUG) +# define DANCE_DEBUG(L, X) \ + do { \ + if (DAnCE_debug_level >= L) \ + { \ + int const __ace_error = ACE_Log_Msg::last_error_adapter (); \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->conditional_set (__FILE__, __LINE__, 0, __ace_error); \ + ace___->log X; \ + } \ + } while (0) +# endif +# if !defined (DANCE_ERROR_RETURN) +# define DANCE_ERROR_RETURN(L, X, Y) \ + do { \ + if (DAnCE_debug_level >= L) \ + { \ + int const __ace_error = ACE_Log_Msg::last_error_adapter (); \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->conditional_set (__FILE__, __LINE__, Y, __ace_error); \ + ace___->log X; \ + return Y; \ + } \ + } while (0) +# endif +# if !defined (DANCE_ERROR_BREAK) +# define DANCE_ERROR_BREAK(L, X) { DANCE_ERROR (L, X); break; } +# endif +#endif + + +#endif diff --git a/modules/CIAO/DAnCE/Logger/Logger.mpc b/modules/CIAO/DAnCE/Logger/Logger.mpc new file mode 100644 index 00000000000..649d5ff71fc --- /dev/null +++ b/modules/CIAO/DAnCE/Logger/Logger.mpc @@ -0,0 +1,16 @@ +// -*- MPC -*- +// $Id$ + +project(DAnCE_Logger): dance_lib, taolib, acelib { + sharedname = DAnCE_Logger + dynamicflags = DANCE_LOGGER_BUILD_DLL + + Source_Files { + Logger_Service.cpp + Log_Macros.cpp + } +} + + + + diff --git a/modules/CIAO/DAnCE/Logger/Logger_Service.cpp b/modules/CIAO/DAnCE/Logger/Logger_Service.cpp new file mode 100644 index 00000000000..8f8246f79f0 --- /dev/null +++ b/modules/CIAO/DAnCE/Logger/Logger_Service.cpp @@ -0,0 +1,151 @@ +// $Id$ +#include "Logger_Service.h" +#include "ace/Get_Opt.h" +#include "ace/Env_Value_T.h" +#include "ace/CORBA_macros.h" +#include "tao/SystemException.h" +#include "Log_Macros.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_IOSTREAM_TOTALLY) +// Needed to set ACE_LOG_MSG::msg_ostream() +// FUZZ: disable check_for_streams_include +# include "ace/streams.h" +#endif /* !ACE_LACKS_IOSTREAM_TOTALLY */ + +namespace DAnCE + { + Logger_Service::Logger_Service (void) + : filename_ (ACE_TEXT("")), + trace_ (false) + { + } + + int + Logger_Service::init (int argc, ACE_TCHAR * argv[]) + { + // Get prospective values from the environment first, those given on + // command line can override + ACE_Env_Value log (ACE_TEXT("DANCE_LOG_LEVEL"), DAnCE_debug_level); + DAnCE_debug_level = log; + + ACE_Env_Value trace (ACE_TEXT("DANCE_TRACE_ENABLE"), 0); + this->trace_ = (trace != 0); + + ACE_Env_Value filename (ACE_TEXT("DANCE_LOG_FILE"), this->filename_.c_str ()); + this->filename_ = filename; + + this->parse_args (argc, argv); + + if (this->trace_) + { + DANCE_ENABLE_TRACE (); + } + else + { + DANCE_DISABLE_TRACE (); + } + + if (this->filename_.length () > 0) + { +#if defined (ACE_LACKS_IOSTREAM_TOTALLY) + + FILE* output_stream = ACE_OS::fopen (this->filename_.c_str (), ACE_TEXT ("a")); + + ACE_LOG_MSG->msg_ostream (output_stream, 1); + +#else /* ! ACE_LACKS_IOSTREAM_TOTALLY */ + + ofstream* output_stream = 0; + + // + // note: we are allocating dynamic memory here....but + // I assume it will persist for the life of the program + // + + ACE_NEW_THROW_EX (output_stream, + ofstream (), + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + 0, + ENOMEM), + CORBA::COMPLETED_NO)); + + output_stream->open (ACE_TEXT_ALWAYS_CHAR (this->filename_.c_str ()), + ios::out | ios::app); + + if (!output_stream->bad ()) + { + ACE_LOG_MSG->msg_ostream (output_stream, 1); + } + +#endif /* ACE_LACKS_IOSTREAM_TOTALLY */ + + ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); + ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); + } + + return 0; + } + + void + Logger_Service::parse_args (int argc, ACE_TCHAR **argv) + { + DANCE_TRACE ("Logger_Service::parse_args"); + + ACE_Get_Opt get_opts (argc, + argv, + "l:af:", + 0, + 0, + ACE_Get_Opt::RETURN_IN_ORDER); + + get_opts.long_option (ACE_TEXT("log-level"), 'l', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("trace"), 'a', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("log-file"), 'f', ACE_Get_Opt::ARG_REQUIRED); + + int c; + while ( (c = get_opts ()) != -1) + { + switch (c) + { + case 'a': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Logger_Service::parse_args - ") + ACE_TEXT("Trace enabled\n"), + get_opts.opt_arg ())); + this->trace_ = true; + break; + + case 'l': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Logger_Service::parse_args - ") + ACE_TEXT("Log level set to %s\n"), + get_opts.opt_arg ())); + DAnCE_debug_level = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'f': + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Logger_Service::parse_args - ") + ACE_TEXT("Log file set to %s\n"), + get_opts.opt_arg ())); + this->filename_ = get_opts.opt_arg (); + break; + } + } + } + + int + Logger_Service::Initializer (void) + { + return ACE_Service_Config::process_directive (ace_svc_desc_Logger_Service); + } +} // DAnCE + +using namespace DAnCE; +ACE_STATIC_SVC_DEFINE (Logger_Service, + ACE_TEXT ("DAnCE_Logger"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Logger_Service), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) +ACE_FACTORY_DEFINE (DAnCE_Logger, Logger_Service) + diff --git a/modules/CIAO/DAnCE/Logger/Logger_Service.h b/modules/CIAO/DAnCE/Logger/Logger_Service.h new file mode 100644 index 00000000000..8bbf6943363 --- /dev/null +++ b/modules/CIAO/DAnCE/Logger/Logger_Service.h @@ -0,0 +1,31 @@ +// $Id$ +#ifndef LOGGER_SERVICE_H_ +#define LOGGER_SERVICE_H_ + +#include "DAnCE/Logger/DAnCE_Logger_Export.h" +#include "ace/Service_Object.h" + +namespace DAnCE +{ + class DAnCE_Logger_Export Logger_Service : public ACE_Service_Object + { + public: + Logger_Service (void); + virtual int init (int argc, ACE_TCHAR * argv[]); + + static int Initializer (void); + private: + void parse_args (int argc, ACE_TCHAR **argv); + + ACE_TString filename_; + bool trace_; + }; +} + +static int TAO_Requires_DAnCE_Logger_Service_Initializer = + DAnCE::Logger_Service::Initializer (); + +ACE_STATIC_SVC_DECLARE (Logger_Service) +ACE_FACTORY_DECLARE (DAnCE_Logger, Logger_Service) + +#endif /*LOGGER_SERVICE_H_*/ diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_config_handlers.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_config_handlers.mpb new file mode 100644 index 00000000000..4bf1751fbcd --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_config_handlers.mpb @@ -0,0 +1,21 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_config_handlers_base, dynamicany, typecodefactory, dance_deployment_stub, dance_logger { + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + after += CIAO_XML_Utils \ + XSC_DynAny_Handler \ + XSC_Config_Handlers \ + XSC_XML_Handlers \ + Package_Config_Handlers \ + XSC_Config_Handlers_Common + + libs += CIAO_XML_Utils \ + XSC_Config_Handlers \ + Package_Config_Handlers \ + XSC_XML_Handlers \ + XSC_Config_Handlers_Common \ + XSC_DynAny_Handler +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_config_handlers_base.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_config_handlers_base.mpb new file mode 100644 index 00000000000..51a99714ae1 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_config_handlers_base.mpb @@ -0,0 +1,13 @@ +// $Id$ + +project : ciao_xml_utils, dynamicany, typecodefactory, exceptions { + after += XSC_XML_Handlers + libs += XSC_XML_Handlers + macros += XML_USE_PTHREADS + includes += $(DANCE_ROOT)/Config_Handlers + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_skel.mpb new file mode 100644 index 00000000000..320c057fd11 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_skel.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, ciao_executionmanager_stub { + includes += $(CIAO_ROOT)/DAnCE/ExecutionManager + libs += CIAO_ExecutionManager_skel + after += CIAO_ExecutionManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_stub.mpb new file mode 100644 index 00000000000..a9c5265ed32 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_executionmanager_stub.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, dance_executionmanager_stub { + includes += $(CIAO_ROOT)/DAnCE/ExecutionManager + libs += CIAO_ExecutionManager_stub + after += CIAO_ExecutionManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_nodeapplication.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_nodeapplication.mpb new file mode 100644 index 00000000000..c1854438c7d --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_nodeapplication.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, ciao_nodeapp_configurator { + libs += CIAO_NodeApplication + after += NodeApplicationLib +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_nodeapplicationmanager.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_nodeapplicationmanager.mpb new file mode 100644 index 00000000000..e7d313f0617 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_nodeapplicationmanager.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_targetmanager_stub, ciao_nodeapplication { + includes += $(CIAO_ROOT)/DAnCE/NodeApplicationManager + libs += NodeApplicationManager + after += NodeApplicationManager +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_skel.mpb new file mode 100644 index 00000000000..838b887f7cf --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_nodemanager_stub { + libs += CIAO_NodeManager_skel + after += CIAO_NodeManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_stub.mpb new file mode 100644 index 00000000000..2d726b00815 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_nodemanager_stub.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance_nodemanager_stub { + after += CIAO_NodeManager_stub + libs += CIAO_NodeManager_stub + includes += $(CIAO_ROOT)/DAnCE/NodeManager +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_plan_generator.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_plan_generator.mpb new file mode 100644 index 00000000000..83b78f6f013 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_plan_generator.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_executor { + includes += $(CIAO_ROOT)/DAnCE/Plan_Generator + libs += DAnCE_Plan_Generator + after += DAnCE_Plan_Generator +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_stub.mpb new file mode 100644 index 00000000000..f9cf898c3a0 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_stub.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_nodemanager_stub { + includes += $(CIAO_ROOT)/DAnCE/TargetManager + libs += CIAO_TargetManager_stub + after += CIAO_TargetManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_svnt.mpb b/modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_svnt.mpb new file mode 100644 index 00000000000..edfccb7f45d --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/ciao_targetmanager_svnt.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_targetmanager_stub { + libs += CIAO_TargetManager_svnt + after += CIAO_TargetManager_svnt +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance.mpb b/modules/CIAO/DAnCE/MPC/config/dance.mpb new file mode 100644 index 00000000000..6a72bc480e6 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project { + includes += $(CIAO_ROOT) $(CIAO_ROOT)/DAnCE + libpaths += $(ACE_ROOT)/lib +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_component_server.mpb b/modules/CIAO/DAnCE/MPC/config/dance_component_server.mpb new file mode 100644 index 00000000000..5a744e8fa86 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_component_server.mpb @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_client_dnc { + after += DAnCE_ComponentServer_IDL diff --git a/modules/CIAO/DAnCE/MPC/config/dance_component_server_svnt.mpb b/modules/CIAO/DAnCE/MPC/config/dance_component_server_svnt.mpb new file mode 100644 index 00000000000..4ba1eef01b0 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_component_server_svnt.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_svnt { +// after += Cdmw_IDL +// libs += DAnCE_Cdmw_IDL +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_deployment_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_deployment_stub.mpb new file mode 100644 index 00000000000..2b0c8379399 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_deployment_stub.mpb @@ -0,0 +1,10 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub, messaging { + after += Deployment_stub + libs += DAnCE_Deployment_stub + includes += $(CIAO_ROOT)/DAnCE + idlflags += -I$(CIAO_ROOT)/DAnCE + requires += threads +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_deployment_svnt.mpb b/modules/CIAO/DAnCE/MPC/config/dance_deployment_svnt.mpb new file mode 100644 index 00000000000..752dcbc4568 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_deployment_svnt.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, portableserver { + after += Deployment_svnt + libs += DAnCE_Deployment_svnt + idlflags += -I$(CIAO_ROOT)/DAnCE +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_domainapplication.mpb b/modules/CIAO/DAnCE/MPC/config/dance_domainapplication.mpb new file mode 100644 index 00000000000..44fa433ef79 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_domainapplication.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_domainapplication_skel, dance_logger, dance_nodeapplication_stub, dance_nodemanager_stub, dance_nodemanager_stub { + after += DomainApplication + libs += DAnCE_DomainApplication +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_domainapplication_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_domainapplication_skel.mpb new file mode 100644 index 00000000000..5adfe50065c --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_domainapplication_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_domainapplication_stub { + after += Deployment_DomainApplication_skel + libs += DAnCE_DomainApplication_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_domainapplication_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_domainapplication_stub.mpb new file mode 100644 index 00000000000..5e4e4b0300b --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_domainapplication_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub { + after += Deployment_DomainApplication_stub + libs += DAnCE_DomainApplication_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager.mpb b/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager.mpb new file mode 100644 index 00000000000..4d21834a783 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_domainapplication, naming, dance_domainapplicationmanager_skel { + after += DomainApplicationManager + libs += DAnCE_DomainApplicationManager +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_skel.mpb new file mode 100644 index 00000000000..efaec42189e --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_domainapplicationmanager_stub { + after += Deployment_DAM_skel + libs += DAnCE_DomainApplicationManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_stub.mpb new file mode 100644 index 00000000000..717b2e75173 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_domainapplicationmanager_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub { + after += Deployment_DAM_stub + libs += DAnCE_DomainApplicationManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_exe.mpb b/modules/CIAO/DAnCE/MPC/config/dance_exe.mpb new file mode 100644 index 00000000000..0613cfbb41b --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_exe.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project : dance { + install = $(DANCE_ROOT)/bin +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_executionmanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_executionmanager_skel.mpb new file mode 100644 index 00000000000..847c7028c5a --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_executionmanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_executionmanager_stub { + after += Deployment_ExecutionManager_skel + libs += DAnCE_ExecutionManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_executionmanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_executionmanager_stub.mpb new file mode 100644 index 00000000000..63c1524e6f3 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_executionmanager_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub, dance_domainapplicationmanager_stub { + libs += DAnCE_ExecutionManager_stub + after += Deployment_ExecutionManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_extension_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_extension_stub.mpb new file mode 100644 index 00000000000..008ee7e8b04 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_extension_stub.mpb @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub { +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_lib.mpb b/modules/CIAO/DAnCE/MPC/config/dance_lib.mpb new file mode 100644 index 00000000000..9c1c1bd4640 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_lib.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project : dance { + libout = $(ACE_ROOT)/lib +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_logger.mpb b/modules/CIAO/DAnCE/MPC/config/dance_logger.mpb new file mode 100644 index 00000000000..223a0bb0058 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_logger.mpb @@ -0,0 +1,7 @@ +// $Id$ +// -*- MPC -*- + +project : dance, acelib { + after += DAnCE_Logger + libs += DAnCE_Logger +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication.mpb new file mode 100644 index 00000000000..1536198a419 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_nodeapplication_skel, dance_logger, \ + ciao_cs_client, ciao_componentserver_stub, dynamicinterface, iortable, naming { + after += NodeApplication + libs += DAnCE_NodeApplication +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_skel.mpb new file mode 100644 index 00000000000..d5a818399c2 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_nodeapplication_stub { + after += Deployment_NodeApplication_skel + libs += DAnCE_NodeApplication_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_stub.mpb new file mode 100644 index 00000000000..4bcee8b30d1 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplication_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub { + after += Deployment_DomainApplication_stub + libs += DAnCE_NodeApplication_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager.mpb new file mode 100644 index 00000000000..25bbb5148d0 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_nodeapplication, dance_nodeapplicationmanager_skel { + after += NodeApplicationManager + libs += DAnCE_NodeApplicationManager +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_skel.mpb new file mode 100644 index 00000000000..1cc9812ee18 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_nodeapplicationmanager_stub { + after += Deployment_NAM_skel + libs += DAnCE_NodeApplicationManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_stub.mpb new file mode 100644 index 00000000000..79e316bd26a --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodeapplicationmanager_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub { + after += Deployment_NAM_stub + libs += DAnCE_NodeApplicationManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodemanager.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager.mpb new file mode 100644 index 00000000000..aab928298ba --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +// @todo, use nodeapplicationmanager_stb +project : dance, dance_nodeapplicationmanager, dance_nodemanager_skel, naming_serv { + after += Node_Manager_Module + libs += DAnCE_NodeManager +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_skel.mpb new file mode 100644 index 00000000000..f8cdf0db145 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_nodemanager_stub { + after += Deployment_NodeManager_skel + libs += DAnCE_NodeManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_stub.mpb new file mode 100644 index 00000000000..80736c251ed --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, dance_targetmanager_stub, dance_nodeapplicationmanager_stub { + libs += DAnCE_NodeManager_stub + after += Deployment_NodeManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_svnt.mpb b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_svnt.mpb new file mode 100644 index 00000000000..50d4ba02322 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_nodemanager_svnt.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_svnt { + includes += $(CIAO_ROOT)/DAnCE/NodeManager + libs += DAnCE_NodeManager_svnt + after += DAnCE_NodeManager_svnt +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_plan_generator.mpb b/modules/CIAO/DAnCE/MPC/config/dance_plan_generator.mpb new file mode 100644 index 00000000000..42f852d21d8 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_plan_generator.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, naming, dance_logger { + after += Plan_Generator + libs += DAnCE_Plan_Generator +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_plan_launcher.mpb b/modules/CIAO/DAnCE/MPC/config/dance_plan_launcher.mpb new file mode 100644 index 00000000000..bfc71c3e25a --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_plan_launcher.mpb @@ -0,0 +1,6 @@ +// $Id$ + +project : dance_plan_launcher_base, dance_logger { + after += Plan_Launcher + libs += DAnCE_Plan_Launcher +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_plan_launcher_base.mpb b/modules/CIAO/DAnCE/MPC/config/dance_plan_launcher_base.mpb new file mode 100644 index 00000000000..b6f3237118b --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_plan_launcher_base.mpb @@ -0,0 +1,6 @@ +// $Id$ + +project : naming, dance_executionmanager_stub, dance_logger { + after += Plan_Launcher_Base + libs += DAnCE_Plan_Launcher_Base +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_redirectionservice.mpb b/modules/CIAO/DAnCE/MPC/config/dance_redirectionservice.mpb new file mode 100644 index 00000000000..092c0d55928 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_redirectionservice.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, naming, messaging { + after += RedirectionService + libs += DAnCE_RedirectionService +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager.mpb b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager.mpb new file mode 100644 index 00000000000..2089b7700b8 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : dance_logger, ciao_config_handlers, ccm_stub, dance_repositorymanagerbase, dance_repositorymanager_skel, naming, iortable, utils, zlib, minizip, dance_logger { + requires += zlib + after += DAnCE_RepositoryManager + libs += DAnCE_RepositoryManager +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_skel.mpb new file mode 100644 index 00000000000..3e9ebb51a4f --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_repositorymanager_stub { + after += Deployment_RepositoryManager_skel + libs += DAnCE_RepositoryManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_stub.mpb new file mode 100644 index 00000000000..e0d47b1e8fc --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanager_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub { + libs += DAnCE_RepositoryManager_stub + after += Deployment_RepositoryManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_repositorymanagerbase.mpb b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanagerbase.mpb new file mode 100644 index 00000000000..b9dc96c12c9 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_repositorymanagerbase.mpb @@ -0,0 +1,9 @@ +// -*- MPC -*- +// $Id$ + +feature(jaws) { + includes += $(ACE_ROOT)/apps + libs += JAWS + after += JAWS + macros += DANCE_RM_USES_JAWS +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_targetmanager.mpb b/modules/CIAO/DAnCE/MPC/config/dance_targetmanager.mpb new file mode 100644 index 00000000000..f3148d5c00d --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_targetmanager.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_svnt, ciao_config_handlers, dance_targetmanager_skel, dance_logger { + after += DAnCE_TargetManager_Impl + libs += DAnCE_TargetManager_Impl +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_targetmanager_skel.mpb b/modules/CIAO/DAnCE/MPC/config/dance_targetmanager_skel.mpb new file mode 100644 index 00000000000..7e9faa32ae7 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_targetmanager_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_svnt, dance_targetmanager_stub { + after += Deployment_TargetManager_skel + libs += DAnCE_TargetManager_skel +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_targetmanager_stub.mpb b/modules/CIAO/DAnCE/MPC/config/dance_targetmanager_stub.mpb new file mode 100644 index 00000000000..5b42c9188fe --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_targetmanager_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance, dance_deployment_stub { + libs += DAnCE_TargetManager_stub + after += Deployment_TargetManager_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_tm_daemon.mpb b/modules/CIAO/DAnCE/MPC/config/dance_tm_daemon.mpb new file mode 100644 index 00000000000..796e100cad2 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_tm_daemon.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_svnt { + after += DAnCE_TargetManagerDaemon_svnt DAnCE_TargetManagerDaemon_stub + libs += DAnCE_TargetManagerDaemon_svnt DAnCE_TargetManagerDaemon_stub +} diff --git a/modules/CIAO/DAnCE/MPC/config/dance_utils.mpb b/modules/CIAO/DAnCE/MPC/config/dance_utils.mpb new file mode 100644 index 00000000000..7c303076fe7 --- /dev/null +++ b/modules/CIAO/DAnCE/MPC/config/dance_utils.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dance_deployment_stub, dance_logger { + after += DAnCE_Utils + libs += DAnCE_Utils +} diff --git a/modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.cpp b/modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.cpp new file mode 100644 index 00000000000..9ea66fc9c78 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.cpp @@ -0,0 +1,68 @@ +// $Id$ + +#include "tao/DynamicInterface/Request.h" + +#include "ComponentAttributesSetter.h" +#include "tao/DynamicInterface/DII_CORBA_methods.h" +#include "tao/DynamicInterface/Context.h" +#include "tao/AnyTypeCode/NVList.h" +#include "tao/AnyTypeCode/TypeCode_Constants.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Deployment/Deployment_ApplicationC.h" + +ComponentAttributesSetter::ComponentAttributesSetter() +{ +} + +ComponentAttributesSetter::~ComponentAttributesSetter() +{ +} + +void +ComponentAttributesSetter::SetComponentAttributes (ACE_CString /*componentName*/, + ::CORBA::Object_ptr obj, + const Deployment::Properties& prop, + CORBA::ORB_ptr ) +{ + DANCE_TRACE ("ComponentAttributesSetter::SetComponentAttributes"); + + for (CORBA::ULong i = 0; i < prop.length(); i++) + { + ACE_CString name = prop[i].name.in(); + + // Ignore configuration properties, since attributes can't have . in them, this seems like a good method. + if (name.find (".") != ACE_CString::npos) + { + continue; + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("ComponentAttributesSetter::SetComponentAttributes - ") + ACE_TEXT("Populating attribute name %C\n"), name.c_str())); + ACE_CString method = "_set_"; + method += prop[i].name.in(); + + ::CORBA::Request_var req; + + try + { + req = obj->_request (method.c_str ()); + req->add_in_arg ("x") = prop[i].value; + + req->invoke(); + } + catch (const CORBA::BAD_OPERATION &) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO + ACE_TEXT("ComponentAttributesSetter::SetComponentAttributes - ") + ACE_TEXT("ERROR: BAD_OPERATION while trying to set attribute %C\n"), + name.c_str ())); + } + catch (const CORBA::Exception &e) + { + CORBA::release (req); + e._tao_print_exception ("ComponentAttributesSetter.cpp::SetComponentAttributes "); + throw ::Deployment::StartError(); + } + //Question - How exceptions will be processed, rised by invoked method + } +} diff --git a/modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.h b/modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.h new file mode 100644 index 00000000000..06b125ad559 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/ComponentAttributesSetter.h @@ -0,0 +1,33 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ComponentAttributesSetter.h + * + * $Id$ + * + * @brief Workaround for component attributes setting + * + * @author Erwin Gottlieb + */ +//============================================================================= + +#ifndef COMPONENTATTRIBUTESSETTER_H_ +#define COMPONENTATTRIBUTESSETTER_H_ + +#include "NodeApplication_Export.h" +#include "Deployment/Deployment_BaseC.h" + +class NodeApplication_Export ComponentAttributesSetter + { + public: + ComponentAttributesSetter(); + ~ComponentAttributesSetter(); + + static void SetComponentAttributes (ACE_CString componentName, + CORBA::Object_ptr, + const Deployment::Properties& prop, + CORBA::ORB_ptr orb); + }; + +#endif /*COMPONENTATTRIBUTESSETTER_H_*/ diff --git a/modules/CIAO/DAnCE/NodeApplication/Name_Utilities.cpp b/modules/CIAO/DAnCE/NodeApplication/Name_Utilities.cpp new file mode 100644 index 00000000000..258584aeb40 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/Name_Utilities.cpp @@ -0,0 +1,179 @@ +// $Id$ + +#include "Name_Utilities.h" + +#include "ace/Auto_Ptr.h" +#include "ace/SString.h" +#include "ace/Tokenizer_T.h" +#include "Logger/Log_Macros.h" + +namespace DAnCE +{ + namespace Name_Utilities { + bool + write_ior (const ACE_TCHAR *file, const char *ior) + { + FILE* ior_output_file_ = ACE_OS::fopen (file, "w"); + if (ior_output_file_) + { + ACE_OS::fprintf (ior_output_file_, + "%s", + ior); + ACE_OS::fclose (ior_output_file_); + return true; + } + return false; + } + + bool + bind_object (const char *name, + CORBA::Object_ptr obj, + CosNaming::NamingContext_ptr ctx) + { + DANCE_TRACE ("Name_Utilities::bind_object"); + + if (CORBA::is_nil (ctx)) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("Name_Utilities::bind_object - ") + ACE_TEXT("Provided naming context is nil, component %C will not be registered."), + name)); + return false; + } + + try + { + CosNaming::Name nm; + + Name_Utilities::build_name (name, nm); + + if (nm.length () == 0) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("Name_Utilities::bind_object - ") + ACE_TEXT("build_name resulted in an invalid name for string %C\n"), + name)); + return false; + } + + Name_Utilities::bind_context (nm, ctx); + + try + { + ctx->bind (nm, obj); + } + catch (const CosNaming::NamingContext::AlreadyBound &) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("Name_Utilities::bind_object - ") + ACE_TEXT("Name %C already bound, rebinding....\n"), + name)); + ctx->rebind (nm, obj); + } + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Name_Utilities::bind_object - ") + ACE_TEXT("Caught CORBA exception while attempting to bind name %C: %C\n"), + name, ex._info ().c_str ())); + return false; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Name_Utilities::bind_object - ") + ACE_TEXT("Caught unknown C++ exception while attemptint to bind name %C\n"), + name)); + return false; + } + + return true; + } + + void + bind_context (CosNaming::Name &nm, + CosNaming::NamingContext_ptr ctx) + { + DANCE_TRACE ("Name_Utilities::bind_context"); + + if (CORBA::is_nil (ctx)) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("Name_Utilities::bind_context - ") + ACE_TEXT("Provided naming context is nil, the naming context will not be bound."))); + } + + CosNaming::Name newname (nm.length ()); + + for (CORBA::ULong i = 0; + i < (nm.length () - 1); ++i) + { + newname.length (i + 1); + newname[i] = nm[i]; + + try + { + ctx->bind_new_context (newname); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Name_Utilities::bind_context - ") + ACE_TEXT("Bound new context %C\n"), newname[i].id.in ())); + } + catch (CosNaming::NamingContext::AlreadyBound &) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Name_Utilities::bind_context - ") + ACE_TEXT("Context %C already bound.\n"), newname[i].id.in ())); + } + } + } + + bool + unbind_object (const char *name, + CosNaming::NamingContext_ptr ctx) + { + DANCE_TRACE ("Name_Utilities::unbind_object"); + + if (CORBA::is_nil (ctx)) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("Name_Utilities::unbind_object - ") + ACE_TEXT("Provided naming context is nil, instance %C will not be unbound\n"), + name)); + } + + CosNaming::Name nm; + Name_Utilities::build_name (name, nm); + + try + { + ctx->unbind (nm); + } + catch (CORBA::Exception &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Name_Utilities::unbind_object - ") + ACE_TEXT("Caught CORBA exception whilst unbinding name %C: %C\n"), + name, e._info ().c_str ())); + return false; + } + return true; + } + + void + build_name (const char *name, + CosNaming::Name &nm) + { + DANCE_TRACE ("Name_Utilities::build_name"); + + /*ACE_Auto_Basic_Array_Ptr*/ char *safe_array (new char[ACE_OS::strlen (name) + 1]); + + ACE_Tokenizer_T parser (ACE_OS::strcpy (safe_array/*.get ()*/, name)); + parser.delimiter ('/'); + + char *next (0); + + while ((next = parser.next ()) != 0) + { + CORBA::ULong i = nm.length (); + nm.length (i + 1); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Name_Utilities::build_name - ") + ACE_TEXT("Found name component %C\n"), + next)); + + nm[i].id = CORBA::string_dup (next); + } + } + } +} diff --git a/modules/CIAO/DAnCE/NodeApplication/Name_Utilities.h b/modules/CIAO/DAnCE/NodeApplication/Name_Utilities.h new file mode 100644 index 00000000000..2685ee36012 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/Name_Utilities.h @@ -0,0 +1,40 @@ +/** + * @file Name_Utilities.h + * @author William R. Otte + * // $Id$ + * A set of utility methods to manages references. + * + */ + +#ifndef NAME_UTILITIES_H +#define NAME_UTILITIES_H + +#include "orbsvcs/CosNamingC.h" + +namespace DAnCE +{ + namespace Name_Utilities + { + /// Write IOR to named file. Will overwrite file if present. + bool write_ior (const ACE_TCHAR *file, const char *ior); + + /// Binds object to provided name, which may be formatted with / to indicate + /// naming contexts, e.g. A/B/C. + bool bind_object (const char *name, + CORBA::Object_ptr obj, + CosNaming::NamingContext_ptr); + + /// Will unbind the provided name. + bool unbind_object (const char *name, + CosNaming::NamingContext_ptr); + + void bind_context (CosNaming::Name &nm, + CosNaming::NamingContext_ptr); + + void build_name (const char *nm, + CosNaming::Name &); + + } +} + +#endif /* NAME_UTILITIES_H */ diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc b/modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc new file mode 100644 index 00000000000..6892f1b534a --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc @@ -0,0 +1,24 @@ +// -*- MPC -*- +// $Id$ + +project(NodeApplication): dance_lib, dynamicinterface, dance_component_server_svnt, \ + dance_nodeapplication_skel, \ + dance_logger, iortable, naming, ccm_configvalue, ciao_cs_client, ciao_componentserver_stub, \ + gen_ostream, avoids_ace_for_tao { + sharedname = DAnCE_NodeApplication + dynamicflags = NODEAPPLICATION_BUILD_DLL + +Source_Files { + NodeApplication_Impl.cpp + ComponentAttributesSetter.cpp + Name_Utilities.cpp + } + Header_Files { + NodeApplication_Impl.h + ComponentAttributesSetter.h + Name_Utilities.h + } +} + + + diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Export.h b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Export.h new file mode 100644 index 00000000000..bf2c6d7a5cb --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl NodeApplication +// ------------------------------ +#ifndef NODEAPPLICATION_EXPORT_H +#define NODEAPPLICATION_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (NODEAPPLICATION_HAS_DLL) +# define NODEAPPLICATION_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && NODEAPPLICATION_HAS_DLL */ + +#if !defined (NODEAPPLICATION_HAS_DLL) +# define NODEAPPLICATION_HAS_DLL 1 +#endif /* ! NODEAPPLICATION_HAS_DLL */ + +#if defined (NODEAPPLICATION_HAS_DLL) && (NODEAPPLICATION_HAS_DLL == 1) +# if defined (NODEAPPLICATION_BUILD_DLL) +# define NodeApplication_Export ACE_Proper_Export_Flag +# define NODEAPPLICATION_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define NODEAPPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* NODEAPPLICATION_BUILD_DLL */ +# define NodeApplication_Export ACE_Proper_Import_Flag +# define NODEAPPLICATION_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define NODEAPPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* NODEAPPLICATION_BUILD_DLL */ +#else /* NODEAPPLICATION_HAS_DLL == 1 */ +# define NodeApplication_Export +# define NODEAPPLICATION_SINGLETON_DECLARATION(T) +# define NODEAPPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* NODEAPPLICATION_HAS_DLL == 1 */ + +// Set NODEAPPLICATION_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (NODEAPPLICATION_NTRACE) +# if (ACE_NTRACE == 1) +# define NODEAPPLICATION_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define NODEAPPLICATION_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !NODEAPPLICATION_NTRACE */ + +#if (NODEAPPLICATION_NTRACE == 1) +# define NODEAPPLICATION_TRACE(X) +#else /* (NODEAPPLICATION_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define NODEAPPLICATION_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (NODEAPPLICATION_NTRACE == 1) */ + +#endif /* NODEAPPLICATION_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp new file mode 100644 index 00000000000..660e51c105d --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp @@ -0,0 +1,2229 @@ +// $Id$ +#include "NodeApplication_Impl.h" + +#include "ace/OS_Memory.h" + +#include "ace/streams.h" +#include "tao/AnyTypeCode/Any.h" +#include "tao/Object.h" +#include "tao/ORB.h" +#include "ccm/CCM_ObjectC.h" +#include "ccm/CCM_SessionComponentC.h" +#include "ciao/Valuetype_Factories/ConfigValue.h" +#include "ciao/ComponentServer/CIAO_ServerActivator_Impl.h" +#include "ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h" +#include "ciao/ComponentServer/CIAO_PropertiesC.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Deployment/Deployment_BaseC.h" +#include "Deployment/Deployment_ApplicationC.h" +#include "Deployment/Deployment_PlanErrorC.h" +#include "Deployment/Deployment_common.h" +#include "Deployment/DAnCE_PropertiesC.h" +#include "ComponentAttributesSetter.h" +#include "Name_Utilities.h" + +#include + +#ifdef GEN_OSTREAM_OPS +#include +#include +#endif /* GEN_OSTREAM_OPS */ + +using namespace DAnCE; + +namespace +{ + template + bool get_property_value (const char *name, PROPERTY_MAP &properties, T &val) + { + DANCE_TRACE ("NodeApplication::::get_property_value"); + CORBA::Any any; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Finding property value for name '%C'\n"), + name)); + + if (properties.find (name, any) == 0) + { + if (any >>= val) + { + return true; + } + else + { + DANCE_ERROR (1, (LM_WARNING, DLINFO + ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Failed to extract property value for %C\n"), name)); + return false; + } + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Property value for name '%C' has no value\n"), name)); + + return false; + } + + template<> + bool get_property_value (const char *name, PROPERTY_MAP &properties, bool &val) + { + DANCE_TRACE ("NodeApplication::::get_property_value"); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Finding property value for name '%C'\n"), + name)); + + CORBA::Any any; + if (properties.find (name, any) == 0) + { + if (any >>= CORBA::Any::to_boolean(val)) + { + return true; + } + else + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Failed to extract property value for %C\n"), name)); + return false; + } + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Property value for name '%C' has no value\n"), name)); + + return false; + } + + template<> + bool get_property_value (const char *name, PROPERTY_MAP &properties, const char * &val) + { + DANCE_TRACE ("NodeApplication::::get_property_value"); + CORBA::Any any; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Finding property value for name '%C'\n"), + name)); + + if (properties.find (name, any) == 0) + { + if (any >>= CORBA::Any::to_string(val, 0)) + { + return true; + } + else + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Failed to extract property value for %C\n"), name)); + return false; + } + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Property value for name '%C' has no value\n"), name)); + + return false; + } + + template + bool get_property_value (const char *name, const ::Deployment::Properties &properties, T &val) + { + DANCE_TRACE ("NodeApplication::::get_property_value"); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Finding property value for name '%C'\n"), + name)); + + for (CORBA::ULong i = 0; i < properties.length (); ++i) + { + if (ACE_OS::strcmp (properties[i].name.in (), name) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Found property '%C'\n"), name)); + if (properties[i].value >>= val) + return true; + else + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Failed to extract property value for %C\n"), name)); + return false; + } + } + } + + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Property value for name '%C' has no value\n"), name)); + + return false; + } + + template<> + bool get_property_value (const char *name, const ::Deployment::Properties &properties, const char * &val) + { + DANCE_TRACE ("NodeApplication::::get_property_value"); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Finding property value for name '%C'\n"), + name)); + + for (CORBA::ULong i = 0; i < properties.length (); ++i) + { + if (ACE_OS::strcmp (properties[i].name.in (), name) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Found property '%C'\n"), name)); + if (properties[i].value >>= CORBA::Any::to_string (val, 0)) + { + DANCE_DEBUG (9, (LM_TRACE, + DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Value is %C\n"), val)); + return true; + } + else + { + DANCE_ERROR (1, (LM_WARNING, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Failed to extract property value for %C\n"), name)); + return false; + } + } + } + + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication::::get_property_value - ") + ACE_TEXT("Unable to find property named %C\n"), name)); + + return false; + } + + /// Tests flag, if false, sets it to true and replaces the name and + /// reason flags of the exception. + template + void test_and_set_exception (bool &flag, EXCEPTION &exception, + const char *name, const char *reason) + { + if (!flag) + { + flag = true; + exception.name = name; + exception.reason = reason; + } + } + + void append_properties (::Deployment::Properties &dest, + const ::Deployment::Properties &src) + { + const char* edu_prop = "edu.vanderbilt.dre.CIAO.ComponentServer."; + for (CORBA::ULong i = 0; i < src.length (); ++i) + { + if (ACE_OS::strncmp (src[i].name.in (), edu_prop, ACE_OS::strlen (edu_prop)) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeApplication::append_properties - ") + ACE_TEXT("Adding property %C\n"), src[i].name.in ())); + CORBA::ULong const dest_length = dest.length (); + dest.length (dest_length + 1); + dest[dest_length].name = CORBA::string_dup (src[i].name.in ()); + dest[dest_length].value = src[i].value; + } + } + } +} + + +NodeApplication_Impl::NodeApplication_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const ::Deployment::DeploymentPlan& plan, + const ACE_CString& node_name, + const PROPERTY_MAP &properties) + : orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + plan_ (plan), + node_name_ (node_name), + properties_ (), + instances_ (plan.instance.length ()) +{ + DANCE_TRACE ("NodeApplication_Impl::NodeApplication_Impl"); + PROPERTY_MAP::const_iterator i = properties.begin (); + while (!i.done ()) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::NodeApplication_Impl - ") + ACE_TEXT("Binding value for property '%C'\n"), i->key ().c_str ())); + this->properties_.bind (i->key (), i->item ()); + i.advance (); + } + this->init (); +} + +NodeApplication_Impl::~NodeApplication_Impl() +{ + DANCE_TRACE( "NodeApplication_Impl::~NodeApplication_Impl()"); + + using namespace Components; + ConfigValues config_values; + config_values.length (1L); + CORBA::Any feature_any; + + /* TODO: This is highly suspect. I believe we should be using get_component_server, + not calling create_container. */ + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Deactivating %u ComponentServers\n"), + this->servers_.size ())); + for (size_t i = 0; i < this->servers_.size (); ++i) + { + ComponentServer &server = this->servers_[i]; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("In ComponentServer %u, deactivating %u containers\n"), i, server.containers.size ())); + for (size_t j = 0; j < server.containers.size (); ++j) + { + Container &container = server.containers[j]; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("In container %u hosted in server %u\n"), j, i)); + + try + { + if (!CORBA::is_nil (container.ref)) + server.ref->remove_container (container.ref.in ()); + + container.ref = CIAO::Deployment::Container::_nil (); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Caught CORBA exception while removing container %u on server %u: %C\n"), + j, i, ex._info ().c_str ())); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Caught unknown C++ exception while removing container %u on server %u.\n"), + j, i)); + } + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Removing component server %u\n"), i)); + + try + { + if (!CORBA::is_nil (server.ref)) + this->activator_->remove_component_server (server.ref.in ()); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Caught CORBA exception while removing server %u: %C\n"), + i, ex._info ().c_str ())); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Caught unknown C++ exception while removing server %u.\n"), + i)); + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::~NodeApplication_Impl - ") + ACE_TEXT("Successfully removed container %u on node %C.\n"), + i, this->node_name_.c_str ())); + } +} + +void +NodeApplication_Impl::init() +{ + DANCE_TRACE( "NodeApplication_Impl::init()"); + + /* TODO: Lets move this stuff to the constructor, shall we?!? */ + /* TODO: Might be nice to use a component configurator here to load the proper versions + of the serveractivator. */ + + /* ServerActivator configuration */ + CORBA::ULong spawn = 0; + const char *cs_path = 0; + const char *cs_args = 0; + CORBA::Boolean multithread = false; + + get_property_value (CIAO::Deployment::SERVER_EXECUTABLE, this->properties_, cs_path); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Component server path: %C\n"), cs_path)); + get_property_value (CIAO::Deployment::SERVER_ARGUMENTS, this->properties_, cs_args); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Component server arguments: %C\n"), cs_args)); + get_property_value (CIAO::Deployment::SERVER_TIMEOUT, this->properties_, spawn); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Spawn delay: %u\n"), spawn)); + get_property_value (CIAO::Deployment::SERVER_MULTITHREAD, this->properties_, multithread); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Threading: %C\n"), multithread ? "Multi" : "Single")); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Spawning server activator\n"))); + + CIAO::Deployment::ComponentInstallation_Impl *tmp_ci = 0; + + ACE_NEW_THROW_EX (tmp_ci, + CIAO::Deployment::ComponentInstallation_Impl (), + CORBA::NO_MEMORY ()); + + PortableServer::ServantBase_var safe_servant = tmp_ci; + + PortableServer::ObjectId_var id = this->poa_->activate_object (tmp_ci); + CORBA::Object_var ci_object = this->poa_->id_to_reference (id.in ()); + Components::Deployment::ComponentInstallation_var ci = + Components::Deployment::ComponentInstallation::_narrow (ci_object.in ()); + + for (CORBA::ULong i = 0; i < this->plan_.artifact.length (); ++i) + { + tmp_ci->install (this->plan_.artifact[i].name, + this->plan_.artifact[i].location[0]); + } + + CIAO::Deployment::CIAO_ServerActivator_i *tmp_act = 0; + ACE_NEW_THROW_EX (tmp_act, + CIAO::Deployment::CIAO_ServerActivator_i (spawn, + cs_path, + cs_args, + multithread, + ci.in (), + this->orb_.in(), + this->poa_.in()), + CORBA::NO_MEMORY ()); + this->activator_.reset (tmp_act); + + PortableServer::ObjectId_var sa_id = + this->poa_->activate_object (this->activator_.get ()); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::init - ServerActivator object created\n"))); + + const ACE_TCHAR *ior = 0; + + if (get_property_value (DAnCE::INSTANCE_NC, this->properties_, ior) || + get_property_value (DAnCE::DOMAIN_NC, this->properties_, ior)) + { + try + { + CORBA::Object_var obj = this->orb_->string_to_object (ior); + this->instance_nc_ = CosNaming::NamingContext::_narrow (obj); + } + catch (const CORBA::Exception &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Unable to resolve the instance naming context:%C\n"), + e._info ().c_str ())); + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("Successfully resolved the instance naming context.\n"))); + } + else DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init - ") + ACE_TEXT("No instance NC was provided\n"))); +} + +void +NodeApplication_Impl::configuration_complete_components () +{ + DANCE_TRACE( "NodeApplication_Impl::configuration_complete_components"); + + bool error = false; + ::Deployment::StartError exception; + + for (size_t k = 0; k < this->instances_.size (); ++k) + { + if (this->instances_[k]->type == eHome) + { + continue; + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::configuration_complete_components - ") + ACE_TEXT("Invoking configuration_complete on component instance %C on node %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + this->node_name_.c_str ())); + + try + { + Components::CCMObject_var ccmobj = + Components::CCMObject::_narrow (this->instances_[k]->ref.in ()); + if (CORBA::is_nil (this->instances_[k]->ref)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::configuration_complete_components - ") + ACE_TEXT("Failed to narrow object reference for component instance %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + continue; + } + + if (this->instances_[k]->state == eInstalled) + { + ccmobj->configuration_complete (); + this->instances_[k]->state = eConfigured; + } + else + { + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = "Attempting to activate component that has already passed the configure stage.\n"; + continue; + } + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::configuration_complete_components - ") + ACE_TEXT("Component %C successfully configured.\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::configuration_complete_components - ") + ACE_TEXT("Caught CORBA exception from ccm_activate on component %C: %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + ex._info ().c_str ())); + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = ex._info ().c_str (); + } + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::configuration_complete_components - ") + ACE_TEXT("Caught unknown C++ exception from ccm_activate on component %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = "Unknown C++ exception"; + } + } + } + + if (error) + throw exception; +} + +void +NodeApplication_Impl::start () +{ + DANCE_TRACE( "NodeApplication_Impl::start"); + + bool error (false); + ::Deployment::StartError exception; + + for (size_t k = 0; k < this->instances_.size (); ++k) + { + if (this->instances_[k]->type == eHome) + { + continue; + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Invoking start on component instance %C on node %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + this->node_name_.c_str ())); + + try + { + CIAO::Deployment::Container_var cont = + CIAO::Deployment::Container::_narrow (this->instances_[k]->container->ref.in()); + + if (CORBA::is_nil (this->instances_[k]->container->ref.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Failed to narrow object reference for container managing ") + ACE_TEXT("component instance %C to a CIAO container reference\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Failed to narrow managing container to CIAO container type"); + continue; + } + + if (this->instances_[k]->state == eConfigured || + this->instances_[k]->state == ePassive) + { + Components::CCMObject_var comp (Components::CCMObject::_narrow (this->instances_[k]->ref)); + cont->activate_component (comp.in ()); + this->instances_[k]->state = eActive; + } + else + { + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = "Attempting to activate component that is not configured or passive.\n"; + } + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Component %C successfully activated.\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Caught CORBA exception from ccm_activate on component %C: %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + ex._info ().c_str ())); + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = ex._info ().c_str (); + } + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Caught unknown C++ exception from ccm_activate on component %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = "Unknown C++ exception"; + } + } + } + + if (error) + throw exception; +} + +void +NodeApplication_Impl::install_home (Container &cont, Instance &inst) +{ + DANCE_TRACE( "NodeApplication_Impl::install_home"); + + const ::Deployment::MonolithicDeploymentDescription &mdd = + this->plan_.implementation[inst.mdd_idx]; + const ::Deployment::InstanceDeploymentDescription &idd = + this->plan_.instance[inst.idd_idx]; + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Starting installation of home %C on node %C\n"), + idd.name.in (), idd.node.in ())); + + this->instances_[inst.idd_idx] = &inst; + + // need to get significant property values + const char *entrypt = 0; + get_property_value (DAnCE::HOME_FACTORY, mdd.execParameter, entrypt); + + if (entrypt == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Unable to find home factory property on home %C\n"), + idd.name.in ())); + throw ::Deployment::InvalidComponentExecParameter (mdd.name.in (), + "No 'home factory' property present on MDD\n"); + } + + // @@TODO: Perhaps need better way to do this. + Components::ConfigValues config; + config.length (mdd.execParameter.length () + idd.configProperty.length ()); + CORBA::ULong pos (0); + + for (CORBA::ULong i = 0; i < mdd.execParameter.length (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Inserting value for execParameter %C\n"), mdd.execParameter[i].name.in ())); + config[pos++] = new CIAO::ConfigValue_impl (mdd.execParameter[i].name.in (), + mdd.execParameter[i].value); + } + + for (CORBA::ULong i = 0; i < idd.configProperty.length (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Inserting value for configProperty %C\n"), idd.configProperty[i].name.in ())); + config[pos++] = new CIAO::ConfigValue_impl (idd.configProperty[i].name.in (), + idd.configProperty[i].value); + } + + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Calling install_home on container. Home id '%C', entrypt '%C', ") + ACE_TEXT("length of config values is %u\n"), + idd.name.in (), entrypt, config.length ())); + + ::Components::CCMHome_var home = cont.ref->install_home (idd.name.in (), + entrypt, + config); + + if (CORBA::is_nil (home)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Got nil object reference from container while installing home %C on node %C,") + ACE_TEXT("throwing PlanError\n"), + idd.name.in (), idd.node.in ())); + throw ::Deployment::PlanError (idd.name.in (), + "Nil object reference returned from conainer"); + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Home '%C' on node '%C' successfully installed\n"), + idd.name.in (), idd.node.in ())); + + inst.ref = CORBA::Object::_narrow (home); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Populating attributes for home %C\n"), + idd.name.in ())); + + + ComponentAttributesSetter::SetComponentAttributes (idd.name.in (), + inst.ref.in (), + idd.configProperty, + this->orb_.in ()); + + inst.state = eInstalled; + } + catch (const Components::InvalidConfiguration &) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Error creating home %C on node %C, caught InvalidConfiguration. Throwing exception\n"), + idd.name.in (), idd.node.in ())); + throw ::Deployment::InvalidProperty (idd.name.in (), + "Invalid configuration exception from container"); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Caught CORBA exception while installing home %C: %C\n"), + idd.name.in (), + ex._info ().c_str ())); + throw ::Deployment::StartError (idd.name.in (), + ex._info ().c_str ()); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Caught unknown C++ exception while installing home %C\n"), + idd.name.in ())); + throw ::Deployment::StartError (idd.name.in (), + "Unknown C++ exception"); + } +} + +void +NodeApplication_Impl::install_component (Container &cont, Instance &inst) +{ + DANCE_TRACE( "NodeApplication_Impl::install_component"); + + const ::Deployment::MonolithicDeploymentDescription &mdd = this->plan_.implementation[inst.mdd_idx]; + const ::Deployment::InstanceDeploymentDescription &idd = this->plan_.instance[inst.idd_idx]; + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Starting installation of home %C on node %C\n"), + idd.name.in (), idd.node.in ())); + + this->instances_[inst.idd_idx] = &inst; + + const char *entrypt = 0; + get_property_value (DAnCE::COMPONENT_FACTORY, mdd.execParameter, entrypt); + + if (entrypt == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Unable to find component factory property on component %C\n"), + idd.name.in ())); + throw ::Deployment::InvalidComponentExecParameter (mdd.name.in (), + "No 'component factory' property present on MDD\n"); + } + + // @@TODO: Perhaps need better way to do this. + Components::ConfigValues config; + config.length (mdd.execParameter.length () + idd.configProperty.length ()); + CORBA::ULong pos (0); + + for (CORBA::ULong i = 0; i < mdd.execParameter.length (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Inserting value for execParameter %C\n"), mdd.execParameter[i].name.in ())); + config[pos++] = new CIAO::ConfigValue_impl (mdd.execParameter[i].name.in (), + mdd.execParameter[i].value); + } + + for (CORBA::ULong i = 0; i < idd.configProperty.length (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Inserting value for configProperty %C\n"), idd.configProperty[i].name.in ())); + config[pos++] = new CIAO::ConfigValue_impl (idd.configProperty[i].name.in (), + idd.configProperty[i].value); + } + + ::CIAO::Deployment::Container_var ciao_cont = ::CIAO::Deployment::Container::_narrow (cont.ref.in ()); + + if (CORBA::is_nil (ciao_cont.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Unable to narrow container assigned for component instance %C to one that supports ") + ACE_TEXT("un-homed components.\n"))); + throw ::Deployment::PlanError (idd.name.in (), + "Hosting container does not support unhomed components.\n"); + } + + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Calling install_component on container. Component id '%C', entrypt '%C', ") + ACE_TEXT("length of config values is %u\n"), + idd.name.in (), entrypt, config.length ())); + + ::Components::CCMObject_var comp = ciao_cont->install_component (idd.name.in (), + entrypt, + config); + + if (CORBA::is_nil (comp)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Got nil object reference from container while installing component %C on node %C,") + ACE_TEXT("throwing PlanError\n"), + idd.name.in (), idd.node.in ())); + throw ::Deployment::PlanError (idd.name.in (), + "Nil object reference returned from install_component on conainer"); + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Component '%C' on node '%C' successfully installed\n"), + idd.name.in (), idd.node.in ())); + + inst.ref = CORBA::Object::_narrow (comp); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Populating attributes for home %C\n"), + idd.name.in ())); + + + ComponentAttributesSetter::SetComponentAttributes (idd.name.in (), + inst.ref.in (), + idd.configProperty, + this->orb_.in ()); + + inst.state = eInstalled; + } + catch (const Components::InvalidConfiguration &) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Error creating component %C on node %C, caught InvalidConfiguration. Throwing exception\n"), + idd.name.in (), idd.node.in ())); + throw ::Deployment::InvalidProperty (idd.name.in (), + "Invalid configuration exception from container"); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Caught CORBA exception while installing component %C: %C\n"), + idd.name.in (), + ex._info ().c_str ())); + throw ::Deployment::StartError (idd.name.in (), + ex._info ().c_str ()); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_component - ") + ACE_TEXT("Caught unknown C++ exception while installing component %C\n"), + idd.name.in ())); + throw ::Deployment::StartError (idd.name.in (), + "Unknown C++ exception"); + } +} + +void +NodeApplication_Impl::install_homed_component (Container &cont, Instance &inst) +{ + DANCE_TRACE("NodeApplication_Impl::install_homed_component (unsigned int index)"); + + const ::Deployment::InstanceDeploymentDescription &idd = this->plan_.instance[inst.idd_idx]; + this->instances_[inst.idd_idx] = &inst; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Starting installation of homed component %C on node %C\n"), + idd.name.in (), + idd.node.in ())); + + const char *home_id = 0; + get_property_value (DAnCE::EXPLICIT_HOME, idd.configProperty, home_id); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Property %C has value %C\n"), + DAnCE::EXPLICIT_HOME, home_id)); + + + if (home_id == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Nodeapplication_Impl::install_homed_component - ") + ACE_TEXT("Apparent homed component %C lacks a %C configProperty, aborting installation\n"), + idd.name.in (), DAnCE::EXPLICIT_HOME)); + throw ::Deployment::PlanError (idd.name.in (), + "No explicit home property on component requiring explicit home."); + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Found explicit home property '%C' for component '%C'\n"), + home_id, + idd.name.in ())); + + Instance *home_inst (0); + + for (size_t i = 0; i < cont.homes.size (); ++i) + { + if (ACE_OS::strcmp (home_id, + this->plan_.instance[cont.homes[i].idd_idx].name.in ()) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Found home designated for component '%C'\n"), + idd.name.in ())); + home_inst = &cont.homes[i]; + break; + } + } + + if (home_inst == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Unable to find home instance matching %C allocated to same container as component %C\n"), + home_id, + idd.name.in ())); + throw ::Deployment::InvalidProperty (idd.name.in (), + "Unable to find valid home allocated to same container."); + } + + Components::KeylessCCMHome_var home = + Components::KeylessCCMHome::_narrow (home_inst->ref.in ()); + + if (CORBA::is_nil (home.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Object reference for home '%C' for homed component '%C' is nil\n"), + home_id, + idd.name.in ())); + throw ::Deployment::PlanError (idd.name.in (), + "Installed home for explicitly homed component has nil object reference\n"); + } + + try + { + inst.home = home_inst; + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Invoking create_component on home %C for component %C\n"), + home_id, + idd.name.in ())); + + Components::CCMObject_var ccm_obj = home->create_component (); + + if (CORBA::is_nil (ccm_obj)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Received nil component reference from create_component on home %C ") + ACE_TEXT(" while creating component %C\n"), + home_id, idd.name.in ())); + throw ::Deployment::StartError (idd.name.in (), + "Home for explicitly homed component returned nil"); + } + + inst.ref = CORBA::Object::_narrow (ccm_obj.in ()); + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Component %C successfully installed in home %C\n"), + idd.name.in (), + home_id)); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::install_home - ") + ACE_TEXT("Populating attributes for component %C\n"), + idd.name.in ())); + ComponentAttributesSetter::SetComponentAttributes (idd.name.in (), + inst.ref.in (), + idd.configProperty, + this->orb_.in ()); + inst.state = eInstalled; + } + catch (const Components::CreateFailure &) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Caught CreateFailure exception from home '%C' while installing component '%C'\n"), + home_inst, + idd.name.in ())); + throw ::Deployment::StartError (idd.name.in (), + "Caught CreateFailure exception"); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Caught CORBA exception while installing component %C in home %C: %C\n"), + idd.name.in (), + home_id, + ex._info ().c_str ())); + throw ::Deployment::StartError (idd.name.in (), + ex._info ().c_str ()); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::install_homed_component - ") + ACE_TEXT("Caught unknown C++ exception while installing component %C in home %C\n"), + idd.name.in (), + home_id)); + throw ::Deployment::StartError (idd.name.in (), + "Unknown C++ exception"); + } +} + +void +NodeApplication_Impl::create_component_server (size_t index) +{ + DANCE_TRACE ("NodeApplication_Impl::create_component_server"); + + ComponentServer &server = this->servers_[index]; + + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::create_component_Server - ") + ACE_TEXT("creating component server %u\n"), index)); + ::Components::ConfigValues config_values; + + config_values.length (this->servers_[index].properties.length ()); + for (CORBA::ULong i = 0; i < this->servers_[index].properties.length (); + ++i) + { + config_values[i] = new CIAO::ConfigValue_impl (this->servers_[index].properties[i].name.in (), + this->servers_[index].properties[i].value); + + } + + server.ref = this->activator_->create_component_server (config_values); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::create_component_server - ") + ACE_TEXT("component server created\n"))); + } + catch (const ::Components::CreateFailure& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::create_container - ") + ACE_TEXT("Components::Deployment::ServerActivator_var::create_component_server() ") + ACE_TEXT("returned ::Components::CreateFailure exception\n"))); + throw ::Deployment::StartError("", + "Received a ::Components::CreateFailure exception while creating component server."); + } + catch (const ::Components::Deployment::InvalidConfiguration& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::create_container - ") + ACE_TEXT("Components::Deployment::ServerActivator_var::create_component_server() ") + ACE_TEXT("returned ::Components::Deployment::InvalidConfiguration exception\n"))); + throw ::Deployment::InvalidProperty("", + "::Components::Deployment::InvalidConfiguration exception caught while creating server"); + } + + try + { + for (size_t i = 0; i < server.containers.size (); ++i) + { + this->create_container (index, i); + } + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::create_container - ") + ACE_TEXT("Caught exception whilst creating container; re-throwing.\n"))); + throw; + } +} + +void +NodeApplication_Impl::store_instance_ior (Instance &inst) +{ + DANCE_TRACE ("NodeApplication_Impl::store_instance_ior"); + + const char *name = 0; + + if (get_property_value (DAnCE::REGISTER_NAMING, + this->plan_.instance[inst.idd_idx].configProperty, + name)) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::store_instance_ior - ") + ACE_TEXT("Storing instance '%C' object reference in Naming Service as %C\n"), + this->plan_.instance[inst.idd_idx].name.in (), + name)); + + Name_Utilities::bind_object (name, inst.ref.in (), this->instance_nc_.in ()); + } + + if (get_property_value (DAnCE::INSTANCE_IOR_FILE, + this->plan_.instance[inst.idd_idx].configProperty, + name)) + { + CORBA::String_var ior = this->orb_->object_to_string (inst.ref.in ()); + Name_Utilities::write_ior (ACE_TEXT_CHAR_TO_TCHAR (name), + (ior.in ())); + } +} + +void +NodeApplication_Impl::create_container (size_t server, size_t cont_idx) +{ + DANCE_TRACE ("NodeApplication_Impl::create_container"); + + Container &container = this->servers_[server].containers[cont_idx]; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::create_container - ") + ACE_TEXT("Creating container\n"))); + // TODO: Need to create configvalues + Components::ConfigValues cvs; + + container.ref = this->servers_[server].ref->create_container (cvs); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::create_container - ") + ACE_TEXT("Configuring %u homes on container %u on server %u\n"), + container.homes.size (), + server, cont_idx)); + + // Configure homes first + for (size_t i = 0; i < container.homes.size (); ++i) + { + this->install_home (container, container.homes[i]); + this->store_instance_ior (container.homes[i]); + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::create_container - ") + ACE_TEXT("Configuring %u components on container %u on server %u\n"), + container.components.size (), + server, cont_idx)); + + // Configure components + for (size_t i = 0; i < container.components.size (); ++i) + { + switch (container.components[i].type) + { + case eComponent: + this->install_component (container, container.components[i]); + break; + case eHomedComponent: + this->install_homed_component (container, container.components[i]); + break; + default: + break; + } + this->store_instance_ior (container.components[i]); + } +} + +NodeApplication_Impl::ColocationMap +NodeApplication_Impl::create_colocation_groups (void) +{ + DANCE_TRACE ("NodeApplication_Impl::create_colocation_groups"); + + ColocationMap retval; + size_t num_servers = 0; + + for (CORBA::ULong i = 0; i < this->plan_.instance.length (); ++i) + { + retval [this->plan_.instance[i].name.in ()] = -1; + } + + for (CORBA::ULong i = 0; i < this->plan_.localityConstraint.length (); ++i) + { + if (this->plan_.localityConstraint[i].constraint != ::Deployment::PlanSameProcess) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT ("NodeApplication_Impl::create_colocation_groups - ") + ACE_TEXT ("Error: On locality constraint %u, unsupported locality constraint.\n"), + i)); + continue; + } + + const ::CORBA::ULongSeq &instances = this->plan_.localityConstraint[i].constrainedInstanceRef; + + for (CORBA::ULong j = 0; j < instances.length (); ++j) + { + std::string id = this->plan_.instance[instances[j]].name.in (); + + DANCE_DEBUG (8, (LM_INFO, DLINFO + ACE_TEXT ("NodeApplication_Impl::create_colocation_groups - ") + ACE_TEXT ("Instance <%C> allocated to component server %u\n"), + id.c_str (), num_servers)); + + retval[id] = num_servers; + } + + ++num_servers; + } + + bool create_default_server (false); + + for (ColocationMap::iterator i = retval.begin (); + i != retval.end (); ++i) + { + if (i->second == -1) + { + if (!create_default_server) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO + ACE_TEXT ("NodeApplication_Impl::create_colocation_groups - ") + ACE_TEXT ("Creating default colocation group.\n"))); + create_default_server = true; + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO + ACE_TEXT ("NodeApplication_Impl::create_colocation_groups - ") + ACE_TEXT ("Assigning instance <%C> to default colocation group.\n"), + i->first.c_str ())); + i->second = num_servers; + } + } + + if (create_default_server) + { + ++num_servers; + } + + this->servers_.size (num_servers); + + return retval; +} + +void +NodeApplication_Impl::init_components() +{ + DANCE_TRACE ("NodeApplication_Impl::init_components"); + + Components::ConfigValues config_values; + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("NodeApplication_Impl::init_components - ") + ACE_TEXT("Configuring %u component/home instances\n"), + this->plan_.instance.length())); + + if (this->plan_.instance.length () == 0) + return; + + ColocationMap colocation_map = this->create_colocation_groups (); + + // @@TODO: For the moment, we are only going to support a single container per server. + // in the future, we will need to determine how many containers we need per server. + for (size_t i = 0; i < this->servers_.size (); ++i) + { + this->servers_[i].containers.size (1); + } + + for (CORBA::ULong i = 0; i < this->plan_.instance.length(); i++) + { + try + { + CORBA::ULong impl = this->plan_.instance[i].implementationRef; + // Determine type from implementation properties, then from instance properties. + EInstanceType type = + this->get_instance_type (this->plan_.implementation[impl].execParameter); + if (type == eInvalid) + type = this->get_instance_type (this->plan_.instance[i].configProperty); + + switch (type) + { + case eHome: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("NodeApplication_Impl::init_components - ") + ACE_TEXT("Allocating instance %C as a home\n"), + this->plan_.instance[i].name.in ())); + size_t const svr = colocation_map[this->plan_.instance[i].name.in ()]; + size_t const pos = this->servers_[svr].containers[0].homes.size (); + + append_properties (this->servers_[svr].properties, this->plan_.instance[i].configProperty); + + this->servers_[svr].containers[0].homes.size (pos + 1); + this->servers_[svr].containers[0].homes[pos] = Instance (eHome, + &this->servers_[svr].containers[0], + i, + this->plan_.instance[i].implementationRef); + break; + } + case eComponent: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init_components - ") + ACE_TEXT("Allocating instance %C as a standalone component\n"), + this->plan_.instance[i].name.in ())); + size_t const svr = colocation_map[this->plan_.instance[i].name.in ()]; + size_t const pos = this->servers_[svr].containers[0].components.size (); + append_properties (this->servers_[svr].properties, this->plan_.instance[i].configProperty); + this->servers_[svr].containers[0].components.size (pos + 1); + this->servers_[svr].containers[0].components[pos] = Instance (eComponent, + &this->servers_[svr].containers[0], + i, + this->plan_.instance[i].implementationRef); + break; + } + case eHomedComponent: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init_components - ") + ACE_TEXT("Allocating instance %C as a home managed component\n"), + this->plan_.instance[i].name.in ())); + size_t const svr = colocation_map[this->plan_.instance[i].name.in ()]; + size_t const pos = this->servers_[svr].containers[0].components.size (); + append_properties (this->servers_[svr].properties, this->plan_.instance[i].configProperty); + this->servers_[svr].containers[0].components.size (pos + 1); + this->servers_[svr].containers[0].components[pos] = Instance (eHomedComponent, + &this->servers_[svr].containers[0], + i, + this->plan_.instance[i].implementationRef); + break; + } + default: + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::init_components - ") + ACE_TEXT("get_instance_type function returned invalid instance type\n"))); + throw ::Deployment::InvalidProperty (this->plan_.instance[i].name.in (), + "Unable to affirmatively determine instance type"); + } + } // switch + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("Exception was thrown while sorting instance \"%C\".\n"), + this->plan_.instance[i].name.in())); + throw; + } + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeApplication_Impl::init_components - ") + ACE_TEXT("Creating component servers and installing components.\n"))); + + for (size_t i = 0; i < this->servers_.size (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::init_components - ") + ACE_TEXT("Creating component server with index %u\n"), i)); + this->create_component_server (i); + } + + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::init_components - finished\n"))); +} + +void +NodeApplication_Impl::passivate_components() +{ + DANCE_TRACE ("NodeApplication_Impl::passivate_components()"); + + bool error (false); + ::Deployment::StopError exception ("unfilled", "unfilled passivate components"); + + for (size_t k = 0; k < this->instances_.size (); ++k) + { + if (this->instances_[k]->type == eHome || + this->instances_[k]->type == eInvalid) + continue; + + + try + { + CIAO::Deployment::Container_var cont = + CIAO::Deployment::Container::_narrow (this->instances_[k]->container->ref.in()); + + if (CORBA::is_nil (this->instances_[k]->container->ref.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Failed to narrow object reference for container managing ") + ACE_TEXT("component instance %C to a CIAO container reference\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Failed to narrow managing container to CIAO container type"); + continue; + } + + if (this->instances_[k]->state == eActive) + { + Components::CCMObject_var comp (Components::CCMObject::_narrow (this->instances_[k]->ref)); + cont->passivate_component (comp.in ()); + this->instances_[k]->state = ePassive; + } + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::start - ") + ACE_TEXT("Attempting to passivate non-active component %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Attempting to passivate non-active component."); + continue; + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::passivate_components - ") + ACE_TEXT("Component %C successfully passivated.\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::passivate_components - ") + ACE_TEXT("Caught CORBA exception from ccm_passivate on component %C: %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + ex._info ().c_str ())); + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = ex._info ().c_str (); + } + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::passivate_components - ") + ACE_TEXT("Caught unknown C++ exception from ccm_passivate on component %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + if (!error) + { + error = true; + exception.name = this->plan_.instance[this->instances_[k]->idd_idx].name.in (); + exception.reason = "Unknown C++ exception"; + } + } + } + + if (error) + throw exception; +} + +void +NodeApplication_Impl::remove_components() +{ + DANCE_TRACE ("NodeApplication_Impl::remove_components()"); + + bool error (false); + ::Deployment::StopError exception ("unfilled", "unfilled remove_components"); + + // Removing components first. + for (size_t k = 0; k < this->instances_.size (); ++k) + { + try + { + if (this->instances_[k]->type == eInvalid || + this->instances_[k]->type == eHome) + continue; + + if (this->instances_[k]->state != ePassive) + DANCE_DEBUG (6, (LM_WARNING, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Attempting to remove component that is not passive.\n"))); + + if (this->instances_[k]->type == eComponent) + { + if (this->instances_[k]->container == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Container element in component data structure for '%C' is nill\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in () + )); + + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Container element in component data structure is nil\n"); + this->instances_[k]->state = eInvalidState; + continue; + } + + CIAO::Deployment::Container_var ciao_container = + CIAO::Deployment::Container::_narrow (this->instances_[k]->container->ref.in ()); + + if (CORBA::is_nil (ciao_container.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Attempted to remove un-homed component from unsupported container\n"))); + + test_and_set_exception (error, exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Attempted to remove un-homed component from unsupported container\n"); + this->instances_[k]->state = eInvalidState; + continue; + } + + ciao_container->remove_component (Components::CCMObject::_narrow (this->instances_[k]->ref.in ())); + } + else + { + Components::CCMHome_var home = + Components::CCMHome::_narrow (this->instances_[k]->home->ref.in ()); + + if (CORBA::is_nil (home)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Object reference for home %C, managing component %C is nil.\n"), + this->plan_.instance[this->instances_[k]->home->idd_idx].name.in (), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Managing home's object reference is invalid."); + this->instances_[k]->state = eInvalidState; + continue; + } + + home->remove_component (Components::CCMObject::_narrow (this->instances_[k]->ref.in ())); + } + + + this->instances_[k]->state = eRemoved; + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Component %C successfully removed.\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Caught CORBA exception removing on component %C: %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + ex._info ().c_str ())); + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + exception.reason = ex._info ().c_str ()); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Caught unknown C++ exception from ccm_remove on component %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Unknown C++ exception"); + } + } + + for (size_t k = 0; k < this->instances_.size (); ++k) + { + try + { + if (this->instances_[k]->type != eHome) + continue; + + DANCE_ERROR (1, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Removing home %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + + if (this->instances_[k]->container == 0 || + CORBA::is_nil (this->instances_[k]->container->ref.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Home %C lacks an associated container reference\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Didn't have a valid container reference"); + continue; + } + + Components::CCMHome_var home = Components::CCMHome::_narrow (this->instances_[k]->ref.in ()); + this->instances_[k]->container->ref->remove_home (home.in ()); + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Successfully uninstalled home %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Caught CORBA exception removing home %C: %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + ex._info ().c_str ())); + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + exception.reason = ex._info ().c_str ()); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::remove_components - ") + ACE_TEXT("Caught unknown C++ exception from while removing home %C\n"), + this->plan_.instance[this->instances_[k]->idd_idx].name.in ())); + test_and_set_exception (error, + exception, + this->plan_.instance[this->instances_[k]->idd_idx].name.in (), + "Unknown C++ exception"); + } + } + +if (error) + throw exception; +} + +NodeApplication_Impl::EInstanceType +NodeApplication_Impl::get_instance_type (const ::Deployment::Properties& prop) const +{ + DANCE_TRACE ("NodeApplication_Impl::get_instance_type"); + + for (CORBA::ULong i = 0; i < prop.length (); ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::get_instance_type - ") + ACE_TEXT("Checking property %C\n"), + prop[i].name.in ())); + + if (ACE_OS::strcmp (prop[i].name.in (), + DAnCE::HOME_FACTORY) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::get_instance_type - ") + ACE_TEXT("Found Home type\n"))); + return eHome; + } + if (ACE_OS::strcmp (prop[i].name.in (), + DAnCE::COMPONENT_FACTORY) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::get_instance_type - ") + ACE_TEXT("Found unmanaged component type.\n"))); + return eComponent; + } + if (ACE_OS::strcmp (prop[i].name.in (), + DAnCE::EXPLICIT_HOME) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::get_instance_type - ") + ACE_TEXT("Found explicit home component type.\n"))); + return eHomedComponent; + } + } + + DANCE_ERROR (1, (LM_INFO, DLINFO ACE_TEXT("NodeApplication_Impl::get_instance_type - ") + ACE_TEXT("Unable to determine instance type\n"))); + return eInvalid; +} + +::Deployment::Connections* +NodeApplication_Impl::getAllConnections() +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - started\n"))); + + ::Deployment::Connections_var conn; + ACE_NEW_THROW_EX (conn, + ::Deployment::Connections (), + CORBA::NO_MEMORY ()); + unsigned int index = 0; + + for (CORBA::ULong i = 0; i < this->plan_.connection.length(); i++) + { + for (CORBA::ULong j = 0; j < this->plan_.connection[i].internalEndpoint.length(); j++) + { + if (this->plan_.connection[i].internalEndpoint[j].provider) + { + index = conn->length (); + conn->length (index + 1); + (*conn) [index].name = CORBA::string_dup (this->plan_.connection[i].name.in()); + + ACE_CString const inst_name = + this->plan_.instance[this->plan_.connection[i].internalEndpoint[j].instanceRef].name.in(); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("Found provider '%C' for connection '%C'\n"), + this->plan_.connection[i].name.in (), + inst_name.c_str ())); + + Components::CCMObject_var obj = + Components::CCMObject:: + _narrow (this->instances_[this->plan_.connection[i].internalEndpoint[j].instanceRef]->ref.in ()); + + (*conn) [index].endpoint.length (1L); + switch (this->plan_.connection[i].internalEndpoint[j].kind) + { + case ::Deployment::Facet: + { + try + { + ACE_CString const name = this->plan_.connection[i].internalEndpoint[j].portName.in(); + if (name.compare ("supports") != 0) + { + if (this->is_local_facet (this->plan_.connection[i])) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("Found local facet for connection %C endpoint %C started\n"), + this->plan_.connection[i].name.in(), + name.c_str ())); + (*conn) [index].endpoint[0] = CORBA::Object::_duplicate (obj.in()); + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("provide_facet for connection %C endpoint %C started\n"), + this->plan_.connection[i].name.in(), + name.c_str ())); + (*conn) [index].endpoint[0] = obj->provide_facet (name.c_str()); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("provide_facet for connection %C endpoint %C finished\n"), + this->plan_.connection[i].name.in(), + name.c_str ())); + } + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("provide_facet for connection %C endpoint %C started\n"), + this->plan_.connection[i].name.in(), + name.c_str ())); + (*conn) [index].endpoint[0] = CORBA::Object::_duplicate (obj.in()); + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - provide_facet finished\n"))); + } + catch (const ::Components::InvalidName& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("Components::CCMObject_var::provide_facet() returned ") + ACE_TEXT("::Components::InvalidName exception for connection %C and port %C\n"), + this->plan_.connection[i].name.in (), + this->plan_.connection[i].internalEndpoint[j].portName.in ())); + throw ::Deployment::InvalidProperty(this->plan_.connection[i].name.in (), + "Container returned InvalidName"); + } + break; + } + + case ::Deployment::EventConsumer: + { + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("get_consumer for connection %C endpoint %C started\n"), + this->plan_.connection[i].name.in(), + this->plan_.connection[i].internalEndpoint[j].portName.in())); + (*conn) [index].endpoint[0] = obj->get_consumer (this->plan_.connection[i].internalEndpoint[j].portName.in()); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("get_consumer finished\n"))); + } + catch (const ::Components::InvalidName& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("Components::CCMObject_var::get_consumer() returned ") + ACE_TEXT("::Components::InvalidName exception for connection %C and port %C\n"), + this->plan_.connection[i].name.in (), + this->plan_.connection[i].internalEndpoint[j].portName.in ())); + throw ::Deployment::InvalidProperty(this->plan_.connection[i].name.in (), + "Container returned InvalidName exception"); + } + break; + } + default: + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::getAllConnections - ") + ACE_TEXT("Connection.InternalEndPoint.Kind is not a ") + ACE_TEXT("Deployment::Facet or Deployment::EventConsumer\n"))); + throw ::Deployment::InvalidProperty(this->plan_.connection[i].name.in (), + "Invalid connection type, should be Facet or EventConsumer"); + } + } + } + } + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::getAllConnections - finished\n"))); + return conn._retn(); +} + +void +NodeApplication_Impl::finishLaunch (const ::Deployment::Connections & providedReference, + ::CORBA::Boolean start) +{ + DANCE_TRACE ("NodeApplication_Impl::finishLaunch"); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("started for connections sequence with length %d and plan size %d\n"), + providedReference.length(), + this->plan_.connection.length())); + +#ifdef GEN_OSTREAM_OPS + { + std::ostringstream pr_stream; + pr_stream << providedReference << std::endl; + DANCE_DEBUG (9, (LM_TRACE, DLINFO "NodeApplication_Impl::finishLaunch - Provided references: %C\n", + pr_stream.str ().c_str ())); + } +#endif /* GEN_OSTREAM_OPS */ + + for (CORBA::ULong j = 0; j < this->plan_.connection.length(); ++j) + { + CORBA::ULong inst (this->plan_.connection[j].internalEndpoint[0].instanceRef); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("Connection %C, instance %u\n"), + this->plan_.connection[j].name.in (), + inst)); + +#ifdef GEN_OSTREAM_OPS + { + std::ostringstream conn_stream; + conn_stream << this->plan_.connection[j] << std::endl; + DANCE_DEBUG (9, (LM_TRACE, "NodeApplication_Impl::finishLaunch - Local connections: %C\n", conn_stream.str ().c_str ())); + } +#endif /* GEN_OSTREAM_OPS */ + + Components::CCMObject_var obj = + Components::CCMObject::_narrow (this->instances_[inst]->ref.in ()); + + if (CORBA::is_nil (obj.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("Unable to narrow apparent component instance reference to CCMObject for instance '%C'\n"), + this->plan_.instance[inst].name.in ())); + throw ::Deployment::InvalidConnection (this->plan_.instance[inst].name.in (), + "Unable to narrow apparent component instance reference to CCMObject\n"); + } + + ::Deployment::PlanConnectionDescription const &conn = this->plan_.connection[j]; + + ACE_CString const name = conn.name.in(); + + for (CORBA::ULong i = 0; i < providedReference.length(); ++i) + { + if (name.compare (providedReference[i].name.in()) == 0) + { + try + { + switch (conn.internalEndpoint[0].kind) + { + case ::Deployment::Facet: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("Set for facet [%C]\n"), name.c_str ())); + Components::CCMObject_var ext_inst; + try + { + if (0 == conn.externalReference.length()) + { + if (conn.internalEndpoint.length () == 2 && + (conn.internalEndpoint[1].kind == ::Deployment::MultiplexReceptacle || + conn.internalEndpoint[1].kind == ::Deployment::SimplexReceptacle)) + { + obj = Components::CCMObject:: + _narrow (this->instances_[conn.internalEndpoint[1].instanceRef]->ref.in ()); + + ::Components::CCMObject_var facet = + ::Components::CCMObject::_narrow (providedReference[i].endpoint[0].in ()); + + ::Components::CCMObject_var recep = + ::Components::CCMObject::_narrow (this->instances_[conn.internalEndpoint[1].instanceRef]->ref.in ()); + + ::CIAO::Deployment::Container_var cont = + ::CIAO::Deployment::Container::_narrow (this->instances_[conn.internalEndpoint[1].instanceRef]->container->ref.in ()); + + this->connect_receptacle (conn, + facet.in (), + conn.internalEndpoint[0].portName.in (), + obj.in (), + conn.internalEndpoint[1].portName.in(), + cont.in ()); + } + break; + } + CORBA::Object_var tmp = + this->orb_->string_to_object (conn.externalReference[0].location.in()); + ext_inst = Components::CCMObject::_narrow (tmp); + if (CORBA::is_nil (ext_inst.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("facet for [%C] can't be narrowed\n"), name.c_str ())); + break; + } + this->connect_receptacle_ext (ext_inst, + conn.externalReference[0].portName.in(), + providedReference[i].endpoint[0].in()); + } + catch (const CORBA::OBJECT_NOT_EXIST&) + { + // @@TODO: Shouldn't this be an error?!? + break; + } + catch (const CORBA::TRANSIENT&) + { + // @@TODO: Shouldn't this be an error?!? + break; + } + + break; + } + + case ::Deployment::EventConsumer: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - set for consumer\n"))); + Components::CCMObject_var ext_inst; + try + { + if (0 == conn.externalReference.length()) + { + break; + } + CORBA::Object_var tmp = + this->orb_->string_to_object (conn.externalReference[0].location.in()); + ext_inst = Components::CCMObject::_narrow (tmp); + if (CORBA::is_nil (ext_inst.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("reference for %C can't be narrowed\n"), name.c_str ())); + throw ::Deployment::InvalidConnection(conn.name.in (), + "Couldn't narrow reference for external reference"); + break; + } + try + { + // Check is connection kind is consumer to emitter? + this->connect_emitter_ext (ext_inst, + conn.externalReference[0].portName.in(), + providedReference[i].endpoint[0].in()); + } + catch (const ::Components::InvalidName&) + { + // No this is consumer to publisher + this->connect_publisher (ext_inst, + conn.externalReference[0].portName.in(), + providedReference[i].endpoint[0].in()); + } + } + catch (const CORBA::OBJECT_NOT_EXIST&) + { + break; + } + catch (const CORBA::TRANSIENT&) + { + break; + } + break; + } + case ::Deployment::MultiplexReceptacle: + case ::Deployment::SimplexReceptacle: + { + // What we should do with Cookie, returned from connect call??? + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - Set for receptacle\n"))); + ::Components::CCMObject_var facet = + ::Components::CCMObject::_narrow (providedReference[i].endpoint[0].in ()); + + if (conn.internalEndpoint.length () == 2) + { + ::CIAO::Deployment::Container_var cont = + ::CIAO::Deployment::Container::_narrow (this->instances_[conn.internalEndpoint[1].instanceRef]->container->ref.in ()); + this->connect_receptacle (conn, + facet.in (), + conn.internalEndpoint[1].portName.in (), + obj.in(), + conn.internalEndpoint[0].portName.in(), + cont.in ()); + } + else + { + this->connect_receptacle (conn, + obj.in (), + "", + providedReference[i].endpoint[0].in(), + conn.internalEndpoint[0].portName.in(), + ::CIAO::Deployment::Container::_nil()); + } + + break; + } + case ::Deployment::EventEmitter: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - set for emitter\n"))); + this->connect_emitter (obj.in(), + conn.internalEndpoint[0].portName.in(), + providedReference[i].endpoint[0].in()); + break; + } + case ::Deployment::EventPublisher: + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - set for publisher\n"))); + this->connect_publisher (obj.in(), + conn.internalEndpoint[0].portName.in(), + providedReference[i].endpoint[0].in()); + break; + } + default: + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - currect Connection.InternalEndPoint.Kind ") + ACE_TEXT("is not a Deployment::SimplexReceptacle, Deployment::EventEmitter, Deployment::EventPublisher ") + ACE_TEXT("(Connection:%C Kind:%i PortName:%C)\n"), + conn.name.in(), + conn.internalEndpoint[0].kind, + conn.internalEndpoint[0].portName.in() + )); + throw ::Deployment::InvalidConnection(conn.name.in (), + "Invalid connection type, should be Receptacle or even producer."); + }//default + }//switch + } + catch (::Deployment::StartError &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("Intercepted StartError exception while configuring [%C] connection, rethrowing\n"), + name.c_str ())); + ex.name = name.c_str (); + throw; + } + catch (::Deployment::InvalidConnection &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - ") + ACE_TEXT("Intercepted InvalidConnection exception while configuring [%C] connection, rethrowing\n"), + name.c_str ())); + ex.name = name.c_str (); + throw; + } + }//if(name.compare(providedReference[i].name.in()) == 0) + }//for ( unsigned int i = 0; i < providedReference.length(); ++i ) + }//for ( unsigned int j = 0; j < this->plan_.connection.length(); ++j ) + + this->configuration_complete_components (); + + if (start) + { + this->start(); + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::finishLaunch - finished\n"))); +} + +bool +NodeApplication_Impl::is_local_facet (const ::Deployment::PlanConnectionDescription& conn) +{ + Deployment::Requirements const& deploy_req = conn.deployRequirement; + for (CORBA::ULong i = 0; i < deploy_req.length (); i++) + { + if (ACE_OS::strcmp (deploy_req[i].name, "edu.dre.vanderbilt.DAnCE.ConnectionType") == 0 && + ACE_OS::strcmp (deploy_req[i].resourceType, "Local_Interface") == 0) + { + return true; + } + } + return false; +} + +Components::Cookie* +NodeApplication_Impl::connect_receptacle (const ::Deployment::PlanConnectionDescription& conn, + Components::CCMObject_ptr facet, + const ACE_CString &facet_name, + CORBA::Object_ptr receptacle, + const ACE_CString& recep_name, + CIAO::Deployment::Container_ptr cont) +{ + Components::Cookie* res = 0; + try + { + if (this->is_local_facet (conn)) + { + ::Components::CCMObject_var ccm_receptacle = + ::Components::CCMObject::_narrow (receptacle); + + if (CORBA::is_nil (facet)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT ("Unable to narrow facet for local facet connection [%C] to receptable [%C]\n"), + facet_name.c_str (), recep_name.c_str ())); + throw ::Deployment::InvalidConnection ("", ""); + } + + if (CORBA::is_nil (ccm_receptacle)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT ("Unable to narrow receptacle for local facet connection [%C] to receptable [%C]\n"), + facet_name.c_str (), recep_name.c_str ())); + throw ::Deployment::InvalidConnection ("", ""); + } + + if (CORBA::is_nil (cont)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT ("Unable to narrow container for local facet connection [%C] to receptable [%C]\n"), + facet_name.c_str (), recep_name.c_str ())); + throw ::Deployment::InvalidConnection ("", ""); + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT ("NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT ("Connecting local facet [%C] to receptacle [%C]\n"), + facet_name.c_str (), recep_name.c_str ())); + + cont->connect_local_facet (facet, facet_name.c_str (), ccm_receptacle, recep_name.c_str ()); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle - connect finished\n"))); + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT("connect SimplexReceptacle for [%C] started\n"), recep_name.c_str())); + res = facet->connect (recep_name.c_str(), receptacle); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle - connect finished\n"))); + } + } + catch (const ::Components::InvalidName& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::InvalidName exception\n"))); + throw ::Deployment::StartError("", + "Received InvalidName exception while connecting receptacle."); + } + catch (const ::Components::InvalidConnection& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::InvalidConnection exception\n"))); + throw ::Deployment::InvalidConnection("", + "InvalidConnection caught while connecting receptacle."); + } + catch (const ::Components::AlreadyConnected& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::AlreadyConnected exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught AlreadyConnected exception while connecting receptacle"); + } + catch (const ::Components::ExceededConnectionLimit& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::ExceededConnectionLimit exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught ExceededConnectionLimit exception while connecting receptacle."); + } + return res; +} + +Components::Cookie* +NodeApplication_Impl::connect_receptacle_ext (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr facet) +{ + Components::Cookie* res = 0; + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle_ext - ") + ACE_TEXT("connect SimplexReceptacle for %C started\n"), port_name.c_str())); + res = inst->connect (port_name.c_str(), facet); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_receptacle_ext - connect finished\n"))); + } + catch (const ::Components::InvalidName& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle_ext - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::InvalidName exception\n"))); + throw ::Deployment::StartError("", + "Caught InvalidName exception while connecting external receptacle."); + } + catch (const ::Components::InvalidConnection& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle_ext - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::InvalidConnection exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught InvalidConnection exception while connecting external receptacle."); + } + catch (const ::Components::AlreadyConnected& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle_ext - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::AlreadyConnected exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught AlreadyConnected exception while connecting external receptacle."); + } + catch (const ::Components::ExceededConnectionLimit& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_receptacle_ext - ") + ACE_TEXT("Components::CCMObject_var::connect() returned ::Components::ExceededConnectionLimit exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught ExceededConnectionLimit while connecting external receptacle."); + } + return res; +} + +void +NodeApplication_Impl::connect_emitter (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr consumer) +{ + Components::EventConsumerBase_var event = Components::EventConsumerBase::_unchecked_narrow (consumer); + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_emitter - ") + ACE_TEXT("connect_consumer for %C started\n"), port_name.c_str())); + inst->connect_consumer (port_name.c_str(), event); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_emitter - ") + ACE_TEXT("connect_consumer finished\n"))); + } + catch (const ::Components::InvalidName& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" ACE_TEXT(NodeApplication_Impl::connect_emitter - ") + ACE_TEXT("Components::CCMObject_var::connect_consumer() returned ::Components::InvalidName exception\n"))); + throw ::Deployment::StartError("", + "Caught InvalidName while connecting emitter."); + } + catch (const ::Components::AlreadyConnected& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_emitter - ") + ACE_TEXT("Components::CCMObject_var::connect_consumer() returned ::Components::AlreadyConnected exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught AlreadyConnected exception while connecting emitter"); + } + catch (const ::Components::InvalidConnection& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_emitter - ") + ACE_TEXT("Components::CCMObject_var::connect_consumer() returned ::Components::InvalidConnection exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught InvalidConnection while connecting emitter."); + } +} + +void +NodeApplication_Impl::connect_emitter_ext (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr consumer) +{ + Components::EventConsumerBase_var event = Components::EventConsumerBase::_unchecked_narrow (consumer); + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_emitter_ext - ") + ACE_TEXT("connect_emitter_ext for %C started\n"), port_name.c_str())); + inst->connect_consumer (port_name.c_str(), event); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_emitter_ext - connect_emitter_ext finished\n"))); + } + catch (const ::Components::AlreadyConnected& ) + { + DANCE_DEBUG (6, (LM_WARNING, ACE_TEXT("NodeApplication_Impl::connect_emitter_ext - ") + ACE_TEXT("Components::CCMObject_var::connect_consumer() returned ::Components::AlreadyConnected exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught AlreadyConnected exception while connecting external emitter."); + } + catch (const ::Components::InvalidConnection& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_emitter_ext - ") + ACE_TEXT("Components::CCMObject_var::connect_consumer() returned ::Components::InvalidConnection exception\n"))); + throw ::Deployment::InvalidConnection("", + "Caught InvalidConnection exception while connecting external emitter."); + } +} + +Components::Cookie* +NodeApplication_Impl::connect_publisher (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr consumer) +{ + DANCE_TRACE ("NodeApplication_Impl::connect_publisher"); + + if (CORBA::is_nil (inst)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeApplication_Impl::connect_publisher - ") + ACE_TEXT("Provided a nil CCMObject reference while connecting port %C\n"), + port_name.c_str ())); + throw ::Deployment::InvalidConnection (); + } + Components::Cookie* res = 0; + Components::EventConsumerBase_var event = Components::EventConsumerBase::_unchecked_narrow (consumer); + try + { + res = inst->subscribe (port_name.c_str(), event); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeApplication_Impl::connect_publisher - successfully subscribed %C\n"), + port_name.c_str ())); + } + catch (const ::Components::InvalidName& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_publisher - ") + ACE_TEXT("Components::CCMObject_var::subscribe() returned ::Components::InvalidName exception\n"))); + throw ::Deployment::StartError("", "Caught InvalidName exception while connecting publisher"); + } + catch (const ::Components::InvalidConnection& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_publisher - ") + ACE_TEXT("Components::CCMObject_var::subscribe() returned ::Components::InvalidConnection exception\n"))); + throw ::Deployment::InvalidConnection("", "Caught InvalidConnection exception while connecting publisher."); + } + catch (const ::Components::ExceededConnectionLimit& ) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT(" NodeApplication_Impl::connect_publisher - ") + ACE_TEXT("Components::CCMObject_var::subscribe() returned ::Components::ExceededCOnnectionLimit exception\n"))); + throw ::Deployment::InvalidConnection("", "Caught ExceededConnectionLimit exception while connecting publisher."); + } + return res; +} + diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h new file mode 100644 index 00000000000..ad6905fbd17 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h @@ -0,0 +1,212 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file NodeApplication_Impl.h + * + * $Id$ + * + * @brief Implementation of Deployment::NodeApplication + * + * @author Erwin Gottlieb + * @author William R. Otte + */ +//============================================================================= + + +#ifndef NODEAPPLICATION_IMPL_H_ +#define NODEAPPLICATION_IMPL_H_ + +#include "NodeApplication_Export.h" + +#include "ace/Containers_T.h" +#include "tao/ORB.h" +#include "tao/Object.h" +#include "ccm/CCM_KeylessCCMHomeC.h" +#include "ccm/ComponentsC.h" +#include "ciao/ComponentServer/CIAO_ServerActivator_Impl.h" +#include "orbsvcs/orbsvcs/CosNamingC.h" + +#include "ccm/ComponentServer/CCM_ComponentServerC.h" +#include "Deployment/Deployment_NodeApplicationS.h" +#include "Deployment/Deployment_DeploymentPlanC.h" +#include "Deployment/DeploymentC.h" +#include "Deployment/Deployment_common.h" + +#include + +namespace DAnCE +{ + + class NodeManager_Impl; + + class NodeApplication_Export NodeApplication_Impl : public virtual POA_Deployment::NodeApplication + { + public: + NodeApplication_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const ::Deployment::DeploymentPlan& plan, + const ACE_CString& node_name, + const PROPERTY_MAP &properties); + + virtual ~NodeApplication_Impl(); + + virtual void finishLaunch (const ::Deployment::Connections & providedReference, + ::CORBA::Boolean start); + + virtual void start (); + + ::Deployment::Connections * getAllConnections(); + + //TODO Exception specification should be customized + void init_components(); + + void configuration_complete_components (); + + void passivate_components (); + + void remove_components (); + + enum ERequestType + { + eCreateComponentServer, + eCreateContainer, + eInstallHome, + eCreateComponentWithConfigValues + }; + + enum EInstanceType + { + eHome, + eComponent, + eHomedComponent, + eInvalid + }; + + enum EComponentState + { + eUninstalled, + eInstalled, + eConfigured, + eActive, + ePassive, + eRemoved, + eInvalidState + }; + + + protected: + //TODO Add throw specification + void init(); + + struct Container; + + struct Instance + { + Instance (EInstanceType type = eInvalid, + Container *cont = 0, + CORBA::ULong idd = 0, + CORBA::ULong mdd = 0) : + state (eUninstalled), + type (type), idd_idx (idd), mdd_idx (mdd), home(0), + container (cont) + { + } + + EComponentState state; + EInstanceType type; + CORBA::ULong idd_idx; + CORBA::ULong mdd_idx; + CORBA::Object_var ref; + Instance *home; + Container *container; + }; + + typedef ACE_Array INSTANCES; + typedef ACE_Array INSTANCE_PTRS; + + struct Container + { + INSTANCES homes; + INSTANCES components; + ::Deployment::Properties properties; + Components::Deployment::Container_var ref; + }; + + typedef ACE_Array CONTAINERS; + + struct ComponentServer + { + CONTAINERS containers; + ::Deployment::Properties properties; + Components::Deployment::ComponentServer_var ref; + }; + + typedef ACE_Array COMPONENTSERVERS; + + EInstanceType get_instance_type (const ::Deployment::Properties& prop) const; + + typedef std::map ColocationMap; + + /// Creates colocation groups for all components in this node's deployment. + /// Resulting map has mappings of component ids to appropriate server. + /// As a postcondition, the size of the servers_ array is increased appropriately. + ColocationMap create_colocation_groups (void); + + void create_component_server (size_t index); + + void create_container (size_t server, size_t container); + + void install_home (Container &cont, Instance &inst); + + void install_component (Container &cont, Instance &inst); + + void install_homed_component (Container &cont, Instance &inst); + + void store_instance_ior (Instance &inst); + + bool is_local_facet (const ::Deployment::PlanConnectionDescription& conn); + + Components::Cookie* connect_receptacle (const ::Deployment::PlanConnectionDescription& conn, + Components::CCMObject_ptr facet, + const ACE_CString &facet_name, + CORBA::Object_ptr receptacle, + const ACE_CString& receptacle_name, + CIAO::Deployment::Container_ptr cont); + + Components::Cookie* connect_receptacle_ext (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr facet); + + void connect_emitter (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr consumer); + + void connect_emitter_ext (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr consumer); + + Components::Cookie* connect_publisher (Components::CCMObject_ptr inst, + const ACE_CString& port_name, + CORBA::Object_ptr consumer); + + CORBA::ORB_var orb_; + + PortableServer::POA_var poa_; + + const ::Deployment::DeploymentPlan& plan_; + + auto_ptr activator_; + + ACE_CString node_name_; + + PROPERTY_MAP properties_; + + COMPONENTSERVERS servers_; + + INSTANCE_PTRS instances_; + + CosNaming::NamingContext_var instance_nc_; + }; +} +#endif /*NODEAPPLICATION_IMPL_H_*/ diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc new file mode 100644 index 00000000000..8ce4f18aa89 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc @@ -0,0 +1,13 @@ +// -*- MPC -*- +// $Id$ + +project: dance_lib, naming, dance_nodeapplicationmanager_skel, \ + dynamicinterface, ccm_componentserver_svnt, ciao_cs_client, \ + dance_nodeapplication, avoids_ace_for_tao { + sharedname = DAnCE_NodeApplicationManager + dynamicflags = NODEAPPLICATIONMANAGER_BUILD_DLL + + Source_Files { + NodeApplicationManager_Impl.cpp + } +} diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Export.h b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Export.h new file mode 100644 index 00000000000..b86e93b49ab --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl NodeApplicationManager +// ------------------------------ +#ifndef NODEAPPLICATIONMANAGER_EXPORT_H +#define NODEAPPLICATIONMANAGER_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (NODEAPPLICATIONMANAGER_HAS_DLL) +# define NODEAPPLICATIONMANAGER_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && NODEAPPLICATIONMANAGER_HAS_DLL */ + +#if !defined (NODEAPPLICATIONMANAGER_HAS_DLL) +# define NODEAPPLICATIONMANAGER_HAS_DLL 1 +#endif /* ! NODEAPPLICATIONMANAGER_HAS_DLL */ + +#if defined (NODEAPPLICATIONMANAGER_HAS_DLL) && (NODEAPPLICATIONMANAGER_HAS_DLL == 1) +# if defined (NODEAPPLICATIONMANAGER_BUILD_DLL) +# define NodeApplicationManager_Export ACE_Proper_Export_Flag +# define NODEAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define NODEAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* NODEAPPLICATIONMANAGER_BUILD_DLL */ +# define NodeApplicationManager_Export ACE_Proper_Import_Flag +# define NODEAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define NODEAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* NODEAPPLICATIONMANAGER_BUILD_DLL */ +#else /* NODEAPPLICATIONMANAGER_HAS_DLL == 1 */ +# define NodeApplicationManager_Export +# define NODEAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) +# define NODEAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* NODEAPPLICATIONMANAGER_HAS_DLL == 1 */ + +// Set NODEAPPLICATIONMANAGER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (NODEAPPLICATIONMANAGER_NTRACE) +# if (ACE_NTRACE == 1) +# define NODEAPPLICATIONMANAGER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define NODEAPPLICATIONMANAGER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !NODEAPPLICATIONMANAGER_NTRACE */ + +#if (NODEAPPLICATIONMANAGER_NTRACE == 1) +# define NODEAPPLICATIONMANAGER_TRACE(X) +#else /* (NODEAPPLICATIONMANAGER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define NODEAPPLICATIONMANAGER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (NODEAPPLICATIONMANAGER_NTRACE == 1) */ + +#endif /* NODEAPPLICATIONMANAGER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp new file mode 100644 index 00000000000..a981a1fdc12 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp @@ -0,0 +1,170 @@ +// $Id$ + + +#include "ace/streams.h" +#include "DAnCE/Deployment/DAnCE_PropertiesC.h" +#include "DAnCE/Logger/Log_Macros.h" + +#include "NodeApplicationManager_Impl.h" +#include "NodeApplication/NodeApplication_Impl.h" +#include "NodeManager/NodeManager_Impl.h" + +using namespace DAnCE; + +NodeApplicationManager_Impl::NodeApplicationManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const Deployment::DeploymentPlan& plan, + const ACE_CString& node_name, + const PROPERTY_MAP &properties) + : plan_ (plan), + orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + application_ (0), + node_name_ (node_name), + properties_ () +{ + DANCE_TRACE ("NodeApplicationManager_Impl::NodeApplicationManager_Impl"); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT(" NodeApplicationManager_Impl::NodeApplicationManager_Impl - ") + ACE_TEXT("Initializing for node '%C' and plan '%C' starting...\n"), + node_name.c_str(), + plan_.UUID.in())); + + PROPERTY_MAP::const_iterator i = properties.begin (); + while (!i.done ()) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("NodeApplicationManager_Impl::NodeApplicationManager_Impl - ") + ACE_TEXT("Binding value for property %C\n"), i->key ().c_str ())); + this->properties_.bind (i->key (), i->item ()); + i.advance (); + } +} + +NodeApplicationManager_Impl::~NodeApplicationManager_Impl() +{ + DANCE_TRACE ("NodeApplicationManager_Impl::~NodeApplicationManager_Impl"); + + try + { + if (this->application_ != 0) + { + CORBA::Object_var app = + this->poa_->servant_to_reference (this->application_); + PortableServer::ObjectId_var id = this->poa_->reference_to_id (app); + this->poa_->deactivate_object (id); + + delete this->application_; + this->application_ = 0; + } + } + catch (...) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO + ACE_TEXT("NodeApplicationManager_Impl::~NodeApplicationManager_Impl - ") + ACE_TEXT("Caught exception in NodeApplicationManager destructor\n"))); + } +} + +Deployment::Application_ptr +NodeApplicationManager_Impl::startLaunch (const Deployment::Properties &, + Deployment::Connections_out providedReference) +{ + DANCE_TRACE ("NodeApplicationManager_Impl::startLaunch"); + + // Creating NodeApplication object + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplicationManager_impl::startLaunch - ") + ACE_TEXT("Initializing NodeApplication\n"))); + ACE_NEW_THROW_EX (this->application_, + NodeApplication_Impl (this->orb_.in(), + this->poa_.in(), + this->plan_, + this->node_name_, + this->properties_), + CORBA::NO_MEMORY ()); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeApplicationManager_impl::startLaunch - ") + ACE_TEXT("Instructing NodeApplication to initialize components.\n"))); + + this->application_->init_components(); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeApplicationManager_impl::startLaunch - ") + ACE_TEXT("Collecting connection references\n"))); + + providedReference = this->application_->getAllConnections(); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("NodeApplicationManager_impl::startLaunch - ") + ACE_TEXT("Activating NodeApplication servant\n"))); + + PortableServer::ObjectId_var as_id = + this->poa_->activate_object (this->application_); + + CORBA::Object_var as_obj = this->poa_->id_to_reference (as_id.in ()); + Deployment::Application_var app = Deployment::Application::_narrow (as_obj.in ()); + + return app._retn (); +} + +void +NodeApplicationManager_Impl::destroyApplication (Deployment::Application_ptr application) +{ + DANCE_TRACE ("NodeApplicationManager_Impl::destroyApplication"); + + try + { + if (!application->_is_equivalent (this->poa_->servant_to_reference (this->application_))) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("NodeApplicationManager_Impl::destroyApplication - ") + ACE_TEXT("application is equivalent to current application\n"))); + throw ::Deployment::StopError(); + } + + CORBA::Any val; + + if (this->properties_.find (DAnCE::STANDALONE_NM, val) == 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeApplicationManager_Impl::destroyApplication - ") + ACE_TEXT("Found STANDALONE_NM property\n"))); + + CORBA::Boolean standalone = false; + + val >>= CORBA::Any::to_boolean (standalone); + + this->application_->passivate_components (); + this->application_->remove_components (); + } + + PortableServer::ObjectId_var id = this->poa_->reference_to_id (application); + this->poa_->deactivate_object (id); + + delete this->application_; + this->application_ = 0; + } + catch (const CORBA::SystemException &) + { + throw; + } + catch (const Deployment::StopError &) + { + throw; + } + catch (const CORBA::UserException &e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("NodeApplicationManager_Impl::destroyApplication failed with UserException %C(%C) \"%C\"\n"), + e._name(), e._rep_id(), e._info().c_str())); + throw Deployment::StopError(e._name(), e._info().c_str()); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("NodeApplicationManager_Impl::destroyApplication failed with unknown exception.\n"))); + throw Deployment::StopError(); + } +} + diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h new file mode 100644 index 00000000000..c8310490f66 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h @@ -0,0 +1,54 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file NodeApplicationManager_Impl.h + * + * $Id$ + * + * @brief Implementation of POA_Deployment::NodeApplicationManager + * + * @author Erwin Gottlieb + */ +//============================================================================= + +#ifndef NODEAPPLICATIONMANAGER_IMPL_H_ +#define NODEAPPLICATIONMANAGER_IMPL_H_ + +#include "NodeApplicationManager_Export.h" +#include "Deployment/Deployment_DeploymentPlanC.h" +#include "Deployment/Deployment_NodeApplicationManagerS.h" +#include "Deployment/Deployment_NodeApplicationC.h" +#include "NodeApplication/NodeApplication_Impl.h" + +namespace DAnCE + { + class NodeManager_Impl; + + class NodeApplicationManager_Export NodeApplicationManager_Impl : + public virtual POA_Deployment::NodeApplicationManager + { + public: + NodeApplicationManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const Deployment::DeploymentPlan& plan, + const ACE_CString& name, + const PROPERTY_MAP &properties); + + virtual ~NodeApplicationManager_Impl(); + + virtual Deployment::Application_ptr + startLaunch (const Deployment::Properties & configProperty, + Deployment::Connections_out providedReference); + + virtual void destroyApplication (Deployment::Application_ptr); + private: + Deployment::DeploymentPlan plan_; + CORBA::ORB_var orb_; + PortableServer::POA_var poa_; + NodeApplication_Impl* application_; + ACE_CString node_name_; + PROPERTY_MAP properties_; + }; +} +#endif /*NODEAPPLICATIONMANAGER_IMPL_H_*/ diff --git a/modules/CIAO/DAnCE/NodeManager/DAnCE_NodeManager_Module_Export.h b/modules/CIAO/DAnCE/NodeManager/DAnCE_NodeManager_Module_Export.h new file mode 100644 index 00000000000..4eaf82f6fee --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/DAnCE_NodeManager_Module_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_NodeManager_Module +// ------------------------------ +#ifndef DANCE_NODEMANAGER_MODULE_EXPORT_H +#define DANCE_NODEMANAGER_MODULE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_NODEMANAGER_MODULE_HAS_DLL) +# define DANCE_NODEMANAGER_MODULE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_NODEMANAGER_MODULE_HAS_DLL */ + +#if !defined (DANCE_NODEMANAGER_MODULE_HAS_DLL) +# define DANCE_NODEMANAGER_MODULE_HAS_DLL 1 +#endif /* ! DANCE_NODEMANAGER_MODULE_HAS_DLL */ + +#if defined (DANCE_NODEMANAGER_MODULE_HAS_DLL) && (DANCE_NODEMANAGER_MODULE_HAS_DLL == 1) +# if defined (DANCE_NODEMANAGER_MODULE_BUILD_DLL) +# define DAnCE_NodeManager_Module_Export ACE_Proper_Export_Flag +# define DANCE_NODEMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_NODEMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_NODEMANAGER_MODULE_BUILD_DLL */ +# define DAnCE_NodeManager_Module_Export ACE_Proper_Import_Flag +# define DANCE_NODEMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_NODEMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_NODEMANAGER_MODULE_BUILD_DLL */ +#else /* DANCE_NODEMANAGER_MODULE_HAS_DLL == 1 */ +# define DAnCE_NodeManager_Module_Export +# define DANCE_NODEMANAGER_MODULE_SINGLETON_DECLARATION(T) +# define DANCE_NODEMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_NODEMANAGER_MODULE_HAS_DLL == 1 */ + +// Set DANCE_NODEMANAGER_MODULE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_NODEMANAGER_MODULE_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_NODEMANAGER_MODULE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_NODEMANAGER_MODULE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_NODEMANAGER_MODULE_NTRACE */ + +#if (DANCE_NODEMANAGER_MODULE_NTRACE == 1) +# define DANCE_NODEMANAGER_MODULE_TRACE(X) +#else /* (DANCE_NODEMANAGER_MODULE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_NODEMANAGER_MODULE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_NODEMANAGER_MODULE_NTRACE == 1) */ + +#endif /* DANCE_NODEMANAGER_MODULE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager.mpc b/modules/CIAO/DAnCE/NodeManager/NodeManager.mpc new file mode 100644 index 00000000000..e9f44386ae8 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/NodeManager.mpc @@ -0,0 +1,22 @@ +// -*- MPC -*- +// $Id$ + +project(Node_Manager_Module) : dance_lib, naming_serv, dance_nodeapplicationmanager, dance_nodeapplication_stub, dance_deployment_svnt, dynamicinterface, utils, gen_ostream, dance_nodemanager_skel, avoids_ace_for_tao { + sharedname = DAnCE_NodeManager + dynamicflags = NODEMANAGER_BUILD_DLL DANCE_NODEMANAGER_MODULE_BUILD_DLL + + Source_Files { + NodeManager_Impl.cpp + Node_Manager_Module.cpp + } +} + +project(Node_Manager_Exec) : utils, dance_exe, dance_nodemanager, naming_serv, avoids_ace_for_tao, ccm_componentserver_svnt { + exename = dance_node_manager + after += Node_Manager_Module + libs += DAnCE_NodeManager + + Source_Files { + Node_Manager_Exec.cpp + } +} diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager_Export.h b/modules/CIAO/DAnCE/NodeManager/NodeManager_Export.h new file mode 100644 index 00000000000..b7240baeb80 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/NodeManager_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl NodeManager +// ------------------------------ +#ifndef NODEMANAGER_EXPORT_H +#define NODEMANAGER_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (NODEMANAGER_HAS_DLL) +# define NODEMANAGER_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && NODEMANAGER_HAS_DLL */ + +#if !defined (NODEMANAGER_HAS_DLL) +# define NODEMANAGER_HAS_DLL 1 +#endif /* ! NODEMANAGER_HAS_DLL */ + +#if defined (NODEMANAGER_HAS_DLL) && (NODEMANAGER_HAS_DLL == 1) +# if defined (NODEMANAGER_BUILD_DLL) +# define NodeManager_Export ACE_Proper_Export_Flag +# define NODEMANAGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define NODEMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* NODEMANAGER_BUILD_DLL */ +# define NodeManager_Export ACE_Proper_Import_Flag +# define NODEMANAGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define NODEMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* NODEMANAGER_BUILD_DLL */ +#else /* NODEMANAGER_HAS_DLL == 1 */ +# define NodeManager_Export +# define NODEMANAGER_SINGLETON_DECLARATION(T) +# define NODEMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* NODEMANAGER_HAS_DLL == 1 */ + +// Set NODEMANAGER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (NODEMANAGER_NTRACE) +# if (ACE_NTRACE == 1) +# define NODEMANAGER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define NODEMANAGER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !NODEMANAGER_NTRACE */ + +#if (NODEMANAGER_NTRACE == 1) +# define NODEMANAGER_TRACE(X) +#else /* (NODEMANAGER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define NODEMANAGER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (NODEMANAGER_NTRACE == 1) */ + +#endif /* NODEMANAGER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp new file mode 100644 index 00000000000..13afc187c8d --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp @@ -0,0 +1,179 @@ +// $Id$ + +#include "NodeManager_Impl.h" + + +#include "ace/streams.h" + +#include "DAnCE/Logger/Log_Macros.h" + +#include "ace/OS_Memory.h" + +#ifdef GEN_OSTREAM_OPS +#include +#include +#endif /* GEN_OSTREAM_OPS */ + +namespace DAnCE +{ + NodeManager_Impl::NodeManager_Impl(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const char* name, + const PROPERTY_MAP &properties) + : orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + name_ (name), + properties_ (properties.current_size ()) + { + DANCE_TRACE ( "NodeManager_Impl::NodeManager_Impl"); + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeManager_impl::NodeManager_impl has been created\n"))); + + PROPERTY_MAP::const_iterator i = properties.begin (); + while (!i.done ()) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeManager_Impl::NodeManager_Impl - ") + ACE_TEXT("Binding property %C provided by caller.\n"), i->key ().c_str ())); + this->properties_.bind (i->key (), i->item ()); + i.advance (); + } + } + + NodeManager_Impl::~NodeManager_Impl() + { + DANCE_TRACE ( "NodeManager_Impl::~NodeManager_Impl()"); + for (TManagers::iterator iter = this->managers_.begin(); + iter != this->managers_.end(); + ++iter) + { + try + { + PortableServer::ObjectId_var id = this->poa_->servant_to_id ( (*iter).int_id_); + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeManager_impl::~NodeManager_impl - Deactivating NodeApplicationManager %C\n"), + (*iter).ext_id_.c_str ())); + this->poa_->deactivate_object (id.in()); + DANCE_DEBUG (9, (LM_TRACE, DLINFO + ACE_TEXT("NodeManager_impl::~NodeManager_impl - deleting NodeApplicationManager\n"))); + delete (*iter).int_id_; + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("NodeManager_impl::~NodeManager_impl - NodeApplicationManager deleted\n"))); + } + catch (...) + { + DANCE_ERROR (1, (LM_WARNING, DLINFO + ACE_TEXT("NodeManager_impl::~NodeManager_impl - Caught exception while removing ") + ACE_TEXT("NodeApplicationManager %C\n"), (*iter).ext_id_.c_str ())); + } + } + } + + void + NodeManager_Impl::joinDomain (const ::Deployment::Domain & /*theDomain*/, + ::Deployment::TargetManager_ptr /*manager*/, + ::Deployment::Logger_ptr /*log*/, + ::CORBA::Long /*updateInterval*/) + { + DANCE_TRACE ( "NodeManager_Impl::joinDomain"); + DANCE_DEBUG (6, (LM_ERROR, DLINFO ACE_TEXT("NodeManager_Impl::joinDomain - ") + ACE_TEXT("joinDomain not implemented\n"))); + throw CORBA::NO_IMPLEMENT (); + } + + void + NodeManager_Impl::leaveDomain () + { + DANCE_TRACE ( "NodeManager_Impl::leaveDomain"); + DANCE_DEBUG (6, (LM_ERROR, DLINFO ACE_TEXT("NodeManager_Impl::leaveDomain - ") + ACE_TEXT("leave not implemented\n"))); + throw CORBA::NO_IMPLEMENT (); + } + + ::Deployment::NodeApplicationManager_ptr + NodeManager_Impl::preparePlan (const ::Deployment::DeploymentPlan & plan, + ::Deployment::ResourceCommitmentManager_ptr /*resourceCommitment*/) + { + DANCE_TRACE ( "NodeManager_Impl::preparePlan"); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NodeManager_impl::preparePlan - ") + ACE_TEXT("started for node %C and plan %C\n"), + this->name_.c_str(), plan.UUID.in())); + +#ifdef GEN_OSTREAM_OPS + { + std::ostringstream plan_stream; + plan_stream << plan << std::endl; + DANCE_DEBUG (9, (LM_TRACE, DLINFO "NodeManager_impl::preparePlan - %C", + plan_stream.str ().c_str ())); + } +#endif /* GEN_OSTREAM_OPS */ + + // resourceCommitment will be used on next development stage + if (0 == this->managers_.find (plan.UUID.in())) + { + // What should we do here if we already have application for this plan? + // Probably it is mistake because we should previously call destroyApplication + // before performe relaunching of application + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeManager_impl::preparePlan - ") + ACE_TEXT("ApplicationManager for UUID %C already exists\n"), + plan.UUID.in ())); + throw ::Deployment::PlanError(); + } + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeManager_impl::preparePlan - creating NodeApplicationManager...\n"))); + NodeApplicationManager_Impl* manager = 0; + ACE_NEW_THROW_EX (manager, + NodeApplicationManager_Impl (this->orb_.in(), + this->poa_.in(), + plan, + this->name_, + this->properties_), + CORBA::NO_MEMORY()); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeManager_impl::preparePlan - activating NodeApplicationManager...\n"))); + PortableServer::ObjectId_var id = this->poa_->activate_object (manager); + CORBA::Object_var nam = this->poa_->id_to_reference (id.in()); + + // There is an idea to check if plan.UUID really exists + this->managers_.bind (plan.UUID.in(), manager); + // narrow should return a nil reference if it fails. + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("NodeManager_impl::preparePlan - NodeApplicationManager for plan %C completed\n"), + plan.UUID.in ())); + return Deployment::NodeApplicationManager::_narrow (nam.in ()); + } + + void + NodeManager_Impl::destroyManager (::Deployment::NodeApplicationManager_ptr appManager) + { + DANCE_TRACE ( "NodeManager_Impl::destroyManager"); + + for (TManagers::iterator iter = this->managers_.begin(); + iter != this->managers_.end(); + ++iter) + { + if (appManager->_is_equivalent (this->poa_->servant_to_reference ( (*iter).int_id_))) + { + PortableServer::ObjectId_var id = this->poa_->reference_to_id (appManager); + this->poa_->deactivate_object (id.in()); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeManager_impl::destroyManager - deleting NodeApplicationManager\n"))); + delete (*iter).int_id_; + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeManager_impl::destroyManager - NodeApplicationManager deleted\n"))); + this->managers_.unbind ( (*iter).ext_id_); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("NodeManager_impl::destroyManager - finished\n"))); + return; + } + } + + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NodeManager_impl::destroyManager - ") + ACE_TEXT("correponding NodeApplicationManager cannot be found\n"))); + throw ::Deployment::InvalidReference(); + } + + ::Deployment::Resources * + NodeManager_Impl::getDynamicResources () + { + DANCE_TRACE ( "NodeManager_Impl::getDynamicResources ()"); + DANCE_DEBUG (6, (LM_ERROR, DLINFO ACE_TEXT("NodeManager_Impl::getDynamicResources - ") + ACE_TEXT("getDynamicResources not implemented\n"))); + throw CORBA::NO_IMPLEMENT (); + return 0; + } +} //DAnCE + diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h new file mode 100644 index 00000000000..0f13776dc29 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h @@ -0,0 +1,68 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file NodeManager_Impl.h + * + * $Id$ + * + * @brief Implementation of POA_Deployment::NodeManager + * + * @author Erwin Gottlieb + * @author William R. Otte + */ +//============================================================================= + +#ifndef NODEMANAGER_IMPL_H_ +#define NODEMANAGER_IMPL_H_ + +#include "NodeManager_Export.h" +#include "tao/Object.h" +#include "tao/ORB.h" +#include "Deployment/Deployment_common.h" +#include "Deployment/Deployment_NodeManagerS.h" +#include "NodeApplicationManager/NodeApplicationManager_Impl.h" +#include "ace/Map_Manager.h" + +namespace DAnCE +{ + class NodeManager_Export NodeManager_Impl : public virtual POA_Deployment::NodeManager + { + public: + /// The fixed listener port is caused by the usage of CCM Object locator + NodeManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const char* name, + const PROPERTY_MAP &options); + + virtual ~NodeManager_Impl(); + + virtual void joinDomain (const ::Deployment::Domain & theDomain, + ::Deployment::TargetManager_ptr manager, + ::Deployment::Logger_ptr log, + ::CORBA::Long updateInterval); + + virtual void leaveDomain (void); + + virtual ::Deployment::NodeApplicationManager_ptr preparePlan ( + const ::Deployment::DeploymentPlan & plan, + ::Deployment::ResourceCommitmentManager_ptr resourceCommitment); + + virtual void destroyManager (::Deployment::NodeApplicationManager_ptr appManager); + + virtual ::Deployment::Resources * getDynamicResources (void); + + const char* getName(void); + + private: + CORBA::ORB_var orb_; + PortableServer::POA_var poa_; + ACE_CString name_; + /// @todo, see if we can use a _ptr + typedef ACE_Map_Manager TManagers; + TManagers managers_; + PROPERTY_MAP properties_; + }; +} + +#endif /*NODEMANAGER_IMPL_H_*/ diff --git a/modules/CIAO/DAnCE/NodeManager/Node_Manager_Exec.cpp b/modules/CIAO/DAnCE/NodeManager/Node_Manager_Exec.cpp new file mode 100644 index 00000000000..889604048c5 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/Node_Manager_Exec.cpp @@ -0,0 +1,6 @@ +// $Id$ +#include "Node_Manager_Module.h" + +#define DANCE_MODULE_MAIN_CLASS_NAME DAnCE_NodeManager_Module +#include "Deployment/Module_Main.h" + diff --git a/modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.cpp b/modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.cpp new file mode 100644 index 00000000000..16ddae112b4 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.cpp @@ -0,0 +1,604 @@ +// -*- C++ -*- +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/OS_NS_stdio.h" + +#include "tao/TAO_Singleton_Manager.h" +#include "tao/StringSeqC.h" +#include "tao/IORTable/IORTable.h" +#include "tao/Utils/PolicyList_Destroyer.h" +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/orbsvcs/Naming/Naming_Loader.h" +#include "ciao/Valuetype_Factories/Cookies.h" +#include "ciao/ComponentServer/CIAO_PropertiesC.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Deployment/DAnCE_PropertiesC.h" +#include "Node_Manager_Module.h" +#include "NodeManager_Impl.h" + +ACE_RCSID (DAnCE, + Node_Manager_Module, + "$Id$") + +namespace DAnCE +{ + namespace Node_Manager + { + bool + write_IOR (const ACE_TCHAR * ior_file_name, const char* ior) + { + FILE* ior_output_file_ = ACE_OS::fopen (ior_file_name, ACE_TEXT("w")); + + if (ior_output_file_) + { + ACE_OS::fprintf (ior_output_file_, "%s", ior); + ACE_OS::fclose (ior_output_file_); + return true; + } + return false; + } + } +} + +DAnCE_NodeManager_Module::SOptions::SOptions(void) + : process_ns_ (false), + process_ns_file_ (0), + create_plan_ns_ (false), + create_plan_ns_ior_ (0), + rebind_plan_ns_ (false), + rebind_plan_ns_ior_ (0), + cs_path_ (ACE_TEXT("ciao_componentserver")), + timeout_ (5), + standalone_ (false), + server_args_ (0), + domain_nc_ (0), + instance_nc_ (0) +{ +} + +DAnCE_NodeManager_Module::DAnCE_NodeManager_Module (void) +{ + DANCE_TRACE("DAnCE_NodeManager_Module::DAnCE_NodeManager_Module"); +} + +DAnCE_NodeManager_Module::~DAnCE_NodeManager_Module (void) +{ + DANCE_TRACE ("DAnCE_NodeManager_Module::~DAnCE_NodeManager_Module"); + + for (Servant_Map::iterator it = this->nm_map_.begin (); + it != this->nm_map_.end (); + ++it) + { + delete (*it).int_id_; + } +} + +const char * +DAnCE_NodeManager_Module::usage (void) +{ + DANCE_TRACE ("DAnCE_NodeManager_Module::usage"); + return "Node Manager Options:\n" + "\t-e|--exec-mgr\t\t [execution manager ior file name]\n" + "\t-n|--node-mgr\t\t [=node manager ior file name]\n" + // "\t-p|--process-ns\t\t\t [file name] create process name service and store its ior to file name\n" + "\t-c|--create-plan-ns [NC] create plan objects (components and ports) representation in name context with ior NC\n" + "\t-r|--rebind-plan-ns [NC] bind plan representation name context to NC\n" + "\t-i|--port-indirection\t enable plan objects indirection via servant locator\n" + "\t-s|--server-executable\t default component server executable\n" + "\t--server-args\t\t additional arguments to supply to the component server\n" + "\t--standalone-nm\t\t Indicates that this NodeManager is not managed by an ExecutionManager\n" + "\t-t|--timeout\t\t default timeout in seconds to wait for component server spawn\n" + "\t-d|--domain-nc [NC]\t Default naming context for domain objects.\n" + "\t--instance-nc [NC]\t Default naming context for instance registration directives. No argument indicates Domain NC.\n" + "\t-h|help\t\t\t print this help message\n"; +} + +bool +DAnCE_NodeManager_Module::parse_args (int argc, ACE_TCHAR * argv[]) +{ + ACE_Get_Opt get_opts (argc, + argv, + ACE_TEXT("e:n:p::c::r::is:t:h"), + 0, + 0, + ACE_Get_Opt::RETURN_IN_ORDER); + + get_opts.long_option (ACE_TEXT("exec-mgr"), 'e', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("node-mgr"), 'n', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("process-ns"), 'p', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("create-plan-ns"), 'c', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("rebind-plan-ns"), 'r', ACE_Get_Opt::ARG_OPTIONAL); + get_opts.long_option (ACE_TEXT("port-indirection"), 'i', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("server-executable"), 's', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("server-args"), ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("standalone-nm"), ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("timeout"), 't', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("domain-nc"), 'd', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("instance-nc"), ACE_Get_Opt::ARG_REQUIRED); + + //get_opts.long_option ("help", '?'); + + int c; + while ( (c = get_opts ()) != -1) + { + switch (c) + { + case 'n': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Provided Node Manager name: %s\n"), get_opts.opt_arg ())); + this->options_.node_managers_.push_back (get_opts.opt_arg ()); + break; + + case 'p': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Instructed to create process ns with file %s\n"), get_opts.opt_arg ())); + this->options_.process_ns_ = true; + this->options_.process_ns_file_ = get_opts.opt_arg (); + break; + + case 'c': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Instructed to create plan NS in context: %s\n"), get_opts.opt_arg ())); + this->options_.create_plan_ns_ = true; + this->options_.create_plan_ns_ior_ = get_opts.opt_arg (); + break; + + case 'r': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Instructed to rebind plan NS in context: %s\n"), get_opts.opt_arg ())); + this->options_.rebind_plan_ns_ = true; + this->options_.rebind_plan_ns_ior_ = get_opts.opt_arg (); + break; + + case 'i': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Instructed to create port indirection service\n"))); + this->options_.port_indirection_ = true; + break; + + case 's': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Using provided component server executable:%s\n"), + get_opts.opt_arg ())); + this->options_.cs_path_ = get_opts.opt_arg (); + break; + + case 't': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Using provided component server spawn timeout:%s\n"), + get_opts.opt_arg ())); + this->options_.timeout_ = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'd': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Binding to provided Domain Naming Context: '%s'\n"), + get_opts.opt_arg ())); + this->options_.domain_nc_ = get_opts.opt_arg (); + break; + + case 'h': + //case '?': // Display help for use of the server. + //default: + DANCE_ERROR_RETURN (1, (LM_ERROR, + this->usage (), + argv [0], c), + false); + break; + + case 0: + if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("standalone-nm")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Found option directing NodeManager to run as standalone entity.\n"))); + this->options_.standalone_ = true; + } + else if (ACE_OS::strcmp (get_opts.long_option (), + ACE_TEXT("server-args")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Using provided compoent server arguments: '%s'\n"), + get_opts.opt_arg ())); + this->options_.server_args_ = get_opts.opt_arg (); + } + else if (ACE_OS::strcmp (get_opts.long_option (), + ACE_TEXT("instance-nc")) == 0) + { + if (get_opts.opt_arg () == 0) + { + if (this->options_.domain_nc_ == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("ERROR: instance-nc provided no argument, but domain-nc did not appear before.\n"))); + DANCE_ERROR_RETURN (1, (LM_ERROR, this->usage (), argv[0], c), false); + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Instance NC defaulting to Domain NC\n"))); + this->options_.instance_nc_ = this->options_.domain_nc_; + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("Using provided instance NC: %s\n"), + get_opts.opt_arg ())); + this->options_.instance_nc_ = get_opts.opt_arg (); + } + } + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ") + ACE_TEXT("ERROR: unknown long option %s\n"), + get_opts.long_option ())); + } + + break; + + default: + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Node_Manager_Module::parse_args - ignoring unknown option %i\n"), + c)); + } + } + return true; +} + +CORBA::Object_ptr +DAnCE_NodeManager_Module::create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv[]) +{ + try + { + if (CORBA::is_nil(orb)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("Attempted to create Node Manager with a nil orb.\n"))); + return CORBA::Object::_nil(); + } + + if (CORBA::is_nil(this->orb_.in())) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("NM's orb is nil.\n"))); + this->orb_ = CORBA::ORB::_duplicate (orb); + } + else if (ACE_OS::strcmp(orb->id(), this->orb_->id()) != 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("Resetting NM's orb.\n"))); + this->orb_ = CORBA::ORB::_duplicate (orb); + this->domain_nc_ = CosNaming::NamingContext::_nil(); + } + + if (!this->parse_args (argc, argv)) + { + return CORBA::Object::_nil (); + } + + this->register_value_factories (); + this->create_poas (); + + if (this->options_.domain_nc_) + { + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("Resolving DomainNC.\n"))); + CORBA::Object_var domain_obj = this->orb_->string_to_object (this->options_.domain_nc_); + if (!CORBA::is_nil (domain_obj.in ())) + { + this->domain_nc_ = CosNaming::NamingContext::_narrow (domain_obj.in()); + if (CORBA::is_nil (this->domain_nc_.in ())) + { + DANCE_ERROR (1, (LM_ERROR,DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("Narrow to NamingContext return nil for DomainNC.\n"))); + return CORBA::Object::_nil (); + } + } + } + catch (const CORBA::Exception&) + { + DANCE_DEBUG (6, (LM_WARNING, DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("DomainNC context not found!\n"))); + } + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT("Resolving plan NS naming context.\n"))); + CosNaming::NamingContext_var rebind_nc; + if (this->options_.rebind_plan_ns_) + { + if (!this->options_.create_plan_ns_) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Rebind_plan_ns option is enabled but Create_plan_ns is not.\n"))); + return CORBA::Object::_nil(); + } + CORBA::Object_var tmp_obj; + if (0 != this->options_.rebind_plan_ns_ior_) + { + tmp_obj = orb->string_to_object (this->options_.rebind_plan_ns_ior_); + rebind_nc = CosNaming::NamingContext::_narrow (tmp_obj); + } + else + { + if (CORBA::is_nil (this->domain_nc_.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("The rebind plan is enabled but neither NC ") + ACE_TEXT ("nor DomainNC are not supplied. No rebinding will be done.\n") + ACE_TEXT ("Use the \"-rebind-plan-ns NC ior\" ") + ACE_TEXT ("or \"-ORBInitRef DomainNC\" option.\n"))); + return CORBA::Object::_nil (); + } + rebind_nc = CosNaming::NamingContext::_duplicate (this->domain_nc_.in ()); + } + } + + // Initialize IOR table + CORBA::Object_var table_object = orb->resolve_initial_references ("IORTable"); + + IORTable::Table_var adapter = IORTable::Table::_narrow (table_object.in ()); + + if (CORBA::is_nil (adapter.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Unable to RIR the IORTable.\n"))); + return CORBA::Object::_nil (); + } + + // Creating in process nameservice + CosNaming::NamingContext_var plan_nc; + TAO_Naming_Loader loader; + if (this->options_.create_plan_ns_) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Resolving plan-specific naming context.\n"))); + CORBA::Object_var naming_obj; + if (0 != this->options_.create_plan_ns_ior_) + { + naming_obj = orb->string_to_object (this->options_.create_plan_ns_ior_); + plan_nc = CosNaming::NamingContext::_narrow (naming_obj.in()); + if (CORBA::is_nil (plan_nc.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Failed trying to narrow naming context ") + ACE_TEXT ("for dance creating plan NC.\n") + ACE_TEXT ("Use the \"--create-plan-ns NC ior\" ") + ACE_TEXT ("or \"--process-ns\" option.\n"))); + return CORBA::Object::_nil (); + } + } + else if (this->options_.process_ns_) + { + const int argc_ns = 1; + ACE_TCHAR* argv_ns[argc_ns]; + argv_ns[0] = argv[0]; + naming_obj = orb->resolve_initial_references ("NameService"); + if (0 != this->options_.process_ns_file_) + { + CORBA::String_var ior = orb->object_to_string (naming_obj.in ()); + DAnCE::Node_Manager::write_IOR (this->options_.process_ns_file_, ior.in ()); + } + plan_nc = CosNaming::NamingContext::_narrow (naming_obj.in ()); + if (CORBA::is_nil (plan_nc.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Fails trying to narrow naming context ") + ACE_TEXT ("for dance creating plan NC.\n") + ACE_TEXT ("Use the \"--create-plan-ns NC ior\" ") + ACE_TEXT ("or \"--process-ns\" option.\n"))); + return CORBA::Object::_nil (); + } + } + else if (CORBA::is_nil (this->domain_nc_.in ())) + { + DANCE_ERROR (1, (LM_ERROR,DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("The create plan is enabled but neither NC ior ") + ACE_TEXT ("nor --process-ns or DomainNC option are not supplied.\n") + ACE_TEXT ("Use the \"--create-plan-ns NC ior\", \"--process-ns\" ") + ACE_TEXT ("or \"-ORBInitRef DomainNC\" option.\n"))); + return CORBA::Object::_nil (); + } + else + { + plan_nc = CosNaming::NamingContext::_duplicate (this->domain_nc_.in ()); + } + } + + // Make sure that we have only one Node Manager + if (this->options_.node_managers_.size () != 1) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("For now only one node manager creation is supported.\n"))); + return CORBA::Object::_nil (); + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("DAnCE_NodeManager::run_main - creating NodeManager for node %C\n"), + this->options_.node_managers_[0].c_str())); + + // Parsing Node name and node manager ior file name + ACE_TString node_name = this->options_.node_managers_[0].c_str (); + ACE_TString node_file; + size_t npos = node_name.find ('='); + if (ACE_CString::npos != npos) + { + node_file = node_name.substring (npos + 1, node_name.length() - npos + 1); + node_name = node_name.substring (0, npos); + } + + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Creating node named '%s' and outputting ior to file '%s'\n"), + node_name.c_str (), + node_file.c_str ())); + + //Creating node manager servant + DAnCE::NodeManager_Impl * nm = 0; + if (this->nm_map_.find (node_name, nm) == -1) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Allocating new NodeManger servant instance for NodeManager\n"))); + int size = 64; + DAnCE::PROPERTY_MAP properties (size); + this->create_nm_properties (properties); + + ACE_NEW_RETURN (nm, + DAnCE::NodeManager_Impl (orb, + this->root_poa_.in (), + ACE_TEXT_ALWAYS_CHAR (node_name.c_str()), + properties), + CORBA::Object::_nil ()); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("New NodeManger servant instance for NodeManager allocated.\n"))); + this->nm_map_.bind (node_name, nm); + } + + ACE_CString node_manager_oid = ACE_TEXT_ALWAYS_CHAR ((node_name + ACE_TEXT (".NodeManager")).c_str ()); + + // Registering servant in poa + PortableServer::ObjectId_var oid = + PortableServer::string_to_ObjectId (node_manager_oid.c_str()); + this->nm_poa_->activate_object_with_id (oid, nm); + + // Getting node manager ior + CORBA::Object_var nm_obj = this->nm_poa_->id_to_reference (oid.in ()); + CORBA::String_var ior = orb->object_to_string (nm_obj.in ()); + + // Binding ior to IOR Table + adapter->bind (node_manager_oid.c_str (), ior.in ()); + + // Binding node menager to DomainNC + if (!CORBA::is_nil (this->domain_nc_.in ())) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Registering NM in NC as \"%C.NodeManager\".\n"), node_name.c_str ())); + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (node_name.c_str ())); + name[0].kind = CORBA::string_dup ("NodeManager"); + this->domain_nc_->rebind (name, nm_obj.in ()); + } + + // Writing ior to file + if (0 != node_file.length ()) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Writing node IOR %C to file %C.\n"), node_file.c_str (), ior.in ())); + if (!DAnCE::Node_Manager::write_IOR (node_file.c_str (), ior.in ())) + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Error: Unable to write IOR to file %C\n"), + node_file.c_str ())); + } + + // Activate POA manager + PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); + mgr->activate (); + + // Finishing Deployment part + DANCE_DEBUG (6, (LM_NOTICE, DLINFO + ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("DAnCE_NodeManager is running...\n"))); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("NodeManager IOR: %C\n"), ior.in ())); + + return nm_obj._retn (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("DAnCE_NodeManager::main\t\n"); + return CORBA::Object::_nil (); + } +} + +void +DAnCE_NodeManager_Module::register_value_factories (void) +{ + DANCE_TRACE("DAnCE_Node_Manager_Module::register_value_factories (void)"); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_object - ") + ACE_TEXT ("Registering Cookie value factory.\n"))); + CORBA::ValueFactory_var vf = new Components::Cookie_init(); + vf = this->orb_->register_value_factory ("IDL:omg.org/Components/Cookie:1.0", vf.in()); +} + +void +DAnCE_NodeManager_Module::create_poas (void) +{ + DANCE_TRACE("DAnCE_Node_Manager_Module::create_poas"); + // Get reference to Root POA. + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_poas - ") + ACE_TEXT ("Resolving root POA\n"))); + CORBA::Object_var obj = this->orb_->resolve_initial_references ("RootPOA"); + + this->root_poa_ = PortableServer::POA::_narrow (obj.in ()); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_poas - ") + ACE_TEXT ("Obtaining the POAManager\n"))); + PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); + + TAO::Utils::PolicyList_Destroyer policies (2); + policies.length (2); + + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_poas - ") + ACE_TEXT ("DAnCE_NodeManager_Module::create_poas - ") + ACE_TEXT ("Creating the \"Managers\" POA.\n"))); + + policies[0] = this->root_poa_->create_id_assignment_policy (PortableServer::USER_ID); + policies[1] = this->root_poa_->create_lifespan_policy (PortableServer::PERSISTENT); + this->nm_poa_ = this->root_poa_->create_POA ("Managers", + mgr.in(), + policies); + } + catch (const PortableServer::POA::AdapterAlreadyExists &) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT ("DAnCE_NodeManager_Module::create_poas - ") + ACE_TEXT ("Using exiswting \"Managers\" POA\n"))); + this->nm_poa_ = this->root_poa_->find_POA ("Managers", 0); + } +} + +void +DAnCE_NodeManager_Module::create_nm_properties (DAnCE::PROPERTY_MAP &props) +{ + { + CORBA::Any val; + val <<= this->options_.timeout_; + props.bind (CIAO::Deployment::SERVER_TIMEOUT, val); + } + { + CORBA::Any val; + val <<= CORBA::Any::from_string (CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (this->options_.cs_path_)),0); + props.bind (CIAO::Deployment::SERVER_EXECUTABLE, val); + } + { + CORBA::Any val; + val <<= CORBA::Any::from_boolean (this->options_.standalone_); + props.bind (DAnCE::STANDALONE_NM, val); + } + { + CORBA::Any val; + val <<= CORBA::Any::from_string (CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (this->options_.server_args_)),0); + props.bind (CIAO::Deployment::SERVER_ARGUMENTS, val); + } + if (this->options_.instance_nc_) + { + CORBA::Any val; + val <<= CORBA::Any::from_string (CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (this->options_.instance_nc_)), 0); + props.bind (DAnCE::INSTANCE_NC, val); + } + if (this->options_.domain_nc_) + { + CORBA::Any val; + val <<= CORBA::Any::from_string (CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (this->options_.domain_nc_)), 0); + props.bind (DAnCE::DOMAIN_NC, val); + } +} + +#ifndef BUILD_NODE_MANAGER_EXE +ACE_FACTORY_DEFINE (DAnCE_NodeManager_Module, DAnCE_NodeManager_Module) +#endif /*BUILD_NODE_MANAGER_EXE */ diff --git a/modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.h b/modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.h new file mode 100644 index 00000000000..92e9f6319d2 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/Node_Manager_Module.h @@ -0,0 +1,114 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Node_Manager_Module.h + * + * $Id$ + * + * @brief To start NodeManager by starter + * + * @author Vinzenz Tornow + * @author William R. Otte + */ +//============================================================================= + +#ifndef NODE_MANAGER_MODULE_H +#define NODE_MANAGER_MODULE_H + +#include /**/ "ace/pre.h" + +#include "DAnCE_NodeManager_Module_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Service_Config.h" +#include "ace/Vector_T.h" +#include "ace/Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "tao/ORB.h" +#include "tao/PortableServer/POAC.h" +#include "orbsvcs/CosNamingC.h" +#include "tao/Object_Loader.h" +#include "Deployment/DAnCE_Loader.h" +#include "DAnCE/Deployment/Deployment_common.h" + +namespace DAnCE +{ + class NodeManager_Impl; +} + +/** + * @class Node_Manager_Module + * + * @brief The shared object that is instantiated when the node manager + * module/library is dynamically loaded. + * + * This class runs the node manager instance + */ +class DAnCE_NodeManager_Module_Export DAnCE_NodeManager_Module + : public DAnCE::DAnCE_Object_Loader +{ + public: + struct SOptions + { + bool process_ns_; + const ACE_TCHAR* process_ns_file_; + bool create_plan_ns_; + const ACE_TCHAR* create_plan_ns_ior_; + bool rebind_plan_ns_; + const ACE_TCHAR* rebind_plan_ns_ior_; + bool port_indirection_; + ACE_Vector node_managers_; + const ACE_TCHAR * cs_path_; + unsigned int timeout_; + CORBA::Boolean standalone_; + const ACE_TCHAR * server_args_; + const ACE_TCHAR * domain_nc_; + const ACE_TCHAR * instance_nc_; + + SOptions(); + }; + + /// Constructor. + DAnCE_NodeManager_Module (void); + + /// Destructor. + ~DAnCE_NodeManager_Module (void); + + /// Overload the base class method to create a new instance + /// of a DAnCE_NodeManager_Module object. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv []); + + virtual const char * usage (void); + + virtual bool parse_args (int argc, ACE_TCHAR *argv []); + + private: + void register_value_factories (void); + void create_poas (void); + void create_nm_properties (DAnCE::PROPERTY_MAP &props); + + /// Here we store the servants. + typedef ACE_Map_Manager < ACE_TString, + DAnCE::NodeManager_Impl *, + ACE_Null_Mutex > Servant_Map; + Servant_Map nm_map_; + CORBA::ORB_var orb_; + CosNaming::NamingContext_var domain_nc_; + + SOptions options_; + + PortableServer::POA_var root_poa_; + PortableServer::POA_var nm_poa_; +}; + +ACE_FACTORY_DECLARE (DAnCE_NodeManager_Module, DAnCE_NodeManager_Module) + +#include /**/ "ace/post.h" + +#endif /* NODE_MANAGER_MODULE_H */ diff --git a/modules/CIAO/DAnCE/NodeManager/README b/modules/CIAO/DAnCE/NodeManager/README new file mode 100644 index 00000000000..dda9201e240 --- /dev/null +++ b/modules/CIAO/DAnCE/NodeManager/README @@ -0,0 +1,13 @@ +/** + +@page NodeManager README File + + CIAO's NodeManager implementation. NodeManager is the bootstraping +mechanism to create new NodeApplication on the localhost. We +currently depend on starting the NodeApplicationManager process on +some port of all the hosts that have NodeApplication install to +function properly. The port to run this daemon can be set by using the +TAO ORB options command of -ORBEndpoint . This replaces the +earlier CIAO_Daemon implementation of CIAO as defined in the CCM +specification. +*/ diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp new file mode 100644 index 00000000000..d21a088820f --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp @@ -0,0 +1,271 @@ +/* -*- C++ -*- */ + +//======================================================================== +/* + * @file PCVisitor.cpp + * + * $Id$ + * + * This file contains the implementation of the PackageConfiguration + * Visitor class PCVisitor which derives from PCVisitorBase. Each + * Visit function focuses on the functionality necessary to process + * the PackageConfiguration element which is passed to it as an argument + * and on dispatching the next sequence of calls in the correct order! + * + * This implementation takes a PackageConfiguration and tries to modify + * a DeploymentPlan bases on it by expanding the latter in width and depth + * simultaneously. At each level of the PackageConfiguration the + * PCVisitor first expands the DeploymentPlan vertically at the + * corrsponding level and then dispatches the children of the current + * PackageConfiguration element. This in turn might and most probably + * will cause another vertical expansion of the DeploymentPlan, however + * for a different element. This effect is produced due to the flattened + * structure of the DeploymentPlan. + * + * @author Stoyan Paunov + * Shanshan Jiang + */ +//======================================================================== + +#include "PCVisitorBase.h" +#include "PCVisitor.h" +#include "DAnCE/Logger/Log_Macros.h" + +//Constructor +PCVisitor::PCVisitor (Deployment::DeploymentPlan &plan, + Deployment::PackageConfiguration &pc, + bool modify) + : PCVisitorBase (), + plan_ (plan), + pc_ (pc), + modify_ (modify), + last_impl_index_ (-1) +{ +} + +//entry point for the protected visitor to get it do start +//the visitation process +int PCVisitor::Visit () +{ + Accept (*this, this->pc_); + return last_impl_index_; +} + +// A whole slew of overloaded routines for different IDL +// data types part of the PackageConfiguration. + +void PCVisitor::Visit (Deployment::PackageConfiguration &pc) +{ + //visit the ComponentPackageDescription + if (pc.basePackage.length ()) + { + //currently no support for that anywhere + //for (size_t r = 0; r = pc.selectRequirement.length (); ++r); + + Accept (*this, pc.basePackage); + } + else + DANCE_DEBUG (6, (LM_WARNING, + "[PCVisitor - PackageConfiguration] We currently " + "do NOT support package references, specializedConfigs", + "or imports!\n")); +} + +//ComponentPackageDescription descendents + +void PCVisitor::Visit (Deployment::ComponentPackageDescription &cpd) +{ + Accept (*this, cpd.realizes); + //for (size_t impl = 0; impl < cpd.implementation.length (); ++impl) + Accept (*this, cpd.implementation[0]); +} + + +void PCVisitor::Visit (Deployment::ComponentInterfaceDescription &) +{ + //Might want to populate this too once PICML starts supporting it +} + + +void PCVisitor::Visit (Deployment::PackagedComponentImplementation &pci) +{ + Accept (*this, pci.referencedImplementation); +} + + +void PCVisitor::Visit (Deployment::ComponentImplementationDescription &cid) +{ + if (cid.assemblyImpl.length ()) + Accept (*this, cid.assemblyImpl); + else + //;//Do nothing - monolithic component deployment not supported + Accept (*this, cid.monolithicImpl); +} + + +void PCVisitor::Visit (Deployment::ComponentAssemblyDescription &cad) +{ + //visit the SubcomponentInstantiationDescription + Accept (*this, cad.instance); + //visit the connections + Accept (*this, cad.connection); +} + + +void PCVisitor::Visit (Deployment::SubcomponentInstantiationDescription &sid) +{ + //visit the ComponentPackageDescription (again) + if (sid.basePackage.length ()) + { + Accept (*this, sid.basePackage); + } + else + DANCE_DEBUG (6, (LM_WARNING, + "[PCVisitor - SubcomponentInstantiationDescription] ", + "We currently do NOT support package references, ", + "specializedConfigs or imports!\n")); +} + + +void PCVisitor::Visit (Deployment::MonolithicImplementationDescription &mid) +{ + if (!modify_) + { + //increase the implementation length by one + size_t const impl_len = plan_.implementation.length (); + last_impl_index_ = impl_len; + plan_.implementation.length (impl_len + 1); + } + + //visit the NamedImplementationArtifacts + Accept (*this, mid.primaryArtifact); +} + + +void PCVisitor::Visit (Deployment::NamedImplementationArtifact &nia) +{ + if (!modify_) + { + //increase the artifact length by one + size_t const arti_len = plan_.artifact.length (); + plan_.artifact.length (arti_len + 1); + + //set the name + plan_.artifact[arti_len].name = nia.name; + + // Set the artifactRef of implementation + size_t const last_mdd = plan_.implementation.length () - 1; + Deployment::MonolithicDeploymentDescription& mdd = plan_.implementation[last_mdd]; + size_t const ref_len = mdd.artifactRef.length (); + mdd.artifactRef.length (ref_len + 1); + mdd.artifactRef[ref_len] = arti_len; + } + + //visit the actual ImplementationArtifactDescriptor + Accept (*this, nia.referencedArtifact); +} + + +void PCVisitor::Visit (Deployment::ImplementationArtifactDescription &iad) +{ + if (!modify_) + { + size_t last_arti = plan_.artifact.length (); + Deployment::ArtifactDeploymentDescription& add = plan_.artifact[last_arti - 1]; + + //set the location + size_t plan_loc_len = add.location.length (); + size_t const num_loc = iad.location.length (); + for (size_t i = 0; i < num_loc; ++i) + { + add.location.length (plan_loc_len + 1); + add.location[plan_loc_len] = iad.location[i]; + ++plan_loc_len; + } + + //set the execParameter + update_execParameter (iad, add); + } + + else + { + size_t const num_arti = plan_.artifact.length (); + for (size_t i = 0; i < num_arti; ++i) + { + if (ACE_OS::strstr (iad.location[0], plan_.artifact[i].location[0])) + plan_.artifact[i].location[0] = iad.location[0]; + } + } +} + + +//ComponentPackageReference descendents + +void PCVisitor::Visit (Deployment::ComponentPackageReference &) +{ + //not implemented +} + + +//properties + +void PCVisitor::Visit (Deployment::AssemblyPropertyMapping &) +{ +} + + +void PCVisitor::Visit (Deployment::Property &) +{ +} + + +//requirements & capabilities + +void PCVisitor::Visit (Deployment::Requirement &) +{ +} + + +void PCVisitor::Visit (Deployment::Capability &) +{ +} + + +void PCVisitor::Visit (Deployment::ImplementationRequirement &) +{ +} + + +void PCVisitor::Visit (Deployment::ImplementationDependency &) +{ +} + +//ports and connections + +void PCVisitor::Visit (Deployment::AssemblyConnectionDescription &) +{ +} + + +void PCVisitor::Visit (Deployment::SubcomponentPortEndpoint &) +{ +} + + +void PCVisitor::Visit (Deployment::ComponentExternalPortEndpoint &) +{ +} + +void PCVisitor:: +update_execParameter (Deployment::ImplementationArtifactDescription& iad, + Deployment::ArtifactDeploymentDescription& add) +{ + size_t const num_execP = iad.execParameter.length (); + size_t execP_len = add.execParameter.length (); + for (size_t j = 0; j < num_execP; ++j) + { + add.execParameter.length (execP_len + 1); + add.execParameter[execP_len] = iad.execParameter[j]; + ++execP_len; + } +} diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h new file mode 100644 index 00000000000..8417bc8a630 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h @@ -0,0 +1,128 @@ +/* -*- C++ -*- */ + +//======================================================================== +/** + * file PCVisitor.h + * + * $Id$ + * + * This file contains a number of Visitor classes which are used to + * traverse the PackageConfiguration element defined in the + * PackagingData.idl + * + * author Stoyan Paunov + * Shanshan Jiang + */ +//======================================================================== + +#ifndef PC_VISITOR_H +#define PC_VISITOR_H + +#include /**/ "ace/pre.h" +#include "PCVisitorBase.h" //for the base visitor + +//=========================================================================== +/** + * class PCVisitor + * + * This class is is the actual implementation for the PackageConfiguration + * Visitor. It derives from PCVisitorBase and overloads the functions which + * deal with single elements. Sequences are handled in the base class. + */ +//=========================================================================== + + +class PCVisitor : public PCVisitorBase +{ +public: + /// Constructor + PCVisitor (Deployment::DeploymentPlan &plan, + Deployment::PackageConfiguration &pc, + bool modify); + + /// Entry point to protected Visitor functions + int Visit (); + +protected: + /// A whole slew of overloaded routines for different IDL + /// data types part of the PackageConfiguration. + + virtual + void Visit (Deployment::PackageConfiguration &pc); + + //ComponentPackageDescription descendents + virtual + void Visit (Deployment::ComponentPackageDescription &cpd); + + virtual + void Visit (Deployment::ComponentInterfaceDescription &cid); + + virtual + void Visit (Deployment::PackagedComponentImplementation &pci); + + virtual + void Visit (Deployment::ComponentImplementationDescription &cid); + + virtual + void Visit (Deployment::ComponentAssemblyDescription &cad); + + virtual + void Visit (Deployment::SubcomponentInstantiationDescription &sid); + + virtual + void Visit (Deployment::MonolithicImplementationDescription &mid); + + virtual + void Visit (Deployment::NamedImplementationArtifact &nia); + + virtual + void Visit (Deployment::ImplementationArtifactDescription &iad); + + //ComponentPackageReference descendents + virtual + void Visit (Deployment::ComponentPackageReference &cpr); + + //properties + virtual + void Visit (Deployment::AssemblyPropertyMapping &apm); + + virtual + void Visit (Deployment::Property &property); + + //requirements & capabilities + virtual + void Visit (Deployment::Requirement &requirement); + + virtual + void Visit (Deployment::Capability &capability); + + virtual + void Visit (Deployment::ImplementationRequirement &ir); + + virtual + void Visit (Deployment::ImplementationDependency &id); + + //ports and connections + virtual + void Visit (Deployment::AssemblyConnectionDescription &acd); + + virtual + void Visit (Deployment::SubcomponentPortEndpoint &spe); + + virtual + void Visit (Deployment::ComponentExternalPortEndpoint &cepe); + +protected: + void update_execParameter (Deployment::ImplementationArtifactDescription& iad, + Deployment::ArtifactDeploymentDescription& add); + +private: + Deployment::DeploymentPlan& plan_; + Deployment::PackageConfiguration& pc_; + bool modify_; + int last_impl_index_; +}; + +#include /**/ "ace/post.h" + +#endif /* PC_VISITOR_H */ diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp new file mode 100644 index 00000000000..c8ffc983095 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp @@ -0,0 +1,28 @@ +/* -*- C++ -*- */ + +//======================================================================== +/* + * file PCVisitorBase.cpp + * + * $Id$ + * + * This file is a dummy which either includes the PCVisitorBase.inl or + * is ignored. + * + * author Stoyan Paunov + */ +//======================================================================== + +#include "PCVisitorBase.h" + +PCVisitorBase::PCVisitorBase (void) +{ +} + +PCVisitorBase::~PCVisitorBase (void) +{ +} + +#if !defined (__ACE_INLINE__) +#include "PCVisitorBase.inl" +#endif /* __ACE_INLINE__ */ diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h new file mode 100644 index 00000000000..0dee9f7cc5e --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h @@ -0,0 +1,171 @@ +/* -*- C++ -*- */ + +//======================================================================== +/** + * file PCVisitorBase.h + * + * $Id$ + * + * This file contains the virtual base class for the PackageConfiguration + * Visitor which is used to traverse the PackageConfiguration element + * defined in the PackagingData.idl. The PackageConfiguration has a + * number of sequence elements. This class actually implements the + * operations which involve sequences and delegates the calls to + * the operations which handle single elements from the sequence type. + * + * author Stoyan Paunov + */ +//======================================================================== + +#ifndef PC_VISITOR_BASE_H +#define PC_VISITOR_BASE_H + +#include /**/ "ace/pre.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" + +//======================================================================== +/** + * class PCVisitorBase + * + * This class is a virtual base class for the PackageConfiguration Visitor + * The operation which deal with sequences are implemented here by means + * of the visit_sequence function above, in order to make the logic of + * derived classes easier to write. Writers of derived classes need only + * overload the functions which deal with single elements. Sequences are + * always handled here. + */ +//======================================================================== + + +class PCVisitorBase +{ +public: + /// Constructor + PCVisitorBase (void); + + /// Destructor + virtual ~PCVisitorBase (void); + + /// Function what dispatches sequences + template + friend void visit_sequence (SEQ &seq, PCVisitorBase& v); + + /// A whole slew of overloaded routines for different IDL + /// data types part of the PackageConfiguration. + + virtual + void Visit (Deployment::PackageConfiguration &pc) = 0; + void Visit (Deployment::PackageConfigurations &pcs); + + /// ComponentPackageDescription descendents + virtual + void Visit (Deployment::ComponentPackageDescription &cpd) = 0; + void Visit (Deployment::ComponentPackageDescriptions &cpds); + + virtual + void Visit (Deployment::ComponentInterfaceDescription &cid) = 0; + //void Visit (Deployment::ComponentInterfaceDescriptions &cids); + + virtual + void Visit (Deployment::PackagedComponentImplementation &pci) = 0; + void Visit (Deployment::PackagedComponentImplementations &pcis); + + virtual + void Visit (Deployment::ComponentImplementationDescription &cid) = 0; + //void Visit (Deployment::ComponentImplementationDescriptions &cids); + + virtual + void Visit (Deployment::ComponentAssemblyDescription &cad) = 0; + void Visit (Deployment::ComponentAssemblyDescriptions &cads); + + virtual + void Visit (Deployment::SubcomponentInstantiationDescription &sid) = 0; + void Visit (Deployment::SubcomponentInstantiationDescriptions &sids); + + virtual + void Visit (Deployment::MonolithicImplementationDescription &mid) = 0; + void Visit (Deployment::MonolithicImplementationDescriptions &mids); + + virtual + void Visit (Deployment::NamedImplementationArtifact &nia) = 0; + void Visit (Deployment::NamedImplementationArtifacts &nias); + + virtual + void Visit (Deployment::ImplementationArtifactDescription &iad) = 0; + //void Visit (Deployment::ImplementationArtifactDescriptions &iads); + + //ComponentPackageReference descendents + virtual + void Visit (Deployment::ComponentPackageReference &cpr) = 0; + void Visit (Deployment::ComponentPackageReferences &cprs); + + //properties + virtual + void Visit (Deployment::AssemblyPropertyMapping &apm) = 0; + void Visit (Deployment::AssemblyPropertyMappings &apms); + + virtual + void Visit (Deployment::Property &property) = 0; + void Visit (Deployment::Properties &properties); + + //requirements & capabilities + virtual + void Visit (Deployment::Requirement &requirement) = 0; + void Visit (Deployment::Requirements &requirements); + + virtual + void Visit (Deployment::Capability &capability) = 0; + void Visit (Deployment::Capabilities &capabilities); + + virtual + void Visit (Deployment::ImplementationRequirement &ir) = 0; + void Visit (Deployment::ImplementationRequirements &irs); + + virtual + void Visit (Deployment::ImplementationDependency &id) = 0; + void Visit (Deployment::ImplementationDependencies &ids); + + //ports and connections + virtual + void Visit (Deployment::AssemblyConnectionDescription &acd) = 0; + void Visit (Deployment::AssemblyConnectionDescriptions &acds); + + virtual + void Visit (Deployment::SubcomponentPortEndpoint &spe) = 0; + void Visit (Deployment::SubcomponentPortEndpoints &spes); + + virtual + void Visit (Deployment::ComponentExternalPortEndpoint &cepe) = 0; + void Visit (Deployment::ComponentExternalPortEndpoints &cepes); +}; + +template +void Accept (PCVisitorBase &v, T& element_to_visit) +{ + v.Visit (element_to_visit); +} + +/** + * function - visit_sequence + * + * This function is used to handle sequences of elements where each + * element takes the form of a Visitor Node. + */ +template +void visit_sequence (SEQ &seq, PCVisitorBase& v) +{ + CORBA::ULong const size = seq.length (); + + for (CORBA::ULong i = 0; i < size; ++i) + { + Accept(v, seq[i]); + } +} + +#if defined (__ACE_INLINE__) +#include "PCVisitorBase.inl" +#endif /* __ACE_INLINE__ */ + +#include /**/ "ace/post.h" + +#endif /* PC_VISITOR_BASE_H */ diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl new file mode 100644 index 00000000000..955aefb7c4e --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl @@ -0,0 +1,155 @@ +/* -*- C++ -*- */ + +//======================================================================== +/* + * file PCVisitorBase.inl + * + * $Id$ + * + * This file contains the implementation of the sequence-based + * PackageConfiguration Visitor functions. By implementing these + * we relieve developers of derived classes of the burden of handling + * the correct traversal of sequence-based elements. This implementation + * used the visit_sequence templatized function to do the heavy lifting. + * + * author Stoyan Paunov + */ +//======================================================================== + + +/// A whole slew of overloaded routines for different IDL +/// data types part of the PackageConfiguration. + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::PackageConfigurations &pcs) +{ + visit_sequence (pcs, *this); +} + +//ComponentPackageDescription descendents + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::ComponentPackageDescriptions &cpds) +{ + visit_sequence (cpds, *this); +} + +//NOT a member of Deployment + +//ACE_INLINE void PCVisitorBase::Visit +// (Deployment::ComponentInterfaceDescriptions &cids) +//{ +// visit_sequence (cids, *this); +//} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::PackagedComponentImplementations &pcis) +{ + visit_sequence (pcis, *this); +} + +//NOT a member of Deployment + +//ACE_INLINE void PCVisitorBase::Visit +// (Deployment::ComponentImplementationDescriptions &cids) +//{ +// visit_sequence (cids, *this); +//} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::ComponentAssemblyDescriptions &cads) +{ + visit_sequence (cads, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::SubcomponentInstantiationDescriptions &sids) +{ + visit_sequence (sids, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::MonolithicImplementationDescriptions &mids) +{ + visit_sequence (mids, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::NamedImplementationArtifacts &nias) +{ + visit_sequence (nias, *this); +} + +//ACE_INLINE void PCVisitorBase::Visit +// (Deployment::ImplementationArtifactDescriptions &iads) +//{ +// visit_sequence (iads, *this); +//} + +//ComponentPackageReference descendents + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::ComponentPackageReferences &cprs) +{ + visit_sequence (cprs, *this); +} + +//properties + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::AssemblyPropertyMappings &apms) +{ + visit_sequence (apms, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::Properties &properties) +{ + visit_sequence (properties, *this); +} + +//requirements & capabilities + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::Requirements &requirements) +{ + visit_sequence (requirements, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::Capabilities &capabilities) +{ + visit_sequence (capabilities, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::ImplementationRequirements &irs) +{ + visit_sequence (irs, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::ImplementationDependencies &ids) +{ + visit_sequence (ids, *this); +} + +//ports and connections + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::AssemblyConnectionDescriptions &acds) +{ + visit_sequence (acds, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::SubcomponentPortEndpoints &spes) +{ + visit_sequence (spes, *this); +} + +ACE_INLINE void PCVisitorBase::Visit +(Deployment::ComponentExternalPortEndpoints &cepes) +{ + visit_sequence (cepes, *this); +} diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc new file mode 100644 index 00000000000..04855002ed1 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc @@ -0,0 +1,20 @@ +// -*- MPC -*- +//$Id$ + +project (Plan_Generator) : dance_deployment_stub, naming, dance_lib, dance_repositorymanager_stub, dance_logger { + sharedname = DAnCE_Plan_Generator + dynamicflags = PLAN_GENERATOR_IMPL_BUILD_DLL + + Source_Files { + Plan_Generator_Impl.cpp + PCVisitorBase.cpp + PCVisitor.cpp + } + + Header_Files { + Plan_Generator_Impl.h + PCVisitor.h + PCVisitorBase.h + Plan_Generator_Impl_Export.h + } +} diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp new file mode 100644 index 00000000000..fa8ba989020 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp @@ -0,0 +1,151 @@ +/** + * $Id$ + * @file Plan_Generator_Impl.cpp + * @author Shanshan Jiang + */ + +#include "Plan_Generator_Impl.h" +#include "orbsvcs/CosNamingC.h" +#include "PCVisitor.h" +#include "PCVisitorBase.h" + +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Plan_Generator + { + // @todo make this a private method + static CORBA::Object_ptr + fetch_reference_naming (CORBA::ORB_ptr orb, + const char *repoman_name = 0) + { + CORBA::Object_var tmp = orb->resolve_initial_references ("NameService"); + + CosNaming::NamingContext_var pns = + CosNaming::NamingContext::_narrow (tmp.in ()); + + if (CORBA::is_nil (pns.in ())) + { + return CORBA::Object::_nil (); + } + + CosNaming::Name name (1); + name.length (1); + + name[0].id = CORBA::string_dup (repoman_name); + + return pns->resolve (name); + } + + Plan_Generator_i::Plan_Generator_i () + : rm_ () + { + } + + bool + Plan_Generator_i::init (CORBA::ORB_ptr orb, + bool rm_use_naming, + const char *rm_name) + { + CORBA::Object_var obj; + + if (rm_use_naming) + { + obj = fetch_reference_naming (orb, rm_name); + } + else + { + obj = orb->string_to_object (rm_name); + } + + this->rm_ = Deployment::RepositoryManager::_narrow (obj.in ()); + + if (CORBA::is_nil (this->rm_.in ())) + { + DANCE_ERROR (1, (LM_ERROR, + "(%P|%t) Plan_Generator_i: nil Repository " + "Manager reference, narrow failed\n")); + return false; + } + + return true; + } + + bool + Plan_Generator_i::generate_plan (Deployment::DeploymentPlan &plan, + const char *package_uri, + bool use_package_name) + { + if (CORBA::is_nil (rm_.in ())) + { + DANCE_ERROR (1, (LM_ERROR, + "(%P|%t) Plan_Generator_i: nil Execution\n")); + return false; + } + + ::Deployment::PackageConfiguration_var pc; + + char package[PACKAGE_NAME_LEN]; + + size_t length = ACE_OS::strlen (package_uri); + size_t pos1 = 0; + size_t pos2 = ACE_OS::strcspn (package_uri + pos1, "+"); + + while (pos1 < length) + { + ACE_OS::strsncpy (package, package_uri + pos1, pos2 + 1); + + if (use_package_name) + { + pc = this->rm_->findPackageByName (package); + + PCVisitor pcv (plan, *pc, true); + pcv.Visit (); + } + else + { + CORBA::StringSeq_var seq = this->rm_->findNamesByType (package); + + for (CORBA::ULong i = 0; i < seq->length (); ++i) + { + pc = this->rm_->findPackageByName (seq[i]); + + PCVisitor pcv (plan, *pc, true); + pcv.Visit (); + } + } + + pos1 += pos2 + 1; + pos2 = ACE_OS::strcspn (package_uri + pos1, "+"); + } + + return true; + } + + bool + Plan_Generator_i::generate_plan (Deployment::DeploymentPlan &plan, + const char *specific_type, + int &index) + { + if (CORBA::is_nil (rm_.in ())) + { + DANCE_ERROR (1, (LM_ERROR, + "(%P|%t) Plan_Generator_i: nil Execution\n")); + return false; + } + + CORBA::StringSeq_var seq = rm_->findNamesByType (specific_type); + for (CORBA::ULong i = 0; i < seq->length (); ++i) + { + ::Deployment::PackageConfiguration_var pc = + rm_->findPackageByName (seq[i]); + + PCVisitor pcv (plan, *pc, false); + index = pcv.Visit (); + } + + return true; + } + } +} diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h new file mode 100644 index 00000000000..98392e4f549 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h @@ -0,0 +1,78 @@ +/** + * $Id$ + * @file Plan_Generator_Impl.h + * @author Shanshan Jiang + * + * Contains the Plan_Generator_i class, which can be used to generate/modify + * DeploymentPlans. + */ + +#ifndef PLAN_GENERATOR_IMPL_H +#define PLAN_GENERATOR_IMPL_H + +#include "DAnCE/Deployment/Deployment_RepositoryManagerC.h" +#include "Plan_Generator_Impl_Export.h" + +namespace CIAO +{ + namespace Plan_Generator + { + const size_t PACKAGE_NAME_LEN = 1024; + + /** + * @class Plan_Generator_i + * @brief This class generates or modifies deployment plans. + */ + class Plan_Generator_Impl_Export Plan_Generator_i + { + public: + Plan_Generator_i (); + + /** + * @fn init + * @brief Get the proper Repoman, using naming service or ior file. + * @param orb + * @param rm_use_naming Whether use naming service or not. + * @param rm_name The name of the Repoman. + * @returns a boolean denoting if this operation is successful or not. + */ + bool init (CORBA::ORB_ptr orb, + bool rm_use_naming = 0, + const char *rm_name = 0); + + /** + * @fn generate_plan + * @brief Use the package name(s) or type(s) to get the PackageConfiguration + * provided by Repoman; and then use the PackageConfiguration to + * modify the location of all the artifacts in DeploymentPlan. + * @param plan A DeploymentPlan that need to be updated. + * @param package_uri The package name(s) or type(s). + * @param use_package_name Use package name(s) or type(s). + * @returns a boolean denoting if this operation is successful or not. + */ + bool generate_plan (Deployment::DeploymentPlan &plan, + const char *package_uri, + bool use_package_name); + + /** + * @fn generate_plan + * @brief Use the specific type of a package to get the PackageConfiguration + * provided by Repoman; and then use the PackageConfiguration to + * generate the implementation and artifact fields in DeploymentPlan. + * @param plan A DeploymentPlan that need to be updated. + * @param package_uri The package specific type. + * @param index The index of the newly generated implementation and artifact fields. + * @returns a boolean denoting if this operation is successful or not. + */ + bool generate_plan (Deployment::DeploymentPlan &plan, + const char *specific_type, + int &index); + + private: + Deployment::RepositoryManager_var rm_; + }; + + } +} + +#endif /* PLAN_GENERATOR_IMPL_H */ diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h new file mode 100644 index 00000000000..fd120ff7b73 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl Plan_Generator_Impl +// ------------------------------ +#ifndef PLAN_GENERATOR_IMPL_EXPORT_H +#define PLAN_GENERATOR_IMPL_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (PLAN_GENERATOR_IMPL_HAS_DLL) +# define PLAN_GENERATOR_IMPL_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && PLAN_GENERATOR_IMPL_HAS_DLL */ + +#if !defined (PLAN_GENERATOR_IMPL_HAS_DLL) +# define PLAN_GENERATOR_IMPL_HAS_DLL 1 +#endif /* ! PLAN_GENERATOR_IMPL_HAS_DLL */ + +#if defined (PLAN_GENERATOR_IMPL_HAS_DLL) && (PLAN_GENERATOR_IMPL_HAS_DLL == 1) +# if defined (PLAN_GENERATOR_IMPL_BUILD_DLL) +# define Plan_Generator_Impl_Export ACE_Proper_Export_Flag +# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* PLAN_GENERATOR_IMPL_BUILD_DLL */ +# define Plan_Generator_Impl_Export ACE_Proper_Import_Flag +# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* PLAN_GENERATOR_IMPL_BUILD_DLL */ +#else /* PLAN_GENERATOR_IMPL_HAS_DLL == 1 */ +# define Plan_Generator_Impl_Export +# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARATION(T) +# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* PLAN_GENERATOR_IMPL_HAS_DLL == 1 */ + +// Set PLAN_GENERATOR_IMPL_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (PLAN_GENERATOR_IMPL_NTRACE) +# if (ACE_NTRACE == 1) +# define PLAN_GENERATOR_IMPL_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define PLAN_GENERATOR_IMPL_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !PLAN_GENERATOR_IMPL_NTRACE */ + +#if (PLAN_GENERATOR_IMPL_NTRACE == 1) +# define PLAN_GENERATOR_IMPL_TRACE(X) +#else /* (PLAN_GENERATOR_IMPL_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define PLAN_GENERATOR_IMPL_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (PLAN_GENERATOR_IMPL_NTRACE == 1) */ + +#endif /* PLAN_GENERATOR_IMPL_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp new file mode 100644 index 00000000000..99fd3548997 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp @@ -0,0 +1,41 @@ +// $Id$ + +#include "Plan_Launcher_Impl.h" + +namespace DAnCE + { + namespace Plan_Launcher + { + int + run_main_implementation (int argc, ACE_TCHAR *argv[]) + { + try + { + Plan_Launcher_Impl pl (argc, argv); + pl.execute(); + } + catch (const Plan_Launcher_Impl::Deployment_Failure& e) + { + DANCE_ERROR (1, (LM_ERROR, "PlanLauncher error: %C.\n", e.error_.c_str())); + return -1; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Plan_Launcher.cpp::run_main_implementation "); + return -1; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, "Plan_Launcher.cpp::run_main_implementation Unknown exception.\n")); + return -1; + } + return 0; + } + + + } // Plan_Launcher +} // DAnCE + + + + diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.h new file mode 100644 index 00000000000..5a65dd9df9f --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.h @@ -0,0 +1,26 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Plan_Launcher.h + * + * $Id$ + * + * @brief Run PlanLauncher + * + * @author Vinzenz Tornow + */ +//============================================================================= + +#ifndef PLAN_LAUNCHER_H +#define PLAN_LAUNCHER_H + +namespace DAnCE + { + namespace Plan_Launcher + { + int run_main_implementation (int, ACE_TCHAR*[]); + } +} + +#endif /* PLAN_LAUNCHER_H */ diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc new file mode 100644 index 00000000000..c397dc20ef1 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc @@ -0,0 +1,43 @@ +// -*- MPC -*- +// $Id$ + +project(Plan_Launcher_Base) : dance_lib, taolib, ciao_output, naming, ciao_executionmanager_stub, dance_logger { + sharedname = DAnCE_Plan_Launcher_Base + dynamicflags = PLAN_LAUNCHER_BASE_IMPL_BUILD_DLL DANCE_PLAN_LAUNCHER_BASE_MODULE_BUILD_DLL + + Source_Files { + Plan_Launcher_Base_Impl.cpp + Plan_Launcher_Base_Module.cpp + } + + Header_Files { + Plan_Launcher_Base_Impl.h + Plan_Launcher_Base_Module.h + Plan_Launcher_Base_Impl_Export.h + Plan_Launcher_Base_Module_Export.h + } +} + +project(Plan_Launcher) : dance_lib, taolib, ciao_output, xerces, naming, dance_domainapplicationmanager_stub, ciao_config_handlers, ciao_executionmanager_stub, dance_logger, dance_plan_launcher_base { + sharedname = DAnCE_Plan_Launcher + dynamicflags = PLAN_LAUNCHER_IMPL_BUILD_DLL DANCE_PLAN_LAUNCHER_MODULE_BUILD_DLL + Source_Files { + Plan_Launcher_Impl.cpp + Plan_Launcher_Module.cpp + } + + Header_Files { + Plan_Launcher_Impl.h + Plan_Launcher_Module.h + Plan_Launcher_Impl_Export.h + Plan_Launcher_Module_Export.h + } +} + +project(Plan_Launcher_Exec) : dance_exe, dance_logger, xerces, naming, dance_executionmanager_stub, ciao_executionmanager_stub, ciao_config_handlers, dance_plan_launcher { + exename = dance_plan_launcher + + Source_Files { + Plan_Launcher_Exec.cpp + } +} diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp new file mode 100644 index 00000000000..ba8bbb68b19 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.cpp @@ -0,0 +1,780 @@ +// $Id$ +#include "Plan_Launcher_Base_Impl.h" +#include "orbsvcs/CosNamingC.h" +#include "tao/ORB_Core.h" +#include "ace/Sched_Params.h" +#include "ccm/CCM_ObjectC.h" +#include "ace/Env_Value_T.h" +#include "ace/OS_NS_stdio.h" +#include "ace/Get_Opt.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace DAnCE +{ +namespace Plan_Launcher +{ + +Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl(CORBA::ORB_ptr orb, int argc, + ACE_TCHAR *argv[]) : + orb_(CORBA::ORB::_duplicate (orb)), + em_(DAnCE::ExecutionManagerDaemon::_nil()), em_ior_("file://em.ior") //default + , mode_(0x0) +{ + DANCE_TRACE ("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl"); + if (CORBA::is_nil (this->orb_)) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - ") + ACE_TEXT("Creating internal ORB.\n"))); + this->orb_ = CORBA::ORB_init (argc, argv); + } + + this->parse_args(argc, argv); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_i::init - em_ior = \"%C\"\n") + , is_empty (this->em_ior_) ? "NULL" : this->em_ior_.c_str())); + + if (this->mode_ & (MODE_START_PLAN | MODE_STOP_PLAN)) + { + CORBA::Object_var obj; + if (this->em_ior_.length() > 0) + { + obj = this->orb_->string_to_object(this->em_ior_.c_str()); + if (CORBA::is_nil(obj)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - ") + ACE_TEXT("Failed to retrieve EM object from \"%C\"\n"), this->em_ior_.c_str())); + throw Deployment_Failure ("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - " + "failed to retrieve EM object"); + } + } + try + { + this->em_ = ::DAnCE::ExecutionManagerDaemon::_narrow (obj.in()); + } + catch(CORBA::Exception&) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - ") + ACE_TEXT("Failed to retrieve EM object from \"%C\"\n"), this->em_ior_.c_str())); + throw Deployment_Failure ("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - " + "failed to retrieve EM object"); + } + + if (CORBA::is_nil (this->em_.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - ") + ACE_TEXT("failed to get an execution manager.\n"))); + throw Deployment_Failure ("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - " + "failed to get an execution manager"); + } + } + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::Plan_Launcher_Base_Impl - ") + ACE_TEXT("Obtained Execution Manager ref\n"))); +} + +Plan_Launcher_Base_Impl::~Plan_Launcher_Base_Impl() +{ +} + +void Plan_Launcher_Base_Impl::execute() +{ + DANCE_TRACE ("Plan_Launcher_Base_Impl::execute - "); + + if (this->mode_ & MODE_START_PLAN) + { + size_t sz = this->cdr_plan_urls_.size(); + for (size_t i= 0; i < sz; ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::execute - ") + ACE_TEXT("launching plan \"%s\"...\n"), this->cdr_plan_urls_[i].c_str())); + ::Deployment::DeploymentPlan_var plan = this->read_cdr_plan_file(this->cdr_plan_urls_[i].c_str()); + try + { + CORBA::String_var uuid = this->launch_plan (plan.in()); + if (0 == uuid.in ()) + { + throw Deployment_Failure ("Plan_Launcher_Base_Impl::execute - " + "Error launching plan\n"); + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::execute - ") + ACE_TEXT("returned plan UUID is \"%C\"\n"), uuid.in ())); + } + catch (...) + { + this->teardown_plan (plan->UUID.in()); + throw; + } + } + } + else if (this->mode_ & MODE_STOP_PLAN) + { + this->stop_plan(); + } +} + +const char * +Plan_Launcher_Base_Impl::launch_plan(const ::Deployment::DeploymentPlan &plan) +{ + DANCE_TRACE ("Plan_Launcher_Base_Impl::launch_plan"); + + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - Starting...\n"))); + if (CORBA::is_nil (this->em_.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT ("launch_plan called witn an uninitialized EM.\n"))); + return 0; + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT ("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT ("about to call this->em_->preparePlan\n"))); + + ::Deployment::DomainApplicationManager_var dam; + try + { + dam = this->em_->preparePlan (plan, 0); + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("An exception was thrown during EM->preparePlan.\n"))); + throw; + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT ("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT ("after to call this->em_->preparePlan\n"))); + + if (CORBA::is_nil (dam.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("CIAO_PlanLauncher:preparePlan call failed: ") + ACE_TEXT("nil DomainApplicationManager reference\n"))); + return 0; + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("DAM was received from preparePlan.\n"))); + } + + this->write_dam_ior (dam.in()); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("Obtained DAM ref\n"))); + + ::Deployment::Properties_var properties; + ACE_NEW_RETURN (properties, + Deployment::Properties, + 0); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("before startLaunch...\n"))); + + ::Deployment::Connections_var conns; + Deployment::Application_var da; + try + { + da = dam->startLaunch (properties.in (), conns.out()); + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("An exception was thrown during DAM->startLaunch.\n"))); + throw; + } + //Deployment::DomainApplication_var da = Deployment::DomainApplication::_narrow(obj) + if (CORBA::is_nil (da.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("CIAO_PlanLauncher:startLaunch call failed: ") + ACE_TEXT("nil DomainApplication reference\n"))); + return 0; + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("DomainApplication was received from startLaunch\n"))); + } + + this->create_external_connections (plan, conns.inout()); + + // Call finish Launch to complete the connections + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("before finishLaunch\n"))); + try + { + da->finishLaunch (conns.in(), false); // is_ReDAC by default is + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("An exception was thrown during DA->finishLaunch.\n"))); + throw; + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("after finishLaunch\n"))); + + // Call start to activate components + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("before start activating components...\n"))); + + try + { + da->start (); + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT("An exception was thrown during DA->start.\n"))); + throw; + } + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::launch_plan - [success]\n"))); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT ("Plan_Launcher_Base_Impl::launch_plan - ") + ACE_TEXT ("Application Deployed successfully\n"))); + + } + catch (const Deployment::ResourceNotAvailable& ex) + { + char buf[1024]; + ACE_OS::sprintf (buf, "Plan_Launcher_Base_Impl::launch_plan - EXCEPTION: ResourceNotAvaiable exception caught: %s,\n" + "Type: %s\n" + "Property: %s\n" + "Element: %s\n" + "Resource: %s\n", + ex.name.in (), + ex.resourceType.in (), + ex.propertyName.in (), + ex.elementName.in (), + ex.resourceName.in ()); + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("%C"), buf)); + throw Deployment_Failure (buf); + } + catch (const Deployment::StartError& ex) + { + char buf[1024]; + ACE_OS::sprintf (buf, "Plan_Launcher_Base_Impl::launch_plan - EXCEPTION: StartError exception caught: %s, %s\n", + ex.name.in (), + ex.reason.in ()); + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("%C"), buf)); + throw Deployment_Failure (buf); + } + catch (const Deployment::InvalidProperty& ex) + { + char buf[1024]; + ACE_OS::sprintf (buf, "Plan_Launcher_Base_Impl::launch_plan - EXCEPTION: InvalidProperty exception caught: %s, %s\n", + ex.name.in (), + ex.reason.in ()); + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("%C"), buf)); + throw Deployment_Failure (buf); + } + catch (const Deployment::InvalidConnection& ex) + { + char buf[1024]; + ACE_OS::sprintf (buf, "Plan_Launcher_Base_Impl::launch_plan - EXCEPTION: InvalidConnection exception caught: %s, %s\n", + ex.name.in (), + ex.reason.in ()); + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("%C"), buf)); + throw Deployment_Failure (buf); + } + catch (const CORBA::Exception& ex) + { + char buf[1024]; + ACE_OS::sprintf (buf, "Plan_Launcher_Base_Impl::launch_plan - CORBA EXCEPTION: %s\n", + ex._info().fast_rep()); + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("%C"), buf)); + throw Deployment_Failure (buf); + } + catch (...) + { + char buf[1024]; + ACE_OS::sprintf (buf, "Plan_Launcher_Base_Impl::launch_plan - EXCEPTION: non-CORBA exception\n"); + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("%C"), buf)); + throw Deployment_Failure (buf); + } + + return CORBA::string_dup (plan.UUID.in()); +} + +bool Plan_Launcher_Base_Impl::teardown_plan(const char *uuid) +{ + DANCE_TRACE ("Plan_Launcher_Base_Impl::teardown_plan"); + + try + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::teardown_plan - looking for uuid=\"%C\"\n"), uuid)); + ::Deployment::DomainApplicationManagers_var mgrs = this->em_->getManagers(); + ::Deployment::DomainApplicationManager_var dapp_mgr; + for (size_t i = 0; i < mgrs->length(); ++i) + { + ACE_CString s = (*mgrs) [i]->getPlan()->UUID.in(); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::teardown_plan - ") + ACE_TEXT("comparing with existing uuid=\"%C\"\n"), s.c_str())); + if (s == uuid) + { + dapp_mgr = ::Deployment::DomainApplicationManager::_duplicate ( (*mgrs) [i].in()); + break; + } + } + + if (!::CORBA::is_nil (dapp_mgr.in())) + { + this->teardown_plan (dapp_mgr.in()); + } + else + { + throw Deployment_Failure ("Failed to find DAM by UUID"); + } + } + catch (const CORBA::Exception&) + { + // @todo the destroy_dam_by_plan could give a stoperror exception + // we should handle + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::teardown_plan - ") + ACE_TEXT("Unable to find DomainApplicationManager ") + ACE_TEXT("for plan with uuid: %C\n"), uuid)); + return false; + } + + return true; +} + +void +Plan_Launcher_Base_Impl::teardown_plan(::Deployment::DomainApplicationManager_ptr dam) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("Plan_Launcher_Base_Impl::teardown_plan - destroy the application.....\n"))); + ::Deployment::Applications_var apps = dam->getApplications(); + if (0 == apps->length()) + { + DANCE_DEBUG (6, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::teardown_plan - ") + ACE_TEXT("DAM has no application.\n"))); + } + for (size_t i = 0; i < apps->length(); ++i) + { + dam->destroyApplication(apps[i]); + } + this->destroy_dam(dam); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::teardown_plan - [success]\n"))); +} + +void Plan_Launcher_Base_Impl::destroy_dam( + ::Deployment::DomainApplicationManager_ptr dam) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO + ACE_TEXT("Plan_Launcher_Base_Impl::destroy_dam - destroy the manager.....\n"))); + this->em_->destroyManager(dam); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::destroy_dam - [success]\n"))); +} + +void Plan_Launcher_Base_Impl::usage(const ACE_TCHAR* program) +{ + if (0 == program) + { + DANCE_ERROR (1, (LM_ERROR, ACE_TEXT ("[(%P|%t) Executor] Usage: %s \n"), program)); + } + + DANCE_ERROR (1, (LM_ERROR, ACE_TEXT ("Plan Launcher Options :\n") + ACE_TEXT ("-k|--em-ior ") + ACE_TEXT (" : Default file://em.ior\n") + ACE_TEXT ("-d|--read-cdr-plan \n") + ACE_TEXT ("-w|--write-cdr-plan \n") + ACE_TEXT ("-t|--plan-uuid \n") + // ACE_TEXT ("-a|dam-ior \n") + // ACE_TEXT ("-n|--node-mgr : Use naming service to fetch EM\n") + ACE_TEXT ("-q|--stop-plan : Stop the plan\n") + ACE_TEXT ("-h|--help : Show this usage information\n") + ACE_TEXT ("-x|--read-plan \n\n"))); +} + +void Plan_Launcher_Base_Impl::parse_args(int argc, ACE_TCHAR *argv[]) +{ + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("PL options : \""))); + + for (int i = 0; i < argc; ++i) + { + DANCE_DEBUG (9, (LM_TRACE, "\t%s\n", argv[i])); + } + + ACE_Get_Opt get_opt(argc, argv, + ACE_TEXT ("k:d:w:t:a:qx:h"), 0); + get_opt.long_option(ACE_TEXT("em-ior"), 'k', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option(ACE_TEXT("read-cdr-plan"), 'd', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option(ACE_TEXT("write-cdr-plan"), 'w', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option(ACE_TEXT("plan-uuid"), 't', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option(ACE_TEXT("dam-ior"), 'a', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option(ACE_TEXT("stop-plan"), 'q', ACE_Get_Opt::NO_ARG); + get_opt.long_option(ACE_TEXT("read-plan"), 'x', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option(ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); + + int c; + ACE_CString s; + while ( (c = get_opt ()) != EOF) + { + switch (c) + { + case 'k': + this->em_ior_ = expand_env_vars (get_opt.opt_arg()); + break; + case 'd': + s = expand_env_vars (get_opt.opt_arg()); + // trim leading file:// + if (0 < s.length()) + { + ssize_t const pos = s.find("file://"); + if (0 == pos) + { + s = s.substring(7); + } + this->cdr_plan_urls_.push_back(s); + } + break; + case 'w': + if (0 < this->cdr_dest_url_.length()) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Ambiguity: more then one --write-cdr-plan option.\n"))); + throw Deployment_Failure("Ambiguity: more then one --write-cdr-plan option."); + } + this->cdr_dest_url_ = expand_env_vars (get_opt.opt_arg()); + this->mode_ |= MODE_WRITE_CDR; + // trim leading file:// + if (0 < this->cdr_dest_url_.length()) + { + ssize_t pos = this->cdr_dest_url_.find("file://"); + if (0 == pos) + { + this->cdr_dest_url_= this->cdr_dest_url_.substring(7); + } + } + break; + case 't': + this->plan_uuid_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg()); + break; + case 'a': + this->dam_ior_ = expand_env_vars (get_opt.opt_arg()); + DANCE_DEBUG (9, (LM_TRACE, "Parsed DAM IOR : %s\n", this->dam_ior_.c_str())); + break; + case 'q': + this->mode_ |= MODE_STOP_PLAN; + break; + case 'x': + this->xml_plan_urls_.push_back(expand_env_vars (get_opt.opt_arg())); + break; + case 'h': + usage (argv[0]); + throw Help_Issued (); + break; + default: + usage (argv[0]); + throw Deployment_Failure ("parse_args : invalid arguments"); + } + } + if (0 == (this->mode_ & (MODE_STOP_PLAN | MODE_WRITE_CDR))) + { + this->mode_ |= MODE_START_PLAN; + } + // Post-check + this->check_mode_consistentness(); +} + +void Plan_Launcher_Base_Impl::write_dam_ior( + ::Deployment::DomainApplicationManager_ptr dam) +{ + if (is_empty (this->dam_ior_)) + return; + + CORBA::String_var ior = this->orb_->object_to_string(dam); + + FILE* ior_output_file = ACE_OS::fopen (this->dam_ior_.c_str(), "w"); + + if (ior_output_file) + { + ACE_OS::fprintf (ior_output_file, "%s", ior.in()); + ACE_OS::fclose (ior_output_file); + } + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("PlanLauncher.cpp::write_dap_ior - Error in opening file %s to write DAM IOR: %m"), + this->dam_ior_.c_str())); + throw Deployment_Failure (ACE_CString ("write_dap_ior - Error in opening file %s to write DAM IOR: %m") + + this->dam_ior_); + } +} + +void +Plan_Launcher_Base_Impl::stop_plan() +{ + bool stopped = false; + if (!is_empty (this->plan_uuid_)) + { + stopped = true; + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("Stopping plan \"%C\"\n"), this->plan_uuid_.c_str ())); + + if (!this->teardown_plan(this->plan_uuid_.c_str ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("tear down assembly failed: unknown plan uuid.\n"))); + } + } + + if (!is_empty (this->dam_ior_)) + { + stopped = true; + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("Stopping plan by DAM IOR.\n"))); + CORBA::Object_var + obj = this->orb_->string_to_object(this->dam_ior_.c_str()); + if (CORBA::is_nil (obj.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("tear down assembly failed: DAM IOR is invalid.\n"))); + } + else + { + Deployment::DomainApplicationManager_var + dam = Deployment::DomainApplicationManager::_narrow (obj.in()); + this->teardown_plan(dam.in()); + } + } + + if (0 < this->cdr_plan_urls_.size()) + { + stopped = true; + size_t const sz = this->cdr_plan_urls_.size(); + for (size_t i = 0; i < sz; ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("Stopping plan by plan file : %s\n"), this->cdr_plan_urls_[i].c_str())); + ::Deployment::DeploymentPlan_var plan = this->read_cdr_plan_file(this->cdr_plan_urls_[i].c_str()); + if (!this->teardown_plan(plan->UUID.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("tear down assembly failed: unknown plan uuid.\n"))); + } + } + } + + if (!stopped && 0 == this->xml_plan_urls_.size()) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::stop_plan - ") + ACE_TEXT("Stopping plan all running plans.\n"))); + ::Deployment::DomainApplicationManagers_var + mgrs = this->em_->getManagers(); + ::Deployment::DomainApplicationManager_var dapp_mgr; + for (size_t i = 0; i < mgrs->length(); ++i) + { + this->teardown_plan((*mgrs) [i]); + } + } +} + +void Plan_Launcher_Base_Impl::create_external_connections( + const ::Deployment::DeploymentPlan &plan, Deployment::Connections& conn) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("create_external_connections - start\n"))); + for (CORBA::ULong i = 0; i < plan.connection.length(); i++) + { + if (plan.connection[i].externalReference.length() > 0 + && plan.connection[i].externalReference[0].provider) + { + DANCE_DEBUG (6, (LM_DEBUG, + "Plan_Launcher_i::create_external_connections - create connection %C from IOR %C\n", + plan.connection[i].name.in(), + plan.connection[i].externalReference[0].location.in())); + CORBA::ULong const indx = conn.length(); + conn.length(indx + 1); + conn[indx].name= CORBA::string_dup (plan.connection[i].name.in()); + conn[indx].endpoint.length(1L); + CORBA::Object_ptr + obj = this->orb_->string_to_object(plan.connection[i].externalReference[0].location.in()); + if (!CORBA::is_nil (obj)) + { + //Components::CCMObject_ptr ccmobj = Components::CCMObject::_narrow (obj); + conn[indx].endpoint[0] = obj; + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, + ACE_TEXT("Plan_Launcher_i::create_external_connections - can't create object for IOR %C\n"), + plan.connection[i].externalReference[0].location.in())); + throw 0; + } + } + } +} + +Deployment::DeploymentPlan*Plan_Launcher_Base_Impl::read_cdr_plan_file( + const char *cdr_plan_uri) +{ + Deployment::DeploymentPlan* res = 0; + try + { + FILE* file = ACE_OS::fopen (cdr_plan_uri, "r"); + if (0 == file) + { + ACE_CString s = "read_cdr_plan_file : failed to open file \""; + s += cdr_plan_uri; + s += "\""; + throw Deployment_Failure (s.c_str()); + } + + size_t buf_size; + ACE_OS::fread (&buf_size, sizeof (buf_size), 1, file); + + char * buf = new char[buf_size]; + ACE_OS::fread (buf, 1, buf_size, file); + + { + TAO_InputCDR cdr (buf, buf_size); + ACE_NEW_THROW_EX (res, + Deployment::DeploymentPlan (), + CORBA::NO_MEMORY ()); + cdr >> *res; + } + delete [] buf; + ACE_OS::fclose (file); + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Failed to read CDR plan file.\n"))); + throw Deployment_Failure("Failed to read CDR plan file."); + } + return res; +} + +void +Plan_Launcher_Base_Impl::write_cdr_plan_file(const char * filename, + const Deployment::DeploymentPlan & plan) +{ + try + { + FILE * file = ACE_OS::fopen (filename, "w"); + if (0 == file) + { + throw Deployment_Failure ("write_cdr_plan_file : failed to open file."); + } + TAO_OutputCDR cdr; + cdr << plan; + size_t buf_size = cdr.total_length(); + ACE_OS::fwrite (&buf_size, sizeof (buf_size), 1, file); + for (const ACE_Message_Block *i = cdr.begin (); + i != 0; + i = i->cont ()) + { + ACE_OS::fwrite (i->rd_ptr (), 1, i->length (), file); + } + ACE_OS::fclose (file); + } + catch(...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::write_cdr_plan_file - ") + ACE_TEXT("Failed to write CDR plan file.\n"))); + throw Deployment_Failure("Failed to write CDR plan file."); + } +} + +void +Plan_Launcher_Base_Impl::check_mode_consistentness() +{ + if (this->mode_ & MODE_START_PLAN) + { + if (0 == this->cdr_plan_urls_.size() && 0 == this->xml_plan_urls_.size()) + { + throw Deployment_Failure ("check_mode_consistentness : no plan to start"); + } + } + else if (this->mode_ & MODE_STOP_PLAN) + { + // if (is_empty (this->cdr_plan_url_) + // && is_empty (this->xml_plan_url_) + // && is_empty (this->plan_uuid_) + // && is_empty (this->dam_ior_)) + // { + // throw Deployment_Failure ("check_mode_consistentness : no plan to stop"); + // } + } + else if (this->mode_ & MODE_WRITE_CDR) + { + if (is_empty (this->cdr_dest_url_)) + { + throw Deployment_Failure ("check_mode_consistentness : no cdr url for writing plan."); + } + if (1 != this->xml_plan_urls_.size()) + { + throw Deployment_Failure ("check_mode_consistentness : not one source url for writing plan."); + } + } + else + { + throw Deployment_Failure ("check_mode_consistentness : no action specified"); + } + } + +ACE_CString +Plan_Launcher_Base_Impl::expand_env_vars (const ACE_TCHAR * s) + { + ACE_CString src(ACE_TEXT_ALWAYS_CHAR (s)); + ACE_CString res; + size_t pos_done = 0; + while (pos_done < (size_t) src.length()) + { + size_t pos_start = src.find ('$', pos_done); + if (ACE_CString::npos == pos_start) + { + res += src.substring (pos_done); + pos_done = src.length(); + } + else // take the substring before '$' and append value + + { + if (pos_start > pos_done) + { + res += src.substring (pos_done, pos_start - pos_done); + pos_done = pos_start; + } + + size_t pos_end = src.length(); + + size_t p; + + p = src.find (' ', pos_start + 1); + if (ACE_CString::npos != p && pos_end > p) pos_end = p; + + p = src.find ('/', pos_start + 1); + if (ACE_CString::npos != p && pos_end > p) pos_end = p; + + p = src.find ('\\', pos_start + 1); + if (ACE_CString::npos != p && pos_end > p) pos_end = p; + + p = src.find ('$', pos_start + 1); + if (ACE_CString::npos != p && pos_end > p) pos_end = p; + + if (pos_end - pos_start > 1) + { + ACE_Env_Value val (ACE_TEXT_CHAR_TO_TCHAR (src.substring (pos_start + 1, pos_end - pos_start - 1).c_str()), 0); + res += ACE_TEXT_ALWAYS_CHAR (val); + pos_done = pos_end; + } + else + { + DANCE_DEBUG (6, (LM_WARNING, DLINFO ACE_TEXT("Plan_Launcher_Base_Impl::expand_env_vars - ") + ACE_TEXT("Envvar can not be parsed out at %i in \"%s\""), + pos_start, + src.c_str())); + } + } + } + return res; + } + +} // Plan_Launcher +} // DAnCE diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h new file mode 100644 index 00000000000..bb853a521dc --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl.h @@ -0,0 +1,117 @@ +/** + * $Id$ + * @file Plan_Launcher_Base_Impl.h + * @author Will Otte + * + * Contains the Plan_Launcher_i class, which can be used by + * applications to launch component assemblies. + */ +#ifndef PLAN_LAUNCHER_BASE_IMPL_H +#define PLAN_LAUNCHER_BASE_IMPL_H + +#include "Plan_Launcher_Base_Impl_Export.h" +#include "DAnCE/Deployment/Deployment_DomainApplicationManagerC.h" +#include "DAnCE/Deployment/CIAO_ExecutionManagerDaemonC.h" +#include "DAnCE/Deployment/Deployment_ConnectionC.h" +#include "ace/Map_Manager.h" +#include "DAnCE/Deployment/Deployment_DeploymentPlanC.h" +#include "ace/Vector_T.h" + +namespace DAnCE +{ +namespace Plan_Launcher +{ + +/** + * @class Plan_Launcher_Impl + * @brief This class launches and manages deployment plans. + */ +class Plan_Launcher_Base_Impl_Export Plan_Launcher_Base_Impl +{ +public: + struct Deployment_Failure + { + Deployment_Failure(const ACE_CString &error) : + error_(error) + {} + ACE_CString error_; + }; + + struct Help_Issued + { + Help_Issued() {} + }; + + Plan_Launcher_Base_Impl(CORBA::ORB_ptr orb, int argc, ACE_TCHAR *argv[]); + + virtual ~Plan_Launcher_Base_Impl(); + + void execute(); + + static Deployment::DeploymentPlan* read_cdr_plan_file( + const char *deployment_plan_uri); + static void write_cdr_plan_file(const char * filename, + const Deployment::DeploymentPlan & plan); + + protected: + + /** + * @brief Launch a plan, given an IDL deployment plan + * @param plan A valid IDL deployment plan + * @returns a string containing the UUID of the plan. Null indicates failure. + */ + virtual const char * launch_plan(const ::Deployment::DeploymentPlan &plan); + + /// Returns the DAM associated with a given plan URI + ::Deployment::DomainApplicationManager_ptr get_dam(const char *uuid); + + /// Tears down a plan given the UUID + bool teardown_plan(const char *uuid); + + void teardown_plan(::Deployment::DomainApplicationManager_ptr dam); + + void destroy_dam(::Deployment::DomainApplicationManager_ptr dam); + + virtual void stop_plan(); + void usage(const ACE_TCHAR* program = 0); + void parse_args(int argc, ACE_TCHAR *argv[]); + + static bool is_empty(const ACE_CString & s) + { + return 0 == s.length(); + } + + void write_dam_ior(::Deployment::DomainApplicationManager_ptr dam); + + void create_external_connections(const ::Deployment::DeploymentPlan &plan, + Deployment::Connections& conn); + + virtual void check_mode_consistentness(); + static ACE_CString expand_env_vars(const ACE_TCHAR * src); + + /// Cached ORB pointer + CORBA::ORB_var orb_; + + /// Object reference of the ExecutionManager + ::DAnCE::ExecutionManagerDaemon_var em_; + + ACE_Vector cdr_plan_urls_; + ACE_CString plan_uuid_; + ACE_CString em_ior_; + ACE_CString dam_ior_; + ACE_Vector xml_plan_urls_; + ACE_CString cdr_dest_url_; + + unsigned long mode_; + static const unsigned long MODE_START_PLAN = 0x0001; + static const unsigned long MODE_STOP_PLAN = 0x0002; + static const unsigned long MODE_USE_NAMING = 0x0004; + static const unsigned long MODE_WRITE_CDR = 0x0008; + +}; // class Plan_Launcher_Impl + +} // Plan_Launcher +} // DAnCE + + +#endif /* PLAN_LAUNCHER_BASE_IMPL_H */ diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl_Export.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl_Export.h new file mode 100644 index 00000000000..5dcb51be117 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Impl_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl Plan_Launcher_Base_Impl +// ------------------------------ +#ifndef PLAN_LAUNCHER_BASE_IMPL_EXPORT_H +#define PLAN_LAUNCHER_BASE_IMPL_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (PLAN_LAUNCHER_BASE_IMPL_HAS_DLL) +# define PLAN_LAUNCHER_BASE_IMPL_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && PLAN_LAUNCHER_BASE_IMPL_HAS_DLL */ + +#if !defined (PLAN_LAUNCHER_BASE_IMPL_HAS_DLL) +# define PLAN_LAUNCHER_BASE_IMPL_HAS_DLL 1 +#endif /* ! PLAN_LAUNCHER_BASE_IMPL_HAS_DLL */ + +#if defined (PLAN_LAUNCHER_BASE_IMPL_HAS_DLL) && (PLAN_LAUNCHER_BASE_IMPL_HAS_DLL == 1) +# if defined (PLAN_LAUNCHER_BASE_IMPL_BUILD_DLL) +# define Plan_Launcher_Base_Impl_Export ACE_Proper_Export_Flag +# define PLAN_LAUNCHER_BASE_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define PLAN_LAUNCHER_BASE_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* PLAN_LAUNCHER_BASE_IMPL_BUILD_DLL */ +# define Plan_Launcher_Base_Impl_Export ACE_Proper_Import_Flag +# define PLAN_LAUNCHER_BASE_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define PLAN_LAUNCHER_BASE_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* PLAN_LAUNCHER_BASE_IMPL_BUILD_DLL */ +#else /* PLAN_LAUNCHER_BASE_IMPL_HAS_DLL == 1 */ +# define Plan_Launcher_Base_Impl_Export +# define PLAN_LAUNCHER_BASE_IMPL_SINGLETON_DECLARATION(T) +# define PLAN_LAUNCHER_BASE_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* PLAN_LAUNCHER_BASE_IMPL_HAS_DLL == 1 */ + +// Set PLAN_LAUNCHER_BASE_IMPL_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (PLAN_LAUNCHER_BASE_IMPL_NTRACE) +# if (ACE_NTRACE == 1) +# define PLAN_LAUNCHER_BASE_IMPL_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define PLAN_LAUNCHER_BASE_IMPL_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !PLAN_LAUNCHER_BASE_IMPL_NTRACE */ + +#if (PLAN_LAUNCHER_BASE_IMPL_NTRACE == 1) +# define PLAN_LAUNCHER_BASE_IMPL_TRACE(X) +#else /* (PLAN_LAUNCHER_BASE_IMPL_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define PLAN_LAUNCHER_BASE_IMPL_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (PLAN_LAUNCHER_BASE_IMPL_NTRACE == 1) */ + +#endif /* PLAN_LAUNCHER_BASE_IMPL_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp new file mode 100644 index 00000000000..7b1182eeadd --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.cpp @@ -0,0 +1,47 @@ +// -*- C++ -*- +// $Id$ + +#include "Plan_Launcher_Base_Module.h" +#include "tao/TAO_Singleton_Manager.h" +#include "tao/StringSeqC.h" +#include "ace/Get_Opt.h" +#include "Plan_Launcher_Base_Impl.h" +#include "DAnCE/Logger/Log_Macros.h" + +ACE_RCSID (DAnCE, + DAnCE_Plan_Launcher_Base_Module, + "$Id$") + +using namespace DAnCE::Plan_Launcher; + +DAnCE_Plan_Launcher_Base_Module::DAnCE_Plan_Launcher_Base_Module (void) +{ +} + +CORBA::Object_ptr +DAnCE_Plan_Launcher_Base_Module::create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv[]) +{ + try + { + Plan_Launcher_Base_Impl pl (orb, argc, argv); + pl.execute(); + } + catch (const Plan_Launcher_Base_Impl::Deployment_Failure& e) + { + DANCE_ERROR (1, (LM_ERROR, "PlanLauncher error : %C.\n", e.error_.c_str())); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Plan_Launcher_Base_Module.cpp::run_main_implementation "); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, "Plan_Launcher_Base_Module.cpp::run_main_implementation Unknown exception.\n")); + } + return CORBA::Object::_nil (); +} + + +ACE_FACTORY_DEFINE (DAnCE_Plan_Launcher_Base_Module, DAnCE_Plan_Launcher_Base_Module) diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h new file mode 100644 index 00000000000..92c6036aa9e --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module.h @@ -0,0 +1,58 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Plan_Launcher_Base_Module.h + * + * $Id$ + * + * @brief Uses to run PlanLauncher from starter + * + * @author Vinzenz Tornow + */ +//============================================================================= + +#ifndef PLAN_LAUNCHER_MODULE_H +#define PLAN_LAUNCHER_MODULE_H + +#include /**/ "ace/pre.h" + +#include "Plan_Launcher_Base_Module_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Service_Config.h" +#include "tao/Object_Loader.h" + + +/** + * @class Plan_Launcher_Module + * + * @brief The shared object that is instantiated when the plan launcher + * module/library is dynamically loaded. + * + * This class runs the plan launcher instance + */ +class DAnCE_Plan_Launcher_Base_Module_Export DAnCE_Plan_Launcher_Base_Module + : public TAO_Object_Loader + { + public: + /// Constructor. + DAnCE_Plan_Launcher_Base_Module (void); + + /// Overload the base class method to create a new instance + /// of a DAnCE_NodeManager_Module object. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv []); + + private: + }; + +ACE_FACTORY_DECLARE (DAnCE_Plan_Launcher_Base_Module, DAnCE_Plan_Launcher_Base_Module) + +#include /**/ "ace/post.h" + +#endif /* PLAN_LAUNCHER_MODULE_H */ diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module_Export.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module_Export.h new file mode 100644 index 00000000000..f9e3f7a7961 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Base_Module_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_Plan_Launcher_Base_Module +// ------------------------------ +#ifndef DANCE_PLAN_LAUNCHER_BASE_MODULE_EXPORT_H +#define DANCE_PLAN_LAUNCHER_BASE_MODULE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL */ + +#if !defined (DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL 1 +#endif /* ! DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL */ + +#if defined (DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL) && (DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL == 1) +# if defined (DANCE_PLAN_LAUNCHER_BASE_MODULE_BUILD_DLL) +# define DAnCE_Plan_Launcher_Base_Module_Export ACE_Proper_Export_Flag +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_PLAN_LAUNCHER_BASE_MODULE_BUILD_DLL */ +# define DAnCE_Plan_Launcher_Base_Module_Export ACE_Proper_Import_Flag +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_PLAN_LAUNCHER_BASE_MODULE_BUILD_DLL */ +#else /* DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL == 1 */ +# define DAnCE_Plan_Launcher_Base_Module_Export +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_SINGLETON_DECLARATION(T) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_PLAN_LAUNCHER_BASE_MODULE_HAS_DLL == 1 */ + +// Set DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE */ + +#if (DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE == 1) +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_TRACE(X) +#else /* (DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_PLAN_LAUNCHER_BASE_MODULE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_PLAN_LAUNCHER_BASE_MODULE_NTRACE == 1) */ + +#endif /* DANCE_PLAN_LAUNCHER_BASE_MODULE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp new file mode 100644 index 00000000000..bd832e3dd31 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Exec.cpp @@ -0,0 +1,8 @@ +// $Id$ +#include "Plan_Launcher_Module.h" + +#define DANCE_MODULE_MAIN_SKIP_ORB_RUN +#define DANCE_MODULE_MAIN_CLASS_NAME DAnCE_Plan_Launcher_Module +#include "Deployment/Module_Main.h" + + diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp new file mode 100644 index 00000000000..567d2f19c29 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp @@ -0,0 +1,119 @@ +// $Id$ +#include "Plan_Launcher_Impl.h" +#include "orbsvcs/CosNamingC.h" +#include "Config_Handlers/XML_File_Intf.h" +#include "Config_Handlers/DnC_Dump.h" +#include "ace/Sched_Params.h" +#include "ccm/CCM_ObjectC.h" + +#include "ace/SString.h" +#include "ace/Get_Opt.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace DAnCE +{ +namespace Plan_Launcher +{ + +::Deployment::DeploymentPlan * +Plan_Launcher_Impl::load_xml_plan(const ACE_TCHAR *deployment_plan_uri) +{ + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Impl::load_xml_plan - ") + ACE_TEXT("Parsing plan \"%C\"...\n"), deployment_plan_uri)); + + ::Deployment::DeploymentPlan * plan = 0; + try + { + CIAO::Config_Handlers::XML_File_Intf intf (deployment_plan_uri); + intf.add_search_path (ACE_TEXT("DANCE_ROOT"), ACE_TEXT("/docs/schema/")); + intf.add_search_path (ACE_TEXT("CIAO_ROOT"), ACE_TEXT("/docs/schema/")); + intf.add_search_path (ACE_TEXT("TAO_ROOT"), ACE_TEXT("/docs/schema/")); + plan = intf.release_plan (); + if (0 == plan) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Impl::load_xml_plan - ") + ACE_TEXT("Failed to parse plan \"%C\".\n"), deployment_plan_uri)); + throw Deployment_Failure("Failed to parse plan."); + } + } + catch (...) + { + ACE_TString s = ACE_TEXT ("failed to parse deployment plan \""); + s += deployment_plan_uri; + s += ACE_TEXT ("\""); + DANCE_DEBUG (6, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Impl::load_xml_plan - %s\n"), s.c_str())); + throw Deployment_Failure (ACE_TEXT_ALWAYS_CHAR (s.c_str())); + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Impl::load_xml_plan - Parsing complete....\n"))); + return plan; +} + +void Plan_Launcher_Impl::execute() +{ + DANCE_TRACE ("Plan_Launcher_Impl::execute()"); + + if (this->mode_ & MODE_START_PLAN) + { + size_t const sz = this->xml_plan_urls_.size(); + for (size_t i= 0; i < sz; ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Impl::execute - ") + ACE_TEXT("launching plan \"%C\"...\n"), this->xml_plan_urls_[i].c_str())); + ::Deployment::DeploymentPlan_var plan = + this->load_xml_plan(ACE_TEXT_CHAR_TO_TCHAR (this->xml_plan_urls_[i].c_str())); + try + { + CORBA::String_var uuid = this->launch_plan (plan.in()); + if (0 == uuid.in ()) + { + throw Deployment_Failure ("execute - Error launching plan\n"); + } + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Impl::execute - ") + ACE_TEXT("returned plan UUID is \"%C\"\n"), uuid.in ())); + } + catch (...) + { + this->teardown_plan (plan->UUID.in()); + throw; + } + } + this->Plan_Launcher_Base_Impl::execute(); + } + + if (this->mode_ & MODE_STOP_PLAN) + { + this->stop_plan(); + } + + if (this->mode_ & MODE_WRITE_CDR) + { + ::Deployment::DeploymentPlan_var plan = this->load_xml_plan(ACE_TEXT_CHAR_TO_TCHAR (this->xml_plan_urls_[0].c_str())); + this->write_cdr_plan_file(this->cdr_dest_url_.c_str(), plan); + } +} + +void Plan_Launcher_Impl::stop_plan() +{ + DANCE_TRACE ("Plan_Launcher_Impl::stop_plan"); + + if (0 < this->xml_plan_urls_.size()) + { + size_t const sz = this->xml_plan_urls_.size(); + for (size_t i= 0; i < sz; ++i) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("Plan_Launcher_Impl::stop_plan - ") + ACE_TEXT("Stopping plan by plan file: %C\n"), this->xml_plan_urls_[i].c_str())); + ::Deployment::DeploymentPlan_var plan = this->load_xml_plan(ACE_TEXT_CHAR_TO_TCHAR (this->xml_plan_urls_[i].c_str())); + if (!this->teardown_plan(plan->UUID.in())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Plan_Launcher_Impl::stop_plan - ") + ACE_TEXT("tear down assembly failed: unknown plan uuid.\n"))); + } + } + } + this->Plan_Launcher_Base_Impl::stop_plan(); +} + +} // Plan_Launcher +} // DAnCE diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h new file mode 100644 index 00000000000..bb4477f9b15 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h @@ -0,0 +1,43 @@ +/** + * $Id$ + * @file Plan_Launcher_Impl.h + * @author Will Otte + * + * Contains the Plan_Launcher_i class, which can be used by + * applications to launch component assemblies. + */ +#ifndef PLAN_LAUNCHER_IMPL_H +#define PLAN_LAUNCHER_IMPL_H + +#include "Plan_Launcher_Impl_Export.h" +#include "Plan_Launcher_Base_Impl.h" + +namespace DAnCE + { + namespace Plan_Launcher + { + + /** + * @class Plan_Launcher_Impl + * @brief This class launches and manages deployment plans. + */ + class Plan_Launcher_Impl_Export Plan_Launcher_Impl : public Plan_Launcher_Base_Impl + { + public: + Plan_Launcher_Impl (CORBA::ORB_ptr orb, int argc, ACE_TCHAR *argv[]) + : Plan_Launcher_Base_Impl (orb, argc, argv) {}; + + virtual ~Plan_Launcher_Impl () {}; + + void execute(); + static ::Deployment::DeploymentPlan* load_xml_plan (const ACE_TCHAR *deployment_plan_uri); + + protected: + virtual void stop_plan(); + }; // class Plan_Launcher_Impl + + } // Plan_Launcher +} // DAnCE + + +#endif /* PLAN_LAUNCHER_IMPL_H */ diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h new file mode 100644 index 00000000000..1c85d1b98c9 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s Config_Handlers +// ------------------------------ +#ifndef PLAN_LAUNCHER_IMPL_EXPORT_H +#define PLAN_LAUNCHER_IMPL_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (PLAN_LAUNCHER_IMPL_HAS_DLL) +# define PLAN_LAUNCHER_IMPL_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && PLAN_LAUNCHER_IMPL_HAS_DLL */ + +#if !defined (PLAN_LAUNCHER_IMPL_HAS_DLL) +# define PLAN_LAUNCHER_IMPL_HAS_DLL 1 +#endif /* ! PLAN_LAUNCHER_IMPL_HAS_DLL */ + +#if defined (PLAN_LAUNCHER_IMPL_HAS_DLL) && (PLAN_LAUNCHER_IMPL_HAS_DLL == 1) +# if defined (PLAN_LAUNCHER_IMPL_BUILD_DLL) +# define Plan_Launcher_Impl_Export ACE_Proper_Export_Flag +# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* PLAN_LAUNCHER_IMPL_BUILD_DLL */ +# define Plan_Launcher_Impl_Export ACE_Proper_Import_Flag +# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* PLAN_LAUNCHER_IMPL_BUILD_DLL */ +#else /* PLAN_LAUNCHER_IMPL_HAS_DLL == 1 */ +# define Plan_Launcher_Impl_Export +# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARATION(T) +# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* PLAN_LAUNCHER_IMPL_HAS_DLL == 1 */ + +// Set PLAN_LAUNCHER_IMPL_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (PLAN_LAUNCHER_IMPL_NTRACE) +# if (ACE_NTRACE == 1) +# define PLAN_LAUNCHER_IMPL_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define PLAN_LAUNCHER_IMPL_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !PLAN_LAUNCHER_IMPL_NTRACE */ + +#if (PLAN_LAUNCHER_IMPL_NTRACE == 1) +# define PLAN_LAUNCHER_IMPL_TRACE(X) +#else /* (PLAN_LAUNCHER_IMPL_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define PLAN_LAUNCHER_IMPL_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (PLAN_LAUNCHER_IMPL_NTRACE == 1) */ + +#endif /* PLAN_LAUNCHER_IMPL_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp new file mode 100644 index 00000000000..50dc7a0e421 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.cpp @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#include "Plan_Launcher_Module.h" +#include "Plan_Launcher_Impl.h" +#include "ace/Get_Opt.h" +#include "DAnCE/Logger/Log_Macros.h" + +ACE_RCSID (DAnCE, + DAnCE_Plan_Launcher_Module, + "$Id$") + +using namespace DAnCE::Plan_Launcher; + +DAnCE_Plan_Launcher_Module::DAnCE_Plan_Launcher_Module (void) +{ +} + +CORBA::Object_ptr +DAnCE_Plan_Launcher_Module::create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv[]) +{ + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_Plan_Launcher_Module::create_object - ") + ACE_TEXT("Creating Plan Launcher object.\n"))); + + Plan_Launcher_Impl pl (orb, argc, argv); + pl.execute(); + } + catch (const Plan_Launcher_Base_Impl::Help_Issued& ) + { + } + catch (const Plan_Launcher_Base_Impl::Deployment_Failure& e) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DAnCE_Plan_Launcher_Module::create_object - ") + ACE_TEXT("Error : %C.\n"), e.error_.c_str())); + throw; + } + catch (const CORBA::Exception& ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DAnCE_Plan_Launcher_Module::create_object - ") + ACE_TEXT("Caught CORBA Exception %C\n"), + ex._info ().c_str ())); + throw; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO + ACE_TEXT("DAnCE_Plan_Launcher_Module::create_object - ") + ACE_TEXT("Unknown exception.\n"))); + throw; + } + return CORBA::Object::_nil (); +} + +ACE_FACTORY_DEFINE (DAnCE_Plan_Launcher_Module, DAnCE_Plan_Launcher_Module) + + diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.h new file mode 100644 index 00000000000..cc80534de9a --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module.h @@ -0,0 +1,56 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Plan_Launcher_Module.h + * + * $Id$ + * + * @brief Uses to run PlanLauncher from starter + * + * @author Vinzenz Tornow + */ +//============================================================================= + +#ifndef PLAN_LAUNCHER_MODULE_H +#define PLAN_LAUNCHER_MODULE_H + +#include /**/ "ace/pre.h" + +#include "Plan_Launcher_Module_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Service_Config.h" +#include "tao/Object_Loader.h" + + +/** + * @class Plan_Launcher_Module + * + * @brief The shared object that is instantiated when the plan launcher + * module/library is dynamically loaded. + * + * This class runs the plan launcher instance + */ +class DAnCE_Plan_Launcher_Module_Export DAnCE_Plan_Launcher_Module + : public TAO_Object_Loader + { + public: + /// Constructor. + DAnCE_Plan_Launcher_Module (void); + + /// Overload the base class method to create a new instance + /// of a DAnCE_NodeManager_Module object. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv []); + }; + +ACE_FACTORY_DECLARE (DAnCE_Plan_Launcher_Module, DAnCE_Plan_Launcher_Module) + +#include /**/ "ace/post.h" + +#endif /* PLAN_LAUNCHER_MODULE_H */ diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module_Export.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module_Export.h new file mode 100644 index 00000000000..cdeb11e8abf --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Module_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_Plan_Launcher_Module +// ------------------------------ +#ifndef DANCE_PLAN_LAUNCHER_MODULE_EXPORT_H +#define DANCE_PLAN_LAUNCHER_MODULE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL) +# define DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL */ + +#if !defined (DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL) +# define DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL 1 +#endif /* ! DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL */ + +#if defined (DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL) && (DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL == 1) +# if defined (DANCE_PLAN_LAUNCHER_MODULE_BUILD_DLL) +# define DAnCE_Plan_Launcher_Module_Export ACE_Proper_Export_Flag +# define DANCE_PLAN_LAUNCHER_MODULE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_PLAN_LAUNCHER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_PLAN_LAUNCHER_MODULE_BUILD_DLL */ +# define DAnCE_Plan_Launcher_Module_Export ACE_Proper_Import_Flag +# define DANCE_PLAN_LAUNCHER_MODULE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_PLAN_LAUNCHER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_PLAN_LAUNCHER_MODULE_BUILD_DLL */ +#else /* DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL == 1 */ +# define DAnCE_Plan_Launcher_Module_Export +# define DANCE_PLAN_LAUNCHER_MODULE_SINGLETON_DECLARATION(T) +# define DANCE_PLAN_LAUNCHER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_PLAN_LAUNCHER_MODULE_HAS_DLL == 1 */ + +// Set DANCE_PLAN_LAUNCHER_MODULE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_PLAN_LAUNCHER_MODULE_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_PLAN_LAUNCHER_MODULE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_PLAN_LAUNCHER_MODULE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_PLAN_LAUNCHER_MODULE_NTRACE */ + +#if (DANCE_PLAN_LAUNCHER_MODULE_NTRACE == 1) +# define DANCE_PLAN_LAUNCHER_MODULE_TRACE(X) +#else /* (DANCE_PLAN_LAUNCHER_MODULE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_PLAN_LAUNCHER_MODULE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_PLAN_LAUNCHER_MODULE_NTRACE == 1) */ + +#endif /* DANCE_PLAN_LAUNCHER_MODULE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Plan_Launcher/launcher.cpp b/modules/CIAO/DAnCE/Plan_Launcher/launcher.cpp new file mode 100644 index 00000000000..1de14bb9398 --- /dev/null +++ b/modules/CIAO/DAnCE/Plan_Launcher/launcher.cpp @@ -0,0 +1,11 @@ +// $Id$ + +#include "ace/OS_main.h" +#include "Plan_Launcher.h" + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + return DAnCE::Plan_Launcher::run_main_implementation (argc, argv); +} + + diff --git a/modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.cpp b/modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.cpp new file mode 100644 index 00000000000..84e8fba7279 --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.cpp @@ -0,0 +1,390 @@ +// $Id$ + +#include "CCMObjectLocator.h" +#include "ace/String_Base.h" +#include "tao/IORTable/IORTable.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace DAnCE + { + + CCMObjectLocator::CCMObjectLocator (CORBA::ORB_ptr orb, PortableServer::POA_ptr parent_poa, const char * poa_name) + : orb_ (CORBA::ORB::_duplicate (orb)) + { + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::CCMObjectLocator - started\n")); + CORBA::PolicyList policies (4); + policies.length (4); + policies[0] = parent_poa->create_id_assignment_policy (PortableServer::USER_ID); + policies[1] = parent_poa->create_request_processing_policy (PortableServer::USE_SERVANT_MANAGER); + policies[2] = parent_poa->create_servant_retention_policy (PortableServer::NON_RETAIN); + policies[3] = parent_poa->create_lifespan_policy (PortableServer::PERSISTENT); + PortableServer::POAManager_var mgr = parent_poa->the_POAManager (); + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::CCMObjectLocator - before create_POA\n")); + this->myPOA_ = parent_poa->create_POA (poa_name + , mgr.in() + , policies); + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::CCMObjectLocator - after create_POA\n")); + for (CORBA::ULong i = 0; i < policies.length(); ++i) + { + policies[i]->destroy(); + } + + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::CCMObjectLocator - before set_servant_manager\n")); + this->myPOA_->set_servant_manager (this); + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::CCMObjectLocator - CCMObjectLocator started on POA \"%C\"\n" + , poa_name)); + } + + CCMObjectLocator::~CCMObjectLocator() + {} + + void + CCMObjectLocator::postinvoke ( + const ::PortableServer::ObjectId & /*oid*/, + ::PortableServer::POA_ptr /*adapter*/, + const char * /*operation*/, + ::PortableServer::ServantLocator::Cookie /*the_cookie*/, + ::PortableServer::Servant /*the_servant*/ + ) + { + } + + ::PortableServer::Servant + CCMObjectLocator::preinvoke ( + const ::PortableServer::ObjectId & oid, + ::PortableServer::POA_ptr , + const char * , + ::PortableServer::ServantLocator::Cookie & + ) + { + CORBA::String_var s = PortableServer::ObjectId_to_string (oid); + ACE_CString path = s.in(); + CORBA::Object_var res = this->db_.getValue (path.c_str()); + if (!CORBA::is_nil (res)) + { + throw ::PortableServer::ForwardRequest (res._retn()); + } + else + { + int level = this->db_.missingNodeLevel (path.c_str()); + if (0 > level // all levels (app(1), inst(2), port(3) exist but object is nil yet + || 1 == level) // application is not registered + { + throw CORBA::TRANSIENT(); + } + else + { + throw CORBA::OBJECT_NOT_EXIST(); + } + } + } + + void + CCMObjectLocator::start_register (const ACE_CString& plan) + { + TreeNode* tree = 0; + if (0 != this->transactions_.find (plan, tree)) + { + tree = new TreeNode(); + } + else + { + DANCE_ERROR (1, (LM_ERROR, "CCMObjectLocator::start_register - transaction for plan \"%C\" alreday started!\n" + , plan.c_str())); + ///TODO Deside correcet processing of this error - probably finish_register should be called + delete tree; + tree = new TreeNode(); + } + this->transactions_.rebind (plan, tree); + } + + + CORBA::Object_ptr + CCMObjectLocator::register_object (const ACE_CString & plan + , const ACE_CString & inst + , const ACE_CString & port + , CORBA::Object_ptr obj) + { + TreeNode* transaction = 0; + ACE_CString s; + s = plan + TreeNode::delimiter_ + inst; + if (0 < port.length()) + { + s += TreeNode::delimiter_ + port; + } + + if (0 == this->transactions_.find (plan, transaction)) + { + ACE_CString path = inst; + if (0 < port.length()) + { + path += TreeNode::delimiter_ + port; + } + transaction->addChild (path.c_str(), obj); + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::register_object - transaction record for \"%C\" doesn't exist.\n" + , plan.c_str())); + + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::register_object - registering \"%C\"\n" + , s.c_str())); + this->db_.addChild (s.c_str(), obj); + } + + PortableServer::ObjectId_var oid = PortableServer::string_to_ObjectId (s.c_str()); + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::register_object obj id : \"%C\"\n", PortableServer::ObjectId_to_string (oid.in()))); + CORBA::Object_var o = this->myPOA_->create_reference_with_id (oid.in(), "IDL:omg.org/CORBA/Object:1.0"); + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::register_object url : \"%C\"\n", this->orb_->object_to_string (o))); + + //--------------- Temporal workaround +// CORBA::Object_var table_object = +// this->orb_->resolve_initial_references ("IORTable" ); +// +// IORTable::Table_var adapter = +// IORTable::Table::_narrow (table_object.in () ); +// +// adapter->bind(s.c_str(), this->orb_->object_to_string(o)); + //--------------- + return o._retn(); + } + + CORBA::Object_ptr + CCMObjectLocator::register_object (const ACE_CString & app + , const ACE_CString & inst + , CORBA::Object_ptr obj) + { + return this->register_object (app, inst, "", obj); + } + + void + CCMObjectLocator::register_objects (const char * name, TreeNode & node) + { + this->db_.addChild (name, node); + } + + void + CCMObjectLocator::finish_register (const ACE_CString& plan) + { + TreeNode* tree = 0; + if (0 != this->transactions_.find (plan, tree)) + { + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::finish_register - can't find \"%C\" record for register\n", plan.c_str())); + return; + } + this->register_objects (plan.c_str(), *tree); + this->transactions_.unbind (plan); + delete tree; + + } + + void + CCMObjectLocator::unregister_object (const ACE_CString & app + , const ACE_CString & inst + , const ACE_CString & port) + { + ACE_CString s = app + TreeNode::delimiter_ + inst; + if (0 < inst.length()) + { + s += TreeNode::delimiter_ + inst; + if (0 < port.length()) + { + s += TreeNode::delimiter_ + port; + } + } + this->db_.removeChild (s.c_str()); + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::unregister_object - unregistering \"%C\"\n" + , s.c_str())); + } + + ACE_CString + CCMObjectLocator::TreeNode::mergePath (const char * parent, const char * child) + { + return ACE_CString (parent) + delimiter_ + child; + } + + ACE_CString + CCMObjectLocator::TreeNode::splitPath (ACE_CString & path, bool first) + { + size_t pos = first + ? path.find (CCMObjectLocator::TreeNode::delimiter_) + : path.rfind (CCMObjectLocator::TreeNode::delimiter_); + /* if ( 0 == pos ) + { + path = path.substring(1); Cuts off a leading delimiter + }*/ + ACE_CString res; + if (ACE_CString::npos == pos) + { + res = path; + path = ""; + } + else + { + res = path.substring (0, pos); + path = path.substring (pos + 1); + } + return res; + } + + CCMObjectLocator::TreeNode::TreeNode (const TreeNode & src) + : obj_ (src.obj_) + { + TNodes::const_iterator it (src.children_); + for (;!it.done(); ++it) + { + this->children_.bind ( (*it).ext_id_, new TreeNode (* (*it).int_id_)); + } + } + + CCMObjectLocator::TreeNode::~TreeNode() + { + for (TNodes::iterator it = this->children_.begin(); !it.done(); ++it) + { + TreeNode * p = (*it).int_id_; + (*it).int_id_ = 0; + delete p; + } + this->children_.unbind_all(); + } + + CORBA::Object_ptr + CCMObjectLocator::TreeNode::getValue (const char * path) const + { + const TreeNode * p = this->getChild (path); + if (0 != p) + { + return p->getValue(); + } + else + { + return CORBA::Object::_nil(); + } + } + + CCMObjectLocator::TreeNode * + CCMObjectLocator::TreeNode::getChild (const char * path) const + { + ACE_CString path_loc = path; + ACE_CString s = splitPath (path_loc); + + TreeNode * res = 0; + if (0 == this->children_.find (s, res)) + { + return 0 == path_loc.length() ? res : res->getChild (path_loc.c_str()); + } + else + { + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::TreeNode::getChild - Node \"%C\" not found.\n" + , s.c_str())); + return 0; + } + } + + void + CCMObjectLocator::TreeNode::addChild (const char * path, CORBA::Object_ptr obj) + { + ACE_CString path_loc = path; + ACE_CString child = splitPath (path_loc); + + TreeNode * p = 0; +// DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::TreeNode::addChild looking for %C in map with %i.\n" +// , child.c_str() +// , this->children_.current_size())); + + if (0 != this->children_.find (child, p)) + { + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::TreeNode::addChild - create new Node.\n")); + p = new TreeNode; + this->children_.bind (child, p); + } +// DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::TreeNode::addChild - Check for path.")); + if (0 == path_loc.length()) // i.e. empty + { + p->setValue (obj); + } + else + { + p->addChild (path_loc.c_str(), obj); + } + } + + void + CCMObjectLocator::TreeNode::removeChild (const char * path) + { + ACE_CString path_loc = path; + ACE_CString child = splitPath (path_loc); + + TreeNode * p = 0; + if (0 != this->children_.find (child, p)) + { + DANCE_ERROR (1, (LM_ERROR, "CCMObjectLocator::TreeNode::removeChild failed. Node \"%C\" is missing.\n" + , child.c_str())); + } + if (0 == path_loc.length()) // i.e. empty + { + delete p; + } + else + { + p->removeChild (path_loc.c_str()); + } + } + + int + CCMObjectLocator::TreeNode::missingNodeLevel (const char * path) + { + ACE_CString path_loc = path; + ACE_CString child = splitPath (path_loc); + + TreeNode * p = 0; + if (0 != this->children_.find (child, p)) + { + return 1; + } + else + { + if (0 == path_loc.length()) + { + return -1; + } + else + { + int i = p->missingNodeLevel (path_loc.c_str()); + return 0 > i ? -1 : i + 1; + } + } + } + + void + CCMObjectLocator::TreeNode::addChild (const char * path, TreeNode & node) + { + ACE_CString path_loc = path; + ACE_CString child = splitPath (path_loc); + if (0 == path_loc.length()) + { + TreeNode * p = 0; + if (0 == this->children_.find (child, p)) + { + DANCE_DEBUG (6, (LM_DEBUG, "CCMObjectLocator::TreeNode::register_objects - " + "node \"%C\" already exists. Replacing.\n" + , child.c_str())); + this->children_.unbind (child); + delete p; + p = 0; + } + this->children_.bind (child, new TreeNode (node)); + } + else + { + TreeNode * p = 0; + if (0 != this->children_.find (child, p)) + { + p = new TreeNode(); + } + p->addChild (path_loc.c_str(), node); + } + } + +} // DAnCE + diff --git a/modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.h b/modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.h new file mode 100644 index 00000000000..ee47febfd17 --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/CCMObjectLocator.h @@ -0,0 +1,104 @@ +// $Id$ + +#ifndef CCMOBJECTLOCATOR_H_ +#define CCMOBJECTLOCATOR_H_ + +#include "ace/Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "ace/SStringfwd.h" +#include "ace/String_Base.h" +#include "tao/corba.h" +#include "tao/ORB.h" +#include "tao/Object.h" +#include "tao/PortableServer/PortableServer.h" +#include "tao/PortableServer/ServantLocatorC.h" + +#include "RedirectionService_Export.h" + +namespace DAnCE +{ + + class RedirectionService_Export CCMObjectLocator + : public PortableServer::ServantLocator + , public ::CORBA::LocalObject + { + public: + class TreeNode; + typedef ACE_Map_Manager TNodes; + class RedirectionService_Export TreeNode + { + public: + static const char delimiter_ = '/'; + TreeNode() {}; + TreeNode (const TreeNode & src); + ~TreeNode(); + CORBA::Object_ptr getValue() const + { + return CORBA::Object::_duplicate (this->obj_.in()); + }; + CORBA::Object_ptr getValue (const char * path) const; + void setValue (CORBA::Object_ptr obj) + { + this->obj_ = CORBA::Object::_duplicate (obj); + }; + void addChild (const char * path, CORBA::Object_ptr obj = CORBA::Object::_nil()); + void addChild (const char * path, TreeNode & node); + void removeChild (const char * path); + int missingNodeLevel (const char * path); + static ACE_CString mergePath (const char * parent, const char * child); + private: + CORBA::Object_var obj_; + TNodes children_; + TreeNode * getChild (const char * path) const; + static ACE_CString splitPath (ACE_CString & path, bool first = true); + }; + + CCMObjectLocator (CORBA::ORB_ptr orb, PortableServer::POA_ptr parent_poa, const char * poa_name); + + virtual ~CCMObjectLocator(); + + virtual ::PortableServer::Servant preinvoke ( + const ::PortableServer::ObjectId & oid, + ::PortableServer::POA_ptr adapter, + const char * operation, + ::PortableServer::ServantLocator::Cookie & the_cookie); + + virtual void postinvoke ( + const ::PortableServer::ObjectId & oid, + ::PortableServer::POA_ptr adapter, + const char * operation, + ::PortableServer::ServantLocator::Cookie the_cookie, + ::PortableServer::Servant the_servant); + + void start_register (const ACE_CString& plan); + + CORBA::Object_ptr register_object (const ACE_CString & plan + , const ACE_CString & inst + , const ACE_CString & port + , CORBA::Object_ptr obj); + + CORBA::Object_ptr register_object (const ACE_CString & plan + , const ACE_CString & inst + , CORBA::Object_ptr obj); + + void unregister_object (const ACE_CString & plan + , const ACE_CString & inst + , const ACE_CString & port); + + void finish_register (const ACE_CString& plan); + + void register_objects (const char * name, TreeNode & node); + + private: + TreeNode db_; + CORBA::ORB_var orb_; + PortableServer::POA_var myPOA_; + + TNodes transactions_; + CCMObjectLocator() {}; + // to ban the usage + }; // CCMObjectLocator + +} //DAnCE + +#endif /*CCMOBJECTLOCATOR_H_*/ diff --git a/modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.cpp b/modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.cpp new file mode 100644 index 00000000000..a73d5de4abb --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.cpp @@ -0,0 +1,271 @@ +// $Id$ + +#include "NameServiceRedirection.h" +#include "DAnCE/Logger/Log_Macros.h" + +using namespace DAnCE; + +NameServiceRedirection::NameServiceRedirection (CosNaming::NamingContext_ptr naming, + CosNaming::NamingContext_ptr domain) + : naming_ (CosNaming::NamingContext::_duplicate (naming)), + domain_ (CosNaming::NamingContext::_duplicate (domain)) +{ +} + +NameServiceRedirection::~NameServiceRedirection() +{ +} + +void +NameServiceRedirection::start_binding (const ACE_CString& node, const ACE_CString& plan) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::start_binding for node %C plan %C.\n"), + node.c_str(), + plan.c_str())); + ACE_CString key = node + plan; + TRecords* records = 0; + if (0 != this->transactions_.find (key, records)) + { + records = new TRecords(); + this->transactions_.rebind (key, records); + } + else + { + records->clear(); + } +} + +void +NameServiceRedirection::bind (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, const ACE_CString& port, CORBA::Object_ptr obj) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::bind for node %C plan %C component %C and port %C is started.\n"), + node.c_str(), + plan.c_str(), + component.c_str(), + port.c_str())); + SRecord record; + record.name.length (4); + + ACE_CString kind = ""; + CosNaming::NamingContext_var node_context = this->resolve_context (node, kind, this->naming_.in()); + record.name[0].id = CORBA::string_dup (node.c_str()); + record.name[0].kind = CORBA::string_dup (kind.c_str()); + + kind = "DeploymentPlan"; + CosNaming::NamingContext_var plan_context = this->resolve_context (plan, kind, node_context.in()); + record.name[1].id = CORBA::string_dup (plan.c_str()); + record.name[1].kind = CORBA::string_dup (kind.c_str()); + + kind = ""; + CosNaming::NamingContext_var component_context = this->resolve_context (component, kind, plan_context.in()); + record.name[2].id = CORBA::string_dup (component.c_str()); + record.name[2].kind = CORBA::string_dup (kind.c_str()); + + record.name[3].id = CORBA::string_dup (port.c_str()); + record.name[3].kind = CORBA::string_dup ("Port"); + + ACE_CString key = node + plan; + TRecords* records = 0; + if (0 != this->transactions_.find (key, records)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NameServiceRedirection::bind - Can't find record %C for closing transaction.\n"), key.c_str())); + return; + } + + record.obj = CORBA::Object::_duplicate (obj); + records->push_back (record); + + // try{ + // component_context->bind(name, obj); + // } + // catch(CosNaming::NamingContext::AlreadyBound&) + // { + // component_context->rebind(name, obj); + // } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::bind has finished.\n"))); +} + +void +NameServiceRedirection::bind (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, CORBA::Object_ptr obj) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::bind for node %C plan %C and component %C is started.\n"), + node.c_str(), + plan.c_str(), + component.c_str())); + SRecord record; + record.name.length (3); + + ACE_CString kind = ""; + CosNaming::NamingContext_var node_context = this->resolve_context (node, kind, this->naming_.in()); + + record.name[0].id = CORBA::string_dup (node.c_str()); + record.name[0].kind = CORBA::string_dup (kind.c_str()); + + kind = "DeploymentPlan"; + CosNaming::NamingContext_var plan_context = this->resolve_context (plan, kind, node_context.in()); + + record.name[1].id = CORBA::string_dup (plan.c_str()); + record.name[1].kind = CORBA::string_dup (kind.c_str()); + + ACE_CString key = node + plan; + TRecords* records = 0; + if (0 != this->transactions_.find (key, records)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NameServiceRedirection::bind - Can't find record %C for closing transaction.\n"), key.c_str())); + return; + } + + record.name[2].id = CORBA::string_dup (component.c_str()); + record.name[2].kind = CORBA::string_dup ("Component"); + + record.obj = CORBA::Object::_duplicate (obj); + + records->push_back (record); + // try{ + // plan_context->bind(name, obj); + // } + // catch(CosNaming::NamingContext::AlreadyBound&) + // { + // DANCE_DEBUG (6, (LM_DEBUG, "NameServiceRedirection::bind - Already bound exception was thrown. Rebinding\n")); + // plan_context->rebind(name, obj); + // } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::bind has finished.\n"))); +} + +void +NameServiceRedirection::finish_binding (const ACE_CString& node, const ACE_CString& plan) +{ + ACE_CString key = node + plan; + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::finish_binding started for %s.\n"), key.c_str())); + TRecords* records = 0; + if (0 != this->transactions_.find (key, records)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("NameServiceRedirection::finish_binding - Can't find record %C for closing transaction.\n"), key.c_str())); + return; + } + for (unsigned int i = 0; i < records->size(); i++) + { + //this->naming_->bind((*records)[i].name, (*records)[i].obj.in()); + try + { + this->naming_->bind ( (*records) [i].name, (*records) [i].obj.in()); + } + catch (CosNaming::NamingContext::AlreadyBound&) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::finish_bind - Already bound exception was thrown. Rebinding\n"))); + this->naming_->rebind ( (*records) [i].name, (*records) [i].obj.in()); + } + + } + if (!CORBA::is_nil (this->domain_.in())) + { + ACE_CString kind = ""; + CosNaming::NamingContext_var context = this->resolve_context (node, kind, this->naming_.in()); + CosNaming::Name name; + name.length (1); + name[0].id = CORBA::string_dup (node.c_str()); + name[0].kind = CORBA::string_dup (kind.c_str()); + try + { + this->domain_->bind_context (name, context.in()); + } + catch (CosNaming::NamingContext::AlreadyBound&) + { + this->domain_->rebind_context (name, context.in()); + } + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::finish_bind has finished.\n"))); +} + +void +NameServiceRedirection::unbind_context (const ACE_CString& node, const ACE_CString& plan) +{ + DANCE_DEBUG (9, (LM_TRACE, ACE_TEXT("NameServiceRedirection::unbind_context started...\n"))); + ACE_CString kind = ""; + CosNaming::NamingContext_var node_context = this->resolve_context (node, kind, this->naming_.in()); + kind = "DeploymentPlan"; + CosNaming::NamingContext_var plan_context = this->resolve_context (plan, kind, node_context.in()); + DANCE_DEBUG (9, (LM_TRACE, ACE_TEXT("NameServiceRedirection::unbind_context before clear_context for %s.%s\n"), plan.c_str(), kind.c_str())); + this->clear_context (plan_context.inout()); + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup (plan.c_str()); + name[0].kind = CORBA::string_dup (kind.c_str()); + DANCE_DEBUG (9, (LM_TRACE, ACE_TEXT("NameServiceRedirection::unbind_context before unbinding %s.%s\n") + , name[0].id.in(), name[0].kind.in())); + node_context->unbind (name); + DANCE_DEBUG (9, (LM_TRACE, ACE_TEXT("NameServiceRedirection::unbind_context before destroying plan context.\n"))); + plan_context->destroy(); + DANCE_DEBUG (9, (LM_TRACE, ACE_TEXT("NameServiceRedirection::unbind_context fininshed.\n"))); +} + +CosNaming::NamingContext_ptr +NameServiceRedirection::resolve_context (const ACE_CString& context_name, const ACE_CString& context_kind, CosNaming::NamingContext_ptr naming) +{ + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::resolve_context is started for context %C.%C\n"), context_name.c_str(), context_kind.c_str())); + if (CORBA::is_nil (naming)) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::resolve_context source context is nil!.\n"))); + return CosNaming::NamingContext::_nil (); + } + CORBA::Object_var obj; + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup (context_name.c_str()); + name[0].kind = CORBA::string_dup (context_kind.c_str()); + try + { + obj = naming->resolve (name); + } + catch (const CosNaming::NamingContext::NotFound&) + { + obj = naming->bind_new_context (name); + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("NameServiceRedirection::resolve_context has finished.\n"))); + return CosNaming::NamingContext::_narrow (obj._retn()); +} + +void +NameServiceRedirection::clear_context (CosNaming::NamingContext_ptr& naming) +{ + CosNaming::BindingList_var bl; + CosNaming::BindingIterator_var bi; + naming->list (0, bl.out(), bi.out()); + + if (CORBA::is_nil (bi.in())) + { + return; + } + while (bi->next_n (100, bl.out())) + { + for (unsigned int i = 0; i < bl->length(); i++) + { + if (bl[i].binding_type == CosNaming::ncontext) + { + CORBA::Object_var obj = naming->resolve ( (*bl) [i].binding_name); + CosNaming::NamingContext_var sub_context = CosNaming::NamingContext::_narrow (obj); + this->clear_context (sub_context.inout()); + naming->unbind ( (*bl) [i].binding_name); + sub_context->destroy(); + } + else + { + naming->unbind ( (*bl) [i].binding_name); + } + } + } +} + +void +NameServiceRedirection::add_node (const ACE_CString& node) +{ + CosNaming::NamingContext_var new_nc = this->resolve_context (node, "", this->naming_); + if (!CORBA::is_nil (this->domain_.in())) + { + CosNaming::Name name; + name.length (1); + name[0].id = CORBA::string_dup (node.c_str()); + name[0].kind = CORBA::string_dup (""); + this->domain_->bind_context (name, new_nc.in()); + } +} diff --git a/modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.h b/modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.h new file mode 100644 index 00000000000..9de7f179eab --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/NameServiceRedirection.h @@ -0,0 +1,57 @@ +// $Id$ + +#ifndef NAMESERVICEREDIRECTION_H_ +#define NAMESERVICEREDIRECTION_H_ + +#include "ace/SString.h" +#include "ace/Vector_T.h" +#include "ace/Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "orbsvcs/orbsvcs/CosNamingC.h" + +#include "RedirectionService_Export.h" + +namespace DAnCE + { + + class RedirectionService_Export NameServiceRedirection + { + public: + NameServiceRedirection (CosNaming::NamingContext_ptr hosting_naming, + CosNaming::NamingContext_ptr domain_naming); + + ~NameServiceRedirection(); + + void start_binding (const ACE_CString& node, const ACE_CString& plan); + /// Registration for port object + void bind (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, const ACE_CString& port, CORBA::Object_ptr obj); + /// Registration for component object + void bind (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, CORBA::Object_ptr obj); + + void finish_binding (const ACE_CString& node, const ACE_CString& plan); + // Removes all records for specified plan + void unbind_context (const ACE_CString& node, const ACE_CString& plan); + + void add_node (const ACE_CString& node); + + protected: + CosNaming::NamingContext_ptr resolve_context (const ACE_CString& name, const ACE_CString& kind, CosNaming::NamingContext_ptr naming); + + void clear_context (CosNaming::NamingContext_ptr& naming); + + private: + CosNaming::NamingContext_var naming_; + CosNaming::NamingContext_var domain_; + + struct SRecord + { + CosNaming::Name name; + CORBA::Object_var obj; + }; + + typedef ACE_Vector TRecords; + typedef ACE_Map_Manager TTransactions; + TTransactions transactions_; + }; +} +#endif /*NAMESERVICEREDIRECTION_H_*/ diff --git a/modules/CIAO/DAnCE/RedirectionService/RedirectionService.cpp b/modules/CIAO/DAnCE/RedirectionService/RedirectionService.cpp new file mode 100644 index 00000000000..b249c353996 --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/RedirectionService.cpp @@ -0,0 +1,162 @@ +// $Id$ + +#include "RedirectionService.h" +#include "DAnCE/Logger/Log_Macros.h" + +using namespace DAnCE; + +RedirectionService::RedirectionService (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + CosNaming::NamingContext_ptr hosting_naming, + CosNaming::NamingContext_ptr domain_naming, + bool ns, + bool sl) + : orb_ (CORBA::ORB::_duplicate (orb)) + , poa_ (PortableServer::POA::_duplicate (poa)) + , naming_ (hosting_naming, domain_naming) + , ns_ (ns) + , sl_ (sl) +{ + DANCE_TRACE ("RedirectionService::RedirectionService"); + if (this->ns_) + { + if (CORBA::is_nil (hosting_naming)) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("RedirectionService::RedirectionService - ") + ACE_TEXT("Name Service redirection is enabled but name context is nil.\n"))); + } + } +} + +RedirectionService::~RedirectionService() +{ + DANCE_TRACE ("RedirectionService::~RedirectionService"); + for (TLocators::iterator it = this->locators_.begin (); + it != this->locators_.end (); + ++it) + { + delete (*it).int_id_; + } +} + +void +RedirectionService::add_node (const ACE_CString& node) +{ + DANCE_TRACE ("RedirectionService::add_node"); + if (this->sl_) + { + CCMObjectLocator* locator = 0; + if (0 != this->locators_.find (node, locator)) + { + locator = new CCMObjectLocator (this->orb_.in(), this->poa_.in(), node.c_str()); + this->locators_.rebind (node, locator); + } + } + + if (this->ns_) + { + this->naming_.add_node (node); + } +} + +void +RedirectionService::registration_start (const ACE_CString& node, const ACE_CString& plan) +{ + DANCE_TRACE ("RedirectionService::registration_start"); + if (this->sl_) + { + CCMObjectLocator* locator = 0; + if (0 != this->locators_.find (node, locator)) + { + locator = new CCMObjectLocator (this->orb_.in(), this->poa_.in(), node.c_str()); + this->locators_.rebind (node, locator); + } + locator->start_register (plan); + } + if (this->ns_) + { + this->naming_.start_binding (node, plan); + } +} + +void +RedirectionService::registration (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, const ACE_CString& port, CORBA::Object_ptr obj) +{ + DANCE_TRACE ("RedirectionService::registration"); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("RedirectionService::registration - ") + ACE_TEXT("for node %C plan %C component %C and port %C is started.\n"), + node.c_str(), + plan.c_str(), + component.c_str(), + port.c_str())); + CORBA::Object_var ns_obj = CORBA::Object::_duplicate (obj); + if (this->sl_) + { + CCMObjectLocator* locator = 0; + if (0 != this->locators_.find (node, locator)) + { + locator = new CCMObjectLocator (this->orb_.in(), this->poa_.in(), node.c_str()); + this->locators_.rebind (node, locator); + } + ns_obj = locator->register_object (plan, component, port, obj); + } + if (this->ns_) + { + if (0 == port.length()) + { + this->naming_.bind (node, plan, component, ns_obj.in()); + } + else + { + this->naming_.bind (node, plan, component, port, ns_obj.in()); + } + } + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("RedirectionService::registration - ") + ACE_TEXT("Registration has been finished.\n"))); +} + +void +RedirectionService::registration (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, CORBA::Object_ptr obj) +{ + DANCE_TRACE ("RedirectionService::registration"); + this->registration (node, plan, component, "", obj); +} + +void +RedirectionService::registration_finish (const ACE_CString& node, const ACE_CString& plan) +{ + DANCE_TRACE ("RedirectionService::registration_finish"); + if (this->sl_) + { + CCMObjectLocator* locator; + if (0 != this->locators_.find (node, locator)) + { + locator = new CCMObjectLocator (this->orb_.in(), this->poa_.in(), node.c_str()); + this->locators_.rebind (node, locator); + } + locator->finish_register (plan); + } + if (this->ns_) + { + this->naming_.finish_binding (node, plan); + } +} + +void +RedirectionService::unregister (const ACE_CString& node, const ACE_CString& plan) +{ + DANCE_TRACE ("RedirectionService::unregister"); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("RedirectionService::unregister - ") + ACE_TEXT("unregistering %C/%C...\n"), node.c_str(), plan.c_str())); + if (this->ns_) + { + this->naming_.unbind_context (node, plan); + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("RedirectionService::unregister - ") + ACE_TEXT("finished.\n"))); + } + else + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("RedirectionService::unregister - ") + ACE_TEXT("nothing to do.\n"))); + } +} diff --git a/modules/CIAO/DAnCE/RedirectionService/RedirectionService.h b/modules/CIAO/DAnCE/RedirectionService/RedirectionService.h new file mode 100644 index 00000000000..d5749109600 --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/RedirectionService.h @@ -0,0 +1,75 @@ +// $Id$ +#ifndef REDIRECTIONSERVICE_H_ +#define REDIRECTIONSERVICE_H_ + +#include "ace/Map_Manager.h" +#include "tao/PortableServer/PortableServer.h" +#include "orbsvcs/orbsvcs/CosNamingC.h" + +#include "RedirectionService_Export.h" + +#include "CCMObjectLocator.h" +#include "NameServiceRedirection.h" + +/* + This class encapsulates redirection mechanisms for dance offline deployment. + It contains NameService and ServantLocator classes with correspondent poas + and hides from NodeApplication all specific steps required for supporting redirection + If no NameService nor ServantLocator is not required when registration methods do nothing. +*/ +namespace DAnCE + { + class RedirectionService_Export RedirectionService + { + public: + /// Constructor for redirection service object + /// In general, redirection service should be singleton in scope of dance agent process + /// but probably it is not compulsory + /// parameter hosting_context is compulsory if ns is true + /// parameter domain_context should be specified if we need to bind local contextes to external context + /// parameter ns should be passed as true if NameService redirection mechanism should be used + /// parameter sl should be passed as true if ServantLocator redirection should be used + /// parameter poa should be root poa (? probably this parameter is unnecessary and this class can obtains from orb) + RedirectionService (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + CosNaming::NamingContext_ptr hosting_context, + CosNaming::NamingContext_ptr domain_context, + bool ns = false, + bool sl = false); + + ~RedirectionService (); + /// Creates record in redirection service for correspondent node + void add_node (const ACE_CString& node); + /// Opens transaction for registering node ccm objects. + /// Parameters node and plan are the keys + void registration_start (const ACE_CString& node, const ACE_CString& plan); + /// Registration for port object + void registration (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, const ACE_CString& port, CORBA::Object_ptr obj); + /// Registration for component object + void registration (const ACE_CString& node, const ACE_CString& plan, const ACE_CString& component, CORBA::Object_ptr obj); + /// Closes transaction for registering node ccm objects + /// and insert node to correspondent ServantLocator and/or NameService + /// Parameters node and plan are the keys + void registration_finish (const ACE_CString& node, const ACE_CString& plan); + // Removes all records for specified plan + void unregister (const ACE_CString& node, const ACE_CString& plan); + private: + /// Orb variable + CORBA::ORB_var orb_; + + /// Root POA variable + PortableServer::POA_var poa_; + + NameServiceRedirection naming_; + + bool ns_; + + bool sl_; + + /// Map of servant locators (node name is a key) + typedef ACE_Map_Manager TLocators; + TLocators locators_; + }; +} + +#endif /*REDIRECTIONSERVICE_H_*/ diff --git a/modules/CIAO/DAnCE/RedirectionService/RedirectionService.mpc b/modules/CIAO/DAnCE/RedirectionService/RedirectionService.mpc new file mode 100644 index 00000000000..4d3edb6b1b4 --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/RedirectionService.mpc @@ -0,0 +1,14 @@ +// -*- MPC -*- +// $Id$ + +project : taolib, ciao_output, iortable, naming, dance_logger, portableserver, avoids_minimum_corba { + sharedname = DAnCE_RedirectionService + dynamicflags += REDIRECTIONSERVICE_BUILD_DLL + + Source_Files { + RedirectionService.cpp + NameServiceRedirection.cpp + CCMObjectLocator.cpp + } +} + diff --git a/modules/CIAO/DAnCE/RedirectionService/RedirectionService_Export.h b/modules/CIAO/DAnCE/RedirectionService/RedirectionService_Export.h new file mode 100644 index 00000000000..af8e613acfc --- /dev/null +++ b/modules/CIAO/DAnCE/RedirectionService/RedirectionService_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl RedirectionService +// ------------------------------ +#ifndef REDIRECTIONSERVICE_EXPORT_H +#define REDIRECTIONSERVICE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (REDIRECTIONSERVICE_HAS_DLL) +# define REDIRECTIONSERVICE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && REDIRECTIONSERVICE_HAS_DLL */ + +#if !defined (REDIRECTIONSERVICE_HAS_DLL) +# define REDIRECTIONSERVICE_HAS_DLL 1 +#endif /* ! REDIRECTIONSERVICE_HAS_DLL */ + +#if defined (REDIRECTIONSERVICE_HAS_DLL) && (REDIRECTIONSERVICE_HAS_DLL == 1) +# if defined (REDIRECTIONSERVICE_BUILD_DLL) +# define RedirectionService_Export ACE_Proper_Export_Flag +# define REDIRECTIONSERVICE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define REDIRECTIONSERVICE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* REDIRECTIONSERVICE_BUILD_DLL */ +# define RedirectionService_Export ACE_Proper_Import_Flag +# define REDIRECTIONSERVICE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define REDIRECTIONSERVICE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* REDIRECTIONSERVICE_BUILD_DLL */ +#else /* REDIRECTIONSERVICE_HAS_DLL == 1 */ +# define RedirectionService_Export +# define REDIRECTIONSERVICE_SINGLETON_DECLARATION(T) +# define REDIRECTIONSERVICE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* REDIRECTIONSERVICE_HAS_DLL == 1 */ + +// Set REDIRECTIONSERVICE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (REDIRECTIONSERVICE_NTRACE) +# if (ACE_NTRACE == 1) +# define REDIRECTIONSERVICE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define REDIRECTIONSERVICE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !REDIRECTIONSERVICE_NTRACE */ + +#if (REDIRECTIONSERVICE_NTRACE == 1) +# define REDIRECTIONSERVICE_TRACE(X) +#else /* (REDIRECTIONSERVICE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define REDIRECTIONSERVICE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (REDIRECTIONSERVICE_NTRACE == 1) */ + +#endif /* REDIRECTIONSERVICE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/RepositoryManager/DAnCE_RepositoryManager_Module_Export.h b/modules/CIAO/DAnCE/RepositoryManager/DAnCE_RepositoryManager_Module_Export.h new file mode 100644 index 00000000000..b94621bd39b --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/DAnCE_RepositoryManager_Module_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_RepositoryManager_Module +// ------------------------------ +#ifndef DANCE_REPOSITORYMANAGER_MODULE_EXPORT_H +#define DANCE_REPOSITORYMANAGER_MODULE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL) +# define DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL */ + +#if !defined (DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL) +# define DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL 1 +#endif /* ! DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL */ + +#if defined (DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL) && (DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL == 1) +# if defined (DANCE_REPOSITORYMANAGER_MODULE_BUILD_DLL) +# define DAnCE_RepositoryManager_Module_Export ACE_Proper_Export_Flag +# define DANCE_REPOSITORYMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_REPOSITORYMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_REPOSITORYMANAGER_MODULE_BUILD_DLL */ +# define DAnCE_RepositoryManager_Module_Export ACE_Proper_Import_Flag +# define DANCE_REPOSITORYMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_REPOSITORYMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_REPOSITORYMANAGER_MODULE_BUILD_DLL */ +#else /* DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL == 1 */ +# define DAnCE_RepositoryManager_Module_Export +# define DANCE_REPOSITORYMANAGER_MODULE_SINGLETON_DECLARATION(T) +# define DANCE_REPOSITORYMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_REPOSITORYMANAGER_MODULE_HAS_DLL == 1 */ + +// Set DANCE_REPOSITORYMANAGER_MODULE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_REPOSITORYMANAGER_MODULE_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_REPOSITORYMANAGER_MODULE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_REPOSITORYMANAGER_MODULE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_REPOSITORYMANAGER_MODULE_NTRACE */ + +#if (DANCE_REPOSITORYMANAGER_MODULE_NTRACE == 1) +# define DANCE_REPOSITORYMANAGER_MODULE_TRACE(X) +#else /* (DANCE_REPOSITORYMANAGER_MODULE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_REPOSITORYMANAGER_MODULE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_REPOSITORYMANAGER_MODULE_NTRACE == 1) */ + +#endif /* DANCE_REPOSITORYMANAGER_MODULE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp new file mode 100644 index 00000000000..6eec0c3506f --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp @@ -0,0 +1,256 @@ +// $Id$ + +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "PC_Updater.h" +#include "PC_Updater_T.h" +#include "ace/Containers_T.h" //for ACE_Double_Linked_List + +namespace +{ + const size_t TEMP_LEN = 1024; +} + +using namespace PC_Updater_T; + + + //PATH of glory/gory to update the locations of the IADs + // + //PackageConfiguration something; + //ComponentPackageDescriptions basePackage; + //PackagedComponentImplementations implementation; + //ComponentImplementationDescription referencedImplementation; + // + //MONOLITHIC Component: + //MonolithicImplementationDescriptions monolithicImpl; + //NamedImplementationArtifacts primaryArtifact; + //ImplementationArtifactDescription referencedArtifact; + //::CORBA::StringSeq location; + // + //ASSEMBLY-BASED Component + //ComponentAssemblyDescriptions assemblyImpl; + //SubcomponentInstantiationDescriptions instance; + //ComponentPackageDescriptions package; + //... + + + /* + * PC_Updater Constructors + */ + +PC_Updater::PC_Updater (const char* server_path, const char* package) +: server_path_ (server_path), + file_list_ (), + package_ (package), + success_ (true) +{ +} + + +PC_Updater::PC_Updater (ACE_CString& server_path, ACE_CString& package) +: server_path_ (server_path), + file_list_ (), + package_ (package), + success_ (true) +{ +} + + /* + * PC_Updater - Destructor + */ + +PC_Updater::~PC_Updater () +{ + this->clear_list (); +} + + +void PC_Updater::clear_list () +{ + while (!this->file_list_.is_empty ()) + { + ZIP_File_Info* inf = this->file_list_.delete_head (); + + //deallocate the head of the filename list + delete inf; + } +} + + + /* + * PC_Updater - Object update methods + */ + + + // PackageConfiguration + + bool PC_Updater::update (::Deployment::PackageConfiguration &pc) + { + //get the list of files in the package and figure out the names of all necessary files + if (!ZIP_Wrapper::file_list_info (const_cast (this->package_.c_str ()), this->file_list_)) + return false; + + update_sequence (pc.basePackage, this); + + return this->success_; + } + + + // ComponentInterfaceDescription + + void PC_Updater::update (::Deployment::ComponentInterfaceDescription &) + { + } + + // Requirement + + void PC_Updater::update (::Deployment::Requirement &) + { + } + + + // ComponentExternalPortEndpoint + + void PC_Updater::update (::Deployment::ComponentExternalPortEndpoint &) + { + } + + + + // ImplementationDependency + + void PC_Updater::update (Deployment::ImplementationDependency &) + { + } + + // ComponentPackageReference + + void PC_Updater::update (::Deployment::ComponentPackageReference &) + { + } + + // SubcomponentInstantiationDescription + + void PC_Updater::update (::Deployment::SubcomponentInstantiationDescription &sid) + { + update_sequence (sid.basePackage, this); + } + + // SubcomponentPortEndpoint + + void PC_Updater::update (::Deployment::SubcomponentPortEndpoint& ) + { + } + + // AssemblyConnectionDescription + + void PC_Updater::update (::Deployment::AssemblyConnectionDescription &) + { + } + + + // AssemblyPropertyMapping + + void + PC_Updater::update (::Deployment::AssemblyPropertyMapping &) + { + } + + // ComponentAssemblyDescription + + void PC_Updater::update (::Deployment::ComponentAssemblyDescription& cad) + { + update_sequence (cad.instance, this); + } + + // ImplementationArtifactDescription + + void PC_Updater::update (::Deployment::ImplementationArtifactDescription &iad) + { + const char* location = CORBA::string_dup (iad.location[0]); + + //create an iterator + ACE_Double_Linked_List_Iterator iter (this->file_list_); + + //find the correct path and return + while (!iter.done ()) + { + const char* full_path = iter.next ()->name_.c_str (); + //weird. Need to call next to get current ?!?! + + //is it an implementation artifact? + const char* name = ACE_OS::strstr (full_path, "implementations/"); + if (name) + { + //now check if the name matches + name = ACE_OS::strstr (full_path, iad.location[0]); + + if (name) + { + ACE_CString loc (this->server_path_); + loc += "/implementations/"; + loc += location; + + iad.location[0] = CORBA::string_dup (loc.c_str ()); + + //cout << "Location after update: " << iad.location[0] << endl << endl; + return; + } + } + iter++; + } + + DANCE_ERROR (1, (LM_ERROR, + "[PC_Updater::update] Unable to update: %s!\n", + location)); + + this->success_ = false; + } + + // NamedImplementationArtifact + + void PC_Updater::update (::Deployment::NamedImplementationArtifact &nia) + { + update (nia.referencedArtifact); + } + + // ImplementationRequirement + void PC_Updater::update (::Deployment::ImplementationRequirement &) + { + } + + // MonolithicImplementationDescription + void PC_Updater::update (::Deployment::MonolithicImplementationDescription &mid) + { + update_sequence (mid.primaryArtifact, this); + } + + // Capability + void PC_Updater::update (::Deployment::Capability &) + { + } + + // ComponentImplementationDescription + void PC_Updater::update (::Deployment::ComponentImplementationDescription &cid) + { + update_sequence (cid.assemblyImpl, this); + update_sequence (cid.monolithicImpl, this); + } + + // PackagedComponentImplementation + void PC_Updater::update (::Deployment::PackagedComponentImplementation &pci) + { + PC_Updater::update (pci.referencedImplementation); + } + + // ComponentPackageDescription + void PC_Updater::update (::Deployment::ComponentPackageDescription &comppkgdesc) + { + update_sequence (comppkgdesc.implementation, this); + } + + + // Property + void PC_Updater::update (Deployment::Property& ) + { + } diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h new file mode 100644 index 00000000000..fd5b41db555 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h @@ -0,0 +1,114 @@ + +/* -*- C++ -*- */ + +//======================================================================== +/** + * file PC_Updater.h + * + * $Id$ + * + * This class is used to update the location field of the implementation + * artifacts in the PackageConfiguration, so that they point to the + * physical libraries on the collocated HTTP server + * + * author Stoyan Paunov + */ +//======================================================================== + +#ifndef PC_UPDATER_H +#define PC_UPDATER_H +#include /**/ "ace/pre.h" + +#include "DAnCE/Deployment/DeploymentC.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "ace/SString.h" //for the ACE_CString + +#include "ZIP_Wrapper.h" //Wrapper around zzip +#include "ace/Containers_T.h" //for ACE_Double_Linked_List +#include "ace/Malloc_Allocator.h" //for ACE_New_Allocator needed by the doubly link list + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +/** + * @class PC_Updater + * + * This class defines a set of overloaded methods used to update + * the contents of a PackageConfiguration. More specifically the class + * goes through the PackageConfiguration and updates the locations of the + * artifacts, wrt to their location on the HTTP server. + */ +class PC_Updater +{ +public: + + /// Constructors + + PC_Updater (const char* server_path, const char* package); + PC_Updater (ACE_CString& server_path, ACE_CString& package); + + ~PC_Updater (); + + /// A whole slew of overloaded routines for different IDL + /// data types part of the PackageConfiguration. + + bool update (::Deployment::PackageConfiguration &pc); + + void update (::Deployment::Property &property); + + void update (::Deployment::AssemblyConnectionDescription &acd); + + void update (::Deployment::AssemblyPropertyMapping &apm); + + void update (::Deployment::ComponentPackageDescription &comppkgdesc); + + void update (::Deployment::MonolithicImplementationDescription &mid); + + void update (::Deployment::PackagedComponentImplementation &pci); + + void update (::Deployment::SubcomponentPortEndpoint &spe); + + void update (::Deployment::Requirement &requirement); + + void update (::Deployment::ComponentExternalPortEndpoint &cepe); + + void update (::Deployment::ComponentPackageReference &cpr); + + void update (::Deployment::ComponentImplementationDescription &cid); + + void update (::Deployment::SubcomponentInstantiationDescription &sid); + + void update (::Deployment::NamedImplementationArtifact &named_implementation); + + void update (::Deployment::ComponentInterfaceDescription &cid); + + void update (::Deployment::Capability &capability); + + void update (::Deployment::ImplementationArtifactDescription &iad); + + void update (::Deployment::ImplementationRequirement &ir); + + void update (::Deployment::ImplementationDependency &id); + + void update (::Deployment::ComponentAssemblyDescription& cad); + +protected: + + void clear_list (); + +private: + + ACE_CString server_path_; + + /// create a doubly link list + //ACE_New_Allocator allocator_; + ACE_Double_Linked_List file_list_; + + ACE_CString package_; + bool success_; +}; + +#include /**/ "ace/post.h" + +#endif /* PC_UPDATER_H */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp new file mode 100644 index 00000000000..a5f5ec5fb2e --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp @@ -0,0 +1,20 @@ +// $Id$ +#ifndef PC_UPDATER_T_C +#define PC_UPDATER_T_C +#include "PC_Updater.h" +#include "PC_Updater_T.h" + +namespace PC_Updater_T +{ + /// Dumps a sequence + template + void update_sequence (SEQUENCE &seq, PC_Updater* updater) + { + CORBA::ULong const size = seq.length (); + + for (CORBA::ULong i = 0; i < size; ++i) + updater->update (seq[i]); + } +} + +#endif /* PC_Updater_C */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h new file mode 100644 index 00000000000..0696c685e2b --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h @@ -0,0 +1,40 @@ + +/* -*- C++ -*- */ + +//================================================================== +/** + * file PC_Updater_T.h + * + * $Id$ + * + * author Stoyan Paunov + */ +//===================================================================== + +#ifndef CIAO_CONFIG_HANDLERS_PC_UPDATER_T_H +#define CIAO_CONFIG_HANDLERS_PC_UPDATER_T_H +#include /**/ "ace/pre.h" + +#include "ace/config-lite.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace PC_Updater_T +{ + template + static void update_sequence (SEQUENCE &seq); +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "PC_Updater_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("PC_Updater_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + + +#include /**/ "ace/post.h" +#endif /*CIAO_CONFIG_HANDLERS_PC_Updater_T_H*/ diff --git a/modules/CIAO/DAnCE/RepositoryManager/README b/modules/CIAO/DAnCE/RepositoryManager/README new file mode 100644 index 00000000000..322b00098ac --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/README @@ -0,0 +1,46 @@ +This is the README file for the Repository Manager (RM). + +Building RM: +In order to be able to compile the RM you need to have ZLIB lib because the RM +uses it to read the contents of CCM packages. In order to compile the RM +successfully you will need to do the following: +1.Download the binary version of ZLIB or build it yourself +3.Create an "include" and a "lib" subdirectory. Then copy the libraries files into + the "lib" subdirectory and copy zlib.h into the "include" subdirectory. +4.Set $ZLIB_ROOT to point to the directories where you placed the libraries and + the include files. +5.Turn on zzip and zlib in default.features for MPC. +6.MPC will handle the rest. + +If you want to get the component package through http server: +1.Be sure to set JAWS_DOCUMENT_ROOT to the installation path of the RepoMan, i.e., $CIAO_ROOT/DAnCE/RepositoryManager. +2.Start JAWS: $ACE_ROOT/apps/JAWS/server/main + +Start RM: +1.Using ior file: + RepositoryManagerDaemon -o +2.Using Naming Service: + RepositoryManagerDaemon -v [NameofRM] + +Using RMadmin: +1.Install component package: (use BasicSP for example) + Be sure you have BasicSP.cpk in the $CIAO_ROOT/DAnCE/RepositoryManager/packages + > RMadmin -o -n BasicSP -i -l packages/BasicSP.cpk + or + > RMadmin -o -n BasicSP -i -l http://127.0.0.1:5432/packages/BasicSP.cpk (If the JAWS is started) + This will create the BasicSP directory, BasicSP.cpk file and BasicSP.epc file in the + $CIAO_ROOT/DAnCE/RepositoryManager/RepositoryManager/ +2.Delete component package: (use BasicSP for example) + > RMadmin -o -n BasicSP -d +3.Find component package by its name: (use BasicSP for example) + > RMadmin -o -n BasicSP -f +4.Stop RM: + > RMadmin -o -s + This will create the RM_record file in the $CIAO_ROOT/DAnCE/RepositoryManager/RepositoryManager/ which record the + names and UUIDs of the installed component packages. + + + + + + diff --git a/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp new file mode 100644 index 00000000000..bbf047321d8 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp @@ -0,0 +1,265 @@ +// $Id$ + +#include "RM_Helper.h" +#include "ace/Auto_Ptr.h" //for Auto_Ptr +#include "ace/OS_NS_fcntl.h" //for open +#include "ace/OS_NS_unistd.h" //for close +#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir +#include "ace/OS_NS_string.h" +#include "DAnCE/Logger/Log_Macros.h" + +void +RM_Helper::pc_to_cdr (const Deployment::PackageConfiguration& pc, TAO_OutputCDR& cdr) +{ + cdr << pc; +} + + +void +RM_Helper::cdr_to_pc (Deployment::PackageConfiguration& pc, TAO_InputCDR& cdr) +{ + cdr >> pc; +} + + +bool +RM_Helper::externalize (const Deployment::PackageConfiguration& pc, const char* path) +{ + size_t bufsiz = 0; + TAO_OutputCDR out (bufsiz); + + RM_Helper::pc_to_cdr (pc, out); + + const ACE_Message_Block* mb = out.begin (); + + return write_pc_to_disk (path, *(const_cast (mb))); +} + + +bool +RM_Helper::reincarnate (Deployment::PackageConfiguration& pc, const char* path) +{ + size_t length = 0; + ACE_Auto_Ptr mb (read_pc_from_disk (path, length)); + + if (!mb.get ()) + return false; + + TAO_InputCDR in (mb.get ()); + + RM_Helper::cdr_to_pc (pc, in); + + return true; +} + + +/// This function attempts to copy the file from a specified location +/// to another specified location on the hard disk. +bool +RM_Helper::copy_from_disk_to_disk (const char* from_path, const char* to_path) +{ + if (ACE_OS::strcmp (from_path, to_path) == 0) + return true; + + // Open the files + ACE_HANDLE from_handle = ACE_OS::open (from_path, O_RDONLY); + if (from_handle == ACE_INVALID_HANDLE) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::copy_from_disk_to_disk] file open error")), + 0); + + ACE_stat file_info; + ACE_OS::fstat (from_handle, &file_info); + ACE_UINT64 file_length = file_info.st_size; + + ACE_HANDLE to_handle = ACE_OS::open (to_path, O_CREAT | O_TRUNC | O_WRONLY); + if (to_handle == ACE_INVALID_HANDLE) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::copy_from_disk_to_disk] file creation error")), + 0); + + + // Read the contents of the file into the buffer and write the data to another file + ACE_Message_Block *mb = 0; + size_t length; + size_t number = 0; + bool last = false; + + while (true) + { + if ((file_length - BUFSIZ*number) > BUFSIZ) + length = BUFSIZ; + else + { + length = static_cast (file_length - BUFSIZ*number); + last = true; + } + + mb = new ACE_Message_Block (length); + + if (ACE_OS::read_n (from_handle, mb->wr_ptr (), length) == -1) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::copy_from_disk_to_disk] file read error")), + 0); + + ++number; + + mb->length (length); + + for (ACE_Message_Block *curr = mb; curr != 0; curr = curr->cont ()) + if (ACE_OS::write_n (to_handle, curr->rd_ptr (), curr->length ()) == -1) + { + mb->release (); + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::copy_from_disk_to_disk] file write error")), + 0); + } + + mb->release (); + + if (last) + break; + } + + // Close the files + ACE_OS::close (from_handle); + ACE_OS::close (to_handle); + + return true; +} + + +/// This function attempts to write a sequence of bytes from an +/// ACE_Message_Block to a specified location. A 0 is returned +/// in the case of an error and a 1 upon success +bool RM_Helper::write_to_disk ( + const char* full_path, + ACE_Message_Block& mb, + bool replace + ) +{ + ACE_stat stat; + + if (ACE_OS::stat(full_path, &stat) != -1 && !replace) + return false; + + // Open a file handle to the local filesystem + ACE_HANDLE handle = ACE_OS::open (full_path, O_CREAT | O_TRUNC | O_WRONLY); + if (handle == ACE_INVALID_HANDLE) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::write_to_disk] file creation error")), + false); + + // Write the data to the file + for (ACE_Message_Block * curr = &mb; curr != 0; curr = curr->cont ()) + if (ACE_OS::write_n (handle, curr->rd_ptr(), curr->length()) == -1) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("write error")), + false); + + // Close the file handle + ACE_OS::close (handle); + + return true; +} + + +/// This function attempts to write a sequence of bytes from an +/// ACE_Message_Block to a specified location. A 0 is returned +/// in the case of an error and a 1 upon success +/// +/// @note This function write the contents in a way that preserves the +/// structure of the ACE_Message_Block. It is relevant for +/// PackageConfigurations ONLY +bool RM_Helper::write_pc_to_disk ( + const char* full_path, + ACE_Message_Block& mb, + bool replace + ) +{ + ACE_stat stat; + + if (ACE_OS::stat(full_path, &stat) != -1 && !replace) + return false; + + // Open a file handle to the local filesystem + ACE_HANDLE const handle = ACE_OS::open (full_path, O_CREAT | O_TRUNC | O_WRONLY); + if (handle == ACE_INVALID_HANDLE) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::write_to_disk] file creation error")), + false); + + // write the data to the file + for (ACE_Message_Block * curr = &mb; curr != 0; curr = curr->cont ()) + if (ACE_OS::write_n (handle, curr->rd_ptr(), curr->length()) == -1) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("write error")), + 0); + + // Close the file handle + ACE_OS::close (handle); + + return true; +} + + +/// Function to read the contents of a file from disk into an ACE_Message_Block +/// returns a pointer to an ACE_Message_Block and updates the lenght on success +/// 0 on failure +ACE_Message_Block* +RM_Helper::read_pc_from_disk ( + const char* full_path, + size_t &length + ) +{ + length = 0; + + // Open the file + ACE_HANDLE const handle = ACE_OS::open (full_path, O_RDONLY); + if (handle == ACE_INVALID_HANDLE) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::read_mb_from_disk] file open error")), + 0); + + ACE_stat file_info; + ACE_OS::fstat (handle, &file_info); + + // Get and check the length of the file + length = static_cast (file_info.st_size); + + ACE_INT64 check = length; + if (check != file_info.st_size) + { + length = 0; + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::read_mb_from_disk] file length error")), + 0); + } + + // Read the contents of the file into the buffer + ACE_Message_Block* mb = 0; + ACE_NEW_RETURN (mb, ACE_Message_Block (length + 1), 0); + + if (ACE_OS::read_n (handle, mb->wr_ptr (), length) == -1) + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[RM::read_mb_from_disk] file read error")), + 0); + + mb->length (length); + + // Close the file handle + ACE_OS::close (handle); + + return mb; +} diff --git a/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h new file mode 100644 index 00000000000..47e46d35a6f --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h @@ -0,0 +1,81 @@ + +/* -*- C++ -*- */ + +//============================================================================= +/** + * @file RM_Helper.h + * + * $Id$ + * + * This class aggregates a number of helper functions used by the + * CIAO RepositoryManager + * + * + * @author Stoyan Paunov + */ +//============================================================================= + +#ifndef RM_HELPER_H_ +#define RM_HELPER_H_ + + +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "tao/CDR.h" +#include "ace/Message_Block.h" + + +class RM_Helper +{ +public: + + static void pc_to_cdr (const Deployment::PackageConfiguration& pc, TAO_OutputCDR& cdr); + + static void cdr_to_pc (Deployment::PackageConfiguration& pc, TAO_InputCDR& cdr); + + static bool externalize (const Deployment::PackageConfiguration& pc, const char* path); + + static bool reincarnate (Deployment::PackageConfiguration& pc, const char* path); + + /** + * Function that copies the file from a specified location to another + * specified location on the hard disk. + * @retval true on success + * @retval false on error + */ + static bool copy_from_disk_to_disk (const char* from_path, const char* to_path); + + /** + * Function that writes out a file to a specified location on the hard disk + * @retval true on success + * @retval false on already exists and replace == false + * @retval false on error + */ + static bool write_to_disk (const char* full_path, + ACE_Message_Block& mb, + bool replace = true + ); + + /** + * Function that writes out a file to a specified location on the hard disk + * @retval true on success + * @retval false on already exists and replace == false + * @retval 0 on error + * @note This function is relevant for PackageConfigurations ONLY + */ + static bool write_pc_to_disk (const char* full_path, + ACE_Message_Block& mb, + bool replace = true); + + /** + * Function to read the contents of a file from disk into an + * ACE_Message_Block returns a pointer to an ACE_Message_Block and updates + * the lenght on success + * @retval 0 on failure + */ + + static ACE_Message_Block* read_pc_from_disk (const char* full_path, + size_t &length); + +}; + +#endif diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp new file mode 100644 index 00000000000..aecf94960af --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp @@ -0,0 +1,281 @@ + +/* -*- C++ -*- */ + +//====================================================================== +/** + * @file RepositoryManager.cpp + * + * $Id$ + * + * Description: + * Main driver program for the CIAO RepositoryManager + * Please run as follows: + * RepositoryManagerDaemon [int:nthreads] + * + * @author Stoyan Paunov + */ +//====================================================================== + +#include "RepositoryManager_Impl.h" +#include "ace/OS_NS_stdio.h" +#include "ace/streams.h" +#include "ace/Auto_Ptr.h" +#include "ace/Task.h" +#include "ace/Get_Opt.h" +#include "ace/SString.h" + +#include "orbsvcs/CosNamingC.h" + +namespace CIAO +{ + namespace RepositoryManager + { + /// Name of the file holding the IOR of the RM + const char * RMior = "RepositoryManagerDaemon.ior"; + + // Name of RepoMan + const char * repoman_name_ = "RepositoryManager"; + + //Name service of the RM + const char * RMname_service = "RepositoryManager"; + + /// Default number of worker threads to run in the multi-threaded RM + static unsigned int nthreads = 3; + static ACE_CString HTTPserver = "127.0.0.1:5432"; + + static bool register_with_ns_ = false; + static bool write_to_ior_ = true; + } +} + +// Forward declaration +bool parse_args (int argc, ACE_TCHAR *argv[]); + +/** + * @class Worker + * + * Class that implements the service routine of the worker threads + * of the repository manager + */ +class Worker : public ACE_Task_Base +{ +public: + /// ctor + Worker (CORBA::ORB_ptr orb); + + /// The thread entry point. + virtual int svc (void); + +private: + /// The orb + CORBA::ORB_var orb_; +}; + +bool +write_ior_file (CORBA::ORB_ptr orb, + CIAO::RepositoryManagerDaemon_ptr obj) +{ + CORBA::String_var ior = orb->object_to_string (obj); + + FILE* RMior_file = ACE_OS::fopen (CIAO::RepositoryManager::RMior, "w"); + + if (RMior_file) + { + ACE_OS::fprintf (RMior_file, + "%s", + ior.in ()); + ACE_OS::fclose (RMior_file); + } + else + { + return false; + } + + return true; +} + +bool +register_with_ns (CORBA::ORB_ptr orb, + CIAO::RepositoryManagerDaemon_ptr obj) +{ + if (ACE_OS::strlen (CIAO::RepositoryManager::repoman_name_) > 0) + { + CIAO::RepositoryManager::RMname_service = + CIAO::RepositoryManager::repoman_name_; + } + + // Naming Service related operations + CORBA::Object_var naming_context_object = + orb->resolve_initial_references ("NameService"); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow (naming_context_object.in ()); + + // Initialize the Naming Sequence + CosNaming::Name name (1); + name.length (1); + + // String dup required for MSVC6 + name[0].id = CORBA::string_dup (CIAO::RepositoryManager::RMname_service); + + // Register the servant with the Naming Service + naming_context->rebind (name, obj); + + return true; +} + +///Main function + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + //init the ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); + + if (!parse_args (argc, argv)) + return -1; + + // Get the root POA object + CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); + + // Downcast to POA type + PortableServer::POA_var root_poa = PortableServer::POA::_narrow (obj.in ()); + + //activate the POA manager + PortableServer::POAManager_var mgr = root_poa->the_POAManager (); + mgr->activate (); + + // Create a servant + CIAO_RepositoryManagerDaemon_i* repo = 0; + ACE_NEW_RETURN (repo, + CIAO_RepositoryManagerDaemon_i ( + orb.in (), + CIAO::RepositoryManager::HTTPserver.c_str (), + CIAO::RepositoryManager::repoman_name_), + 1); + + //transfer ownership to the POA + PortableServer::ServantBase_var owner_transfer(repo); + PortableServer::ObjectId_var id = + root_poa->activate_object (ci_srv); + CORBA::Object_var repo_object = root_poa->id_to_reference (id.in ()); + CIAO::RepositoryManagerDaemon_var RepositoryManagerDaemon = + CIAO::RepositoryManagerDaemon::_narrow (repo_object.in ()); + + bool retval = false; + + if (CIAO::RepositoryManager::write_to_ior_) + { + retval = + write_ior_file (orb.in (), + RepositoryManagerDaemon.in ()); + } + else if (CIAO::RepositoryManager::register_with_ns_) + { + retval = + register_with_ns (orb.in (), + RepositoryManagerDaemon.in ()); + } + + if (!retval) + return -1; + + + Worker worker (orb.in ()); + if (worker.activate (THR_NEW_LWP | THR_JOINABLE, + CIAO::RepositoryManager::nthreads) != 0) + DANCE_ERROR_RETURN (1, (LM_ERROR, + "Cannot activate worker threads\n"), + 1); + + worker.thr_mgr ()->wait (); + + DANCE_DEBUG (6, (LM_DEBUG, "event loop finished\n")); + + // done + return 0; + + // todo shutdown orb + } + catch (CORBA::Exception &ex) { + cerr << "CORBA Exception: " << ex << endl; + + return 1; + } + + + return 0; +} + + +// **************************************************************** + +///Code to parse the arguments + + bool + parse_args (int argc, ACE_TCHAR *argv[]) + { + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("ov:s:n:")); + int c; + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + CIAO::RepositoryManager::write_to_ior_ = true; + CIAO::RepositoryManager::register_with_ns_ = false; + break; + case 'v': + CIAO::RepositoryManager::write_to_ior_ = false; + CIAO::RepositoryManager::register_with_ns_ = true; + CIAO::RepositoryManager::repoman_name_ = get_opts.opt_arg (); + break; + case 's': + CIAO::RepositoryManager::HTTPserver = get_opts.opt_arg (); + break; + case 'n': + CIAO::RepositoryManager::nthreads = ACE_OS::atoi (get_opts.opt_arg ()); + break; + case '?': // display help for use of the server. + DANCE_DEBUG (8, (LM_INFO, + "usage: %s\n" + "-o \n" + "-v \n" + "-s \n" + "-n \n", + argv [0])); + return false; + break; + default: + ; + } + + return true; + } + + + +// **************************************************************** + +///Constuctor for the worker class +Worker::Worker (CORBA::ORB_ptr orb) + : orb_ (CORBA::ORB::_duplicate (orb)) +{ +} + +///implementation of the service routine inherited from ACE::Task_Base + +int Worker::svc (void) +{ + try + { + this->orb_->run (); + } + catch (const CORBA::Exception&) + { + } + return 0; +} + + diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc new file mode 100644 index 00000000000..c403b7a7803 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc @@ -0,0 +1,68 @@ +// -*- MPC -*- +// $Id$ + +project (DAnCE_RepositoryManagerDaemon_IDL) : ciaoidldefaults { + custom_only = 1 + IDL_Files { + RepositoryManagerDaemon.idl + } +} + +project (DAnCE_RepositoryManager) : dance_repositorymanager_skel, ciao_config_handlers, ccm_stub, dance_repositorymanagerbase, naming, iortable, utils, minizip, zlib, dance_lib, dance_logger { + requires += zlib + libs += Package_Config_Handlers + after += DAnCE_RepositoryManagerDaemon_IDL + dynamicflags = DANCE_REPOSITORYMANAGER_MODULE_BUILD_DLL + IDL_Files { + } + + Source_Files { + RepositoryManagerDaemonC.cpp + RepositoryManagerDaemonS.cpp + ZIP_Wrapper.cpp + RepositoryManager_Impl.cpp + RM_Helper.cpp + URL_Parser.cpp + PC_Updater_T.cpp + PC_Updater.cpp + Repository_Manager_Module.cpp + } +} + +project (DAnCE_RepositoryManager_Exec) : dance_repositorymanager, dance_exe { + exename = dance_repository_manager + + Source_Files { + Repository_Manager_Exec.cpp + } + IDL_Files { + } +} + + +project (DAnCE_RepositoryManager_Admin) : dance_repositorymanager_stub, ciao_config_handlers, naming, dance_lib, dance_logger { + dynamicflags = DANCE_REPOSITORYMANAGER_ADMIN_BUILD_DLL + after += DAnCE_RepositoryManagerDaemon_IDL + + IDL_Files { + } + + Source_Files { + repository_manager_admin.cpp + RepositoryManagerDaemonC.cpp + } +} + +project (DAnCE_RepositoryManager_Admin_Exec) : dance_repositorymanager, ciao_config_handlers, naming, dance_exe, dance_logger { + exename = dance_rm_admin + + libs += DAnCE_RepositoryManager_Admin + after += DAnCE_RepositoryManager_Admin + + IDL_Files { + } + + Source_Files { + repository_manager_admin_exec.cpp + } +} diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl new file mode 100644 index 00000000000..9deac4abd0e --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl @@ -0,0 +1,13 @@ +// $Id$ + +#include "DAnCE/Deployment/Deployment_RepositoryManager.idl" + +module CIAO +{ + interface RepositoryManagerDaemon : Deployment::RepositoryManager + { + // Shutdown the daemon process. + oneway void shutdown (); + }; +}; + diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp new file mode 100644 index 00000000000..f3df372d8dc --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp @@ -0,0 +1,1258 @@ +// $Id$ + +//==================================================================== +/** + * @file RepositoryManager_Impl.cpp + * + * $Id$ + * + * Description: Actial implementation of the RepoMan + * + * @author Stoyan Paunov + * Shanshan Jiang + */ +//==================================================================== + +#include "RepositoryManager_Impl.h" + +#include "ace/OS_NS_fcntl.h" //for open +#include "ace/OS_NS_unistd.h" //for close +#include "ace/OS_NS_sys_stat.h" //for filesize and fstat and mkdir +#include "ace/OS_NS_string.h" //for ACE_CString +#include "ace/OS_Memory.h" //for ACE_NEW* macros + + +//to remove a file or dir from the local filesystem need remove () from stdio.h +// ---> need to include ace/OS_NS_stdio.h which would include the correct file for any OS! +#include "ace/OS_NS_stdio.h" + +#include "ZIP_Wrapper.h" //Wrapper around zzip +#include "ace/Containers_T.h" //for ACE_Double_Linked_List +#include "ace/Malloc_Allocator.h" //for ACE_New_Allocator + +//for the PackageConfiguration parsing +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "DAnCE/Logger/Log_Macros.h" + +#include "Package_Handlers/PCD_Handler.h" +#include "XML_Typedefs.h" + +#include "RM_Helper.h" //to be able to externalize/internalize a PackageConfiguration +#include "ace/Message_Block.h" //for ACE_Message_Block + +#include "ace/Thread.h" //for obtaining the ID of the current thread +#include "ace/OS_NS_stdlib.h" //for itoa () +#include "ace/Dirent.h" + +#include "URL_Parser.h" //for parsing the URL +#include "tao/HTTP_Client.h" //the HTTP client class to downloading packages + +#include "PC_Updater.h" //A visitor class to walk through the elements of the PC + +#include "ace/Configuration_Import_Export.h" + +namespace +{ + static const char* PC_EXTENSION = ".epc"; + + static const ACE_TCHAR *RM_RECORD_FILE = ACE_TEXT("RM_record"); + static const ACE_TCHAR *RM_RECORD_NAME_SECTION = ACE_TEXT("Names"); + static const ACE_TCHAR *RM_RECORD_UUID_SECTION = ACE_TEXT("UUIDs"); +} + +namespace DAnCE +{ + + //----------------------------------------------------------------- + //Constructor + // + //----------------------------------------------------------------- + + RepositoryManagerDaemon_i::RepositoryManagerDaemon_i + (CORBA::ORB_ptr the_orb, const ACE_TCHAR* server, const ACE_TCHAR* install_dir) + : the_orb_ (CORBA::ORB::_duplicate (the_orb)), + install_root_ (""), + HTTP_server_ ("http://"), + install_path (install_dir) + { + //form the path + this->HTTP_server_ += server; + this->HTTP_server_ += "/"; + this->HTTP_server_ += install_path; + this->HTTP_server_ += "/"; + + //create directory in which the packages will be stored + ACE_OS::mkdir(install_path.c_str ()); + //if dir already exists a -1 is returned + //we ignore this, just need to make sure the directory exists + + ACE_OS::getcwd (this->cwd_, TEMP_LEN); + + this->install_root_ = this->cwd_; + this->install_root_ += "/"; + this->install_root_ += install_path; + + // Install the configuration files to get the names, UUIDs, & types info. + ACE_Configuration_Heap cfg; + cfg.open (); + ACE_Configuration_Section_Key root = cfg.root_section (); + + ACE_Registry_ImpExp config_importer (cfg); + ACE_OS::chdir (install_path.c_str ()); + config_importer.import_config (RM_RECORD_FILE); + ACE_OS::chdir (this->cwd_); + + ACE_CString name; + ACE_Configuration::VALUETYPE type; + ACE_CString path; + + ACE_Configuration_Section_Key NameSection; + cfg.open_section (root, RM_RECORD_NAME_SECTION, 1, NameSection); + u_int index = 0; + while (!cfg.enumerate_values (NameSection, index, name, type)) + { + cfg.get_string_value (NameSection, name.c_str (), path); + this->names_.bind (name, path); + + ++index; + } + + ACE_Configuration_Section_Key UUIDSection; + cfg.open_section (root, RM_RECORD_UUID_SECTION, 1, UUIDSection); + index = 0; + while (!cfg.enumerate_values (UUIDSection, index, name, type)) + { + cfg.get_string_value (UUIDSection, name.c_str (), path); + this->uuids_.bind (name, path); + + ++index; + } + + // Add types + index = 0; + for (PCMap_Iterator iter = this->names_.begin (); + iter != this->names_.end (); + ++iter, ++index) + { + PCEntry& element = *iter; + + ::Deployment::PackageConfiguration_var pc = this->findPackageByName (element.ext_id_.c_str ()); + + if(!this->add_type (pc, element.ext_id_.c_str ())) + DANCE_ERROR (1, (LM_ERROR, "Failed to add the type\n")); + } + + CIAO::Config_Handlers::XML_Helper::_path_resolver.add_path (ACE_TEXT ("DANCE_ROOT"), + ACE_TEXT ("/docs/schema/")); + CIAO::Config_Handlers::XML_Helper::_path_resolver.add_path (ACE_TEXT ("CIAO_ROOT"), + ACE_TEXT ("/docs/schema/")); + + } + + //----------------------------------------------------------------- + //Destructor + // + //----------------------------------------------------------------- + + RepositoryManagerDaemon_i::~RepositoryManagerDaemon_i (void) + { + this->names_.unbind_all (); + this->uuids_.unbind_all (); + this->types_.unbind_all (); + } + + //----------------------------------------------------------------- + //shutdown + // + //----------------------------------------------------------------- + + void RepositoryManagerDaemon_i::shutdown () + + { + // Release resource. + this->names_.unbind_all (); + this->uuids_.unbind_all (); + this->types_.unbind_all (); + + this->the_orb_->shutdown (0); + } + + + //----------------------------------------------------------------- + //installPackage + // + //----------------------------------------------------------------- + + void RepositoryManagerDaemon_i::installPackage (const char * installationName, + const char * location, + ::CORBA::Boolean replace) + { + + PCEntry *entry = 0; + if (this->names_.find (ACE_CString (installationName), entry) == 0) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Found package %s already installed.\n")); + if (!replace) + throw Deployment::NameExists (); + else + deletePackage (installationName); + } + + //Now lets form the path for the local file + //NOTE: I need the absolute path because I will change to a subdirectory + //when I am parsing the descriptors + + ACE_CString path (this->install_root_); + path += "/"; + path += installationName; + + ACE_CString package_path (path); + package_path += ".cpk"; //package extension + + ACE_CString pc_path (path); + pc_path += PC_EXTENSION; //external PackageConfiguration extension + + + ACE_CString descriptor_dir (path); + descriptor_dir += "/descriptors/"; //location of the descriptor directory + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Package Path: %s\n", + package_path.c_str ())); + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Descriptor path: %s\n", + descriptor_dir.c_str ())); + + //check if URL or local file + //download or load into memory + + if (ACE_OS::strstr (location, "http://")) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Downloading package over HTTP: %s\n", + location)); + + ACE_Message_Block* mb = 0; + ACE_NEW_THROW_EX (mb, ACE_Message_Block (), CORBA::NO_MEMORY ()); + + try + { + //get the remote file + if (!HTTP_Get (location, *mb)) + { + throw CORBA::INTERNAL (); + } + + // Write file to designated location on disk + if (!RM_Helper::write_to_disk (package_path.c_str (), *mb)) + { + throw CORBA::INTERNAL (); + } + + mb->release (); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Caught unexpected exception while fetching path %s\n", + location)); + + mb->release (); + throw; + } + } + else + { + if (!RM_Helper::copy_from_disk_to_disk (location, package_path.c_str ())) + throw CORBA::INTERNAL (); + } + + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Uncompressing file %s to directory %s\n", + package_path.c_str (), + this->install_root_.c_str ())); + + ZIP_Wrapper::uncompress (const_cast (package_path.c_str ()), + const_cast (this->install_root_.c_str ()), + false //not verbose + ); + + //Start the parsing + + ACE_CString pc_name; + + this->find_PC_name (const_cast (package_path.c_str ()), pc_name); + + //if the PackageConfiguration name cannot be found, then there is nothing to install + if (pc_name == "") + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "RepositoryManagerDaemon_i::installPackage - " + "Unable to find PC name %s in path %s\n", + pc_name.c_str (), + package_path.c_str ())); + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + + throw Deployment::PackageError (); + } + + //TODO: move exception throwing out of this func. User boolean error handling!!! + //TODO: check for errors! + Deployment::PackageConfiguration_var pc; + pc = this->retrieve_PC_from_descriptors (const_cast (pc_name.c_str ()), + descriptor_dir.c_str ()); + + + if (this->uuids_.find (ACE_CString (pc->UUID), entry) == 0) + { + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + + throw Deployment::NameExists (); + } + + //forming the server path info + ACE_CString server_path (this->HTTP_server_); + server_path += installationName; + + //NOTE: ComponentPackageReferences are currently NOT supported + if (!(pc->basePackage.length () > 0)) + { + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + + throw CORBA::NO_IMPLEMENT (); + } + + PC_Updater updater (server_path, package_path); + + if (!updater.update (pc)) + { + DANCE_DEBUG (6, (LM_ERROR, DLINFO "[RM] problem updating the PackageConfiguration!\n")); + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + throw Deployment::PackageError (); + } + + + //now lets externalize the PackageConfiguration, so that we can access it later on + //without having to do the whole parsing again. + //NOTE: Order here is important. Do not populate maps before the externalization! + RM_Helper::externalize (pc, pc_path.c_str ()); + + //insert the package into the database + if (this->names_.bind (ACE_CString (installationName), path) == -1) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM] could not bind %s.\n", + installationName)); + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + //remove the PackageConfiguration externalization + remove (pc_path.c_str ()); + + //throw exception + throw CORBA::INTERNAL (); + } + + //ALSO NEED THE UUID here + if (this->uuids_.bind (ACE_CString (pc->UUID), path) == -1) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM] could not bind %s.\n", + ACE_CString (pc->UUID).c_str ())); + + //unbind the name + this->names_.unbind (installationName); + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + //remove the PackageConfiguration externalization + remove (pc_path.c_str ()); + + //throw exception + throw CORBA::INTERNAL (); + } + + //now add the type interface + if(!this->add_type (pc, installationName)) + DANCE_ERROR (1, (LM_ERROR, "Failed to add the type\n")); + + this->dump (); + + this->save (); + + DANCE_DEBUG (8, (LM_INFO, + "Installed PackageConfiguration \n\tname: %s \n\tuuid: %s\n", + installationName, ACE_CString (pc->UUID).c_str ())); + } + + + //----------------------------------------------------------------- + //createPackage + // + //----------------------------------------------------------------- + + void RepositoryManagerDaemon_i::createPackage (const char * installationName, + const ::Deployment::PackageConfiguration & package, + const char * baseLocation, + ::CORBA::Boolean replace) + { + ::Deployment::PackageConfiguration pc = package; + + // Find if there is a PackageConfiguration with the same name. + PCEntry *entry = 0; + if (this->names_.find (ACE_CString (installationName), entry) == 0) + { + if (!replace) + throw Deployment::NameExists (); + else + deletePackage (installationName); + } + + // Find if there is a PackageConfiguration with the same uuid. + if (this->uuids_.find (ACE_CString (pc.UUID), entry) == 0) + throw Deployment::NameExists (); + + // Find if the PackageConfiguration has a basePackage. + // NOTE: ComponentPackageReferences are currently NOT supported. + if (!(pc.basePackage.length () > 0)) + throw CORBA::NO_IMPLEMENT (); + + // Form the path for the local file + ACE_CString path (this->install_root_); + path += "/"; + path += installationName; + + ACE_CString package_path (path); + package_path += ".cpk"; //package extension + + ACE_CString pc_path (path); + pc_path += PC_EXTENSION; //external PackageConfiguration extension + + // Check if URL or local file, download or load into memory + if (ACE_OS::strstr (baseLocation, "http://")) + { + //TODO: how can I incorporate a Auto_Ptr is explicit release is needed + ACE_Message_Block* mb; + ACE_NEW_THROW_EX (mb, ACE_Message_Block (), CORBA::NO_MEMORY ()); + + //get the remote file + if (!HTTP_Get (baseLocation, *mb)) + { + mb->release (); + throw CORBA::INTERNAL (); + } + + // Write file to designated location on disk + if (!RM_Helper::write_to_disk (package_path.c_str (), *mb)) + { + mb->release (); + throw CORBA::INTERNAL (); + } + + mb->release (); + } + else + { + if (!RM_Helper::copy_from_disk_to_disk (baseLocation, package_path.c_str ())) + throw CORBA::INTERNAL (); + } + + + ZIP_Wrapper::uncompress (const_cast (package_path.c_str ()), + const_cast (this->install_root_.c_str ()), + false //not verbose + ); + + // Form the server path info + ACE_CString server_path (this->HTTP_server_); + server_path += installationName; + + // Update the newly installed package configration informantion. + PC_Updater updater (server_path, package_path); + + if (!updater.update (pc)) + { + DANCE_ERROR (1, (LM_ERROR, "[RM] problem updating the PackageConfiguration!\n")); + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + throw Deployment::PackageError (); + } + + // Externalize the PackageConfiguration, so that we can access it later on + // without having to do the whole parsing again. + // NOTE: Order here is important. Do not populate maps before the externalization! + RM_Helper::externalize (pc, pc_path.c_str ()); + + // Insert the name of the package. + if (this->names_.bind (ACE_CString (installationName), path) == -1) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM] could not bind %s.\n", + installationName)); + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + //remove the PackageConfiguration externalization + remove (pc_path.c_str ()); + + //throw exception + throw CORBA::INTERNAL (); + } + + // Insert the UUID of the package. + if (this->uuids_.bind (ACE_CString (pc.UUID), path) == -1) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM] could not bind %s.\n", + ACE_CString (pc.UUID).c_str ())); + + //unbind the name + this->names_.unbind (installationName); + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + //remove the PackageConfiguration externalization + remove (pc_path.c_str ()); + + //throw exception + throw CORBA::INTERNAL (); + } + + //now add the type interface + //TODO: CHECK if successful + if(!this->add_type (pc, installationName)) + DANCE_ERROR (1, (LM_ERROR, "Failed to add the type\n")); + + this->dump (); + + this->save (); + + DANCE_DEBUG (8, (LM_INFO, + "Created PackageConfiguration \n directory: %s \n name: %s \n uuid: %s\n", + path.c_str (), installationName, ACE_CString (pc.UUID).c_str ())); + } + + + //----------------------------------------------------------------- + //findPackageByName + // + //----------------------------------------------------------------- + + ::Deployment::PackageConfiguration* + RepositoryManagerDaemon_i::findPackageByName (const char * name) + + { + // Find out if the PackageConfiguration was installed in the repository, + // return it if found or throw and exception otherwise + + PCEntry *entry = 0; + + if (this->names_.find (ACE_CString (name), entry) != 0) + throw Deployment::NoSuchName (); + //PackageConfiguration was not found + + ACE_CString pc_path (entry->int_id_.c_str ()); + pc_path += PC_EXTENSION; + + Deployment::PackageConfiguration_var pc; + ACE_NEW_THROW_EX (pc, + Deployment::PackageConfiguration (), + CORBA::NO_MEMORY ()); + + + if(!RM_Helper::reincarnate (pc, pc_path.c_str ())) + throw CORBA::INTERNAL (); + + DANCE_DEBUG (8, (LM_INFO, "Successfully looked up \'%s\'.\n", name)); + + return pc._retn (); + } + + + //----------------------------------------------------------------- + //findPackageByUUID + // + //----------------------------------------------------------------- + + ::Deployment::PackageConfiguration* + RepositoryManagerDaemon_i::findPackageByUUID (const char * UUID) + + { + // Find out if the PackageConfiguration was installed in the repository, + // return it if found or throw and exception otherwise + + PCEntry *entry = 0; + + if (this->uuids_.find (ACE_CString (UUID), entry) != 0) + throw Deployment::NoSuchName (); + //PackageConfiguration was not found + + ACE_CString pc_path (entry->int_id_.c_str ()); + pc_path += PC_EXTENSION; + + Deployment::PackageConfiguration_var pc; + ACE_NEW_THROW_EX (pc, + Deployment::PackageConfiguration (), + CORBA::NO_MEMORY ()); + + + if(!RM_Helper::reincarnate (pc, pc_path.c_str ())) + throw CORBA::INTERNAL (); + + DANCE_DEBUG (8, (LM_INFO, "Successfully looked up %s.\n", UUID)); + + return pc._retn (); + } + + //----------------------------------------------------------------- + //findPackageByType + // + //----------------------------------------------------------------- + + ::CORBA::StringSeq * RepositoryManagerDaemon_i::findNamesByType (const char * type) + { + CIEntry *entry = 0; + + //find the type in the interface map + if (this->types_.find (ACE_CString (type), entry) != 0) + { + //return an empty sequence + CORBA::StringSeq_var seq; + ACE_NEW_THROW_EX (seq, CORBA::StringSeq (0), CORBA::NO_MEMORY ()); + + return seq._retn (); + } + else + { + CISet ci_set = (*entry).int_id_set_; + + CORBA::ULong len = ci_set.size (); + + //allocate a sequence of the right length + CORBA::StringSeq_var seq; + ACE_NEW_THROW_EX (seq, + CORBA::StringSeq (len), + CORBA::NO_MEMORY ()); + seq->length (len); + + //store the elements in the string sequence + CISet_Iterator ci_set_iter (ci_set); + CORBA::ULong index = 0; + for (ci_set_iter = ci_set.begin (); + ci_set_iter != ci_set.end () && index < len; + ++ci_set_iter, ++index) + { + seq[index] = CORBA::string_dup ((*ci_set_iter).c_str ()); + } + + return seq._retn (); + } + } + + + //----------------------------------------------------------------- + //getAllNames + // + //----------------------------------------------------------------- + + ::CORBA::StringSeq* + RepositoryManagerDaemon_i::getAllNames () + + { + //Map.current_size () gives you the current number with the duplicates + //Map.total_size () gives you the allocated space + the empty slots + //Apparently the only way to figure out the number of keys is to + //count them with an iterator. + + CORBA::ULong num_entries = 0; + + for (PCMap_Iterator i = this->names_.begin (); + i != this->names_.end (); + ++i) + ++num_entries; + + CORBA::StringSeq_var seq; + ACE_NEW_THROW_EX (seq, CORBA::StringSeq (num_entries), CORBA::NO_MEMORY ()); + + + seq->length (num_entries); + + CORBA::ULong index = 0; + for (PCMap_Iterator iter = this->names_.begin (); + iter != this->names_.end () && index < num_entries; + ++iter, ++index) + { + PCEntry& element = *iter; + seq[index] = CORBA::string_dup (element.ext_id_.c_str ()); + } + + DANCE_DEBUG (8, (LM_INFO, "The number of packages %d\n", seq->length ())); + + return seq._retn (); //release the underlying CORBA::StringSeq + } + + + //----------------------------------------------------------------- + //getAllTypes + // + //----------------------------------------------------------------- + + ::CORBA::StringSeq * RepositoryManagerDaemon_i::getAllTypes () + { + //Map.current_size () gives you the current number with the duplicates + //Map.total_size () gives you the allocated space + the empty slots + //Apparently the only way to figure out the number of keys is to + //count them with an iterator. + + CORBA::ULong num_entries = 0; + + for (CIMap_Iterator i = this->types_.begin (); + i != this->types_.end (); + ++i) + ++num_entries; + + CORBA::StringSeq_var seq; + ACE_NEW_THROW_EX (seq, + CORBA::StringSeq (num_entries), + CORBA::NO_MEMORY ()); + + + seq->length (num_entries); + + CORBA::ULong index = 0; + for (CIMap_Iterator iter = this->types_.begin (); + iter != this->types_.end () && index < num_entries; + ++iter, ++index) + + { + CIEntry& element = *iter; + seq[index] = CORBA::string_dup (element.ext_id_.c_str ()); + } + + DANCE_DEBUG (6, (LM_DEBUG, "The number of types: %d\n", num_entries)); + + return seq._retn (); //release the underlying CORBA::StringSeq + } + + + //----------------------------------------------------------------- + //DeletePackage + // + //----------------------------------------------------------------- + + void RepositoryManagerDaemon_i::deletePackage (const char * installationName) + { + bool internal_err = false; + + PCEntry *entry = 0; + + if (this->names_.find (ACE_CString (installationName), entry) != 0) + throw Deployment::NoSuchName (); + + //cache the package path + ACE_CString path (entry->int_id_.c_str ()); + + //remove the name association + if (this->names_.unbind (installationName) == -1) + { + DANCE_ERROR (1, (LM_ERROR, + "Unable to unbind %s.\n", + installationName)); + internal_err = true; + } + + //the package location + ACE_CString package_path (path); + package_path += ".cpk"; //package extension + + //the PackageConfiguration externalization location + ACE_CString pc_path (path); + pc_path += PC_EXTENSION; //external PackageConfiguration extension + + Deployment::PackageConfiguration_var pc; + ACE_NEW_THROW_EX (pc, + Deployment::PackageConfiguration (), + CORBA::NO_MEMORY ()); + + + if(!RM_Helper::reincarnate (pc, pc_path.c_str ())) + { + DANCE_ERROR (1, (LM_ERROR, "Could not reincarnate PC\n")); + internal_err = true; + } + + if (this->uuids_.unbind (ACE_CString (pc->UUID)) == -1) + { + DANCE_ERROR (1, (LM_ERROR, "Could not remove UUID\n")); + internal_err = true; + } + + //remove the type from the interface map + if (!this->remove_type (pc, installationName)) + { + DANCE_ERROR (1, (LM_ERROR, "Could not remove type\n")); + internal_err = true; + } + + //actually delete the package here! + + //clean the extracted files + remove_extracted_package (path.c_str ()); + //remove the package + remove (package_path.c_str ()); + //remove the PackageConfiguration externalization + remove (pc_path.c_str ()); + + this->dump (); + + this->save (); + + if (internal_err) + throw CORBA::INTERNAL (); + else + DANCE_DEBUG (8, (LM_INFO, "Successfully deleted \'%s\'\n", installationName)); + + } + + + //==========================================HELPER METHODS================================================== + + Deployment::PackageConfiguration* + RepositoryManagerDaemon_i::retrieve_PC_from_package (char* package) + { + char temp[128]; + // ACE_thread_t thread_id = ACE_Thread::self (); + char* PID = ACE_OS::itoa (ACE_OS::getpid (), temp, 10); + + ACE_OS::mkdir(PID); + //if dir already exists a -1 is returned + //we ignore this, just need to make sure the directory exists + + //change the working dir + ACE_OS::chdir (PID); + + ACE_CString pcd_name; + //extract the necessary descriptors + if (extract_descriptor_files (package, + pcd_name) < 0) + { + ACE_OS::chdir (this->cwd_); + DANCE_ERROR (1, (LM_ERROR, + "(%P|%t) RepositoryManager: error extracting necessary files\n")); + throw CORBA::INTERNAL (); + } + + Deployment::PackageConfiguration_var pc; + //parse the PCD to make sure that there are no package errors + try + { + //CIAO::Config_Handlers::STD_PC_Intf intf (pcd_name.c_str ()); + //pc = intf.get_PC (); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, + "(%P|%t) RepositoryManager: Error parsing the PCD\n")); + + //change back the the old working dir + ACE_OS::chdir (this->cwd_); + throw Deployment::PackageError (); + } + //able to parse the PC. So lets install the package in the repo + + //we no longer need the descriptors, so lets erase them! + remove_descriptor_files (package); + + //change back the the old working dir + ACE_OS::chdir (this->cwd_); + + //now lets erase the directory! + ACE_OS::rmdir (PID); + //the ACE_OS::rmdir does not work. Possibly because we need to delete + //the contents first. I will look into it more closely when I am back. + + return pc._retn (); + } + + + //function to retvieve a file via HTTP + //stores the file in the passed preallocated ACE_Message_Block + //returns 1 on success + // 0 on error + + int RepositoryManagerDaemon_i::HTTP_Get (const char* URL, ACE_Message_Block &mb) + { + URL_Parser *parser = TheURL_Parser::instance (); + if (!parser->parseURL (const_cast (URL))) + return 0; + + // Create a client + TAO_HTTP_Client client; + + // Open the client + if (client.open (parser->filename_, + parser->hostname_, + parser->port_) == -1) + { + client.close (); + return 0; + } + + // Read from it + if (client.read (&mb) <= 0) + { + client.close (); + return 0; + } + + return 1; + } + + + + //function to parse and return the PackageConfiguration from the already + //extracted descriptor files + Deployment::PackageConfiguration* + RepositoryManagerDaemon_i::retrieve_PC_from_descriptors (const char* pc_name, + const char* descriptor_dir) + { + //change the working dir + ACE_OS::chdir (descriptor_dir); + + Deployment::PackageConfiguration_var pc = new Deployment::PackageConfiguration (); + //parse the PCD to make sure that there are no package errors + try + { + CIAO::Config_Handlers::Packaging::PCD_Handler::package_config (pc_name, *pc); + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, + "(%P|%t) [RM::retrieve_PC_from_descriptors] Error parsing the PCD\n")); + + //change back the the old working dir + ACE_OS::chdir (this->cwd_); + throw Deployment::PackageError (); + } + //able to parse the PC. So lets install the package in the repo + + //change back the the old working dir + ACE_OS::chdir (this->cwd_); + + return pc._retn (); + } + + + //find out what the name of the PackageConfiguration file is + void RepositoryManagerDaemon_i::find_PC_name (char* package, ACE_CString& pcd_name) + { + pcd_name = ""; //empty the contents of the ACE_CString + + //create a doubly link list + ACE_New_Allocator allocator; + ACE_Double_Linked_List list (&allocator); + + //get the list of files in the package and figure out the names of all necessary files + if (!(ZIP_Wrapper::file_list_info (package, list))) + return; + + size_t skip_len = ACE_OS::strlen ("descriptors") + 1; + + while (!list.is_empty ()) + { + ZIP_File_Info* inf = list.delete_head (); + + if (ACE_OS::strstr (inf->name_.c_str (), "descriptors")) + if (ACE_OS::strstr (inf->name_.c_str (), ".pcd")) + pcd_name = inf->name_.c_str () + skip_len; + + //deallocate the head of the filename list + delete inf; + } + } + + + //We are using Xercesc in the Config_Handlers and unfortunately its API only + //takes a file in the local file system as an argument, thus need to + //write out the contents of the deployent plan to a file + //in the current directory. I use the thread id to guarrantee + //lack of race conditions if multithreading is enabled + + int RepositoryManagerDaemon_i::extract_descriptor_files (char* package, ACE_CString& pcd_name) + { + //create a doubly link list + ACE_New_Allocator allocator; + ACE_Double_Linked_List list (&allocator); + + //get the list of files in the package and figure out the names of all necessary files + if (!(ZIP_Wrapper::file_list_info (package, list))) + return 0; + + size_t skip_len = ACE_OS::strlen ("descriptors") + 1; + + while (!list.is_empty ()) + { + ZIP_File_Info* inf = list.delete_head (); + ACE_Message_Block* file = 0; + if (ACE_OS::strstr (inf->name_.c_str (), "descriptors")) + { + if (ACE_OS::strstr (inf->name_.c_str (), ".pcd")) + pcd_name = inf->name_.c_str () + skip_len; + + //extract the descriptor from the package + ACE_NEW_RETURN (file, ACE_Message_Block (0,0), 0); + if (!ZIP_Wrapper::get_file(const_cast (package), + const_cast (inf->name_.c_str ()), + *file)) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM::extract_descriptor_files] Unable to retrieve file!\n")); + //release the message block chain + file->release (); + return 0; + } + + + //write the file to disk + if(!RM_Helper::write_to_disk (inf->name_.c_str () + skip_len, *file)) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM::extract_descriptor_files] Unable to write out descriptor to disk!\n")); + //release the message block chain + file->release (); + return 0; + } + + //release the message block chain + file->release (); + } + + //deallocate the head of the filename list + delete inf; + } + + return 1; + } + + int RepositoryManagerDaemon_i::remove_descriptor_files (char* package) + { + int return_code = 1; + + //create a doubly link list + ACE_New_Allocator allocator; + ACE_Double_Linked_List list (&allocator); + + //get the list of files in the package and figure out the names of all necessary files + if (!(ZIP_Wrapper::file_list_info (package, list))) + return 0; + + size_t skip_len = ACE_OS::strlen ("descriptors") + 1; + + while (!list.is_empty ()) + { + ZIP_File_Info* inf = list.delete_head (); + if (ACE_OS::strstr (inf->name_.c_str (), "descriptors")) + { + //delete disk + if(remove (inf->name_.c_str () + skip_len)) + { + DANCE_ERROR (1, (LM_ERROR, + "[RM::remove_descriptor_files] Unable to remove file from disk!\n")); + return_code = 0; + } + } + //deallocate the head of the filename list + delete inf; + } + + return return_code; + } + + int RepositoryManagerDaemon_i::remove_extracted_package (const char* path) + { + ACE_TCHAR full_path[MAXPATHLEN]; + ACE_OS::getcwd (full_path, sizeof(full_path)); + + ACE_OS::chdir (path); + + ACE_Dirent dir (path); + + for (ACE_DIRENT *directory; (directory = dir.read ()) != 0;) + { + if (ACE::isdotdir (directory->d_name) == true) + continue; + + ACE_stat stat_buf; + ACE_OS::lstat (directory->d_name, &stat_buf); + + ACE_CString temp = path; + temp += "/"; + temp += directory->d_name; + switch (stat_buf.st_mode & S_IFMT) + { + case S_IFREG: // Either a regular file or an executable. + remove (temp.c_str ()); + break; + + case S_IFDIR: + remove_extracted_package (temp.c_str ()); + break; + + default: + break; + } + } + + ACE_OS::chdir (full_path); + + ACE_OS::rmdir (path); + + return 0; + } + + //function to extract the type of the component from + //the PackageConfiguration and update the interface map + //returns 1 on success + // 0 on error + + int RepositoryManagerDaemon_i::add_type (Deployment::PackageConfiguration& pc, + const char* name) + { + if (pc.basePackage.length () > 0) + { + ::CORBA::StringSeq supportedTypes = pc.basePackage[0] + .implementation[0] + .referencedImplementation + .implements + .supportedType; + + if (supportedTypes.length () != 0) + { + CORBA::ULong len = supportedTypes.length (); + for (CORBA::ULong i = 0; i < len; ++i) + { + this->types_.bind (ACE_CString (supportedTypes[i]), name); + } + } + } + else //ComponentPackageReference + { + //not implemented yet + return 0; + } + + return 1; + } + + //function to remove the interface type of the component + //being removed from the interface map + //returns 1 on success + // 0 on error + + int RepositoryManagerDaemon_i::remove_type (Deployment::PackageConfiguration& pc, + const char* name) + { + if (pc.basePackage.length () > 0) + { + ::CORBA::StringSeq supportedTypes = pc.basePackage[0] + .implementation[0] + .referencedImplementation + .implements + .supportedType; + + if (supportedTypes.length () != 0) + { + CORBA::ULong len = supportedTypes.length (); + for (CORBA::ULong i = 0; i < len; ++i) + { + if (this->types_.unbind (ACE_CString (supportedTypes[i]), ACE_CString (name)) != 0) + DANCE_DEBUG (6, (LM_DEBUG, "Could not find type %s with package name %s!\n", + ACE_CString (supportedTypes[i]).c_str (), + name)); + } + } + } + else //ComponentPackageReference + { + //not implemented yet + return 0; + } + + return 1; + } + + //function to dump the state of the RepositoryManager + void RepositoryManagerDaemon_i::dump (void) + { +#if defined (ACE_HAS_DUMP) + + DANCE_DEBUG(LM_DEBUG, "NAMES:\n"); + this->names_.dump (); + DANCE_DEBUG(LM_DEBUG, "UUIDs:\n"); + this->uuids_.dump (); + DANCE_DEBUG (LM_DEBUG, "Component Interface Types:\n"); + this->types_.dump (); + +#endif /* ACE_HAS_DUMP */ + } + + //function to save the package info of the RepositoryManager + void RepositoryManagerDaemon_i::save (void) + { + // Save the names, UUIDs, & types info to the configuration files. + ACE_Configuration_Heap cfg; + cfg.open (); + ACE_Configuration_Section_Key root = cfg.root_section (); + + ACE_Configuration_Section_Key NameSection; + cfg.open_section (root, RM_RECORD_NAME_SECTION, 1, NameSection); + for (PCMap_Iterator iter = this->names_.begin (); + iter != this->names_.end (); + ++iter) + { + PCEntry& element = *iter; + cfg.set_string_value (NameSection, element.ext_id_.c_str (), element.int_id_.c_str ()); + } + + ACE_Configuration_Section_Key UUIDSection; + cfg.open_section (root, RM_RECORD_UUID_SECTION, 1, UUIDSection); + for (PCMap_Iterator iter = this->uuids_.begin (); + iter != this->uuids_.end (); + ++iter) + { + PCEntry& element = *iter; + cfg.set_string_value (UUIDSection, element.ext_id_.c_str (), element.int_id_.c_str ()); + } + + ACE_Registry_ImpExp exporter (cfg); + ACE_OS::chdir (install_path.c_str ()); + exporter.export_config (RM_RECORD_FILE); + ACE_OS::chdir (this->cwd_); + } +} diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h new file mode 100644 index 00000000000..051c6577514 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h @@ -0,0 +1,235 @@ + +/* -*- C++ -*- */ + +//====================================================================== +/** + * @file RepositoryManager_Impl.h + * + * $Id$ + * + * Description: + * This file is the main implementation file for the RepositoryManager + * in CIAO. We have used a number of techniques in order to increase + * scalability of the RepoMan while still maintaining complience with + * the D&C spec + * + * @author Stoyan Paunov + * @author Shanshan Jiang + * @author William R. Otte + */ +//====================================================================== + +#ifndef REPOSITORYMANAGERI_H_ +#define REPOSITORYMANAGERI_H_ + + +//-----------------------------NOTE--------------------------------- +//I need to disable all the code which has to do with interface +//type information because we currently do not support assembly +//interfaces which causes undesired behavior with respect to the +//hash tables because the specificType field in assembly interfaces +//is empty, so two unrelated intefaces appear to be related. + + +#include "RepositoryManagerDaemonS.h" + +#include "ace/Hash_Map_Manager_T.h" //for the ACE_Hash_Map_Manager +#include "ace/Hash_Multi_Map_Manager_T.h" //for the ACE_Hash_MultiMap_Manager +#include "ace/Null_Mutex.h" //for ACE_Null_Mutex +#include "ace/RW_Mutex.h" //for ACE_RW_Mutex +#include "ace/OS_NS_string.h" //for ACE_CString +#include "ace/SString.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace +{ + static const size_t TEMP_LEN = 1024; +} + +namespace DAnCE +{ + class RepositoryManagerDaemon_i : + public virtual POA_CIAO::RepositoryManagerDaemon + { + public: + /// Constructor + RepositoryManagerDaemon_i (CORBA::ORB_ptr the_orb, + const ACE_TCHAR* server = ACE_TEXT("localhost:5432"), + const ACE_TCHAR* install_dir = ACE_TEXT("RepositoryManager")); + + /// Destructor + virtual ~RepositoryManagerDaemon_i (void); + + virtual void shutdown (); + + virtual + void installPackage (const ACE_TCHAR * installationName, + const ACE_TCHAR * location, + ::CORBA::Boolean replace); + + virtual + void createPackage (const ACE_TCHAR * installationName, + const ::Deployment::PackageConfiguration & package, + const ACE_TCHAR * baseLocation, + ::CORBA::Boolean replace); + + virtual + ::Deployment::PackageConfiguration * findPackageByName (const ACE_TCHAR * name); + + virtual + ::Deployment::PackageConfiguration * findPackageByUUID (const ACE_TCHAR * UUID); + + virtual + ::CORBA::StringSeq * findNamesByType (const ACE_TCHAR * type); + + virtual + ::CORBA::StringSeq * getAllNames (); + + virtual + ::CORBA::StringSeq * getAllTypes (); + + virtual + void deletePackage (const ACE_TCHAR * installationName); + + protected: + + /// Function to parse and return the PackageConfiguration from a specified + /// package + Deployment::PackageConfiguration* retrieve_PC_from_package (ACE_TCHAR* package); + + /// Find out what the name of the PackageConfiguration file is + void find_PC_name (ACE_TCHAR* package, ACE_CString& pcd_name); + + /// Function to parse and return the PackageConfiguration from the already + /// extracted descriptor files + Deployment::PackageConfiguration* retrieve_PC_from_descriptors (const ACE_TCHAR* pc_name, + const ACE_TCHAR* descriptor_dir); + + + /// Function to retrieve a file via HTTP + /// stores the file in the passed preallocated ACE_Message_Block + /// @retval 1 success + /// @retval 0 error + int HTTP_Get (const ACE_TCHAR* URL, ACE_Message_Block &mb); + + /// Function to extract all necessary files for parsing the + /// PackageConfiguration descriptor and populating the idl struct. + /// @retval 1 success + /// @retval 0 error + /// + /// @note ACE_CString& pcd_name is an out parameter + int extract_descriptor_files (ACE_TCHAR* package, + ACE_CString& pcd_name); + + + /// Function to remove the files extracted for parsing the PackageConfiguration + /// descriptor and populating the idl struct. It reads the names of the files + /// from the package. They correspond to the names on disk. + /// @retval 1 on success + /// @retval 0 on error + int remove_descriptor_files (ACE_TCHAR* package); + + + /// Function to remove the files extracted from the package upon istallation + /// It reads the names of the files from the package. They correspond to the + /// names on disk. It deletes each file, then it deletes the directories that + /// contain them. + /// @note extraction location is path/*archive_name*/ + /// @retval 1 on success + /// @retval 0 on error + int remove_extracted_package (const ACE_TCHAR* package_path); + + /// Function to extract the type of the component from + /// the PackageConfiguration and update the interface map + /// @retval 1 on success + /// @retval 0 on error + int add_type (::Deployment::PackageConfiguration& pc, + const ACE_TCHAR* name); + + /// Function to remove the interface type of the component + /// being removed from the interface map + /// @retval 1 on success + /// @retval 0 on error + int remove_type (::Deployment::PackageConfiguration& pc, + const ACE_TCHAR* name); + + /// Function to dump the state of the RepositoryManager + void dump (void); + + /// Function to save the package info of the RepositoryManager + void save (void); + + private: + /// Cached information about the installed PackageConfigurations + /// A separate map for the installation names and their UUID's + /// Key: PackageConfiguration name or its UUID (CString type) + /// Value: The location of the local copy of the package + + ///Based on the synchronization needed we can parametrize this with either + ///ACE_Null_Mutex or ACE_RW_Mutex + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_RW_Mutex> PCMap; + + typedef PCMap::ITERATOR PCMap_Iterator; + typedef PCMap::ENTRY PCEntry; + + + /// Cached information about the installed Component Interfaces + /// A map which associates Component supportedType with the + /// names of packages which implement this component type + /// Key: Component supportedType + /// Value: Unbounded set of the names of installed packages which + /// implement this component type + + ///Based on the synchronization needed we can parametrize this with either + ///ACE_Null_Mutex or ACE_RW_Mutex + + typedef ACE_Hash_Multi_Map_Manager, + ACE_Equal_To, + ACE_RW_Mutex> CIMap; + + typedef CIMap::ITERATOR CIMap_Iterator; + typedef CIMap::ENTRY CIEntry; + typedef CIEntry::VALUE_SET CISet; + typedef CIEntry::VALUE_SET_ITERATOR CISet_Iterator; + + /// A hash map that associates the names of + /// PackageConfigurations with their location + PCMap names_; + + /// a hash map that associates the UUIDs of + /// PackageConfigurations with their location + PCMap uuids_; + + /// a hash map which associates Component Interface + /// UUIDs with their implementations + CIMap types_; + + /// The ORB + CORBA::ORB_var the_orb_; + + /// Will hold the current working directory + ACE_TCHAR cwd_ [TEMP_LEN]; + + /// Full path for the install directory + ACE_CString install_root_; + + /// Location of the server + ACE_CString HTTP_server_; + + /// Directory where the packages will be stored locally + ACE_CString install_path; +}; + +} + +#endif /* REPOSITORYMANAGER_H_ */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Admin_Export.h b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Admin_Export.h new file mode 100644 index 00000000000..a705cd0c2b7 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Admin_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_RepositoryManager_Admin +// ------------------------------ +#ifndef DANCE_REPOSITORYMANAGER_ADMIN_EXPORT_H +#define DANCE_REPOSITORYMANAGER_ADMIN_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL) +# define DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL */ + +#if !defined (DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL) +# define DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL 1 +#endif /* ! DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL */ + +#if defined (DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL) && (DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL == 1) +# if defined (DANCE_REPOSITORYMANAGER_ADMIN_BUILD_DLL) +# define DAnCE_RepositoryManager_Admin_Export ACE_Proper_Export_Flag +# define DANCE_REPOSITORYMANAGER_ADMIN_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_REPOSITORYMANAGER_ADMIN_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_REPOSITORYMANAGER_ADMIN_BUILD_DLL */ +# define DAnCE_RepositoryManager_Admin_Export ACE_Proper_Import_Flag +# define DANCE_REPOSITORYMANAGER_ADMIN_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_REPOSITORYMANAGER_ADMIN_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_REPOSITORYMANAGER_ADMIN_BUILD_DLL */ +#else /* DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL == 1 */ +# define DAnCE_RepositoryManager_Admin_Export +# define DANCE_REPOSITORYMANAGER_ADMIN_SINGLETON_DECLARATION(T) +# define DANCE_REPOSITORYMANAGER_ADMIN_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_REPOSITORYMANAGER_ADMIN_HAS_DLL == 1 */ + +// Set DANCE_REPOSITORYMANAGER_ADMIN_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_REPOSITORYMANAGER_ADMIN_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_REPOSITORYMANAGER_ADMIN_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_REPOSITORYMANAGER_ADMIN_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_REPOSITORYMANAGER_ADMIN_NTRACE */ + +#if (DANCE_REPOSITORYMANAGER_ADMIN_NTRACE == 1) +# define DANCE_REPOSITORYMANAGER_ADMIN_TRACE(X) +#else /* (DANCE_REPOSITORYMANAGER_ADMIN_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_REPOSITORYMANAGER_ADMIN_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_REPOSITORYMANAGER_ADMIN_NTRACE == 1) */ + +#endif /* DANCE_REPOSITORYMANAGER_ADMIN_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Exec.cpp b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Exec.cpp new file mode 100644 index 00000000000..371fabf1406 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Exec.cpp @@ -0,0 +1,6 @@ +// $Id$ +#include "Repository_Manager_Module.h" + +#define DANCE_MODULE_MAIN_CLASS_NAME DAnCE_RepositoryManager_Module +#include "Deployment/Module_Main.h" + diff --git a/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.cpp b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.cpp new file mode 100644 index 00000000000..544bd32e78e --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.cpp @@ -0,0 +1,520 @@ +// -*- C++ -*- +// $Id$ + +#include "Repository_Manager_Module.h" +#include "ace/Get_Opt.h" +#include "ace/OS_NS_stdio.h" +#include "ace/Task.h" +#include "ace/Atomic_Op.h" +#include "tao/IORTable/IORTable.h" +#include "tao/Utils/PolicyList_Destroyer.h" +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/orbsvcs/Naming/Naming_Loader.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Deployment/DAnCE_PropertiesC.h" + +#ifdef DANCE_RM_USES_JAWS +#include "JAWS/server/HTTP_Server.h" +#endif + +#include "RepositoryManager_Impl.h" + +ACE_RCSID (DAnCE, + Repository_Manager_Module, + "$Id$") + +namespace DAnCE +{ + namespace Repository_Manager + { + bool + write_IOR (const ACE_TCHAR * ior_file_name, const char* ior) + { + FILE* ior_output_file_ = + ACE_OS::fopen (ior_file_name, ACE_TEXT("w")); + + if (ior_output_file_) + { + ACE_OS::fprintf (ior_output_file_, + "%s", + ior); + ACE_OS::fclose (ior_output_file_); + return true; + } + return false; + } + + class Worker : public virtual ACE_Task_Base + { + public: + Worker (CORBA::ORB_ptr orb) : + orb_(CORBA::ORB::_duplicate (orb)) + { + } + + virtual int svc (void) + { + DANCE_TRACE ("DAnCE::Repository_Manager::Worker::svc"); + + size_t thread_id = ++this->thread_counter_; + + try + { + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("DAnCE::Repository_Manager::Worker::svc - ") + ACE_TEXT("Spawning thread %u for the ORB.\n"), thread_id)); + this->orb_->run (); + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("DAnCE::Repository_Manager::Worker::svc - ") + ACE_TEXT("ORB event loop for thread %u completed successfully.\n"), thread_id)); + } + catch (const CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE::Repository_Manager::Worker::svc - ") + ACE_TEXT("Caught CORBA exception from ORB event loop for thread %u: %C\n"), + thread_id, ex._info ().c_str ())); + return -1; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE::Repository_Manager::Worker::svc - ") + ACE_TEXT("Caught unknown C++ exception from ORB event loop for thread %u\n"), + thread_id)); + return -1; + } + + return 0; + } + + private: + ACE_Atomic_Op thread_counter_; + CORBA::ORB_var orb_; + }; + } +} + +DAnCE_RepositoryManager_Module::DAnCE_RepositoryManager_Module (void) +{ + DANCE_TRACE("DAnCE_RepositoryManager_Module::DAnCE_RepositoryManager_Module"); +} + +DAnCE_RepositoryManager_Module::~DAnCE_RepositoryManager_Module (void) +{ + DANCE_TRACE ("DAnCE_RepositoryManager_Module::~DAnCE_RepositoryManager_Module"); + + for (Servant_Map::iterator it = this->rm_map_.begin (); + it != this->rm_map_.end (); + ++it) + { + delete (*it).int_id_; + } +} + +const char * +DAnCE_RepositoryManager_Module::usage (void) +{ + DANCE_TRACE ("DAnCE_RepositoryManager_Module::usage"); + return "Repository Manager Options:\n" + "\t-n|--name [name]\t Name to register in the naming service\n" + "\t-t|--threads [num]\t Number of threads to run.\n" + "\t-f|--file [name]\t Filename to output IOR.\n" + "\t-p|--package-dir [directory]\t Directory to store packages.\n" + "\t-s|--server-address [address]\t Address of the HTTP server associated with this RM.\n" + "\t-d|--domain-nc [NC]\t Default naming context for domain objects.\n" + "\t-h|help\t\t\t print this help message\n" +#ifdef DANCE_RM_USES_JAWS + "\t--spawn-http\t\t Spawn a JAWS http server, controlled by following options:\n" + "\t--http-port [port]\t Spawn JAWS HTTP server with provided port, default is 5432\n" + "\t--http-threads [number]\t Spawn provided number of threads in HTTP server, default is 1\n" + "\t--http-threading [strategy]\t Use provided threading strategy. POOL (Default), PER_REQUEST, THROTTLE.\n" + "\t--http-io [stratety]\t Use provided I/O strategy. SYNCH (default), ASYNCH.\n" + "\t--http-caching [strategy]\t Use provided caching strategy. NO_CACHE (default), CACHE\n" +#endif + ; + +} + +bool +DAnCE_RepositoryManager_Module::parse_args (int argc, ACE_TCHAR * argv[]) +{ + DANCE_TRACE ("DAnCE_RepositoryManager_Module::parse_args"); + + ACE_Get_Opt get_opts (argc - 1, + argv + 1, + ACE_TEXT(":hd:t:f:p:n:"), + 0, + 0, + ACE_Get_Opt::RETURN_IN_ORDER, + 1); + + get_opts.long_option (ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("domain-nc"), 'd', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("file"), 'f', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("threads"), 't', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("package-dir"), 'p', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("name"), 'n', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("server-address"), 's', ACE_Get_Opt::ARG_REQUIRED); +#ifdef DANCE_RM_USES_JAWS + get_opts.long_option (ACE_TEXT("spawn-http"), ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("http-port"), ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("http-threads"), ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("http-threading"), ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("http-io"), ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("http-caching"), ACE_Get_Opt::ARG_REQUIRED); +#endif /* DANCE_RM_USES_JAWS */ + + //get_opts.long_option ("help", '?'); + + int c; + while ( (c = get_opts ()) != -1) + { + switch (c) + { + case 'd': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Binding to provided Domain Naming Context: '%s'\n"), + get_opts.opt_arg ())); + this->options_.domain_nc_ = get_opts.opt_arg (); + break; + + case 'f': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Output filename for IOR is %s\n"), + get_opts.opt_arg ())); + this->options_.ior_file_ = get_opts.opt_arg (); + break; + + case 't': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Number of threads is %s\n"), get_opts.opt_arg ())); + this->options_.threads_ = (ACE_OS::atoi (get_opts.opt_arg ())); + break; + + case 'p': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Package directory is %s\n"), + get_opts.opt_arg ())); + this->options_.package_dir_ = get_opts.opt_arg (); + break; + + case 'n': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Name is %s\n"), + get_opts.opt_arg ())); + this->options_.name_ = get_opts.opt_arg (); + break; + + case 's': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Server address is %s\n"), + get_opts.opt_arg ())); + this->options_.server_address_ = get_opts.opt_arg (); + break; + + case 0: + if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("spawn-http")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Found option to spawn in-process HTTP server\n"))); + this->options_.spawn_http_ = true; + } + else if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("http-port")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Using %s as the spawned HTTP server port\n"), + get_opts.opt_arg ())); + this->options_.spawn_http_ = true; + this->options_.http_port_ = get_opts.opt_arg (); + } + else if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("http-threads")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Using %s as the spawned HTTP number of threads\n"), + get_opts.opt_arg ())); + this->options_.spawn_http_ = true; + this->options_.http_threads_ = get_opts.opt_arg (); + } + else if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("http-threading")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Using %s as the spawned HTTP server threading model\n"), + get_opts.opt_arg ())); + this->options_.spawn_http_ = true; + this->options_.http_threading_ = get_opts.opt_arg (); + } + else if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("http-io")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Using %s as the spawned HTTP server IO strategy\n"), + get_opts.opt_arg ())); + this->options_.spawn_http_ = true; + this->options_.http_io_ = get_opts.opt_arg (); + } + else if (ACE_OS::strcmp (get_opts.long_option (), ACE_TEXT("http-caching")) == 0) + { + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Using %s as the spawned HTTP server caching strategy\n"), + get_opts.opt_arg ())); + this->options_.spawn_http_ = true; + this->options_.http_caching_ = get_opts.opt_arg (); + } + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("ERROR: unknown long option %s\n"), + get_opts.long_option ())); + } + + break; + + case 'h': + case '?': // Display help for use of the server. + default: + DANCE_ERROR_RETURN (1, (LM_ERROR, + this->usage (), + argv [0], c), + false); + break; + } + + } + + if (this->options_.server_address_ == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("Repository_Manager_Module::parse_args - ") + ACE_TEXT("Must provide server address using --server-address option.\n"))); + return false; + } + + return true; +} + +CORBA::Object_ptr +DAnCE_RepositoryManager_Module::create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv[]) +{ + DANCE_TRACE ("DAnCE_RepositoryManager_Module::create_object"); + + try + { + if (CORBA::is_nil(orb)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Attempted to create Repository Manager with a nil orb.\n"))); + return CORBA::Object::_nil(); + } + else + { + this->orb_ = CORBA::ORB::_duplicate (orb); + } + + if (ACE_OS::strcmp(orb->id(), this->orb_->id()) != 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Resetting NM's orb.\n"))); + this->orb_ = CORBA::ORB::_duplicate (orb); + this->domain_nc_ = CosNaming::NamingContext::_nil(); + } + + if (!this->parse_args (argc, argv)) + { + return CORBA::Object::_nil (); + } + + if (this->options_.spawn_http_) + this->spawn_http (); + + this->create_poas (); + + if (this->options_.domain_nc_) + { + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Resolving DomainNC.\n"))); + CORBA::Object_var domain_obj = this->orb_->string_to_object (this->options_.domain_nc_); + if (!CORBA::is_nil (domain_obj.in ())) + { + this->domain_nc_ = CosNaming::NamingContext::_narrow (domain_obj.in()); + if (CORBA::is_nil (this->domain_nc_.in ())) + { + DANCE_ERROR (1, (LM_ERROR,DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Narrow to NamingContext return nil for DomainNC.\n"))); + return CORBA::Object::_nil (); + } + } + } + catch (const CORBA::Exception&) + { + DANCE_DEBUG (6, (LM_WARNING, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("DomainNC context not found!\n"))); + } + } + + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Initializing the IOR Table\n"))); + // Initialize IOR table + CORBA::Object_var table_object = orb->resolve_initial_references ("IORTable"); + + IORTable::Table_var adapter = IORTable::Table::_narrow (table_object.in ()); + + if (CORBA::is_nil (adapter.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Unable to RIR the IORTable.\n"))); + return CORBA::Object::_nil (); + } + + + //Creating repository manager servant + DAnCE::RepositoryManagerDaemon_i * rm = new DAnCE::RepositoryManagerDaemon_i (orb, + this->options_.server_address_, + this->options_.package_dir_); + PortableServer::ServantBase_var safe_svt (rm); + + ACE_CString repository_manager_oid; + + if (this->options_.name_ == 0) + repository_manager_oid = "RepositoryManager"; + else + { + repository_manager_oid = this->options_.name_; + repository_manager_oid += ".RepositoryManager"; + } + + // Registering servant in poa + PortableServer::ObjectId_var oid = + PortableServer::string_to_ObjectId (repository_manager_oid.c_str()); + this->rm_poa_->activate_object_with_id (oid, rm); + + // Getting repository manager ior + CORBA::Object_var nm_obj = this->rm_poa_->id_to_reference (oid.in ()); + CORBA::String_var ior = orb->object_to_string (nm_obj.in ()); + + // Binding ior to IOR Table + adapter->bind (repository_manager_oid.c_str (), ior.in ()); + + // Binding repository menager to DomainNC + if (!CORBA::is_nil (this->domain_nc_.in ())) + { + ACE_CString ns_name; + if (this->options_.name_ == 0) + ns_name = "RepositoryManager"; + else ns_name = this->options_.name_; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Registering NM in NC as \"%C\".\n"), ns_name.c_str ())); + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup (ns_name.c_str ()); + name[0].kind = CORBA::string_dup ("RepositoryManager"); + this->domain_nc_->rebind (name, nm_obj.in ()); + } + + // Writing ior to file + if (0 != this->options_.ior_file_) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Writing RM IOR %C to file %C.\n"), this->options_.ior_file_, ior.in ())); + if (!DAnCE::Repository_Manager::write_IOR (this->options_.ior_file_, ior.in ())) + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("Error: Unable to write IOR to file %C\n"), + this->options_.ior_file_)); + } + + // Activate POA manager + PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); + mgr->activate (); + + // Finishing Deployment part + DANCE_DEBUG (6, (LM_NOTICE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("DAnCE_RepositoryManager is running...\n"))); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_object - ") + ACE_TEXT("RepositoryManager IOR: %C\n"), ior.in ())); + + return nm_obj._retn (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("DAnCE_RepositoryManager::main\t\n"); + return CORBA::Object::_nil (); + } +} + +void +DAnCE_RepositoryManager_Module::create_poas (void) +{ + DANCE_TRACE("DAnCE_Repository_Manager_Module::create_poas"); + // Get reference to Root POA. + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_poas - ") + ACE_TEXT("Resolving root POA\n"))); + CORBA::Object_var obj = this->orb_->resolve_initial_references ("RootPOA"); + + this->root_poa_ = PortableServer::POA::_narrow (obj.in ()); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_poas - ") + ACE_TEXT("Obtaining the POAManager\n"))); + PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); + + TAO::Utils::PolicyList_Destroyer policies (2); + policies.length (2); + + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_poas - ") + ACE_TEXT("DAnCE_RepositoryManager_Module::create_poas - ") + ACE_TEXT("Creating the \"Repository\" POA.\n"))); + + policies[0] = this->root_poa_->create_id_assignment_policy (PortableServer::USER_ID); + policies[1] = this->root_poa_->create_lifespan_policy (PortableServer::PERSISTENT); + this->rm_poa_ = this->root_poa_->create_POA ("Repository", + mgr.in(), + policies); + } + catch (const PortableServer::POA::AdapterAlreadyExists &) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO ACE_TEXT("DAnCE_RepositoryManager_Module::create_poas - ") + ACE_TEXT("Using existing \"Repository\" POA\n"))); + this->rm_poa_ = this->root_poa_->find_POA ("Repository", 0); + } +} + +void +DAnCE_RepositoryManager_Module::spawn_http (void) +{ + DANCE_TRACE ("DAnCE_RepositoryManager_Module::spawn_http"); + + ACE_CString directive = +#if (ACE_USES_CLASSIC_SVC_CONF == 0) + ACE_TEXT ("") + ACE_TEXT (" options_.http_port_; + directive += ACE_TEXT (" -n "); + directive += this->options_.http_threads_; + directive += ACE_TEXT (" -i "); + directive += this->options_.http_io_; + directive += ACE_TEXT (" -t "); + directive += this->options_.http_threading_; + directive += ACE_TEXT (" -c "); + directive += this->options_.http_caching_; + directive += ACE_TEXT (" -b 50 -f THR_NEW_LWP"); + directive += ACE_TEXT ("\""); + +#if (ACE_USES_CLASSIC_SVC_CONF == 0) + directive += ACE_TEXT ("/>"); + directive += ACE_TEXT (""); +#endif + + ACE_Service_Config::current ()->process_directive (directive.c_str ()); +} + +#ifndef BUILD_REPOSITORY_MANAGER_EXE +ACE_FACTORY_DEFINE (DAnCE_RepositoryManager_Module, DAnCE_RepositoryManager_Module) +#endif /*BUILD_REPOSITORY_MANAGER_EXE */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.h b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.h new file mode 100644 index 00000000000..5374ad6f00f --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/Repository_Manager_Module.h @@ -0,0 +1,128 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Repository_Manager_Module.h + * + * $Id$ + * + * @brief To start RepositoryManager by starter + * + * @author Vinzenz Tornow + * @author William R. Otte + */ +//============================================================================= + +#ifndef NODE_MANAGER_MODULE_H +#define NODE_MANAGER_MODULE_H + +#include /**/ "ace/pre.h" + +#include "DAnCE_RepositoryManager_Module_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Service_Config.h" +#include "ace/Vector_T.h" +#include "ace/Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "tao/ORB.h" +#include "tao/PortableServer/POAC.h" +#include "orbsvcs/CosNamingC.h" +#include "tao/Object_Loader.h" +#include "Deployment/DAnCE_Loader.h" +#include "DAnCE/Deployment/Deployment_common.h" + +namespace DAnCE +{ + class RepositoryManagerDaemon_i; +} + +/** + * @class Repository_Manager_Module + * + * @brief The shared object that is instantiated when the node manager + * module/library is dynamically loaded. + * + * This class runs the node manager instance + */ +class DAnCE_RepositoryManager_Module_Export DAnCE_RepositoryManager_Module + : public DAnCE::DAnCE_Object_Loader +{ + public: + struct SOptions + { + const ACE_TCHAR * domain_nc_; + const ACE_TCHAR * ior_file_; + size_t threads_; + const ACE_TCHAR * package_dir_; + const ACE_TCHAR * name_; + const ACE_TCHAR * server_address_; + + bool spawn_http_; + const ACE_TCHAR *http_port_; + const ACE_TCHAR *http_threads_; + const ACE_TCHAR *http_threading_; + const ACE_TCHAR *http_io_; + const ACE_TCHAR *http_caching_; + + SOptions() : + domain_nc_ (0), + ior_file_ (0), + threads_ (1), + package_dir_ (ACE_TEXT("RepositoryManager_Packages")), + server_address_ (0), + spawn_http_ (false), + http_port_ (ACE_TEXT("5432")), + http_threads_ (ACE_TEXT("1")), + http_threading_ (ACE_TEXT("POOL")), + http_io_ (ACE_TEXT("SYNCH")), + http_caching_ (ACE_TEXT("NO_CACHE")) + { + } + }; + + /// Constructor. + DAnCE_RepositoryManager_Module (void); + + /// Destructor. + ~DAnCE_RepositoryManager_Module (void); + + /// Overload the base class method to create a new instance + /// of a DAnCE_RepositoryManager_Module object. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv []); + + virtual const char * usage (void); + + virtual bool parse_args (int argc, ACE_TCHAR *argv []); + + private: + void create_poas (void); + + void spawn_http (void); + + /// Here we store the servants. + typedef ACE_Map_Manager < ACE_CString, + DAnCE::RepositoryManagerDaemon_i *, + ACE_Null_Mutex > Servant_Map; + + Servant_Map rm_map_; + + CORBA::ORB_var orb_; + CosNaming::NamingContext_var domain_nc_; + + SOptions options_; + + PortableServer::POA_var root_poa_; + PortableServer::POA_var rm_poa_; +}; + +ACE_FACTORY_DECLARE (DAnCE_RepositoryManager_Module, DAnCE_RepositoryManager_Module) + +#include /**/ "ace/post.h" + +#endif /* NODE_MANAGER_MODULE_H */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp new file mode 100644 index 00000000000..90d36abaf99 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp @@ -0,0 +1,101 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/ARGV.h" +#include "URL_Parser.h" +#include "ace/ACE.h" + +#include "DAnCE/Logger/Log_Macros.h" + +bool +URL_Parser::parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("rwu:h:p:f:d")); + + bool success = true; + int c; + + while ((c = get_opt ()) != -1) + switch (c) + { + case 'd': + this->debug_ = true; + break; + case 'u': + success = parseURL (get_opt.opt_arg ()); + break; + // Usage fallthrough. + default: + success = false; + } + + if (this->hostname_ == 0 || this->filename_ == 0) + { + success = false; + } + + return success; +} + +URL_Parser::URL_Parser (void) + : hostname_ (ACE::strnew (ACE_TEXT("127.0.0.1"))), + port_ (ACE_DEFAULT_HTTP_SERVER_PORT), + filename_ (0), + debug_ (false) +{ +} + +bool URL_Parser::parseURL (ACE_TCHAR* url) +{ + ACE_TCHAR* ptr = 0; + bool success = true; + ptr = ACE_OS::strstr (url, ACE_TEXT("http://")); + if (ptr) + url += ACE_OS::strlen (ACE_TEXT("http://")); + + if (url[0] == '/') + { + this->filename_ = ACE_OS::strdup (url); + } + else + { + ptr = ACE_OS::strstr (url, ":"); + if (ptr) + this->port_ = ACE_OS::atoi (ptr + 1); + else + ptr = ACE_OS::strstr (url, "/"); + + if(!ptr) + success = false; + else + { + size_t host_len = ptr - url; + ACE::strdelete (this->hostname_); + ACE_NEW_RETURN (this->hostname_, char [host_len + 1], false); + ACE_OS::strncpy (this->hostname_, url, host_len); + this->hostname_ [host_len] = '\0'; + ptr = ACE_OS::strstr (ptr, "/"); + if (ptr) + { + this->filename_ = ACE_OS::strdup(ptr); + } + else + { + success = false; + } + } + } + return success; +} + + +void URL_Parser::Error (void) +{ + DANCE_DEBUG (6, (LM_DEBUG, "./http_client -u http://hostname:port/filename [-d]\n")); +} + +URL_Parser::~URL_Parser() +{ + delete [] this->hostname_; + ACE_OS::free (this->filename_); +} diff --git a/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h new file mode 100644 index 00000000000..c75d2f7bc1a --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h @@ -0,0 +1,64 @@ + +/* -*- C++ -*- */ + +//============================================================================= +/** + * @file URL_Parser.h + * + * $Id$ + * + * Parses a URL into its logical chunks + * + * @author Stoyan Paunov + */ +//============================================================================= + + +#ifndef URL_PARSER_H +#define URL_PARSER_H + +#include "ace/Singleton.h" //for ACE_Singleton +#include "ace/Null_Mutex.h" //for ACE_Null_Mutex + +// Forward declaration +class URL_Parser; + +typedef ACE_Singleton TheURL_Parser; + +class URL_Parser +{ +public: + + friend class ACE_Singleton ; + + /// Parses commandline arguments + bool parse_args (int argc, ACE_TCHAR *argv[]); + + /// Return false on failure + bool parseURL (ACE_TCHAR* url); + + void Error (void); + + /// Hostname to connect to + ACE_TCHAR *hostname_; + + /// Port number to use + u_short port_; + + /// Filename to upload/download + ACE_TCHAR *filename_; + + /// Turns on verbosity + bool debug_; + + /// destructor + ~URL_Parser (void); + +protected: + /// protected constructor, singleton + URL_Parser (void); +}; + + + +#endif /* URL_PARSER_H */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp new file mode 100644 index 00000000000..e1a2345cebf --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp @@ -0,0 +1,378 @@ + +//=============================================================================== +/** + * @file ZIP_Wrapper.cpp + * + * $Id$ + * + * Purpose: implementing the ZIP_Wrapper class + * + * @author Stoyan Paunov, Vipul Singh + * + */ +//=============================================================================== + +#include "ace/Containers_T.h" //for ACE_Double_Linked_List +#include "ace/Message_Block.h" //for ACE_Message_Block +#include "ace/OS_NS_fcntl.h" //for open +#include "ace/OS_NS_unistd.h" //for close +#include "ace/OS_NS_string.h" //for strncpy +#include "ace/SString.h" //for ACE_CString +#include "ace/OS_NS_sys_stat.h" //for stat +#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir +#include "ace/OS_Memory.h" //for ACE_NEW* macros +#include "DAnCE/Logger/Log_Macros.h" + +#include +#include "minizip/unzip.h" +#define MAXFILENAME (256) +#define CASESENSITIVITY (0) +#define WRITEBUFFERSIZE (8192) + +#include "ZIP_Wrapper.h" + +//ZIP_File_Info constructor +ZIP_File_Info::ZIP_File_Info (char* name, size_t size) + : name_ (name), + size_ (size), + next_ (0), + prev_ (0) +{ +} + +//ZIP_File_Info default constructor +ZIP_File_Info::ZIP_File_Info () + : name_ (""), + size_ (0), + next_ (0), + prev_ (0) +{ +} + + +/// Gets a list of the files in the archive. +int ZIP_Wrapper::file_list_info (char* zip_name, + ACE_Double_Linked_List &list) +{ + unzFile uf=0; + char filename_try[MAXFILENAME+16] = ""; + if (zip_name!=0) + { + ACE_OS::strncpy(filename_try, zip_name, MAXFILENAME-1); + /* strncpy doesnt append the trailing NULL, if the string is too long. */ + filename_try[ MAXFILENAME ] = '\0'; + /* open the zip file */ + uf = unzOpen(zip_name); + /* if zipfile could not be opened, try appending .zip to name */ + if (uf==0) + { + ACE_OS::strcat(filename_try, ".zip"); + uf = unzOpen(filename_try); + } + } + /* If zipfile could not be opened still, return */ + if (uf==0) + { + DANCE_DEBUG (6, (LM_DEBUG, ACE_TEXT("There is some problem in opening") + ACE_TEXT(" %s or %s.zip using unzOpen\n"), zip_name, zip_name)); + return 1; + } + unz_global_info gi; + /* get information about all the files in zip file*/ + int err = unzGetGlobalInfo(uf, &gi); + if (err!=UNZ_OK) + DANCE_DEBUG (6, (LM_DEBUG, ACE_TEXT("unzGetGlobalInfo failed while trying") + ACE_TEXT(" to get global information about zipfile\n"), err)); + /* gi.number_entry corresponds to the number of directory entries + in the zip file */ + for (uLong i=0;ispace () == 0) + { + ACE_Message_Block* next = 0; + ACE_NEW_RETURN (next, ACE_Message_Block (BUFSIZ), false); + head->cont (); + head = head->cont (); + } + num_read = unzReadCurrentFile(archive_path, head->wr_ptr(), + head->space()); + if (num_read > 0) + head->wr_ptr (num_read); + } while (num_read > 0); + if (num_read < 0) + return_code = false; + unzCloseCurrentFile(uf); + unzClose(uf); + return return_code; + } + } + return return_code; +} + + +/// uncompress the zip file +/// The zip file will be uncompressed into a directory +/// with the name of zip archive. +/// the path is assumed to be an existing directory + +bool ZIP_Wrapper::uncompress (char* zip_archive, char* path, bool verbose) +{ + //open the zip archive + unzFile uf=0; + uf = unzOpen(zip_archive); + if (uf==0) + { + DANCE_DEBUG (6, (LM_DEBUG,ACE_TEXT("unzOpen failed to open the") + ACE_TEXT(" zipfile\n"))); + return false; + } + //get the name of the archive + ACE_CString arch_dir (path); + arch_dir += "/"; + //get only the name of the archive; remove path info + char* n = ACE_OS::strstr (zip_archive, "/"); + char* zip_name = 0; + while (n != 0) + { + zip_name = ++n; + n = ACE_OS::strstr (n, "/"); + } + arch_dir += zip_name; + //NOTE: Assumes .zip or cpk extension + arch_dir = arch_dir.substring (0, arch_dir.length () - 4); + //create directory with the name of zip archive + ACE_OS::mkdir(arch_dir.c_str()); + //if dir exists -1 is returned and ignored + unz_global_info gi; + int err = unzGetGlobalInfo(uf, &gi); + if (err!=UNZ_OK) + { + DANCE_DEBUG (6, (LM_DEBUG, ACE_TEXT("unzGetGlobalInfo failed to get global") + ACE_TEXT(" information about zipfile\n"), err)); + return false; + } + err =unzGoToFirstFile(uf); + if (err!=UNZ_OK) + { + DANCE_DEBUG (6, (LM_DEBUG,ACE_TEXT("error %d with zipfile in" + ACE_TEXT(" unzGoToFirstFile\n")), err)); + return false; + } + /* read each entry of zip file, create directory structure if it is + a non existing directory whereas if it is a file, write the file + at the proper path in the directory structure */ + for (uLong i=0;i buffer (temp); + //read in the data + unzReadCurrentFile(uf, &(*buffer), file_size); + //close the zip handle + unzCloseCurrentFile(uf); + //create file name + path to open + std::string file_path (arch_dir.c_str ()); + //NOTE: need the c-style char to stop at '\0' + file_path += "/"; + file_path += filename_inzip; + //print out the file to be uncompressed + if (verbose) + { + ACE_OS::write(ACE_STDOUT, file_path.c_str (), + file_path.length () ); + ACE_OS::write(ACE_STDOUT, "\n", 1); + } + // Open a file handle to the local filesystem + ACE_HANDLE handle = ACE_OS::open (file_path.c_str (), + O_CREAT | O_TRUNC | O_WRONLY); + if (handle == ACE_INVALID_HANDLE) + { + unzClose(uf); + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[uncompress] file creation error")), + 0); + } + //write the uncompressed data to the file + if (ACE_OS::write (handle, &(*buffer), file_size) == -1) + { + unzClose(uf); + DANCE_ERROR_RETURN (1, (LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("[uncompress] file write error")), + 0); + } + // Close the file handle + ACE_OS::close (handle); + } + return 0; +} diff --git a/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h new file mode 100644 index 00000000000..1506277e4f7 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h @@ -0,0 +1,117 @@ + +/* -*- C++ -*- */ + +//======================================================================= +/** + * @file ZIP_Wrapper.h + * + * $Id$ + * + * Purpose: to provide a wrapper around minizip for easy handling of + * ZIP archives. This wrapper can be used as an auxiliary + * class that allows a program to become ZIP-aware + * + * @author Stoyan Paunov, Vipul Singh + * + * + */ +//======================================================================= + +#ifndef _ZIP_WRAPPER_H_ +#define _ZIP_WRAPPER_H_ + +#include "ace/Containers_T.h" //for ACE_Double_Linked_List +#include "ace/Message_Block.h" //for ACE_Message_Block +#include "ace/SString.h" //for ACE_CString + +#include "ace/Synch.h" +#include "ace/OS_NS_fcntl.h" //for open +#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir + +#include "minizip/unzip.h" + + +/** + * @class ZIP_File_Info + * + * This class is used as a carrier of information + * about entities residing inside a ZIP archive + */ +class ZIP_File_Info +{ +public: + ACE_CString name_; + size_t size_; + ZIP_File_Info* next_; + ZIP_File_Info* prev_; + + ZIP_File_Info (char* name, size_t size); + ZIP_File_Info (); +}; + +/** + * @class ZIP_Wrappers + * + * This class is the actual workhorse that provides all of + * the necessary functionality + */ +class ZIP_Wrapper +{ +public: + + /// Get file and store it into an ACE_Message_Block. The function + /// averts subdirectory traversal problems. + /// NOTE: Be sure to release the message block even if the function returns + /// false becuase the return value might be due to unsuccessful allocation + + ///archive_path is the zip archive with the path + ///filename is the name of the file to be looked for in the zip archive. + ///the file is stored in ACE message block. + static bool get_file (char* archive_path, char* filename, + ACE_Message_Block &file); + + /// uncompress the zip file + /// The zip file will be uncompressed into a directory with the + ///name of zip archive. + /// The path is assumed to be an existing directory + + ///zip_archive is the arcive to be uncompressed with full path. + ///path is used for creating a directory with the name of zip archive. + static bool uncompress (char* zip_archive, char* path = 0, + bool verbose = true); + + /// Get a list of the files in the archive + + ///zip_name is the name of zipfile with fullpath. + ///list stores information about each entry in zip file. + static int file_list_info (char* zip_name, + ACE_Double_Linked_List &list); + + ///Check if an entry of a zip file is a file or directory + ///We assume a directoryname terminates with a forward slash + ///Returns 1 for directory while 0 for file. + + ///filename_inzip is an entry in a zipfile + static int checkdir (char* filename_inzip); + + ///Create directory structure if entry in zipfile is a directory + + ///filename_inzip is an entry in a zipfile + ///arch_dir stores the name of the directory to be created + static int makethedir (char* filename_inzip, ACE_CString arch_dir); + + ///If entry in zipfile is a file, then read the file and write + /// the uncompressed data at the proper filepath. + + ///filename_inzip is an entry in a zipfile + ///uf refers to the zip archive + ///file_info is used to get information about current file + ///verbose decides if the details are to be printed or not + ///arch_dir is the name of file with full path where it is to be + ///uncompressed + static int handlethefile (char* filename_inzip, unzFile uf, + unz_file_info file_info, + bool verbose, ACE_CString arch_dir); +}; + +#endif diff --git a/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.cpp b/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.cpp new file mode 100644 index 00000000000..fd1243f861f --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.cpp @@ -0,0 +1,241 @@ +// $Id$ +#include "repository_manager_admin.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "RepositoryManagerDaemonC.h" + +namespace DAnCE +{ + namespace RepositoryManager + { + Admin::Admin (Deployment::RepositoryManager_ptr rm) + : rm_ (Deployment::RepositoryManager::_duplicate (rm)) + { + DANCE_TRACE ("Admin::Admin"); + } + + + /// Install a package at a provided filesystem path. + bool + Admin::install_package (const ACE_TCHAR *uri, + const ACE_TCHAR *name, + bool replace) + { + DANCE_TRACE ("Admin::install_package"); + + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO "Admin::install_package - " + "Installing package with URI: %C, name: %C\n", + uri, name)); + this->rm_->installPackage (ACE_TEXT_ALWAYS_CHAR (name), + ACE_TEXT_ALWAYS_CHAR (uri), + replace); + DANCE_DEBUG (9, (LM_TRACE, DLINFO "Admin::install_package - " + "Package installed successfully\n")); + } + catch (Deployment::NameExists &) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::install_package - " + "Package with name %C already installed.\n", + name)); + return false; + } + catch (Deployment::PackageError &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::install_package - " + "Internal error while installing package with name %C: %C - %C\n", + name, ex.source.in (), ex.reason.in ())); + return false; + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::install_package - " + "Unexpected CORBA Exception while installing package with name: %C. Reason: %C\n", + name, + ex._info ().c_str ())); + return false; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::install_package - " + "Unexpected C++ exception while installing package with name: %C\n", + name)); + return false; + } + + return true; + } + + /// Create new package. + bool + Admin::create_package (const ACE_TCHAR * /* pc_path */, + const ACE_TCHAR * /** name*/, + const ACE_TCHAR * /*baselocation*/, + bool /*replace*/) + { + DANCE_TRACE ("Admin::create_package"); + + return false; + } + + /// Uninstall a package with a provided UUID. + /// Fails if the NoSuchName exception was raised. + bool + Admin::uninstall_package (const ACE_TCHAR *uuid) + { + DANCE_TRACE ("Admin::uninstall_package"); + + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO "Admin::uninstall_package - " + "Attempting to uninstall package %s\n", + uuid)); + this->rm_->deletePackage (ACE_TEXT_ALWAYS_CHAR (uuid)); + DANCE_DEBUG (8, (LM_INFO, DLINFO "Admin::uninstall_package - " + "Successfully uninstalled package %s\n", + uuid)); + } + catch (Deployment::NoSuchName &) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::uninstall_package - " + "No package with the given UUID found: %C\n", + uuid)); + return false; + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::uninstall_package - " + "Unexpected CORBA Exception while uninstalling package with uuid: %C. Reason: %C\n", + uuid, + ex._info ().c_str ())); + return false; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::uninstall_package - " + "Unexpected C++ exception while installing package with uuid: %C\n", + uuid)); + return false; + } + + return true; + } + + /// List all installed packages + ::CORBA::StringSeq * + Admin::list_packages (void) + { + DANCE_TRACE ("Admin::list_packages"); + + try + { + CORBA::StringSeq_var packages = this->rm_->getAllNames (); + return packages._retn (); + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::list_packages - " + "Unexpected CORBA Exception while listing packages: %C\n", + ex._info ().c_str ())); + return 0; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::list_package - " + "Unexpected C++ exception while listing packages\n")); + return 0; + } + + return 0; + } + + /// List all installed package types + ::CORBA::StringSeq * + Admin::list_types (void) + { + DANCE_TRACE ("Admin::list_types"); + + try + { + CORBA::StringSeq_var packages = this->rm_->getAllTypes (); + return packages._retn (); + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::list_types - " + "Unexpected CORBA Exception while listing package types: %C\n", + ex._info ().c_str ())); + return 0; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::list_types - " + "Unexpected C++ exception while listing package types\n")); + return 0; + } + + return 0; + } + + /// Find package names by type + ::CORBA::StringSeq * + Admin::find_by_type (const ACE_TCHAR *type) + { + DANCE_TRACE ("Admin::find_by_type"); + + if (type == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::find_by_type - " + "Nill type passed to find_by_type\n")); + return 0; + } + + try + { + ::CORBA::StringSeq_var types = this->rm_->findNamesByType (ACE_TEXT_ALWAYS_CHAR (type)); + types._retn (); + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::find_by_type - " + "Unexpected CORBA Exception while listing packages of type %C: %C\n", + type, + ex._info ().c_str ())); + return 0; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::find_by_type - " + "Unexpected C++ exception while listing packages by type %C\n", + type)); + return 0; + } + + return 0; + } + + /// Attempt to shutdown the server. + bool + Admin::shutdown (void) + { + DANCE_TRACE ("Admin::shutdown"); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "Admin::shutdown - " + "Attempting to shut down Repository Manager\n")); + CIAO::RepositoryManagerDaemon_var rmd = + CIAO::RepositoryManagerDaemon::_narrow (this->rm_.in ()); + DANCE_DEBUG (8, (LM_INFO, DLINFO "Admin::shutdown - " + "Repository Manager shut down.\n")); + if (CORBA::is_nil (rmd.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Admin::shutdown - " + "Unable to narrow provided RM reference to a CIAO::RepositoryManagerDaemon\n")); + return false; + } + + rmd->shutdown (); + + return true; + } + } +} diff --git a/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.h b/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.h new file mode 100644 index 00000000000..867b4b0a18a --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin.h @@ -0,0 +1,68 @@ + +// $Id$ + +/** + * @file repository_manager_admin.h + * @author William R. Otte ? + * + * Class which implements most repository admin functions. + */ + +#ifndef REPOSITORY_MANAGER_ADMIN_H_ +#define REPOSITORY_MANAGER_ADMIN_H_ + +#include /**/ "ace/pre.h" +#include "Deployment/Deployment_RepositoryManagerC.h" + +#include "Repository_Manager_Admin_Export.h" + +namespace DAnCE +{ + namespace RepositoryManager + { + /** + * @class Admin + * @brief Implements administrative functions for the Repository Manager. + */ + class DAnCE_RepositoryManager_Admin_Export Admin + { + public: + Admin (Deployment::RepositoryManager_ptr rm); + + /// Install a package at a provided filesystem path. + bool install_package (const ACE_TCHAR *uri, + const ACE_TCHAR *name, + bool replace); + + /// Create new package. + bool create_package (const ACE_TCHAR *pc_path, + const ACE_TCHAR *name, + const ACE_TCHAR *baselocation, + bool replace); + + /// Uninstall a package with a provided UUID. + /// Fails if the NoSuchName exception was raised. + bool uninstall_package (const ACE_TCHAR *uuid); + + /// List all installed packages + ::CORBA::StringSeq * list_packages (void); + + /// List all installed package types + ::CORBA::StringSeq * list_types (void); + + /// Find package names by type + ::CORBA::StringSeq * find_by_type (const ACE_TCHAR *type); + + /// Attempt to shutdown the server. + bool shutdown (void); + + private: + Deployment::RepositoryManager_var rm_; + + }; + } +} + +#include /**/ "ace/post.h" + +#endif /* REPOSITORY_MANAGER_ADMIN_H_ */ diff --git a/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp b/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp new file mode 100644 index 00000000000..f189afdf197 --- /dev/null +++ b/modules/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp @@ -0,0 +1,452 @@ +// $Id$ + +/** + * @file repository_manager_admin_exec.cpp + * @author William R. Otte + * + * Simple administration program for the Repository Manager. + */ + +#include "ace/Auto_Ptr.h" +#include "ace/Get_Opt.h" +#include "ace/Unbounded_Set.h" +#include "ace/String_Base.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Logger/Logger_Service.h" +#include "Deployment/Deployment_RepositoryManagerC.h" + +#include "repository_manager_admin.h" + +struct Options +{ + Options (void) + : rm_ior_ (""), + domain_nc_ (""), + list_ (false), + shutdown_ (false) + { + } + + struct Installation + { + Installation (void) + { + } + + bool init (const ACE_TCHAR *inst) + { + ACE_CString tmp (inst); + + size_t begin = 0; + size_t pos = tmp.find (',', begin); + + if (pos != ACE_CString::npos) + path_ = tmp.substring (begin, pos - begin); + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Installation::init - " + "Installation directive missing name and replace parameters, " + "must have form path,name,replace\n")); + return false; + } + + + begin = pos + 1; + pos = tmp.find (',', begin); + + if (pos != ACE_CString::npos) + name_ = tmp.substring (begin, pos - begin); + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Installation::init - " + "Installation directive mssing replace parameter, " + "must have form path,name,replace\n")); + return false; + } + + begin = pos + 1; + + if (tmp[begin] == '0') replace_ = false; + else if (tmp[begin] == '1') replace_ = true; + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Installation::init - " + "Replace directive muse be 1 or 0.\n")); + return false; + } + + return true; + } + + bool operator== (const Installation &rhs) const + { + return (replace_ == rhs.replace_) && + (path_ == rhs.path_) && + (name_ == rhs.name_); + } + + ACE_CString path_, name_; + bool replace_; + }; + + struct Creation + { + Creation (void) + { + } + + bool init (const ACE_TCHAR *inst) + { + ACE_CString tmp (inst); + + size_t begin = 0; + size_t pos = tmp.find (',', begin); + + if (pos != ACE_CString::npos) + path_ = tmp.substring (begin, pos - begin); + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Creation::init - " + "Creation directive missing name, base location, and replace parameters, " + "must have form path,name,base,replace\n")); + return false; + } + + + begin = pos + 1; + pos = tmp.find (',', begin); + + if (pos != ACE_CString::npos) + name_ = tmp.substring (begin, pos - begin); + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Creation::init - " + "Creation directive mssing base location and replace parameter, " + "must have form path,name,base,replace\n")); + return false; + } + + begin = pos + 1; + pos = tmp.find (',', begin); + + if (pos != ACE_CString::npos) + base_location_ = tmp.substring (begin, pos - begin); + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Creation::init - " + "Creation directive mssing replace parameter, " + "must have form path,name,base,replace\n")); + return false; + } + + begin = pos + 1; + + if (tmp[begin] == '0') replace_ = false; + else if (tmp[begin] == '1') replace_ = true; + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::Creation::init - " + "Replace directive muse be 1 or 0.\n")); + return false; + } + + return true; + } + + bool operator== (const Creation &rhs) const + { + return (replace_ == rhs.replace_) && + (path_ == rhs.path_) && + (name_ == rhs.name_); + } + + ACE_CString path_, name_, base_location_; + bool replace_; + }; + + const ACE_TCHAR *rm_ior_; + const ACE_TCHAR *domain_nc_; + ACE_Unbounded_Set< Installation > install_; + ACE_Unbounded_Set< Creation > create_; + ACE_Unbounded_Set< ACE_CString > uninstall_; + bool list_; + bool shutdown_; + + void usage (void) + { + DANCE_ERROR (1, (LM_EMERGENCY, "usage:\n" + "\t-h,--help\t\t\tThis message.\n" + "\t-r,--rm-ior \t\tIOR where the RM instance may be found\n" + "\t-i,--install ,,<1|0>\tInstall package found at into the RM, with ,\n" + "\t\t\t<1> replacing or <0> not replacing an existing package. *\n" + "\t-c,--create ,,,<1|0>\tInstall package found at into the RM, with ,\n" + "\t\t\t, <1> replacing or <0> not replacing an existing package. *\n" + "\t-u,--uninstall \t\tUninstall package identified by UUID. *\n" + "\t-l,--list\t\t\tList all packages installed in the RM\n" + "\t-s,--shutdown\t\t\tShutdown the RM.\n" + "\t-d,--domain-nc \t\tProvide a reference to the domain naming context\n" + + "\n\n\tArguments with a * may be specified multiple times.\n")); + } + + + int parse_args (int argc, ACE_TCHAR *argv[]) + { + ACE_Get_Opt get_opt (argc, argv, + ACE_TEXT ("hr:i:c:u:lsd:"), + 0, 0, + ACE_Get_Opt::RETURN_IN_ORDER, + 1); + + get_opt.long_option (ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); + get_opt.long_option (ACE_TEXT("rm-ior"), 'r', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option (ACE_TEXT("install"), 'i', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option (ACE_TEXT("create"), 'c', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option (ACE_TEXT("uninstall"), 'u', ACE_Get_Opt::ARG_REQUIRED); + get_opt.long_option (ACE_TEXT("list"), 'l', ACE_Get_Opt::NO_ARG); + get_opt.long_option (ACE_TEXT("shutdown"), 's', ACE_Get_Opt::NO_ARG); + get_opt.long_option (ACE_TEXT("domain-nc"), 'd', ACE_Get_Opt::ARG_REQUIRED); + + int c; + Installation inst; + Creation create; + + while ((c = get_opt ()) != -1) + { + switch (c) + { + case 'h': + this->usage (); + return 1; + break; + + case 'r': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Using provided RM IOR: %C\n", + get_opt.opt_arg ())); + rm_ior_ = get_opt.opt_arg (); + break; + + case 'i': + if (!inst.init (get_opt.opt_arg ())) + { + this->usage (); + return -1; + } + + if (inst.replace_) + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Replacing installed package from path %C with name %C.\n", inst.path_.c_str (), + inst.name_.c_str ())); + else + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Installing package from path %C with name %C.\n", inst.path_.c_str (), + inst.name_.c_str ())); + + this->install_.insert (inst); + break; + + case 'c': + if (!create.init (get_opt.opt_arg ())) + { + this->usage (); + return -1; + } + + if (create.replace_) + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Replacing installed package from path %C with name %C and base location %C.\n", + create.path_.c_str (), + create.name_.c_str (), + create.base_location_.c_str ())); + else + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Installing new package from path %C with name %C and base location %C.\n", + create.path_.c_str (), + create.name_.c_str (), + create.base_location_.c_str ())); + + this->create_.insert (create); + break; + + case 'u': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Removing package with UUID %C\n", get_opt.opt_arg ())); + this->uninstall_.insert (get_opt.opt_arg ()); + break; + + case 'l': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Listing all packages.\n")); + this->list_ = true; + break; + + case 's': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Shutting down the RM instance.\n")); + this->shutdown_ = true; + break; + + case 'd': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Options::parse_args - " + "Using provided Domain NC: %C\n", + get_opt.opt_arg ())); + domain_nc_ = get_opt.opt_arg (); + + case 0: + if (ACE_OS::strcmp (get_opt.long_option (), ACE_TEXT ("domain-nc")) == 0) + { + } + else + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Options::parse_args - " + "Unknown long option: %C\n", + get_opt.long_option ())); + this->usage (); + return -1; + } + } + } + return 0; + } +}; + +int ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + DANCE_DISABLE_TRACE (); + + auto_ptr logger; + + int retval (0); + + try + { + DAnCE::Logger_Service + * dlf = ACE_Dynamic_Service::instance ("DAnCE_Logger"); + + if (dlf) + { + dlf->init (argc, argv); + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO + "Module_main.h - initializing ORB\n")); + + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); + + Options options; + int const error = options.parse_args (argc, argv); + if (error == -1) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " + "Failed to parse command line arguments.\n")); + } + else if (error == 1) + { //help was issued -> quit + return 0; + } + + if (options.rm_ior_ == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " + "No RepositoryManager IOR provided\n")); + return -1; + } + + // Resolve the RepositoryManager reference + CORBA::Object_var obj = orb->string_to_object (options.rm_ior_); + + Deployment::RepositoryManager_var rm = + Deployment::RepositoryManager::_narrow (obj); + + if (CORBA::is_nil (obj)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " + "Provided IOR was invalid or could not be narrowed: %s\n", + options.rm_ior_)); + return -1; + } + + DAnCE::RepositoryManager::Admin admin (rm.in ()); + + ACE_Unbounded_Set_Iterator inst_it = + options.install_.begin (); + Options::Installation *inst (0); + + while (inst_it.next (inst) == 1) + { + if (!admin.install_package (inst->path_.c_str (), + inst->name_.c_str (), + inst->replace_)) + retval = -1; + inst_it.advance (); + } + + ACE_Unbounded_Set_Iterator creat_it (options.create_); + Options::Creation *creat (0); + + while (creat_it.next (creat) == 1) + { + if (!admin.create_package (creat->path_.c_str (), + creat->name_.c_str (), + creat->base_location_.c_str (), + creat->replace_)) + retval = -1; + creat_it.advance (); + } + + ACE_Unbounded_Set_Iterator uninst_it (options.uninstall_); + ACE_CString *uninst = 0; + + while (uninst_it.next (uninst) == 1) + { + if (!admin.uninstall_package (uninst->c_str ())) + retval = -1; + uninst_it.advance (); + } + + if (options.list_) + { + ::CORBA::StringSeq * packages = admin.list_packages (); + if (packages == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " + "No packages returned from list_packages\n")); + retval = -1; + } + + DANCE_DEBUG (6, (LM_EMERGENCY, "Listing %u packages installed on server:\n")); + + for (CORBA::ULong i = 0; i < packages->length (); ++i) + { + DANCE_DEBUG (6, (LM_EMERGENCY, "\t%s\n", + (*packages)[i].in ())); + } + + delete packages; + } + + if (options.shutdown_) + { + DANCE_DEBUG (6, (LM_EMERGENCY, "Shutting down the Repository Manager\n")); + if (!admin.shutdown ()) + retval = -1; + } + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " + "Caught unexpected CORBA Exception: %s\n", + ex._info ().c_str ())); + return -1; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " + "Caught unexpected C++ exception.\n")); + return -1; + } + + return 0; +} + diff --git a/modules/CIAO/DAnCE/TargetManager/CmpClient.cpp b/modules/CIAO/DAnCE/TargetManager/CmpClient.cpp new file mode 100644 index 00000000000..9d42e928a53 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/CmpClient.cpp @@ -0,0 +1,305 @@ +// $Id$ +/** + * @file CmpClient.cpp + * + * @brief This file contains a client of TargetManager. + * + * It picks up the TM ior from the Targetmanager.ior file + * present in the current directory, and makes the calls on the + * TM to getAllResources and getAvailable resources + */ + +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Deployment/Deployment_ResourceCommitmentManagerC.h" +#include "DAnCE/TargetManager/TargetManagerC.h" +#include "ace/streams.h" +#include "ace/FILE_IO.h" +#include "ace/FILE_Connector.h" +#include "ace/FILE_Addr.h" +#include "ace/Get_Opt.h" +#include "Config_Handlers/DnC_Dump.h" + +/** + * TM_Tester contains the code to test the TM Component + */ +namespace TM_Tester +{ + /** + * writes the extracted data to file + */ + void write_to_file (::Deployment::Domain domain); + + /// variable contains IOR of the TM + const ACE_TCHAR * stringified_TM_IOR; + + /// if add or delete from domain + bool add_to_domain = true; + + /// whether to test update domain or not + bool call_update = false; + + /// contains the host name + const ACE_TCHAR* host_name; + + /// parses the arguments and extracts the params + bool parse_args (int argc, ACE_TCHAR *argv[]) + { + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("t:u:d")); + int c; + while ((c = get_opts ()) != -1) + switch (c) + { + case 't': + stringified_TM_IOR = get_opts.opt_arg (); + break; + case 'u': + host_name = get_opts.opt_arg (); + call_update = true; + break; + case 'd': + add_to_domain = false; + break; + case '?': // display help for use of the server. + default: + DANCE_ERROR_RETURN (1, (LM_ERROR, + "usage: %s\n" + "-t \n" + "-u \n" + "-n \n" + "\n", + argv [0]), + false); + } + + return true; + } +} + + /// The main function + int ACE_TMAIN (int argc, ACE_TCHAR* argv[]) + { + try { + // First initialize the ORB, that will remove some arguments... + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv); + + if (!TM_Tester::parse_args (argc, argv)) + return -1; + + // Use the first argument to create the factory object reference, + // in real applications we use the naming service, but let's do + // the easy part first! + CORBA::Object_var factory_object = + orb->string_to_object (TM_Tester::stringified_TM_IOR); + + // Now downcast the object reference to the appropriate type + CIAO::TargetManagerImpl_var targetCmp = + CIAO::TargetManagerImpl::_narrow (factory_object.in ()); + + // Now get the facet reference from the target Manager Component + Deployment::TargetManager_ptr targetI = targetCmp->provide_targetMgr (); + + // Now make calls on the Target Manager facet + + try + { + Deployment::Domain_var domainV = targetI->getAllResources (); + ::Deployment::DnC_Dump::dump (domainV); + } + catch(CORBA::NO_IMPLEMENT &) + { + DANCE_ERROR (1, (LM_ERROR ,"Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); + } + catch(CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR ,"Error:TargetManager:CORBA Generic Exception\n")); + DANCE_ERROR (1, (LM_ERROR ,"Error:TargetManager:Exception in TargetManager call\n")); + } + + + // make a call to the commit resources ..... + + bool resource_available = true; + + ::Deployment::ResourceAllocations resource_seq; + + resource_seq.length (1); + + resource_seq[0].elementName = CORBA::string_dup ("TargetManagerNode_1"); + + resource_seq[0].resourceName = CORBA::string_dup ("Processor"); + + resource_seq[0].property.length (1); + resource_seq[0].property[0].name = + CORBA::string_dup ("LoadAverage"); + + CORBA::Long d = 20; + resource_seq[0].property[0].value <<= d; + + ::Deployment::ResourceCommitmentManager_ptr manager = + ::Deployment::ResourceCommitmentManager::_nil (); + + try + { + manager = targetI->commitResources (resource_seq); + } + catch(const CORBA::NO_IMPLEMENT &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); + } + catch (const ::Deployment::ResourceCommitmentFailure& e) + { + resource_available = 0; + DANCE_ERROR (1, (LM_ERROR, "TargetManager commitResources ResourceCommitmentFailure Exception\n")); + + DANCE_ERROR (1, (LM_ERROR , + "ResourceCommitmentFailure\n reason=[%C]\n elementName=[%C]\n resourceName=[%C]\n propertyName=[%C]\n", + e.reason.in (), + resource_seq[e.index].elementName.in (), + resource_seq[e.index].resourceName.in (), + e.propertyName.in ())); + } + catch(const CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:commitResources Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA Generic Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:Exception in TargetManager call")); + } + + // Make a call to release resources , if resource < 0 + try + { + { + d = 10; + resource_seq[0].property[0].value <<= d; + manager->releaseResources (resource_seq); + } + } + catch(const CORBA::NO_IMPLEMENT &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); + } + catch (const Deployment::ResourceCommitmentFailure&) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager releaseResources ResourceNotAvailable Exception\n")); + } + catch(const CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:releaseResources Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA Generic Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:Exception in TargetManager call")); + } + + // Here make a call on the TM with update domain and node deletion + + ::Deployment::Domain updated; + updated.node.length (1); + updated.node[0].name = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR (TM_Tester::host_name)); + + ::CORBA::StringSeq elements; + elements.length (0); + + + if (TM_Tester::call_update) + { + if (TM_Tester::add_to_domain) + { + try + { + targetI->updateDomain (elements , updated, ::Deployment::Add); + } + catch(CORBA::NO_IMPLEMENT &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); + } + catch(CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA Generic Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:Exception in UpdateDomain call")); + } + } + else + { + try + { + targetI->updateDomain (elements , updated, ::Deployment::Delete); + } + catch(CORBA::NO_IMPLEMENT &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); + } + catch(CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA Generic Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:Exception in UpdateDomain call")); + } + } + } + + // Now make a call of getAvailableResources on the TargetManager ... + try + { + Deployment::Domain_var domainV = targetI->getAvailableResources(); + + // here write things to file ... + TM_Tester::write_to_file (domainV.in()); + + ::Deployment::DnC_Dump::dump (domainV); + } + catch(CORBA::NO_IMPLEMENT &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n")); + } + catch(CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR ,"Error:TargetManager:CORBA Generic Exception\n")); + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:Exception in TargetManager call\n")); + } + + // Finally destroy the ORB + orb->destroy (); + } + catch (CORBA::Exception &) + { + DANCE_ERROR (1, (LM_ERROR, "Error:TargetManager:CORBA exception raised!\n")); + } + return 0; + } + +namespace TM_Tester +{ + void write_to_file (::Deployment::Domain domain) + { + for (size_t i = 0;i < domain.node.length ();i++) + { + std::ofstream out (domain.node[i].name.in ()); + + // write in the node usage ... + for (CORBA::ULong j = 0;j < domain.node[i].resource.length ();j++) + { + + if (!ACE_OS::strcmp (domain.node[i].resource[j].name.in (), "Processor")) + { + CORBA::Double node_cpu; + domain.node[i].resource[j].property[0].value >>= node_cpu; + out << node_cpu << std::endl; + } + if (!ACE_OS::strcmp (domain.node[i].resource[j].name.in (), "NA_Monitor")) + { + std::string file_name = "NA_"; + file_name += domain.node[i].name.in (); + ACE_FILE_IO file_io; + ACE_FILE_Connector (file_io, ACE_FILE_Addr (ACE_TEXT_ALWAYS_CHAR (file_name.c_str ()))); + CORBA::Double na_node_cpu; + domain.node[i].resource[j].property[0].value >>= na_node_cpu; + char buf[BUFSIZ]; + ACE_OS::memset (buf , 0 , BUFSIZ); + ACE_OS::sprintf (buf , "%f", na_node_cpu); + file_io.send (buf, ACE_OS::strlen (buf)); + } + } + + out.close (); + } + } +} diff --git a/modules/CIAO/DAnCE/TargetManager/DAnCE_TargetManagerDaemon.idl b/modules/CIAO/DAnCE/TargetManager/DAnCE_TargetManagerDaemon.idl new file mode 100644 index 00000000000..fef488a487b --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/DAnCE_TargetManagerDaemon.idl @@ -0,0 +1,12 @@ +// $Id$ + +#include "DAnCE/Deployment/Deployment_TargetManager.idl" + +module DAnCE +{ + interface TargetManagerDaemon : Deployment::TargetManager + { + oneway void shutdown (); + }; +}; + diff --git a/modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp new file mode 100644 index 00000000000..570db1911d9 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp @@ -0,0 +1,688 @@ +// $Id$ +#include "DomainDataManager.h" + +#include "Config_Handlers/DD_Handler.h" +#include "Config_Handlers/DnC_Dump.h" +#include "DAnCE/Logger/Log_Macros.h" + +#ifdef GEN_OSTREAM_OPS +#include +#include +#endif /* GEN_OSTREAM_OPS */ + +void +DAnCE::DomainDataManager::init (CORBA::ORB_ptr orb, + ::Deployment::TargetManager_ptr target, + const ACE_TCHAR *domain_name) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::init"); + + this->orb_ = CORBA::ORB::_duplicate (orb); + this->target_mgr_ = ::Deployment::TargetManager::_duplicate(target); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "DAnCE::DomainDataManager::init - " + "Parsing initial domain from file %s\n", + domain_name)); + + CIAO::Config_Handlers::DD_Handler dd (domain_name); + ::Deployment::Domain* dmn = dd.domain_idl (); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE::DomainDataManager::init - " + "Initial domain successfully parsed\n")); +#ifdef GEN_OSTREAM_OPS + std::ostringstream _stream; + _stream << *dmn << std::endl; + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE::DomainDataManager::init - " + "Contents of Domain:%s\n", + _stream.str ().c_str ())); +#endif + + current_domain_ = *dmn; + initial_domain_ = current_domain_; + + // initialize the provisioning domain + provisioned_data_ = initial_domain_; + + update_node_status (); + + call_all_node_managers (); +} + +int DAnCE::DomainDataManager::update_domain (const ::CORBA::StringSeq &, + const ::Deployment::Domain & domainSubset, + ::Deployment::DomainUpdateKind update_kind) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::update_domain"); + + // Update the subset of the domain which the above + // parameter corresponds to + + + //check the type of update .. + + switch (update_kind) + { + case ::Deployment::UpdateAll: + case ::Deployment::UpdateDynamic: + break; + case ::Deployment::Add: + add_to_domain (domainSubset); + break; + case ::Deployment::Delete: + delete_from_domain (domainSubset); + break; + default: + break; + } + + CORBA::ULong const size = current_domain_.node.length (); + + CORBA::ULong i; + for (i=0;i < size;i++) + { + if (!ACE_OS::strcmp (domainSubset.node[0].name , + current_domain_.node[i].name)) + { + // found a match + // for now overwrite the entire Node info ... + // but later , this has to be changed to overwrite + // only the specific part ... + current_domain_.node[i] = domainSubset.node[0]; + break; // finished job ...break + } + } + + if (i == size) + { + // thus the node is new .. add it to current_domain_ + // later change it ... + current_domain_.node.length (size+1); + current_domain_.node[size]=domainSubset.node[0]; + } + return 0; +} + +::Deployment::Domain* DAnCE::DomainDataManager::get_current_domain () +{ + DANCE_TRACE ("DAnCE::DomainDataManager::get_current_domain"); + + return new ::Deployment::Domain (provisioned_data_); +} + +::Deployment::Domain* DAnCE::DomainDataManager::get_initial_domain () +{ + DANCE_TRACE ("DAnCE::DomainDataManager::get_initial_domain"); + + return new ::Deployment::Domain (initial_domain_); +} + +int DAnCE::DomainDataManager::readin_domain_data () +{ + DANCE_TRACE ("DAnCE::DomainDataManager::readin_domain_data"); + + // here read in Domain data ... + // + return 0; +} + +int DAnCE::DomainDataManager::call_all_node_managers () +{ + DANCE_TRACE ("DAnCE::DomainDataManager::call_all_node_managers"); + +/* if ( this->deployment_config_.init ("NodeDetails.dat") == -1 ) + { + DANCE_ERROR (1, (LM_ERROR, + "TargetM (%P|%t) DomainDataManager.cpp -" + "DAnCE::DomainDataManager::call_all_node_managers -" + "ERROR while trying to initialize after reading " + "node details DAT file\n")); + return 0; + } + + CORBA::ULong const length = initial_domain_.node.length (); + + for (CORBA::ULong i=0;i < length;i++) + { + + ::Deployment::NodeManager_var node_manager; + + try + { + node_manager = + deployment_config_.get_node_manager + (initial_domain_.node[i].name.in ()); + } + catch (CORBA::Exception&) + { + DANCE_ERROR (1, (LM_ERROR, "DANCE::TM (%P|%t) DomainDataManager.cpp: " + "Error trying to contact NodeManager %s\n", + initial_domain_.node[i].name.in ())); + continue; + } + + + if (!CORBA::is_nil (node_manager.in ())) + { + Deployment::Logger_ptr log = + Deployment::Logger::_nil (); + ::Deployment::Domain sub_domain; + sub_domain.UUID = CORBA::string_dup("Node-Level-domain"); + sub_domain.label = CORBA::string_dup("Node-level-domain"); + sub_domain.sharedResource.length(0); + sub_domain.interconnect.length(0); + sub_domain.bridge.length(0); + sub_domain.infoProperty.length(0); + sub_domain.node.length (1); + sub_domain.node[0] = initial_domain_.node[i]; + try + { + node_manager->joinDomain (sub_domain, + target_mgr_.in (), + log); + } + catch (CORBA::Exception& ex) + { + DANCE_ERROR (1, (LM_ERROR , "TM::Error in calling Join Domain==\n")); + ex._tao_print_exception ( + "Exception caught in ""DomainDataManager::joinDomain"); + } + } + } +*/ + return 0; + +} + + +::Deployment::ResourceCommitmentManager_ptr DAnCE::DomainDataManager +::commitResources (const ::Deployment::ResourceAllocations &) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::commitResources"); + +/* + // commit the resources + // parse into the plan and commit resources ... + + // set the action value + current_action_ = commit; + + // temporary created to guard against exceptions + ::Deployment::Domain temp_provisioned_data = + provisioned_data_; + + for (CORBA::ULong i = 0;i < plan.instance.length ();i++) + { + for (CORBA::ULong j = 0;j < temp_provisioned_data.node.length ();j++) + { + if (!ACE_OS::strcmp (plan.instance[i].node.in () , + temp_provisioned_data.node[j].name.in ())) + { + try { + match_requirement_resource ( + plan.instance[i].deployedResource, + temp_provisioned_data.node[j].resource); + } + catch (::Deployment::ResourceCommitmentFailure& ex) + { + // catch the exception and add parameters + throw ex; + } + } + } + } + + // here commit the commitresources + provisioned_data_ = temp_provisioned_data; + */ + return 0; +} + + +void DAnCE::DomainDataManager:: +releaseResources (const ::Deployment::ResourceCommitmentManager_ptr) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::releaseResources"); + + // release the resources +/* + + // set the action value + current_action_ = release; + + for (CORBA::ULong i = 0;i < plan.instance.length ();i++) + { + for (CORBA::ULong j = 0;j < provisioned_data_.node.length ();j++) + { + if (!ACE_OS::strcmp (plan.instance[i].node.in () , + provisioned_data_.node[j].name.in ())) + { + match_requirement_resource ( + plan.instance[i].deployedResource, + provisioned_data_.node[j].resource); + + } + } + } +*/ +} + + +void DAnCE::DomainDataManager::match_requirement_resource ( + ::Deployment::InstanceResourceDeploymentDescriptions deployed, + ::Deployment::Resources & available) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::match_requirement_resource"); + + // here match the deployed to the available + + for (CORBA::ULong i = 0;i < deployed.length ();i++) + { + // for each deployed resource ....search the corresponding + // available resource + for (CORBA::ULong j = 0;j < available.length ();j++) + { + if (!ACE_OS::strcmp (deployed[i].requirementName, available[j].name)) + { + // search for the resourcename in the resourceType + for (CORBA::ULong k = 0;k < available[j].resourceType.length ();k++) + { + if (!ACE_OS::strcmp (deployed[i].resourceName, + available[j].resourceType[k])) + { + try { + match_properties (deployed[i].property, + available[j].property); + } + catch (::Deployment::ResourceCommitmentFailure& ex) + { + // catch the exception and add parameters + throw ex; + } + } + } + } + } + } + +} + +void DAnCE::DomainDataManager::match_properties ( + ::Deployment::Properties deployed, + ::Deployment::SatisfierProperties & available) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::match_properties"); + + bool property_found; + + for (CORBA::ULong i = 0;i < deployed.length ();i++) + { + property_found = false; + + for (CORBA::ULong j = 0;j < available.length ();j++) + { + if (!ACE_OS::strcmp (deployed[i].name , available[j].name)) + { + // check kind here ....and then subtract .... + // accordingly , ..this is complex ... better to write + // some specialised algo + // for now assuming Capacity .... + // and tk_double .... + + commit_release_resource (deployed[i] , available[j]); + property_found = true; + } + } // internal for .... + + // check if property was found or not + if (property_found == false) + { + // throw an error since property was not found in the Resource + ::Deployment::ResourceCommitmentFailure failure; + + failure.reason = CORBA::string_dup ("Property Not Found\n"); + failure.propertyName = CORBA::string_dup (deployed[i].name); + failure.propertyValue.length (0); + + throw failure; + } + } // outside for ... +} + +void DAnCE::DomainDataManager::commit_release_resource ( + ::Deployment::Property & deployed, + ::Deployment::SatisfierProperty & available) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::commit_release_resource"); + + if (current_action_ == commit) + { + + CORBA::Long required_d; + + if ((deployed.value >>= required_d) == false) + DANCE_ERROR (1, (LM_ERROR, "Failed to extract required amount\n")); + + CORBA::Long available_d; + + if ((available.value >>= available_d) == false) + DANCE_ERROR (1, (LM_ERROR, "failed to extract available amount\n")); + + if (available_d >= required_d) + { + available_d = available_d - required_d; + + available.value <<= available_d; + } + else + { + ::Deployment::ResourceCommitmentFailure failure; + + failure.reason = CORBA::string_dup ("Insufficient resources!"); + failure.propertyName = CORBA::string_dup (available.name); + failure.propertyValue.length (1); + failure.propertyValue[0] = available.value; + + throw failure; + } + } + else + { + //must be release + // @todo check return value of >>= + CORBA::Long required_d; + deployed.value >>= required_d; + CORBA::Long available_d; + available.value >>= available_d; + + available_d = available_d + required_d; + + // Should we check for bin > 100 ?????? + + available.value <<= available_d; + } +} + +void DAnCE::DomainDataManager::stop_monitors () +{ + DANCE_TRACE ("DAnCE::DomainDataManager::stop_monitors"); + + CORBA::ULong const length = initial_domain_.node.length (); + + for (CORBA::ULong i=0;i < length;i++) + { + ::Deployment::NodeManager_var node_manager; + + try + { +// node_manager = + //deployment_config_.get_node_manager +// (initial_domain_.node[i].name.in ()); + } + catch (const CORBA::Exception&) + { + DANCE_ERROR (1, (LM_ERROR, "DANCE::TM (%P|%t) DomainDataManager.cpp: " + "Error in get Node Manager from Deployment Config %s\n", + initial_domain_.node[i].name.in ())); + continue; + } + + if (!CORBA::is_nil (node_manager.in ())) + { + try + { + node_manager->leaveDomain (); + } + catch (CORBA::Exception& ex) + { + DANCE_ERROR (1, (LM_ERROR , "TM::Error in calling Leave Domain\n")); + ex._tao_print_exception ( + "Exception caught in ""DomainDataManager::leaveDomain"); + } + } + } + return; + +} + +int DAnCE::DomainDataManager::add_to_domain ( + const ::Deployment::Domain& domain) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::add_to_domain"); + + // here add the domain to the Domain + // right now use only a node + + // got to take care of the fact , that a node can be added , + // while it is still in the domain + + //iterate through the supplied domain + //for each node + // find it in the pristine domain + // and copy it back to the provisioned_domain + + for (CORBA::ULong i = 0;i < domain.node.length ();i++) + { + //find in the pristine domain + ::Deployment::Node a_node; + + if (!this->find_in_initial_domain (domain.node[i].name.in (), + a_node)) + continue; // dont know this node + + //check if already present + if (!this->find_in_provisioned_domain (domain.node[i].name.in (), + a_node)) + { + // add the node to the domain ... + provisioned_data_.node.length (provisioned_data_.node.length () + 1); + provisioned_data_.node[provisioned_data_.node.length () - 1] = + a_node; + } + } + + return 0; +} + +bool DAnCE::DomainDataManager::find_in_initial_domain (const char* node_name, + ::Deployment::Node& node) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::find_in_initial_domain"); + + for (CORBA::ULong i =0; + i < this->initial_domain_.node.length (); + i++) + { + if (ACE_OS::strcmp (node_name, this->initial_domain_.node[i].name.in ()) == 0) + { + node = this->initial_domain_.node[i]; + return true; + } + } + + // not found the node , return a node with an empty name + return false; +} + + +bool DAnCE::DomainDataManager::find_in_provisioned_domain (const char* node_name, + ::Deployment::Node& node) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::find_in_provisioned_domain"); + + for (CORBA::ULong i =0; + i < this->provisioned_data_.node.length (); + i++) + { + if (ACE_OS::strcmp (node_name, this->provisioned_data_.node[i].name.in ()) == 0) + { + node = this->provisioned_data_.node[i]; + return true; + } + } + + // not found the node , return a node with an empty name + return false; +} + +int DAnCE::DomainDataManager::delete_from_domain ( + const ::Deployment::Domain& domain) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::delete_from_domain"); + + // validate input + if (domain.node.length () == 0) + return 1; + + if (domain.node.length () > + this->provisioned_data_.node.length ()) + return 0; + + //algo : parse through the provisioned_data + // for each node , find in the deleted domain list + // if not found add it to the updated nodes list + + ::Deployment::Nodes updated_nodes; + bool found = false; + + for (CORBA::ULong j = 0; + j < this->provisioned_data_.node.length (); + j++) + { + found = false; + + for (CORBA::ULong i = 0;i < domain.node.length ();i++) + { + if (ACE_OS::strcmp (domain.node[i].name.in (), + this->provisioned_data_.node[j].name.in ()) == 0) + { + found = true; + break; // found the node + } + } + if (found) + continue; + + // not found in the deleted list + + // update the length of the list + updated_nodes.length (updated_nodes.length () + 1); + + // copy the node info + updated_nodes[updated_nodes.length () - 1] = + this->provisioned_data_.node[j]; + + } // for provisioned_data + + // here update the provisioned data + this->provisioned_data_.node = updated_nodes; + + return 1; +} + +int DAnCE::DomainDataManager::intimate_planner ( + const ::Deployment::Domain& domain) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::intimate_planner"); + + // use the connection with the planner and get a reference to the planner + // make a call top the planner + Deployment::Domain d = domain; + return 0; + +} + +bool DAnCE::DomainDataManager::update_node_status () +{ + DANCE_TRACE ("DAnCE::DomainDataManager::update_node_status"); + + // update the node status here ... + return 0; +} + +void DAnCE::DomainDataManager::commitResourceAllocation ( + const ::Deployment::ResourceAllocations & resources) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::commitResourceAllocation"); + + // commit the resources + // parse into the plan and commit resources ... + + // set the action value + current_action_ = commit; + + this->commit_release_RA (resources); +} + +void DAnCE::DomainDataManager::releaseResourceAllocation ( + const ::Deployment::ResourceAllocations & resources) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::releaseResourceAllocation"); + + // set the action value + current_action_ = release; + + this->commit_release_RA (resources); +} + + +int DAnCE::DomainDataManager::commit_release_RA (const ::Deployment::ResourceAllocations& resources) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::commit_release_RA"); + + // temporary used to guard against exceptions + temp_provisioned_data_ = provisioned_data_; + + + for (CORBA::ULong i = 0;i < resources.length ();i++) + { + try + { + ::Deployment::Resource& res = find_resource (resources[i]); + + match_properties (resources[i].property , res.property); + } + catch (::Deployment::ResourceCommitmentFailure& ex) + { + // catch the exception and add parameters + DANCE_ERROR (1, (LM_ERROR, "Caught the Exception in releaseResourceAllocation\n")); + ex.index = i; + throw ex; + } + } + + // here commit the commitresources + provisioned_data_ = temp_provisioned_data_; + + return 0; +} + +::Deployment::Resource& +DAnCE::DomainDataManager::find_resource ( + const ::Deployment::ResourceAllocation& resource) +{ + DANCE_TRACE ("DAnCE::DomainDataManager::find_resource"); + + // for now search the resource in the Node sequence; Later need + // to add it to the Bridges and Interconnects too according to the + // spec + for (CORBA::ULong j = 0;j < this->temp_provisioned_data_.node.length ();j++) + { + if (!ACE_OS::strcmp (resource.elementName.in () , + this->temp_provisioned_data_.node[j].name.in ())) + { + for (CORBA::ULong k =0; + k < this->temp_provisioned_data_.node[j].resource.length (); + k++) + { + if (!ACE_OS::strcmp (this->temp_provisioned_data_.node[j].resource[k].name.in (), + resource.resourceName.in ())) + return this->temp_provisioned_data_.node[j].resource[k];//resource found here, return + } + + // resource not found + throw ::Deployment::ResourceCommitmentFailure ().reason = CORBA::string_dup ("Resource Not Found\n"); + } + } + throw ::Deployment::ResourceCommitmentFailure ().reason = CORBA::string_dup ("Resource Not Found\n"); +} diff --git a/modules/CIAO/DAnCE/TargetManager/DomainDataManager.h b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.h new file mode 100644 index 00000000000..32ed5c9b70c --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.h @@ -0,0 +1,256 @@ +// $Id$ +//=============================================================== +/** + * @file DomainDataManager.h + * + * @brief Maintains the Domain Information + * + * It contains the entire Domain information. Both the + * initial domain as well as the current available domain. + * + * @author Nilabja Roy nilabjar@dre.vanderbilt.edu + */ +//=============================================================== +#ifndef DOMAIN_DATA_MGRH +#define DOMAIN_DATA_MGRH + +//#include "TargetManagerC.h" +#include "Deployment/Deployment_TargetDataC.h" +#include "DAnCE/DomainApplicationManager/Node_Locator.h" + +namespace DAnCE +{ + /** + * @class DomainDataManager + * + * @brief Responsible for maintaining the Domain Information + * + * It maintains both the Current Domain Information as well + * as the Initial domain at full capacity. + */ + class DomainDataManager + { + + public : + /** + * @brief This function is called by the other classes to update + * current domain data. + * @param elements The string sequence of elements + * being updated + * @param domainSubset The subset of the actual Domain to be updated + * @param updateKind Specifies the update type eg. add, delete, update + * + */ + int update_domain (const ::CORBA::StringSeq & elements, + const ::Deployment::Domain & domainSubset, + ::Deployment::DomainUpdateKind updateKind); + /** + * @brief This function is called from the Executor code + * to get the Original Domain data. + * @return Domain* The Initial Domain + * + */ + ::Deployment::Domain* get_initial_domain (); + + /** + * @brief This function is called from the Executor code + * to get the Current Domain data. + * @return Domain* The Current Domain + */ + ::Deployment::Domain* get_current_domain (); + + /** + * @brief returns the sequence of node managers + * object reference + */ + ::Deployment::ResourceCommitmentManager_ptr + commitResources (const ::Deployment::ResourceAllocations & resources); + + /** + * @brief The function releases the resources held by a plan + */ + void releaseResources (const ::Deployment::ResourceCommitmentManager_ptr manager); + + /** + * The node manager in turn stops the monitor + * @brief The function makes a call on the leaveDomain on the + * NodeManager + */ + void stop_monitors (); + + /** + * @brief The function allocates resources specified in the + * parameter + * + * This function is for the ResourceCommitmentManager + * + */ + void commitResourceAllocation ( + const ::Deployment::ResourceAllocations & resources); + + /** + * @brief The function releases resources specified in the + * parameter + * + * This function is for the ResourceCommitmentManager + * + */ + void releaseResourceAllocation ( + const ::Deployment::ResourceAllocations & resources); + + /** + * @brief Initializing DomainDataManager + * + * This function inits the DomainDataManager + * + */ + void init (CORBA::ORB_ptr orb, + ::Deployment::TargetManager_ptr target, + const ACE_TCHAR *domain_name); + + private: + + /** + * @brief It will read the initial Domain data from + * XML files. + */ + int readin_domain_data (); + + /** + * @brief Match the deployed resources to the + * available resource + */ + void match_requirement_resource ( + ::Deployment::InstanceResourceDeploymentDescriptions deployed, + ::Deployment::Resources& available + ); + + /** + * @brief Match the properties of a Requirement to the + * properties of available resource + * @param deployed The deployed Properties + * @param available The available Properties + */ + void match_properties ( + ::Deployment::Properties deployed, + ::Deployment::SatisfierProperties& available); + + + /// The different actiona that can take place + enum Action {commit , release}; + + /** + * @brief Either commits or releases the given resource + * based on the current Action set. + * @param deployed ::Deployment::Property is the resource + * to be commited/released + * @param available ::Deployment::SatisfierProperty is the + * available resource from which committed/released. + * @exception ::Deployment::ResourceNotAvailable thrown + * when the deployed resources exceeds + * the available resource. + */ + void commit_release_resource ( ::Deployment::Property & deployed, + ::Deployment::SatisfierProperty & available); + + /** + * @brief This function calls all NM and gives them + * the sub-domain + */ + int call_all_node_managers (); + + /** + * @brief This function add new elements to the + * already existing domain + * + * @param domain Deployment::Domain contians the new + * elements + */ + int add_to_domain (const ::Deployment::Domain& domain); + + /** + * @brief This function deletes elements from the domain + * + * @param domain ::Deployment::Domain contains the new elements + * in the domain + */ + int delete_from_domain (const ::Deployment::Domain& domain); + + /** + * @brief This function intimates the planner about a domain + * change + * + * @param domain ::Deployment::Domain contains the new elements + * in the domain + */ + int intimate_planner (const ::Deployment::Domain& domain); + + /** + * @brief This function finds a new node in the initial_domain + * + * @param node The name of the node which is to be searched + */ + + bool find_in_initial_domain (const char* node_name, + ::Deployment::Node& node); + /** + * @brief This function finds a new node in the proviosiond_domain + * + * @param node The name of the node which is to be searched + */ + bool find_in_provisioned_domain (const char* node_name, + ::Deployment::Node& node); + + /** + * @brief updates the node status by reading it from a file + */ + bool update_node_status (); + + /** + * @function find_resource + * @brief It finds the Resource structure which is respresents the + * ResourceAllocation + */ + ::Deployment::Resource& find_resource ( + const ::Deployment::ResourceAllocation& resource); + + int commit_release_RA ( + const ::Deployment::ResourceAllocations& resources); + + /// The ORB pointer + CORBA::ORB_var orb_; + + /// The Deployment Configuration + // CIAO::Deployment_Configuration deployment_config_; + + /// The Initial Domain - contains resources + /// at total capacity + ::Deployment::Domain initial_domain_; + + + /// The Current Domain - contains resources + /// at current capacity + ::Deployment::Domain current_domain_; + + /// The Target Manager Context + ::Deployment::TargetManager_var target_mgr_; + + /** + * The static provisioned Domain data + */ + ::Deployment::Domain provisioned_data_; + + /// temporary domain used in commit/release to + /// guard against exceptions + ::Deployment::Domain temp_provisioned_data_; + + /// The current action + Action current_action_; + }; + + typedef ACE_Singleton + DomainDataManager_Singleton; +#define DOMAIN_DATA_MANAGER DomainDataManager_Singleton::instance () +} // CIAO + +#endif /* DOMAIN_DATA_MGRH */ diff --git a/modules/CIAO/DAnCE/TargetManager/DomainEvents.idl b/modules/CIAO/DAnCE/TargetManager/DomainEvents.idl new file mode 100644 index 00000000000..77624dbbd23 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/DomainEvents.idl @@ -0,0 +1,25 @@ +/** + * @file DomainEvents.idl + * @brief Contains Events in the Domain + * + * @author Nilabja R + * + * $Id$ + */ + +#ifndef DOMAIN_CHANGE_IDL +#define DOMAIN_CHANGE_IDL + +#include "DAnCE/Deployment/Deployment_TargetManager.idl" +#include "ccm/CCM_Events.idl" + +module CIAO +{ + eventtype Domain_Changed_Event + { + public ::Deployment::Domain changes; + public ::Deployment::DomainUpdateKind change_kind; + }; +}; + +#endif diff --git a/modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.cpp b/modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.cpp new file mode 100644 index 00000000000..1b43b6e22bd --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.cpp @@ -0,0 +1,61 @@ +// $Id$ +// +#include "DomainDataManager.h" +#include "ResourceCommitmentManager.h" +#include "DAnCE/Logger/Log_Macros.h" + +// Implementation skeleton constructor +DAnCE::ResourceCommitmentManager_i::ResourceCommitmentManager_i (void) +{ + DANCE_TRACE ("DAnCE::ResourceCommitmentManager_i"); +} + +// Implementation skeleton destructor +DAnCE::ResourceCommitmentManager_i::~ResourceCommitmentManager_i (void) +{ + DANCE_TRACE ("DAnCE::~ResourceCommitmentManager_i"); +} + +void DAnCE::ResourceCommitmentManager_i::commitResources ( + const ::Deployment::ResourceAllocations& resources) +{ + DANCE_TRACE ("DAnCE::ResourceCommitmentManager_i::commitResources"); + + DOMAIN_DATA_MANAGER->commitResourceAllocation (resources); + + // commit succesful .. add to commited resource + this->add_to_commited_resource (resources); + return; +} + +void DAnCE::ResourceCommitmentManager_i::releaseResources ( + const ::Deployment::ResourceAllocations & resources) +{ + DANCE_TRACE ("DAnCE::ResourceCommitmentManager_i::releaseResources"); + + ::Deployment::ResourceAllocations res; + + // if the resources set is null , use the already allocated resources .. + if (resources.length () == 0) + res = this->resources_; + else + res = resources; + + DOMAIN_DATA_MANAGER->releaseResourceAllocation (res); + return; +} + +int DAnCE::ResourceCommitmentManager_i::add_to_commited_resource ( + ::Deployment::ResourceAllocations res) +{ + DANCE_TRACE ("DAnCE::ResourceCommitmentManager_i::add_to_commited_resource"); + + CORBA::ULong const current_length = this->resources_.length (); + + this->resources_.length (current_length + res.length ()); + + for (CORBA::ULong i = 0;i < res.length ();i++) + this->resources_[current_length + i] = res[i]; + + return 0; +} diff --git a/modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.h b/modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.h new file mode 100644 index 00000000000..813dcd65bd8 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/ResourceCommitmentManager.h @@ -0,0 +1,63 @@ +// $Id$ +// +/** + * @file ResourceCommitmentManager.h + * + * @brief This file declares the ResourceCommitmentManager class + * + * This class acts as the servant of the interface + * ResourceCommitmentManager + */ +#ifndef DEPLOYMENT_RESOURCECOMMITMENTMANAGERI_H_ +#define DEPLOYMENT_RESOURCECOMMITMENTMANAGERI_H_ + +#include "DAnCE/Deployment/Deployment_ResourceCommitmentManagerS.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace DAnCE +{ + + class ResourceCommitmentManager_i + : public virtual POA_Deployment::ResourceCommitmentManager + { + public: + // Constructor + ResourceCommitmentManager_i (void); + + // Destructor + virtual ~ResourceCommitmentManager_i (void); + + /** + * @brief Commits the resources + * + * This function makes a call to the DomainDataManager in order + * to commit the resources mentioned in the ResourceAllocation + * sequence. If the resource cannot be allocated throws a + * ResourceCommitmentFailed exception + */ + virtual + void commitResources ( + const ::Deployment::ResourceAllocations& resources); + + virtual + void releaseResources ( + const ::Deployment::ResourceAllocations & resources); + + private: + + /** + * @brief This function adds the res to already commited resources. + * This is to be called from within commitResources + */ + int add_to_commited_resource (::Deployment::ResourceAllocations res); + + /// The commited resource + ::Deployment::ResourceAllocations resources_; + }; + +} + +#endif /* DEPLOYMENT_RESOURCECOMMITMENTMANAGERI_H_ */ diff --git a/modules/CIAO/DAnCE/TargetManager/TM_Client.mpc b/modules/CIAO/DAnCE/TargetManager/TM_Client.mpc new file mode 100644 index 00000000000..97b3b760ce9 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TM_Client.mpc @@ -0,0 +1,22 @@ +// $Id$ + +// Client.mpc,v 1.6 2005/02/18 09:07:06 jwillemsen Exp + +project(TMClient): ccm_stub, dance_deployment_stub, ciao_targetmanager_stub, ciao_config_handlers { + requires += dummy_label + IDL_Files { + } + + Source_Files { + CmpClient.cpp + } + + Header_Files { + } + + Inline_Files { + } + + Template_Files { + } +} diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager.idl b/modules/CIAO/DAnCE/TargetManager/TargetManager.idl new file mode 100644 index 00000000000..adc97215394 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager.idl @@ -0,0 +1,32 @@ +// $Id$ + +/** + * @file TargetManager.idl + * @brief TargetManager interface defintion + * + * @author Nilabja R + */ + +#ifndef TARGETMGR_IDL +#define TARGETMGR_IDL + +#include "ccm/Components.idl" +#include "DAnCE/Deployment/Deployment_PlanError.idl" +#include "DAnCE/TargetManager/TargetManagerExt.idl" +#include "DAnCE/TargetManager/DomainEvents.idl" + +module CIAO +{ + component TargetManagerImpl + { + provides ::Deployment::TargetManager targetMgr; + + publishes Domain_Changed_Event changes; + }; + + home TargetManagerHome manages TargetManagerImpl + { + }; +}; + +#endif diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager.mpc b/modules/CIAO/DAnCE/TargetManager/TargetManager.mpc new file mode 100644 index 00000000000..abc35992943 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager.mpc @@ -0,0 +1,71 @@ +// $Id$ + +project (DAnCE_TargetManagerDaemon_IDL) : ciaoidldefaults { + custom_only = 1 + + idlflags += -Gxhst -Gxhsk + idlflags += -Wb,stub_export_macro=TARGETMANAGERDAEMON_STUB_Export \ + -Wb,stub_export_include=TargetManagerDaemon_stub_export.h \ + -Wb,skel_export_macro=TARGETMANAGERDAEMON_SVNT_Export \ + -Wb,skel_export_include=TargetManagerDaemon_svnt_export.h + + IDL_Files { + DAnCE_TargetManagerDaemon.idl + } +} + +project(DAnCE_TargetManagerDaemon_stub) : dance_lib, dance_targetmanager_stub { + sharedname = DAnCE_TargetManagerDaemon_stub + dynamicflags = TARGETMANAGERDAEMON_STUB_BUILD_DLL + after += DAnCE_TargetManagerDaemon_IDL + IDL_Files { + } + + Source_Files { + DAnCE_TargetManagerDaemonC.cpp + } +} + +project(DAnCE_TargetManager_Impl) : dance_lib, ciao_config_handlers, naming, iortable, utils, dance_nodemanager_stub, dance_targetmanager_skel, dance_logger { + sharedname = DAnCE_TargetManager_Impl + libs += DAnCE_TargetManagerDaemon_stub DAnCE_TargetManagerDaemon_svnt + after += DAnCE_TargetManagerDaemon_stub DAnCE_TargetManagerDaemon_svnt + dynamicflags = DANCE_TARGETMANAGER_IMPL_BUILD_DLL TARGETMANAGER_MODULE_BUILD_DLL + + Source_Files { + DomainDataManager.cpp + ResourceCommitmentManager.cpp + TargetManager_Impl.cpp + Target_Manager_Module.cpp + } + + IDL_Files { + } +} + +project(DAnCE_TargetManagerDaemon_svnt) : dance_lib, dance_deployment_svnt, \ + dance_targetmanager_stub, dance_targetmanager_skel, ciao_config_handlers { + sharedname = DAnCE_TargetManagerDaemon_svnt + + libs += DAnCE_TargetManagerDaemon_stub + after += DAnCE_TargetManagerDaemon_stub + + dynamicflags = TARGETMANAGERDAEMON_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + DAnCE_TargetManagerDaemonS.cpp + } +} + +project (DAnCE_TargetManager_Exec) : iortable, utils, naming, dance_logger, dance_tm_daemon, dance_nodemanager_stub, dance_targetmanager, dance_exe { + exename = dance_target_manager + IDL_Files { + } + + Source_Files { + Target_Manager_Exec.cpp + } +} diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl b/modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl new file mode 100644 index 00000000000..934314b4613 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl @@ -0,0 +1,84 @@ +// $Id$ + +/** + * @file TargetManagerExt.idl + * + * @brief The Extensions to the TM interface for ARMS demo + * + * @author Nilabja R + * @author Nishanth Shankaran + * + * This file declares a interface which will be implemented as + * a facet by the TargetManager component + */ + +#include "DAnCE/Interfaces/NodeManagerDaemon.idl" + +module CIAO +{ + /** + * @struct Cpu_Info + * @brief Consists of individual host-cpu info + */ + struct Host_Info + { + string hostname; + double cpu_util; + }; + + /// The sequence of CPU infos + typedef sequence Host_Infos; + + /** + * @struct Component_Cpu_Util + * @brief Contains a component CPU Util + */ + struct Component_Info + { + string component_name; + double cpu_util; + }; + + /// The sequence of component cpu utilization + typedef sequence Component_Infos; + + + /** + * @struct Host_NodeManager + * @brief Contains the node manager to host reference + */ + struct Host_NodeManager + { + /// host name + string host_; + + /// the node manager IOR + ::Deployment::NodeManager node_mgr_; + }; + + /// Sequence of NodeManager. + typedef sequence Host_NodeManager_seq; + + /** + * @interface TargetManagerExt + * @brief The Target Manager Extension + * + * Contains the interface used by the RACE + * controller. + */ + interface TargetManagerExt + { + /// Returns the pid in which a component runs + long get_pid (in string component_uuid); + + /// Returns the cpu usage for each host in the + /// last cycle + Host_Infos get_host_cpu (); + + /// Return the detail of the components + Component_Infos get_component_cpu (); + + /// Returns the OR of the Node managers + Host_NodeManager_seq get_all_node_managers (); + }; +}; diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.cpp b/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.cpp new file mode 100644 index 00000000000..d70b6c85a55 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.cpp @@ -0,0 +1,62 @@ +// -*- C++ -*- +// +// $Id$ + +#include "TargetManager_Impl.h" +#include "DomainDataManager.h" + +namespace DAnCE +{ +TargetManagerDaemon_i::TargetManagerDaemon_i (CORBA::ORB_ptr orb) + : orb_ (::CORBA::ORB::_duplicate (orb)) +{ +} + +// Implementation skeleton destructor +TargetManagerDaemon_i::~TargetManagerDaemon_i (void) +{ +} + +void TargetManagerDaemon_i::init (const ACE_TCHAR *file) +{ + DAnCE::DOMAIN_DATA_MANAGER->init (this->orb_.in (), + this->_this (), + file); +} + +void TargetManagerDaemon_i::shutdown (void) +{ +} + +::Deployment::Domain * TargetManagerDaemon_i::getAllResources (void) +{ + return DAnCE::DOMAIN_DATA_MANAGER->get_initial_domain (); +} + +::Deployment::Domain * TargetManagerDaemon_i::getAvailableResources (void) +{ + return DAnCE::DOMAIN_DATA_MANAGER->get_current_domain (); +} + +::Deployment::ResourceCommitmentManager_ptr TargetManagerDaemon_i::createResourceCommitment ( + const ::Deployment::ResourceAllocations & resources) +{ + return DAnCE::DOMAIN_DATA_MANAGER->commitResources (resources); +} + +void TargetManagerDaemon_i::destroyResourceCommitment ( + ::Deployment::ResourceCommitmentManager_ptr manager) +{ + return DAnCE::DOMAIN_DATA_MANAGER->releaseResources (manager); +} + +void TargetManagerDaemon_i::updateDomain ( + const ::CORBA::StringSeq & elements, + const ::Deployment::Domain & domainSubset, + ::Deployment::DomainUpdateKind updateKind) +{ + DAnCE::DOMAIN_DATA_MANAGER->update_domain (elements, domainSubset, updateKind); +} + + +} diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.h new file mode 100644 index 00000000000..ba8fd940e06 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// +// $Id$ + + +#ifndef TARGETMANAGERDAEMONI_H_ +#define TARGETMANAGERDAEMONI_H_ + +#include "DAnCE_TargetManagerDaemonS.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "TargetManager_Impl_export.h" + +namespace DAnCE +{ +class DAnCE_TargetManager_Impl_Export TargetManagerDaemon_i + : public virtual POA_DAnCE::TargetManagerDaemon +{ +public: + /// Constructor + TargetManagerDaemon_i (CORBA::ORB_ptr orb); + + /// Destructor + virtual ~TargetManagerDaemon_i (void); + + void init (const ACE_TCHAR *file); + + virtual + void shutdown (void); + + virtual + ::Deployment::Domain * getAllResources (void); + + virtual + ::Deployment::Domain * getAvailableResources (void); + + virtual + ::Deployment::ResourceCommitmentManager_ptr createResourceCommitment ( + const ::Deployment::ResourceAllocations & resources); + + virtual + void destroyResourceCommitment ( + ::Deployment::ResourceCommitmentManager_ptr manager); + + virtual + void updateDomain ( + const ::CORBA::StringSeq & elements, + const ::Deployment::Domain & domainSubset, + ::Deployment::DomainUpdateKind updateKind); + + private: + CORBA::ORB_var orb_; +}; +} + + +#endif /* TARGETMANAGERDAEMONI_H_ */ + diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl_export.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl_export.h new file mode 100644 index 00000000000..ab728ccc8bd --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_Impl_export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DAnCE_TargetManager_Impl +// ------------------------------ +#ifndef DANCE_TARGETMANAGER_IMPL_EXPORT_H +#define DANCE_TARGETMANAGER_IMPL_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_TARGETMANAGER_IMPL_HAS_DLL) +# define DANCE_TARGETMANAGER_IMPL_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_TARGETMANAGER_IMPL_HAS_DLL */ + +#if !defined (DANCE_TARGETMANAGER_IMPL_HAS_DLL) +# define DANCE_TARGETMANAGER_IMPL_HAS_DLL 1 +#endif /* ! DANCE_TARGETMANAGER_IMPL_HAS_DLL */ + +#if defined (DANCE_TARGETMANAGER_IMPL_HAS_DLL) && (DANCE_TARGETMANAGER_IMPL_HAS_DLL == 1) +# if defined (DANCE_TARGETMANAGER_IMPL_BUILD_DLL) +# define DAnCE_TargetManager_Impl_Export ACE_Proper_Export_Flag +# define DANCE_TARGETMANAGER_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_TARGETMANAGER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_TARGETMANAGER_IMPL_BUILD_DLL */ +# define DAnCE_TargetManager_Impl_Export ACE_Proper_Import_Flag +# define DANCE_TARGETMANAGER_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_TARGETMANAGER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_TARGETMANAGER_IMPL_BUILD_DLL */ +#else /* DANCE_TARGETMANAGER_IMPL_HAS_DLL == 1 */ +# define DAnCE_TargetManager_Impl_Export +# define DANCE_TARGETMANAGER_IMPL_SINGLETON_DECLARATION(T) +# define DANCE_TARGETMANAGER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_TARGETMANAGER_IMPL_HAS_DLL == 1 */ + +// Set DANCE_TARGETMANAGER_IMPL_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_TARGETMANAGER_IMPL_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_TARGETMANAGER_IMPL_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_TARGETMANAGER_IMPL_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_TARGETMANAGER_IMPL_NTRACE */ + +#if (DANCE_TARGETMANAGER_IMPL_NTRACE == 1) +# define DANCE_TARGETMANAGER_IMPL_TRACE(X) +#else /* (DANCE_TARGETMANAGER_IMPL_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_TARGETMANAGER_IMPL_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_TARGETMANAGER_IMPL_NTRACE == 1) */ + +#endif /* DANCE_TARGETMANAGER_IMPL_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp new file mode 100644 index 00000000000..728bbfb3744 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp @@ -0,0 +1,251 @@ +// $Id$ +#include "TargetManager_exec.h" +#include "Config_Handlers/DD_Handler.h" +#include "Config_Handlers/DnC_Dump.h" + +#include "DomainEventsC.h" + +#include "ResourceCommitmentManager.h" + +namespace CIAO_CIAO_TargetManagerImpl_Impl +{ + //================================================================== + // Facet Executor Implementation Class: TargetManager_exec_i + //================================================================== + + TargetManager_exec_i:: + TargetManager_exec_i (TargetManagerImpl_exec_i* exec , + CORBA::ORB_ptr orb) + : exec_ (exec), + orb_ (::CORBA::ORB::_duplicate (orb)) + { + // The DomainDataManager created here ... + + // get its own obj ref , then call + ::Deployment::TargetManager_var target = this->exec_->get_targetMgr (); + + // Create Domain Data here + + CIAO::DOMAIN_DATA_MANAGER->init (orb_.in (), target.in ()); + } + + TargetManager_exec_i::~TargetManager_exec_i (void) + { + } + + // Operations from ::Deployment::TargetManager + + ::Deployment::Domain * + TargetManager_exec_i::getAllResources () + { + return CIAO::DOMAIN_DATA_MANAGER->get_initial_domain (); + } + + ::Deployment::Domain * + TargetManager_exec_i::getAvailableResources () + { + return CIAO::DOMAIN_DATA_MANAGER->get_current_domain (); + } + + ::Deployment::ResourceCommitmentManager_ptr + TargetManager_exec_i::commitResources ( + const ::Deployment::ResourceAllocations & resources) + { + return CIAO::DOMAIN_DATA_MANAGER->commitResources (resources); + } + + void + TargetManager_exec_i::releaseResources ( + ::Deployment::ResourceCommitmentManager_ptr manager) + { + return CIAO::DOMAIN_DATA_MANAGER->releaseResources (manager); + } + + void + TargetManager_exec_i::updateDomain ( + const ::CORBA::StringSeq & elements , + const ::Deployment::Domain & domainSubset , + ::Deployment::DomainUpdateKind updateKind) + { + // Your code here. + CIAO::DOMAIN_DATA_MANAGER->update_domain ( + elements, + domainSubset, + updateKind); + + // here tell the planner about the changes + + // first get the node names which have failed ... + // assuming nodes to only fail , for now + + if (updateKind == ::Deployment::Delete || + updateKind == ::Deployment::Add) + { + CIAO::Domain_Changed_Event_var changed_event = + new OBV_CIAO::Domain_Changed_Event (); + + ::Deployment::Domain_var temp_domain = + new ::Deployment::Domain (domainSubset); + + changed_event->changes (temp_domain); + changed_event->change_kind (updateKind); + this->exec_->context_->push_changes (changed_event); + } + + } + + ::Deployment::ResourceCommitmentManager_ptr + TargetManager_exec_i::createResourceCommitment ( + const ::Deployment::ResourceAllocations& manager) + { + + CIAO::ResourceCommitmentManager_i *commit_servant = + new CIAO::ResourceCommitmentManager_i (); + + // Standard owner transfer mechanisms. + // + PortableServer::ServantBase_var safe_daemon (commit_servant); + + commit_servant->commitResources (manager); + + Deployment::ResourceCommitmentManager_var mgrv = + commit_servant->_this (); + + return mgrv._retn (); + } + + void + TargetManager_exec_i::destroyResourceCommitment ( + ::Deployment::ResourceCommitmentManager_ptr manager) + { + ::Deployment::ResourceAllocations res; + res.length (0); + manager->releaseResources (res); + return; + } + //================================================================== + // Component Executor Implementation Class: TargetManagerImpl_exec_i + //================================================================== + + TargetManagerImpl_exec_i::TargetManagerImpl_exec_i (void) + : exec_object_ (0) + { + } + + TargetManagerImpl_exec_i::~TargetManagerImpl_exec_i (void) + { + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + ::Deployment::CCM_TargetManager_ptr + TargetManagerImpl_exec_i::get_targetMgr () + { + // Your code here. + + if (CORBA::is_nil (this->exec_object_.in ())) + { + this->exec_object_ = new TargetManager_exec_i(this, + context_->_get_orb()); + } + + return ::Deployment::CCM_TargetManager::_duplicate (this->exec_object_.in ()); + } + + // Operations from Components::SessionComponent + + void + TargetManagerImpl_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = ::CIAO::CCM_TargetManagerImpl_Context::_narrow (ctx); + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + } + + void + TargetManagerImpl_exec_i::configuration_complete () + { + // Your code here. + } + + void + TargetManagerImpl_exec_i::ccm_activate () + { + // Your code here. + this->get_targetMgr (); + } + + void + TargetManagerImpl_exec_i::ccm_passivate () + { + // Your code here. + } + + void + TargetManagerImpl_exec_i::ccm_remove () + { + // Your code here. + + //CIAO::DomainDataManager::get_data_manager ()->stop_monitors (); + + return; + } + + + //================================================================== + // Home Executor Implementation Class: TargetManagerHome_exec_i + //================================================================== + + TargetManagerHome_exec_i::TargetManagerHome_exec_i (void) + { + } + + TargetManagerHome_exec_i::~TargetManagerHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + TargetManagerHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + TargetManagerImpl_exec_i, + CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" TARGETMANAGER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_CIAO_TargetManagerHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + TargetManagerHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h new file mode 100644 index 00000000000..cc3190d1427 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h @@ -0,0 +1,140 @@ +// $Id$ +//=============================================================== +/** + * @file TargetManager_exec.h + * + * @brief TargetManager Executor code + * + * @author Nilabja Roy nilabjar@dre.vanderbilt.edu + */ +//=============================================================== + +#ifndef CIAO_TARGETMANAGER_EXEC_H +#define CIAO_TARGETMANAGER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "TargetManager_svnt.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "TargetManager_exec_export.h" +#include "tao/LocalObject.h" +#include "DomainDataManager.h" +#include "TargetManagerEC.h" + +/** + * TargetManager Executor namespace + */ +namespace CIAO_CIAO_TargetManagerImpl_Impl +{ + class TARGETMANAGER_EXEC_Export TargetManagerImpl_exec_i + : public virtual TargetManagerImpl_Exec, + public virtual ::CORBA::LocalObject + { + public: + TargetManagerImpl_exec_i (void); + virtual ~TargetManagerImpl_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + virtual ::Deployment::CCM_TargetManager_ptr + get_targetMgr (); + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + virtual void configuration_complete (); + + public: + /// The service context pointer + ::CIAO::CCM_TargetManagerImpl_Context_var context_; + + /// The exec Object + ::Deployment::CCM_TargetManager_var exec_object_; + }; + + class TARGETMANAGER_EXEC_Export TargetManager_exec_i + : public virtual ::Deployment::CCM_TargetManager, + public virtual ::CORBA::LocalObject + { + public: + TargetManager_exec_i (TargetManagerImpl_exec_i* exec, + CORBA::ORB_ptr orb); + virtual ~TargetManager_exec_i (void); + + // Operations from ::Deployment::TargetManager + + virtual ::Deployment::Domain * getAllResources (); + + virtual ::Deployment::Domain * getAvailableResources (); + + virtual ::Deployment::ResourceCommitmentManager_ptr + commitResources (const ::Deployment::ResourceAllocations & resources); + + virtual void releaseResources (::Deployment::ResourceCommitmentManager_ptr manager); + + virtual void + updateDomain ( + const ::CORBA::StringSeq & elements, + const ::Deployment::Domain & domainSubset, + ::Deployment::DomainUpdateKind updateKind); + + virtual ::Deployment::ResourceCommitmentManager_ptr + createResourceCommitment (const ::Deployment::ResourceAllocations& manager); + + virtual void + destroyResourceCommitment ( + ::Deployment::ResourceCommitmentManager_ptr resources); + + private: + TargetManagerImpl_exec_i * exec_; + + /// The CORBA ORB ... + CORBA::ORB_var orb_; + }; + + class TARGETMANAGER_EXEC_Export TargetManagerHome_exec_i + : public virtual TargetManagerHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + TargetManagerHome_exec_i (void); + virtual ~TargetManagerHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" TARGETMANAGER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_CIAO_TargetManagerHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_TARGETMANAGER_EXEC_H */ diff --git a/modules/CIAO/DAnCE/TargetManager/Target_Manager_Exec.cpp b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Exec.cpp new file mode 100644 index 00000000000..347a0063483 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Exec.cpp @@ -0,0 +1,6 @@ +// $Id$ +#include "Target_Manager_Module.h" + +#define DANCE_MODULE_MAIN_CLASS_NAME DAnCE_TargetManager_Module +#include "Deployment/Module_Main.h" + diff --git a/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.cpp b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.cpp new file mode 100644 index 00000000000..4860dde55ea --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.cpp @@ -0,0 +1,345 @@ +// -*- C++ -*- +// $Id$ + +#include "Target_Manager_Module.h" +#include "ace/Get_Opt.h" +#include "ace/OS_NS_stdio.h" +#include "ace/Task.h" +#include "ace/Atomic_Op.h" +#include "tao/IORTable/IORTable.h" +#include "tao/Utils/PolicyList_Destroyer.h" +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/orbsvcs/Naming/Naming_Loader.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/Deployment/DAnCE_PropertiesC.h" + +#include "TargetManager_Impl.h" + +ACE_RCSID (DAnCE, + Repository_Manager_Module, + "$Id$") + +namespace DAnCE +{ + namespace Target_Manager + { + bool + write_IOR (const ACE_TCHAR * ior_file_name, const char* ior) + { + FILE* ior_output_file_ = + ACE_OS::fopen (ior_file_name, ACE_TEXT("w")); + + if (ior_output_file_) + { + ACE_OS::fprintf (ior_output_file_, + "%s", + ior); + ACE_OS::fclose (ior_output_file_); + return true; + } + return false; + } + } +} + +DAnCE_TargetManager_Module::DAnCE_TargetManager_Module (void) +{ + //DANCE_TRACE("DAnCE_TargetManager_Module::DAnCE_TargetManager_Module"); +} + +DAnCE_TargetManager_Module::~DAnCE_TargetManager_Module (void) +{ + DANCE_TRACE ("DAnCE_TargetManager_Module::~DAnCE_TargetManager_Module"); + + for (Servant_Map::iterator it = this->rm_map_.begin (); + it != this->rm_map_.end (); + ++it) + { + delete (*it).int_id_; + } +} + +const char * +DAnCE_TargetManager_Module::usage (void) +{ + DANCE_TRACE ("DAnCE_TargetManager_Module::usage"); + return "Repository Manager Options:\n" + //"\t-n|--name [name]\t Name to register in the naming service\n" + "\t-f|--file [name]\t Filename to output IOR.\n" + "\t-i|--init [name]\t Filename read initial domain descriptor.\n" + "\t-d|--domain-nc [NC]\t Default naming context for domain objects.\n" + "\t-h|help\t\t\t print this help message\n" + ; + +} + +bool +DAnCE_TargetManager_Module::parse_args (int argc, ACE_TCHAR * argv[]) +{ + DANCE_TRACE ("DAnCE_TargetManager_Module::parse_args"); + + ACE_Get_Opt get_opts (argc - 1, + argv + 1, + ACE_TEXT(":hd:f:i:"), + 0, + 0, + ACE_Get_Opt::RETURN_IN_ORDER, + 1); + + get_opts.long_option (ACE_TEXT("help"), 'h', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("domain-nc"), 'd', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("file"), 'f', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("init"), 'i', ACE_Get_Opt::ARG_REQUIRED); + + int c; + while ( (c = get_opts ()) != -1) + { + switch (c) + { + case 'd': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Repository_Manager_Module::parse_args - " + "Binding to provided Domain Naming Context: '%s'\n", + get_opts.opt_arg ())); + this->options_.domain_nc_ = get_opts.opt_arg (); + break; + + case 'f': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Repository_Manager_Module::parse_args - " + "Output filename for IOR is %s\n", + get_opts.opt_arg ())); + this->options_.ior_file_ = get_opts.opt_arg (); + break; + + case 'i': + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "Repository_Manager_Module::parse_args - " + "Initial domain file %s\n", + get_opts.opt_arg ())); + this->options_.domain_descr_ = get_opts.opt_arg (); + break; + + case 'h': + case '?': // Display help for use of the server. + DANCE_ERROR_RETURN (1, (LM_ERROR, + this->usage (), + argv [0], c), + false); + break; + + case 0: + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "Repository_Manager_Module::parse_args - " + "ERROR: unknown long option %s\n", + get_opts.long_option ())); + } + + break; + + default: + DANCE_DEBUG (9, (LM_TRACE, DLINFO "Repository_Manager_Module::parse_args - ignoring unknown option %c:%C\n", + c, get_opts.opt_arg ())); + } + + } + + return true; +} + +CORBA::Object_ptr +DAnCE_TargetManager_Module::create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv[]) +{ + DANCE_TRACE ("DAnCE_TargetManager_Module::create_object"); + + try + { + if (CORBA::is_nil(orb)) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Attempted to create Target Manager with a nil orb.\n")); + return CORBA::Object::_nil(); + } + else + { + this->orb_ = CORBA::ORB::_duplicate (orb); + } + + if (ACE_OS::strcmp(orb->id(), this->orb_->id()) != 0) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Resetting TM's orb.\n")); + this->orb_ = CORBA::ORB::_duplicate (orb); + this->domain_nc_ = CosNaming::NamingContext::_nil(); + } + + if (!this->parse_args (argc, argv)) + { + return CORBA::Object::_nil (); + } + + this->create_poas (); + + if (this->options_.domain_nc_) + { + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Resolving DomainNC.\n")); + CORBA::Object_var domain_obj = this->orb_->string_to_object (this->options_.domain_nc_); + if (!CORBA::is_nil (domain_obj.in ())) + { + this->domain_nc_ = CosNaming::NamingContext::_narrow (domain_obj.in()); + if (CORBA::is_nil (this->domain_nc_.in ())) + { + DANCE_ERROR (1, (LM_ERROR,DLINFO "DAnCE_TargetManager_Module::create_object - " + "Narrow to NamingContext return nil for DomainNC.\n")); + return CORBA::Object::_nil (); + } + } + } + catch (CORBA::Exception&) + { + DANCE_DEBUG (6, (LM_WARNING, DLINFO "DAnCE_TargetManager_Module::create_object - " + "DomainNC context not found!\n")); + } + } + + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Initializing the IOR Table\n")); + // Initialize IOR table + CORBA::Object_var table_object = orb->resolve_initial_references ("IORTable"); + + IORTable::Table_var adapter = IORTable::Table::_narrow (table_object.in ()); + + if (CORBA::is_nil (adapter.in ())) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Unable to RIR the IORTable.\n")); + return CORBA::Object::_nil (); + } + + + //Creating repository manager servant + DAnCE::TargetManagerDaemon_i * rm = new DAnCE::TargetManagerDaemon_i (orb); + + PortableServer::ServantBase_var safe_svt (rm); + + ACE_CString repository_manager_oid; + + if (this->options_.name_ == 0) + { + repository_manager_oid = "TargetManager"; + } + else + { + repository_manager_oid = ACE_TEXT_ALWAYS_CHAR (this->options_.name_); + repository_manager_oid += ".TargetManager"; + } + + // Registering servant in poa + PortableServer::ObjectId_var oid = + PortableServer::string_to_ObjectId (repository_manager_oid.c_str()); + this->rm_poa_->activate_object_with_id (oid, rm); + + // Getting repository manager ior + CORBA::Object_var nm_obj = this->rm_poa_->id_to_reference (oid.in ()); + CORBA::String_var ior = orb->object_to_string (nm_obj.in ()); + + // Binding ior to IOR Table + adapter->bind (repository_manager_oid.c_str (), ior.in ()); + + // Binding repository menager to DomainNC + if (!CORBA::is_nil (this->domain_nc_.in ())) + { + ACE_CString ns_name; + if (this->options_.name_ == 0) + { + ns_name = "TargetManager"; + } + else + { + ns_name = ACE_TEXT_ALWAYS_CHAR (this->options_.name_); + } + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Registering NM in NC as \"%C\".\n", ns_name.c_str ())); + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup (ns_name.c_str ()); + name[0].kind = CORBA::string_dup ("TargetManager"); + this->domain_nc_->rebind (name, nm_obj.in ()); + } + + // Writing ior to file + if (0 != this->options_.ior_file_) + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Writing RM IOR %C to file %C.\n", this->options_.ior_file_, ior.in ())); + if (!DAnCE::Target_Manager::write_IOR (this->options_.ior_file_, ior.in ())) + DANCE_ERROR (1, (LM_ERROR, DLINFO "DAnCE_TargetManager_Module::create_object - " + "Error: Unable to write IOR to file %C\n", + this->options_.ior_file_)); + } + + // Activate POA manager + PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); + mgr->activate (); + + // Finishing Deployment part + DANCE_DEBUG (6, (LM_NOTICE, DLINFO "DAnCE_TargetManager_Module::create_object - " + "DAnCE_TargetManager is running...\n")); + + DANCE_DEBUG (6, (LM_DEBUG, DLINFO "DAnCE_TargetManager_Module::create_object - " + "TargetManager IOR: %s\n", ior.in ())); + + return nm_obj._retn (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("DAnCE_TargetManager::main\t\n"); + return CORBA::Object::_nil (); + } +} + +void +DAnCE_TargetManager_Module::create_poas (void) +{ + DANCE_TRACE("DAnCE_Repository_Manager_Module::create_poas"); + // Get reference to Root POA. + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_poas - " + "Resolving root POA\n")); + CORBA::Object_var obj = this->orb_->resolve_initial_references ("RootPOA"); + + this->root_poa_ = PortableServer::POA::_narrow (obj.in ()); + + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_poas - " + "Obtaining the POAManager\n")); + PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); + + TAO::Utils::PolicyList_Destroyer policies (2); + policies.length (2); + + try + { + DANCE_DEBUG (9, (LM_TRACE, DLINFO "DAnCE_TargetManager_Module::create_poas - " + "DAnCE_TargetManager_Module::create_poas - " + "Creating the \"Repository\" POA.\n")); + + policies[0] = this->root_poa_->create_id_assignment_policy (PortableServer::USER_ID); + policies[1] = this->root_poa_->create_lifespan_policy (PortableServer::PERSISTENT); + this->rm_poa_ = this->root_poa_->create_POA ("Repository", + mgr.in(), + policies); + } + catch (const PortableServer::POA::AdapterAlreadyExists &) + { + DANCE_DEBUG (8, (LM_INFO, DLINFO "DAnCE_TargetManager_Module::create_poas - " + "Using existing \"Repository\" POA\n")); + this->rm_poa_ = this->root_poa_->find_POA ("Repository", 0); + } +} + +#ifndef DANCE_TARGETMANAGER_IMPL_BUILD_DLL +ACE_FACTORY_DEFINE (DAnCE_TargetManager_Module, DAnCE_TargetManager_Module) +#endif /* DANCE_TARGETMANAGER_IMPL_BUILD_DLL */ diff --git a/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.h b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.h new file mode 100644 index 00000000000..83a598c7934 --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module.h @@ -0,0 +1,105 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Target_Manager_Module.h + * + * $Id$ + * + * @brief To start TargetManager by starter + * + * @author William R. Otte + */ +//============================================================================= + +#ifndef NODE_MANAGER_MODULE_H +#define NODE_MANAGER_MODULE_H + +#include /**/ "ace/pre.h" + +#include "Target_Manager_Module_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Service_Config.h" +#include "ace/Vector_T.h" +#include "ace/Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "tao/ORB.h" +#include "tao/PortableServer/POAC.h" +#include "orbsvcs/CosNamingC.h" +#include "tao/Object_Loader.h" +#include "Deployment/DAnCE_Loader.h" +#include "DAnCE/Deployment/Deployment_common.h" +#include "TargetManager_Impl.h" + +/** + * @class Target_Manager_Module + * + * @brief The shared object that is instantiated when the target manager + * module/library is dynamically loaded. + * + * This class runs the node manager instance + */ +class DAnCE_TargetManager_Module_Export DAnCE_TargetManager_Module + : public DAnCE::DAnCE_Object_Loader +{ + public: + struct SOptions + { + const ACE_TCHAR * domain_nc_; + const ACE_TCHAR * ior_file_; + const ACE_TCHAR * domain_descr_; + const ACE_TCHAR * name_; + + SOptions() : + domain_nc_ (0), + ior_file_ (0), + domain_descr_ (0), + name_ (0) + { + } + }; + + /// Constructor. + DAnCE_TargetManager_Module (void); + + /// Destructor. + ~DAnCE_TargetManager_Module (void); + + /// Overload the base class method to create a new instance + /// of a DAnCE_RepositoryManager_Module object. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv []); + + virtual const char * usage (void); + + virtual bool parse_args (int argc, ACE_TCHAR *argv []); + + private: + void create_poas (void); + + /// Here we store the servants. + typedef ACE_Map_Manager < ACE_CString, + DAnCE::TargetManagerDaemon_i *, + ACE_Null_Mutex > Servant_Map; + + Servant_Map rm_map_; + + CORBA::ORB_var orb_; + CosNaming::NamingContext_var domain_nc_; + + SOptions options_; + + PortableServer::POA_var root_poa_; + PortableServer::POA_var rm_poa_; +}; + +ACE_FACTORY_DECLARE (DAnCE_TargetManager_Module, DAnCE_TargetManager_Module) + +#include /**/ "ace/post.h" + +#endif /* NODE_MANAGER_MODULE_H */ diff --git a/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module_export.h b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module_export.h new file mode 100644 index 00000000000..65f45970d0b --- /dev/null +++ b/modules/CIAO/DAnCE/TargetManager/Target_Manager_Module_export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl TargetManager_Module +// ------------------------------ +#ifndef TARGETMANAGER_MODULE_EXPORT_H +#define TARGETMANAGER_MODULE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (TARGETMANAGER_MODULE_HAS_DLL) +# define TARGETMANAGER_MODULE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && TARGETMANAGER_MODULE_HAS_DLL */ + +#if !defined (TARGETMANAGER_MODULE_HAS_DLL) +# define TARGETMANAGER_MODULE_HAS_DLL 1 +#endif /* ! TARGETMANAGER_MODULE_HAS_DLL */ + +#if defined (TARGETMANAGER_MODULE_HAS_DLL) && (TARGETMANAGER_MODULE_HAS_DLL == 1) +# if defined (TARGETMANAGER_MODULE_BUILD_DLL) +# define DAnCE_TargetManager_Module_Export ACE_Proper_Export_Flag +# define TARGETMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define TARGETMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* TARGETMANAGER_MODULE_BUILD_DLL */ +# define DAnCE_TargetManager_Module_Export ACE_Proper_Import_Flag +# define TARGETMANAGER_MODULE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define TARGETMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* TARGETMANAGER_MODULE_BUILD_DLL */ +#else /* TARGETMANAGER_MODULE_HAS_DLL == 1 */ +# define DAnCE_TargetManager_Module_Export +# define TARGETMANAGER_MODULE_SINGLETON_DECLARATION(T) +# define TARGETMANAGER_MODULE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* TARGETMANAGER_MODULE_HAS_DLL == 1 */ + +// Set TARGETMANAGER_MODULE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (TARGETMANAGER_MODULE_NTRACE) +# if (ACE_NTRACE == 1) +# define TARGETMANAGER_MODULE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define TARGETMANAGER_MODULE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !TARGETMANAGER_MODULE_NTRACE */ + +#if (TARGETMANAGER_MODULE_NTRACE == 1) +# define TARGETMANAGER_MODULE_TRACE(X) +#else /* (TARGETMANAGER_MODULE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define TARGETMANAGER_MODULE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (TARGETMANAGER_MODULE_NTRACE == 1) */ + +#endif /* TARGETMANAGER_MODULE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Utils/DAnCE_Utils.mpc b/modules/CIAO/DAnCE/Utils/DAnCE_Utils.mpc new file mode 100644 index 00000000000..e38bf447dda --- /dev/null +++ b/modules/CIAO/DAnCE/Utils/DAnCE_Utils.mpc @@ -0,0 +1,16 @@ +// -*- MPC -*- +// $Id$ + +project (DAnCE_Utils): dance_lib, dance_deployment_svnt, naming, dance_logger { + sharedname = DAnCE_Utils + dynamicflags = DANCE_UTILS_BUILD_DLL + + Source_Files { + Plan_Handler.cpp + } + + Header_Files { + Plan_Handler.h + } +} + diff --git a/modules/CIAO/DAnCE/Utils/DAnCE_Utils_Export.h b/modules/CIAO/DAnCE/Utils/DAnCE_Utils_Export.h new file mode 100644 index 00000000000..636453478e8 --- /dev/null +++ b/modules/CIAO/DAnCE/Utils/DAnCE_Utils_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -s DAnCE_Utils +// ------------------------------ +#ifndef DANCE_UTILS_EXPORT_H +#define DANCE_UTILS_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DANCE_UTILS_HAS_DLL) +# define DANCE_UTILS_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DANCE_UTILS_HAS_DLL */ + +#if !defined (DANCE_UTILS_HAS_DLL) +# define DANCE_UTILS_HAS_DLL 1 +#endif /* ! DANCE_UTILS_HAS_DLL */ + +#if defined (DANCE_UTILS_HAS_DLL) && (DANCE_UTILS_HAS_DLL == 1) +# if defined (DANCE_UTILS_BUILD_DLL) +# define DAnCE_Utils_Export ACE_Proper_Export_Flag +# define DANCE_UTILS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DANCE_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DANCE_UTILS_BUILD_DLL */ +# define DAnCE_Utils_Export ACE_Proper_Import_Flag +# define DANCE_UTILS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DANCE_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DANCE_UTILS_BUILD_DLL */ +#else /* DANCE_UTILS_HAS_DLL == 1 */ +# define DAnCE_Utils_Export +# define DANCE_UTILS_SINGLETON_DECLARATION(T) +# define DANCE_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DANCE_UTILS_HAS_DLL == 1 */ + +// Set DANCE_UTILS_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DANCE_UTILS_NTRACE) +# if (ACE_NTRACE == 1) +# define DANCE_UTILS_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DANCE_UTILS_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DANCE_UTILS_NTRACE */ + +#if (DANCE_UTILS_NTRACE == 1) +# define DANCE_UTILS_TRACE(X) +#else /* (DANCE_UTILS_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DANCE_UTILS_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DANCE_UTILS_NTRACE == 1) */ + +#endif /* DANCE_UTILS_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/DAnCE/Utils/Plan_Handler.cpp b/modules/CIAO/DAnCE/Utils/Plan_Handler.cpp new file mode 100644 index 00000000000..7dde515baa0 --- /dev/null +++ b/modules/CIAO/DAnCE/Utils/Plan_Handler.cpp @@ -0,0 +1,182 @@ +// $Id$ + +#include "Plan_Handler.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace DAnCE +{ + void + DAnCE_Utils::add_instance ( + ::Deployment::DeploymentPlan &deployment_plan, + const char *instance_name, + const char *node_name, + const char *impl_name, + const char *ns_name) + { + // Modifying the deployment plan in order to include the new instance ... + ::Deployment::InstanceDeploymentDescriptions instance = + deployment_plan.instance; + + instance.length (instance.length()+1); + + instance[instance.length()-1].name = CORBA::string_dup(instance_name); // Name of the instance + instance[instance.length()-1].node = CORBA::string_dup(node_name); + instance[instance.length()-1].source.length(0); + + // Looking for implementation block with name equals to type ... + ::Deployment::MonolithicDeploymentDescriptions implementation = + deployment_plan.implementation; + + CORBA::ULong i = 0; + for (i = 0; i < implementation.length(); ++i) + { + if (ACE_OS::strcmp (implementation[i].name.in(), impl_name) == 0) + { + break; + } + } + + if (i < implementation.length()) + { + instance[instance.length()-1].implementationRef = i; + } + else + { + throw ImplementationNotFound(); + } + + if (ns_name) + { + instance[instance.length()-1].configProperty.length(1); + instance[instance.length()-1].configProperty[0].name = + CORBA::string_dup ("RegisterNaming"); + instance[instance.length()-1].configProperty[0].value <<= + CORBA::string_dup (ns_name); + } + + // Re-assigning instances to deployment plan ... + deployment_plan.instance = instance; + } + + void + DAnCE_Utils::print_instances (const ::Deployment::DeploymentPlan &deployment_plan) + { + const ::Deployment::InstanceDeploymentDescriptions instance = + deployment_plan.instance; + + for (CORBA::ULong i = 0; i < instance.length(); ++i) + { + DANCE_DEBUG (6, (LM_DEBUG, "\nInstance no. %d\n", i)); + DANCE_DEBUG (6, (LM_DEBUG, "\tName: %C\n", instance[i].name.in())); + DANCE_DEBUG (6, (LM_DEBUG, "\tNode: %C\n", instance[i].node.in())); + + DANCE_DEBUG (6, (LM_DEBUG, "\tImplementationRef: %d\n", instance[i].implementationRef)); + DANCE_DEBUG (6, (LM_DEBUG, "\tNumber of properties: %d\n", instance[i].configProperty.length())); + + for (CORBA::ULong k = 0; k < instance[i].configProperty.length(); k++) + { + DANCE_DEBUG (6, (LM_DEBUG, "\t\tName: %C\n", instance[i].configProperty[k].name.in())); + } + } + } + + void + DAnCE_Utils::print_connections (const ::Deployment::DeploymentPlan &deployment_plan) + { + const ::Deployment::PlanConnectionDescriptions connection = + deployment_plan.connection; + + for (CORBA::ULong i = 0; i < connection.length(); ++i) + { + DANCE_DEBUG (6, (LM_DEBUG, "\nConnection no. %d\n", i)); + DANCE_DEBUG (6, (LM_DEBUG, "\tName: %C\n", connection[i].name.in())); + + DANCE_DEBUG (6, (LM_DEBUG, "\tNo of deployRequirements: %d\n", + connection[i].deployRequirement.length())); + + for (CORBA::ULong j = 0; j < connection[i].deployRequirement.length(); ++j) + { + DANCE_DEBUG (6, (LM_DEBUG, + "\t\tDeploy Requirement %d:\n", + j+1)); + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\tResource Type: %C\n", + connection[i].deployRequirement[j].resourceType.in())); + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\tName: %C\n", + connection[i].deployRequirement[j].name.in())); + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\tNo of Properties: %d\n", + connection[i].deployRequirement[j].property.length())); + for (CORBA::ULong k = 0; k < connection[i].deployRequirement[j].property.length(); ++k) + { + DANCE_DEBUG (6, (LM_DEBUG, "\t\t\tProperty %d:\n", k+1)); + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\t\tName: %C\n", + connection[i].deployRequirement[j].property[k].name.in())); + } + } + + DANCE_DEBUG (6, (LM_DEBUG, + "\tNo of externalEndpoints: %d\n", + connection[i].externalEndpoint.length())); + for (CORBA::ULong j = 0; j < connection[i].externalEndpoint.length(); j++) + { + DANCE_DEBUG (6, (LM_DEBUG, + "\t\tPortname %d: %C\n", j+1, + connection[i].externalEndpoint[j].portName.in())); + } + + DANCE_DEBUG (6, (LM_DEBUG, + "\tNo of internalEndpoints: %d\n", + connection[i].internalEndpoint.length())); + for (CORBA::ULong j = 0; j < connection[i].internalEndpoint.length(); j++) + { + DANCE_DEBUG (6, (LM_DEBUG, "\t\tInternalEndpoint %d:\n", j+1)); + DANCE_DEBUG (6, (LM_DEBUG, "\t\t\tPortname: %C\n", connection[i].internalEndpoint[j].portName.in())); + DANCE_DEBUG (6, (LM_DEBUG, "\t\t\tProvider: %d\n", connection[i].internalEndpoint[j].provider)); + + if (connection[i].internalEndpoint[j].kind == ::Deployment::Facet || + connection[i].internalEndpoint[j].kind == ::Deployment::SimplexReceptacle) + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\tKind: %C\n", + (connection[i].internalEndpoint[j].kind == ::Deployment::Facet) ? + "Facet" : "SimplexReceptacle")); + else + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\tKind: %d\n", + connection[i].internalEndpoint[j].kind)); + + DANCE_DEBUG (6, (LM_DEBUG, + "\t\t\tInstanceRef: %ld", + (long) connection[i].internalEndpoint[j].instanceRef)); + DANCE_DEBUG (6, (LM_DEBUG, "\tInstanceName: %C\n", + deployment_plan.instance[connection[i].internalEndpoint[j].instanceRef].name.in())); + } + + DANCE_DEBUG (6, (LM_DEBUG, + "\tNo of externalReferenceEndpoints: %d\n", + connection[i].externalReference.length())); + for (CORBA::ULong j = 0; j < connection[i].externalReference.length(); ++j) + DANCE_DEBUG (6, (LM_DEBUG, + "\t\tLocation %d: %C\n", + j+1, + connection[i].externalReference[j].location.in())); + + DANCE_DEBUG (6, (LM_DEBUG, + "\tNo of deployedResources: %d\n", + connection[i].deployedResource.length())); + for (CORBA::ULong j = 0; j < connection[i].deployedResource.length(); j++) + { + DANCE_DEBUG (6, (LM_DEBUG, + "\t\tTargetName: %C\n", + connection[i].deployedResource[j].targetName.in())); + DANCE_DEBUG (6, (LM_DEBUG, "\t\tRequirementName: %C\n", + connection[i].deployedResource[j].requirementName.in())); + DANCE_DEBUG (6, (LM_DEBUG, "\t\tResourceName: %C\n", + connection[i].deployedResource[j].resourceName.in())); + } + } + } +} + diff --git a/modules/CIAO/DAnCE/Utils/Plan_Handler.h b/modules/CIAO/DAnCE/Utils/Plan_Handler.h new file mode 100644 index 00000000000..591853b68a6 --- /dev/null +++ b/modules/CIAO/DAnCE/Utils/Plan_Handler.h @@ -0,0 +1,75 @@ +//$Id$ +/*======================================================== + * + * @file Plan_Handler.h + * + * @brief This file contains the implementation of + * the Plan_Handler class. + * + * @author Gan Deng + *========================================================*/ + +#ifndef CIAO_DANCE_UTILS_H +#define CIAO_DANCE_UTILS_H + +#include "DAnCE_Utils_Export.h" +#include "Deployment/Deployment_DeploymentPlanC.h" + +namespace DAnCE +{ + class ImplementationNotFound {}; + class InstanceNotFound {}; + class ConnectionNotFound {}; + + /** + * @class Plan_Handler + * + * This class takes an existing deployment plan as input, and + * can modify the deployment plan internals. + * + * The main methods on this class are: + * + * - Add a instance to the deployment plan; + * - Add a connection to the deployment plan; + * - Remove a connection from the deployment plan; + * - Remove a instance (and, consequently all its connection) from the + * deployment plan; + * - Show all instances in the deployment plan; + * - Show all connections in the deployment plan; + */ + + class DAnCE_Utils_Export DAnCE_Utils + { + public: + static void add_instance ( + ::Deployment::DeploymentPlan &deployment_plan, + const char *instance_name, + const char *node_name, + const char *impl_name, + const char *ns_name = 0); + + static void add_connection ( + ::Deployment::DeploymentPlan &deployment_plan, + const char *connection_name, + const char *port_name, + const char *facet_instance, + const char *receptacle_instance); + + static void remove_instance ( + ::Deployment::DeploymentPlan &deployment_plan, + const char *instance_name); + + static void remove_connection ( + ::Deployment::DeploymentPlan &deployment_plan, + const char *connection_name); + + static void print_instances ( + const ::Deployment::DeploymentPlan &deployment_plan); + + static void print_connections ( + const ::Deployment::DeploymentPlan &deployment_plan); + }; +} + +#endif /* CIAO_DANCE_UTILS_H */ + diff --git a/modules/CIAO/DAnCE/bin/.empty b/modules/CIAO/DAnCE/bin/.empty new file mode 100644 index 00000000000..eb0e403e06a --- /dev/null +++ b/modules/CIAO/DAnCE/bin/.empty @@ -0,0 +1 @@ +This file keeps the directory around even when using cvs update -dP diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/__init__.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/__init__.py new file mode 100755 index 00000000000..0ebbdbeba93 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/__init__.py @@ -0,0 +1 @@ +import generator diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/__init__.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/__init__.py new file mode 100755 index 00000000000..641e463cdaa --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/__init__.py @@ -0,0 +1,46 @@ +temp_path = "" + + +# # The following is the initialization logic that is executed +# # when the fuzz module is loaded +# from os import listdir, chdir, getcwd +# from sys import stderr, path +# oldwd = getcwd () + +# try: +# # The following is a trick to get the directory THIS SCRIPT - note, not necessarily the CWD - +# # is located. We use this path later to load all of the available templates +# import _path +# script_path = str (_path).split ()[3][1:-11] +# if script_path == "": +# script_path = "." + +# chdir (script_path + "/templates") + +# path.append (getcwd ()) + +# files = listdir (".") + +# modules = list () + + +# for item in files: +# if (item[0] != '_') and (item[-3:] == ".py"): +# print "Registering " + item [:-3] +# try: +# __import__ (item[:-3]) +# except: +# stderr.write ("ERROR: Unable to load the " + item[:-3] + " template\n") + +# finally: +# chdir (oldwd) + +import header +import comp_impl +import comp_inst +import footer +import homed_comp_impl +import homed_comp_inst +import home_impl +import home_inst +import artifact diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/_path.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/_path.py new file mode 100755 index 00000000000..e69de29bb2d diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/artifact.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/artifact.py new file mode 100755 index 00000000000..dbebad5291d --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/artifact.py @@ -0,0 +1,24 @@ +from templet import stringfunction + +@stringfunction +def template (component_name): + """ + + ${component_name}_exec + + + ${component_name}_exec + + + ${component_name}_svnt + + + ${component_name}_svnt + + + ${component_name}_stub + + + ${component_name}_stub + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_impl.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_impl.py new file mode 100755 index 00000000000..e807fc6f58a --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_impl.py @@ -0,0 +1,58 @@ +from templet import stringfunction + +@stringfunction +def template (component_name, namespace) : + """ + + + ${component_name}ComponentImplementation + + + + + + component factory + + + tk_string + + + create_${namespace}${component_name}_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_${namespace}${component_name}_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ${component_name}_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ${component_name}_exec + + + + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_inst.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_inst.py new file mode 100755 index 00000000000..7bacf681616 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/comp_inst.py @@ -0,0 +1,13 @@ +from templet import stringfunction + +@stringfunction +def template (component_name) : + """ + + ${component_name}Component + Node + + + + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/footer.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/footer.py new file mode 100755 index 00000000000..687cfb78a02 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/footer.py @@ -0,0 +1,8 @@ +from templet import stringfunction + +@stringfunction +def template (): + """ + +""" + diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/header.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/header.py new file mode 100755 index 00000000000..c16146ae028 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/header.py @@ -0,0 +1,14 @@ +from templet import stringfunction + +@stringfunction +def template (uuid): + """ + + + ${uuid} + +""" diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_impl.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_impl.py new file mode 100755 index 00000000000..87c14a68070 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_impl.py @@ -0,0 +1,57 @@ +from templet import stringfunction + +@stringfunction +def template (component_name, namespace) : + """ + + ${component_name}HomeImplementation + + + + + + home factory + + + tk_string + + + create_${namespace}${component_name}Home_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_${namespace}${component_name}Home_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ${component_name}_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ${component_name}_exec + + + + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_inst.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_inst.py new file mode 100755 index 00000000000..6d24a5c5986 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/home_inst.py @@ -0,0 +1,13 @@ +from templet import stringfunction + +@stringfunction +def template (component_name) : + """ + + ${component_name}Home + NodeOne + + + + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_impl.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_impl.py new file mode 100755 index 00000000000..ab8a7ee9517 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_impl.py @@ -0,0 +1,13 @@ +from templet import stringfunction + +@stringfunction +def template (component_name) : + """ + + ${component_name}ComponentImplementation + + + + + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_inst.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_inst.py new file mode 100755 index 00000000000..ee1218d4539 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/homed_comp_inst.py @@ -0,0 +1,24 @@ +from templet import stringfunction + +@stringfunction +def template (component_name) : + """ + + ${component_name}Component + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + ${component_name}Home + + + + + """ diff --git a/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/templet.py b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/templet.py new file mode 100755 index 00000000000..85cfb9f0389 --- /dev/null +++ b/modules/CIAO/DAnCE/bin/PythonDAnCE/generator/templet.py @@ -0,0 +1,325 @@ +"""A lightweight python templating engine. Templet version 2 beta. + +Supports two templating idioms: + 1. template functions using @stringfunction and @unicodefunction + 2. template classes inheriting from StringTemplate and UnicodeTemplate + +Each template function is marked with the attribute @stringfunction +or @unicodefunction. Template functions will be rewritten to expand +their document string as a template and return the string result. +For example: + + @stringtemplate + def myTemplate(animal, thing): + "the $animal jumped over the $thing." + + print myTemplate('cow', 'moon') + +The template language understands the following forms: + + $myvar - inserts the value of the variable 'myvar' + ${...} - evaluates the expression and inserts the result + ${{...}} - executes enclosed code; use 'out.append(text)' to insert text + $$ - an escape for a single $ + $ (at the end of the line) - a line continuation + +Template functions are compiled into code that accumulates a list of +strings in a local variable 'out', and then returns the concatenation +of them. If you want do do complicated computation, you can append +to 'out' directly inside a ${{...}} block. + +Another alternative is to use template classes. + +Each template class is a subclass of StringTemplate or UnicodeTemplate. +Template classes should define a class attribute 'template' that +contains the template code. Also, any class attribute ending with +'_template' will be compiled into a template method. + +Use a template class by instantiating it with a dictionary or +keyword arguments. Get the expansion by converting the instance +to a string. For example: + + class MyTemplate(templet.Template): + template = "the $animal jumped over the $thing." + + print MyTemplate(animal='cow', thing='moon') + +Within a template class, the template language is similar to a template +function, but 'self.write' should be used to build the string inside +${{..}} blocks. Also, there is a shorthand for calling template methods: + + $ - shorthand for '${{self.sub_template(vars())}}' + +This idiom is helpful for decomposing a template and when subclassing. + +A longer example: + + import cgi + class RecipeTemplate(templet.Template): + template = r''' + $dish + + $ + $ + + ''' + header_template = r''' +

${cgi.escape(dish)}

+ ''' + body_template = r''' +
    + ${{ + for item in ingredients: + self.write('
  1. ', item, '\n') + }} +
+ ''' + +This template can be expanded as follows: + + print RecipeTemplate(dish='burger', ingredients=['bun', 'beef', 'lettuce']) + +And it can be subclassed like this: + + class RecipeWithPriceTemplate(RecipeTemplate): + header_template = "

${cgi.escape(dish)} - $$$price

\n" + +Templet is by David Bau and was inspired by Tomer Filiba's Templite class. +For details, see http://davidbau.com/templet + +Templet is posted by David Bau under BSD-license terms. + +Copyright (c) 2007, David Bau +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of Templet nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +import sys, re, inspect + +class _TemplateBuilder(object): + __pattern = re.compile(r"""\$( # Directives begin with a $ + \$ | # $$ is an escape for $ + [^\S\n]*\n | # $\n is a line continuation + [_a-z][_a-z0-9]* | # $simple Python identifier + \{(?!\{)[^\}]*\} | # ${...} expression to eval + \{\{.*?\}\} | # ${{...}} multiline code to exec + <[_a-z][_a-z0-9]*> | # $ method call + )(?:(?:(?<=\}\})|(?<=>))[^\S\n]*\n)? # eat some trailing newlines + """, re.IGNORECASE | re.VERBOSE | re.DOTALL) + + def __init__(self, constpat, emitpat, callpat=None): + self.constpat, self.emitpat, self.callpat = constpat, emitpat, callpat + + def __realign(self, str, spaces=''): + """Removes any leading empty columns of spaces and an initial empty line""" + lines = str.splitlines(); + if lines and not lines[0].strip(): del lines[0] + lspace = [len(l) - len(l.lstrip()) for l in lines if l.lstrip()] + margin = len(lspace) and min(lspace) + return '\n'.join((spaces + l[margin:]) for l in lines) + + def build(self, template, filename, s=''): + code = [] + for i, part in enumerate(self.__pattern.split(self.__realign(template))): + if i % 2 == 0: + if part: code.append(s + self.constpat % repr(part)) + else: + if not part or (part.startswith('<') and self.callpat is None): + raise SyntaxError('Unescaped $ in ' + filename) + elif part.endswith('\n'): continue + elif part == '$': code.append(s + self.emitpat % '"$"') + elif part.startswith('{{'): code.append(self.__realign(part[2:-2], s)) + elif part.startswith('{'): code.append(s + self.emitpat % part[1:-1]) + elif part.startswith('<'): code.append(s + self.callpat % part[1:-1]) + else: code.append(s + self.emitpat % part) + return '\n'.join(code) + +class _TemplateMetaClass(type): + __builder = _TemplateBuilder( + 'self.out.append(%s)', 'self.write(%s)', 'self.%s(vars())') + + def __compile(cls, template, n): + globals = sys.modules[cls.__module__].__dict__ + if '__file__' not in globals: filename = '<%s %s>' % (cls.__name__, n) + else: filename = '%s: <%s %s>' % (globals['__file__'], cls.__name__, n) + code = compile(cls.__builder.build(template, filename), filename, 'exec') + def expand(self, __dict = None, **kw): + if __dict: kw.update([i for i in __dict.iteritems() if i[0] not in kw]) + kw['self'] = self + exec code in globals, kw + return expand + + def __init__(cls, *args): + for attr, val in cls.__dict__.items(): + if attr == 'template' or attr.endswith('_template'): + if isinstance(val, basestring): + setattr(cls, attr, cls.__compile(val, attr)) + type.__init__(cls, *args) + +class StringTemplate(object): + """A base class for string template classes.""" + __metaclass__ = _TemplateMetaClass + + def __init__(self, *args, **kw): + self.out = [] + self.template(*args, **kw) + + def write(self, *args): + self.out.extend([str(a) for a in args]) + + def __str__(self): + return ''.join(self.out) + +# The original version of templet called StringTemplate "Template" +Template = StringTemplate + +class UnicodeTemplate(object): + """A base class for unicode template classes.""" + __metaclass__ = _TemplateMetaClass + + def __init__(self, *args, **kw): + self.out = [] + self.template(*args, **kw) + + def write(self, *args): + self.out.extend([unicode(a) for a in args]) + + def __unicode__(self): + return u''.join(self.out) + + def __str__(self): + return unicode(self).encode('utf-8') + +def _templatefunction(func, listname, stringtype): + globals, locals = sys.modules[func.__module__].__dict__, {} + if '__file__' not in globals: filename = '<%s>' % func.__name__ + else: filename = '%s: <%s>' % (globals['__file__'], func.__name__) + builder = _TemplateBuilder('%s.append(%%s)' % listname, + '%s.append(%s(%%s))' % (listname, stringtype)) + args = inspect.getargspec(func) + code = [ + 'def %s%s:' % (func.__name__, inspect.formatargspec(*args)), + ' %s = []' % listname, + builder.build(func.__doc__, filename, ' '), + ' return "".join(%s)' % listname] + code = compile('\n'.join(code), filename, 'exec') + exec code in globals, locals + return locals[func.__name__] + +def stringfunction(func): + """Function attribute for string template functions""" + return _templatefunction(func, listname='out', stringtype='str') + +def unicodefunction(func): + """Function attribute for unicode template functions""" + return _templatefunction(func, listname='out', stringtype='unicode') + +# When executed as a script, run some testing code. +if __name__ == '__main__': + ok = True + def expect(actual, expected): + global ok + if expected != actual: + print "error - got:\n%s" % repr(actual) + ok = False + class TestAll(Template): + """A test of all the $ forms""" + template = r""" + Bought: $count ${name}s$ + at $$$price. + ${{ + for i in xrange(count): + self.write(TestCalls(vars()), "\n") # inherit all the local $vars + }} + Total: $$${"%.2f" % (count * price)} + """ + class TestCalls(Template): + """A recursive test""" + template = "$name$i ${*[TestCalls(name=name[0], i=n) for n in xrange(i)]}" + expect( + str(TestAll(count=5, name="template call", price=1.23)), + "Bought: 5 template calls at $1.23.\n" + "template call0 \n" + "template call1 t0 \n" + "template call2 t0 t1 t0 \n" + "template call3 t0 t1 t0 t2 t0 t1 t0 \n" + "template call4 t0 t1 t0 t2 t0 t1 t0 t3 t0 t1 t0 t2 t0 t1 t0 \n" + "Total: $6.15\n") + class TestBase(Template): + template = r""" + $ + $ + """ + class TestDerived(TestBase): + head_template = "$name" + body_template = "${TestAll(vars())}" + expect( + str(TestDerived(count=4, name="template call", price=2.88)), + "template call\n" + "" + "Bought: 4 template calls at $2.88.\n" + "template call0 \n" + "template call1 t0 \n" + "template call2 t0 t1 t0 \n" + "template call3 t0 t1 t0 t2 t0 t1 t0 \n" + "Total: $11.52\n" + "\n") + class TestUnicode(UnicodeTemplate): + template = u""" + \N{Greek Small Letter Pi} = $pi + """ + expect( + unicode(TestUnicode(pi = 3.14)), + u"\N{Greek Small Letter Pi} = 3.14\n") + goterror = False + try: + class TestError(Template): + template = 'Cost of an error: $0' + except SyntaxError: + goterror = True + if not goterror: + print 'TestError failed' + ok = False + @stringfunction + def testBasic(name): + "Hello $name." + expect(testBasic('Henry'), "Hello Henry.") + @stringfunction + def testReps(a, count=5): r""" + ${{ if count == 0: return '' }} + $a${testReps(a, count - 1)}""" + expect( + testReps('foo'), + "foofoofoofoofoo") + @unicodefunction + def testUnicode(count=4): u""" + ${{ if not count: return '' }} + \N{BLACK STAR}${testUnicode(count - 1)}""" + expect( + testUnicode(count=10), + u"\N{BLACK STAR}" * 10) + if ok: print "OK" diff --git a/modules/CIAO/DAnCE/bin/generate_plan.py b/modules/CIAO/DAnCE/bin/generate_plan.py new file mode 100755 index 00000000000..15310877bec --- /dev/null +++ b/modules/CIAO/DAnCE/bin/generate_plan.py @@ -0,0 +1,90 @@ +#!/usr/bin/python +import sys, os + +sys.path.append (os.getenv ("DANCE_ROOT")) + + +def parse_args (): + from optparse import OptionParser + + parser = OptionParser ("""usage %prog [options] + Note that this script is very simple. It assumes that the idl and mpc follow + canonical and predictable patterns.""") + + parser.add_option ("-o", "--output", dest="output", action="store", type="string", + help="Output filename", default="Plan.cdp") + parser.add_option ("--home", dest="homes", action="append", type="string", + help="Home types to be included") + parser.add_option ("-c", "--component", dest="components", action="append", + type="string", help="Component types to be included") + parser.add_option ("--homed-component", dest="homed_components", action="append", + type="string", help="Homed component types to be included") + parser.add_option ("-u", "--uuid", dest="uuid", action="store", + type="string", help="UUID for the generated plan") + parser.add_option ("-n", "--namespace", dest="namespace", action="store", default="", + type="string", help="IDL namespace any components may be in") + + (options, arguments) = parser.parse_args () + + return (options, arguments) + +def main (): + (opts, args) = parse_args () + + # compset = set (opts.homes) | set (opts.components) | set (homed_components) + + from PythonDAnCE import generator + retval = "" + retval += generator.header.template (opts.uuid) + + artifacts = {} + + if opts.namespace != "": + opts.namespace += "_" + + #implementations + if opts.homes is not None: + for item in opts.homes: + retval += generator.home_impl.template (item, opts.namespace) + artifacts[item] = 1 + + if opts.homed_components is not None: + for item in opts.homed_components: + retval += generator.homed_comp_impl.template (item) + artifacts[item] = 1 + + if opts.components is not None: + for item in opts.components: + retval += generator.comp_impl.template (item, opts.namespace) + artifacts[item] = 1 + + #instances + if opts.homes is not None: + for item in opts.homes: + retval += generator.home_inst.template (item) + + if opts.homed_components is not None: + for item in opts.homed_components: + retval += generator.homed_comp_inst.template (item) + + if opts.components is not None: + for item in opts.components: + retval += generator.comp_inst.template (item) + + #artifacts + if artifacts is not None: + for item in artifacts.keys(): + retval += generator.artifact.template(item) + + retval += generator.footer.template () + + outfile = open (opts.output, 'w') + outfile.write (retval) + outfile.close () + + +if __name__ == "__main__": + main () + + + diff --git a/modules/CIAO/DAnCE/docs/schema/06-04-02.xsd b/modules/CIAO/DAnCE/docs/schema/06-04-02.xsd new file mode 100644 index 00000000000..60b5c0ce54c --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/06-04-02.xsd @@ -0,0 +1,1010 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/Basic_Deployment_Data.xsd b/modules/CIAO/DAnCE/docs/schema/Basic_Deployment_Data.xsd new file mode 100644 index 00000000000..2a6715e642b --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/Basic_Deployment_Data.xsd @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/CIAOEvents.xsd b/modules/CIAO/DAnCE/docs/schema/CIAOEvents.xsd new file mode 100644 index 00000000000..645d7a6e530 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/CIAOEvents.xsd @@ -0,0 +1,104 @@ + + + + + + + Root element for defining all the pub/sub services configuration + used by a DeploymentPlan. + A CIAO:Events document should reside in a separate file. + A DeploymentPlan can refer to one or more CIAO:Events file names + using the "infoProperty" tag. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/CIAOServerResources.xsd b/modules/CIAO/DAnCE/docs/schema/CIAOServerResources.xsd new file mode 100644 index 00000000000..7a62a0e6eab --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/CIAOServerResources.xsd @@ -0,0 +1,218 @@ + + + + + + + Root element for defining all the resources used by a DeploymentPlan. + A CIAO:ServerResources document should reside in a separate file. + A DeploymentPlan can refer to one or more CIAO:ServerResources file names + using the "infoProperty" tag. + + + + + + + + + + + + + + + + + + + + Just a list of argv's that should be appended to the command + line used to start up the NodeApplication. + + + + + + + + + + + + + Contains either a pointer to a svc.conf file, or the actual + content of the svc.conf file required to configure the + NodeApplication. + + + + + + + + + + + + + + + + + Contains the shared resources the component ORB must support + and all available policySets that components installed under + the ORB can request. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is only used to provide a ORB-wide view of all connection bands. + The ORB doesn't really need to "create" this resource. + + + + + + + + + + + + + + + + + + + + + Contains a set of CORBA Policies that can be applied to a + component instance at once. We should eventually expand this + list to incorporate all the policies defined in + ciaopolicy.xs. I'm focusing on the RT aspects for now. + + The ID of a policy set should be referenced by the component + instances in a DeploymentPlan document under the + "deployedResource" tag. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/Deployment.xsd b/modules/CIAO/DAnCE/docs/schema/Deployment.xsd new file mode 100644 index 00000000000..591aa588d74 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/Deployment.xsd @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/Modified_Deployment.xsd b/modules/CIAO/DAnCE/docs/schema/Modified_Deployment.xsd new file mode 100644 index 00000000000..65f5eb81d1e --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/Modified_Deployment.xsd @@ -0,0 +1,826 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/README.html b/modules/CIAO/DAnCE/docs/schema/README.html new file mode 100644 index 00000000000..d810c8a6065 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/README.html @@ -0,0 +1,64 @@ + + + +Contents of $CIAO_ROOT/docs/schema + + + +

Contents of $CIAO_ROOT/docs/schema

+The schema in this directory are all based on the new Deployment and +Configuration spec. As part of our work on DAnCE we have tried to +subset and normalize the schema so that our developers, and tools +would be able to parse and use the information effectively. + +The following table illustrates the meaning and use of the various +schemata in this directory: + + + + + + + + + + + + + + + + + + + + + + + + + +
Spec_Defined_Deployment.xsdThis is the schema file from the spec which is unaltered. This + is just for reference. CIAO and DAnCE will not be using this file + directly. +
Spec_Defined_XMI.xsdThe OMG spec defined schema file uses definitions from another + specification called the XMI spec which is part of the OMG + specification suite. This schema file is again for reference + without any edits. +
ccd.xsd, cdd.xsd, cdp.xsd, cid.xsd, cpd.xsd, iad.xsd, + pcd.xsd and toplevel.xcd Descriptors that will be used by DAnCE. Section 5.5.3 of the + Deployment and Configuration spec talks about the various + descriptors that are part of the package. The schema files are + broken down in accordance with the suggested descriptor format in + the section mentioned above. +
Deployment.xsd The schema file that will be used by the applications in + their descriptors. Applications need not use Deployment.xsd, but + using this is encouraged for portability of their intance + documents.
Modified_Deployment.xsd This schema is modified from the original spec defined + schema. It is a bit simplified with different sections that makes + things easier for the developer to read and digest the + information. Not used within DAnCE.
unused_elements.xsd Schema elements that are not used within the OMG's schema and + the ones that CIAo and DAnCedoesn't support.
+ + + diff --git a/modules/CIAO/DAnCE/docs/schema/SANet_Network.xsd b/modules/CIAO/DAnCE/docs/schema/SANet_Network.xsd new file mode 100644 index 00000000000..d614528b481 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/SANet_Network.xsd @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/DAnCE/docs/schema/ServerResourceUsage.txt b/modules/CIAO/DAnCE/docs/schema/ServerResourceUsage.txt new file mode 100644 index 00000000000..d8fc47ca7b3 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/ServerResourceUsage.txt @@ -0,0 +1,119 @@ + How to use CIAOServerResources.xsd + +Assuming we store two CIAO:ServerResources documents in two XML files +called "RTLinuxServerConfig.csr" and "RTwIN32ServerConfig.csr" +respectively. Two things need to happen in order to use the +PolicySet's defined in these files. First, we need to tell the DnC +tools what are all the CIAOServerResources files a DeploymentPlan +needs. This can easily be done by enumerating all these file in the + element under the . For example, the +following XML document snippet shows a DeploymentPlan will reference +to two aforementioned CIAO:ServerResources files. The property name +"CIAOServerResourceRef" is a CIAO-specific extension that signifies +this need. The values of these properties simply specify the +filenames. + + + + CIAOServerResourceRef + + + tk_string + + + RTLinuxServerConfig.csr + + + + CIAOServerResourceRef + + + tk_string + + + RTWin32ServerConfig.csr + + + + +Second, we can now use the policy sets defined in these files by +associating a policy set with the entity the policy set will be +applied on. Currently, only associations with component instances are +supported. A component instance in deployment plan can specify the +policy set it wishes to be instantiated with. A PolicySet is +referenced by its name and the CIAO:ServerResources name. + + + .... + + + + InstanceUsesResource + CIAO:PolicySet + here_we_insert_the_name_defined_in_CIAO:ServerResources + +// +// name could be CIAO:InstancePolicy or CIAO:ReceptaclePolicy. +// Here we show an example of an CIAO::InstancePolicy. +// + CIAO:InstancePolicy + + tk_string + + here_we_insert_the_PolicySet_name_defined_in_the_ServerResources + + + + + +// Now we show an example of a CIAO:ReceptaclePolicy. +// + + InstanceUsesResource + CIAO:PolicySet + here_we_insert_the_name_defined_in_CIAO:ServerResources +// +// First we specify that we are going to define a receptacle policy. +// + +// +// Note the name of the policy. +// + CIAO:ReceptaclePolicy + + tk_string + + here_we_insert_the_PolicySet_name_defined_in_the_ServerResources + + + +// +// Now we specify the receptacle (using the receptacle name) that is going to +// be associated with this policy. +// + + receptacle name from the .ccd file + + tk_string + + here_we_insert_the_PolicySet_name_defined_in_the_ServerResources + + + + + + +
+
+ +If only the name of the CIAO:ServerResources is specified, we are +using it as a collocation constraint. In this case, the + will contain no sub-element. Component +instances with different values will be deployed to the +same target node with different ServerResources names. DAnCE should +create two differnet NodeApplication on the same node. + +Likewise, specifying different CIAO:PolicySet IDs will force component +instances to be deployed into different containers (if they have the +same target node and ServerResource ID.) + diff --git a/modules/CIAO/DAnCE/docs/schema/Spec_Defined_Deployment.xsd b/modules/CIAO/DAnCE/docs/schema/Spec_Defined_Deployment.xsd new file mode 100644 index 00000000000..a59a47f1360 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/Spec_Defined_Deployment.xsd @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/Spec_Defined_XMI.xsd b/modules/CIAO/DAnCE/docs/schema/Spec_Defined_XMI.xsd new file mode 100644 index 00000000000..eac893f37c8 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/Spec_Defined_XMI.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/Task_Map.xsd b/modules/CIAO/DAnCE/docs/schema/Task_Map.xsd new file mode 100644 index 00000000000..2138f082d48 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/Task_Map.xsd @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/DAnCE/docs/schema/XMI.xsd b/modules/CIAO/DAnCE/docs/schema/XMI.xsd new file mode 100644 index 00000000000..afb17f9d3b5 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/XMI.xsd @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/ccd.xsd b/modules/CIAO/DAnCE/docs/schema/ccd.xsd new file mode 100644 index 00000000000..fcdac711b5a --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/ccd.xsd @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/cdd.xsd b/modules/CIAO/DAnCE/docs/schema/cdd.xsd new file mode 100644 index 00000000000..3fe64120bfd --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/cdd.xsd @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/DAnCE/docs/schema/cdp.xsd b/modules/CIAO/DAnCE/docs/schema/cdp.xsd new file mode 100644 index 00000000000..882d460736c --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/cdp.xsd @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/ciaopolicy.xsd b/modules/CIAO/DAnCE/docs/schema/ciaopolicy.xsd new file mode 100644 index 00000000000..93a7415c4b4 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/ciaopolicy.xsd @@ -0,0 +1,607 @@ + + + + + + + The root element of the schema. Contains zero or more policies. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is the base policy type. All policies + should be an extension of this type. + + + + + + + + + + + + + + + + + + + + + This type represents the policy ID. + Need to add a restriction. + + + + + + + + + + + + + + + + + + + + + + Represents the RebindPolicy type, ID 23 + + + + + + + + + + + + + + + + Note: This is not strictly represented in the pidl as an enum, + but that appears to be the intent of the way it is declared. + + + + + + + + + + + + + Represents a SyncScopePolicyType, ID 24 + + + + + + + + + + + + + + + + Note: This was not declared an enum in Messaging_SyncScope_Policy.pidl, + but from the declaration, that appears to be the intent. + + + + + + + + + + + + + + Represents a RequestPriorityPolicy, ID 25 + + + + + + + + + + + + + + + + Represents a ReplyPriorityPolicy, ID 26 + + + + + + + + + + + + + + + + Represents a PriorityRange struct defined in Messaging_No_Impl.pidl + + + + + + + + + + + + + Represents a RequestStartTimePolicy, ID 27 + + + + + + + + + + + + + + + + + Represents a RequestEndTimePolicy, ID 28 + + + + + + + + + + + + + + + + + Represents a ReplyStartTimePolicy, ID 29 + + + + + + + + + + + + + + + + + Represents a ReplyEndTimePolicy, ID 30 + + + + + + + + + + + + + + + + Represents a TimeBase::UtcT struct, defined in tao/TimeBase.pidl + + + + + + + + + + + + + + Represents a RelativeRequestTimeoutPolicy, ID 31. + + + + + + + + + + + + + + + + Represents a RelativeRoundtripPolicy, ID 32 + + + + + + + + + + + + + + + + Represents a RoutingPolicy, ID 33 + + + + + + + + + + + + + + + + + Note: This is not explicitly set up as an enum in Messaging_No_Impl.pidl, + but that appears to be the intent from the declaration. + + + + + + + + + + + + + Represents a MaxHopsPolicy, ID 34 + + + + + + + + + + + + + + + + Represents a QueueOrderPolicy, ID 35 + + + + + + + + + + + + + + + + Note: This is not explicitly declared to be an enum in Messaging_No_Impl.pidl, + but that appears to be the intent from the declaration. + + + + + + + + + + + + + + + + Represents the Priority Model Policy, ID 40 + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the ThreadPool policy, ID 41 + + + + + + + + + + + + + + + + + + + + Represents the Server Protocol policy, ID 42 + + + + + + + + + + + + + + + + + + + Represents the Client Protocol policy, ID 43 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base type for all protocol properties. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + privateConnectionPolicy extension of policyBase, ID 44 + + + + + + + + + + + + + + + + priorityBandedPolicy extension of policyBase, ID 45 + + + + + + + + + + + + + + + + + + Represents the PriorityBand struct for the priorityBandedPolicy element. + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/DAnCE/docs/schema/cid.xsd b/modules/CIAO/DAnCE/docs/schema/cid.xsd new file mode 100644 index 00000000000..62cdc75e7c5 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/cid.xsd @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/cpd.xsd b/modules/CIAO/DAnCE/docs/schema/cpd.xsd new file mode 100644 index 00000000000..b4313af65bf --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/cpd.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/iad.xsd b/modules/CIAO/DAnCE/docs/schema/iad.xsd new file mode 100644 index 00000000000..2f910b5d333 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/iad.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/DAnCE/docs/schema/pcd.xsd b/modules/CIAO/DAnCE/docs/schema/pcd.xsd new file mode 100644 index 00000000000..5c7772f7d85 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/pcd.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/DAnCE/docs/schema/toplevel.xsd b/modules/CIAO/DAnCE/docs/schema/toplevel.xsd new file mode 100644 index 00000000000..83e2feb999d --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/toplevel.xsd @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/unused_06-04-02.xsd b/modules/CIAO/DAnCE/docs/schema/unused_06-04-02.xsd new file mode 100644 index 00000000000..7d379ee7561 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/unused_06-04-02.xsd @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/unused_elements.xsd b/modules/CIAO/DAnCE/docs/schema/unused_elements.xsd new file mode 100644 index 00000000000..c1200b088e9 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/unused_elements.xsd @@ -0,0 +1,161 @@ + + + + + + + + + diff --git a/modules/CIAO/DAnCE/docs/schema/xsc-banner.cpp b/modules/CIAO/DAnCE/docs/schema/xsc-banner.cpp new file mode 100644 index 00000000000..ecd90a877a6 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/xsc-banner.cpp @@ -0,0 +1,11 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + diff --git a/modules/CIAO/DAnCE/docs/schema/xsc-banner.h b/modules/CIAO/DAnCE/docs/schema/xsc-banner.h new file mode 100644 index 00000000000..30370e90f40 --- /dev/null +++ b/modules/CIAO/DAnCE/docs/schema/xsc-banner.h @@ -0,0 +1,17 @@ +/* $Id$ + * This code was generated by the XML Schema Compiler. + * + * Changes made to this code will most likely be overwritten + * when the handlers are recompiled. + * + * If you find errors or feel that there are bugfixes to be made, + * please contact the current XSC maintainer: + * Will Otte + */ + +// Fix for Borland compilers, which seem to have a broken +// include. +#ifdef __BORLANDC__ +# include +#endif + diff --git a/modules/CIAO/DAnCE/lib/.empty b/modules/CIAO/DAnCE/lib/.empty new file mode 100644 index 00000000000..eb0e403e06a --- /dev/null +++ b/modules/CIAO/DAnCE/lib/.empty @@ -0,0 +1 @@ +This file keeps the directory around even when using cvs update -dP diff --git a/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.idl b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.idl new file mode 100644 index 00000000000..e01d7c16d2c --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.idl @@ -0,0 +1,22 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef COMMAND_LINE_PASSAGE_IDL_ +#define COMMAND_LINE_PASSAGE_IDL_ + +#include + +module command_line_test +{ + component A + { + attribute long tc_max; + }; +}; +#endif diff --git a/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.mpc b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.mpc new file mode 100644 index 00000000000..288ab7c0f55 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage.mpc @@ -0,0 +1,125 @@ +// $Id$ + +project(CommandlinePassage_idl_gen) : componentidldefaults { + after += + custom_only = 1 + idlflags += -Wb,stub_export_macro=COMMANDLINEPASSAGE_STUB_Export \ + -Wb,stub_export_include=CommandlinePassage_stub_export.h \ + -Wb,skel_export_macro=COMMANDLINEPASSAGE_SVNT_Export \ + -Wb,skel_export_include=CommandlinePassage_svnt_export.h \ + -Wb,exec_export_macro=COMMANDLINEPASSAGE_EXEC_Export \ + -Wb,exec_export_include=CommandlinePassage_exec_export.h \ + -I .. + + IDL_Files { + CommandlinePassage.idl + } +} + +project(CommandlinePassage_lem_gen) : ciaoidldefaults { + after += CommandlinePassage_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=COMMANDLINEPASSAGE_EXEC_Export \ + -Wb,stub_export_include=CommandlinePassage_exec_export.h \ + -SS -Gxhst -I .. + + IDL_Files { + CommandlinePassageE.idl + } +} + +project(CommandlinePassage_lem_stub) : ccm_svnt, dds4ccm_base { + after += CommandlinePassage_lem_gen CommandlinePassage_stub + libs += CommandlinePassage_stub + sharedname = CommandlinePassage_lem_stub + dynamicflags = COMMANDLINEPASSAGE_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CommandlinePassageEC.cpp + } + + Header_Files { + CommandlinePassageEC.h + CommandlinePassage_exec_export.h + } + + Inline_Files { + CommandlinePassageEC.inl + } +} + +project(CommandlinePassage_stub) : ccm_stub, dds4ccm_base { + after += CommandlinePassage_idl_gen + libs += + sharedname = CommandlinePassage_stub + dynamicflags = COMMANDLINEPASSAGE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CommandlinePassageC.cpp + } + + Header_Files { + CommandlinePassageC.h + CommandlinePassage_stub_export.h + } + + Inline_Files { + CommandlinePassageC.inl + } +} + +project(CommandlinePassage_exec) : ciao_executor, dds4ccm_base { + after += CommandlinePassage_lem_stub CommandlinePassage_stub + sharedname = CommandlinePassage_exec + libs += CommandlinePassage_stub CommandlinePassage_lem_stub + dynamicflags = COMMANDLINEPASSAGE_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CommandlinePassage_exec.cpp + } + + Header_Files { + CommandlinePassage_exec.h + CommandlinePassage_exec_export.h + } + + Inline_Files { + } +} + + +project(CommandlinePassage_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += CommandlinePassage_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = CommandlinePassage_svnt + libs += CommandlinePassage_stub CommandlinePassage_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + dynamicflags = COMMANDLINEPASSAGE_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CommandlinePassageS.cpp + CommandlinePassage_svnt.cpp + } + + Header_Files { + CommandlinePassageS.h + CommandlinePassage_svnt.h + CommandlinePassage_svnt_export.h + } + + Inline_Files { + CommandlinePassageS.inl + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.cpp new file mode 100644 index 00000000000..bb39ab4e3a3 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.cpp @@ -0,0 +1,99 @@ +// -*- C++ -*- +// $Id$ + +#include "CommandlinePassage_exec.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "tao/Transport_Cache_Manager.h" +#include "tao/Thread_Lane_Resources.h" + +namespace CIAO_command_line_test_A_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + + Component_exec_i::Component_exec_i (void) + : tc_max_ (3) + { + } + + Component_exec_i::~Component_exec_i (void) + { + } + + // Port operations. + void Component_exec_i::tc_max (CORBA::Long tc_max) + { + this->tc_max_ = tc_max; + } + + CORBA::Long Component_exec_i::tc_max (void) + { + return this->tc_max_; + } + // Operations from Components::SessionComponent. + void + Component_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::command_line_test::CCM_A_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Component_exec_i::configuration_complete (void) + { + } + + void + Component_exec_i::ccm_activate (void) + { + } + + void + Component_exec_i::ccm_passivate (void) + { + } + + void + Component_exec_i::ccm_remove (void) + { + try + { + long tc = + this->context_->get_CCM_object ()->_get_orb ()->orb_core ()->lane_resources ().transport_cache ().total_size (); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Transport cache : set <%d>, current_size <%d>\n"), + this->tc_max_, tc)); + if (this->tc_max_ != tc) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Commandline parameter isn't not passed properly ") + ACE_TEXT ("should be <%d>, is <%d>\n"), + this->tc_max_, tc)); + } + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Exception caught while checking transport cache.\n"))); + } + } + + extern "C" COMMANDLINEPASSAGE_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Component_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Component_exec_i ); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.h b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.h new file mode 100644 index 00000000000..d8bcc90c430 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/CommandlinePassage_exec.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +// $Id$ + +#ifndef COMPONENTLINPASSAGE_EXEC_H_ +#define COMPONENTLINPASSAGE_EXEC_H_ + + +#include "CommandlinePassageEC.h" + +#include /**/ "CommandlinePassage_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_command_line_test_A_Impl +{ + class Component_exec_i + : public virtual A_Exec, + public virtual ::CORBA::LocalObject + { + public: + Component_exec_i (void); + virtual ~Component_exec_i (void); + + virtual void + tc_max (CORBA::Long tc_max); + + virtual CORBA::Long + tc_max (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::command_line_test::CCM_A_Context_var context_; + CORBA::Long tc_max_; + }; + + extern "C" COMMANDLINEPASSAGE_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Component_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/Component.cdp b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/Component.cdp new file mode 100644 index 00000000000..81caf95d6b5 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/Component.cdp @@ -0,0 +1,116 @@ + + + Hello_DDS_Deployment_1 + + + + + + CommandlinePassageComponentImplementation + + + + + + component factory + + + tk_string + + + create_Component_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_command_line_test_A_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + CommandlinePassage_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + CommandlinePassage_exec + + + + + + + CommandlinePassageComponent + CommandlinePassageNode + + + + + + edu.vanderbilt.dre.CIAO.ComponentServer.Args + + + tk_string + + + -ORBSvcConfDirective "static Resource_Factory '-ORBConnectionCacheMax 33'" + + + + + tc_max + + + tk_long + + + 33 + + + + + + + + CommandlinePassage_exec + + + CommandlinePassage_exec + + + CommandlinePassage_svnt + + + CommandlinePassage_svnt + + + CommandlinePassage_stub + + + CommandlinePassage_stub + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/run_test.pl b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/run_test.pl new file mode 100755 index 00000000000..213364a0ee6 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/CommandlinePassage/run_test.pl @@ -0,0 +1,228 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "CommandlinePassage.ior" ); +@iorfiles = 0; +@nodenames = ( "CommandlinePassageNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Component.cdp"; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('.'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('.'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('.'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('.'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.idl new file mode 100644 index 00000000000..6c38a2dd8f0 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.idl @@ -0,0 +1,15 @@ +// $Id$ + +#include + +module Simple +{ + component ProcessColocation + { + attribute string process_name; + }; + + home ProcessColocationHome manages ProcessColocation + { + }; +}; diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.mpc new file mode 100644 index 00000000000..126ad174031 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation.mpc @@ -0,0 +1,108 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl ProcessColocation" + +project(ProcessColocation_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=PROCESSCOLOCATION_STUB_Export \ + -Wb,stub_export_include=ProcessColocation_stub_export.h \ + -Wb,skel_export_macro=PROCESSCOLOCATION_SVNT_Export \ + -Wb,skel_export_include=ProcessColocation_svnt_export.h \ + -Wb,exec_export_macro=PROCESSCOLOCATION_EXEC_Export \ + -Wb,exec_export_include=ProcessColocation_exec_export.h + + IDL_Files { + ProcessColocation.idl + } +} + +project(ProcessColocation_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += ProcessColocation_idl_gen + idlflags += -Wb,export_macro=PROCESSCOLOCATION_EXEC_Export \ + -Wb,export_include=ProcessColocation_exec_export.h \ + -SS + + IDL_Files { + ProcessColocationE.idl + } +} + +project(ProcessColocation_stub) : ccm_stub { + after += ProcessColocation_idl_gen + libs += + + sharedname = ProcessColocation_stub + dynamicflags = PROCESSCOLOCATION_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ProcessColocationC.cpp + } + + Header_Files { + ProcessColocationC.h + ProcessColocation_stub_export.h + } + + Inline_Files { + ProcessColocationC.inl + } +} + +project(ProcessColocation_exec) : ciao_executor { + after += ProcessColocation_lem_gen ProcessColocation_stub + sharedname = ProcessColocation_exec + libs += ProcessColocation_stub + + dynamicflags = PROCESSCOLOCATION_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ProcessColocationEC.cpp + ProcessColocation_exec.cpp + } + + Header_Files { + ProcessColocationEC.h + ProcessColocation_exec.h + ProcessColocation_exec_export.h + } + + Inline_Files { + ProcessColocationEC.inl + } +} + + +project(ProcessColocation_svnt) : ciao_servant { + after += ProcessColocation_exec + sharedname = ProcessColocation_svnt + libs += ProcessColocation_exec \ + ProcessColocation_stub + + dynamicflags = PROCESSCOLOCATION_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ProcessColocationS.cpp + ProcessColocation_svnt.cpp + } + + Header_Files { + ProcessColocationS.h + ProcessColocation_svnt.h + ProcessColocation_svnt_export.h + } + + Inline_Files { + ProcessColocationS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp new file mode 100644 index 00000000000..2783374c1a5 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.cpp @@ -0,0 +1,189 @@ +// -*- C++ -*- +// $Id$ + +#include "ProcessColocation_exec.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "ace/Singleton.h" + +namespace +{ + class Colocation_Tester + { + public: + Colocation_Tester (void) + : value_ ("") + { + } + + ACE_CString value (void) + { + return value_; + } + + void value (const ACE_CString &s) + { + value_ = s; + } + + private: + ACE_CString value_; + }; + + typedef ACE_Singleton Colocation_Tester_Singleton; + +#define TESTER Colocation_Tester_Singleton::instance () +} + +namespace CIAO_Simple_ProcessColocation_Impl +{ + //============================================================ + // Component Executor Implementation Class: ProcessColocation_exec_i + //============================================================ + + ProcessColocation_exec_i::ProcessColocation_exec_i (void) + { + } + + ProcessColocation_exec_i::~ProcessColocation_exec_i (void) + { + } + + // Supported operations and attributes. + + // Component attributes. + + char * + ProcessColocation_exec_i::process_name (void) + { + return CORBA::string_dup (this->process_name_.c_str ()); + } + + void + ProcessColocation_exec_i::process_name ( + const char * process_name ) + { + ACE_DEBUG ((LM_EMERGENCY, "Setting attr process name:%C\n", + process_name)); + + this->process_name_ = process_name; + TESTER->value (process_name); + } + + // Port operations. + + // Operations from Components::SessionComponent. + + void + ProcessColocation_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Simple::CCM_ProcessColocation_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + ProcessColocation_exec_i::configuration_complete (void) + { + /* Your code here. */ + } + + void + ProcessColocation_exec_i::ccm_activate (void) + { + ACE_CString value = TESTER->value (); + + if (this->process_name_ != value) + { + ACE_DEBUG ((LM_EMERGENCY, "ProcessColocation_exec_i::ccm_activate - " + "Error: I am colocated with someone I shouldn't be. " + "My process value is %C, expected %C\n", + value.c_str (), + this->process_name_.c_str ())); + // throw CORBA::BAD_PARAM (); + } + } + + void + ProcessColocation_exec_i::ccm_passivate (void) + { + /* Your code here. */ + } + + void + ProcessColocation_exec_i::ccm_remove (void) + { + /* Your code here. */ + } + + extern "C" PROCESSCOLOCATION_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Simple_ProcessColocation_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + ProcessColocation_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } +} + +namespace CIAO_Simple_ProcessColocation_Impl +{ + //============================================================ + // Home Executor Implementation Class: ProcessColocationHome_exec_i + //============================================================ + + ProcessColocationHome_exec_i::ProcessColocationHome_exec_i (void) + { + } + + ProcessColocationHome_exec_i::~ProcessColocationHome_exec_i (void) + { + } + + // All operations and attributes. + + // Factory operations. + + // Finder operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + ProcessColocationHome_exec_i::create (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + ProcessColocation_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" PROCESSCOLOCATION_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_ProcessColocationHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + ProcessColocationHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.h new file mode 100644 index 00000000000..ed5e8d3d950 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/ProcessColocation_exec.h @@ -0,0 +1,126 @@ +// -*- C++ -*- +// +// $Id$ + +// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 **** +// TAO and the TAO IDL Compiler have been developed by: +// Center for Distributed Object Computing +// Washington University +// St. Louis, MO +// USA +// http://www.cs.wustl.edu/~schmidt/doc-center.html +// and +// Distributed Object Computing Laboratory +// University of California at Irvine +// Irvine, CA +// USA +// http://doc.ece.uci.edu/ +// and +// Institute for Software Integrated Systems +// Vanderbilt University +// Nashville, TN +// USA +// http://www.isis.vanderbilt.edu/ +// +// Information about TAO is available at: +// http://www.cs.wustl.edu/~schmidt/TAO.html + +// TAO_IDL - Generated from +// be/be_codegen.cpp:1301 + +#ifndef CIAO_PROCESSCOLOCATION_EXEC_H_ +#define CIAO_PROCESSCOLOCATION_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "ProcessColocationEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "ProcessColocation_exec_export.h" +#include "tao/LocalObject.h" +#include "ace/String_Base.h" + +namespace CIAO_Simple_ProcessColocation_Impl +{ + class PROCESSCOLOCATION_EXEC_Export ProcessColocation_exec_i + : public virtual ProcessColocation_Exec, + public virtual ::CORBA::LocalObject + { + public: + ProcessColocation_exec_i (void); + virtual ~ProcessColocation_exec_i (void); + + // Supported operations and attributes. + + // Component attributes. + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual char * + process_name (void); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + process_name ( + const char * process_name); + + // Port operations. + + // Operations from Components::SessionComponent. + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ACE_CString process_name_; + ::Simple::CCM_ProcessColocation_Context_var context_; + }; + + extern "C" PROCESSCOLOCATION_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Simple_ProcessColocation_Impl (void); +} + +namespace CIAO_Simple_ProcessColocation_Impl +{ + class PROCESSCOLOCATION_EXEC_Export ProcessColocationHome_exec_i + : public virtual ProcessColocationHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + ProcessColocationHome_exec_i (void); + + virtual ~ProcessColocationHome_exec_i (void); + + // All operations and attributes. + + // Factory operations. + + // Finder operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (void); + }; + + extern "C" PROCESSCOLOCATION_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_ProcessColocationHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.idl new file mode 100644 index 00000000000..7d41978b4de --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.idl @@ -0,0 +1,25 @@ +// $Id$ + +#ifndef SIMPLE_ATTRIBUTE_IDL +#define SIMPLE_ATTRIBUTE_IDL + +#include "Components.idl" + +module Simple +{ + component SimpleAttribute + { + attribute string str_attr; + attribute long long_attr; + attribute short short_attr; + }; + + home SimpleAttributeHome manages SimpleAttribute + { + attribute string str_attr; + attribute long long_attr; + attribute short short_attr; + }; +}; + +#endif /*SIMPLE_ATTRIBUTE_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.mpc new file mode 100644 index 00000000000..26dec1e85f5 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute.mpc @@ -0,0 +1,108 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl SimpleAttribute" + +project(SimpleAttribute_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLEATTRIBUTE_STUB_Export \ + -Wb,stub_export_include=SimpleAttribute_stub_export.h \ + -Wb,skel_export_macro=SIMPLEATTRIBUTE_SVNT_Export \ + -Wb,skel_export_include=SimpleAttribute_svnt_export.h \ + -Wb,exec_export_macro=SIMPLEATTRIBUTE_EXEC_Export \ + -Wb,exec_export_include=SimpleAttribute_exec_export.h + + IDL_Files { + SimpleAttribute.idl + } +} + +project(SimpleAttribute_lem_gen) : ciaoidldefaults { + after += SimpleAttribute_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLEATTRIBUTE_EXEC_Export \ + -Wb,export_include=SimpleAttribute_exec_export.h \ + -SS + + IDL_Files { + SimpleAttributeE.idl + } +} + +project(SimpleAttribute_stub) : ccm_stub { + after += SimpleAttribute_idl_gen + libs += + + sharedname = SimpleAttribute_stub + dynamicflags = SIMPLEATTRIBUTE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleAttributeC.cpp + } + + Header_Files { + SimpleAttributeC.h + SimpleAttribute_stub_export.h + } + + Inline_Files { + SimpleAttributeC.inl + } +} + +project(SimpleAttribute_exec) : ciao_executor { + after += SimpleAttribute_lem_gen SimpleAttribute_stub + sharedname = SimpleAttribute_exec + libs += SimpleAttribute_stub + + dynamicflags = SIMPLEATTRIBUTE_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleAttributeEC.cpp + SimpleAttribute_exec.cpp + } + + Header_Files { + SimpleAttributeEC.h + SimpleAttribute_exec.h + SimpleAttribute_exec_export.h + } + + Inline_Files { + SimpleAttributeEC.inl + } +} + + +project(SimpleAttribute_svnt) : ciao_servant { + after += SimpleAttribute_exec + sharedname = SimpleAttribute_svnt + libs += SimpleAttribute_exec \ + SimpleAttribute_stub + + dynamicflags = SIMPLEATTRIBUTE_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleAttributeS.cpp + SimpleAttribute_svnt.cpp + } + + Header_Files { + SimpleAttributeS.h + SimpleAttribute_svnt.h + SimpleAttribute_svnt_export.h + } + + Inline_Files { + SimpleAttributeS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp new file mode 100644 index 00000000000..caa0415af75 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.cpp @@ -0,0 +1,241 @@ +// $Id$ + +#include "SimpleAttribute_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleAttribute_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleAttribute_exec_i + //================================================================== + + SimpleAttribute_exec_i::SimpleAttribute_exec_i (void) + : str_ (""), + long_(-1), + short_(-1) + { + } + + SimpleAttribute_exec_i::~SimpleAttribute_exec_i (void) + { + } + + // Supported or inherited operations. + + // Attribute operations. + + char * + SimpleAttribute_exec_i::str_attr () + { + // Your code here. + return CORBA::string_dup (str_.c_str ()); + } + + void + SimpleAttribute_exec_i::str_attr (const char * str) + { + DANCE_TRACE ("SimpleAttribute_exec_i::str_attr"); + // Your code here. + this->str_ = str; + } + + ::CORBA::Long + SimpleAttribute_exec_i::long_attr () + { + DANCE_TRACE ("SimpleAttribute_exec_i::long_attr"); + // Your code here. + return long_; + } + + void + SimpleAttribute_exec_i::long_attr (::CORBA::Long long_attr ) + { + DANCE_TRACE ("SimpleAttribute_exec_i::long_attr"); + // Your code here. + this->long_ = long_attr; + } + + ::CORBA::Short + SimpleAttribute_exec_i::short_attr () + { + // Your code here. + return short_; + } + + void + SimpleAttribute_exec_i::short_attr (::CORBA::Short short_attr ) + { + DANCE_TRACE ("SimpleAttribute_exec_i::short_attr"); + // Your code here. + this->short_ = short_attr; + } + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleAttribute_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Simple::CCM_SimpleAttribute_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleAttribute_exec_i::configuration_complete () + { + // Your code here. + } + + void + SimpleAttribute_exec_i::ccm_activate () + { + // Your code here. + if (this->str_ == "" || + this->long_ == -1 || + this->short_ == -1) + { + ACE_ERROR ((LM_ERROR, "SimpleAttribute_exec_i::ccm_activate - " + "Error: Attribute values didin't initialize correctly!\n")); + } + else + { + ACE_DEBUG ((LM_EMERGENCY, "SimpleAttribute_exec_i::ccm_activate - " + "Test passed! String attribute is %s\n", + this->str_.c_str ())); + } + + } + + void + SimpleAttribute_exec_i::ccm_passivate () + { + // Your code here. + } + + void + SimpleAttribute_exec_i::ccm_remove () + { + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleAttributeHome_exec_i + //================================================================== + + SimpleAttributeHome_exec_i::SimpleAttributeHome_exec_i (void) + : str_ (""), + long_(-1), + short_(-1) + { + } + + SimpleAttributeHome_exec_i::~SimpleAttributeHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + + char * + SimpleAttributeHome_exec_i::str_attr () + { + // Your code here. + return CORBA::string_dup (str_.c_str ()); + } + + void + SimpleAttributeHome_exec_i::str_attr (const char * str) + { + DANCE_TRACE ("SimpleAttributeHome_exec_i::str_attr"); + // Your code here. + this->str_ = str; + } + + ::CORBA::Long + SimpleAttributeHome_exec_i::long_attr () + { + DANCE_TRACE ("SimpleAttributeHome_exec_i::long_attr"); + // Your code here. + return long_; + } + + void + SimpleAttributeHome_exec_i::long_attr (::CORBA::Long long_attr ) + { + DANCE_TRACE ("SimpleAttributeHome_exec_i::long_attr"); + // Your code here. + this->long_ = long_attr; + } + + ::CORBA::Short + SimpleAttributeHome_exec_i::short_attr () + { + // Your code here. + return short_; + } + + void + SimpleAttributeHome_exec_i::short_attr (::CORBA::Short short_attr ) + { + DANCE_TRACE ("SimpleAttributeHome_exec_i::short_attr"); + // Your code here. + this->short_ = short_attr; + } + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleAttributeHome_exec_i::create () + { + if (this->str_ == "" || + this->long_ == -1 || + this->short_ == -1) + { + ACE_ERROR ((LM_ERROR, "SimpleAttribute_exec_i::ccm_activate - " + "Error: Attribute values didin't initialize correctly!\n")); + } + else + { + ACE_DEBUG ((LM_EMERGENCY, "SimpleAttributeHome_exec_i::create - " + "Test passed! String attribute is %s\n", + this->str_.c_str ())); + } + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleAttribute_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLEATTRIBUTE_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleAttributeHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleAttributeHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h new file mode 100644 index 00000000000..72a7805247f --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleAttribute_exec.h @@ -0,0 +1,123 @@ +// $Id$ + +#ifndef CIAO_SIMPLEATTRIBUTE_EXEC_H +#define CIAO_SIMPLEATTRIBUTE_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleAttributeEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleAttribute_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleAttribute_Impl +{ + class SIMPLEATTRIBUTE_EXEC_Export SimpleAttribute_exec_i + : public virtual SimpleAttribute_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleAttribute_exec_i (void); + virtual ~SimpleAttribute_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + virtual char * + str_attr (); + + virtual void + str_attr (const char * str_attr); + + virtual ::CORBA::Long + long_attr (); + + virtual void + long_attr (::CORBA::Long long_attr); + + virtual ::CORBA::Short + short_attr (); + + virtual void + short_attr (::CORBA::Short short_attr); + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleAttribute_Context_var context_; + ACE_CString str_; + ::CORBA::Long long_; + ::CORBA::Short short_; + }; + + class SIMPLEATTRIBUTE_EXEC_Export SimpleAttributeHome_exec_i + : public virtual SimpleAttributeHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleAttributeHome_exec_i (void); + virtual ~SimpleAttributeHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + virtual char * + str_attr (); + + virtual void + str_attr (const char * str_attr); + + virtual ::CORBA::Long + long_attr (); + + virtual void + long_attr (::CORBA::Long long_attr); + + virtual ::CORBA::Short + short_attr (); + + virtual void + short_attr (::CORBA::Short short_attr); + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + private: + ACE_CString str_; + ::CORBA::Long long_; + ::CORBA::Short short_; + }; + + extern "C" SIMPLEATTRIBUTE_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleAttributeHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLEATTRIBUTE_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.idl new file mode 100644 index 00000000000..6f943e9d1d5 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_COMMON_IDL +#define SIMPLE_COMMON_IDL + +#include "Components.idl" + +module Simple +{ + interface Trigger + { + void hello (in string hello); + }; + + eventtype Hello + { + public string hello_; + }; +}; + +#endif /*SIMPLE_COMMON_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.mpc new file mode 100644 index 00000000000..ff4417ad9a8 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleCommon.mpc @@ -0,0 +1,79 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl SimpleCommon" + +project(SimpleCommon_idl_gen) : ciaoidldefaults, anytypecode { + custom_only = 1 + idlflags += -Gxhst -Gxhsk \ + -Wb,stub_export_macro=SIMPLECOMMON_STUB_Export \ + -Wb,stub_export_include=SimpleCommon_stub_export.h \ + -Wb,skel_export_macro=SIMPLECOMMON_SKEL_Export \ + -Wb,skel_export_include=SimpleCommon_skel_export.h -Glem + + IDL_Files { + SimpleCommon.idl + } +} + +project(SimpleCommon_lem_gen) : ciaoidldefaults { + custom_only = 1 + idlflags += -Gxhst \ + -Wb,export_macro=SIMPLECOMMON_STUB_Export \ + -Wb,export_include=SimpleCommon_stub_export.h \ + -SS + after += SimpleCommon_idl_gen + + IDL_Files { + SimpleCommonE.idl + } +} + +project(SimpleCommon_stub) : ccm_stub { + after += SimpleCommon_lem_gen + libs += + + sharedname = SimpleCommon_stub + dynamicflags = SIMPLECOMMON_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleCommonC.cpp + SimpleCommonEC.cpp + } + + Header_Files { + SimpleCommonC.h + SimpleCommon_stub_export.h + } + + Inline_Files { + SimpleCommonC.inl + } +} + +project(SimpleCommon_skel) : ccm_svnt { + after += SimpleCommon_stub + sharedname = SimpleCommon_skel + libs += SimpleCommon_stub + + dynamicflags = SIMPLECOMMON_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleCommonS.cpp + } + + Header_Files { + SimpleCommonS.h + SimpleCommon_skel_export.h + } + + Inline_Files { + SimpleCommonS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.idl new file mode 100644 index 00000000000..3895eacda3c --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_CONSUMER_IDL +#define SIMPLE_CONSUMER_IDL + +#include "SimpleCommon.idl" +#include + +module Simple +{ + component SimpleConsumer + { + consumes Hello hello_; + }; + + home SimpleConsumerHome manages SimpleConsumer + { + }; +}; + +#endif /*SIMPLE_CONSUMER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.mpc new file mode 100644 index 00000000000..c63d06d2b98 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer.mpc @@ -0,0 +1,110 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleConsumer" + +project(SimpleCommon_SimpleConsumer_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLECONSUMER_STUB_Export \ + -Wb,stub_export_include=SimpleConsumer_stub_export.h \ + -Wb,skel_export_macro=SIMPLECONSUMER_SVNT_Export \ + -Wb,skel_export_include=SimpleConsumer_svnt_export.h \ + -Wb,exec_export_macro=SIMPLECONSUMER_EXEC_Export \ + -Wb,exec_export_include=SimpleConsumer_exec_export.h \ + + IDL_Files { + SimpleConsumer.idl + } +} + +project(SimpleCommon_SimpleConsumer_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SimpleConsumer_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLECONSUMER_EXEC_Export \ + -Wb,export_include=SimpleConsumer_exec_export.h \ + -SS + + IDL_Files { + SimpleConsumerE.idl + } +} + +project(SimpleCommon_SimpleConsumer_stub) : ccm_stub { + after += SimpleCommon_SimpleConsumer_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimpleConsumer_stub + dynamicflags = SIMPLECONSUMER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleConsumerC.cpp + } + + Header_Files { + SimpleConsumerC.h + SimpleConsumer_stub_export.h + } + + Inline_Files { + SimpleConsumerC.inl + } +} + +project(SimpleCommon_SimpleConsumer_exec) : ciao_executor { + after += SimpleCommon_SimpleConsumer_lem_gen SimpleCommon_SimpleConsumer_stub + sharedname = SimpleConsumer_exec + libs += SimpleConsumer_stub SimpleCommon_stub + + dynamicflags = SIMPLECONSUMER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleConsumerEC.cpp + SimpleConsumer_exec.cpp + } + + Header_Files { + SimpleConsumerEC.h + SimpleConsumer_exec.h + SimpleConsumer_exec_export.h + } + + Inline_Files { + SimpleConsumerEC.inl + } +} + + +project(SimpleCommon_SimpleConsumer_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SimpleConsumer_exec + sharedname = SimpleConsumer_svnt + libs += SimpleConsumer_exec \ + SimpleConsumer_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLECONSUMER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleConsumerS.cpp + SimpleConsumer_svnt.cpp + } + + Header_Files { + SimpleConsumerS.h + SimpleConsumer_svnt.h + SimpleConsumer_svnt_export.h + } + + Inline_Files { + SimpleConsumerS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp new file mode 100644 index 00000000000..7d090ea568c --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.cpp @@ -0,0 +1,138 @@ +// $Id$ + +#include "SimpleConsumer_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleConsumer_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleConsumer_exec_i + //================================================================== + + SimpleConsumer_exec_i::SimpleConsumer_exec_i (void) + { + DANCE_TRACE ("SimpleConsumer_exec_i::SimpleConsumer_exec_i (void)"); + } + + SimpleConsumer_exec_i::~SimpleConsumer_exec_i (void) + { + DANCE_TRACE ("SimpleConsumer_exec_i::~SimpleConsumer_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + void + SimpleConsumer_exec_i::push_hello_ ( + ::Simple::Hello * ev ) + { + DANCE_TRACE ("SimpleConsumer_exec_i::push_hello_ ()"); + // Your code here. + + ACE_DEBUG ((LM_EMERGENCY, "SimpleConsumer_exec_i::push_hello_ - " + "Received hello event, value is %s\n", ev->hello_ ())); + } + + // Operations from Components::SessionComponent + + void + SimpleConsumer_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleConsumer_exec_i::set_session_context ()"); + + this->context_ = + ::Simple::CCM_SimpleConsumer_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleConsumer_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleConsumer_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleConsumer_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleConsumer_exec_i::ccm_activate ()"); + // Your code here. + } + + void + SimpleConsumer_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleConsumer_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimpleConsumer_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleConsumer_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleConsumerHome_exec_i + //================================================================== + + SimpleConsumerHome_exec_i::SimpleConsumerHome_exec_i (void) + { + DANCE_TRACE ("SimpleConsumerHome_exec_i::SimpleConsumerHome_exec_i (void)"); + } + + SimpleConsumerHome_exec_i::~SimpleConsumerHome_exec_i (void) + { + DANCE_TRACE ("SimpleConsumerHome_exec_i::~SimpleConsumerHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleConsumerHome_exec_i::create () + { + DANCE_TRACE ("SimpleConsumerHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleConsumer_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLECONSUMER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleConsumerHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleConsumerHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleConsumerHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h new file mode 100644 index 00000000000..2069c87dbbb --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleConsumer_exec.h @@ -0,0 +1,84 @@ +// $Id$ + +#ifndef CIAO_SIMPLECONSUMER_EXEC_H +#define CIAO_SIMPLECONSUMER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleConsumerEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleConsumer_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleConsumer_Impl +{ + class SIMPLECONSUMER_EXEC_Export SimpleConsumer_exec_i + : public virtual SimpleConsumer_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleConsumer_exec_i (void); + virtual ~SimpleConsumer_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + virtual void + push_hello_ ( + ::Simple::Hello *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleConsumer_Context_var context_; + }; + + class SIMPLECONSUMER_EXEC_Export SimpleConsumerHome_exec_i + : public virtual SimpleConsumerHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleConsumerHome_exec_i (void); + virtual ~SimpleConsumerHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLECONSUMER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleConsumerHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLECONSUMER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.idl new file mode 100644 index 00000000000..37431ca8134 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_EMITTER_IDL +#define SIMPLE_EMITTER_IDL + +#include "SimpleCommon.idl" +#include "Components.idl" + +module Simple +{ + component SimpleEmitter + { + emits Hello hello; + }; + + home SimpleEmitterHome manages SimpleEmitter + { + }; +}; + +#endif /*SIMPLE_EMITTER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.mpc new file mode 100644 index 00000000000..62f942a8498 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter.mpc @@ -0,0 +1,110 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleEmitter" + +project(SimpleCommon_SimpleEmitter_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLEEMITTER_STUB_Export \ + -Wb,stub_export_include=SimpleEmitter_stub_export.h \ + -Wb,skel_export_macro=SIMPLEEMITTER_SVNT_Export \ + -Wb,skel_export_include=SimpleEmitter_svnt_export.h \ + -Wb,exec_export_macro=SIMPLEEMITTER_EXEC_Export \ + -Wb,exec_export_include=SimpleEmitter_exec_export.h \ + + IDL_Files { + SimpleEmitter.idl + } +} + +project(SimpleCommon_SimpleEmitter_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SimpleEmitter_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLEEMITTER_EXEC_Export \ + -Wb,export_include=SimpleEmitter_exec_export.h \ + -SS + + IDL_Files { + SimpleEmitterE.idl + } +} + +project(SimpleCommon_SimpleEmitter_stub) : ccm_stub { + after += SimpleCommon_SimpleEmitter_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimpleEmitter_stub + dynamicflags = SIMPLEEMITTER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleEmitterC.cpp + } + + Header_Files { + SimpleEmitterC.h + SimpleEmitter_stub_export.h + } + + Inline_Files { + SimpleEmitterC.inl + } +} + +project(SimpleCommon_SimpleEmitter_exec) : ciao_executor { + after += SimpleCommon_SimpleEmitter_lem_gen SimpleCommon_SimpleEmitter_stub + sharedname = SimpleEmitter_exec + libs += SimpleEmitter_stub SimpleCommon_stub + + dynamicflags = SIMPLEEMITTER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleEmitterEC.cpp + SimpleEmitter_exec.cpp + } + + Header_Files { + SimpleEmitterEC.h + SimpleEmitter_exec.h + SimpleEmitter_exec_export.h + } + + Inline_Files { + SimpleEmitterEC.inl + } +} + + +project(SimpleCommon_SimpleEmitter_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SimpleEmitter_exec + sharedname = SimpleEmitter_svnt + libs += SimpleEmitter_exec \ + SimpleEmitter_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLEEMITTER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleEmitterS.cpp + SimpleEmitter_svnt.cpp + } + + Header_Files { + SimpleEmitterS.h + SimpleEmitter_svnt.h + SimpleEmitter_svnt_export.h + } + + Inline_Files { + SimpleEmitterS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp new file mode 100644 index 00000000000..a650d1f3d19 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.cpp @@ -0,0 +1,131 @@ +// $Id$ + +#include "SimpleEmitter_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleEmitter_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleEmitter_exec_i + //================================================================== + + SimpleEmitter_exec_i::SimpleEmitter_exec_i (void) + { + DANCE_TRACE ("SimpleEmitter_exec_i::SimpleEmitter_exec_i (void)"); + } + + SimpleEmitter_exec_i::~SimpleEmitter_exec_i (void) + { + DANCE_TRACE ("SimpleEmitter_exec_i::~SimpleEmitter_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleEmitter_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleEmitter_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimpleEmitter_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleEmitter_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleEmitter_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleEmitter_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleEmitter_exec_i::ccm_activate ()"); + // Your code here. + + ::Simple::Hello_var hello = new OBV_Simple::Hello ("Test successful, hello from SimpleEmitter_exec_i"); + + this->context_->push_hello (hello._retn ()); + } + + void + SimpleEmitter_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleEmitter_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimpleEmitter_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleEmitter_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleEmitterHome_exec_i + //================================================================== + + SimpleEmitterHome_exec_i::SimpleEmitterHome_exec_i (void) + { + DANCE_TRACE ("SimpleEmitterHome_exec_i::SimpleEmitterHome_exec_i (void)"); + } + + SimpleEmitterHome_exec_i::~SimpleEmitterHome_exec_i (void) + { + DANCE_TRACE ("SimpleEmitterHome_exec_i::~SimpleEmitterHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleEmitterHome_exec_i::create () + { + DANCE_TRACE ("SimpleEmitterHome_exec_i::create ()"); + + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleEmitter_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLEEMITTER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleEmitterHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleEmitterHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleEmitterHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h new file mode 100644 index 00000000000..0501bfb6977 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleEmitter_exec.h @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_SIMPLEEMITTER_EXEC_H +#define CIAO_SIMPLEEMITTER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleEmitterEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleEmitter_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleEmitter_Impl +{ + class SIMPLEEMITTER_EXEC_Export SimpleEmitter_exec_i + : public virtual SimpleEmitter_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleEmitter_exec_i (void); + virtual ~SimpleEmitter_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleEmitter_Context_var context_; + }; + + class SIMPLEEMITTER_EXEC_Export SimpleEmitterHome_exec_i + : public virtual SimpleEmitterHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleEmitterHome_exec_i (void); + virtual ~SimpleEmitterHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLEEMITTER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleEmitterHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLEEMITTER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.idl new file mode 100644 index 00000000000..60aec58f9af --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_MULTIPLEUSER_IDL +#define SIMPLE_MULTIPLEUSER_IDL + +#include "SimpleCommon.idl" +#include "Components.idl" + +module Simple +{ + component SimpleMultipleUser + { + uses multiple Trigger trig; + }; + + home SimpleMultipleUserHome manages SimpleMultipleUser + { + }; +}; + +#endif /*SIMPLE_MULTIPLEUSER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc new file mode 100644 index 00000000000..c35430137db --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser.mpc @@ -0,0 +1,110 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleMultipleUser" + +project(SimpleCom_SimpleMulUser_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLEMULTIPLEUSER_STUB_Export \ + -Wb,stub_export_include=SimpleMultipleUser_stub_export.h \ + -Wb,skel_export_macro=SIMPLEMULTIPLEUSER_SVNT_Export \ + -Wb,skel_export_include=SimpleMultipleUser_svnt_export.h \ + -Wb,exec_export_macro=SIMPLEMULTIPLEUSER_EXEC_Export \ + -Wb,exec_export_include=SimpleMultipleUser_exec_export.h \ + + IDL_Files { + SimpleMultipleUser.idl + } +} + +project(SimpleCom_SimpleMulUser_lem_gen) : ciaoidldefaults { + after += SimpleCom_SimpleMulUser_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLEMULTIPLEUSER_EXEC_Export \ + -Wb,export_include=SimpleMultipleUser_exec_export.h \ + -SS + + IDL_Files { + SimpleMultipleUserE.idl + } +} + +project(SimpleCommon_SimpleMultipleUser_stub) : ccm_stub { + after += SimpleCommon_stub SimpleCom_SimpleMulUser_idl_gen + libs += SimpleCommon_stub + + sharedname = SimpleMultipleUser_stub + dynamicflags = SIMPLEMULTIPLEUSER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleMultipleUserC.cpp + } + + Header_Files { + SimpleMultipleUserC.h + SimpleMultipleUser_stub_export.h + } + + Inline_Files { + SimpleMultipleUserC.inl + } +} + +project(SimpleCommon_SimpleMultipleUser_exec) : ciao_executor { + after += SimpleCom_SimpleMulUser_lem_gen SimpleCommon_SimpleMultipleUser_stub + sharedname = SimpleMultipleUser_exec + libs += SimpleMultipleUser_stub SimpleCommon_stub + + dynamicflags = SIMPLEMULTIPLEUSER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleMultipleUserEC.cpp + SimpleMultipleUser_exec.cpp + } + + Header_Files { + SimpleMultipleUserEC.h + SimpleMultipleUser_exec.h + SimpleMultipleUser_exec_export.h + } + + Inline_Files { + SimpleMultipleUserEC.inl + } +} + + +project(SimpleCommon_SimpleMultipleUser_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SimpleMultipleUser_exec + sharedname = SimpleMultipleUser_svnt + libs += SimpleMultipleUser_exec \ + SimpleMultipleUser_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLEMULTIPLEUSER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleMultipleUserS.cpp + SimpleMultipleUser_svnt.cpp + } + + Header_Files { + SimpleMultipleUserS.h + SimpleMultipleUser_svnt.h + SimpleMultipleUser_svnt_export.h + } + + Inline_Files { + SimpleMultipleUserS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp new file mode 100644 index 00000000000..a61b791df5b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.cpp @@ -0,0 +1,158 @@ +// $Id$ + +#include "SimpleMultipleUser_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleMultipleUser_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleMultipleUser_exec_i + //================================================================== + + SimpleMultipleUser_exec_i::SimpleMultipleUser_exec_i (void) + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::SimpleMultipleUser_exec_i (void)"); + } + + SimpleMultipleUser_exec_i::~SimpleMultipleUser_exec_i (void) + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::~SimpleMultipleUser_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleMultipleUser_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimpleMultipleUser_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleMultipleUser_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleMultipleUser_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::ccm_activate ()"); + + ::Simple::SimpleMultipleUser::trigConnections_var conns = + this->context_->get_connections_trig (); + + ACE_DEBUG ((LM_NOTICE, "SimpleMultipleUser_exec_i::ccm_activate - " + "Got %u connections to my receptacle\n", + conns->length ())); + + for (CORBA::ULong i = 0; i < conns->length (); ++i) + { + try + { + ACE_DEBUG ((LM_NOTICE, "SimpleMultipleUser_exec_i::ccm_activate - " + "Invoking %u'th connection\n", i)); + ::Simple::Trigger_var trig (conns[i].objref); + + trig->hello ("Test succeeded, hello from SimpleMultipleUser_exec"); + } + catch (const CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR, "SimpleMultipleUser_exec_i::ccm_activate () - " + "Caught CORBA exception on %u'th reference, details follow:\n", + i)); + ex._tao_print_exception ("SimpleUser_exec_i::ccm_activate () - "); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "SimpleMultipleUser_exec_i::ccm_activate () - " + "Error: Caught unknown exception whilst invoking reference for port trig.\n")); + } + } + + // Your code here. + } + + void + SimpleMultipleUser_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimpleMultipleUser_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleMultipleUser_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleMultipleUserHome_exec_i + //================================================================== + + SimpleMultipleUserHome_exec_i::SimpleMultipleUserHome_exec_i (void) + { + DANCE_TRACE ("SimpleMultipleUserHome_exec_i::SimpleMultipleUserHome_exec_i (void)"); + } + + SimpleMultipleUserHome_exec_i::~SimpleMultipleUserHome_exec_i (void) + { + DANCE_TRACE ("SimpleMultipleUserHome_exec_i::~SimpleMultipleUserHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleMultipleUserHome_exec_i::create () + { + DANCE_TRACE ("SimpleMultipleUserHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleMultipleUser_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLEMULTIPLEUSER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleMultipleUserHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleMultipleUserHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleMultipleUserHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h new file mode 100644 index 00000000000..3b61eba9571 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleMultipleUser_exec.h @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_SIMPLEMULTIPLEUSER_EXEC_H +#define CIAO_SIMPLEMULTIPLEUSER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleMultipleUserEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleMultipleUser_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleMultipleUser_Impl +{ + class SIMPLEMULTIPLEUSER_EXEC_Export SimpleMultipleUser_exec_i + : public virtual SimpleMultipleUser_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleMultipleUser_exec_i (void); + virtual ~SimpleMultipleUser_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleMultipleUser_Context_var context_; + }; + + class SIMPLEMULTIPLEUSER_EXEC_Export SimpleMultipleUserHome_exec_i + : public virtual SimpleMultipleUserHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleMultipleUserHome_exec_i (void); + virtual ~SimpleMultipleUserHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLEMULTIPLEUSER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleMultipleUserHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLEMULTIPLEUSER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.idl new file mode 100644 index 00000000000..b7cbae53e70 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.idl @@ -0,0 +1,22 @@ +// $Id$ + +#ifndef SIMPLE_PROVIDER_IDL +#define SIMPLE_PROVIDER_IDL + +#include "SimpleCommon.idl" +#include "SimpleCommonE.idl" +#include "Components.idl" + +module Simple +{ + component SimpleNilFacetProvider + { + provides Trigger trig; + }; + + home SimpleNilFacetProviderHome manages SimpleNilFacetProvider + { + }; +}; + +#endif /*SIMPLE_PROVIDER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc new file mode 100644 index 00000000000..6862defa599 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider.mpc @@ -0,0 +1,112 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleNilFacetProvider" + +project(SimpleCommon_SNFP_idl_gen) : componentidldefaults { + after += SimpleCommon_idl_gen + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=SIMPLENILFACETPROVIDER_STUB_Export \ + -Wb,stub_export_include=SimpleNilFacetProvider_stub_export.h \ + -Wb,skel_export_macro=SIMPLENILFACETPROVIDER_SVNT_Export \ + -Wb,skel_export_include=SimpleNilFacetProvider_svnt_export.h \ + -Wb,exec_export_macro=SIMPLENILFACETPROVIDER_EXEC_Export \ + -Wb,exec_export_include=SimpleNilFacetProvider_exec_export.h + + IDL_Files { + SimpleNilFacetProvider.idl + } +} + +project(SimpleCommon_SNFP_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SNFP_idl_gen SimpleCommon_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLENILFACETPROVIDER_EXEC_Export \ + -Wb,export_include=SimpleNilFacetProvider_exec_export.h \ + -SS + + IDL_Files { + SimpleNilFacetProviderE.idl + } +} + +project(SimpleCommon_SNFP_stub) : ccm_stub { + after += SimpleCommon_SNFP_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimpleNilFacetProvider_stub + dynamicflags = SIMPLENILFACETPROVIDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNilFacetProviderC.cpp + } + + Header_Files { + SimpleNilFacetProviderC.h + SimpleNilFacetProvider_stub_export.h + } + + Inline_Files { + SimpleNilFacetProviderC.inl + } +} + +project(SimpleCommon_SNFP_exec) : ciao_executor { + after += SimpleCommon_SNFP_lem_gen SimpleCommon_SNFP_stub + sharedname = SimpleNilFacetProvider_exec + libs += SimpleNilFacetProvider_stub SimpleCommon_stub + + dynamicflags = SIMPLENILFACETPROVIDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNilFacetProviderEC.cpp + SimpleNilFacetProvider_exec.cpp + } + + Header_Files { + SimpleNilFacetProviderEC.h + SimpleNilFacetProvider_exec.h + SimpleNilFacetProvider_exec_export.h + } + + Inline_Files { + SimpleNilFacetProviderEC.inl + } +} + + +project(SimpleCommon_SNFP_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SNFP_exec + sharedname = SimpleNilFacetProvider_svnt + libs += SimpleNilFacetProvider_exec \ + SimpleNilFacetProvider_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLENILFACETPROVIDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNilFacetProviderS.cpp + SimpleNilFacetProvider_svnt.cpp + } + + Header_Files { + SimpleNilFacetProviderS.h + SimpleNilFacetProvider_svnt.h + SimpleNilFacetProvider_svnt_export.h + } + + Inline_Files { + SimpleNilFacetProviderS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp new file mode 100644 index 00000000000..5ddbb6691ba --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.cpp @@ -0,0 +1,160 @@ +// $Id$ + +#include "SimpleNilFacetProvider_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleNilFacetProvider_Impl +{ + //================================================================== + // Facet Executor Implementation Class: Trigger_exec_i + //================================================================== + + Trigger_exec_i::Trigger_exec_i (void) + { + DANCE_TRACE ("Trigger_exec_i::Trigger_exec_i (void)"); + } + + Trigger_exec_i::~Trigger_exec_i (void) + { + DANCE_TRACE ("Trigger_exec_i::~Trigger_exec_i (void)"); + } + + // Operations from ::Simple::Trigger + + void + Trigger_exec_i::hello ( + const char * hello ) + { + DANCE_TRACE ("Trigger_exec_i::hello ()"); + // Your code here. + ACE_DEBUG ((LM_EMERGENCY, "Trigger_exec_i::hello - " + "Got the following information from trig port: %C\n", + hello)); + } + + //================================================================== + // Component Executor Implementation Class: SimpleNilFacetProvider_exec_i + //================================================================== + + SimpleNilFacetProvider_exec_i::SimpleNilFacetProvider_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::SimpleNilFacetProvider_exec_i (void)"); + } + + SimpleNilFacetProvider_exec_i::~SimpleNilFacetProvider_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::~SimpleNilFacetProvider_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + ::Simple::CCM_Trigger_ptr + SimpleNilFacetProvider_exec_i::get_trig () + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::get_trig ()"); + return ::Simple::CCM_Trigger::_nil (); + } + + // Operations from Components::SessionComponent + + void + SimpleNilFacetProvider_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimpleNilFacetProvider_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleNilFacetProvider_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleNilFacetProvider_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::ccm_activate ()"); + // Your code here. + } + + void + SimpleNilFacetProvider_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimpleNilFacetProvider_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleNilFacetProvider_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleNilFacetProviderHome_exec_i + //================================================================== + + SimpleNilFacetProviderHome_exec_i::SimpleNilFacetProviderHome_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetProviderHome_exec_i::SimpleNilFacetProviderHome_exec_i (void)"); + } + + SimpleNilFacetProviderHome_exec_i::~SimpleNilFacetProviderHome_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetProviderHome_exec_i::~SimpleNilFacetProviderHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleNilFacetProviderHome_exec_i::create () + { + DANCE_TRACE ("SimpleNilFacetProviderHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleNilFacetProvider_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLENILFACETPROVIDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleNilFacetProviderHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleNilFacetProviderHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleNilFacetProviderHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.h new file mode 100644 index 00000000000..8e2525029d2 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetProvider_exec.h @@ -0,0 +1,98 @@ +// $Id$ + +#ifndef CIAO_SIMPLENILFACETPROVIDER_EXEC_H +#define CIAO_SIMPLENILFACETPROVIDER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleNilFacetProviderEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleNilFacetProvider_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleNilFacetProvider_Impl +{ + class SIMPLENILFACETPROVIDER_EXEC_Export Trigger_exec_i + : public virtual ::Simple::CCM_Trigger, + public virtual ::CORBA::LocalObject + { + public: + Trigger_exec_i (void); + virtual ~Trigger_exec_i (void); + + // Operations from ::Simple::Trigger + + virtual void + hello ( + const char * hello); + }; + + class SIMPLENILFACETPROVIDER_EXEC_Export SimpleNilFacetProvider_exec_i + : public virtual SimpleNilFacetProvider_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleNilFacetProvider_exec_i (void); + virtual ~SimpleNilFacetProvider_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + virtual ::Simple::CCM_Trigger_ptr + get_trig (); + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleNilFacetProvider_Context_var context_; + }; + + class SIMPLENILFACETPROVIDER_EXEC_Export SimpleNilFacetProviderHome_exec_i + : public virtual SimpleNilFacetProviderHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleNilFacetProviderHome_exec_i (void); + virtual ~SimpleNilFacetProviderHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLENILFACETPROVIDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleNilFacetProviderHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLENILFACETPROVIDER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.idl new file mode 100644 index 00000000000..dde46667e8c --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_USER_IDL +#define SIMPLE_USER_IDL + +#include "SimpleCommon.idl" +#include "Components.idl" + +module Simple +{ + component SimpleNilFacetUser + { + uses Trigger trig; + }; + + home SimpleNilFacetUserHome manages SimpleNilFacetUser + { + }; +}; + +#endif /*SIMPLE_USER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.mpc new file mode 100644 index 00000000000..1dd5c04b006 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser.mpc @@ -0,0 +1,111 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleNilFacetUser" + +project(SimpleCommon_SNFU_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLENILFACETUSER_STUB_Export \ + -Wb,stub_export_include=SimpleNilFacetUser_stub_export.h \ + -Wb,skel_export_macro=SIMPLENILFACETUSER_SVNT_Export \ + -Wb,skel_export_include=SimpleNilFacetUser_svnt_export.h \ + -Wb,exec_export_macro=SIMPLENILFACETUSER_EXEC_Export \ + -Wb,exec_export_include=SimpleNilFacetUser_exec_export.h \ + -Gsv + + IDL_Files { + SimpleNilFacetUser.idl + } +} + +project(SimpleCommon_SNFU_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SNFU_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLENILFACETUSER_EXEC_Export \ + -Wb,export_include=SimpleNilFacetUser_exec_export.h \ + -SS + + IDL_Files { + SimpleNilFacetUserE.idl + } +} + +project(SimpleCommon_SNFU_stub) : ccm_stub { + after += SimpleCommon_SNFU_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimpleNilFacetUser_stub + dynamicflags = SIMPLENILFACETUSER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNilFacetUserC.cpp + } + + Header_Files { + SimpleNilFacetUserC.h + SimpleNilFacetUser_stub_export.h + } + + Inline_Files { + SimpleNilFacetUserC.inl + } +} + +project(SimpleCommon_SNFU_exec) : ciao_executor { + after += SimpleCommon_SNFU_lem_gen SimpleCommon_SNFU_stub + sharedname = SimpleNilFacetUser_exec + libs += SimpleNilFacetUser_stub SimpleCommon_stub + + dynamicflags = SIMPLENILFACETUSER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNilFacetUserEC.cpp + SimpleNilFacetUser_exec.cpp + } + + Header_Files { + SimpleNilFacetUserEC.h + SimpleNilFacetUser_exec.h + SimpleNilFacetUser_exec_export.h + } + + Inline_Files { + SimpleNilFacetUserEC.inl + } +} + + +project(SimpleCommon_SNFU_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SNFU_exec + sharedname = SimpleNilFacetUser_svnt + libs += SimpleNilFacetUser_exec \ + SimpleNilFacetUser_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLENILFACETUSER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNilFacetUserS.cpp + SimpleNilFacetUser_svnt.cpp + } + + Header_Files { + SimpleNilFacetUserS.h + SimpleNilFacetUser_svnt.h + SimpleNilFacetUser_svnt_export.h + } + + Inline_Files { + SimpleNilFacetUserS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp new file mode 100644 index 00000000000..ea8382a6323 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.cpp @@ -0,0 +1,159 @@ +// $Id$ + +#include "DAnCE/Logger/Log_Macros.h" +#include "SimpleNilFacetUser_exec.h" + +namespace CIAO_Simple_SimpleNilFacetUser_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleNilFacetUser_exec_i + //================================================================== + + SimpleNilFacetUser_exec_i::SimpleNilFacetUser_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::SimpleNilFacetUser_exec_i (void)"); + } + + SimpleNilFacetUser_exec_i::~SimpleNilFacetUser_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::~SimpleNilFacetUser_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleNilFacetUser_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimpleNilFacetUser_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleNilFacetUser_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleNilFacetUser_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::ccm_activate ()"); + bool caught_exception = false; + ::Simple::Trigger_var trig (this->context_->get_connection_trig ()); + + if (CORBA::is_nil (trig.in ())) + { + ACE_ERROR ((LM_ERROR, "SimpleNilFacetUser_exec_i::ccm_activate () - " + "Error: Reference nil for port trig\n")); + return; + } + + try + { + trig->hello ("Test successful; hello from SimpleNilFacetUser."); + } + catch (const ::CORBA::INV_OBJREF &) + { + ACE_DEBUG ((LM_DEBUG, "SimpleNilFacetUser_exec_i::ccm_activate () - " + "Caught correct CORBA exception\n")); + caught_exception = true; + } + catch (const CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR, "SimpleNilFacetUser_exec_i::ccm_activate () - " + "Caught CORBA exception, details follow:\n")); + ex._tao_print_exception ("SimpleNilFacetUser_exec_i::ccm_activate () - "); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "SimpleNilFacetUser_exec_i::ccm_activate () - " + "Error: Caught unknown exception whilst invoking reference for port trig.\n")); + } + if (!caught_exception) + { + ACE_ERROR ((LM_ERROR, "SimpleNilFacetUser_exec_i::ccm_activate () - " + "Error: Didn't catch correct exception\n")); + } + } + + void + SimpleNilFacetUser_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::ccm_passivate ()"); + } + + void + SimpleNilFacetUser_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleNilFacetUser_exec_i::ccm_remove ()"); + } + + //================================================================== + // Home Executor Implementation Class: SimpleNilFacetUserHome_exec_i + //================================================================== + + SimpleNilFacetUserHome_exec_i::SimpleNilFacetUserHome_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetUserHome_exec_i::SimpleNilFacetUserHome_exec_i (void)"); + } + + SimpleNilFacetUserHome_exec_i::~SimpleNilFacetUserHome_exec_i (void) + { + DANCE_TRACE ("SimpleNilFacetUserHome_exec_i::~SimpleNilFacetUserHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleNilFacetUserHome_exec_i::create () + { + DANCE_TRACE ("SimpleNilFacetUserHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleNilFacetUser_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLENILFACETUSER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleNilFacetUserHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleNilFacetUserHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleNilFacetUserHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.h new file mode 100644 index 00000000000..897acf3ba99 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNilFacetUser_exec.h @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_SIMPLENILFACETUSER_EXEC_H +#define CIAO_SIMPLENILFACETUSER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleNilFacetUserEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleNilFacetUser_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleNilFacetUser_Impl +{ + class SIMPLENILFACETUSER_EXEC_Export SimpleNilFacetUser_exec_i + : public virtual SimpleNilFacetUser_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleNilFacetUser_exec_i (void); + virtual ~SimpleNilFacetUser_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleNilFacetUser_Context_var context_; + }; + + class SIMPLENILFACETUSER_EXEC_Export SimpleNilFacetUserHome_exec_i + : public virtual SimpleNilFacetUserHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleNilFacetUserHome_exec_i (void); + virtual ~SimpleNilFacetUserHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLENILFACETUSER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleNilFacetUserHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLENILFACETUSER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.idl new file mode 100644 index 00000000000..d8f02901be4 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.idl @@ -0,0 +1,14 @@ +// $Id$ + +#include + +module Simple +{ + component SimpleNull + { + }; + + home SimpleNullHome manages SimpleNull + { + }; +}; diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.mpc new file mode 100644 index 00000000000..84fcb5a4d94 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull.mpc @@ -0,0 +1,107 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl SimpleNull" + +project(SimpleNull_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLENULL_STUB_Export \ + -Wb,stub_export_include=SimpleNull_stub_export.h \ + -Wb,skel_export_macro=SIMPLENULL_SVNT_Export \ + -Wb,skel_export_include=SimpleNull_svnt_export.h \ + -Wb,exec_export_macro=SIMPLENULL_EXEC_Export \ + -Wb,exec_export_include=SimpleNull_exec_export.h + IDL_Files { + SimpleNull.idl + } +} + +project(SimpleNull_lem_gen) : ciaoidldefaults { + after += SimpleNull_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLENULL_EXEC_Export \ + -Wb,export_include=SimpleNull_exec_export.h \ + -SS + + IDL_Files { + SimpleNullE.idl + } +} + +project(SimpleNull_stub) : ccm_stub { + after += SimpleNull_idl_gen + libs += + + sharedname = SimpleNull_stub + dynamicflags = SIMPLENULL_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNullC.cpp + } + + Header_Files { + SimpleNullC.h + SimpleNull_stub_export.h + } + + Inline_Files { + SimpleNullC.inl + } +} + +project(SimpleNull_exec) : ciao_executor { + after += SimpleNull_lem_gen SimpleNull_stub + sharedname = SimpleNull_exec + libs += SimpleNull_stub + + dynamicflags = SIMPLENULL_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNullEC.cpp + SimpleNull_exec.cpp + } + + Header_Files { + SimpleNullEC.h + SimpleNull_exec.h + SimpleNull_exec_export.h + } + + Inline_Files { + SimpleNullEC.inl + } +} + + +project(SimpleNull_svnt) : ciao_servant { + after += SimpleNull_exec + sharedname = SimpleNull_svnt + libs += SimpleNull_exec \ + SimpleNull_stub + + dynamicflags = SIMPLENULL_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleNullS.cpp + SimpleNull_svnt.cpp + } + + Header_Files { + SimpleNullS.h + SimpleNull_svnt.h + SimpleNull_svnt_export.h + } + + Inline_Files { + SimpleNullS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp new file mode 100644 index 00000000000..eab01e30f54 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp @@ -0,0 +1,150 @@ +// $Id$ + +#include "SimpleNull_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleNull_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleNull_exec_i + //================================================================== + + SimpleNull_exec_i::SimpleNull_exec_i (void) + { + DANCE_TRACE ("SimpleNull_exec_i::SimpleNull_exec_i (void)"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::SimpleNull_exec_i (void)\n")); + } + + SimpleNull_exec_i::~SimpleNull_exec_i (void) + { + DANCE_TRACE ("SimpleNull_exec_i::~SimpleNull_exec_i"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::~SimpleNull_exec_i\n")); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleNull_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleNull_exec_i::set_session_context"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::set_session_context\n")); + this->context_ = + ::Simple::CCM_SimpleNull_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleNull_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleNull_exec_i::configuration_complete\n"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::configuration_complete\n")); + // Your code here. + } + + void + SimpleNull_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleNull_exec_i::ccm_activate"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::ccm_activate\n")); + // Your code here. + } + + void + SimpleNull_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleNull_exec_i::ccm_passivate"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::ccm_passivate\n")); + // Your code here. + } + + void + SimpleNull_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleNull_exec_i::ccm_remove"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNull_exec_i::ccm_remove\n")); + // Your code here. + } + + extern "C" SIMPLENULL_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Simple_SimpleNull_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + SimpleNull_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + //================================================================== + // Home Executor Implementation Class: SimpleNullHome_exec_i + //================================================================== + + SimpleNullHome_exec_i::SimpleNullHome_exec_i (void) + { + DANCE_TRACE ("SimpleNullHome_exec_i::SimpleNullHome_exec_i"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNullHome_exec_i::SimpleNullHome_exec_i\n")); + } + + SimpleNullHome_exec_i::~SimpleNullHome_exec_i (void) + { + DANCE_TRACE ("SimpleNullHome_exec_i::~SimpleNullHome_exec_i"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNullHome_exec_i::~SimpleNullHome_exec_i\n")); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleNullHome_exec_i::create () + { + DANCE_TRACE ("SimpleNullHome_exec_i::create"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - SimpleNullHome_exec_i::create\n")); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleNull_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLENULL_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleNullHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleNullHome_Impl"); + ACE_DEBUG ((LM_EMERGENCY, "SimpleNull - Test - Lifecycle event - create_Simple_SimpleNullHome_Impl\n")); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleNullHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h new file mode 100644 index 00000000000..5f0cce9bfbb --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h @@ -0,0 +1,83 @@ +// $Id$ + +#ifndef CIAO_SIMPLENULL_EXEC_H +#define CIAO_SIMPLENULL_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleNullEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleNull_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleNull_Impl +{ + class SIMPLENULL_EXEC_Export SimpleNull_exec_i + : public virtual SimpleNull_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleNull_exec_i (void); + virtual ~SimpleNull_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleNull_Context_var context_; + }; + + extern "C" SIMPLENULL_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Simple_SimpleNull_Impl (void); + + class SIMPLENULL_EXEC_Export SimpleNullHome_exec_i + : public virtual SimpleNullHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleNullHome_exec_i (void); + virtual ~SimpleNullHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLENULL_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleNullHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLENULL_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.idl new file mode 100644 index 00000000000..37248cf6cab --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.idl @@ -0,0 +1,22 @@ +// $Id$ + +#ifndef SIMPLE_PROVIDER_IDL +#define SIMPLE_PROVIDER_IDL + +#include "SimpleCommon.idl" +#include "SimpleCommonE.idl" +#include "Components.idl" + +module Simple +{ + component SimpleProvider + { + provides Trigger trig; + }; + + home SimpleProviderHome manages SimpleProvider + { + }; +}; + +#endif /*SIMPLE_PROVIDER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.mpc new file mode 100644 index 00000000000..352f35f64b1 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider.mpc @@ -0,0 +1,111 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleProvider" + +project(SimpleCommon_SimpleProvider_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=SIMPLEPROVIDER_STUB_Export \ + -Wb,stub_export_include=SimpleProvider_stub_export.h \ + -Wb,skel_export_macro=SIMPLEPROVIDER_SVNT_Export \ + -Wb,skel_export_include=SimpleProvider_svnt_export.h \ + -Wb,exec_export_macro=SIMPLEPROVIDER_EXEC_Export \ + -Wb,exec_export_include=SimpleProvider_exec_export.h + + IDL_Files { + SimpleProvider.idl + } +} + +project(SimpleCommon_SimpleProvider_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SimpleProvider_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLEPROVIDER_EXEC_Export \ + -Wb,export_include=SimpleProvider_exec_export.h \ + -SS + + IDL_Files { + SimpleProviderE.idl + } +} + +project(SimpleCommon_SimpleProvider_stub) : ccm_stub { + after += SimpleCommon_SimpleProvider_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimpleProvider_stub + dynamicflags = SIMPLEPROVIDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleProviderC.cpp + } + + Header_Files { + SimpleProviderC.h + SimpleProvider_stub_export.h + } + + Inline_Files { + SimpleProviderC.inl + } +} + +project(SimpleCommon_SimpleProvider_exec) : ciao_executor { + after += SimpleCommon_SimpleProvider_lem_gen SimpleCommon_SimpleProvider_stub + sharedname = SimpleProvider_exec + libs += SimpleProvider_stub SimpleCommon_stub + + dynamicflags = SIMPLEPROVIDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleProviderEC.cpp + SimpleProvider_exec.cpp + } + + Header_Files { + SimpleProviderEC.h + SimpleProvider_exec.h + SimpleProvider_exec_export.h + } + + Inline_Files { + SimpleProviderEC.inl + } +} + + +project(SimpleCommon_SimpleProvider_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SimpleProvider_exec + sharedname = SimpleProvider_svnt + libs += SimpleProvider_exec \ + SimpleProvider_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLEPROVIDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleProviderS.cpp + SimpleProvider_svnt.cpp + } + + Header_Files { + SimpleProviderS.h + SimpleProvider_svnt.h + SimpleProvider_svnt_export.h + } + + Inline_Files { + SimpleProviderS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp new file mode 100644 index 00000000000..f42c735a559 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.cpp @@ -0,0 +1,160 @@ +// $Id$ + +#include "SimpleProvider_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleProvider_Impl +{ + //================================================================== + // Facet Executor Implementation Class: Trigger_exec_i + //================================================================== + + Trigger_exec_i::Trigger_exec_i (void) + { + DANCE_TRACE ("Trigger_exec_i::Trigger_exec_i (void)"); + } + + Trigger_exec_i::~Trigger_exec_i (void) + { + DANCE_TRACE ("Trigger_exec_i::~Trigger_exec_i (void)"); + } + + // Operations from ::Simple::Trigger + + void + Trigger_exec_i::hello ( + const char * hello ) + { + DANCE_TRACE ("Trigger_exec_i::hello ()"); + // Your code here. + ACE_DEBUG ((LM_EMERGENCY, "Trigger_exec_i::hello - " + "Got the following information from trig port: %C\n", + hello)); + } + + //================================================================== + // Component Executor Implementation Class: SimpleProvider_exec_i + //================================================================== + + SimpleProvider_exec_i::SimpleProvider_exec_i (void) + { + DANCE_TRACE ("SimpleProvider_exec_i::SimpleProvider_exec_i (void)"); + } + + SimpleProvider_exec_i::~SimpleProvider_exec_i (void) + { + DANCE_TRACE ("SimpleProvider_exec_i::~SimpleProvider_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + ::Simple::CCM_Trigger_ptr + SimpleProvider_exec_i::get_trig () + { + DANCE_TRACE ("SimpleProvider_exec_i::get_trig ()"); + return new Trigger_exec_i (); + } + + // Operations from Components::SessionComponent + + void + SimpleProvider_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleProvider_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimpleProvider_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleProvider_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleProvider_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleProvider_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleProvider_exec_i::ccm_activate ()"); + // Your code here. + } + + void + SimpleProvider_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleProvider_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimpleProvider_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleProvider_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleProviderHome_exec_i + //================================================================== + + SimpleProviderHome_exec_i::SimpleProviderHome_exec_i (void) + { + DANCE_TRACE ("SimpleProviderHome_exec_i::SimpleProviderHome_exec_i (void)"); + } + + SimpleProviderHome_exec_i::~SimpleProviderHome_exec_i (void) + { + DANCE_TRACE ("SimpleProviderHome_exec_i::~SimpleProviderHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleProviderHome_exec_i::create () + { + DANCE_TRACE ("SimpleProviderHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleProvider_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLEPROVIDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleProviderHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleProviderHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleProviderHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.h new file mode 100644 index 00000000000..a0dda3db076 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleProvider_exec.h @@ -0,0 +1,98 @@ +// $Id$ + +#ifndef CIAO_SIMPLEPROVIDER_EXEC_H +#define CIAO_SIMPLEPROVIDER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleProviderEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleProvider_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleProvider_Impl +{ + class SIMPLEPROVIDER_EXEC_Export Trigger_exec_i + : public virtual ::Simple::CCM_Trigger, + public virtual ::CORBA::LocalObject + { + public: + Trigger_exec_i (void); + virtual ~Trigger_exec_i (void); + + // Operations from ::Simple::Trigger + + virtual void + hello ( + const char * hello); + }; + + class SIMPLEPROVIDER_EXEC_Export SimpleProvider_exec_i + : public virtual SimpleProvider_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleProvider_exec_i (void); + virtual ~SimpleProvider_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + virtual ::Simple::CCM_Trigger_ptr + get_trig (); + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleProvider_Context_var context_; + }; + + class SIMPLEPROVIDER_EXEC_Export SimpleProviderHome_exec_i + : public virtual SimpleProviderHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleProviderHome_exec_i (void); + virtual ~SimpleProviderHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLEPROVIDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleProviderHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLEPROVIDER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.idl new file mode 100644 index 00000000000..cee261fd15a --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_PUBLISHER_IDL +#define SIMPLE_PUBLISHER_IDL + +#include "SimpleCommon.idl" +#include "Components.idl" + +module Simple +{ + component SimplePublisher + { + publishes Hello hello; + }; + + home SimplePublisherHome manages SimplePublisher + { + }; +}; + +#endif /*SIMPLE_PUBLISHER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.mpc new file mode 100644 index 00000000000..a4b4544687d --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher.mpc @@ -0,0 +1,110 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimplePublisher" + +project(SimpleCommon_SimplePublisher_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLEPUBLISHER_STUB_Export \ + -Wb,stub_export_include=SimplePublisher_stub_export.h \ + -Wb,skel_export_macro=SIMPLEPUBLISHER_SVNT_Export \ + -Wb,skel_export_include=SimplePublisher_svnt_export.h \ + -Wb,exec_export_macro=SIMPLEPUBLISHER_EXEC_Export \ + -Wb,exec_export_include=SimplePublisher_exec_export.h \ + + IDL_Files { + SimplePublisher.idl + } +} + +project(SimpleCommon_SimplePublisher_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SimplePublisher_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLEPUBLISHER_EXEC_Export \ + -Wb,export_include=SimplePublisher_exec_export.h \ + -SS + + IDL_Files { + SimplePublisherE.idl + } +} + +project(SimpleCommon_SimplePublisher_stub) : ccm_stub { + after += SimpleCommon_SimplePublisher_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimplePublisher_stub + dynamicflags = SIMPLEPUBLISHER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimplePublisherC.cpp + } + + Header_Files { + SimplePublisherC.h + SimplePublisher_stub_export.h + } + + Inline_Files { + SimplePublisherC.inl + } +} + +project(SimpleCommon_SimplePublisher_exec) : ciao_executor { + after += SimpleCommon_SimplePublisher_lem_gen SimpleCommon_SimplePublisher_stub + sharedname = SimplePublisher_exec + libs += SimplePublisher_stub SimpleCommon_stub + + dynamicflags = SIMPLEPUBLISHER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimplePublisherEC.cpp + SimplePublisher_exec.cpp + } + + Header_Files { + SimplePublisherEC.h + SimplePublisher_exec.h + SimplePublisher_exec_export.h + } + + Inline_Files { + SimplePublisherEC.inl + } +} + + +project(SimpleCommon_SimplePublisher_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SimplePublisher_exec + sharedname = SimplePublisher_svnt + libs += SimplePublisher_exec \ + SimplePublisher_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLEPUBLISHER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimplePublisherS.cpp + SimplePublisher_svnt.cpp + } + + Header_Files { + SimplePublisherS.h + SimplePublisher_svnt.h + SimplePublisher_svnt_export.h + } + + Inline_Files { + SimplePublisherS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp new file mode 100644 index 00000000000..a0e83b17707 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.cpp @@ -0,0 +1,130 @@ +// $Id$ + +#include "SimplePublisher_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimplePublisher_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimplePublisher_exec_i + //================================================================== + + SimplePublisher_exec_i::SimplePublisher_exec_i (void) + { + DANCE_TRACE ("SimplePublisher_exec_i::SimplePublisher_exec_i (void)"); + } + + SimplePublisher_exec_i::~SimplePublisher_exec_i (void) + { + DANCE_TRACE ("SimplePublisher_exec_i::~SimplePublisher_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimplePublisher_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimplePublisher_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimplePublisher_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimplePublisher_exec_i::configuration_complete () + { + DANCE_TRACE ("SimplePublisher_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimplePublisher_exec_i::ccm_activate () + { + DANCE_TRACE ("SimplePublisher_exec_i::ccm_activate ()"); + ::Simple::Hello_var hello = new OBV_Simple::Hello ("Test successful, hello from SimplePublisher_exec_i"); + + this->context_->push_hello (hello._retn ()); + // Your code here. + } + + void + SimplePublisher_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimplePublisher_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimplePublisher_exec_i::ccm_remove () + { + DANCE_TRACE ("SimplePublisher_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimplePublisherHome_exec_i + //================================================================== + + SimplePublisherHome_exec_i::SimplePublisherHome_exec_i (void) + { + DANCE_TRACE ("SimplePublisherHome_exec_i::SimplePublisherHome_exec_i (void)"); + } + + SimplePublisherHome_exec_i::~SimplePublisherHome_exec_i (void) + { + DANCE_TRACE ("SimplePublisherHome_exec_i::~SimplePublisherHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimplePublisherHome_exec_i::create () + { + DANCE_TRACE ("SimplePublisherHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimplePublisher_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLEPUBLISHER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimplePublisherHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimplePublisherHome_Impl (void)"); + + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimplePublisherHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.h new file mode 100644 index 00000000000..0f5ab965757 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimplePublisher_exec.h @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_SIMPLEPUBLISHER_EXEC_H +#define CIAO_SIMPLEPUBLISHER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimplePublisherEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimplePublisher_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimplePublisher_Impl +{ + class SIMPLEPUBLISHER_EXEC_Export SimplePublisher_exec_i + : public virtual SimplePublisher_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimplePublisher_exec_i (void); + virtual ~SimplePublisher_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimplePublisher_Context_var context_; + }; + + class SIMPLEPUBLISHER_EXEC_Export SimplePublisherHome_exec_i + : public virtual SimplePublisherHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimplePublisherHome_exec_i (void); + virtual ~SimplePublisherHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLEPUBLISHER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimplePublisherHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLEPUBLISHER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.idl b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.idl new file mode 100644 index 00000000000..90d4e67e542 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.idl @@ -0,0 +1,21 @@ +// $Id$ + +#ifndef SIMPLE_USER_IDL +#define SIMPLE_USER_IDL + +#include "SimpleCommon.idl" +#include "Components.idl" + +module Simple +{ + component SimpleUser + { + uses Trigger trig; + }; + + home SimpleUserHome manages SimpleUser + { + }; +}; + +#endif /*SIMPLE_USER_IDL*/ diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.mpc b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.mpc new file mode 100644 index 00000000000..ff9215fabda --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser.mpc @@ -0,0 +1,111 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p SimpleCommon SimpleUser" + +project(SimpleCommon_SimpleUser_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLEUSER_STUB_Export \ + -Wb,stub_export_include=SimpleUser_stub_export.h \ + -Wb,skel_export_macro=SIMPLEUSER_SVNT_Export \ + -Wb,skel_export_include=SimpleUser_svnt_export.h \ + -Wb,exec_export_macro=SIMPLEUSER_EXEC_Export \ + -Wb,exec_export_include=SimpleUser_exec_export.h \ + -Gsv + + IDL_Files { + SimpleUser.idl + } +} + +project(SimpleCommon_SimpleUser_lem_gen) : ciaoidldefaults { + after += SimpleCommon_SimpleUser_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=SIMPLEUSER_EXEC_Export \ + -Wb,export_include=SimpleUser_exec_export.h \ + -SS + + IDL_Files { + SimpleUserE.idl + } +} + +project(SimpleCommon_SimpleUser_stub) : ccm_stub { + after += SimpleCommon_SimpleUser_idl_gen SimpleCommon_stub + libs += SimpleCommon_stub + + sharedname = SimpleUser_stub + dynamicflags = SIMPLEUSER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleUserC.cpp + } + + Header_Files { + SimpleUserC.h + SimpleUser_stub_export.h + } + + Inline_Files { + SimpleUserC.inl + } +} + +project(SimpleCommon_SimpleUser_exec) : ciao_executor { + after += SimpleCommon_SimpleUser_lem_gen SimpleCommon_SimpleUser_stub + sharedname = SimpleUser_exec + libs += SimpleUser_stub SimpleCommon_stub + + dynamicflags = SIMPLEUSER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleUserEC.cpp + SimpleUser_exec.cpp + } + + Header_Files { + SimpleUserEC.h + SimpleUser_exec.h + SimpleUser_exec_export.h + } + + Inline_Files { + SimpleUserEC.inl + } +} + + +project(SimpleCommon_SimpleUser_svnt) : ciao_servant { + after += SimpleCommon_skel SimpleCommon_SimpleUser_exec + sharedname = SimpleUser_svnt + libs += SimpleUser_exec \ + SimpleUser_stub \ + SimpleCommon_skel \ + SimpleCommon_stub + + dynamicflags = SIMPLEUSER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleUserS.cpp + SimpleUser_svnt.cpp + } + + Header_Files { + SimpleUserS.h + SimpleUser_svnt.h + SimpleUser_svnt_export.h + } + + Inline_Files { + SimpleUserS.inl + } +} + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp new file mode 100644 index 00000000000..c27e6dc4c48 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.cpp @@ -0,0 +1,151 @@ +// $Id$ + +#include "SimpleUser_exec.h" +#include "DAnCE/Logger/Log_Macros.h" + +namespace CIAO_Simple_SimpleUser_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleUser_exec_i + //================================================================== + + SimpleUser_exec_i::SimpleUser_exec_i (void) + { + DANCE_TRACE ("SimpleUser_exec_i::SimpleUser_exec_i (void)"); + } + + SimpleUser_exec_i::~SimpleUser_exec_i (void) + { + DANCE_TRACE ("SimpleUser_exec_i::~SimpleUser_exec_i (void)"); + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleUser_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + DANCE_TRACE ("SimpleUser_exec_i::set_session_context ()"); + this->context_ = + ::Simple::CCM_SimpleUser_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleUser_exec_i::configuration_complete () + { + DANCE_TRACE ("SimpleUser_exec_i::configuration_complete ()"); + // Your code here. + } + + void + SimpleUser_exec_i::ccm_activate () + { + DANCE_TRACE ("SimpleUser_exec_i::ccm_activate ()"); + + ::Simple::Trigger_var trig (this->context_->get_connection_trig ()); + + if (CORBA::is_nil (trig.in ())) + { + ACE_ERROR ((LM_ERROR, "SimpleUser_exec_i::ccm_activate () - " + "Error: Reference nil for port trig\n")); + return; + } + + // Your code here. + try + { + trig->hello ("Test successful; hello from SimpleUser."); + } + catch (CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR, "SimpleUser_exec_i::ccm_activate () - " + "Caught CORBA exception, details follow:\n")); + ex._tao_print_exception ("SimpleUser_exec_i::ccm_activate () - "); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "SimpleUser_exec_i::ccm_activate () - " + "Error: Caught unknown exception whilst invoking reference for port trig.\n")); + } + } + + void + SimpleUser_exec_i::ccm_passivate () + { + DANCE_TRACE ("SimpleUser_exec_i::ccm_passivate ()"); + // Your code here. + } + + void + SimpleUser_exec_i::ccm_remove () + { + DANCE_TRACE ("SimpleUser_exec_i::ccm_remove ()"); + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleUserHome_exec_i + //================================================================== + + SimpleUserHome_exec_i::SimpleUserHome_exec_i (void) + { + DANCE_TRACE ("SimpleUserHome_exec_i::SimpleUserHome_exec_i (void)"); + } + + SimpleUserHome_exec_i::~SimpleUserHome_exec_i (void) + { + DANCE_TRACE ("SimpleUserHome_exec_i::~SimpleUserHome_exec_i (void)"); + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleUserHome_exec_i::create () + { + DANCE_TRACE ("SimpleUserHome_exec_i::create ()"); + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleUser_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLEUSER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleUserHome_Impl (void) + { + DANCE_TRACE ("create_Simple_SimpleUserHome_Impl (void)"); + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleUserHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.h b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.h new file mode 100644 index 00000000000..7041ae92ba4 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/Components/SimpleUser_exec.h @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_SIMPLEUSER_EXEC_H +#define CIAO_SIMPLEUSER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleUserEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleUser_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Simple_SimpleUser_Impl +{ + class SIMPLEUSER_EXEC_Export SimpleUser_exec_i + : public virtual SimpleUser_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleUser_exec_i (void); + virtual ~SimpleUser_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Simple::CCM_SimpleUser_Context_var context_; + }; + + class SIMPLEUSER_EXEC_Export SimpleUserHome_exec_i + : public virtual SimpleUserHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleUserHome_exec_i (void); + virtual ~SimpleUserHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLEUSER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Simple_SimpleUserHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLEUSER_EXEC_H */ + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome.cdp new file mode 100644 index 00000000000..01c13b3f3d1 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome.cdp @@ -0,0 +1,227 @@ + + + SimpleComponent_Home + + + + + + SimpleEmitterHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleEmitterHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleEmitterHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleEmitter_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleEmitter_exec + + + + + + + SimpleEmitterComponentImplementation + + + + + + + SimpleConsumerHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleConsumerHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleConsumerHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleConsumer_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleConsumer_exec + + + + + + + SimpleConsumerComponentImplementation + + + + + + + SimpleEmitterHome + NodeOne + + + + + + + SimpleEmitterComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleEmitterHome + + + + + + + SimpleConsumerHome + NodeTwo + + + + + + + SimpleConsumerComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleConsumerHome + + + + + + + TestConnection + + hello + false + EventEmitter + + + + hello_ + true + EventConsumer + + + + + + + SimpleEmitter_exec + + + SimpleEmitter_exec + + + SimpleEmitter_svnt + + + SimpleEmitter_svnt + + + + SimpleConsumer_exec + + + SimpleConsumer_exec + + + SimpleConsumer_svnt + + + SimpleConsumer_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome_NS.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome_NS.cdp new file mode 100644 index 00000000000..6c01f6d36d6 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/EmitsConnectionExplicitHome_NS.cdp @@ -0,0 +1,238 @@ + + + SimpleComponent_Home + + + + + + SimpleEmitterHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleEmitterHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleEmitterHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleEmitter_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleEmitter_exec + + + + + + + SimpleEmitterComponentImplementation + + + + + + + SimpleConsumerHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleConsumerHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleConsumerHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleConsumer_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleConsumer_exec + + + + + + + SimpleConsumerComponentImplementation + + + + + + + SimpleEmitterHome + NodeOne + + + + + + + SimpleEmitterComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleEmitterHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SimpleEmitterComponent + + + + + + + SimpleConsumerHome + NodeTwo + + + + + + + SimpleConsumerComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleConsumerHome + + + + + + + TestConnection + + hello_ + true + EventConsumer + + + + corbaname:rir:/NameService#SimpleEmitterComponent + false + hello + Meaningless + + + + + + SimpleEmitter_exec + + + SimpleEmitter_exec + + + SimpleEmitter_svnt + + + SimpleEmitter_svnt + + + + SimpleConsumer_exec + + + SimpleConsumer_exec + + + SimpleConsumer_svnt + + + SimpleConsumer_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome.cdp new file mode 100644 index 00000000000..c5bc81c852a --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome.cdp @@ -0,0 +1,262 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleMultipleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleMultipleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleMultipleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleMultipleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleMultipleUser_exec + + + + + + + SimpleMultipleUserComponentImplementation + + + + + + + SimpleProviderHome + NodeOne + + + + + + + SimpleProviderComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleMultipleUserHome + NodeTwo + + + + + + + SimpleMultipleUserComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleMultipleUserHome + + + + + + + SimpleMultipleUserComponentReverse + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleMultipleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + trig + false + MultiplexReceptacle + + + + + + TestConnectionReverse + + trig + false + MultiplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleMultipleUser_exec + + + SimpleMultipleUser_exec + + + SimpleMultipleUser_svnt + + + SimpleMultipleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome_NS.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome_NS.cdp new file mode 100644 index 00000000000..dc865e8d0a3 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/MultiplexConnectionExplicitHome_NS.cdp @@ -0,0 +1,286 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleMultipleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleMultipleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleMultipleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleMultipleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleMultipleUser_exec + + + + + + + SimpleMultipleUserComponentImplementation + + + + + + + SimpleProviderHome + NodeOne + + + + + + + SimpleProviderComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleMultipleUserHome + NodeTwo + + + + + + + SimpleMultipleUserComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleMultipleUserHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SimpleMultipleUserComponent + + + + + + + SimpleMultipleUserComponentReverse + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleMultipleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + corbaname:rir:/NameService#SimpleMultipleUserComponent + false + trig + Meaningless + + + + + + TestConnectionReverse + + trig + true + Facet + + + + corbaname:rir:/NameService#SimpleMultipleUserComponent + false + trig + Meaningless + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleMultipleUser_exec + + + SimpleMultipleUser_exec + + + SimpleMultipleUser_svnt + + + SimpleMultipleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome.cdp new file mode 100644 index 00000000000..32747bfc1bf --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome.cdp @@ -0,0 +1,227 @@ + + + SimpleComponent_Home + + + + + + SimplePublisherHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimplePublisherHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimplePublisherHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimplePublisher_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimplePublisher_exec + + + + + + + SimplePublisherComponentImplementation + + + + + + + SimpleConsumerHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleConsumerHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleConsumerHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleConsumer_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleConsumer_exec + + + + + + + SimpleConsumerComponentImplementation + + + + + + + SimplePublisherHome + NodeOne + + + + + + + SimplePublisherComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimplePublisherHome + + + + + + + SimpleConsumerHome + NodeTwo + + + + + + + SimpleConsumerComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleConsumerHome + + + + + + + TestConnection + + hello + false + EventPublisher + + + + hello_ + true + EventConsumer + + + + + + + SimplePublisher_exec + + + SimplePublisher_exec + + + SimplePublisher_svnt + + + SimplePublisher_svnt + + + + SimpleConsumer_exec + + + SimpleConsumer_exec + + + SimpleConsumer_svnt + + + SimpleConsumer_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome_NS.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome_NS.cdp new file mode 100644 index 00000000000..054e7964bea --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/PublishConnectionExplicitHome_NS.cdp @@ -0,0 +1,244 @@ + + + SimpleComponent_Home + + + + + + SimplePublisherHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimplePublisherHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimplePublisherHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimplePublisher_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimplePublisher_exec + + + + + + + SimplePublisherComponentImplementation + + + + + + + SimpleConsumerHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleConsumerHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleConsumerHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleConsumer_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleConsumer_exec + + + + + + + SimpleConsumerComponentImplementation + + + + + + + SimplePublisherHome + NodeOne + + + + + + + SimplePublisherComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimplePublisherHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SimplePublisherComponentInstance + + + + + + + SimpleConsumerHome + NodeTwo + + + + + + + SimpleConsumerComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleConsumerHome + + + + + + + TestConnection + + + hello_ + true + EventConsumer + + + + corbaname:rir:/NameService#SimplePublisherComponentInstance + false + hello + Meaningless + + + + + + SimplePublisher_exec + + + SimplePublisher_exec + + + SimplePublisher_svnt + + + SimplePublisher_svnt + + + + SimpleConsumer_exec + + + SimpleConsumer_exec + + + SimpleConsumer_svnt + + + SimpleConsumer_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp new file mode 100644 index 00000000000..e9af75b1ac4 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimpleComponentExplicitHome.cdp @@ -0,0 +1,113 @@ + + + SimpleComponent_Home + + + + + + + SimpleNullHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleNullHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleNullHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleNull_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleNull_exec + + + + + + + SimpleNullComponentImplementation + + + + + + + SimpleNullHome + NodeOne + + + + + + + SimpleNullComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleNullHome + + + + + + + + SimpleNull_exec + + + SimpleNull_exec + + + SimpleNull_svnt + + + SimpleNull_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome.cdp new file mode 100644 index 00000000000..8283e9e869a --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome.cdp @@ -0,0 +1,262 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleUser_exec + + + + + + + SimpleUserComponentImplementation + + + + + + + SimpleProviderHome + NodeOne + + + + + + + SimpleProviderComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleUserHome + NodeTwo + + + + + + + SimpleUserComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + SimpleUserComponentReverse + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + trig + false + SimplexReceptacle + + + + + + TestConnectionReverse + + trig + false + SimplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleUser_exec + + + SimpleUser_exec + + + SimpleUser_svnt + + + SimpleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NS.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NS.cdp new file mode 100644 index 00000000000..c60ad818d6f --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NS.cdp @@ -0,0 +1,279 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleUser_exec + + + + + + + SimpleUserComponentImplementation + + + + + + + SimpleProviderHome + NodeOne + + + + + + + SimpleProviderComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleUserHome + NodeTwo + + + + + + + SimpleUserComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SimpleUserComponent + + + + + + + SimpleUserComponentReverse + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + + corbaname:rir:/NameService#SimpleUserComponent + false + trig + Meaningless + + + + + TestConnectionReverse + + trig + false + SimplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleUser_exec + + + SimpleUser_exec + + + SimpleUser_svnt + + + SimpleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NilFacet.cdp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NilFacet.cdp new file mode 100644 index 00000000000..e9539795797 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/SimplexConnectionExplicitHome_NilFacet.cdp @@ -0,0 +1,262 @@ + + + SimpleComponent_Home + + + + + + SimpleNilFacetProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleNilFacetProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleNilFacetProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleNilFacetProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleNilFacetProvider_exec + + + + + + + SimpleNilFacetProviderComponentImplementation + + + + + + + SimpleNilFacetUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleNilFacetUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleNilFacetUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleNilFacetUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleNilFacetUser_exec + + + + + + + SimpleNilFacetUserComponentImplementation + + + + + + + SimpleNilFacetProviderHome + NodeOne + + + + + + + SimpleNilFacetProviderComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleNilFacetProviderHome + + + + + + + SimpleNilFacetUserHome + NodeTwo + + + + + + + SimpleNilFacetUserComponent + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleNilFacetUserHome + + + + + + + SimpleNilFacetUserComponentReverse + NodeTwo + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleNilFacetUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + trig + false + SimplexReceptacle + + + + + + TestConnectionReverse + + trig + false + SimplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleNilFacetProvider_exec + + + SimpleNilFacetProvider_exec + + + SimpleNilFacetProvider_svnt + + + SimpleNilFacetProvider_svnt + + + + SimpleNilFacetUser_exec + + + SimpleNilFacetUser_exec + + + SimpleNilFacetUser_svnt + + + SimpleNilFacetUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc new file mode 100644 index 00000000000..b46ae7df956 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/em_launcher.mpc @@ -0,0 +1,6 @@ +// $Id$ +project(simple_em_launcher) : ciao_config_handlers, dance_nodemanager_stub, dance_domainapplication_stub, dance_executionmanager_stub, dance_logger { + Source_Files { + simple_em_launcher.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl new file mode 100755 index 00000000000..051813fd9ab --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl @@ -0,0 +1,211 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "NodeOne" ); + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('..'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('..'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('..'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('..'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService --instance-nc corbaloc:rir:/NameService"; + + print "Run node daemon\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +if ($#ARGV == -1) { + opendir(DIR, "."); + @files = grep(/\.cdp$/,readdir(DIR)); + closedir(DIR); +} +else { + @files = @ARGV; +} + +create_targets (); +init_ior_files (); + +foreach $file (@files) { + print "Starting test for deployment $file\n"; + + print STDERR "Starting Naming Service\n"; + + $NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + $NS->Spawn (); + + if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; + } + + $ns_running = 1; + # Set up NamingService environment + $ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + + # Invoke node daemon. + print "Invoking node daemon\n"; + $status = run_node_daemons (); + + if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; + } + + $daemons_running = 1; + + # Invoke execution manager. + print "Invoking execution manager\n"; + $EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); + $EM->Spawn (); + + if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; + } + + $em_running = 1; + + # Invoke executor - start the application -. + print "Invoking executor - launch the application -\n"; + $E = $tg_executor->CreateProcess ("simple_em_launcher", + "file://$ior_emfile $file"); + + + print "Executor finished.\n"; + + delete_ior_files (); + kill_open_processes (); +} + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp new file mode 100644 index 00000000000..3e9c61e74b1 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp @@ -0,0 +1,125 @@ +/** + * @file simple_em_launcher.cpp + * @author William R. Otte + * // $Id$ + * Launches then immediately tears down a plan. + */ + + +#include "ace/OS_NS_unistd.h" +#include "tao/ORB.h" +#include "DAnCE/Logger/Logger_Service.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Deployment/Deployment_DomainApplicationC.h" +#include "Deployment/Deployment_ExecutionManagerC.h" +#include "Deployment/Deployment_DeploymentPlanC.h" +#include "Config_Handlers/XML_File_Intf.h" + +int usage () +{ + ACE_ERROR ((LM_ERROR, "simple_nm_launcher \n")); + return -1; +} + +#include + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + DANCE_DISABLE_TRACE (); + + DAnCE::Logger_Service + * dlf = ACE_Dynamic_Service::instance ("DAnCE_Logger"); + + if (dlf) + { + dlf->init (argc, argv); + } + + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (argc != 3) + return usage (); + + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: parsing XML\n"))); + // Parse plan + CIAO::Config_Handlers::XML_File_Intf xml (argv[2]); + xml.add_search_path (ACE_TEXT ("DANCE_ROOT"), ACE_TEXT ("/docs/schema/")); + xml.add_search_path (ACE_TEXT ("CIAO_ROOT"), ACE_TEXT ("/docs/schema/")); + + auto_ptr< ::Deployment::DeploymentPlan> plan (xml.release_plan ()); + + if (plan.get () == 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("*** error parsing XML document\n"))); + throw 1; + } + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: resolving execution manager reference.\n"))); + CORBA::Object_var obj = orb->string_to_object (argv[1]); + Deployment::ExecutionManager_var em = Deployment::ExecutionManager::_narrow (obj.in ()); + + if (CORBA::is_nil (em.in ())) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("*** simple_em_launcher: ExecutionManager reference is nil."))); + throw 1; + } + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: calling prepareplan.\n"))); + Deployment::DomainApplicationManager_var dam = em->preparePlan (*plan, + Deployment::ResourceCommitmentManager::_nil ()); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: calling startLaunch\n"))); + Deployment::Connections_var conns; + Deployment::Properties props; + Deployment::Application_var app = dam->startLaunch (props, conns.out ()); + Deployment::DomainApplication_var da = Deployment::DomainApplication::_narrow (app.in ()); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: calling finishLaunch\n"))); + da->finishLaunch (conns.in (), false); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: calling start\n"))); + da->start (); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: start finished, sleeping 5 seconds.\n"))); + ACE_OS::sleep (5); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: waking up from sleep, calling destroyApplication\n"))); + + dam->destroyApplication (da.in ()); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: calling destroyManager\n"))); + + em->destroyManager (dam.in ()); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("*** simple_em_launcher: destroyManager completed.\n"))); + + orb->destroy (); + } + catch (const Deployment::StopError &ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("*** Caught StopError exception with name %C and reason %C\n"), + ex.name.in (), ex.reason.in ())); + return -1; + } + catch (const Deployment::StartError &ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("*** Caught StartError exception with name %C and reason %C\n"), + ex.name.in (), ex.reason.in ())); + return -1; + } + catch (const CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("*** Caught CORBA exception: %C\n"), + ex._info ().c_str ())); + return -1; + + } + catch (...) + { + orb->destroy (); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("*** Caught unknown exception\n"))); + return -1; + } + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/EmitsConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/EmitsConnectionExplicitHome.cdp new file mode 100644 index 00000000000..6ac17b1e9e9 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/EmitsConnectionExplicitHome.cdp @@ -0,0 +1,227 @@ + + + SimpleComponent_Home + + + + + + SimpleEmitterHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleEmitterHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleEmitterHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleEmitter_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleEmitter_exec + + + + + + + SimpleEmitterComponentImplementation + + + + + + + SimpleConsumerHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleConsumerHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleConsumerHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleConsumer_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleConsumer_exec + + + + + + + SimpleConsumerComponentImplementation + + + + + + + SimpleEmitterHome + Node + + + + + + + SimpleEmitterComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleEmitterHome + + + + + + + SimpleConsumerHome + Node + + + + + + + SimpleConsumerComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleConsumerHome + + + + + + + TestConnection + + hello + false + EventEmitter + + + + hello_ + true + EventConsumer + + + + + + + SimpleEmitter_exec + + + SimpleEmitter_exec + + + SimpleEmitter_svnt + + + SimpleEmitter_svnt + + + + SimpleConsumer_exec + + + SimpleConsumer_exec + + + SimpleConsumer_svnt + + + SimpleConsumer_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/MultiplexConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/MultiplexConnectionExplicitHome.cdp new file mode 100644 index 00000000000..45ff31929c3 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/MultiplexConnectionExplicitHome.cdp @@ -0,0 +1,262 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleMultipleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleMultipleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleMultipleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleMultipleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleMultipleUser_exec + + + + + + + SimpleMultipleUserComponentImplementation + + + + + + + SimpleProviderHome + Node + + + + + + + SimpleProviderComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleMultipleUserHome + Node + + + + + + + SimpleMultipleUserComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleMultipleUserHome + + + + + + + SimpleMultipleUserComponentReverse + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleMultipleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + trig + false + MultiplexReceptacle + + + + + + TestConnectionReverse + + trig + false + MultiplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleMultipleUser_exec + + + SimpleMultipleUser_exec + + + SimpleMultipleUser_svnt + + + SimpleMultipleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/PublishConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/PublishConnectionExplicitHome.cdp new file mode 100644 index 00000000000..53a0a54482d --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/PublishConnectionExplicitHome.cdp @@ -0,0 +1,227 @@ + + + SimpleComponent_Home + + + + + + SimplePublisherHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimplePublisherHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimplePublisherHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimplePublisher_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimplePublisher_exec + + + + + + + SimplePublisherComponentImplementation + + + + + + + SimpleConsumerHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleConsumerHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleConsumerHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleConsumer_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleConsumer_exec + + + + + + + SimpleConsumerComponentImplementation + + + + + + + SimplePublisherHome + Node + + + + + + + SimplePublisherComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimplePublisherHome + + + + + + + SimpleConsumerHome + Node + + + + + + + SimpleConsumerComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleConsumerHome + + + + + + + TestConnection + + hello + false + EventPublisher + + + + hello_ + true + EventConsumer + + + + + + + SimplePublisher_exec + + + SimplePublisher_exec + + + SimplePublisher_svnt + + + SimplePublisher_svnt + + + + SimpleConsumer_exec + + + SimpleConsumer_exec + + + SimpleConsumer_svnt + + + SimpleConsumer_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleAttributeExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleAttributeExplicitHome.cdp new file mode 100644 index 00000000000..d66eef2c70b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleAttributeExplicitHome.cdp @@ -0,0 +1,179 @@ + + + SimpleComponent_Home + + + + + + + SimpleAttributeHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleAttributeHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleAttributeHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleAttribute_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleAttribute_exec + + + + + + + SimpleAttributeComponentImplementation + + + + + + + SimpleAttributeHome + Node + + + + + str_attr + + + tk_string + + + Initialized Attribute! + + + + + long_attr + + + tk_long + + + 1 + + + + + short_attr + + + tk_short + + + 1 + + + + + + + SimpleAttributeComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleAttributeHome + + + + + str_attr + + + tk_string + + + Initialized Attribute! + + + + + long_attr + + + tk_long + + + 1 + + + + + short_attr + + + tk_short + + + 1 + + + + + + + + SimpleAttribute_exec + + + SimpleAttribute_exec + + + SimpleAttribute_svnt + + + SimpleAttribute_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp new file mode 100644 index 00000000000..5632d219c48 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentExplicitHome.cdp @@ -0,0 +1,113 @@ + + + SimpleComponent_Home + + + + + + + SimpleNullHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleNullHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleNullHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleNull_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleNull_exec + + + + + + + SimpleNullComponentImplementation + + + + + + + SimpleNullHome + Node + + + + + + + SimpleNullComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleNullHome + + + + + + + + SimpleNull_exec + + + SimpleNull_exec + + + SimpleNull_svnt + + + SimpleNull_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp new file mode 100644 index 00000000000..e31930188d2 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp @@ -0,0 +1,86 @@ + + + SimpleComponent_Home + + + + + + SimpleNullComponentImplementation + + + + + + component factory + + + tk_string + + + create_Simple_SimpleNull_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleNull_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleNull_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleNull_exec + + + + + + + SimpleNullComponent + Node + + + + + + + + SimpleNull_exec + + + SimpleNull_exec + + + SimpleNull_svnt + + + SimpleNull_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleHome.cdp new file mode 100644 index 00000000000..a63da21f0f6 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleHome.cdp @@ -0,0 +1,90 @@ + + + SimpleComponent_Home + + + + + + + SimpleNullHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleNullHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleNullHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleNull_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleNull_exec + + + + + + + + + + SimpleNullHome + Node + + + + + + + + SimpleNull_exec + + + SimpleNull_exec + + + SimpleNull_svnt + + + SimpleNull_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp new file mode 100644 index 00000000000..f7cc1b23270 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation.cdp @@ -0,0 +1,127 @@ + + + SimpleComponent_Home + + + + + + ProcessColocationComponentImplementation + + + + + + component factory + + + tk_string + + + create_Simple_ProcessColocation_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_ProcessColocation_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ProcessColocation_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ProcessColocation_exec + + + + + + + ProcessColocationComponent_One + Node + + + + + + process_name + + + tk_string + + + Process One + + + + + + + ProcessColocationComponent_Two + Node + + + + + process_name + + + tk_string + + + Process Two + + + + + + + + ProcessColocation_exec + + + ProcessColocation_exec + + + ProcessColocation_svnt + + + ProcessColocation_svnt + + + + SameProcess + + + + + SameProcess + + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_2.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_2.cdp new file mode 100644 index 00000000000..23da5a45e3b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_2.cdp @@ -0,0 +1,168 @@ + + + SimpleComponent_Home + + + + + + ProcessColocationComponentImplementation + + + + + + component factory + + + tk_string + + + create_Simple_ProcessColocation_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_ProcessColocation_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ProcessColocation_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ProcessColocation_exec + + + + + + + ProcessColocationComponent_One + Node + + + + + + process_name + + + tk_string + + + Process One + + + + + + + ProcessColocationComponent_One_Two + Node + + + + + + process_name + + + tk_string + + + Process One + + + + + + + ProcessColocationComponent_Two + Node + + + + + process_name + + + tk_string + + + Process Two + + + + + + + ProcessColocationComponent_Two_Two + Node + + + + + process_name + + + tk_string + + + Process Two + + + + + + + + ProcessColocation_exec + + + ProcessColocation_exec + + + ProcessColocation_svnt + + + ProcessColocation_svnt + + + + SameProcess + + + + + + SameProcess + + + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_Default.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_Default.cdp new file mode 100644 index 00000000000..68ea0ce0c70 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleProcessColocation_Default.cdp @@ -0,0 +1,208 @@ + + + SimpleComponent_Home + + + + + + ProcessColocationComponentImplementation + + + + + + component factory + + + tk_string + + + create_Simple_ProcessColocation_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_ProcessColocation_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ProcessColocation_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ProcessColocation_exec + + + + + + + ProcessColocationComponent_Default_One + Node + + + + + + process_name + + + tk_string + + + Default Process + + + + + + + ProcessColocationComponent_Default_Two + Node + + + + + + process_name + + + tk_string + + + Default Process + + + + + + + ProcessColocationComponent_One + Node + + + + + + process_name + + + tk_string + + + Process One + + + + + + + ProcessColocationComponent_One_Two + Node + + + + + + process_name + + + tk_string + + + Process One + + + + + + + ProcessColocationComponent_Two + Node + + + + + process_name + + + tk_string + + + Process Two + + + + + + + ProcessColocationComponent_Two_Two + Node + + + + + process_name + + + tk_string + + + Process Two + + + + + + + + ProcessColocation_exec + + + ProcessColocation_exec + + + ProcessColocation_svnt + + + ProcessColocation_svnt + + + + SameProcess + + + + + + SameProcess + + + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp new file mode 100644 index 00000000000..f3f1e1ca6e9 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimplexConnectionExplicitHome.cdp @@ -0,0 +1,262 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleUser_exec + + + + + + + SimpleUserComponentImplementation + + + + + + + SimpleProviderHome + Node + + + + + + + SimpleProviderComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleUserHome + Node + + + + + + + SimpleUserComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + SimpleUserComponentReverse + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + trig + false + SimplexReceptacle + + + + + + TestConnectionReverse + + trig + false + SimplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleUser_exec + + + SimpleUser_exec + + + SimpleUser_svnt + + + SimpleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/TwoComponentsOneHome.cdp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/TwoComponentsOneHome.cdp new file mode 100644 index 00000000000..e02732e05bb --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/TwoComponentsOneHome.cdp @@ -0,0 +1,281 @@ + + + SimpleComponent_Home + + + + + + SimpleProviderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleProviderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleProviderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleProvider_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleProvider_exec + + + + + + + SimpleProviderComponentImplementation + + + + + + + SimpleUserHomeImplementation + + + + + + home factory + + + tk_string + + + create_Simple_SimpleUserHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Simple_SimpleUserHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SimpleUser_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SimpleUser_exec + + + + + + + SimpleUserComponentImplementation + + + + + + + SimpleProviderHome + Node + + + + + + + SimpleProviderComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleProviderComponentOne + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleProviderHome + + + + + + + SimpleUserHome + Node + + + + + + + SimpleUserComponent + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + SimpleUserComponentReverse + Node + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + SimpleUserHome + + + + + + + TestConnection + + trig + true + Facet + + + + trig + false + SimplexReceptacle + + + + + + TestConnectionReverse + + trig + false + SimplexReceptacle + + + + trig + true + Facet + + + + + + + SimpleProvider_exec + + + SimpleProvider_exec + + + SimpleProvider_svnt + + + SimpleProvider_svnt + + + + SimpleUser_exec + + + SimpleUser_exec + + + SimpleUser_svnt + + + SimpleUser_svnt + + + diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc new file mode 100644 index 00000000000..818130bfbb4 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc @@ -0,0 +1,6 @@ +// $Id$ +project(simple_nm_launcher) : ciao_config_handlers, dance_nodemanager_stub, dance_nodeapplication_stub, dance_logger { + Source_Files { + simple_nm_launcher.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl new file mode 100755 index 00000000000..051813fd9ab --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl @@ -0,0 +1,211 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "NodeOne" ); + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('..'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('..'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('..'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('..'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService --instance-nc corbaloc:rir:/NameService"; + + print "Run node daemon\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +if ($#ARGV == -1) { + opendir(DIR, "."); + @files = grep(/\.cdp$/,readdir(DIR)); + closedir(DIR); +} +else { + @files = @ARGV; +} + +create_targets (); +init_ior_files (); + +foreach $file (@files) { + print "Starting test for deployment $file\n"; + + print STDERR "Starting Naming Service\n"; + + $NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + $NS->Spawn (); + + if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; + } + + $ns_running = 1; + # Set up NamingService environment + $ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + + # Invoke node daemon. + print "Invoking node daemon\n"; + $status = run_node_daemons (); + + if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; + } + + $daemons_running = 1; + + # Invoke execution manager. + print "Invoking execution manager\n"; + $EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); + $EM->Spawn (); + + if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; + } + + $em_running = 1; + + # Invoke executor - start the application -. + print "Invoking executor - launch the application -\n"; + $E = $tg_executor->CreateProcess ("simple_em_launcher", + "file://$ior_emfile $file"); + + + print "Executor finished.\n"; + + delete_ior_files (); + kill_open_processes (); +} + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp new file mode 100644 index 00000000000..e0731b074ed --- /dev/null +++ b/modules/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp @@ -0,0 +1,125 @@ +/** + * @file simple_nm_launcher.cpp + * @author William R. Otte + * $Id$ + * Launches then immediately tears down a plan. + */ + +#include "ace/OS_NS_unistd.h" +#include "tao/ORB.h" +#include "DAnCE/Logger/Logger_Service.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Deployment/Deployment_NodeApplicationC.h" +#include "Deployment/Deployment_NodeManagerC.h" +#include "Deployment/Deployment_DeploymentPlanC.h" +#include "Config_Handlers/XML_File_Intf.h" + +int usage () +{ + ACE_ERROR ((LM_ERROR, "simple_nm_launcher \n")); + return -1; +} + +#include + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + DANCE_DISABLE_TRACE (); + + DAnCE::Logger_Service + * dlf = ACE_Dynamic_Service::instance ("DAnCE_Logger"); + + if (dlf) + { + dlf->init (argc, argv); + } + + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (argc != 3) + return usage (); + + try + { + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: parsing XML\n"))); + // Parse plan + CIAO::Config_Handlers::XML_File_Intf xml (argv[2]); + xml.add_search_path (ACE_TEXT ("DANCE_ROOT"), ACE_TEXT ("/docs/schema/")); + xml.add_search_path (ACE_TEXT ("CIAO_ROOT"), ACE_TEXT ("/docs/schema/")); + + auto_ptr< ::Deployment::DeploymentPlan> plan (xml.release_plan ()); + + if (plan.get () == 0) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** error parsing XML document\n"))); + throw 1; + } + + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: resolving node manager reference.\n"))); + CORBA::Object_var obj = orb->string_to_object (argv[1]); + Deployment::NodeManager_var nm = Deployment::NodeManager::_narrow (obj.in ()); + + if (CORBA::is_nil (nm.in ())) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** simple_nm_launcher: NodeManager reference is nil."))); + throw 1; + } + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling prepareplan.\n"))); + Deployment::NodeApplicationManager_var nam = nm->preparePlan (*plan, + Deployment::ResourceCommitmentManager::_nil ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling startLaunch\n"))); + Deployment::Connections_var conns; + Deployment::Properties props; + Deployment::Application_var app = nam->startLaunch (props, conns.out ()); + Deployment::NodeApplication_var na = Deployment::NodeApplication::_narrow (app.in ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling finishLaunch\n"))); + na->finishLaunch (conns.in (), false); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling start\n"))); + na->start (); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: start finished, sleeping 5 seconds.\n"))); + ACE_OS::sleep (5); + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: waking up from sleep, calling destroyApplication\n"))); + + nam->destroyApplication (na.in ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling destroyManager\n"))); + + nm->destroyManager (nam.in ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: destroyManager completed.\n"))); + + orb->destroy (); + } + catch (Deployment::StopError &ex) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught StopError exception with name %C and reason %C\n"), + ex.name.in (), ex.reason.in ())); + return -1; + } + catch (Deployment::StartError &ex) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught StartError exception with name %C and reason %C\n"), + ex.name.in (), ex.reason.in ())); + return -1; + } + catch (CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught CORBA exception: %C\n"), + ex._info ().c_str ())); + return -1; + + } + catch (...) + { + orb->destroy (); + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught unknown exception\n"))); + return -1; + } + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/Config_Handlers.mpc b/modules/CIAO/DAnCE/tests/Config_Handlers/Config_Handlers.mpc new file mode 100644 index 00000000000..f762b2d8751 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/Config_Handlers.mpc @@ -0,0 +1,14 @@ +//$Id$ + +project (XSC_Config_Handlers_Tests) : dance_deployment_stub, ciao_config_handlers, ifr_client { + requires += dummy_label + includes += $(DANCE_ROOT)/Config_Handlers + exename = test + macros += XML_USE_PTHREADS + + Source_Files { + test.cpp + } +} + + diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/dynany_test.idl b/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/dynany_test.idl new file mode 100644 index 00000000000..0ffecc5c757 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/dynany_test.idl @@ -0,0 +1,28 @@ +//$Id$ +module dynany_test +{ + typedef sequence DoubleSequence; + typedef sequence LongSequence; + typedef sequence StringSequence; + + enum COLOR + { + yellow, + blue, + black, + grey, + red + }; + + typedef sequence ColorSequence; + + struct Foo + { + double db; + LongSequence long_sequence; + StringSequence string_sequence; + ColorSequence color_sequence; + }; + + typedef sequence FooSequence; +}; diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.cpp b/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.cpp new file mode 100644 index 00000000000..81e0a663836 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.cpp @@ -0,0 +1,292 @@ +// $Id$ + +#include + +#include "Deployment.hpp" +#include "DP_Handler.h" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "ace/Get_Opt.h" +#include "XML_Typedefs.h" +#include "tao/ORB.h" +#include "Common.h" +#include "dynany_testC.h" +#include "XML_File_Intf.h" + +static const char *input_file = "BasicSP.cdp"; + + +static int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "i:"); + + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'i': + input_file = get_opts.opt_arg (); + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-i " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command-line + return 0; +} + +using namespace CIAO::Config_Handlers; + +bool check_doubleseq (CORBA::Any &any) +{ + ACE_DEBUG ((LM_DEBUG, "Checking a double sequence\n")); + + dynany_test::DoubleSequence *seq; + + if (!(any >>= seq)) + { + ACE_ERROR ((LM_ERROR, "failed to extract double sequence\n")); + return false; + } + + static const CORBA::Double ref_seq[3] = {1.0, 2.0, 2.5}; + + if (seq->length () != 3) + { + ACE_ERROR ((LM_ERROR, "Unexpected length of double sequence\n")); + return false; + } + + for (CORBA::ULong i = 0; i < seq->length (); ++i) + { + if ((*seq)[i] != ref_seq[i]) + { + ACE_ERROR ((LM_ERROR, "Expected %ith element of double sequence " + " to be %d, got %d instead.\n", i, (*seq)[i], ref_seq[i])); + return false; + } + } + + return true; +} + +bool check_longseq (dynany_test::LongSequence *seq); + +bool check_longseq (CORBA::Any &any) +{ + dynany_test::LongSequence *seq; + + if (!(any >>= seq)) + { + ACE_ERROR ((LM_ERROR, "failed to extract long sequence\n")); + return false; + } + + return check_longseq (seq); +} + +bool check_longseq (dynany_test::LongSequence *seq) +{ + ACE_DEBUG ((LM_DEBUG, "Checking a long sequence\n")); + + static const CORBA::Long ref_seq[3] = {1, 5, 6}; + + if (seq->length () != 3) + { + ACE_ERROR ((LM_ERROR, "Unexpected length of long sequence\n")); + return false; + } + + for (CORBA::ULong i = 0; i < seq->length (); ++i) + { + if ((*seq)[i] != ref_seq[i]) + { + ACE_ERROR ((LM_ERROR, "Expected %ith element of long sequence " + " to be %i, got %i instead.\n", i, (*seq)[i], ref_seq[i])); + return false; + } + } + + return true; +} + + +bool check_stringseq (dynany_test::StringSequence *seq); + +bool check_stringseq (CORBA::Any &any) +{ + dynany_test::StringSequence *seq; + + if (!(any >>= seq)) + { + ACE_ERROR ((LM_ERROR, "failed to extract string sequence\n")); + return false; + } + + return check_stringseq (seq); +} + +bool check_stringseq (dynany_test::StringSequence *seq) +{ + ACE_DEBUG ((LM_DEBUG, "Checking a string sequence\n")); + + static const std::string ref_seq[3] = {"StringOne", + "StringTwo", + "StringThree"}; + + if (seq->length () != 3) + { + ACE_ERROR ((LM_ERROR, "Unexpected length of string sequence\n")); + return false; + } + + for (CORBA::ULong i = 0; i < seq->length (); ++i) + { + std::string val ((*seq)[i].in ()); + + if (val != ref_seq[i]) + { + ACE_ERROR ((LM_ERROR, "Expected %ith element of string sequence " + " to be %i, got %i instead.\n", i, val.c_str (), ref_seq[i].c_str ())); + return false; + } + } + + return true; +} + +bool check_colorseq (dynany_test::ColorSequence *seq); + +bool check_colorseq (CORBA::Any &any) +{ + dynany_test::ColorSequence *seq; + + if (!(any >>= seq)) + { + ACE_ERROR ((LM_ERROR, "failed to extract color sequence\n")); + return false; + } + + return check_colorseq (seq); +} + +bool check_colorseq (dynany_test::ColorSequence *seq) +{ + ACE_DEBUG ((LM_DEBUG, "Checking a color sequence\n")); + + static const dynany_test::COLOR ref_seq[5] = {dynany_test::yellow, dynany_test::grey, dynany_test::red, + dynany_test::blue, dynany_test::black}; + + if (seq->length () != 5) + { + ACE_ERROR ((LM_ERROR, "Unexpected length of color sequence\n")); + return false; + } + + for (CORBA::ULong i = 0; i < seq->length (); ++i) + { + if ((*seq)[i] != ref_seq[i]) + { + ACE_ERROR ((LM_ERROR, "Expected %ith element of color sequence " + " to be %i, got %i instead.\n", i, (*seq)[i], ref_seq[i])); + return false; + } + } + + return true; +} + +bool check_foo_struct (CORBA::Any &any) +{ + ACE_DEBUG ((LM_DEBUG, "Checking a foo struct\n")); + + dynany_test::Foo *foo; + + if (!(any >>= foo)) + { + ACE_ERROR ((LM_ERROR, "failed to extract foo struct\n")); + return false; + } + + // Check contents of foo struct + if (foo->db != 5.5) + { + ACE_ERROR ((LM_ERROR, "expected value of db field to be 5.5, for %d\n", + foo->db)); + return false; + } + + return check_colorseq (&foo->color_sequence) && + check_longseq (&foo->long_sequence) && + check_stringseq (&foo->string_sequence); +} + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + if (parse_args (argc, argv) != 0) + return 1; + + // Initialize an ORB so Any will work + CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv); + ACE_UNUSED_ARG (orb); + + //Create an XML_Helper for all the file work + + bool success (true); + + XML_File_Intf intf (input_file); + intf.add_search_path ("DANCE_ROOT", "/docs/schema/"); + intf.add_search_path ("CIAO_ROOT", "/docs/schema/"); + + if (intf.get_plan () != 0) + { + std::cout << "Instance document import succeeded. Checking contents.\n"; + + //Retrieve the newly created IDL structure + Deployment::DeploymentPlan *idl = intf.release_plan(); + + for (CORBA::ULong i = 0; i < idl->infoProperty.length (); ++i) + { + std::string name (idl->infoProperty[i].name.in ()); + + if (name == "double_sequence") + success = success && check_doubleseq (idl->infoProperty[i].value); + if (name == "long_sequence") + success = success && check_longseq (idl->infoProperty[i].value); + if (name == "string_sequence") + success = success && check_stringseq (idl->infoProperty[i].value); + if (name == "color_sequence") + success = success && check_colorseq (idl->infoProperty[i].value); + if (name == "foo_struct") + success = success && check_foo_struct (idl->infoProperty[i].value); + } + delete idl; + + + } + + if (success) + return 0; + else + { + ACE_ERROR((LM_ERROR, "Some test failures occurred, bailing out.")); + return -1; + } + } + catch (CIAO::Config_Handlers::Config_Error &ex) + { + ACE_ERROR ((LM_ERROR, "Caught config_error: %s:%s\n", + ex.name_.c_str (), ex.error_.c_str ())); + return -1; + } +} + + diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.mpc b/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.mpc new file mode 100644 index 00000000000..55ce7ca31ec --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/DynAny_Handler/test.mpc @@ -0,0 +1,16 @@ +// $Id$ +project (XSC_DynAny_Test) : ciao_config_handlers, ifr_client, ciaoidldefaults { + requires += dummy_label + exename = test + macros += XML_USE_PTHREADS + + IDL_Files { + dynany_test.idl + } + + Source_Files { + test.cpp + } +} + + diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/Package_Handlers.mpc b/modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/Package_Handlers.mpc new file mode 100644 index 00000000000..4afe1ef4c93 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/Package_Handlers.mpc @@ -0,0 +1,11 @@ +// $Id$ + +project (Package_Config_Handlers_Tests) : dance_deployment_stub, ciao_config_handlers, ifr_client { + exename = test + macros += XML_USE_PTHREADS + requires += dummy_label + + Source_Files { + test.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/test.cpp b/modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/test.cpp new file mode 100644 index 00000000000..c107fed4a77 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/Package_Handlers/test.cpp @@ -0,0 +1,113 @@ +// $Id$ + +#include + +#include "Deployment.hpp" +#include "PCD_Handler.h" +#include "DAnCE/Deployment/Deployment_Packaging_DataC.h" +#include "SID_Handler.h" +#include "ace/Get_Opt.h" +#include "Utils/XML_Helper.h" +#include "tao/ORB.h" +#include "Utils/Exceptions.h" + +static const char *input_file = "BasicSP.cdp"; + + +static int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "i:"); + + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'i': + input_file = get_opts.opt_arg (); + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-i " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command-line + return 0; +} + +// Check to see if SRD was imported. +void check_srd (const Deployment::DeploymentPlan &); + +using namespace CIAO::Config_Handlers; + + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + + if (parse_args (argc, argv) != 0) + return 1; + + // Initialize an ORB so Any will work + CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv); + ACE_UNUSED_ARG (orb); + + + if (xercesc::DOMDocument *doc = XML_HELPER->create_dom (input_file)) + { + + ::Deployment::PackageConfiguration idl_pc; + { + // //Read in the XSC type structure from the DOMDocument + //PackageConfiguration pc = packageConfiguration (doc); + //std::cerr << "XML to XSC conversion succeeded. Converting to IDL...\n"; + + //Convert the XSC to an IDL datatype + Packaging::PCD_Handler::package_config (input_file, idl_pc); + std::cout << "Instance document import succeeded. Dumping contents to file\n"; + } + + // Clear SID_Handler's IDREF Table + Packaging::SID_Handler::IDREF.unbind_refs (); + + std::cerr << "Performing IDL->XSC transformation...\n"; + + PackageConfiguration out_pc (Packaging::PCD_Handler::package_config (idl_pc)); + + //Create a new DOMDocument for writing the XSC into XML + xercesc::DOMDocument* the_xsc (XML_HELPER->create_dom("Deployment:packageConfiguration", + "http://www.omg.org/Deployment")); + + //Serialize the XSC into a DOMDocument + packageConfiguration(out_pc, the_xsc); + + + //Write it to test.xml + XML_HELPER->write_DOM(the_xsc, "test.xml"); + + //Cleanliness is next to Godliness + delete doc; + } + + std::cout << "Test completed!\n"; + } + catch (CIAO::Config_Handlers::Plan_Error &excep) + { + std::cerr << "Plan Error exception caught: " << excep.reason_ << std::endl; + } + catch (CIAO::Config_Handlers::Config_Error &excep) + { + std::cerr << "Config Error " << excep.name_ << ": " << excep.error_ << std::endl; + } + + + return 0; +} + + diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/test.cdp b/modules/CIAO/DAnCE/tests/Config_Handlers/test.cdp new file mode 100644 index 00000000000..2430859601b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/test.cdp @@ -0,0 +1,1827 @@ + + + +8E8594AF-3310-446F-95E2-4440D622D5CE + + +RT1H_Combined.ComponentImplementations.Config_Op_Impl.Config_Op + +_304555B7-9E3A-4DC5-9535-FA774FAA5070 +_358C7270-F290-465E-B0E4-5FD390980B44 +_C4A896EE-C035-45F1-8F14-2320383B1991 + +LoadAverage + + +tk_double + + +.25 + + + + + + +RT1H_Combined.ComponentImplementations.Planner_One_Impl.MonolithicImplementation + +_6C7AA3D5-7A09-4DEF-8D49-60A4E1DE173D +_1DAD54BC-F7B5-41E3-9FFC-3E0AE255D989 +_66E9CA12-F886-4760-A9B3-DB1E3F27B920 + +LoadAverage + + +tk_double + + +.25 + + + + + + +RT1H_Combined.ComponentImplementations.Planner_Three_Impl.MonolithicImplementation + +_2748D2D1-AAE5-4934-A43F-1639241C4351 +_556249CC-E874-4BC6-9411-1B33EB2B895B +_458C6E27-87CA-4F77-8036-C9F612511B6F + +LoadAverage + + +tk_double + + +.25 + + + + + + +RT1H_Combined.ComponentImplementations.Env_Dectector_Impl.MonolithicImplementation + +_1A46D81D-989F-406B-9E87-A57D63ADDF43 +_208D7378-B123-4F15-B376-CAA58B5CB1E0 +_5D7CAC69-4E3B-45F9-BACD-B12D3A86AC7A + +LoadAverage + + +tk_double + + +.25 + + + + + + +RT1H_Combined.ComponentImplementations.Effector_Main_Impl.MonolithicImplementation + +_D40E03AB-CE43-49D6-A7FF-C1231FE98898 +_840618C0-5513-4389-97A4-C53EB87B29A0 +_E1AF706E-0B37-480B-8B26-E844FE2E9C3E + +LoadAverage + + +tk_double + + +.25 + + + + + + +RT1H_Combined.ComponentImplementations.Effector_Secondary_Impl.MonolithicImplementation + +__31B2C21F-86C7-4306-AA10-33687687B5D0 +__C7A0B01C-6C13-4EAA-8527-155035BF1A00 +__2F43BA6B-2749-4744-B9C4-18F4AEAC16C9 + +LoadAverage + + +tk_double + + +.25 + + + + + + +RT1H_Combined.CUTS_ComponentImplementations.BDC_Implementation.BDC_Monolithic_Impl + +__55C2DCD4-30B1-46A3-86B2-229896D74D0D +__BF5CDECF-AF12-4876-9B6C-211B7BF0B22F +_0E615519-6CC8-4EA5-B67A-65FF73586F04 + + + +RT1H_Combined.CUTS_ComponentImplementations.BDC_Ex_Implementation.BDC_Ex_Impl + +_2DBFA82B-1D1F-48C6-9BDC-014E789E6A77 +_5CE1793F-38DD-427D-A21E-E6D870E769E4 +_0B8A6C29-8962-4DA6-99F4-25FEECD77E97 + + + +RT1H_Combined.RACE_ComponentImplementations.ControllerImplementation.ControllerMonolithicImpl + +__032AE7B6-3ABD-478A-B0D7-56BC4AAEF0B7 +__00B105AB-50F5-49B7-A822-9B267F2D8896 +__BF4AE6A2-BE32-4B8E-9919-C812EC18BF00 + + + +RT1H_Combined.RACE_ComponentImplementations.TargetManagerImplImplementation.TargetManagerImplMonolithicImpl + +__C22D0B06-6CDA-4652-B1CE-586E0C23251F +__9CB3A43B-397F-4FA9-97AA-EBFC3A22BFEC +__0F176DA2-9953-482A-9268-7DA5E69A88FE + + + +RT1H_Combined.RA_ComponentImplementations.AnalyzerImplementation.AnalyzerMonolithicImpl + +__315FC65C-0582-4E0E-BB8B-C23A1238C67F +__7AD332BC-90DC-4E7D-B026-8D5053F2552E +__84974D39-AE18-4C0A-B81A-B1EC349E93BB + + + +RT1H_Combined.RA_ComponentImplementations.SimpleAllocationAnalyzerImplementation.SimpleAllocationAnalyzerMonolithicImpl + +__6BDE830C-FFA8-4F2D-9733-34F02F35020F +__138A0FE1-D8AA-4C1E-BB5E-4EC9714F4CA8 +__621F3412-C507-4945-836B-CF9B81BDCC99 + + + +RT1H_Combined.RA_ComponentImplementations.Input_AdapterImplementation.Input_AdapterMonolithicImpl + +__DC22BCBB-DB20-4072-AA64-161AFD7A9C10 +__3E362049-0CF5-4F01-905F-67CAD769FFD5 +__3B466B60-F8C2-4E48-A6E4-3D3D7EED9F03 + + + +RT1H_Combined.RA_ComponentImplementations.Interactive_Input_AdapterImplementation.Interactive_Input_AdapterMonolithicImpl + +__AD4B52E0-103C-49E2-BE47-29CAE978676F +__E4AF24BF-5A39-46B1-8217-6343D7D53298 +__76A0CEFE-E2F7-4BF7-BB91-F309FB5AD33C + + + +RT1H_Combined.RA_ComponentImplementations.Output_AdapterImplementation.Output_AdapterMonolithicImpl + +__864DB99C-C60B-4FDD-A47D-AFD5C1599892 +__D6EB8E01-F794-4C43-AB14-A3AFB9767D01 +__4C78C4F9-FEF4-45AA-84A4-FFB10255A1EC + + + +RT1H_Combined.RA_ComponentImplementations.Output_ManagerImplementation.Output_ManagerMonolithicImpl + +__AB498B7F-A0E8-4F59-BF24-BBB9D125EED3 +__1BB4CD4A-38A8-4BBA-9303-4A10F5B8BC57 +__280E6118-F4C7-4DE4-A0A4-A50637282EAE + + + +RT1H_Combined.RA_ComponentImplementations.DAnCE_Output_AdapterImplementation.DAnCE_Output_AdapterMonolithicImpl + +__A47095F9-2E08-485E-96B4-CC0829051DF3 +__E54AE941-14CA-48FC-BAAA-1B93269EF79B +__ACA6BD67-D92A-4DBF-827A-7C0B15EA3F6D + + + +RT1H_Combined.RA_ComponentImplementations.XML_Output_AdapterImplementation.XML_Output_AdapterMonolithicImpl + +__CF7C6C9B-C6E3-4356-B9F1-598FA0B4A5B7 +__437B6234-9DD3-40E4-9AE0-0923EBAF4548 +__E2F1EA75-127C-4579-B692-ADD1026C6F23 + + + +RT1H_Combined.RA_ComponentImplementations.PlannerImplementation.PlannerMonolithicImpl + +__B28C1F32-0231-4F7F-8FE2-164321942B87 +__2021EE2F-3480-4BF9-9A3A-D146A99D251D +__D952F988-841F-43BA-9650-86846B08DF5F + + + +RT1H_Combined.RA_ComponentImplementations.SimpleBinPackerImplementation.SimpleBinPackerMonolithicImpl + +__2B5FE9E6-AF4C-4BC1-92A2-58101B2ECCA8 +__4D375D8F-5470-4236-8614-EF07D08020E3 +__D6176B6C-58E4-43D4-BFC9-3DCF98249044 + + + +RT1H_Combined.RA_ComponentImplementations.Planner_ManagerImplementation.Planner_ManagerMonolithicImpl + +__5B614077-C99E-428C-B8BE-252ADD7905B7 +__0BEB188E-3967-4D91-A6A1-CDF08EF81718 +__A65A1FA0-8F4D-4807-9AE9-90D344154D2C + + + +RT1H_Combined.RA_ComponentImplementations.Plan_AnalyzerImplementation.Plan_AnalyzerMonolithicImpl + +__1CC443DF-7EE3-4130-8ACE-EE4181AC96CD +__57123764-8624-4D79-9C5B-7ADF929536E6 +__CDC7061A-483C-447B-8151-E68250566E86 + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetector1 +blade44 + +_A8181747-270E-43FF-B723-50825AA8EA74 + +ComponentIOR + + +tk_string + + +Env_Detector.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetector2 +blade44 + +_A8181747-270E-43FF-B723-50825AA8EA74 + +ComponentIOR + + +tk_string + + +Env_Detector.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetecto3 +blade44 + +_A8181747-270E-43FF-B723-50825AA8EA74 + +ComponentIOR + + +tk_string + + +Env_Detector.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetector4 +blade44 + +_A8181747-270E-43FF-B723-50825AA8EA74 + +ComponentIOR + + +tk_string + + +Env_Detector.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector3 +blade43 + +_8D45FC0E-C3DD-4671-926D-A08430B37D37 + +ComponentIOR + + +tk_string + + +Effectory_Secondary.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector2 +blade43 + +_8D45FC0E-C3DD-4671-926D-A08430B37D37 + +ComponentIOR + + +tk_string + + +Effectory_Secondary.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector4 +blade43 + +_8D45FC0E-C3DD-4671-926D-A08430B37D37 + +ComponentIOR + + +tk_string + + +Effectory_Secondary.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Planner_Three +blade39 + +_A7DAA16F-D455-4C63-92CE-05B98DD34B15 + +ComponentIOR + + +tk_string + + +Planner_Three.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Planner_One +blade42 + +_DA5C3C13-030E-4971-A0BF-8631563EFDF3 + +ComponentIOR + + +tk_string + + +Planner_One.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector_Main +blade41 + +_05FAFE3F-76B3-4C6E-A86B-0225B9E76909 + +ComponentIOR + + +tk_string + + +Effectory_Main.ior + + + + + + +RT1H_Combined.ComponentImplementations.RT1H.RT1H.Config_Op +blade40 + +_2D19FD96-440B-48D4-8D68-4E9B466B2BCC + +ComponentIOR + + +tk_string + + +Config_Op.ior + + + + + + +RT1H_Combined.ComponentImplementations.RACE.RACE.Benchmark_Data_Collector_Ex +blade10 + +_BA0C4535-191E-4BE0-9BF4-A054EB2C4139 + +ComponentIOR + + +tk_string + + +BDC_Ex.ior + + + + +server_name + + +tk_string + + +blade10.isislab.vanderbilt.edu + + + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_002D7B3A-A628-43E3-AD53-B1AB8636001E + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_34C61830-1F54-494F-95DE-4003BCD428C5 + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_57B08287-3528-4862-9110-ACACD713360B + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_EC0045E5-7501-4E2B-B755-D8CE22BF4816 + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_FEBD6AD3-6310-4E25-A0E5-957DED0B6509 + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_7529501D-B22A-42F9-A75B-0E71DC97D3AA + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_AC6DB008-DCCB-45D7-B52D-628B74B49AC9 + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +cuts_testing_service_testing_service + +cuts_testing_service +SimplexReceptacle +_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB + + +testing_service +Facet +_7AE0BE73-48F8-4717-A5FF-524D454C58DD + + + + +status_status + +status +EventPublisher +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + +status +EventConsumer +_34C61830-1F54-494F-95DE-4003BCD428C5 + + + + +status_status + +status +EventPublisher +_EC0045E5-7501-4E2B-B755-D8CE22BF4816 + + +status +EventConsumer +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + + + +status_status + +status +EventPublisher +_57B08287-3528-4862-9110-ACACD713360B + + +status +EventConsumer +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + + + +status_status + +status +EventPublisher +_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC + + +status +EventConsumer +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + + + +command_command + +command +EventPublisher +_34C61830-1F54-494F-95DE-4003BCD428C5 + + +command +EventConsumer +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + + + +command_command + +command +EventPublisher +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + +command +EventConsumer +_57B08287-3528-4862-9110-ACACD713360B + + + + +command_command + +command +EventPublisher +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + +command +EventConsumer +_EC0045E5-7501-4E2B-B755-D8CE22BF4816 + + + + +command_command + +command +EventPublisher +_015ACD88-117F-42C9-8D04-3FFAB9F6C98E + + +command +EventConsumer +_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC + + + + +assessment_assessment + +assessment +EventPublisher +_002D7B3A-A628-43E3-AD53-B1AB8636001E + + +assessment +EventConsumer +_34C61830-1F54-494F-95DE-4003BCD428C5 + + + + +situation_situation + +situation +EventPublisher +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + +situation +EventConsumer +_002D7B3A-A628-43E3-AD53-B1AB8636001E + + + + +command_command + +command +EventPublisher +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + +command +EventConsumer +_FEBD6AD3-6310-4E25-A0E5-957DED0B6509 + + + + +command_command + +command +EventPublisher +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + +command +EventConsumer +_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB + + + + +command_command + +command +EventPublisher +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + +command +EventConsumer +_7529501D-B22A-42F9-A75B-0E71DC97D3AA + + + + +command_command + +command +EventPublisher +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + +command +EventConsumer +_AC6DB008-DCCB-45D7-B52D-628B74B49AC9 + + + + +track_track + +track +EventPublisher +_FEBD6AD3-6310-4E25-A0E5-957DED0B6509 + + +track +EventConsumer +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + + + +track_track + +track +EventPublisher +_7529501D-B22A-42F9-A75B-0E71DC97D3AA + + +track +EventConsumer +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + + + +track_track + +track +EventPublisher +_AC6DB008-DCCB-45D7-B52D-628B74B49AC9 + + +track +EventConsumer +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + + + +track_track + +track +EventPublisher +_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB + + +track +EventConsumer +_AB189D2B-6D86-4020-88BD-74DBECC7F7B8 + + + + +RT1H_Combined.ImplementationArtifacts.Config_Op_Artifacts.Config_Op_stub + + +Config_Op_CoWorkEr_stub + + + +RT1H_Combined.ImplementationArtifacts.Config_Op_Artifacts.Config_Op_svnt + + +Config_Op_CoWorkEr_svnt + +entryPoint + + +tk_string + + +create_TSCE_Config_Op_Factory_Servant + + + + + + +RT1H_Combined.ImplementationArtifacts.Config_Op_Artifacts.Config_Op_exec + + +Config_Op_CoWorkEr_exec + +entryPoint + + +tk_string + + +create_TSCE_Config_Op_Factory_CoWorkEr_Factory_Impl + + + + + + +RT1H_Combined.ImplementationArtifacts.Env_Dectector_Artifacts.Env_Detector_exec + + +Env_Detector_CoWorkEr_exec + +entryPoint + + +tk_string + + +create_TSCE_Env_Detector_Factory_CoWorkEr_Factory_Impl + + + + + + +RT1H_Combined.ImplementationArtifacts.Env_Dectector_Artifacts.Env_Dectector_stub + + +Env_Detector_CoWorkEr_stub + + + +RT1H_Combined.ImplementationArtifacts.Env_Dectector_Artifacts.Env_Detector_svnt + + +Env_Detector_CoWorkEr_svnt + +entryPoint + + +tk_string + + +create_TSCE_Env_Detector_Factory_Servant + + + + + + +RT1H_Combined.ImplementationArtifacts.Planner_One_Artifacts.Planner_One_stub + + +Planner_One_CoWorkEr_stub + + + +RT1H_Combined.ImplementationArtifacts.Planner_One_Artifacts.Planner_One_svnt + + +Planner_One_CoWorkEr_svnt + +entryPoint + + +tk_string + + +create_TSCE_Planner_One_Factory_Servant + + + + + + +RT1H_Combined.ImplementationArtifacts.Planner_One_Artifacts.Planner_One_exec + + +Planner_One_CoWorkEr_exec + +entryPoint + + +tk_string + + +create_TSCE_Planner_One_Factory_CoWorkEr_Factory_Impl + + + + + + +RT1H_Combined.ImplementationArtifacts.Effector_Secondary_Artifacts.Effector_Secondary_svnt + + +Effector_Secondary_CoWorkEr_svnt + +entryPoint + + +tk_string + + +create_TSCE_Effector_Secondary_Factory_Servant + + + + + + +RT1H_Combined.ImplementationArtifacts.Effector_Secondary_Artifacts.Effector_Secondary_stub + + +Effector_Secondary_CoWorkEr_stub + + + +RT1H_Combined.ImplementationArtifacts.Effector_Secondary_Artifacts.Effector_Secondary_exec + + +Effector_Secondary_CoWorkEr_exec + +entryPoint + + +tk_string + + +create_TSCE_Effector_Secondary_Factory_CoWorkEr_Factory_Impl + + + + + + +RT1H_Combined.ImplementationArtifacts.Effector_Main_Artifacts.Effector_Main_svnt + + +Effector_Main_CoWorkEr_svnt + +entryPoint + + +tk_string + + +create_TSCE_Effector_Main_Factory_Servant + + + + + + +RT1H_Combined.ImplementationArtifacts.Effector_Main_Artifacts.Effector_Main_exec + + +Effector_Main_CoWorkEr_exec + +entryPoint + + +tk_string + + +create_TSCE_Effector_Main_Factory_CoWorkEr_Factory_Impl + + + + + + +RT1H_Combined.ImplementationArtifacts.Effector_Main_Artifacts.Effector_Main_stub + + +Effector_Main_CoWorkEr_stub + + + +RT1H_Combined.ImplementationArtifacts.Planner_Three_Artifacts.Planner_Three_svnt + + +Planner_Three_CoWorkEr_svnt + +entryPoint + + +tk_string + + +create_TSCE_Planner_Three_Factory_Servant + + + + + + +RT1H_Combined.ImplementationArtifacts.Planner_Three_Artifacts.Planner_Three_exec + + +Planner_Three_CoWorkEr_exec + +entryPoint + + +tk_string + + +create_TSCE_Planner_Three_Factory_CoWorkEr_Factory_Impl + + + + + + +RT1H_Combined.ImplementationArtifacts.Planner_Three_Artifacts.Planner_Three_stub + + +Planner_Three_CoWorkEr_stub + + + +RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Artifacts.BDC_stub + + +Benchmark_Data_Collector_stub + + + +RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Artifacts.BDC_svnt + + +Benchmark_Data_Collector_svnt + +entryPoint + + +tk_string + + +create_CUTS_Benchmark_Data_Collector_Home_Servant + + + + + + +RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Artifacts.BDC_exec + + +Benchmark_Data_Collector_exec + +entryPoint + + +tk_string + + +create_CUTS_Benchmark_Data_Collector_Home_Impl + + + + + + +RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Ex_Artifacts.BDC_Ex_exec + + +Benchmark_Data_Collector_Ex_exec + +entryPoint + + +tk_string + + +create_CUTS_Benchmark_Data_Collector_Ex_Home_Impl + + + + + + +RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Ex_Artifacts.BDC_Ex_stub + + +Benchmark_Data_Collector_Ex_stub + + + +RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Ex_Artifacts.BDC_Ex_svnt + + +Benchmark_Data_Collector_Ex_svnt + +entryPoint + + +tk_string + + +create_CUTS_Benchmark_Data_Collector_Ex_Home_Servant + + + + + + +RT1H_Combined.RACE_ImplementationArtifacts.ControllerArtifacts.Controller_stub + + +Controller_stub + + + +RT1H_Combined.RACE_ImplementationArtifacts.ControllerArtifacts.Controller_svnt + + +Controller_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Controller_Home_Servant + + + + + + +RT1H_Combined.RACE_ImplementationArtifacts.ControllerArtifacts.Controller_exec + + +Controller_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Controller_Home_Impl + + + + + + +RT1H_Combined.RACE_ImplementationArtifacts.TargetManagerImplArtifacts.TargetManager_stub + + +TargetManager_stub + + + +RT1H_Combined.RACE_ImplementationArtifacts.TargetManagerImplArtifacts.TargetManager_svnt + + +TargetManager_svnt + +entryPoint + + +tk_string + + +create_CIAO_TargetManagerHome_Servant + + + + + + +RT1H_Combined.RACE_ImplementationArtifacts.TargetManagerImplArtifacts.TargetManager_exec + + +TargetManager_exec + +entryPoint + + +tk_string + + +create_CIAO_TargetManagerHome_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.AnalyzerArtifacts.Analyzer_stub + + +Analyzer_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.AnalyzerArtifacts.Analyzer_svnt + + +Analyzer_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Analyzer_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.AnalyzerArtifacts.Analyzer_exec + + +Analyzer_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Analyzer_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.SimpleAllocationAnalyzerArtifacts.SimpleAllocationAnalyzer_stub + + +SimpleAllocationAnalyzer_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.SimpleAllocationAnalyzerArtifacts.SimpleAllocationAnalyzer_svnt + + +SimpleAllocationAnalyzer_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_SimpleAllocationAnalyzer_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.SimpleAllocationAnalyzerArtifacts.SimpleAllocationAnalyzer_exec + + +SimpleAllocationAnalyzer_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_SimpleAllocationAnalyzer_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Input_AdapterArtifacts.Input_Adapter_stub + + +Input_Adapter_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.Input_AdapterArtifacts.Input_Adapter_svnt + + +Input_Adapter_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Input_Adapter_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Input_AdapterArtifacts.Input_Adapter_exec + + +Input_Adapter_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Input_Adapter_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Interactive_Input_AdapterArtifacts.Interactive_Input_Adapter_stub + + +Interactive_Input_Adapter_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.Interactive_Input_AdapterArtifacts.Interactive_Input_Adapter_svnt + + +Interactive_Input_Adapter_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Interactive_Input_Adapter_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Interactive_Input_AdapterArtifacts.Interactive_Input_Adapter_exec + + +Interactive_Input_Adapter_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Interactive_Input_Adapter_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Output_AdapterArtifacts.Output_Adapter_stub + + +Output_Adapter_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.Output_AdapterArtifacts.Output_Adapter_svnt + + +Output_Adapter_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Output_Adapter_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Output_AdapterArtifacts.Output_Adapter_exec + + +Output_Adapter_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Output_Adapter_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Output_ManagerArtifacts.Output_Manager_stub + + +Output_Manager_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.Output_ManagerArtifacts.Output_Manager_svnt + + +Output_Manager_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Output_Manager_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Output_ManagerArtifacts.Output_Manager_exec + + +Output_Manager_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Output_Manager_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.DAnCE_Output_AdapterArtifacts.DAnCE_Output_Adapter_stub + + +DAnCE_Output_Adapter_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.DAnCE_Output_AdapterArtifacts.DAnCE_Output_Adapter_svnt + + +DAnCE_Output_Adapter_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_DAnCE_Output_Adapter_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.DAnCE_Output_AdapterArtifacts.DAnCE_Output_Adapter_exec + + +DAnCE_Output_Adapter_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_DAnCE_Output_Adapter_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.XML_Output_AdapterArtifacts.XML_Output_Adapter_stub + + +XML_Output_Adapter_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.XML_Output_AdapterArtifacts.XML_Output_Adapter_svnt + + +XML_Output_Adapter_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_XML_Output_Adapter_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.XML_Output_AdapterArtifacts.XML_Output_Adapter_exec + + +XML_Output_Adapter_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_XML_Output_Adapter_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.PlannerArtifacts.Planner_stub + + +Planner_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.PlannerArtifacts.Planner_svnt + + +Planner_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Planner_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.PlannerArtifacts.Planner_exec + + +Planner_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Planner_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.SimpleBinPackerArtifacts.SimpleBinPacker_stub + + +SimpleBinPacker_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.SimpleBinPackerArtifacts.SimpleBinPacker_svnt + + +SimpleBinPacker_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_SimpleBinPacker_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.SimpleBinPackerArtifacts.SimpleBinPacker_exec + + +SimpleBinPacker_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_SimpleBinPacker_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Planner_ManagerArtifacts.Planner_Manager_stub + + +Planner_Manager_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.Planner_ManagerArtifacts.Planner_Manager_svnt + + +Planner_Manager_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Planner_Manager_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Planner_ManagerArtifacts.Planner_Manager_exec + + +Planner_Manager_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Planner_Manager_Home_Impl + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Plan_AnalyzerArtifacts.Plan_Analyzer_stub + + +Plan_Analyzer_stub + + + +RT1H_Combined.RA_ImplementationArtifacts.Plan_AnalyzerArtifacts.Plan_Analyzer_svnt + + +Plan_Analyzer_svnt + +entryPoint + + +tk_string + + +create_CIAO_RACE_Plan_Analyzer_Home_Servant + + + + + + +RT1H_Combined.RA_ImplementationArtifacts.Plan_AnalyzerArtifacts.Plan_Analyzer_exec + + +Plan_Analyzer_exec + +entryPoint + + +tk_string + + +create_CIAO_RACE_Plan_Analyzer_Home_Impl + + + + + + diff --git a/modules/CIAO/DAnCE/tests/Config_Handlers/test.cpp b/modules/CIAO/DAnCE/tests/Config_Handlers/test.cpp new file mode 100644 index 00000000000..fd50374aa7e --- /dev/null +++ b/modules/CIAO/DAnCE/tests/Config_Handlers/test.cpp @@ -0,0 +1,119 @@ +// $Id$ + +#include + +#include "Deployment.hpp" +#include "DP_Handler.h" +#include "DAnCE/Deployment/Deployment_DataC.h" +#include "ace/Get_Opt.h" +#include "Utils/XML_Typedefs.h" +#include "tao/ORB.h" +static const char *input_file = "BasicSP.cdp"; + + +static int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "i:"); + + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'i': + input_file = get_opts.opt_arg (); + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-i " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command-line + return 0; +} + +// Check to see if SRD was imported. +void check_srd (const Deployment::DeploymentPlan &); + +using namespace CIAO::Config_Handlers; + + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + + if (parse_args (argc, argv) != 0) + return 1; + + // Initialize an ORB so Any will work + CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv); + ACE_UNUSED_ARG (orb); + + //Create an XML_Helper for all the file work + + if (xercesc::DOMDocument *doc = + XML_Helper::XML_HELPER.create_dom (input_file)) + { + //Read in the XSC type structure from the DOMDocument + DeploymentPlan dp = deploymentPlan (doc); + + //Convert the XSC to an IDL datatype + + DP_Handler dp_handler (dp); + + std::cout << "Instance document import succeeded. Dumping contents to file\n"; + + //Retrieve the newly created IDL structure + Deployment::DeploymentPlan *idl = dp_handler.plan(); + + // Check for server resources, if present.... + check_srd (*idl); + + //Convert it back to an XSC structure with a new DP_Handler + DP_Handler reverse_handler(*idl); + + //Create a new DOMDocument for writing the XSC into XML + xercesc::DOMDocument* the_xsc + (XML_Helper::XML_HELPER.create_dom(0)); + + //Serialize the XSC into a DOMDocument + deploymentPlan(*reverse_handler.xsc(), the_xsc); + + + //Write it to test.xml + XML_Helper::XML_HELPER.write_DOM(the_xsc, "test.xml"); + + //Cleanliness is next to Godliness + delete doc; + } + + std::cout << "Test completed!\n"; + + return 0; +} + + +void check_srd (const Deployment::DeploymentPlan &dp) +{ + for (CORBA::ULong i = 0; + i < dp.infoProperty.length (); + ++i) + { + if (ACE_OS::strcmp (dp.infoProperty[i].name.in (), + "CIAOServerResources") == 0) + { + CIAO::DAnCE::ServerResource *test; + + if (dp.infoProperty[i].value >>= test) + std::cerr << "ServerResources found and successfully extracted." << std::endl; + else + std::cerr << "ERROR: ServerResource extraction failed!" << std::endl; + } + } + +} + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host1.cdp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host1.cdp new file mode 100644 index 00000000000..ae648c66207 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host1.cdp @@ -0,0 +1,639 @@ + + + CcmDance2_1 + + + + + + + + + ClientDanceHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_ClientDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/ClientModule/ClientDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.ClientModule.SessionClientDanceHome_impl + + + + + + + + + + + + ClientDanceImplementation + + ClientDanceArtifact + + + + + + + TestDriverHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_TestDriverHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/DriverModule/TestDriverHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.DriverModule.SessionTestDriverHome_impl + + + + + + + + + TestDriverImplementation + + ClientDanceArtifact + + + + + + + + + + + + ClientDanceHome1 + Host1 + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess2@CcmDance2Application + + + + + + + ClientDance1 + Host1 + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome1 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance1 + + + + + + + configuration + + + tk_string + + + Client1 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + TestDriverHome + Host1 + + + TestDriverHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess2@CcmDance2Application + + + + + + + TestDriver1 + Host1 + + TestDriverImplementation + + + + cdmw.component_home + + + tk_string + + + TestDriverHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + TestDriver1 + + + + + + + + + + + + + client1_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance/serverHostInfo1.Port + true + + + + + + + server_receptacle1 + + clientHostInfo + true + Facet + ClientDance1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance.Component + false + clientHostInfo1 + + + + + + client1_consumer_to_publishes + + hostnameResults + true + EventConsumer + ClientDance1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance.Component + false + hostnamePublishes + + + + + + server_consumer_to_emits1 + + commandEmits + false + EventEmitter + ClientDance1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance/commands.Port + true + + + + + + + client1_sayHello + + sayHello + false + SimplexReceptacle + ClientDance1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance/supports.Port + true + + + + + + + client1_naming + + naming + false + SimplexReceptacle + ClientDance1 + + + corbaname::rhel4x.prismtech.com:21869 + true + + + + + + + testDriver_server + + server + false + SimplexReceptacle + TestDriver1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance/supports.Port + true + + + + + + + testDriver_client1 + + client1 + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ClientDance1 + + + + + testDriver_client2 + + client2 + false + SimplexReceptacle + TestDriver1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ClientDance2/supports.Port + true + + + + + + + testDriver_sayHello + + handshake + false + SimplexReceptacle + TestDriver1 + + + corbaname::rhel4y.prismtech.com:12345#Host2/CcmDance2_1.DeploymentPlan/ServerDance/supports.Port + true + + + + + + + + ClientDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libClientCcmDance2Demo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/EventTypeModule/HostnameResult:1.0 + + + + + factory_entrypoint + + + tk_string + + + createHostnameResultFactory + + + + + + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host2.cdp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host2.cdp new file mode 100644 index 00000000000..df5d7435536 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2-host2.cdp @@ -0,0 +1,969 @@ + + + CcmDance2_1 + + + + + + + + + ServerDanceHomeImplementation + + ServerDanceArtifact1 + ServerDanceArtifact2 + + + + home factory + + + tk_string + + + create_CCM_ServerDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/ServerModule/ServerDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.ServerModule.SessionServerDanceHome_impl + + + + + + + + + + + + ServerDanceImplementation + + ServerDanceArtifact1 + + + + + + + + ClientDanceHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_ClientDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/ClientModule/ClientDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.ClientModule.SessionClientDanceHome_impl + + + + + + + + + + + + ClientDanceImplementation + + ClientDanceArtifact + + + + + + + ServerDanceHome + Host2 + + + ServerDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ServerDanceProcess@CcmDance2Application + + + + + + + ServerDance + Host2 + + ServerDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ServerDanceHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ServerDance + + + + + + + fooStruct + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2Test/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + fooString + + hello + + + + fooLong + + 250 + + + + + + + + + fooEnum + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2Test/FooEnum:1.0 + A + B + C + + + + B + + + + + + + fooStructSeq + + + tk_sequence + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2Test/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + + + + fooString + + hello1 + + + + fooLong + + 123 + + + + + + fooString + + hello2 + + + + fooLong + + 456 + + + + + + + + + + fooEnumSeq + + + tk_sequence + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2Test/FooEnum:1.0 + A + B + C + + + + + + + A + + + C + + + + + + + + expectedClientHostname1 + + + tk_string + + + rhel4x.prismtech.com + + + + + + + expectedClientHostname2 + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + ClientDanceHome2 + Host2 + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess1@CcmDance2Application + + + + + + + ClientDance2 + Host2 + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome2 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance2 + + + + + + + configuration + + + tk_string + + + Client2 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + + client1_receptacle + + serverHostInfo1 + true + Facet + ServerDance + + + + + client2_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance2 + + + serverHostInfo2 + true + Facet + ServerDance + + + + + server_receptacle1 + + clientHostInfo1 + false + SimplexReceptacle + ServerDance + + + corbaloc:iiop:1.2@rhel4x.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host1%00CcmDance2_1/ClientDance1/clientHostInfo + true + + + + + + + server_receptacle2 + + clientHostInfo2 + false + SimplexReceptacle + ServerDance + + + clientHostInfo + true + Facet + ClientDance2 + + + + + client1_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance + + + corbaloc:iiop:1.2@rhel4x.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host1%00CcmDance2_1/ClientDance1/hostnameResults + true + + + + + + + client2_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance + + + hostnameResults + true + EventConsumer + ClientDance2 + + + + + server_consumer_to_emits1 + + commands + true + EventConsumer + ServerDance + + + + + server_consumer_to_emits2 + + commandEmits + false + EventEmitter + ClientDance2 + + + commands + true + EventConsumer + ServerDance + + + + + client1_sayHello + + supports + true + Facet + ServerDance + + + + + client2_sayHello + + sayHello + false + SimplexReceptacle + ClientDance2 + + + supports + true + Facet + ServerDance + + + + + client2_naming + + naming + false + SimplexReceptacle + ClientDance2 + + + corbaname::rhel4x.prismtech.com:21869 + true + + + + + + + testDriver_server + + supports + true + Facet + ServerDance + + + + + testDriver_client2 + + supports + true + Facet + ClientDance2 + + + + + testDriver_sayHello + + supports + true + Facet + ServerDance + + + + + + + + + + ServerDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libServerCcmDance2Demo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/EventTypeModule/Command:1.0 + + + + + factory_entrypoint + + + tk_string + + + createCommandFactory + + + + + + + ServerDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libServerCcmDance2Demo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/FooValueType:1.0 + + + + + factory_entrypoint + + + tk_string + + + createFooValueTypeFactory + + + + + + + ClientDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libClientCcmDance2Demo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/EventTypeModule/HostnameResult:1.0 + + + + + factory_entrypoint + + + tk_string + + + createHostnameResultFactory + + + + + + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2.cdp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2.cdp new file mode 100644 index 00000000000..7dcafb1a069 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance2.cdp @@ -0,0 +1,1300 @@ + + + CcmDance2_1 + + + + + + + + + ServerDanceHomeImplementation + + ServerDanceArtifact1 + ServerDanceArtifact2 + + + + home factory + + + tk_string + + + create_CCM_ServerDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/ServerModule/ServerDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.ServerModule.SessionServerDanceHome_impl + + + + + + + + + + + + ServerDanceImplementation + + ServerDanceArtifact1 + + + + + + + + ClientDanceHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_ClientDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/ClientModule/ClientDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.ClientModule.SessionClientDanceHome_impl + + + + + + + + + + + + ClientDanceImplementation + + ClientDanceArtifact + + + + + + + TestDriverHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_TestDriverHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2Test/DriverModule/TestDriverHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2Test.DriverModule.SessionTestDriverHome_impl + + + + + + + + + TestDriverImplementation + + ClientDanceArtifact + + + + + + + + + + + + ServerDanceHome + Host2 + + + ServerDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ServerDanceProcess@CcmDance2Application + + + + + + + ServerDance + Host2 + + ServerDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ServerDanceHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ServerDance + + + + + + + fooStruct + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2Test/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + fooString + + hello + + + + fooLong + + 250 + + + + + + + + + fooEnum + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2Test/FooEnum:1.0 + A + B + C + + + + B + + + + + + + fooStructSeq + + + tk_sequence + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2Test/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + + + + fooString + + hello1 + + + + fooLong + + 123 + + + + + + fooString + + hello2 + + + + fooLong + + 456 + + + + + + + + + + fooEnumSeq + + + tk_sequence + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2Test/FooEnum:1.0 + A + B + C + + + + + + + A + + + C + + + + + + + + expectedClientHostname1 + + + tk_string + + + rhel4x.prismtech.com + + + + + + + expectedClientHostname2 + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + + ClientDanceHome1 + Host1 + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess2@CcmDance2Application + + + + + + + ClientDance1 + Host1 + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome1 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance1 + + + + + + + configuration + + + tk_string + + + Client1 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + ClientDanceHome2 + Host2 + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess1@CcmDance2Application + + + + + + + ClientDance2 + Host2 + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome2 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance2 + + + + + + + configuration + + + tk_string + + + Client2 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + TestDriverHome + Host1 + + + TestDriverHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess2@CcmDance2Application + + + + + + + TestDriver1 + Host1 + + TestDriverImplementation + + + + cdmw.component_home + + + tk_string + + + TestDriverHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + TestDriver1 + + + + + + + + + + + + + client1_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance1 + + + serverHostInfo1 + true + Facet + ServerDance + + + + + client2_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance2 + + + serverHostInfo2 + true + Facet + ServerDance + + + + + server_receptacle1 + + clientHostInfo1 + false + SimplexReceptacle + ServerDance + + + clientHostInfo + true + Facet + ClientDance1 + + + + + server_receptacle2 + + clientHostInfo2 + false + SimplexReceptacle + ServerDance + + + clientHostInfo + true + Facet + ClientDance2 + + + + + client1_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance + + + hostnameResults + true + EventConsumer + ClientDance1 + + + + + client2_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance + + + hostnameResults + true + EventConsumer + ClientDance2 + + + + + server_consumer_to_emits1 + + commandEmits + false + EventEmitter + ClientDance1 + + + commands + true + EventConsumer + ServerDance + + + + + server_consumer_to_emits2 + + commandEmits + false + EventEmitter + ClientDance2 + + + commands + true + EventConsumer + ServerDance + + + + + client1_sayHello + + sayHello + false + SimplexReceptacle + ClientDance1 + + + supports + true + Facet + ServerDance + + + + + client1_naming + + naming + false + SimplexReceptacle + ClientDance1 + + + corbaname::rhel4y.prismtech.com:21869 + true + + + + + + + client2_sayHello + + sayHello + false + SimplexReceptacle + ClientDance2 + + + supports + true + Facet + ServerDance + + + + + client2_naming + + naming + false + SimplexReceptacle + ClientDance2 + + + corbaname::rhel4y.prismtech.com:21869 + true + + + + + + + testDriver_server + + server + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ServerDance + + + + + testDriver_client1 + + client1 + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ClientDance1 + + + + + testDriver_client2 + + client2 + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ClientDance2 + + + + + testDriver_sayHello + + handshake + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ServerDance + + + + + + + + + + ServerDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libServerCcmDance2Demo.so + + factory_entrypoint + + + tk_string + + + createCommandFactory + + + + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/EventTypeModule/Command:1.0 + + + + + + + ServerDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libServerCcmDance2Demo.so + + factory_entrypoint + + + tk_string + + + createFooValueTypeFactory + + + + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/FooValueType:1.0 + + + + + + + ClientDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2/c++/i686-pc-linux-gnu/libClientCcmDance2Demo.so + + factory_entrypoint + + + tk_string + + + createHostnameResultFactory + + + + + repid + + + tk_string + + + IDL:acme.com/CcmDance2Test/EventTypeModule/HostnameResult:1.0 + + + + + + + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host1.cdp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host1.cdp new file mode 100644 index 00000000000..0aa52abe9a0 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host1.cdp @@ -0,0 +1,1055 @@ + + + CcmDance2_1 + + + + + + + + + ServerDanceHomeImplementation + + ServerDanceArtifact1 + ServerDanceArtifact2 + + + + home factory + + + tk_string + + + create_CCM_ServerDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/ServerModule/ServerDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2WithFTTest.ServerModule.FTSessionServerDanceHome_impl + + + + + + + cdmw.config.FaultToleranceReplicationStyle + + + tk_enum + + FTReplicationStyleValue + IDL:thalesgroup.com/CdmwDeployment/FTReplicationStyleValue:1.0 + STATELSESS + COLD_PASSIVE + WARM_PASSIVE + ACTIVE + ACTIVE_WITH_VOTING + + + + WARM_PASSIVE + + + + + + + + + ServerDanceImplementation + + ServerDanceArtifact1 + ServerDanceArtifact2 + + + + + + + + ClientDanceHomeImplementation + + ClientDanceArtifact + ServerDanceArtifact1 + + + + home factory + + + tk_string + + + create_CCM_ClientDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/ClientModule/ClientDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2WithFTTest.ClientModule.SessionClientDanceHome_impl + + + + + + + + ClientDanceImplementation + + ClientDanceArtifact + ServerDanceArtifact1 + + + + + + + TestDriverHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_TestDriverHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/DriverModule/TestDriverHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2WithFTTest.DriverModule.SessionTestDriverHome_impl + + + + + + + + + TestDriverImplementation + + ClientDanceArtifact + + + + + + + ServerDanceHome1 + Host1 + + + ServerDanceHomeImplementation + + + + cdmw.config.ProcessDestination + + + tk_string + + + ServerDanceProcess1@CcmDance2WithFTApplication + + + + + + + ServerDance1 + Host1 + + ServerDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ServerDanceHome1 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ServerDance1 + + + + + + + cdmw.config.FaultToleranceGroupName + + + tk_string + + + ServerDanceFT + + + + + + + fooStruct + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2WithFTTest/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + fooString + + hello + + + + fooLong + + 250 + + + + + + + + + fooEnum + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2WithFTTest/FooEnum:1.0 + A + B + C + + + + B + + + + + + + fooStructSeq + + + tk_sequence + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2WithFTTest/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + + + + fooString + + hello1 + + + + fooLong + + 123 + + + + + + fooString + + hello2 + + + + fooLong + + 456 + + + + + + + + + + fooEnumSeq + + + tk_sequence + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2WithFTTest/FooEnum:1.0 + A + B + C + + + + + + + A + + + C + + + + + + + + expectedClientHostname1 + + + tk_string + + + rhel4x.prismtech.com + + + + + + + expectedClientHostname2 + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + + ClientDanceHome1 + Host1 + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess1@CcmDance2WithFTApplication + + + + + + + ClientDance1 + Host1 + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome1 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance1 + + + + + + + configuration + + + tk_string + + + Client1 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4x.prismtech.com + + + + + + + + TestDriverHome + Host1 + + + TestDriverHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess1@CcmDance2WithFTApplication + + + + + + + TestDriver1 + Host1 + + TestDriverImplementation + + + + cdmw.component_home + + + tk_string + + + TestDriverHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + TestDriver1 + + + + + + + + + + + + + client1_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance1 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + server_receptacle1 + + clientHostInfo1 + false + SimplexReceptacle + ServerDance1 + + + clientHostInfo + true + Facet + ClientDance1 + + + + + server_receptacle2 + + clientHostInfo2 + false + SimplexReceptacle + ServerDance1 + + + corbaloc:iiop:1.2@rhel4y.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host2%00CcmDance2_1/ClientDance2/clientHostInfo + true + + + + + + + client1_consumer_to_publishes + + + hostnameResults + true + EventConsumer + ClientDance1 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + false + hostnamePublishes + + + + + + client2_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance1 + + + corbaloc:iiop:1.2@rhel4y.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host2%00CcmDance2_1/ClientDance2/hostnameResults + true + + + + + + + server_consumer_to_emits1 + + commandEmits + false + EventEmitter + ClientDance1 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + client1_sayHello + + sayHello + false + SimplexReceptacle + ClientDance1 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + testDriver_server + + server + false + SimplexReceptacle + TestDriver1 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + testDriver_client1 + + client1 + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ClientDance1 + + + + + testDriver_client2 + + client2 + false + SimplexReceptacle + TestDriver1 + + + corbaloc:iiop:1.2@rhel4y.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host2%00CcmDance2_1/ClientDance2/supports + true + + + + + + + testDriver_sayHello + + handshake + false + SimplexReceptacle + TestDriver1 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + + + + + + ServerDanceArtifact1 + + + /home/sl/install/ofccm_v0/demos/demo_dance2_with_ft/c++/i686-pc-linux-gnu/libServerCcmDance2WithFTDemo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/EventTypeModule/Command:1.0 + + + + + factory_entrypoint + + + tk_string + + + createCommandFactory + + + + + + + ServerDanceArtifact2 + + + /home/sl/install/ofccm_v0/demos/demo_dance2_with_ft/c++/i686-pc-linux-gnu/libServerCcmDance2WithFTDemo.so + + repid + + + tk_string + + + DL:acme.com/CcmDance2WithFTTest/FooValueType:1.0 + + + + + factory_entrypoint + + + tk_string + + + createFooValueTypeFactory + + + + + + + ClientDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2_with_ft/c++/i686-pc-linux-gnu/libClientCcmDance2WithFTDemo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/EventTypeModule/HostnameResult:1.0 + + + + + factory_entrypoint + + + tk_string + + + createHostnameResultFactory + + + + + + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host2.cdp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host2.cdp new file mode 100644 index 00000000000..a61170a7ed0 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/CcmDance4-host2.cdp @@ -0,0 +1,941 @@ + + + CcmDance2_1 + + + + + + + + + ServerDanceHomeImplementation + + ServerDanceArtifact1 + ServerDanceArtifact2 + + + + home factory + + + tk_string + + + create_CCM_ServerDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/ServerModule/ServerDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2WithFTTest.ServerModule.FTSessionServerDanceHome_impl + + + + + + + cdmw.config.FaultToleranceReplicationStyle + + + tk_enum + + FTReplicationStyleValue + IDL:thalesgroup.com/CdmwDeployment/FTReplicationStyleValue:1.0 + STATELSESS + COLD_PASSIVE + WARM_PASSIVE + ACTIVE + ACTIVE_WITH_VOTING + + + + WARM_PASSIVE + + + + + + + + + ServerDanceImplementation + + ServerDanceArtifact1 + ServerDanceArtifact2 + + + + + + + + ClientDanceHomeImplementation + + ClientDanceArtifact + ServerDanceArtifact1 + + + + home factory + + + tk_string + + + create_CCM_ClientDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/ClientModule/ClientDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2WithFTTest.ClientModule.SessionClientDanceHome_impl + + + + + + + + ClientDanceImplementation + + ClientDanceArtifact + ServerDanceArtifact1 + + + + + + + TestDriverHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_TestDriverHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/DriverModule/TestDriverHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance2WithFTTest.DriverModule.SessionTestDriverHome_impl + + + + + + + + + TestDriverImplementation + + ClientDanceArtifact + + + + + + + + + + + + ServerDanceHome2 + Host2 + + + ServerDanceHomeImplementation + + + + cdmw.config.ProcessDestination + + + tk_string + + + ServerDanceProcess2@CcmDance2WithFTApplication + + + + + + + ServerDance2 + Host2 + + ServerDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ServerDanceHome2 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ServerDance2 + + + + + + + cdmw.config.FaultToleranceGroupName + + + tk_string + + + ServerDanceFT + + + + + + + + fooStruct + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2WithFTTest/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + fooString + + hello + + + + fooLong + + 250 + + + + + + + + + fooEnum + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2WithFTTest/FooEnum:1.0 + A + B + C + + + + B + + + + + + + fooStructSeq + + + tk_sequence + + + tk_struct + + FooStruct + IDL:acme.com/CcmDance2WithFTTest/FooStruct:1.0 + + fooString + + tk_string + + + + fooLong + + tk_long + + + + + + + + + + fooString + + hello1 + + + + fooLong + + 123 + + + + + + fooString + + hello2 + + + + fooLong + + 456 + + + + + + + + + + fooEnumSeq + + + tk_sequence + + + tk_enum + + FooEnum + IDL:acme.com/CcmDance2WithFTTest/FooEnum:1.0 + A + B + C + + + + + + + A + + + C + + + + + + + + expectedClientHostname1 + + + tk_string + + + rhel4x.prismtech.com + + + + + + + expectedClientHostname2 + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + + + ClientDanceHome2 + Host2 + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess2@CcmDance2WithFTApplication + + + + + + + ClientDance2 + Host2 + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome2 + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance2 + + + + + + + configuration + + + tk_string + + + Client2 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4y.prismtech.com + + + + + + + + client2_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance2 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + server_receptacle1 + + clientHostInfo1 + false + SimplexReceptacle + ServerDance2 + + + corbaloc:iiop:1.2@rhel4x.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host1%00CcmDance2_1/ClientDance1/clientHostInfo + true + + + + + + + + server_receptacle2 + + clientHostInfo2 + false + SimplexReceptacle + ServerDance2 + + + clientHostInfo + true + Facet + ClientDance2 + + + + + client1_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance2 + + + corbaloc:iiop:1.2@rhel4x.prismtech.com:12345/%14%01%0f%00NUP%00%00%00%16%02%00%00%00%01%00%00%00RootPOA%00Host1%00CcmDance2_1/ClientDance1/hostnameResults + true + + + + + + + client2_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance2 + + + hostnameResults + true + EventConsumer + ClientDance2 + + + + + server_consumer_to_emits2 + + commandEmits + false + EventEmitter + ClientDance2 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + client2_sayHello + + sayHello + false + SimplexReceptacle + ClientDance2 + + + corbaname::localhost:21869#CDMW__FaultToleranceDomain/ServerDanceFT + true + + + + + + + testDriver_client2 + + supports + true + Facet + ClientDance2 + + + + + + + + ServerDanceArtifact1 + + + /home/sl/install/ofccm_v0/demos/demo_dance2_with_ft/c++/i686-pc-linux-gnu/libServerCcmDance2WithFTDemo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/EventTypeModule/Command:1.0 + + + + + factory_entrypoint + + + tk_string + + + createCommandFactory + + + + + + + ServerDanceArtifact2 + + + /home/sl/install/ofccm_v0/demos/demo_dance2_with_ft/c++/i686-pc-linux-gnu/libServerCcmDance2WithFTDemo.so + + repid + + + tk_string + + + DL:acme.com/CcmDance2WithFTTest/FooValueType:1.0 + + + + + factory_entrypoint + + + tk_string + + + createFooValueTypeFactory + + + + + + + ClientDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance2_with_ft/c++/i686-pc-linux-gnu/libClientCcmDance2WithFTDemo.so + + repid + + + tk_string + + + IDL:acme.com/CcmDance2WithFTTest/EventTypeModule/HostnameResult:1.0 + + + + + factory_entrypoint + + + tk_string + + + createHostnameResultFactory + + + + + + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/DeploymentPlanDump.mpc b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/DeploymentPlanDump.mpc new file mode 100644 index 00000000000..e87a25474f9 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/DeploymentPlanDump.mpc @@ -0,0 +1,9 @@ +// $Id$ +project : dance, taoexe, xerces, aceexe, ciao_config_handlers, dance_logger { + exename = DeploymentPlanDump + + Source_Files { + test.cpp + } +} + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/NewCcmDance1.cdp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/NewCcmDance1.cdp new file mode 100644 index 00000000000..946ee91d2b1 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/NewCcmDance1.cdp @@ -0,0 +1,1063 @@ + + + CcmDance1 + + + + + + + + + ServerDanceHomeImplementation + + ServerDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_ServerDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance1Test/ServerModule/ServerDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance1Test.ServerModule.SessionServerDanceHome_impl + + + + + + + + + + + + ServerDanceImplementation + + ServerDanceArtifact + + + + + + + + ClientDanceHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_ClientDanceHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance1Test/ClientModule/ClientDanceHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance1Test.ClientModule.SessionClientDanceHome_impl + + + + + + + + + + + + ClientDanceImplementation + + ClientDanceArtifact + + + + + + + TestDriverHomeImplementation + + ClientDanceArtifact + + + + home factory + + + tk_string + + + create_CCM_TestDriverHome + + + + + + + cdmw.config.ComponentKind + + + tk_enum + + ComponentKindValue + IDL:thalesgroup.com/CdmwDeployment/ComponentKindValue:1.0 + SERVICE + SESSION + PROCESS + ENTITY + UNCLASSIFIED + + + + SESSION + + + + + + + cdmw.config.ServantLifeTime + + + tk_enum + + ServantLifeTimeValue + IDL:thalesgroup.com/CdmwDeployment/ServantLifetimeValue:1.0 + COMPONENT_LIFETIME + METHOD_LIFETIME + TRANSACTION_LIFETIME + CONTAINER_LIFETIME + + + + CONTAINER_LIFETIME + + + + + + + cdmw.config.ThreadingPolicy + + + tk_enum + + ThreadingPolicyValue + IDL:thalesgroup.com/CdmwDeployment/ThreadingPolicyValue:1.0 + SERIALIZE + MULTITHREAD + + + + MULTITHREAD + + + + + + + cdmw.config.HomeRepositoryId + + + tk_string + + + IDL:acme.com/CcmDance1Test/DriverModule/TestDriverHome:1.0 + + + + + + + cdmw.config.HomeServantClassName + + + tk_string + + + Cdmw.CCM.CIF.CdmwCcmDance1Test.DriverModule.SessionTestDriverHome_impl + + + + + + + + + + + + TestDriverImplementation + + ClientDanceArtifact + + + + + + + + + + + + + + + + ServerDanceHome + MyHost + + + ServerDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ServerDanceProcess@CcmDance1Application + + + + + + + ServerDance + MyHost + + ServerDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ServerDanceHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ServerDance + + + + + + + expectedClientHostname1 + + + tk_string + + + rhel4x + + + + + + + expectedClientHostname2 + + + tk_string + + + rhel4x + + + + + + + + + + ClientDanceHome + MyHost + + + ClientDanceHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess@CcmDance1Application + + + + + + + ClientDance1 + MyHost + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance1 + + + + + + + configuration + + + tk_string + + + Client1 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4x + + + + + + + + ClientDance2 + MyHost + + ClientDanceImplementation + + + + cdmw.component_home + + + tk_string + + + ClientDanceHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + ClientDance2 + + + + + + + configuration + + + tk_string + + + Client2 + + + + + + + expectedServerHostname + + + tk_string + + + rhel4x + + + + + + + + + TestDriverHome + MyHost + + + TestDriverHomeImplementation + + + cdmw.config.ProcessDestination + + + tk_string + + + ClientDanceProcess@CcmDance1Application + + + + + + + TestDriver1 + MyHost + + TestDriverImplementation + + + + cdmw.component_home + + + tk_string + + + TestDriverHome + + + + + + + cdmw.config.ComponentName + + + tk_string + + + TestDriver1 + + + + + + + + + + + + + client1_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance1 + + + serverHostInfo1 + true + Facet + ServerDance + + + + + client2_receptacle + + serverHostInfo + false + SimplexReceptacle + ClientDance2 + + + serverHostInfo2 + true + Facet + ServerDance + + + + + server_receptacle1 + + clientHostInfo1 + false + SimplexReceptacle + ServerDance + + + clientHostInfo + true + Facet + ClientDance1 + + + + + server_receptacle2 + + clientHostInfo2 + false + SimplexReceptacle + ServerDance + + + clientHostInfo + true + Facet + ClientDance2 + + + + + client1_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance + + + hostnameResults + true + EventConsumer + ClientDance1 + + + + + client2_consumer_to_publishes + + hostnamePublishes + false + EventPublisher + ServerDance + + + hostnameResults + true + EventConsumer + ClientDance2 + + + + + server_consumer_to_emits1 + + commandEmits + false + EventEmitter + ClientDance1 + + + commands + true + EventConsumer + ServerDance + + + + + server_consumer_to_emits2 + + commandEmits + false + EventEmitter + ClientDance2 + + + commands + true + EventConsumer + ServerDance + + + + + client1_sayHello + + sayHello + false + SimplexReceptacle + ClientDance1 + + + supports + true + Facet + ServerDance + + + + + client2_sayHello + + sayHello + false + SimplexReceptacle + ClientDance2 + + + supports + true + Facet + ServerDance + + + + + testDriver_server + + server + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ServerDance + + + + + testDriver_client1 + + client1 + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ClientDance1 + + + + + testDriver_client2 + + client2 + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ClientDance2 + + + + + testDriver_sayHello + + handshake + false + SimplexReceptacle + TestDriver1 + + + supports + true + Facet + ServerDance + + + + + + + + + + ServerDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance1/c++/i686-pc-linux-gnu/libServerCcmDance1Demo.so + + + + ClientDanceArtifact + + + /home/sl/install/ofccm_v0/demos/demo_dance1/c++/i686-pc-linux-gnu/libClientCcmDance1Demo.so + + + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanDump/test.cpp b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/test.cpp new file mode 100644 index 00000000000..097e1e14776 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanDump/test.cpp @@ -0,0 +1,37 @@ +// $Id$ +#include "Config_Handlers/DnC_Dump.h" +#include "Config_Handlers/XML_File_Intf.h" +#include "DAnCE/Logger/Log_Macros.h" + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + if (argc < 1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Incorrect count of arguments. ") + ACE_TEXT ("Path to deployment plan has not been specified.\n"))); + return 1; + } + CIAO::Config_Handlers::XML_File_Intf file (argv[1]); + file.add_search_path (ACE_TEXT ("DANCE_ROOT"), ACE_TEXT ("/docs/schema/")); + file.add_search_path (ACE_TEXT ("CIAO_ROOT"), ACE_TEXT ("/docs/schema/")); + file.add_search_path (ACE_TEXT ("TAO_ROOT"), ACE_TEXT ("/docs/schema/")); + Deployment::DeploymentPlan * plan = file.release_plan(); + Deployment::DnC_Dump::dump (*plan); + delete plan; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("DAnCE_DeploymentPlanDump::main\n"); + return -1; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception\n"))); + return 1; + } + + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc b/modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc new file mode 100644 index 00000000000..50d8831bfbd --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/DeploymentPlanTestReferences.mpc @@ -0,0 +1,9 @@ +// $Id$ +project : dance, taolib, xerces, ciao_config_handlers, dance_logger { + exename = DeploymentPlanTestReferences + + Source_Files { + test.cpp + } +} + diff --git a/modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/test.cpp b/modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/test.cpp new file mode 100644 index 00000000000..b771922dda0 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentPlanTestReferences/test.cpp @@ -0,0 +1,55 @@ +// $Id$ +#include "ace/Auto_Ptr.h" +#include "Config_Handlers/DnC_Dump.h" +#include "Config_Handlers/XML_File_Intf.h" +#include "DAnCE/Logger/Log_Macros.h" + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + if (argc < 1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Incorrect count of arguments. Path to deployment plan has not been specified.\n"))); + return 1; + } + //parsing plan + CIAO::Config_Handlers::XML_File_Intf file (argv[1]); + file.add_search_path (ACE_TEXT ("DANCE_ROOT"), ACE_TEXT ("/docs/schema/")); + file.add_search_path (ACE_TEXT ("CIAO_ROOT"), ACE_TEXT ("/docs/schema/")); + file.add_search_path (ACE_TEXT ("TAO_ROOT"), ACE_TEXT ("/docs/schema/")); + auto_ptr plan (file.release_plan()); + + //check instance references to corresponding implementations + for ( ::CORBA::ULong i = 0; i < plan->instance.length(); i++) + { + if (plan->instance[i].implementationRef > plan->implementation.length() - 1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("incorrect implementationRef in instance %C.\n"), plan->instance[i].name.in())); + return 1; + } + } + + //check artifact reference for implementations of Home objects + for ( ::CORBA::ULong i = 0; i < plan->implementation.length(); i++) + { + if (plan->implementation[i].artifactRef.length() > 0) + { + if (plan->implementation[i].artifactRef[0] > plan->artifact.length() - 1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("incorrect artifactRef in the implementation %C.\n"), plan->implementation[i].name.in())); + return 1; + } + } + } + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception"))); + return 1; + } + + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc b/modules/CIAO/DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc new file mode 100644 index 00000000000..3f2c7da54bb --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentTest1/DeploymentTest1.mpc @@ -0,0 +1,9 @@ +// $Id$ +project : dance, xerces, ciao_config_handlers, dance_logger, dance_domainapplication_stub, dance_executionmanager_stub { + exename = DeploymentTest1 + + Source_Files { + test.cpp + } +} + diff --git a/modules/CIAO/DAnCE/tests/DeploymentTest1/test.cpp b/modules/CIAO/DAnCE/tests/DeploymentTest1/test.cpp new file mode 100644 index 00000000000..14c9332e77b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/DeploymentTest1/test.cpp @@ -0,0 +1,68 @@ +// $Id$ +#include "ace/Auto_Ptr.h" +#include "DAnCE/Deployment/Deployment_DeploymentPlanC.h" +#include "DAnCE/Deployment/Deployment_ExecutionManagerC.h" +#include "DAnCE/Deployment/Deployment_DomainApplicationManagerC.h" +#include "DAnCE/Deployment/Deployment_DomainApplicationC.h" +#include "DAnCE/Deployment/Deployment_NodeManagerC.h" +#include "DAnCE/Deployment/Deployment_NodeApplicationManagerC.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Config_Handlers/DnC_Dump.h" +#include "Config_Handlers/XML_File_Intf.h" + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + CIAO::Config_Handlers::XML_File_Intf file (argv[1]); + file.add_search_path (ACE_TEXT ("DANCE_ROOT"), ACE_TEXT ("/docs/schema/")); + file.add_search_path (ACE_TEXT ("CIAO_ROOT"), ACE_TEXT ("/docs/schema/")); + file.add_search_path (ACE_TEXT ("TAO_ROOT"), ACE_TEXT ("/docs/schema/")); + auto_ptr pplan (file.release_plan()); + + ACE_DEBUG ((LM_DEBUG, "Test starts.\n")); + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + const char * ior = "file://execution_manager.ior"; + + CORBA::Object_var obj = orb->string_to_object (ior); + if (CORBA::is_nil (obj. in())) + { + throw 0; + } + + Deployment::ExecutionManager_var em = Deployment::ExecutionManager::_narrow (obj); + if (CORBA::is_nil (em.in ())) + { + throw 0; + } + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("preparePlan\n"))); + Deployment::DomainApplicationManager_var dam = em->preparePlan (*pplan, Deployment::ResourceCommitmentManager::_nil()); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("startLaunch\n"))); + //call startLaunch + Deployment::Properties dp; + Deployment::Connections_var dc; + Deployment::Application_var na = dam->startLaunch (dp, dc.out()); + Deployment::DomainApplication_var da = Deployment::DomainApplication::_narrow (na); + if (CORBA::is_nil (da.in ())) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("narrow fails\n"))); + } + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("finishLaunch\n"))); + da->finishLaunch (dc.in(), true); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Test succeded!\n"))); + + } + catch (const CORBA::Exception &e) + { + e._tao_print_exception ("DeploymentTest1::main\t\n"); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Uncaught CORBA exception\n"))); + return 1; + } + catch (...) + { + return 1; + } + + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/Dummy.idl b/modules/CIAO/DAnCE/tests/NameServiceTest/Dummy.idl new file mode 100644 index 00000000000..1f0edee59cd --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/Dummy.idl @@ -0,0 +1,14 @@ +// $Id$ + +#ifndef DUMMY_IDL +#define DUMMY_IDL + +module NameServiceTest +{ + interface Dummy { + string sayHello(); + }; +}; + +#endif /* DUMMY_IDL */ + diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.cpp b/modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.cpp new file mode 100644 index 00000000000..4fe5dea9b16 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.cpp @@ -0,0 +1,14 @@ +// $Id$ +#include "DummyImpl.h" + +namespace NameServiceTest + { + + char * DummyImpl::sayHello ( + ) + { + return CORBA::string_dup (this->helloSentence); + } + + } // namespace ObjectLocatorTest + diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.h b/modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.h new file mode 100644 index 00000000000..7b54d8b1386 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/DummyImpl.h @@ -0,0 +1,25 @@ +// $Id$ +#ifndef DUMMYIMPL_H_ +#define DUMMYIMPL_H_ + +#include "DummyS.h" + +namespace NameServiceTest + { + + class DummyImpl + : public virtual POA_NameServiceTest::Dummy + { + public: + DummyImpl() : helloSentence ("A dummy hello sentence.") {}; + + virtual char * sayHello ( + ); + + private: + const char * helloSentence; + }; + + } // namespace POA_ObjectLocatorTest + +#endif /*DUMMYIMPL_H_*/ diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/NameServiceTest.mpc b/modules/CIAO/DAnCE/tests/NameServiceTest/NameServiceTest.mpc new file mode 100644 index 00000000000..64068565ed3 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/NameServiceTest.mpc @@ -0,0 +1,30 @@ +// $Id$ + +project(*idl): ciaoidldefaults { + IDL_Files { + Dummy.idl + } + custom_only = 1 +} + +project (*NameServiceTestServer): dance, taoserver, iortable, naming_serv, dance_logger { + after += *idl + IDL_Files { + } + Source_Files { + srv_main.cpp + DummyC.cpp + DummyS.cpp + DummyImpl.cpp + } +} + +project (NameServiceTestClient): dance, taoclient, naming, dance_logger { + after += *idl + IDL_Files { + } + Source_Files { + clt_main.cpp + DummyC.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/RegistrationPath.h b/modules/CIAO/DAnCE/tests/NameServiceTest/RegistrationPath.h new file mode 100644 index 00000000000..4a6ea64c651 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/RegistrationPath.h @@ -0,0 +1,9 @@ +// $Id$ +#ifndef REGISTRATIONPATH_H_ +#define REGISTRATIONPATH_H_ + +const char * app_name = "app1"; +const char * inst_name = "inst1"; +const char * port_name = "port1"; + +#endif /*REGISTRATIONPATH_H_*/ diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/clt_main.cpp b/modules/CIAO/DAnCE/tests/NameServiceTest/clt_main.cpp new file mode 100644 index 00000000000..ca0266e8206 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/clt_main.cpp @@ -0,0 +1,85 @@ +// $Id$ +#include "ace/String_Base.h" +#include +#include "DAnCE/Logger/Log_Macros.h" +#include "RegistrationPath.h" +#include "DummyC.h" + +using namespace NameServiceTest; + + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + CORBA::Object_var naming_obj = orb->resolve_initial_references ("NameService"); +// CosNaming::NamingContext_var naming = CosNaming::NamingContext::_narrow(naming_obj.in()); +// CosNaming::Name name(1); +// +// name.length(1); +// +// name[0].id = CORBA::string_dup("Dummy"); +// name[0].kind = CORBA::string_dup(""); +// +// CORBA::Object_ptr res_obj = naming->resolve(name); +// if ( CORBA::is_nil(res_obj) ) +// { +// ACE_ERROR ((LM_ERROR, "Failed to resolve object. The test failed.\n")); +// return 1; +// } +// ACE_DEBUG ((LM_DEBUG, "resolve object : ok.\n")); +// +// Dummy_var res_dummy_obj = Dummy::_narrow(res_obj); +// if ( CORBA::is_nil(res_dummy_obj) ) +// { +// ACE_ERROR ((LM_ERROR, "Failed to narrow the resolved object to custom type. The test failed.\n")); +// return 1; +// } +// ACE_DEBUG ((LM_DEBUG, "resolved object -> dummy : ok.\n")); +// +// ACE_DEBUG ((LM_DEBUG, "Dummy object returned : %s.", res_dummy_obj->sayHello())); +// ACE_DEBUG ((LM_DEBUG, "The test succeeded.")); + //glasgow.headquarters.eclipsesp.com:12345 + ACE_CString url = "corbaname:rir:#app1.DeploymentPlan/Dummy"; +// url += app_name; +// url += "/"; +// url += inst_name; +// url += "/"; +// url += port_name; + ACE_DEBUG ((LM_DEBUG, "URL : %C\n", url.c_str())); + + CORBA::Object_var obj = orb->string_to_object (url.c_str()); + if (CORBA::is_nil (obj)) + { + ACE_ERROR ((LM_ERROR, "Failed to convert url to object. The test failed.\n")); + return 1; + } + ACE_DEBUG ((LM_DEBUG, "URL -> object : ok.\n")); + + Dummy_var dummy_obj = Dummy::_narrow (obj); + if (CORBA::is_nil (dummy_obj)) + { + ACE_ERROR ((LM_ERROR, "Failed to narrow the object to custom type. The test failed.\n")); + return 1; + } + ACE_DEBUG ((LM_DEBUG, "object -> dummy : ok.\n")); + + ACE_DEBUG ((LM_DEBUG, "Dummy object returned : %C.", dummy_obj->sayHello())); + ACE_DEBUG ((LM_DEBUG, "The test succeeded.")); + return 0; + } + catch (const CORBA::Exception & e) + { + ACE_ERROR ((LM_ERROR, "A CORBA exception \"%C\" (%C) was thrown. The test failed." + , e._name(), e._info().c_str())); + return 1; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "An exception was thrown. The test failed.")); + return 1; + } +} + diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/run_test.pl b/modules/CIAO/DAnCE/tests/NameServiceTest/run_test.pl new file mode 100755 index 00000000000..719974e5c50 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/run_test.pl @@ -0,0 +1,73 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } +} + +my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; +my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n"; + +my $iorbase = "server.ior"; +my $server_iorfile = $server->LocalFile ($iorbase); +my $client_iorfile = $client->LocalFile ($iorbase); +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); + +$SV = $server->CreateProcess ("server", "-ORBdebuglevel $debug_level -o $server_iorfile"); +$CL = $client->CreateProcess ("client", "-k file://$client_iorfile"); +$server_status = $SV->Spawn (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + exit 1; +} + +if ($server->WaitForFileTimed ($iorbase, + $server->ProcessStartWaitInterval()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($server->GetFile ($iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} +if ($client->PutFile ($iorbase) == -1) { + print STDERR "ERROR: cannot set file <$client_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +$client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval()); + +if ($client_status != 0) { + print STDERR "ERROR: client returned $client_status\n"; + $status = 1; +} + +$server_status = $SV->WaitKill ($server->ProcessStopWaitInterval()); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + $status = 1; +} + +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); + +exit $status; diff --git a/modules/CIAO/DAnCE/tests/NameServiceTest/srv_main.cpp b/modules/CIAO/DAnCE/tests/NameServiceTest/srv_main.cpp new file mode 100644 index 00000000000..2d501da9b54 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NameServiceTest/srv_main.cpp @@ -0,0 +1,72 @@ +// $Id$ +#include "ace/OS_NS_stdio.h" +#include +#include +#include "DAnCE/Logger/Log_Macros.h" + +#include "DummyC.h" +#include "DummyImpl.h" +#include "RegistrationPath.h" + +using namespace NameServiceTest; + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + int argcm = argc + 2; + ACE_TCHAR ** argvm = new ACE_TCHAR* [argcm+1]; + for (int i = 0; i < argc; ++i) + { + argvm[i] = argv[i]; + } + ACE_TCHAR buf1[32]; + ACE_OS::sprintf (buf1, ACE_TEXT("-ORBListenEndpoints")); + argvm[argcm-2] = buf1; + ACE_TCHAR buf2[32]; + ACE_OS::sprintf (buf2, ACE_TEXT("iiop://:12345")); + argvm[argcm-1] = buf2; + argvm[argcm] = 0; + + CORBA::ORB_var orb = CORBA::ORB_init (argcm, argvm); + + CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow (obj.in ()); + + PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); + poa_manager->activate(); + + DummyImpl servant; + + PortableServer::ObjectId_var id = root_poa->activate_object (&servant); + + Dummy_var dummy_obj = Dummy::_narrow (root_poa->id_to_reference (id));//servant._this(); + + TAO_Naming_Loader loader; + + CORBA::Object_var obj_tmp = loader.create_object (orb.in(), argcm, argvm); + CORBA::Object_var naming_obj = orb->resolve_initial_references ("NameService"); + CosNaming::NamingContext_var naming = CosNaming::NamingContext::_narrow (naming_obj.in()); + + CosNaming::Name name (1); + + name.length (1); + + name[0].id = CORBA::string_dup (app_name); + name[0].kind = CORBA::string_dup ("DeploymentPlan"); + + CosNaming::NamingContext_var naming_app = naming->bind_new_context (name); + + name[0].id = CORBA::string_dup ("Dummy"); + name[0].kind = CORBA::string_dup (""); + naming_app->bind (name, dummy_obj.in()); + + orb->run(); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "An error has occured.")); + } + return 0; +} + diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/NAM_NA.mpc b/modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/NAM_NA.mpc new file mode 100644 index 00000000000..e251d79392b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/NAM_NA.mpc @@ -0,0 +1,8 @@ +// $Id$ +project : dance, dance_nodemanager_stub, dance_nodeapplication_stub, dance_logger { + exename = NodeApplicationManagerNodeApplicationTest + + Source_Files { + test.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp b/modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp new file mode 100644 index 00000000000..b1bb33ea44b --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NodeApplicationManager-NodeApplication/test.cpp @@ -0,0 +1,48 @@ +// $Id$ +#include "DAnCE/Deployment/Deployment_NodeManagerC.h" +#include "DAnCE/Deployment/Deployment_NodeApplicationC.h" +#include "DAnCE/Logger/Log_Macros.h" + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + const char * ior = "file://node_manager.ior"; + CORBA::Object_var obj = orb->string_to_object (ior); + if (CORBA::is_nil (obj)) + { + throw 0; + } + + Deployment::NodeManager_var nm = Deployment::NodeManager::_narrow (obj); + if (CORBA::is_nil (nm)) + { + throw 0; + } + + // Get NodeApplicationManager + Deployment::DeploymentPlan plan; + Deployment::NodeApplicationManager_var nam; + nam = nm->preparePlan (plan, Deployment::ResourceCommitmentManager::_nil()); + + // Call startLaunch + Deployment::Properties dp; + Deployment::Connections_var dc; + Deployment::Application_ptr app = nam->startLaunch (dp, dc.out()); + Deployment::NodeApplication_var na = Deployment::NodeApplication::_narrow (app); + } + catch (const CORBA::Exception &e) + { + e._tao_print_exception ("DAnCE_NodeManager::main\t\n"); + ACE_ERROR ((LM_ERROR, "Uncaught CORBA exception\n")); + return 1; + } + catch (...) + { + return 1; + } + + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc b/modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc new file mode 100644 index 00000000000..44882ded9ff --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/NodeManager-NodeApplicationManager.mpc @@ -0,0 +1,8 @@ +// $Id$ +project : dance_exe, dance_nodemanager_stub, dance_logger { + exename = NodeManagerNodeApplicationManagerTest + + Source_Files { + test.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp b/modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp new file mode 100644 index 00000000000..d7ead772ace --- /dev/null +++ b/modules/CIAO/DAnCE/tests/NodeManager-NodeApplicationManager/test.cpp @@ -0,0 +1,43 @@ +// $Id$ +#include "DAnCE/Deployment/Deployment_NodeManagerC.h" +#include "DAnCE/Logger/Log_Macros.h" + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + const char * ior = "file://node_manager.ior"; + CORBA::Object_var obj = orb->string_to_object (ior); + if (CORBA::is_nil (obj)) + { + throw 0; + } + + Deployment::NodeManager_var nm = Deployment::NodeManager::_narrow (obj); + if (CORBA::is_nil (nm)) + { + throw 0; + } + + Deployment::DeploymentPlan plan; + Deployment::NodeApplicationManager_ptr nam_ptr = + nm->preparePlan (plan, Deployment::ResourceCommitmentManager::_nil()); + ACE_DEBUG ((LM_DEBUG, "Plan prepared\n")); + + nm->destroyManager (nam_ptr); + ACE_DEBUG ((LM_DEBUG, "NodeApplicationManager object destroyed\n")); + } + catch (const CORBA::Exception &) + { + ACE_ERROR ((LM_ERROR, "Uncaught CORBA exception\n")); + return 1; + } + catch (...) + { + return 1; + } + + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/Dummy.idl b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/Dummy.idl new file mode 100644 index 00000000000..b91938cb4df --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/Dummy.idl @@ -0,0 +1,13 @@ +// $Id$ +#ifndef DUMMY_IDL +#define DUMMY_IDL + +module ObjectLocatorTest +{ + interface Dummy { + string sayHello(); + }; +}; + +#endif /* DUMMY_IDL */ + diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp new file mode 100644 index 00000000000..d62413d728a --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.cpp @@ -0,0 +1,13 @@ +// $Id$ +#include "DummyImpl.h" + +namespace ObjectLocatorTest + { + + char * DummyImpl::sayHello (void) + { + return CORBA::string_dup (this->helloSentence); + } + + } // namespace ObjectLocatorTest + diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.h b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.h new file mode 100644 index 00000000000..4ec404d93ea --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/DummyImpl.h @@ -0,0 +1,22 @@ +// $Id$ +#ifndef DUMMYIMPL_H_ +#define DUMMYIMPL_H_ + +#include "DummyS.h" + +namespace ObjectLocatorTest + { + class DummyImpl + : public virtual POA_ObjectLocatorTest::Dummy + { + public: + DummyImpl() : helloSentence ("A dummy hello sentence.") {}; + + virtual char * sayHello (void); + + private: + const char * helloSentence; + }; + } // namespace POA_ObjectLocatorTest + +#endif /*DUMMYIMPL_H_*/ diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc new file mode 100644 index 00000000000..e17d3c335c1 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/ObjectLocatorTest.mpc @@ -0,0 +1,35 @@ +// $Id$ +project(*idl): taoidldefaults { + IDL_Files { + Dummy.idl + } + custom_only = 1 +} + +project (*Server): avoids_minimum_corba, dance, taoserver, iortable, dance_logger, dance_redirectionservice { + after += *idl + exename = ObjectLocatorTestServer + + IDL_Files { + } + + Source_Files { + srv_main.cpp + DummyC.cpp + DummyS.cpp + DummyImpl.cpp + } +} + +project (*Client): avoids_minimum_corba, dance, taoclient, anytypecode, dance_logger, portableserver { + after += *idl + exename = ObjectLocatorTestClient + + IDL_Files { + } + + Source_Files { + clt_main.cpp + DummyC.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/RegistrationPath.h b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/RegistrationPath.h new file mode 100644 index 00000000000..4a6ea64c651 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/RegistrationPath.h @@ -0,0 +1,9 @@ +// $Id$ +#ifndef REGISTRATIONPATH_H_ +#define REGISTRATIONPATH_H_ + +const char * app_name = "app1"; +const char * inst_name = "inst1"; +const char * port_name = "port1"; + +#endif /*REGISTRATIONPATH_H_*/ diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/clt_main.cpp b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/clt_main.cpp new file mode 100644 index 00000000000..67c3067db07 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/clt_main.cpp @@ -0,0 +1,56 @@ +// $Id$ +#include "ace/String_Base.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "RegistrationPath.h" +#include "DummyC.h" + +using namespace ObjectLocatorTest; + + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + ACE_CString url = "corbaloc:iiop:glasgow.headquarters.eclipsesp.com:12345/"; + url += app_name; + url += "/"; + url += inst_name; + url += "/"; + url += port_name; + ACE_DEBUG ((LM_DEBUG, "URL : %s\n", url.c_str())); + + CORBA::Object_var obj = orb->string_to_object (url.c_str()); + if (CORBA::is_nil (obj)) + { + ACE_ERROR ((LM_ERROR, "Failed to convert url to object. The test failed.\n")); + return 1; + } + ACE_DEBUG ((LM_DEBUG, "URL -> object : ok.\n")); + + Dummy_var dummy_obj = Dummy::_narrow (obj); + if (CORBA::is_nil (dummy_obj)) + { + ACE_ERROR ((LM_ERROR, "Failed to narrow the object to custom type. The test failed.\n")); + return 1; + } + ACE_DEBUG ((LM_DEBUG, "object -> dummy : ok.\n")); + + ACE_DEBUG ((LM_DEBUG, "Dummy object returned : %s.", dummy_obj->sayHello())); + ACE_DEBUG ((LM_DEBUG, "The test succeeded.")); + return 0; + } + catch (CORBA::Exception & e) + { + ACE_ERROR ((LM_ERROR, "A CORBA exception \"%s\" (%s) was thrown. The test failed." + , e._name(), e._info().c_str())); + return 1; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "An exception was thrown. The test failed.")); + return 1; + } +} + diff --git a/modules/CIAO/DAnCE/tests/ObjectLocatorTest/srv_main.cpp b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/srv_main.cpp new file mode 100644 index 00000000000..ff0c4d512b5 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/ObjectLocatorTest/srv_main.cpp @@ -0,0 +1,55 @@ +// $Id$ +#include "ace/OS_NS_stdio.h" + +#include "DummyC.h" +#include "DummyImpl.h" +#include "RegistrationPath.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "DAnCE/RedirectionService/CCMObjectLocator.h" + +using namespace ObjectLocatorTest; + + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + try + { + int argcm = argc + 2; + ACE_TCHAR ** argvm = new ACE_TCHAR* [argcm+1]; + for (int i = 0; i < argc; ++i) + { + argvm[i] = argv[i]; + } + ACE_TCHAR buf1[32]; + ACE_OS::sprintf (buf1, ACE_TEXT("-ORBListenEndpoints")); + argvm[argcm-2] = buf1; + ACE_TCHAR buf2[32]; + ACE_OS::sprintf (buf2, ACE_TEXT("iiop://:12345")); + argvm[argcm-1] = buf2; + argvm[argcm] = 0; + CORBA::ORB_var orb = CORBA::ORB_init (argcm, argvm); + + CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow (obj.in ()); + + PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); + poa_manager->activate(); + + DAnCE::CCMObjectLocator locator (orb.in(), root_poa.in(), "Dummy"); + + DummyImpl servant; + + PortableServer::ObjectId_var id = root_poa->activate_object (&servant); + Dummy_var dummy_obj = Dummy::_narrow (root_poa->id_to_reference (id));//servant._this(); + + locator.register_object (app_name, inst_name, port_name, dummy_obj); + + orb->run(); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "An error has occured.")); + } + return 0; +} + diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/Dummy.idl b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/Dummy.idl new file mode 100644 index 00000000000..5925a4ceeba --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/Dummy.idl @@ -0,0 +1,13 @@ +// $Id$ +#ifndef DUMMY_IDL +#define DUMMY_IDL + +module Test +{ + interface Dummy { + string sayHello(); + }; +}; + +#endif /* DUMMY_IDL */ + diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp new file mode 100644 index 00000000000..1ad8cec1ee8 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.cpp @@ -0,0 +1,14 @@ +// $Id$ +#include "DummyImpl.h" + +namespace Test + { + + char * DummyImpl::sayHello ( + ) + { + return CORBA::string_dup (this->helloSentence); + } + + } // namespace ObjectLocatorTest + diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.h b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.h new file mode 100644 index 00000000000..272611eedba --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/DummyImpl.h @@ -0,0 +1,24 @@ +// $Id$ +#ifndef DUMMYIMPL_H_ +#define DUMMYIMPL_H_ + +#include "DummyS.h" + +namespace Test + { + class DummyImpl + : public virtual POA_Test::Dummy + { + public: + DummyImpl() : helloSentence ("A dummy hello sentence.") {}; + + virtual char * sayHello ( + ); + + private: + const char * helloSentence; + }; + + } // namespace POA_ObjectLocatorTest + +#endif /*DUMMYIMPL_H_*/ diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc new file mode 100644 index 00000000000..08700809ca2 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/RedirectionServiceTest.mpc @@ -0,0 +1,25 @@ +// $Id$ +project (RedirectionServiceTestServer): dance, taoserver, iortable, naming, dance_redirectionservice, dance_logger, naming_serv, avoids_minimum_corba { + exename = RedirectionServiceTestServer + + IDL_Files { + Dummy.idl + } + + Source_Files { + srv_main.cpp + DummyC.cpp + DummyS.cpp + DummyImpl.cpp + } +} + +project (RedirectionServiceTestClient): dance, taoclient, naming, dance_logger, naming, portableserver, anytypecode, avoids_minimum_corba { + after = RedirectionServiceTestServer + exename = RedirectionServiceTestClient + + Source_Files { + clt_main.cpp + DummyC.cpp + } +} diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/RegistrationPath.h b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/RegistrationPath.h new file mode 100644 index 00000000000..a470d19c36d --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/RegistrationPath.h @@ -0,0 +1,11 @@ +// $Id$ +#ifndef REGISTRATIONPATH_H_ +#define REGISTRATIONPATH_H_ +#include "ace/SString.h" + +const ACE_CString node_name = "MyNode"; +const ACE_CString app_name = "app1"; +const ACE_CString inst_name = "inst1"; +const ACE_CString port_name = "port1"; + +#endif /*REGISTRATIONPATH_H_*/ diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/clt_main.cpp b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/clt_main.cpp new file mode 100644 index 00000000000..760859dbb91 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/clt_main.cpp @@ -0,0 +1,110 @@ +// $Id$ +#include "ace/String_Base.h" +#include +#include "DAnCE/Logger/Log_Macros.h" +#include "RegistrationPath.h" +#include "DummyC.h" +#include "ace/SString.h" + +using namespace Test; + +CORBA::ORB_var orb; +CORBA::Object_var naming_obj; + +void inspect () + { + CORBA::Object_var obj = orb->resolve_initial_references("NameService"); + CosNaming::NamingContext_var naming = CosNaming::NamingContext::_narrow(obj.in()); + CosNaming::BindingList_var bl; + CosNaming::BindingIterator_var bi; + //naming->list(10L, bl.out(), bi.out()); + CosNaming::Name name(1); + name.length(2); + name[0].id = CORBA::string_dup("Host1");//CORBA::string_dup("CcmDance1Test"); + name[1].id = CORBA::string_dup ("CcmDance2_1@Host1"); + name[1].kind = CORBA::string_dup ("DeploymentPlan"); + //name[2].id = CORBA::string_dup("ASSEMBLYANDDEPLOYMENT"); + obj = naming->resolve(name); + ACE_DEBUG ((LM_DEBUG, "create_external_connections - After resolve\n")); + CosNaming::NamingContext_var CcmDance1Test = CosNaming::NamingContext::_narrow(obj.in()); + CcmDance1Test->list(10L, bl.out(), bi.out()); + bool exit = false; + while (!exit) + { + ACE_DEBUG ((LM_DEBUG, "create_external_connections - naming size is %u\n", bl->length())); + for ( size_t i = 0; i< bl->length(); i++ ) + { + for ( size_t j = 0; j < (*bl)[i].binding_name.length(); j++ ) + { + ACE_DEBUG ((LM_DEBUG, "create_external_connections - Binding name %s, binding kind %s, binding type %i\n" + , (*bl)[i].binding_name[j].id.in() + , (*bl)[i].binding_name[j].kind.in() + , (*bl)[i].binding_type)); + } + } + if(!bi->next_n(10L, bl.out())) + { + exit = true; + } + } + + } +bool test (const ACE_CString& url) +{ + bool res = false; + try + { + ACE_DEBUG ((LM_DEBUG, "URL : %s\n", url.c_str())); + + CORBA::Object_var obj = orb->string_to_object (url.c_str()); + if (CORBA::is_nil (obj)) + { + ACE_ERROR ((LM_ERROR, "Failed to convert url to object. The test failed.\n")); + return 1; + } + ACE_DEBUG ((LM_DEBUG, "URL -> object : ok.\n")); + + Dummy_var dummy_obj = Dummy::_narrow (obj); + if (CORBA::is_nil (dummy_obj)) + { + ACE_ERROR ((LM_ERROR, "Failed to narrow the object to custom type. The test failed.\n")); + return 1; + } + ACE_DEBUG ((LM_DEBUG, "object -> dummy : ok.\n")); + + ACE_DEBUG ((LM_DEBUG, "Dummy object returned : %s.\n", dummy_obj->sayHello())); + ACE_DEBUG ((LM_DEBUG, "The test succeeded.\n")); + res = true; + } + catch (CORBA::Exception & e) + { + ACE_ERROR ((LM_ERROR, "A CORBA exception \"%s\" (%s) was thrown. The test failed." + , e._name(), e._info().c_str())); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "An exception was thrown. The test failed.\n")); + } + + return res; +} + + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ + orb = CORBA::ORB_init (argc, argv); + + //naming_obj = orb->resolve_initial_references("NameService"); + //glasgow.headquarters.eclipsesp.com:12345 + ACE_CString url = "corbaname::glasgow:12345#" + node_name + "/" + app_name + ".DeploymentPlan" + "/" + inst_name + "/" + port_name + ".Port"; + test (url); + url = "corbaname::glasgow:12345#" + node_name + "/" + app_name + ".DeploymentPlan" + "/" + inst_name + ".Component"; + test (url); + //node_name + "/" + %14%01%0f%00NUP%00%00%00%17%01%00%00%00%01%00%00%00RootPOA%00MyNode%00 + url = "corbaloc:iiop:1.2@glasgow.headquarters.eclipsesp.com:12345/%14%01%0f%00NUP%00%00%00%17%01%00%00%00%01%00%00%00RootPOA%00MyNode%00" + app_name + "/" + inst_name + "/" + port_name; + test (url); + url = "corbaloc:iiop:1.2@glasgow.headquarters.eclipsesp.com:12345/%14%01%0f%00NUP%00%00%00%17%01%00%00%00%01%00%00%00RootPOA%00MyNode%00" + app_name + "/" + inst_name; + test (url); + + return 0; +} diff --git a/modules/CIAO/DAnCE/tests/RedirectionServiceTest/srv_main.cpp b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/srv_main.cpp new file mode 100644 index 00000000000..341375c6581 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/RedirectionServiceTest/srv_main.cpp @@ -0,0 +1,75 @@ +// $Id$ +#include "ace/OS_NS_stdio.h" +#include "ace/Get_Opt.h" +#include +#include "DAnCE/Logger/Log_Macros.h" +#include "RedirectionService/RedirectionService.h" + +#include "DummyC.h" +#include "DummyImpl.h" +#include "RegistrationPath.h" + +using namespace Test; + +int ACE_TMAIN (int argc, ACE_TCHAR * argv[]) +{ +// try + { + int argcm = argc + 2; + ACE_TCHAR ** argvm = new ACE_TCHAR* [argcm+1]; + for (int i = 0; i < argc; ++i) + { + argvm[i] = argv[i]; + } + ACE_TCHAR buf1[32]; + ACE_OS::sprintf (buf1, ACE_TEXT("-ORBListenEndpoints")); + argvm[argcm-2] = buf1; + ACE_TCHAR buf2[32]; + ACE_OS::sprintf (buf2, ACE_TEXT("iiop://:12345")); + argvm[argcm-1] = buf2; + argvm[argcm] = 0; + + CORBA::ORB_var orb = CORBA::ORB_init (argcm, argvm); + + CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow (obj.in ()); + + PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); + poa_manager->activate(); + + DummyImpl servant; + + PortableServer::ObjectId_var id = root_poa->activate_object (&servant); + + Dummy_var dummy_obj = Dummy::_narrow (root_poa->id_to_reference (id)); + + TAO_Naming_Loader loader; + + CORBA::Object_var obj_tmp = loader.create_object (orb.in(), argcm, argvm); + CORBA::Object_var naming_obj = + orb->resolve_initial_references ("NameService"); + CosNaming::NamingContext_var naming = + CosNaming::NamingContext::_narrow (naming_obj.in()); + + DAnCE::RedirectionService redirection (orb.in(), + root_poa.in(), + naming.in(), + CosNaming::NamingContext::_nil(), + true, + true); + + redirection.registration_start (node_name, app_name); + redirection.registration (node_name, app_name, inst_name, port_name, dummy_obj.in()); + ACE_DEBUG ((LM_DEBUG, "Registration for port have finished.\n\n")); + redirection.registration (node_name, app_name, inst_name, dummy_obj.in()); + ACE_DEBUG ((LM_DEBUG, "Registration for component have finished.\n\n")); + redirection.registration_finish (node_name, app_name); + orb->run(); + } +// catch (...) +// { +// ACE_ERROR ((LM_ERROR, "An error has occured.")); +// } + return 0; +} + diff --git a/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl new file mode 100755 index 00000000000..b5eea32ca38 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl @@ -0,0 +1,62 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::Run_Test; + +$status = 0; +$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior"); +$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior"); +$iorfile3 = PerlACE::LocalFile ("NodeApp3.ior"); +$iorfile4 = PerlACE::LocalFile ("NodeApp4.ior"); +$iorfile5 = PerlACE::LocalFile ("NodeApp5.ior"); + +#for ($iter = 0; $iter <= $#ARGV; $iter++) { +# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") { +# print "Run_Test Perl script for NodeApplicationTest \n\n"; +# print "run_test \n"; +# print "\n"; +# print "-h -- prints this information\n"; +# exit 0; +# } +#} + + +unlink $iorfile1; +unlink $iorfile2; +unlink $iorfile3; +unlink $iorfile4; +unlink $iorfile5; + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$SV1 = new PerlACE::Process ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:10000 -s +$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV2 = new PerlACE::Process ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:20000 -s +$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV3 = new PerlACE::Process ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:30000 -s +$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV4 = new PerlACE::Process ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:40000 -s +$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV5 = new PerlACE::Process ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:50000 -s +$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); +$SV1->Spawn (); +$SV2->Spawn (); +$SV3->Spawn (); +$SV4->Spawn (); +$SV5->Spawn (); + +sleep (99999999999); diff --git a/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat new file mode 100644 index 00000000000..8bd5e6a72f6 --- /dev/null +++ b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat @@ -0,0 +1,3 @@ +BMClosedED corbaloc:iiop:localhost:10000/NodeManager +EC corbaloc:iiop:localhost:20000/NodeManager + diff --git a/modules/CIAO/MPC/config/ccm.mpb b/modules/CIAO/MPC/config/ccm.mpb new file mode 100644 index 00000000000..a6c49e6b649 --- /dev/null +++ b/modules/CIAO/MPC/config/ccm.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project { + includes += $(CIAO_ROOT)/ccm +} diff --git a/modules/CIAO/MPC/config/ccm_componentserver_stub.mpb b/modules/CIAO/MPC/config/ccm_componentserver_stub.mpb new file mode 100644 index 00000000000..ce5bd47cea2 --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_componentserver_stub.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub { + after += CCM_ComponentServer_stub + libs += CCM_ComponentServer_stub + includes += $(CIAO_ROOT)/DAnCE +} diff --git a/modules/CIAO/MPC/config/ccm_componentserver_svnt.mpb b/modules/CIAO/MPC/config/ccm_componentserver_svnt.mpb new file mode 100644 index 00000000000..2f9638b060f --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_componentserver_svnt.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_componentserver_stub, ccm_svnt { + after += CCM_ComponentServer_svnt + libs += CCM_ComponentServer_svnt +} diff --git a/modules/CIAO/MPC/config/ccm_configvalue.mpb b/modules/CIAO/MPC/config/ccm_configvalue.mpb new file mode 100644 index 00000000000..48cca222e92 --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_configvalue.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub { + after += CCM_ConfigValue_Factory + libs += CCM_ConfigValue_Factory +} diff --git a/modules/CIAO/MPC/config/ccm_cookie.mpb b/modules/CIAO/MPC/config/ccm_cookie.mpb new file mode 100644 index 00000000000..060cd137d36 --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_cookie.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub { + after += CCM_Cookie_Factory + libs += CCM_Cookie_Factory +} diff --git a/modules/CIAO/MPC/config/ccm_executor.mpb b/modules/CIAO/MPC/config/ccm_executor.mpb new file mode 100644 index 00000000000..5d588a31939 --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_executor.mpb @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub { +} diff --git a/modules/CIAO/MPC/config/ccm_stub.mpb b/modules/CIAO/MPC/config/ccm_stub.mpb new file mode 100644 index 00000000000..1bb08626d3d --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_stub.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : ifr_client, valuetype, pi, codecfactory, ciao_vcwarnings, ccm, ciaoidldefaults { + includes += $(CIAO_ROOT) + after += CCM_stub + libs += CCM_stub +} diff --git a/modules/CIAO/MPC/config/ccm_svnt.mpb b/modules/CIAO/MPC/config/ccm_svnt.mpb new file mode 100644 index 00000000000..059ac04f717 --- /dev/null +++ b/modules/CIAO/MPC/config/ccm_svnt.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub, portableserver, avoids_minimum_corba, avoids_corba_e_compact, avoids_corba_e_micro { + after += CCM_svnt + libs += CCM_svnt +} diff --git a/modules/CIAO/MPC/config/ciao.mpb b/modules/CIAO/MPC/config/ciao.mpb new file mode 100644 index 00000000000..6a72bc480e6 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project { + includes += $(CIAO_ROOT) $(CIAO_ROOT)/DAnCE + libpaths += $(ACE_ROOT)/lib +} diff --git a/modules/CIAO/MPC/config/ciao_componentserver_stub.mpb b/modules/CIAO/MPC/config/ciao_componentserver_stub.mpb new file mode 100644 index 00000000000..2fb84b64754 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_componentserver_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_cookie, ccm_configvalue, ccm_componentserver_stub { + after += CIAO_ComponentServer_stub + libs += CIAO_ComponentServer_stub +} diff --git a/modules/CIAO/MPC/config/ciao_componentserver_svnt.mpb b/modules/CIAO/MPC/config/ciao_componentserver_svnt.mpb new file mode 100644 index 00000000000..fa0c767e48c --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_componentserver_svnt.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_componentserver_stub, ccm_componentserver_svnt, ciao_session_container, ciao_cs_client { + after += CIAO_ComponentServer_svnt + libs += CIAO_ComponentServer_svnt +} diff --git a/modules/CIAO/MPC/config/ciao_connector_base.mpb b/modules/CIAO/MPC/config/ciao_connector_base.mpb new file mode 100644 index 00000000000..c66ed193028 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_connector_base.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project { + includes += $(CIAO_ROOT)/connectors +} \ No newline at end of file diff --git a/modules/CIAO/MPC/config/ciao_container_base.mpb b/modules/CIAO/MPC/config/ciao_container_base.mpb new file mode 100644 index 00000000000..2b069aa7906 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_container_base.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_svnt, avoids_corba_e_compact, avoids_corba_e_micro { + after += CIAO_Container_Base + libs += CIAO_Container_Base +} diff --git a/modules/CIAO/MPC/config/ciao_context_impl.mpb b/modules/CIAO/MPC/config/ciao_context_impl.mpb new file mode 100644 index 00000000000..1514876a1d0 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_context_impl.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_svnt, ciao_container_base, portableserver { + after += CIAO_Context_Impl + libs += CIAO_Context_Impl +} diff --git a/modules/CIAO/MPC/config/ciao_cs_client.mpb b/modules/CIAO/MPC/config/ciao_cs_client.mpb new file mode 100644 index 00000000000..90f770d01d9 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_cs_client.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_stub, ciao_componentserver_stub, ccm_componentserver_svnt, portableserver, threads, avoids_ace_for_tao, ciao_logger { + after += CIAO_CS_Client_svnt + libs += CIAO_CS_Client_svnt +} diff --git a/modules/CIAO/MPC/config/ciao_dds4ccm_ndds_impl.mpb b/modules/CIAO/MPC/config/ciao_dds4ccm_ndds_impl.mpb new file mode 100644 index 00000000000..9969d99d565 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_dds4ccm_ndds_impl.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dds4ccm_skel, nddslib { + libs += CIAO_DDS4CCM_NDDS_Impl + after += CIAO_DDS4CCM_NDDS_Impl +} diff --git a/modules/CIAO/MPC/config/ciao_example_output.mpb b/modules/CIAO/MPC/config/ciao_example_output.mpb new file mode 100644 index 00000000000..7f7943dcb70 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_example_output.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project { + libout = ../lib +} diff --git a/modules/CIAO/MPC/config/ciao_exe.mpb b/modules/CIAO/MPC/config/ciao_exe.mpb new file mode 100644 index 00000000000..d182a9c06d5 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_exe.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project : ciao { + install = $(CIAO_ROOT)/bin +} diff --git a/modules/CIAO/MPC/config/ciao_executor.mpb b/modules/CIAO/MPC/config/ciao_executor.mpb new file mode 100644 index 00000000000..129fcd0adc1 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_executor.mpb @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +project : ccm_svnt, ciao_container_base { +} diff --git a/modules/CIAO/MPC/config/ciao_lib.mpb b/modules/CIAO/MPC/config/ciao_lib.mpb new file mode 100644 index 00000000000..1125dbf77df --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_lib.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project : ciao { + libout = $(ACE_ROOT)/lib +} diff --git a/modules/CIAO/MPC/config/ciao_logger.mpb b/modules/CIAO/MPC/config/ciao_logger.mpb new file mode 100644 index 00000000000..5428fdb8927 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_logger.mpb @@ -0,0 +1,7 @@ +// $Id$ +// -*- MPC -*- + +project : ciao, acelib { + after += CIAO_Logger + libs += CIAO_Logger +} \ No newline at end of file diff --git a/modules/CIAO/MPC/config/ciao_output.mpb b/modules/CIAO/MPC/config/ciao_output.mpb new file mode 100644 index 00000000000..f8352a6ac48 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_output.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project { + libout = $(ACE_ROOT)/lib +} + diff --git a/modules/CIAO/MPC/config/ciao_port_activator_stub.mpb b/modules/CIAO/MPC/config/ciao_port_activator_stub.mpb new file mode 100644 index 00000000000..1a38e34dc93 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_port_activator_stub.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : portableserver { + after += CIAO_Port_Activator_stub + libs += CIAO_Port_Activator_stub +} diff --git a/modules/CIAO/MPC/config/ciao_servant.mpb b/modules/CIAO/MPC/config/ciao_servant.mpb new file mode 100644 index 00000000000..7005c3d7a86 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_servant.mpb @@ -0,0 +1,5 @@ +//$Id$ +project : ciao_port_activator_stub, ciao_servant_activator, ccm_svnt, taoidldefaults, ciao_container_base, portableserver, ccm_cookie, ciao_context_impl { + after += CIAO_Servant_Impl + libs += CIAO_Servant_Impl +} diff --git a/modules/CIAO/MPC/config/ciao_servant_activator.mpb b/modules/CIAO/MPC/config/ciao_servant_activator.mpb new file mode 100644 index 00000000000..450696cd1b9 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_servant_activator.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : portableserver, ciao_port_activator_stub, avoids_minimum_corba, ciao_logger { + libs += CIAO_Servant_Activator_stub + after += CIAO_Servant_Activator_stub +} diff --git a/modules/CIAO/MPC/config/ciao_session_container.mpb b/modules/CIAO/MPC/config/ciao_session_container.mpb new file mode 100644 index 00000000000..a1f77d0ce95 --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_session_container.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : utils, ciao_servant, \ + ccm_componentserver_stub, ciao_port_activator_stub, ciao_servant_activator, ciao_container_base { + libs += CIAO_Session_Container + after += CIAO_Session_Container +} diff --git a/modules/CIAO/MPC/config/ciao_vcwarnings.mpb b/modules/CIAO/MPC/config/ciao_vcwarnings.mpb new file mode 100644 index 00000000000..f02556f824c --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_vcwarnings.mpb @@ -0,0 +1,20 @@ +// -*- MPC -*- +// $Id$ + +// This file contains optional features that disable VC8 warnings that were +// not present in earlier versions. Some people may consider these superfluous +// or have already checked code to be sure it causes no trouble. So these +// warnings are disabled by default. To enable them, generate your projects +// with the feature set to 0. + +feature(vc_avoid_deprecated_warnings) { + specific(prop:microsoft) { + DisableSpecificWarnings += 4996 + } +} + +feature(vc_avoid_dominance_warnings) { + specific(prop:microsoft) { + DisableSpecificWarnings += 4250 + } +} diff --git a/modules/CIAO/MPC/config/ciao_xml_utils.mpb b/modules/CIAO/MPC/config/ciao_xml_utils.mpb new file mode 100644 index 00000000000..1167281994f --- /dev/null +++ b/modules/CIAO/MPC/config/ciao_xml_utils.mpb @@ -0,0 +1,8 @@ +// -*- MPC -*- +// $Id$ + +project : xerces, exceptions { + includes += $(CIAO_ROOT)/tools + after += CIAO_XML_Utils + libs += CIAO_XML_Utils +} diff --git a/modules/CIAO/MPC/config/ciaoexe.mpb b/modules/CIAO/MPC/config/ciaoexe.mpb new file mode 100644 index 00000000000..69433807610 --- /dev/null +++ b/modules/CIAO/MPC/config/ciaoexe.mpb @@ -0,0 +1,4 @@ +// $Id$ +project { + install = $(CIAO_ROOT)/bin +} diff --git a/modules/CIAO/MPC/config/ciaoidldefaults.mpb b/modules/CIAO/MPC/config/ciaoidldefaults.mpb new file mode 100644 index 00000000000..dad74d13aa1 --- /dev/null +++ b/modules/CIAO/MPC/config/ciaoidldefaults.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project : taoidldefaults { + idlflags += -I$(CIAO_ROOT) -I$(CIAO_ROOT)/ccm +} diff --git a/modules/CIAO/MPC/config/ciaolib_with_idl.mpb b/modules/CIAO/MPC/config/ciaolib_with_idl.mpb new file mode 100644 index 00000000000..8dfa7a4fb71 --- /dev/null +++ b/modules/CIAO/MPC/config/ciaolib_with_idl.mpb @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_lib, ciaoidldefaults { +} diff --git a/modules/CIAO/MPC/config/componentidldefaults.mpb b/modules/CIAO/MPC/config/componentidldefaults.mpb new file mode 100644 index 00000000000..666e7784b7a --- /dev/null +++ b/modules/CIAO/MPC/config/componentidldefaults.mpb @@ -0,0 +1,21 @@ +// -*- MPC -*- +// $Id$ + +project : ciaoidldefaults, anytypecode { + idlflags += -Gsv -Glem -Gxhst -Gxhsk -Gxhsv -Gxhex + + Modify_Custom (IDL) { + optional(source_pre_extension) { + commandflags(-Gsv) += _svnt + } + + optional(header_pre_extension) { + commandflags(-Gsv) += _svnt + } + + optional(generic_outputext) { + commandflags(-Glem) += E.idl + } + } +} + diff --git a/modules/CIAO/MPC/config/connectoridldefaults.mpb b/modules/CIAO/MPC/config/connectoridldefaults.mpb new file mode 100644 index 00000000000..f7a558fa159 --- /dev/null +++ b/modules/CIAO/MPC/config/connectoridldefaults.mpb @@ -0,0 +1,6 @@ +// -*- MPC -*- +// $Id$ + +project : componentidldefaults { + idlflags += -I$(CIAO_ROOT)/connectors +} \ No newline at end of file diff --git a/modules/CIAO/MPC/config/dds4ccm_base.mpb b/modules/CIAO/MPC/config/dds4ccm_base.mpb new file mode 100644 index 00000000000..a2c15617235 --- /dev/null +++ b/modules/CIAO/MPC/config/dds4ccm_base.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : ciao_connector_base { + after += DDS4CCM_stub DDS4CCM_lem_gen + libs += DDS4CCM_stub +} diff --git a/modules/CIAO/MPC/config/dds4ccm_impl.mpb b/modules/CIAO/MPC/config/dds4ccm_impl.mpb new file mode 100644 index 00000000000..6dd2505e6e6 --- /dev/null +++ b/modules/CIAO/MPC/config/dds4ccm_impl.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : nddslib, dds4ccm_skel, ciao_logger { + after += CIAO_DDS4CCM_NDDS_Impl + libs += CIAO_DDS4CCM_NDDS_Impl +} diff --git a/modules/CIAO/MPC/config/dds4ccm_skel.mpb b/modules/CIAO/MPC/config/dds4ccm_skel.mpb new file mode 100644 index 00000000000..6c1604195b9 --- /dev/null +++ b/modules/CIAO/MPC/config/dds4ccm_skel.mpb @@ -0,0 +1,7 @@ +// -*- MPC -*- +// $Id$ + +project : dds4ccm_base { + libs += DDS4CCM_skel + after += DDS4CCM_skel +} \ No newline at end of file diff --git a/modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb b/modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb new file mode 100644 index 00000000000..a9a773fb356 --- /dev/null +++ b/modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb @@ -0,0 +1,23 @@ +// -*- MPC -*- +// $Id$ + +project { + // Set the idl3_to_idl2 compiler and flags as template values + specific { + tao_idl3_to_idl2 = $(CIAO_ROOT)/bin/tao_idl3_to_idl2 + tao_idl3_to_idl2_dep = $(CIAO_ROOT)/bin/tao_idl3_to_idl2 + } + + Define_Custom(IDL3TOIDL2) { + automatic = 1 + dependent = $(TAO_IDL3_TO_IDL2_DEP) + command = $(TAO_IDL3_TO_IDL2) + commandflags = -I$(CIAO_ROOT) -I$(CIAO_ROOT)/ccm -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs + libpath = $(ACE_ROOT)/lib + inputext = .idl + generic_outputext = _IDL2.idl + keyword idl3toidl2flags = commandflags + } + + after += TAO_IDL3_TO_IDL2_EXE +} diff --git a/modules/CIAO/MPC/config/xscdefaults.mpb b/modules/CIAO/MPC/config/xscdefaults.mpb new file mode 100644 index 00000000000..759ddcb6924 --- /dev/null +++ b/modules/CIAO/MPC/config/xscdefaults.mpb @@ -0,0 +1,21 @@ +// -*- MPC -*- +// $Id$ + +project { + specific { + xsc_bin = $(XSC_ROOT)/bin/xsc + xsc_dep = $(XSC_ROOT)/bin/xsc + xsc_flags = --backend cxx --cxx-char-type ACE_TCHAR --cxx-generate-writer-types + } + + Define_Custom(XSC) { + automatic = 0 + dependent = $(XSC_DEP) + command = $(XSC_BIN) + commandflags = $(XSC_FLAGS) + inputext = .xsd + source_outputext = .cpp + header_outputext = .hpp + keyword xscflags = commandflags + } +} diff --git a/modules/CIAO/NEWS b/modules/CIAO/NEWS new file mode 100644 index 00000000000..892b828e5dd --- /dev/null +++ b/modules/CIAO/NEWS @@ -0,0 +1,1085 @@ +PLANNED MAJOR CHANGES "SOMETIME IN THE FUTURE" (i.e., exact beta not known) +=========================================================================== + +. Several features have been recently removed, with no planned replacement in +their current form, such as: + +. ReDaC +. Shared Components + +Some features are being temporarily removed but with planned +replacement in the near term: + +. RTEC Integration +. Static Deployment +. TargetManager +. RepositoryManager +. Swapping container + +. Enhance Execution Manager and Domain Application Manager to make calls + on the Target Manager to get resource information. + +. Enhance Node Manager to integrate resource monitoring capacity within + individual Nodes. + +. Add assembly-wide component activation/deactivation feature. + + - This should allow system deployers to specify the dependencies + among component instances within the assembly. + + - Add support in DAnCE so DAnCE could enforce the order in which + components are to be activated within the assembly. + +. Add AMI support in DAnCE toolchain to when the DomainApplicationManager + contacts node-level managers to deploy components, all the node-level + managers could performe the deployment concurrently. + +. Integrate RT-CORBA 1.2 dynamic scheduling feature into CIAO, which + will allow the application developers to use dynamica scheduling + through meta-programming model. + +. Update DAnCE IDL data structures and interfaces to comply with the + 06-04-01 version of the DnC specification, and perform + interoperability testing with other DnC implementations. Note this + work may change the functionality and semantics of some proprietary + DAnCE extensions, notably ReDaC, Shared Compoents, and RTEC + integration, and may even be absent until such a time as they + can be implemented in such a way as to not break copliance with the DnC + specification. + +. Decouple dependencies to NodeApplication from other DAnCE tools. + These dependencies were added to support static configurator. We + need to have these tools in both conventional version and static + configuration version. + +. Support tool-specific debug levels and added CIAO_DEBUG macros to + simplify adding debug printouts based on various tool-specific debug + levels. + +. Add support for querying for interface types to the + RepositoryManager. + +. Implement a planner to query the TargetManager and RepositoryManager + and generate deployment plans on the fly. + +USER VISIBLE CHANGES BETWEEN CIAO-0.7.5 and CIAO-0.7.6 +======================================================= + +. Added support for the environment variable DDS4CCM_NDDS_LOG_VERBOSITY. + This controls the ndds verbosity which is default set to silent + +. Added support for the DDS State and Event connector with all ports + +USER VISIBLE CHANGES BETWEEN CIAO-0.7.4 and CIAO-0.7.5 +======================================================= + +. Added rudimentary support for PlanLocality, which allows DAnCE to spawn + multiple CIAO processes per node. Currently, only SameProcess + constraints are honored. SameProcess constraints are honored by + creating a separate process per constraint as it appears in the + plan, with the appropriate component instances spawned in each + process. + + Constraints are not rigerously checked by the runtime, so behaviour + when a component instance appears in multiple SameProcess + constraints is currently undefined. + + Components not appearing in any constraint are placed in a default + component server process. + +. DDS4CCM has been updated to match the beta 2 spec. If you want use + a templated module, use TYPED_MODULE macro as helper until the + TAO_IDL compiler supports templated modules + +. Updated all DDS4CCM code/examples/tests to match beta 2 + +. Added Shapes sender/receiver for DDS4CCM + +. The configProperty edu.vanderbilt.dre.CIAO.ComponentServer.Executable + can be used in the deployment plan to set a different ciao component + server executable + +. The configProperty edu.vanderbilt.dre.CIAO.ComponentServer.Args + can be used in the deployment plan to specify a set of additional + commandline arguments that are than passed to the ciao component + server + +. Added support for the environment variable DDS4CCM_DEFAULT_DOMAIN_ID + This influences the default domain id which is set by the connector. + All test deployment plans don't set a domain id, which cause problems + during testing because everyone is in the same domain. Each developer + and build system on the same network should have its own unique id + to get an isolated test environment. + +. DDS4CCM qos_profile attribute has to be used as library#profile. If + this is not set, we use default qos + +. Removed DDS4CCM monolotic connector because it was not in the spec + +USER VISIBLE CHANGES BETWEEN CIAO-0.7.3 and CIAO-0.7.4 +======================================================= + +. Added second prototype of DDS4CCM that uses the RTI + CORBA Compatibility kit and a monolitic connector + +. Extended AMI4CCM prototype + +. Update all examples and tests for the changes in the -Glem + TAO_IDL option. The behavior of this option has changed + dramatically, and will require that most user applications be + ported. Previously, -Glem would cause the IDL compiler to generate + a E.idl file containing local executor mapping for all interfaces + provided as ports by any components in the main translation unit. + Therefore, files with interfaces, but no components defined will + have empty E.idl files generated. Similarly, a file with no + interfaces defined, but with components defined would generate LEM + interfaces for interfaces provided by that component but not local + to the file in question. While this behavior simplified a + rudimentary use case where interfaces would be provided by only one + component, more complicated use cases were much more difficult to + achieve. + + The new behvior causes the IDL compiler to generate LEM IDL for all + interfaces within a given translation unit, regardless of whether or + not they are provided as ports by a component in the same + translation unit. Futhermore, if a component provides an interface + that is not defined with the translation unit of that compoment, it + is required that the user provide a #include directive to the + appropriate E.idl file which contains the required LEM interface for + the interfaces provided as facets. + + This new behavior is similar to the former behavior of -Glfa, and as + such the behavior of -Glfa has been changed to attempt to be + reflective of the old behavior of -Glem, and may be used as a + stopgap backwards compatibility measure. + +. In idl3_to_idl2 tool, replaced manual designation of IDL2-only + files and resulting generated include of undecorated filename + (using -x option) with a mechanism that does it + automatically. The -x option has been eliminated. + +USER VISIBLE CHANGES BETWEEN CIAO-0.7.2 and CIAO-0.7.3 +======================================================= + +. Added a first prototype of DDS4CCM + +. Added a first prototype of AMI4CCM + +. Made CIAO compiling with unicode enabled + +USER VISIBLE CHANGES BETWEEN CIAO-0.7.1 and CIAO-0.7.2 +======================================================= + +. CIDL compiler, and .cidl files, have been eliminated. All + CIAO code generation is now handled by the TAO IDL compiler. + See $TAO_ROOT/docs/compiler.html for details. + +. DAnCE has been refactored in separate libraries to reduce + footprint and dependencies + +. Logging has been improved + +. IDL has been updated to match the official specifications + +. CIAO now also compiles on HPUX + +. Unicode improvements + +. Updated Quoter tutorial for all recent changes including + the latest CosMIC releases + +. Use the new feature of the TAO_IDL compiler to generate all + export files as part of the build step + +. Extended CIAO and DAnCE tests + +USER VISIBLE CHANGES BETWEEN CIAO-0.7.0 and CIAO-0.7.1 +======================================================= + +. No user visible changes in this release. + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.9 and CIAO-0.7.0 +======================================================= + +. CIDLC compiler has new command line options: --suppress-lem which will suppress + generation of the local executor mapping, --suppress-svnt which will suppress + generation of the servant code, --lem-enclosing-module which will generate the + local executor mapping inside a given module. + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.8 and CIAO-0.6.9 +====================================================== + +. The CIAO refactoring branch has been merged to the main line of + development. This version of CIAO contains extensive refactoring of + the CIAO container code and includes a new version of DAnCE based on + code provided by PrismTech. + +. Porting hints may be found at CIAO_ROOT/docs/Porting_Hints.txt + +. CIAO no longer supports implicitly homed components. This means that + components must either be deployed using an explicity deployed and + nominated home, or must be deployed without the use of a home. + Unhomed components require new factory methods similar to those used + for homes. These can be obtained by issuing the --gen-exec-impl + operation to the CIDL compiler. + +. Extant deployment plans are no longer valid for this version of + DAnCE. Until CoSMIC support is available, + DANCE_ROOT/bin/generate_plan.py may be used to assist in the creation + of well-formed deployment plans. + +. Names for most DAnCE executables have changed. Please see the Quoter + tutorial found at CIAO_ROOT/docs/tutorials/Quoter for details. + +. DAnCE now supports connection endpoints realized by extra-plan + object references. + +. Support for shared components and ReDaC has been removed with no + immediate replacement planned. + +. Support for RTEC integration, RT-CCM, RepositoryManager, + TargetManager, and staticly linked depoyment has not yet been ported + to the new CIAO/DAnCE. + +. CIAO/DAnCE now supports by Xerces 3.X and 2.X. + +. Note that CoSMIC support is not currently available for this version + of CIAO/DAnCE. + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.7 and CIAO-0.6.8 +====================================================== + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.6 and CIAO-0.6.7 +====================================================== + +. Added the "CIAO" OCI Development Guide Examples under the directory + /DevGuideExamples. NOTE this is an ongoing port of the original + version x.5.x examples and some are not yet 100% compatiable with the + current version of CIAO. + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.5 and CIAO-0.6.6 +====================================================== + +. None + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.4 and CIAO-0.6.5 +====================================================== + +. None + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.3 and CIAO-0.6.4 +====================================================== + +. None + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.2 and CIAO-0.6.3 +====================================================== + +. None + +USER VISIBLE CHANGES BETWEEN CIAO-0.6.1 and CIAO-0.6.2 +====================================================== + +. Removed 24 unnecessary builds from the CIAO_TAO_DAnCE.mwc + MPC workspace file + +. Changes to the generate_component_mpc.pl Perl scrip, CIDL compiler + generation of empty executor implementation classes, and existing + tests and examples to make servant dependency on executor the + default, instead of vice versa as previously + +. Made the processing of IDL and CIDL files into separate build steps + for tests, examples, and for DAnCE's TargetManager + +. Added additional tests for CIAOEvents Integration, which executes + several scenarios for components using Real-time EventChannels + as event mechanism. + +USER VISIBLE CHANGES BETWEEN CIAO-0.6 and CIAO-0.6.1 +==================================================== + +. Fixed broken static deployment support + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.10 and CIAO-0.6.0 +======================================================= + +. Added support for building CIAO statically with Microsoft Visual C++ + +. Fixes to idl3_to_idl2 conversion tool, which + - handle the mapping of IDL identifiers that are + escaped (due to a clash with an IDL keyword) or + that clash with a C++ keyword + - handle the mapping of #includes of IDL files + that aren't themselves processed by the tool + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.9 and CIAO-0.5.10 +======================================================= + +. Extended IDL3_to_IDL2 + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.8 and CIAO-0.5.9 +====================================================== + +. Added a new deployment algorithm to DAnCE for optimization of large + scale deployment. In this algorithm, the number of threads spawned is + based on the deployment plan, i.e, by parsing the deployment plan + information, DAnCE decides how many threads to spawn (one thread per + node). This algorithm knows how to "initialize" each thread since + each thread will have different execution context, i.e., which + components to deploy to which node, component configuration, etc. + +. Added a NA component server callback wait strategy in NAM, which uses + conditional variable to signal the NA call back so it can work with + multi-threaded configuration, such as thread-per-connection mode. The + original implementation uses the main thread to run the ORB event + loop, which will not work for multi-threaded environment. + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.7 and CIAO-0.5.8 +====================================================== + +. Improved the option handling of the Execution_Manager and plan_launcher. + +. Added a utility library to manipulate the deployment plan, such as + adding/removing instances, adding/removing connections, and pretty print. + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.6 and CIAO-0.5.7 +====================================================== + +. Removed ACE_THROW_RETURN + +. Remove exception specifications from ORB mediated operations (C++ + mapping requirement) + +. All DAnCE core idl files are moved to DAnCE/Deployment + +. QoS4CCM IDL files are moved to ciao/extension + +. RACE has been fully removed from the distribution, a new version + is work in progress and will be added again to the distribution + when it is ready + +. MPC base projects that contained _dnc_ have been renamed to not + include that string. + +. DAnCE executables are now installed into $CIAO_ROOT/bin + +. Added a new TAO policy for specifying the DiffServ code points + (DSCP) to be added to request and reply IP packets of an + application. The policy can be added at the following levels: OBJECT, + THREAD, and ORB. + +. Extended the CIAOServerResources schema to allow the specification + of request and reply DSCPs to be added to the IP packets of an + application. Extended CIAO NodeApplication libraries, to read the + CIAOServerResources specification, to create DiffServ policies on the + objects, to allow automatic addition of DSCPs on the CCM port + objects. + +. Updated the Target Manager interface to comply with the latest OMG + specification. This includes the addition of a new entity, + ResourceCommitmentManager for the management of committed resources. + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.5 and CIAO-0.5.6 +====================================================== +. Updated the Target Manager interface to comply with the latest OMG + specification. This includes the addition of a new entity, + ResourceCommitmentManager for the management of committed resources. + +. Removed all exception environment macros except ACE_THROW_RETURN + and ACE_THROW_SPEC + +. All CIAO libraries built on UNIX systems will now have the correct library + version numbers. Previously they had the same version numbers as TAO + libraries. + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.4 and CIAO-0.5.5 +====================================================== + +. Fixed problems and added command line options to the + generate_component_mpc.pl Perl script. Also added an HTML + documentation file for this script. + +. All IDL has been refactored to get a smaller footprint + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.3 and CIAO-0.5.4 +====================================================== + +. Adding support to manage multiple interconnected assemblies, which will + involve the work through ExternalReferenceEndPoint idea. + +. Seamless integration of swapping into the main line programming model, + so that DAnCE can actually kickstart swapping. + +. Integrated real-time event service into CIAO and DAnCE. + +. Improved syntax error checking and reporting in the CIDL compiler. + +. Add Null Component to be able to measure footprint in detail + +. Added the naming service & the implementation of createPackage function + to RepoMan. + +. Added the code to save the state of the RepoMan at exit and load the + state of it at start. + +. Reimplemented the findNamesByType () and getAllTypes () operations of + RepoMan, which use the newly generated ACE_Hash_MultiMap_Manager class + and its corresponding classes. + +. Added Plan_Generator project. This project is used to retrieve information + from Repoman and generate/modify DeploymentPlans based on different demands. + +. A succesfull static deployment of the Hello example has been tested on + VxWorks 6.3 + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.2 and CIAO-0.5.3 +====================================================== + +. Improve documentation for CoSMiC Quoter tutorial to reflect the latest update + +. Reimplemented the findNamesByType () and getAllTypes () operations + of Repository Manager, which use the newly generated + ACE_Hash_MultiMap_Manager class and its corresponding classes. + +. Added the replace argument in installPackage () and createPackage () + functions to Repoman and extend the functionalities of these two + functions based on the latest D&C spec. + +. Added the Plan_Generator project. This project is used to retrieve + information from Repoman and generate/modify DeploymentPlans based + on different demands. Removed the planner project. + +. Added C++ keyword mangling to the CIDL compiler (bug#2427). + +. Fixed the CIDL compiler source code to build with Intel C++ (bug#2387). + +. Reimplemented the CIDL compiler command line handling to make use + of '--' to separate options from arguments unnecessary (bug#2426). + +. Added file and line number to the semantic errors printed by the CIDL + compiler. + +. Fixed a number of bugs in the CIDL compiler error handling and recovery + mechanisms. + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.1 and CIAO-0.5.2 +====================================================== + +. Changed CIDL compiler code generation for facet servant classes + to enable reuse if the same interface is used as a facet more + than once in a single translation unit. + +. Fixed code that fetches component DLL entry points to be portable + across all supported compilers. + +. Fixed bugs in the recent implementation of component servant methods + get_all_receptacles() and get_all_publishers(). + +. Simplified template code in component servant and home servant + base classes. + +. Added the naming service & the implementation of createPackage function + to RepoMan. + +. Added the code to save the state of the RepoMan at exit and load the + state of it at start. + +. A new perl library has been added to the bin directory. PerlCIAO is + a wrapper around PerlACE with extensions to aid in scripting CIAO + tests. + +. DAnCE/Planner - a planner which contacts the RepositoryManager, gets a + PackageConfiguration by name, and builds a DeploymentPlan on + the fly. Note that the node information is currently not populated. + +. Added two RACE utilities, the LocationUpdater and PlanGenerator. + The LocationUpdater modifies the location field of artifacts in + flattened plans to correspond to HTTP URLs pointing at the + RepositoryManager. The PlanGenerator is the Planner utility + modified to work with RACE. Note that most RACE functionality is + still in development and is not included with this release. + +. Added support for parsing packaging descriptors to the + Config_Handlers, and improved support for IDL->XML serialization. + +. Added a Planner utility which, when given the name of a package, + will contact the RepositoryManager and construct a flattened + deployment plan on the fly. Note this utility currently does not + populate node assignments. + +. Several important bugfixes for ReDaC and shared components. + +. Changed Components.idl to include CCM_Component.idl instead of + CCM_Container.idl. This removes a dependancy on the container + library for stub projects. + +USER VISIBLE CHANGES BETWEEN CIAO-0.5.0 and CIAO-0.5.1 +====================================================== + +. Added the support of integrating real-time event service into the + CIAO core framework. Enhanced DAnCE to support declaratively configure + and deploy real-time event channels to mediate event communication + among components. + +. Fixed a bug in detecting External connection and Internal + connections when components are shared across different + deployment plans. Earlier when removing connections attached + to an external/shared component, not *all* connections + associated with this components are purged from the + to-be-removed connections list. + +. Fixed a bug when redeploying components using the same set + of NodeManagers, the destroy of applications results not + all internal components and external/shared components + are unbinded from the cached map, which sometimes causes + duplicate instance exception thrown. + +. Fixed bug in detecting name clashes between names of ports of the same + category (facet, event sink, etc.) in the same component. + +. Added support for attribute exceptions in code generated for executor + implementation classes. + +. Implemented spec-defined component methods get_all_receptacles(), + get_all_publishers(), and disconnect_consumer(). + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.10 and CIAO-0.5.0 +======================================================= + +. Changed MPC configuration of Config_Handlers to turn off hidden + visibility if applicable when compiling Config_Handlers or projects + that use Config_Handlers on linux.This change was to work around symbol + visibility inconsistencies in GNU standard C++ library when using g++ + 4.x's symbol visibility features. + +. Enhanced ReDaC service to enforce the correct + assembly redeployment and reconfiguration order. + +. Some bug fixes in ReDaC about removing components. + +. Fixed NodeApplication to unbind a component with naming service + when removing it from the container. + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.9 and CIAO-0.4.10 +======================================================= + +. Enhanced DAnCE ReDaC service to enforce the correct + assembly redeployment and reconfiguration order. + + The order that ReDaC currently enforces: + + (1) Install new components, + (2) Set up new connections, + (3) Activate new components, + (4) Passivate old components, + (5) Remove old connections + (6) Remove old components. + +. Enhanced DAnCE to create hierarchical naming context + path through XML descriptors. + +. Enhanced DAnCE to maintain a component state map in + the component server to manage component life cycle. + +. Some bug fixes in DAnCE. + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.8 and CIAO-0.4.9 +====================================================== +. RTTI enabled versions of the Xerces library are no longer needed on + Windows platforms. + +. The CIDLC compiler now supports basic preprocessor directives: + #ifdef, #ifndef, #else, and #endif as well as the -D command- + line option. + +. The CIDLC compiler now supports incomplete struct and union + semantics which will appear in CORBA 3.1. + +. DAnCE now supports dynamically adding/removing components + to/from the existing running assembly without shutting down the + running appliation. This will allow the application developers to + evolve their applications on the fly without incuring service down + time. The service is called ReDaC (Redeployment and Reconfiguration) + + Basically ReDAC provides a whole range of redeployment and + reconfiguration granularity level, including: + + 1) Install/remove component instances of the existing component types. + 2) Install/remove component instances of a different type, i.e., a + totally new type of component. + 3) Install/remove component instances from an existing container. + 4) Install new component instances into a dynamically created brand + new container. + Move around existing components from one existing container to + another existing/new container. + 5) Install new component instances into another component server in + the same physical node. + 6) Install new component instances into another component server + into a remote host. + + To see how to use this feature, please see the ReDaC-Usage.html + under the $CIAO_ROOT/examples/Hello/ directory. + +. Removed the Old Config Handlers, which have been deprecated for some + time. Please see tools/Config_Handlers for the current version. + +. Added a step-by-step CoSMIC tutorial for modeling CIAO components + using PICML($CIAO_ROOT/docs/tutorials/CoSMIC). Using a simple Stock + Quoter system as example, this tutorial demonstrates all the steps + that needed to model Component-Based applications. + +. DAnCE now supports making connections among components across + different assemblies, and allow components to be "shared" + across assemblies seamlessly. + + Internally, DAnCE provides a reference counting mechanism when + deploying/destroying components, and a reference count table + is maintained on each NodeManager. + + From a deployer's point of view, if he/she chooses to deploy + a new assembly of component and simultaneously wants to reuse + previous deployed components in an existing running assembly, + then in the new deployment plan descriptor, he could refer + to an old component instance in the + XML tag. The "key" to identify the old component instance is + through the pair, if such a key is found + present in a previous deployed assembly, then DAnCE won't + install this component instance (specified by the ) + again, but instead it will increase the reference count of this + component instance. + + DAnCE also supports making connections from existing running + components to newly deployed components in another assembly, and + vice versa. + +. The RepositoryManager has been enhanced to support standards based + interfaces. A number of techniques have been used to ensure high + performance and scalability. + +. The RepositoryManager can now retrieve packages from remote locations via + HTTP. + +. The Target Manager is released with this CIAO release. It is an + infrastructure component which keeps track of resource usage in the + target domain. The initial domain configuration remains with the + Target Manager. A monitor framework has been built into Node Manager which + monitors the resources used within each host. This monitor reports its + data intermittently to the Target Manager which aggregates the data + received across all such hosts acroos the Target domain. The monitor + is implemented using a strategy pattern, thus enabling the plug-in of + new monitors which can monitor different resources in the domain. The + Target manager is a component thus it needs to be started using a + deployment plan. It is right now a optional component in the DAnCE + tool chain. + +. We added a skeleton implementation of the Resource Allocation and + Control Engine (RACE) which is a middleware framework built atop + CIAO/DAnCE that integrates multiple resource management algorithms for + (re)deploying and (re)configuring application components. We are in + the process of developing resource management algorithms (both + resource allocation and control algorithms) that will be a part of + future releases. + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.7 and CIAO-0.4.8 +====================================================== +. The deprecated RepositoryManager implementation, under + DAnCE/RepositoryManager, has been removed from this release. Please + use the Plan_Launcher and flattened deployment plans to deploy + component assemblies. + +. The CIDL compiler frontend now supports constants, const expressions, + bounded strings, bounded sequences, and arrays. + +. The CIDL compiler frontend now supports automatic indentation of + function arguments (both "new line" and "same line" styles are + supported). + +. Added backend CIDL compiler support for constants, arrays, bounded + strings, bounded sequences, and attribute exceptions, corresponding + to frontend support added by Boris Kolpackov . + +. Updated documentation to include instructions for building + the CIDL compiler using MakeProjectCreator (MPC). + +. Fixed a bug in the CIDL compiler's determination if an IDL + type is of fixed or variable size type, when it is declared + in the scope of an interface, valuetype or home. + +. Changes to generate servant code to support component + swapping. + +. Added capability to pass a base class event consumer to a + subscribe() operation generated for a derived event type. + +. Added support for .cdl file extension, which was belatedly + standardized by the OMG. + +. Added documentation on using Rational Purify with CIAO and + DAnCE. + +. Added tests and documentation for the IDL3-to-IDL2 converter tool. + +. RepositoryManager: + - enhanced the implementation to use various optimization techniques + - added HTTP support + - added PackageConfiguration visitor to update the locations of the + implementation artifacts with relevant HTTP URLs + - refactored some of the code and added a number of helpers functions + +. The XSC based config handlers have been heavily optimized, resulting + in greatly reduced parsing overhead for large deployments. + +. The DAnCE toolchain now supports initializing attributes which have + enumerated types. Support for other complex types is planned for the + future. Please see examples/Hello/descriptors/ + flattened_deploymentplan_without_ns.cdp for an example of how to + populate enumerated attributes. + +. Integrated Real-time QoS support into the DAnCE-based runtime and + deployment tools based on the new OMG Deployment and Configuration + (D&C) specification. Such effort allows application developers to + use real-time CORBA 1.0 features within their CCM appliation through + meta-programming (via XML metadata through DAnCE toolchain). The old + run-time and deployment tools based on original Packaging and Deployment + section of the CCM specification have been completely removed. This + work includes extensions to D&C schema, schema parsers, container and + NodeApplication. + +. Added functionality in XML parsing code to resolve schema in + $CIAO_ROOT/docs/schema instead of the local directory only. All + DeploymentPlans should use Deployment.xsd instead of + Modified_Deployment.xsd, which has been removed. + +. Fixed bug in CIDL code generation for some types of component and + home attributes. + +. Packaging and Deployment (P&D) tools have been completely removed + from this release. DAnCE is now the only supported method of + deploying components. + +. The CIAO directory structure has changed in support of the previous + item. The following important directory moves have been made: + + * $CIAO_ROOT/DAnCE/ciao => $CIAO_ROOT/ciao + * $CIAO_ROOT/DAnCE/examples => $CIAO_ROOT/examples + * $CIAO_ROOT/DAnCE/Config_Handlers => $CIAO_ROOT/tools/Config_Handlers + * Various obsolete examples/tutorials/tests have been removed. + +. Error reporting during component deployment has been greatly + improved. While debugging using CIAO_DEBUG_LEVEL is still + available, detailed error messages are now generated and propagated + to the Plan_Launcher using exceptions. + +. generate_component_mpc.pl has been updated to generate MPC files + useful by the modern CIAO infrastructure. This script now also + automatically generates export files. + +. DAnCE has been enhanced to support deploying multiple assemblies + with the same set of ExecutionManager and NodeMangers. + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.6 and CIAO-0.4.7 +====================================================== +. Added a component packaging tool to DAnCE. This tool will allow + component packagers to create from deployment plan archived + packages that wrap up all relevant component properties, + descriptors and implementation artifacts.The component packages + generated from this tool will be distributed to Repository + Manager. + +. Enhanced DAnCE to allow more than one NodeApplicationManagers within + a NodeManager. + +. Enhanced DAnCE to support configurable output of debugging information. + Support for debugging information will be added at the level of both the + DAnCE/CIAO infrastructure as well as individual component instances. + Support for tracing of the DAnCE/CIAO infrastructure will also be added. + Together, these efforts will help developers to understand the execution of + their component-based applications, as well as allowing customization of + the amount of debugging information logged + +. Added binding component to the Naming Service. A system deployer + could configure this through XML-based flattened deployment plan + descriptor. + See $CIAO_ROOT/DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp + for details. Currently DAnCE only provides resolving naming service + reference through multicast, so be sure to initialize the naming service + with multicast port. + +. Added the first cut of the RepositoryManager implementation. + +. Changed scoping of code generated by the CIDL compiler to accommodate + cases where the composition declaration is enclosed in one or more + IDL modules, and/or when the composition declaration is in a different + scope than the associated component IDL declarations. + + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.5 and CIAO-0.4.6 +====================================================== + +. Added support for handle component activation/passivation in D&C + assemblies. + +. Added a test for the tool that converts IDL3 into equivalent IDL2. + +. Fixed CIDL compiler bug in code generation for sequence type + attributes of components. + +. Added more examples for CIAO, including a new Quoter example that is + similar to the one in TAO, as well as GUI-based example. + +. Added support for handle component activation/passivation in D&C + assemblies. + +. Added support for deactivating facets/event consumers when component + is getting deactivated. + +. Added support for destroying the component executors, when the + component is getting deactivated. + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.4 and CIAO-0.4.5 +====================================================== + +. Split the previous NodeApplication interface into NodeApplication + and Container interfaces to allow multi-container NodeApplication + support. This will be particularly useful to provide an optimized + CIAO container support for RT-CORBA features. + +. Enhanced CIAO to handle dynamic replacement of components. Please + see an example in $CIAO_ROOT/DAnCE/examples/Swapping + +. The Config Handlers have been modified to use XML parsing code + generated by the XML Schema Compiler (XSC). Binary releases of XSC can + currently be found at (http://www.dre.vanderbilt.edu/~boris/xsc), and a + recent snapshot of the CVS repository can be found at + (http://www.dre.vanderbilt.edu/~wotte/xsc.tbz2). + + Please direct all XSC inquiries/bug reports to wotte at + dre.vanderbilt.edu + +. Supported initializing attribute values on Component through XML + tags. Please refer to the $CIAO_ROOT/DAnCE/examples/Hello for + details, particularly the Hello.cid descriptor file. + +. Supported parsing component instance names and using them to generate + unique component port references, so that multiple instances of the + same component can be deployed in a single container and the client + requests could be properly designated to the appropriate ports. + +. Enhance CIAO to support establishing connections between derived + type ports and base type ports. For example, application deployer + could set up event connections between base event sink port type and + derived event source port type. + +. Enhanced the existing set of DAnCE tools to support flattened + Deployment Plan based deployment. Please refer an example in + $CIAO_ROOT/DAnCE/examples/BasicSP/flattened_deploymentplan.cdp + to see how the flattened deployment plan descriptor is used to + deploy the BasicSP example. + +. Develop regression/performance tests (similar to TAO + regression/performance tests) that will test/evaluate the + performance of various features of CIAO. + +. Added regression test script to the nightly build for DAnCE example. + This will make sure DAnCE tools could be ready to use out of + box in various platforms. + +. Improved documentation pages in various places. + +. Some bug fixes. + +. Added support for reception of eventtypes of a more derived type than + the type of the event sink. Subscription will succeed if the passed + event consumer is associated with an eventtype that is an ancestor of + the published eventtype. + + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.3 and CIAO-0.4.4 +====================================================== + +. Minor bugfixes. + + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.2 and CIAO-0.4.3 +====================================================== + +. CIDLC can generate empty executor implementations for a given + composition, which makes it easier to write executors. This can be + trigerred by passing --gen-exec-impl option while invoking CIDLC. + +. Generated container code has been refactored into base classes, + thereby reducing the amount of code generated by CIDLC. + +. A new tool for generating equivalent IDL2 declarations from IDL3 + declarations has been added. + +. Fixed a problem with DAnCE that prevented ports from getting activated + properly. + +. Added support for eventtype factories within CIDLC. + +. DAncE compiles clean and works with VC6 and Borland compilers. + +. Fixed compile errors and memory related errors on many platforms. + + +USER VISIBLE CHANGES BETWEEN CIAO-0.4.1 and CIAO-0.4.2 +====================================================== + +. Overall + - Support for g++ 3.4.1. + - Support added for latest HP aCC compiler. + +. CCM Deployment and Configuration specification has largely been + implemented. The implementation is called "DAnCE", the Deployment + and Configuration Engine. For more information about DAnCE, and a + list of supported features, please refer to + $CIAO_ROOT/docs/releasenotes/dance.html. + +. CIDL compiler + . Added missing generation of servant code for operations and + attributes of ancestors of interfaces supported and used as ports. + . Added missing generation of factory operation(s) from inherited + home(s). + . Added support for "uses multiple" in generated code. + . Fixed bugs in generation of inherited: [Bug 1800] + home operations + attribute operations + port operations + home factory operations + supported operations + . Added automatic registration of value factories for event + consumers. + . Added support for emits-related navigation. + . Fixed bug with multiple facets that provide the same interface. + . Implemented get_all_facets() and get_all_consumers() navigation + methods. + + +USER VISIBLE CHANGES BETWEEN CIAO-0.4 and CIAO-0.4.1 +==================================================== + +CIAO +---- + +. Added support for statically configuring an assembly. Please see + $CIAO_ROOT/docs/static_toc_ciao.html for details. + +CIDL: +----- +. Fixed incorrect generation of ACE environment macros in servant glue + code operations. + +. Fixed incorrect code generation in the body of a servant operation + that delegates to the executor class. + +. Added support for attributes in facets and supported + interfaces. + +. Fixed bug in code servant glue code generation when there are + multiple nested modules in the IDL and/or CIDL files. + +. Added missing code generation of enum type names. + +. Fixed a bug in the generation of the scoped name of a local variable + which is a _var of an executor interface for a facet. These types + are required by the CCM spec to be generated in the same scope as + the interface that underlies the facet. + +. Fixed a bug in the generation of *S.h file includes corresponding to + IDL files included in the CIDL file. + +. Added ACE style Makefiles. + +. Added support for bounded strings + +MPC +=== +. Removed all of the project type specific and unnecessary keywords. + +. Changed the defaulting rules for idl files (generated source files + will be automatically added even if idl files are explicitly + listed). + +. The makefiles generated by the gnuace type are now named GNUmakefile + instead of Makefile. + +. The IDL_Files section is no longer a built-in MPC type. It is a + custom build type defined in taoidldefaults.mpb. + +. Added support for Borland Makefiles that aren't tied to ACE_wrappers + (the bmake project type). + +. Added wild-cards to the default.rel file. Now, environment + variables that end in _ROOT are automatically considered as if they + were used with the -relative option. + +. Added an environment variable, + MPC_DEPENDENCY_COMBINED_STATIC_LIBRARY, to force MPC to put + inter-project dependencies in static vc6 and vc71 workspaces. + +. Added an html project type (originally by Justin Michel) to aid in + the debugging of mpc files. + +. Added a new keyword, pure_libs, that is put into a project + unmodified (unlike the libs and lit_libs keywords). + +. The behavior obtained through the use of the -hierarchy option is + now the default for all "make" based project types. This includes + borland, bmake, gnuace, make and nmake. + +. Added support for referencing workspace files (.mwc) from within + other workspaces. + +. Added an option, -genins, that causes MPC to generate .ins files + that can be used with prj_install.pl. This will help users install + portions of their projects into alternate directories. + +. Modified the gnuace workspace output to be based on directory + recursion instead of having inter-project dependencies built into + each workspace level GNUmakefile. + +. Added a new keyword, dependent, for use within a Define_Custom that + causes MPC to add a dependency to generated files upon the custom + command. + +. Assignments within a 'specific' section that are not recognized MPC + keywords are assumed to be template value overrides (similar to + using the -value_template option). + +. Partial support for Visual SlickEdit has been added. + +. Various bug fixes and optimizations have been added as well. + + +USER VISIBLE CHANGES BETWEEN CIAO-0.3.6 and CIAO-0.4 +==================================================== + +. Added Makefiles to build the ciao and tools subdirs by default. + +. The suport for the following IDL features have been added to the + CIDL since the last beta + + - exception (exception declaration and raises() specification) + - valuetype + - enum + - const declaration + - const expression and literals + - native + - home finder + - oneway operation + - readonly attribute + - type declaration inside interfaces, valuetypes + - union + + CIDL doesn't yet support the following features + + - Complete error detection and recovery + - Attribute exception specification + - Array + - Bounded sequence + - Fixed type + - Floating-point and Fixed-point constant expressions & literal. + + though we plan to add this support over the next several months, + depending on user/sponsor needs. diff --git a/modules/CIAO/PROBLEM-REPORT-FORM b/modules/CIAO/PROBLEM-REPORT-FORM new file mode 100644 index 00000000000..d86ac9dce49 --- /dev/null +++ b/modules/CIAO/PROBLEM-REPORT-FORM @@ -0,0 +1,97 @@ +[Please use the PRF form below to submit bug reports, problem + reports, etc., to the CIAO developers and interested users. + Send to ciao-users@cs.wustl.edu. If you are using OCI or PrismTech's + versions of CIAO do not send bugs to this mailing list, but + instead contact those companies for support. Please also send your + PRF as plain ASCII text, _not_ uuencoded or as an attachment. + + We prefer that all bug reports be submitted through our bug tracking + system. See $ACE_ROOT/docs/usage-bugzilla.html for more information + about how to do this. If you are unsure as to whether your problem + is a real bug or not then please submit your question to the mailing + list using the following form. Not using the problem report form + will make it harder or impossible to identify the problem, and in + many cases we will be unable to help at all. Also please try to + browse bugzilla and the ChangeLog files to find out if your problem + has been solved in a more recent version of CIAO. + + To ensure that you see responses, please do one of the following: + + 1) Subscribe to the ciao-users mail list, by sending email with + contents "subscribe ciao-users" to majordomo@cs.wustl.edu. + + 2) Or, monitor the comp.soft-sys.ace newsgroup for responses. + + Replace/remove all the explanatory text in brackets before mailing. + + Please send this form as ASCII text only. Do _not_ send it as an + attachment, or as tar'ed, compressed and/or uuencoded text. And + limit line lengths to less than 80 characters. + + PLEASE make your Subject: line as descriptive as possible. + Subjects like "CIAO bug" or "bug report" are not helpful! + Also, do _not_ include the word "help" in the Subject!] + + When including your config.h and platform_macros.GNU files as requested + below, only include the contents if you use the recommended method of + including the platform-specific file in your file. If you use a link + to the platform-specific file, simply state which one - DO NOT include + an entire platform-specific configuration file in the form. + +8<----------8<----------8<----------8<----------8<----------8<----------8<---- + +To: ciao-users@cs.wustl.edu +Subject: [area]: [synopsis] + + CIAO VERSION: 0.7.5 + TAO VERSION : 1.7.5 + ACE VERSION : 5.7.5 + + HOST MACHINE and OPERATING SYSTEM: + If on Windows based OS's, which version of WINSOCK do you + use?: + + TARGET MACHINE and OPERATING SYSTEM, if different from HOST: + COMPILER NAME AND VERSION (AND PATCHLEVEL): + + THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform- + specific file, simply state which one]: + + THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you + use a link to a platform-specific file, simply state which one + (unless this isn't used in this case, e.g., with Microsoft Visual + C++)]: + + BUILD METHOD USED: +[Experimental ./configure or traditional makefile/project file?] + + CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features + (used by MPC when you generate your own makefiles): + + AREA/CLASS/EXAMPLE AFFECTED: +[What example failed? What module failed to compile?] + + DOES THE PROBLEM AFFECT: + COMPILATION? + If so, what do your $ACE_ROOT/ace/config.h and + $ACE_ROOT/include/makeinclude/platform_macros.GNU contain? + LINKING? + On Unix systems, did you run make realclean first? + EXECUTION? + OTHER (please specify)? +[Please indicate whether ACE/TAO/CIAO, your application, or both are affected.] + + SYNOPSIS: +[Brief description of the problem] + + DESCRIPTION: +[Detailed description of problem. Don't just say " +doesn't work, here's a fix," explain what your program does +to get to the state. ] + + REPEAT BY: +[What you did to get the error; include test program or session +transcript if at all possible. ] + + SAMPLE FIX/WORKAROUND: +[If available ] diff --git a/modules/CIAO/README b/modules/CIAO/README new file mode 100644 index 00000000000..22504fb64af --- /dev/null +++ b/modules/CIAO/README @@ -0,0 +1,152 @@ + +BUILDING CIAO +======================== + +* Supported platform: + + We have tried CIAO examples on Win32 using MSVC 7.1 and above and on + Linux. + +* Documentation: + + Various documents are available under $(CIAO_ROOT)/docs/ + Commments and suggestions for improving these documents are + extremely welcome. + +* Preparation - Compiling ACE and TAO: + + ************************************************* + + There has been some big changes in MPC and + a few "problems" are being sorted out before + ACE/TAO switched to use MPC generated Makefile + projects files exclusively. CIAO only uses + MPC. MPC, however, assumes a slightly different + directory structure than the stock, old ACE + Makefile/project files. Therefore, it is + a bit adventurous to compile CIAO at this time + of transition. Here are some hints that you + can try to make this work a bit easier. + + 1. Make sure to add $ACE_ROOT/lib into your + PATH, or LD_LIBRARY_PATH (before + $ACE_ROOT/bin) + + 2. Make sure you don't have old CIAO libraries + DLL and so files) hanging around. + + 3. If prefered, you can re-generate the Makefile, + project files for all/core ACE/TAO libraries. + (e.g., using $ACE_ROOT/TAO/TAOACE.mwc.) + + ************************************************* + + CIAO depends on many CORBA features to function properly so you need + to compile them first. Here is a non-exhaustive list: + + ACEXML_Parser, + + Valuetype + IORInterceptor + ObjRefTemplate + Security + PortableServer + IFR_Client + + RTPortableServer + RTCORBA + +and also the libraries they depends on. + + - On Linux, try defining these in the platform_macros.GNU + + exceptions=1 + interface_repo=1 + ssl=1 + +* Compiling CIAO core libraries and tools: + + Assuming CIAO_ROOT = ACE_wrappers/TAO/CIAO/ + + Compile the following directories: + + + $CIAO_ROOT/ciao/ + + $CIAO_ROOT/tools/XML_Helpers + $CIAO_ROOT/tools/ComponentServer + $CIAO_ROOT/tools/ServerActivator + $CIAO_ROOT/tools/Assembly_Deployer + $CIAO_ROOT/tools/Daemon + + You need to creating the Makefile of your choice.. + For example, for unix makefile: + + $ cd $CIAO_ROOT/ciao/ + $ $(ACE_ROOT)/bin/mwc.pl + $ make + + To regenerate VC7.1.NET project files, do: + + > cd $CIAO_ROOT/ciao + > $(ACE_ROOT)/bin/mwc.pl -type vc71 + +* You also need to build the CIDL compiler before trying out any + examples. The CIDL compiler, CIDLC, compiles your component + implementation definition and generates the necessary glue code for + developing and deploying components. Pleas see + $CIAO_ROOT/CIDLC/README.html for instructions on how to build and + use CIDLC. + +* Now you can play with the examples: + + - $CIAO_ROOT/examples/Hello + + This is a single component example. Check out run_test.pl to see + how you can instantiate a single component using CIAO. + + - $CIAO_ROOT/examples/OEP/Display + + This is a multiple-component example. RateGen component + subdirectory contains a run_test.pl that you can use to + instantiate a component instance, like you would do with the + Hello example. The other components require collaboration with + other components and I don't have client programs to test them + out individually. + + This example also lets you compose all the components into a + distributed application using the Assembly_Deployer. Change + directory to + + $CIAO_ROOT/examples/OEP/Display/descriptors + + and take a look at the file: NOTE.txt. This file describes the + steps to compose the application using various different + configurations and composition specs. + + - $CIAO_ROOT/examples/OEP/BasicSP + + This is a new multi-component example. It has the similar + struture as the Dsiplay example above. + + +* If you can not find the + Makefiles for unix platform you are using, you can use mwc to create + them. For examples, to compile the multi-component example, use the + following: + + $ cd $CIAO_ROOT/examples/Display + $ $(ACE_ROOT)/bin/mwc.pl + $ make + + To regenerate VC6 dsp files, do: + + > cd $CIAO_ROOT/examples/Display + > $(ACE_ROOT)/bin/mwc.pl -type vc6 + + Likewise, to regenerate VC7.NET project files, do: + + > cd $CIAO_ROOT/examples/Display + > $(ACE_ROOT)/bin/mwc.pl -type vc7 + + diff --git a/modules/CIAO/Release b/modules/CIAO/Release new file mode 100644 index 00000000000..2198eab5e2a --- /dev/null +++ b/modules/CIAO/Release @@ -0,0 +1,53 @@ +#---------------------------------------------------------------------------- +# $Id$ +# +# Top-level Makefile for the CIAO +#---------------------------------------------------------------------------- + +#### The "release" targets can be used to create the ACE+TAO+CIAO kit. By +#### default, it creates a new beta release. To create a new minor or +#### major release, add "REL=minor" or "REL=major", respectively, to +#### the make invocation. + +CONTROLLED_FILES = CIAO + +RELEASE_FILES = $(addprefix ACE_wrappers/TAO/,$(CONTROLLED_FILES)) + +.PHONY: CIAO tag + +REL = beta +MAKE = make -f Release +CHECK = +APPLY_NEW_TAG = tag + +#### The call to make_release below doesn't actually create the kit. +allsources: $(APPLY_NEW_TAG) + @cd $(ACE_ROOT) && $(MAKE) -s ciaosources + +tag: + @$(ACE_ROOT)/bin/make_release $(CHECK) -k ciao -v $(REL) -u + +###################################################################### +#### The following target is to create a CIAO distribution +#### It just delegates to our well known target +##################################################################### +CIAO: $(allsources) + + +.PHONY: show_controlled_files show_release_files show_release_lib_files + +show_controlled_files: + @echo $(CONTROLLED_FILES) + +show_release_files: + @echo $(RELEASE_FILES) + +show_release_lib_files: + @echo "" + +show_release_tag_files: + @echo "" + +CIAO-INSTALL: CIAO-INSTALL.html + @lynx -dump $< > CIAO-INSTALL + diff --git a/modules/CIAO/VERSION b/modules/CIAO/VERSION new file mode 100644 index 00000000000..9b7e1847a5c --- /dev/null +++ b/modules/CIAO/VERSION @@ -0,0 +1,11 @@ +This is CIAO version 0.7.5, released Sun Nov 29 13:06:02 CST 2009 + +If you have any problems with or questions about CIAO, please send +e-mail to the CIAO mailing list (ciao-users@cs.wustl.edu), using the +form found in the file CIAO/PROBLEM-REPORT-FORM. To ensure that you +see responses, please do one of the following: + + 1) Subscribe to the ciao-users mail list, by sending email with + contents "subscribe ciao-users" to majordomo@cs.wustl.edu. + + 2) Or, monitor the comp.soft-sys.ace newsgroup for responses. diff --git a/modules/CIAO/bin/PerlCIAO/TestUtils.base b/modules/CIAO/bin/PerlCIAO/TestUtils.base new file mode 100644 index 00000000000..7e68a521d2f --- /dev/null +++ b/modules/CIAO/bin/PerlCIAO/TestUtils.base @@ -0,0 +1,3 @@ +processes +files +wd diff --git a/modules/CIAO/bin/PerlCIAO/TestUtils.pm b/modules/CIAO/bin/PerlCIAO/TestUtils.pm new file mode 100644 index 00000000000..6cb4ca22fe7 --- /dev/null +++ b/modules/CIAO/bin/PerlCIAO/TestUtils.pm @@ -0,0 +1,323 @@ + +#------------------------------------------------------------------------ +# class: TestUtils +# Author: Stoyan Paunov +# +# Description: This is a class to help us write better and more manage- +# able test utilities. Usually when creating a test in +# CIAO it has to do with deploying a number of managers +# and failure to deploy any process means failure of the +# test. This test utility class takes care of the error +# handling and clean-up and side of testing and allows +# the test writer to concentrate on the core logic. +# These are the main advantages of the TestUtils class: +# --> Semi-Automatic error handling +# --> Automatic process shutdown and clean-up +# --> Semi-Automatic file (IOR) deletion +# --> Location independent tests +# --> Clean and concise code base +# --> Manageable test utility suites +#------------------------------------------------------------------------ + +# class TestUtils +sub new; +sub DESTROY; +sub cleanup; +sub goto_dir; +sub spawn; +sub terminate; +sub required_file; +sub required_files; +sub mark_file; +sub mark_files; +sub remove_file; +sub remove_files; +sub cleanup_files; +sub cleanup_processes; + +package TestUtils; +use PerlCIAO::TestUtils_Base; +use strict; +our @ISA = qw(TestUtils_Base); # inherits from TestUtils_Base + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::Run_Test; +use Cwd; + +#------------------------------------------------------------------------ +# Constructor +#------------------------------------------------------------------------ +sub new { + my $class = shift; + + #call the constructor of the parent class, TestUtils_Base. + my $self = $class->SUPER::new(); + + $self->{_wd} = getcwd; + + bless $self, $class; + return $self; +} + +#------------------------------------------------------------------------ +# Destructor: performs clean-up +#------------------------------------------------------------------------ + +sub DESTROY { + my $self = shift; + + #$self->cleanup (); check the CLEAN-UP description for explanation +} + +#------------------------------------------------------------------------ +# Cleanup: This fuction kills the spawned processes and deletes the +# marked files. Optionally, once the cleanup is done it will +# cause the program to exit, iff an exit code is specified. +# +# +# NOTE: You need to call the cleanup () although it is called +# in the destructor because this class is a wrapper around +# PerlACE::Run_Test which also keep some internal state +# and tries to do some clean-up. However its destructor +# is called before this one, and this results in some +# errors. +#------------------------------------------------------------------------ + +sub cleanup { + my $self = shift; + my $exit_code = shift; + + print "Performing clean-up ...\n"; + + $self->cleanup_files (); + $self->cleanup_processes (); + + print "Cleanup = DONE\n"; + + chdir $self->wd (); + + if (defined ($exit_code)) { + exit ($exit_code); + } +} + +#------------------------------------------------------------------------ +# Goto_dir: This function allows you to change the current working +# directory. Note that the class returns to the original +# working directory upon exit. +#------------------------------------------------------------------------ + +#TODO: might want to push the dir to some stack +sub goto_dir { + my $self = shift; + my $dir = shift; + + if (! (chdir $dir)) { + print STDERR "Failed to change directory to: $dir"; + $self->cleanup (); + } + +} + +#------------------------------------------------------------------------ +# Spawn: This function is used to spawn a process. It takes a descriptive +# name under which it stores the process, the command line and the +# arguments needed by the command. Optionally, you could specify +# a timeout based on which the process would be spawned and if +# it has not terminated after timeout seconds it will be killed. +# If a failure occurs the function will perform clean-up and +# terminate the program. +#------------------------------------------------------------------------ + +sub spawn { + my $self = shift; + my $name = shift; + my $cmd = shift; + my $args = shift; + my $timeout = shift; + + if (!defined ($self->processes ())) { + $self->{_processes} = {}; + } + + my $process = new PerlACE::Process ($cmd, $args); + + if (defined ($timeout)) { + if ((my $ret = $process->SpawnWaitKill ($timeout)) == -1) { + print STDERR "ERROR: Process $name returned $ret.\n"; + $self->cleanup (1); + } + } + else { + if ($process->Spawn () == -1) { + $process->Kill (); + #just in case, lets add it to the process list + $self->processes->{$name} = $process; + print STDERR "ERROR: Failure to spawn $name.\n"; + $self->cleanup (1); + } + } + + $self->processes->{$name} = $process; + return $process; +} + +#------------------------------------------------------------------------ +# Terminate: This function takes in the descriptive process name passed +# to Spawn, looks up the process corresponding to it and +# kills it. +#------------------------------------------------------------------------ + +sub terminate { + my $self = shift; + my $pname = shift; + + $self->processes ()->{$pname}->Kill (); + $self->processes ()->{$pname}->TimedWait (1); + + print STDERR "$pname teminated!\n"; +} + +#------------------------------------------------------------------------ +# Required_file: This function checks if a required file is present in +# the current working directory. If the file is missing +# it performs cleanup and causes the program to exit. +#------------------------------------------------------------------------ + +sub required_file { + my $self = shift; + my $file = shift; + + if (PerlACE::waitforfile_timed + ($file, $PerlACE::wait_interval_for_process_creation) == -1) { + + print STDERR + "ERROR: Required file $file could not be found.\n"; + + $self->cleanup (1); + } + return 1; +} + +#------------------------------------------------------------------------ +# Required_filez: This function does the same as required_file above +# except that it works on a reference (REF) to a list +# of required files. +#------------------------------------------------------------------------ + +sub required_files { + my $self = shift; + my $files = shift; + my $pname = shift; + + foreach my $file (@{$files}) { + + if (PerlACE::waitforfile_timed + ($file, $PerlACE::wait_interval_for_process_creation) == -1) { + + print STDERR + "ERROR: Required file $file could not be found.\n"; + + $self->cleanup (1); + } + } + return 1; +} + +#------------------------------------------------------------------------ +# Mark_file: This function marks a file from the current working +# directory for deletion. Once the file is marked it will be +# deleted upon program termination. If the file cannot be +# found, it is ignored. +#------------------------------------------------------------------------ + +sub mark_file { + my $self = shift; + my $file = shift; + + if (!defined $self->files ()) { + $self->{_files} = []; + } + + push @{$self->files ()}, $file; +} + +#------------------------------------------------------------------------ +# Mark_filez: This function does the same as mark_file above except +# that it works on a reference (REF) to an array/list of +# required files. +#------------------------------------------------------------------------ + +sub mark_files { + my $self = shift; + my $files = shift; + + if (!defined $self->files ()) { + $self->{_files} = []; + } + + foreach my $file (@{$files}) { + push @{$self->files ()}, $file; + } +} + +#------------------------------------------------------------------------ +# Remove_file: This fuction removes a file from the current working +# directory. If the file is not there, it is ignored. +#------------------------------------------------------------------------ + +sub remove_file { + my $self = shift; + my $file = shift; + + my $path = PerlACE::LocalFile ($file); + unlink $path; +} + +#------------------------------------------------------------------------ +# Remove_filez: This fuction removes a list of file from the current +# working directory. It takes a REF of a list of files +# and ignores files which are not found. +#------------------------------------------------------------------------ + +sub remove_files { + my $self = shift; + my $files = shift; + + foreach my $file (@{$files}) { + my $path = PerlACE::LocalFile ($file); + unlink $path; + } +} + +#------------------------------------------------------------------------ +# Cleanup_files: clean us the files :) +#------------------------------------------------------------------------ + +sub cleanup_files { + my $self = shift; + + if (defined ($self->files ())) { + foreach my $file (@{$self->files ()}) { + $self->remove_file ($file); + } + } +} + +#------------------------------------------------------------------------ +# Cleanup_processes: clean us the processes :) +#------------------------------------------------------------------------ + +sub cleanup_processes { + my $self = shift; + + if (defined ($self->processes ())) { + foreach my $pname ( keys %{$self->processes ()}) { + $self->terminate ($pname); + delete ($self->processes ()->{$pname}); + } + } +} + +#return value of the class +1; \ No newline at end of file diff --git a/modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm b/modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm new file mode 100644 index 00000000000..be0726946c9 --- /dev/null +++ b/modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm @@ -0,0 +1,78 @@ +#File generated by C:\ACE_wrappers_devel\ACE_wrappers\TAO\CIAO\bin\PerlCIAO\generate_container.pl. +#Input file: TestUtils.base. +#Code generator author: Stoyan Paunov +# + +#class TestUtils_Base +package TestUtils_Base; +use strict; + +#Class constructor :) +sub new { + my ($class) = @_; + + #Create a reference to an anonymous hash + my $self = { + _processes => undef, + _files => undef, + _wd => undef + }; + + #Bless the hash. + bless $self, $class; + return $self; +} + +#accessor/mutator method for processes +sub processes { + my ( $self, $processes ) = @_; + + $self->{_processes} = $processes + if defined ($processes); + + return $self->{_processes}; +} + +#accessor/mutator method for files +sub files { + my ( $self, $files ) = @_; + + $self->{_files} = $files + if defined ($files); + + return $self->{_files}; +} + +#accessor/mutator method for wd +sub wd { + my ( $self, $wd ) = @_; + + $self->{_wd} = $wd + if defined ($wd); + + return $self->{_wd}; +} + +#print method for the class +sub print { + my ($self) = @_; + + my $f; + + $f = defined ($self->{_processes}) + ? $self->{_processes} : "not defined"; + printf ("processes: %s\n", $f); + + $f = defined ($self->{_files}) + ? $self->{_files} : "not defined"; + printf ("files: %s\n", $f); + + $f = defined ($self->{_wd}) + ? $self->{_wd} : "not defined"; + printf ("wd: %s\n", $f); + +} + +#class return value +1; + diff --git a/modules/CIAO/bin/PerlCIAO/generate_container.pl b/modules/CIAO/bin/PerlCIAO/generate_container.pl new file mode 100755 index 00000000000..c56c03ea300 --- /dev/null +++ b/modules/CIAO/bin/PerlCIAO/generate_container.pl @@ -0,0 +1,126 @@ +#!/usr/bin/perl +# +# $Id$ +# +# The above line is for compatibility /w Linux. Windows uses the .pl extension. +# Author: Stoyan Paunov +# Purpose: Generate a container class with mutator/accessor methods +# The idea is to use this class as a base class in the +# inheritance hierarchy. This way we can evolve the base +# container independently from the rest of the code! +# + +use strict; + +die "Usage: $0 \n" + if not defined $ARGV[0]; + +die "Usage: $0 \n" + if not defined $ARGV[1]; + +my $module_name = $ARGV[0]; +my $fields = $ARGV[1]; + +open (FIELDS, $fields) or die "Failed opening $fields\n"; + +my @fields = ; +close FIELDS; + +my $field; + +print "\#File generated by $0.\n"; +print "\#Input file: $fields.\n"; +print "\#Code generator author: Stoyan Paunov\n\#\n\n"; + +print "\#class $module_name\n"; +print "package $module_name;\n"; +print "use strict;\n\n"; +print "\#Class constructor :)\n"; +print "sub new {\n"; +print " my (\$class) = \@_;\n\n"; +print " \#Create a reference to an anonymous hash\n"; +print " my \$self = {\n"; + +my $count = 0; +my $end = $#fields; + +#generate initialization code +foreach $field (@fields) +{ + if ($field =~ /^$/ ) # empty line + { + next; + } + + chomp ($field); + + if ($count == $end) + { + printf (" _\%-14s => undef\n", $field); + next; + } + printf (" _\%-14s => undef,\n", $field); + + + $count++ +} + +print " };\n\n"; +print " \#Bless the hash.\n"; +print " bless \$self, \$class;\n"; +print " return \$self;\n"; +print "}\n\n"; + +#Code to generate the accessor and mutator + +foreach $field (@fields) +{ + if ($field =~ /^$/ ) # empty line + { + next; + } + + chomp ($field); + + print "\#accessor/mutator method for $field\n"; + print "sub $field {\n"; + print " my ( \$self, \$$field ) = \@_;\n\n"; + print " \$self->{_$field} = \$$field\n"; + print " if defined (\$$field);\n\n"; + print " return \$self->{_$field};\n"; + print "}\n\n"; + +} + + +print "\#print method for the class\n"; +print "sub print {\n"; +print " my (\$self) = \@_;\n\n"; + +print " my \$f;\n\n"; + +#Code to generate a print method which dumps the object state +foreach $field (@fields) +{ + if ($field =~ /^$/ ) # empty line + { + next; + } + + chomp ($field); + print " \$f = defined (\$self->{_$field}) \n"; + print " ? \$self->{_$field} : \"not defined\";\n"; + print " printf (\"$field: %s\\n\", \$f);\n\n"; + +} + + + +print "}\n\n"; + +print "\#class return value \n1;\n\n"; + + + + + diff --git a/modules/CIAO/bin/PerlCIAO/perlciao.mpc b/modules/CIAO/bin/PerlCIAO/perlciao.mpc new file mode 100644 index 00000000000..681f977300f --- /dev/null +++ b/modules/CIAO/bin/PerlCIAO/perlciao.mpc @@ -0,0 +1,10 @@ + +// $Id$ + +project(PerlCIAO) : script { + Script_Files { + TestUtils.pm + TestUtils_Base.pm + } + custom_only=1 +} diff --git a/modules/CIAO/bin/ciao_tests.lst b/modules/CIAO/bin/ciao_tests.lst new file mode 100644 index 00000000000..7c7fad7df50 --- /dev/null +++ b/modules/CIAO/bin/ciao_tests.lst @@ -0,0 +1,64 @@ +# $Id$ +# +# This is the list of run_test.pl's that need to be run by +# auto_run_tests.pl. +# Each line has its own test, and a test can be followed by a +# list of configurations it does _not_ run on. +# +# Example: TAO\examples\foo\run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST +# +TAO/CIAO/examples/Hello/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/examples/BasicSP/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/examples/Null_Component/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/examples/Hello/descriptors/run_test_without_ns.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +#TAO/CIAO/examples/Hello/descriptors_RTCCM/rt_run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO RT_CAPABLE !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3/Events/Any/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +#TAO/CIAO/DevGuideExamples/Messenger/descriptors/run_test.pl: !LabVIEW_RT !WinCE !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO !ST !NOXERCES +TAO/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3_to_XMI/XMI_For_Array/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3_to_XMI/XMI_For_Native/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl: !FIXED_BUGS_ONLY !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/tests/IDL_Test/Double_Inherited_Component/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE +TAO/CIAO/DAnCE/tests/CIAO/CommandlinePassage/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/tests/CIAO_ComponentServer/Activator/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/tests/CIAO_ComponentServer/Basic/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/tests/CIAO_ComponentServer/SimpleComponent/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE NDDS +TAO/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST !LabVIEW_RT !WinCE NDDS +TAO/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/tests/Bug_3769_Regression/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST +TAO/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS +TAO/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NOXERCES !ACE_FOR_TAO !ST NDDS diff --git a/modules/CIAO/bin/generate_component_mpc.pl b/modules/CIAO/bin/generate_component_mpc.pl new file mode 100755 index 00000000000..dc02c0eba4b --- /dev/null +++ b/modules/CIAO/bin/generate_component_mpc.pl @@ -0,0 +1,307 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# Create a MPC file content for a single component implementation. + +use Getopt::Std; + +############################################################################## +# Grab the options + +$flags = join (" ", @ARGV); + +if (!getopts ('np:l:c:u:b:ho:') || $opt_h) { + print "generate_component_mpc.pl [-h] component_name\n"; + print "\n"; + print " -h print help message explaining various options\n"; + print " -p Dependent component name\n"; + print " -l Dependent component path (libpaths)\n"; + print " -o Component output path (libout)\n"; + print " -n Suppress component make/project\n"; + print " -c Create a client makefile\n"; + print " -u Unique project name prefix (if not defined, name for -p flag will be used). \n"; + print " -b common base project(s) for all generated projects\n"; + print "\n"; + print "generate_component_mpc creates and save a minimum mpc file\n"; + print "called $com_name.mpc that is needed for a single component implementation\n"; + exit (1); +} + +if ($#ARGV < 0) { + print STDERR "No component_name specified, use -h for help\n"; + exit (1); +} + +$com_name = shift @ARGV; +$UCOM_NAME = uc $com_name; + +############################################################################## +# Prologue + +if (defined $opt_b) { + $base_projs = ", $opt_b "; +} else { + $base_projs = " "; +} + +if (defined $opt_n) { + $svr_suffix = "_skel"; +} +else { + $svr_suffix = "_svnt"; +} + +$USVR_SUFFIX = uc $svr_suffix; + +if (defined $opt_p) { + $stub_depend = "$opt_p".'_stub'; + $lib_depend = "$opt_p".'_skel '."$opt_p".'_stub'; + + $svr_plibs ='\ + '."$opt_p".'_skel \ + '."$opt_p".'_stub'; +} +else { + $svr_plibs = ""; +} + +$unique_prefix = ""; + +if (defined $opt_u) { + $unique_prefix = "$opt_u" . "_"; +} +elsif (defined $opt_p) { + $unique_prefix = "$opt_p" . "_"; +} + +if (defined $opt_p) { + $svr_p_after = "$opt_p".'_skel'; +} + +if (defined $opt_l) { + $lib_paths = "libpaths += $opt_l"; +} + +if (defined $opt_o) { + $lib_out = "libout = $opt_o"; +} + +if (defined $opt_c) { + $client_def = +'project ('."$unique_prefix"."$opt_c".') : ccm_stub, valuetype ' . "$base_projs" . ' { + exename = '."$opt_c".' + after += '."$unique_prefix"."$com_name".'_stub + libs += '."$com_name".'_stub '."$stub_depend"." + $lib_paths"." + $lib_out".' + IDL_Files { + } + + Source_Files { + '."$opt_c".'.cpp + } + + Header_Files { + } + + Inline_Files { + } +} +'; +} + +if (! defined $opt_n) { + $lem_gen = +' +project('."$unique_prefix"."$com_name".'_lem_gen) : ciaoidldefaults ' . "$base_projs" . ' { + after += '."$unique_prefix"."$com_name".'_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro='."$UCOM_NAME".'_LEM_STUB_Export \ + -Wb,stub_export_include='."$com_name".'_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files {'." + $com_name".'E.idl + } +} +'.' +project('."$unique_prefix"."$com_name".'_lem_stub) : ccm_svnt ' . "$base_projs" . ' { + after += '."$unique_prefix"."$com_name".'_lem_gen '."$unique_prefix"."$com_name".'_stub '."$stub_depend".' + libs += '."$stub_depend".' '."$com_name".'_stub'." + $lib_paths"." + $lib_out".' + sharedname = '."$com_name".'_lem_stub + dynamicflags = '."$UCOM_NAME".'_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + '."$com_name".'EC.cpp + } + + Header_Files { + '."$com_name".'EC.h + '."$com_name".'_lem_stub_export.h + } + + Inline_Files { + '."$com_name".'EC.inl + } +} +'; + + $component_def = +' +project('."$unique_prefix"."$com_name".'_exec) : ciao_executor ' . "$base_projs" . ' { + after += '."$unique_prefix"."$com_name".'_lem_stub '."$unique_prefix"."$com_name".'_stub + sharedname = '."$com_name".'_exec + libs += '."$com_name".'_stub '."$com_name".'_lem_stub '."$stub_depend + $lib_paths"." + $lib_out".' + dynamicflags = '."$UCOM_NAME".'_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files {'." + $com_name".'_exec.cpp + } + + Header_Files {'." + $com_name".'_exec.h'." + $com_name".'_exec_export.h + } + + Inline_Files { + } +} +'; +} + +$cli_idlflags = + 'idlflags += -Wb,stub_export_macro='."$UCOM_NAME".'_STUB_Export \ + -Wb,stub_export_include='."$com_name".'_stub_export.h \ + -Wb,skel_export_macro='."$UCOM_NAME"."$USVR_SUFFIX".'_Export \ + -Wb,skel_export_include='."$com_name"."$svr_suffix".'_export.h \ + -Wb,exec_export_macro='."$UCOM_NAME".'_EXEC_Export \ + -Wb,exec_export_include='."$com_name".'_exec_export.h \ + -Gxhex -Gxhsk -Gxhst' +; + +$cli_base = "ccm_stub"; +$svr_base = "ciao_servant"; +$svr_after = ""; + +$svr_libs = "$com_name".'_stub '. "$com_name".'_lem_stub '; + +if (defined $opt_n) { + $svr_after = "$unique_prefix"."$com_name".'_stub'; + + $svr_libs = "$com_name".'_stub +'; + + $svr_src = +' + '."$com_name".'S.cpp +'; + + $svr_hdr = +' + '."$com_name".'S.h + '."$com_name".'_skel_export.h +'; + + $svr_base = "ciao_executor"; +} +else { + + $svr_idl = "$com_name".'E.idl'; + + $svr_src = +' + '."$com_name".'S.cpp + '."$com_name".'_svnt.cpp +'; + + $svr_hdr = +' + '."$com_name".'S.h + '."$com_name".'_svnt.h + '."$com_name".'_svnt_export.h +'; +} + +$mpc_template = '// $Id$ +// This file is generated with "'."generate_component_mpc.pl $flags".'" + +project('."$unique_prefix"."$com_name".'_idl_gen) : componentidldefaults ' . "$base_projs" . ' { + custom_only = 1 + '."$cli_idlflags".' + + IDL_Files { + '."$com_name".'.idl + } +} +'."$lem_gen".' +project('."$unique_prefix"."$com_name".'_stub) : '."$cli_base ". "$base_projs" . ' { + after += '."$unique_prefix"."$com_name".'_idl_gen '."$stub_depend".' + libs += '."$stub_depend"." + $lib_paths"." + $lib_out".' + sharedname = '."$com_name".'_stub + dynamicflags = '."$UCOM_NAME".'_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + '."$com_name".'C.cpp + } + + Header_Files { + '."$com_name".'C.h + '."$com_name".'_stub_export.h + } + + Inline_Files { + '."$com_name".'C.inl + } +} +'."$component_def".' + +project('."$unique_prefix"."$com_name"."$svr_suffix".') : '."$svr_base ". "$base_projs" . ' { + after += '."$svr_p_after "."$svr_after".' '."$unique_prefix"."$com_name".'_lem_stub'.' + sharedname = '."$com_name"."$svr_suffix".' + libs += '."$svr_libs $svr_plibs + $lib_paths"." + $lib_out".' + dynamicflags = '."$UCOM_NAME"."$USVR_SUFFIX".'_BUILD_DLL + '.' + IDL_Files { + } + + Source_Files {'."$svr_src".' } + + Header_Files {'."$svr_hdr".' } + + Inline_Files { + '."$com_name".'S.inl + } +} + +'."$client_def +"; + +############################################################################## +# Static Stuff + +############################################################################## +# Print the stuff out + + +# MPC files +open (MPCFILE, ">", "$com_name".".mpc"); +print MPCFILE $mpc_template; diff --git a/modules/CIAO/bin/update_package.py b/modules/CIAO/bin/update_package.py new file mode 100755 index 00000000000..5719b0c7627 --- /dev/null +++ b/modules/CIAO/bin/update_package.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python +""" This script facilitates the update of binaries in a given DAnCE package. + Note that it DOES NOT modify meta-data, only blindly replacing existing + binaries that match by name EXACTLY""" + +#Globals +verbose = False +take_action = True + +def parse_args (): + from optparse import OptionParser + + parser = OptionParser ("usage: %prog [options] package_to_update") + + parser.add_option ("-I", "--include-dir", dest="include_dir", action="store", + help="Specify a path to search for new implementations/descriptors", + default="./impl/") + parser.add_option ("-o", "--output-dir", dest="out_dir", action="store", + help="Specify the directory to write updated packages", + default="./new_packages/") + parser.add_option ("-f", "--out-file", dest="out_file", action="store", + help="Specify the name of the file to output. Default is same name", + default=None) + parser.add_option ("-v", "--verbose", action="store_true", default=False, + dest="verbose", help="Print verbose debugging output") + parser.add_option ("-n", "--no-action", action="store_false") + (opts, args) = parser.parse_args () + + if len(args) != 1: + parser.error ("Must specify exactly one package to update") + + if opts.out_file is None: + opts.out_file = os.path.basename (args[0]) + + return (opts, args) + +def vprint (string): + if verbose: + print string + +"""Caches all files in include paths""" +def cache_files (dirs): + files = dict () + vprint ("Building file list") + for item in dirs: + for root, dirs, files in os.walk (item, topDown=True): + for item in files: + fullpath = os.join (root, item) + if item not in files: + vprint ("Adding " + item + " as " + fullpath) + files[item] = fullpath + else: + vprint ("Skipping " + fullpath + " because " + item + " has been found earlier") + + return files + +""" Update a package from infile, a ZipFile object to outfile, a ZipFile object, + using files in the dictionary files""" +def update_package (infile, outfile, files): + orig_list = infile.namelist () + + for item in filelist: + vprint ("Considering " + item + " from source package") + + if item[-1] == '/': + vprint ("\tSkipping because its a directory") + else: + bn_item = os.path.basename (item) + + if bn_item in files.keys (): + vprint ("\tFound replacement: " + files[bn_item]) + vprint ("\tPerforming replacement....") + + if take_action: + ofile.write (files[bn_item], item) + else: + print "\tAction: Replace " + item + " with " + item + continue # next item + + if take_action: + ofile.writestr (item, zfile.read (item)) + else: + print "\tAction: Migrate " + item + " unchanged" + +def main (): + opts, args = parse_args () + + from zipfile import ZipFile + + ## Construct output file + of_name = os.path.join (opts.out_path, opts.out_file) + vprint ("Chose " + of_name + " as output file") + + #make sure out_path exists + if os.path.exists (os.path.basename (of_name)): + vprint ("Destination path does not exist, creating....") + if take_action: + os.mkdir (os.path.basename (of_name)) + else: + print "Action: create path " + os.path.basename (of_name) + + # Create zipfile objects + infile = ZipFile (args[0], 'a') + outfile = None + + if take_action: + outfile = ZipFile (of_name, 'w') + + # cache include directories + files = cache_files (opts.include_dirs) + + # Perform update + update_package (infile, outfile, files) + + print "Package successfully updated" + +if __name__ == "__main__": + main (opts, args) diff --git a/modules/CIAO/bin/valgrind_nodedaemon.py b/modules/CIAO/bin/valgrind_nodedaemon.py new file mode 100755 index 00000000000..a0845864370 --- /dev/null +++ b/modules/CIAO/bin/valgrind_nodedaemon.py @@ -0,0 +1,87 @@ +#!/usr/bin/python +# $Id$ +# +# Runs a NodeManager (optionally) under valgrind with the NodeApplication (optionally) under valgrind. + +from optparse import OptionParser +from os import system +from os import environ + +def parse_args (): + + parser = OptionParser (usage="usage: valgrind_nodemanager [options] ") + + parser.add_option ("-v", "--verbose", dest="verbose", action="store_true", + help="Output the command that is to be executed.", + default=False) + parser.add_option ("-l","--log", dest="log_file", action="store", + help="Log all output to a given file.", + default="") + parser.add_option ("-t", "--tool", dest="valgrind_tool", action="store", + help="Specify the valgrind tool to run", + default="memcheck") + parser.add_option ("--nm", dest="node_manager", action="store_true", + help="Run valgrind on the NodeManager", + default=False) + parser.add_option ("--na", dest="node_application", action="store_true", + help="Run valgrind on the NodeApplication", + default=False) + parser.add_option ("--valgrind_args", dest="valgrind_args", action="store", + help="Additional arguments to pass to valgrind", + default="") + parser.add_option ("-g", dest="gen_supp", action="store_true", + help="Generate suppression lines", + default=False) + parser.add_option ("-s", dest="supp_file", action="store", + help="Suppression file for Valgrind to use", + default="") + parser.add_option ("--lc", dest="leak_check", action="store_true", + help="Perform a full leak check", + default=False) + + return parser.parse_args () + +import os + +def main (): + (option, args) = parse_args () + + ciao_root = environ['CIAO_ROOT'] + + # Build the valgrind command + valgrind_command = "valgrind --tool=" + option.valgrind_tool + ' ' +\ + option.valgrind_args + ' ' + + if option.gen_supp: + valgrind_command += "--gen-suppressions=all " + + if option.supp_file != "": + valgrind_command += "--suppressions=\"" + options.supp_file + '" ' + + if option.leak_check: + valgrind_command += "--leak-check=full " + + # Build the actual command + command = "" + + if option.node_manager: + command += valgrind_command + + command += ciao_root + "/DAnCE/NodeManager/NodeManager " +\ + "-ORBEndpoint iiop://localhost:" + args[0] + ' ' + + if option.node_application: + command += "-d 60 -s\"" + valgrind_command + else: + command += " -s \"" + + command += ciao_root + "/DAnCE/NodeApplication/NodeApplication" + '"' + + print command + + system (command) + +if __name__ == "__main__": + main () + + diff --git a/modules/CIAO/ccm/CCM.mpc b/modules/CIAO/ccm/CCM.mpc new file mode 100644 index 00000000000..99a5296f72c --- /dev/null +++ b/modules/CIAO/ccm/CCM.mpc @@ -0,0 +1,182 @@ +// $Id$ + +project(CCM_stub_idl) : ciaolib_with_idl, valuetype { + idlflags += -Wb,stub_export_include=CCM_Stub_Export.h + idlflags += -Wb,stub_export_macro=CCM_Stub_Export + idlflags += -Wb,skel_export_include=CCM_Svnt_Export.h + idlflags += -Wb,skel_export_macro=CCM_Svnt_Export + custom_only = 1 + IDL_Files { + idlflags += -SS -Sci + CCM_Base.idl + CCM_Component.idl + CCM_Exceptions.idl + } + + IDL_Files { + idlflags += -SS + CCM_Cookie.idl + CCM_Enumeration.idl + } + + IDL_Files { + idlflags += -Ssi -Sci + Components.idl + } + + IDL_Files { + CCM_HomeConfiguration.idl + CCM_StandardConfigurator.idl + CCM_Home.idl + CCM_Homes.idl + CCM_Object.idl + CCM_PrimaryKeyBase.idl + } + + IDL_Files { + idlflags += -Ssi + CCM_HomeFinder.idl + CCM_Configurator.idl + CCM_KeylessCCMHome.idl + CCM_Navigation.idl + CCM_Receptacle.idl + } + + IDL_Files { + CCM_Events.idl + CCM_EventBase.idl + CCM_EventConsumerBase.idl + } + +} + +project(CCM_stub) : ciaolib_with_idl, ciao_output, valuetype, ifr_client { + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + dynamicflags = CCM_STUB_BUILD_DLL + after += CCM_stub_idl + IDL_Files { + } + + Source_Files { + CCM_BaseC.cpp + CCM_EventsC.cpp + CCM_EventBaseC.cpp + CCM_EventConsumerBaseC.cpp + CCM_ComponentC.cpp + CCM_EnumerationC.cpp + CCM_HomeC.cpp + CCM_HomesC.cpp + CCM_ConfiguratorC.cpp + CCM_HomeConfigurationC.cpp + CCM_KeylessCCMHomeC.cpp + CCM_StandardConfiguratorC.cpp + CCM_HomeFinderC.cpp + CCM_NavigationC.cpp + CCM_ReceptacleC.cpp + CCM_CookieC.cpp + CCM_ObjectC.cpp + CCM_PrimaryKeyBaseC.cpp + CCM_ExceptionsC.cpp + ComponentsC.cpp + } +} + +project(CCM_svnt_idl) : ciaolib_with_idl, valuetype { + idlflags += -Wb,export_include=CCM_Svnt_Export.h + idlflags += -Wb,export_macro=CCM_Svnt_Export + custom_only = 1 + IDL_Files { + idlflags += -SS -Sci \ + -Wb,versioning_begin=TAO_BEGIN_VERSIONED_NAMESPACE_DECL \ + -Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL + Security.idl + } + + IDL_Files { + idlflags += -SS -Sci + CCM_Context.idl + CCM_CCMException.idl + CCM_EntityComponent.idl + CCM_EntityContext.idl + } + + IDL_Files { + idlflags += -SS + CCM_CCM2Context.idl + CCM_ProxyHomeRegistration.idl + CCM_Session2Context.idl + CCM_Transaction.idl + CosPersistentState.idl + CCM_Container.idl + CCM_SessionContext.idl + CCM_SessionComponent.idl + CCM_Container_Ex.idl + CCM_StateIdFactory.idl + CCM_Entity2Context.idl + CCM_ComponentId.idl + CCM_ExecutorLocator.idl + CCM_EnterpriseComponent.idl + CCM_SessionSynchronization.idl + CCM_HomeRegistration.idl + CCM_HomeExecutorBase.idl + } + +} + +project(CCM_svnt) : orbsvcslib, orbsvcs_output \ + , portableserver \ + , valuetype \ + , ifr_client \ + , codecfactory \ + , pi \ + , ccm_stub \ + , avoids_corba_e_compact \ + , avoids_corba_e_micro \ +{ + dynamicflags = CCM_SVNT_BUILD_DLL + after += CCM_svnt_idl + IDL_Files { + } + + Source_Files { + CCM_TransactionC.cpp + CosPersistentStateC.cpp + CCM_ContainerC.cpp + CCM_SessionContextC.cpp + CCM_SessionComponentC.cpp + CCM_EnterpriseComponentC.cpp + CCM_SessionSynchronizationC.cpp + CCM_CCMExceptionC.cpp + CCM_ContextC.cpp + SecurityC.cpp + CCM_Container_ExC.cpp + CCM_StateIdFactoryC.cpp + CCM_ComponentIdC.cpp + CCM_Entity2ContextC.cpp + CCM_ExecutorLocatorC.cpp + CCM_ProxyHomeRegistrationC.cpp + CCM_Session2ContextC.cpp + CCM_CCM2ContextC.cpp + CCM_HomeRegistrationC.cpp + CCM_HomeExecutorBaseC.cpp + CCM_EntityContextC.cpp + CCM_EntityComponentC.cpp + CCM_EventsS.cpp + CCM_EventConsumerBaseS.cpp + CCM_EventBaseS.cpp + CCM_ConfiguratorS.cpp + CCM_HomeConfigurationS.cpp + CCM_KeylessCCMHomeS.cpp + CCM_StandardConfiguratorS.cpp + CCM_HomeS.cpp + CCM_HomesS.cpp + CCM_ObjectS.cpp + CCM_PrimaryKeyBaseS.cpp + CCM_HomeFinderS.cpp + CCM_NavigationS.cpp + CCM_ReceptacleS.cpp + ComponentsS.cpp + } +} + diff --git a/modules/CIAO/ccm/CCM_Base.idl b/modules/CIAO/ccm/CCM_Base.idl new file mode 100644 index 00000000000..d5fdac61919 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Base.idl @@ -0,0 +1,14 @@ +// $Id$ + +#if !defined (CCM_BASE_IDL) +#define CCM_BASE_IDL + +module Components +{ + typeprefix Components "omg.org"; + + exception InvalidConnection {}; + exception AlreadyConnected {}; + exception NoConnection {}; +}; +#endif /* CCM_BASE_IDL */ diff --git a/modules/CIAO/ccm/CCM_CCM2Context.idl b/modules/CIAO/ccm/CCM_CCM2Context.idl new file mode 100644 index 00000000000..eedb43ff5ca --- /dev/null +++ b/modules/CIAO/ccm/CCM_CCM2Context.idl @@ -0,0 +1,34 @@ +// $Id$ + +#if !defined (CCM_2CONTEXT_IDL) +#define CCM_2CONTEXT_IDL + +#include "ccm/CCM_Container.idl" +#include "ccm/CCM_HomeRegistration.idl" +#include + +// *************** Extended Container Interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + typedef CosPersistentState::CatalogBase CatalogBase; + typedef CosPersistentState::_TypeId _TypeId; + + exception PolicyMismatch {}; + exception PersistenceNotAvailable {}; + + local interface CCM2Context : CCMContext + { + HomeRegistration get_home_registration (); + + void req_passivate () + raises (PolicyMismatch); + + CatalogBase get_persistence (in _TypeId catalog_type_id) + raises (PersistenceNotAvailable); + }; + +}; +#endif /* CCM_2CONTEXT_IDL */ diff --git a/modules/CIAO/ccm/CCM_CCMException.idl b/modules/CIAO/ccm/CCM_CCMException.idl new file mode 100644 index 00000000000..af076144304 --- /dev/null +++ b/modules/CIAO/ccm/CCM_CCMException.idl @@ -0,0 +1,29 @@ +// $Id$ + +#if !defined (CCM_CCMEXCEPTION_IDL) +#define CCM_CCMEXCEPTION_IDL + +module Components +{ + typeprefix Components "omg.org"; + + enum CCMExceptionReason + { + SYSTEM_ERROR, + CREATE_ERROR, + REMOVE_ERROR, + DUPLICATE_KEY, + FIND_ERROR, + OBJECT_NOT_FOUND, + NO_SUCH_ENTITY, + QOS_ERROR, + REGISTRATION_ERROR, + SERVICE_INSTALLATION_ERROR + }; + + exception CCMException + { + CCMExceptionReason reason; + }; +}; +#endif /* CCM_CCMEXCEPTION_IDL */ diff --git a/modules/CIAO/ccm/CCM_Component.idl b/modules/CIAO/ccm/CCM_Component.idl new file mode 100644 index 00000000000..a579496685f --- /dev/null +++ b/modules/CIAO/ccm/CCM_Component.idl @@ -0,0 +1,11 @@ +// $Id$ + +#if !defined (CCM_COMPONENT_IDL) +#define CCM_COMPONENT_IDL + +#include "ccm/CCM_Events.idl" +#include "ccm/CCM_Home.idl" +#include "ccm/CCM_Object.idl" +#include "ccm/CCM_Enumeration.idl" + +#endif /* CCM_COMPONENT_IDL */ diff --git a/modules/CIAO/ccm/CCM_ComponentId.idl b/modules/CIAO/ccm/CCM_ComponentId.idl new file mode 100644 index 00000000000..c8d8deabdcb --- /dev/null +++ b/modules/CIAO/ccm/CCM_ComponentId.idl @@ -0,0 +1,34 @@ +// $Id$ + +#if !defined (CCM_COMPONENTID_IDL) +#define CCM_COMPONENTID_IDL + +#include "ccm/CCM_StateIdFactory.idl" + +// *************** Extended Container Interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + local interface ComponentId + { + FacetId get_target_facet(); + + SegmentId get_target_segment(); + + StateIdValue get_target_state_id (in StateIdFactory sid_factory) + raises (InvalidStateIdData); + + StateIdValue get_segment_state_id (in SegmentId seg, + in StateIdFactory sid_factory) + raises (InvalidStateIdData); + + ComponentId create_with_new_target (in FacetId new_target_facet, + in SegmentId new_target_segment); + + SegmentDescrSeq get_segment_descrs (in StateIdFactory sid_factory) + raises (InvalidStateIdData); + }; +}; +#endif /* CCM_COMPONENTID_IDL */ diff --git a/modules/CIAO/ccm/CCM_Configurator.idl b/modules/CIAO/ccm/CCM_Configurator.idl new file mode 100644 index 00000000000..6a95548ea1e --- /dev/null +++ b/modules/CIAO/ccm/CCM_Configurator.idl @@ -0,0 +1,21 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.10.1.1 + +#if !defined (CCM_CONFIGURATOR_IDL) +#define CCM_CONFIGURATOR_IDL + +module Components +{ + typeprefix Components "omg.org"; + + exception WrongComponentType {}; + + interface CCMObject; + + interface Configurator + { + void configure (in CCMObject comp) + raises (WrongComponentType); + }; +}; +#endif /* CCM_CONFIGURATOR_IDL */ diff --git a/modules/CIAO/ccm/CCM_Container.idl b/modules/CIAO/ccm/CCM_Container.idl new file mode 100644 index 00000000000..fdefcc1e0f9 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Container.idl @@ -0,0 +1,12 @@ +// $Id$ + +#if !defined (CCM_CONTAINER_IDL) +#define CCM_CONTAINER_IDL + +#include "ccm/CCM_Component.idl" +#include "ccm/CCM_CCMException.idl" +#include "ccm/CCM_HomeExecutorBase.idl" +#include "ccm/CCM_SessionContext.idl" +#include "ccm/CCM_SessionComponent.idl" + +#endif /* CCM_CONTAINER_IDL */ diff --git a/modules/CIAO/ccm/CCM_Container_Ex.idl b/modules/CIAO/ccm/CCM_Container_Ex.idl new file mode 100644 index 00000000000..8a64c1c5679 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Container_Ex.idl @@ -0,0 +1,10 @@ +// $Id$ + +#if !defined (CCM_CONTAINER_EX_IDL) +#define CCM_CONTAINER_EX_IDL + +#include "ccm/CCM_Container.idl" +#include "ccm/CCM_Session2Context.idl" +#include "ccm/CCM_EntityContext.idl" + +#endif /* CCM_CONTAINER_EX_IDL */ diff --git a/modules/CIAO/ccm/CCM_Context.idl b/modules/CIAO/ccm/CCM_Context.idl new file mode 100644 index 00000000000..499c934255e --- /dev/null +++ b/modules/CIAO/ccm/CCM_Context.idl @@ -0,0 +1,45 @@ +// $Id$ + +#if !defined (CCM_CONTEXT_IDL) +#define CCM_CONTEXT_IDL + +#include "ccm/Security.idl" +#include "ccm/CCM_Transaction.idl" +#include "ccm/CCM_Home.idl" +#include "ccm/CCM_CCMException.idl" + +// *************** Basic Container interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + typedef SecurityLevel2::Credentials Principal; + + exception IllegalState {}; + + local interface CCMContext + { + Principal get_caller_principal(); + + CCMHome get_CCM_home(); + + boolean get_rollback_only() + raises (IllegalState); + + Transaction::UserTransaction get_user_transaction() + raises (IllegalState); + + boolean is_caller_in_role (in string role); + + void set_rollback_only() + raises (IllegalState); + + /** + * Added for QoS4CCM + */ + Object resolve_service_reference(in string service_id) + raises (CCMException); + }; +}; +#endif /* CCM_CONTEXT_IDL */ diff --git a/modules/CIAO/ccm/CCM_Cookie.idl b/modules/CIAO/ccm/CCM_Cookie.idl new file mode 100644 index 00000000000..3e7997b482e --- /dev/null +++ b/modules/CIAO/ccm/CCM_Cookie.idl @@ -0,0 +1,18 @@ +/// $Id$ +/// Compliant with OMG 06-04-01 Section 6.5.2.4 + +#if !defined (CCM_COOKIE_IDL) +#define CCM_COOKIE_IDL + +#include "tao/OctetSeq.pidl" + +module Components +{ + typeprefix Components "omg.org"; + + valuetype Cookie + { + private CORBA::OctetSeq cookieValue; + }; +}; +#endif /* CCM_COOKIE_IDL */ diff --git a/modules/CIAO/ccm/CCM_EnterpriseComponent.idl b/modules/CIAO/ccm/CCM_EnterpriseComponent.idl new file mode 100644 index 00000000000..b2470468da0 --- /dev/null +++ b/modules/CIAO/ccm/CCM_EnterpriseComponent.idl @@ -0,0 +1,12 @@ +// $Id$ + +#if !defined (CCM_ENTERPRISECOMPONENT_IDL) +#define CCM_ENTERPRISECOMPONENT_IDL + +module Components +{ + typeprefix Components "omg.org"; + + local interface EnterpriseComponent {}; +}; +#endif /* CCM_CONTAINER_IDL */ diff --git a/modules/CIAO/ccm/CCM_Entity2Context.idl b/modules/CIAO/ccm/CCM_Entity2Context.idl new file mode 100644 index 00000000000..d21772bfb6b --- /dev/null +++ b/modules/CIAO/ccm/CCM_Entity2Context.idl @@ -0,0 +1,35 @@ +// $Id$ + +#if !defined (CCM_ENTITY2CONTEXT_IDL) +#define CCM_ENTITY2CONTEXT_IDL + +#include "ccm/CCM_Session2Context.idl" +#include "ccm/CCM_EntityContext.idl" +#include "ccm/CCM_ComponentId.idl" + +// *************** Extended Container Interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + local interface Entity2Context : EntityContext, CCM2Context + { + ComponentId get_component_id () + raises (IllegalState); + + ComponentId create_component_id (in FacetId target_facet, + in SegmentId target_segment, + in SegmentDescrSeq seq_descrs); + + ComponentId create_monolithic_component_id (in FacetId target_facet, + in StateIdValue sid); + + Object create_ref_from_cid (in CORBA::RepositoryId repid, + in ComponentId cid); + + ComponentId get_cid_from_ref (in Object objref) + raises (BadComponentReference); + }; +}; +#endif /* CCM_ENTITY2CONTEXT_IDL */ diff --git a/modules/CIAO/ccm/CCM_EntityComponent.idl b/modules/CIAO/ccm/CCM_EntityComponent.idl new file mode 100644 index 00000000000..4fb219a7904 --- /dev/null +++ b/modules/CIAO/ccm/CCM_EntityComponent.idl @@ -0,0 +1,38 @@ +// $Id$ + +#if !defined (CCM_ENTITYCOMPONENT_IDL) +#define CCM_ENTITYCOMPONENT_IDL + +#include "ccm/CCM_CCMException.idl" +#include "ccm/CCM_EnterpriseComponent.idl" +#include "ccm/CCM_EntityContext.idl" + +module Components +{ + typeprefix Components "omg.org"; + + local interface EntityComponent : EnterpriseComponent + { + void set_entity_context (in EntityContext ctx) + raises (CCMException); + + void unset_entity_context () + raises (CCMException); + + void ccm_activate () + raises (CCMException); + + void ccm_load () + raises (CCMException); + + void ccm_store () + raises (CCMException); + + void ccm_passivate () + raises (CCMException); + + void ccm_remove () + raises (CCMException); + }; +}; +#endif /* CCM_ENTITYCOMPONENT_IDL */ diff --git a/modules/CIAO/ccm/CCM_EntityContext.idl b/modules/CIAO/ccm/CCM_EntityContext.idl new file mode 100644 index 00000000000..3375c44717d --- /dev/null +++ b/modules/CIAO/ccm/CCM_EntityContext.idl @@ -0,0 +1,22 @@ +// $Id$ + +#if !defined (CCM_ENTITYCONTEXT_IDL) +#define CCM_ENTITYCONTEXT_IDL + +#include "ccm/CCM_Context.idl" +#include "ccm/CCM_Object.idl" + +module Components +{ + typeprefix Components "omg.org"; + + local interface EntityContext : CCMContext + { + Object get_CCM_object () + raises (IllegalState); + + PrimaryKeyBase get_primary_key () + raises (IllegalState); + }; +}; +#endif /* CCM_ENTITYCONTEXT_IDL */ diff --git a/modules/CIAO/ccm/CCM_Enumeration.idl b/modules/CIAO/ccm/CCM_Enumeration.idl new file mode 100644 index 00000000000..406df4dfeca --- /dev/null +++ b/modules/CIAO/ccm/CCM_Enumeration.idl @@ -0,0 +1,24 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 10.3.1.2 + +#if !defined (CCM_ENUMERATION_IDL) +#define CCM_ENUMERATION_IDL + +#include "ccm/CCM_Object.idl" + +module Components +{ + typeprefix Components "omg.org"; + + abstract valuetype Enumeration + { + boolean has_more_elements(); + CCMObject next_element(); + }; + + valuetype DefaultEnumeration : Enumeration + { + private CCMObjectSeq objects; + }; +}; +#endif /* CCM_ENUMERATION_IDL */ diff --git a/modules/CIAO/ccm/CCM_EventBase.idl b/modules/CIAO/ccm/CCM_EventBase.idl new file mode 100644 index 00000000000..d72bb003456 --- /dev/null +++ b/modules/CIAO/ccm/CCM_EventBase.idl @@ -0,0 +1,13 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.6.1.2 + +#if !defined (CCM_EVENTBASE_IDL) +#define CCM_EVENTBASE_IDL + +module Components +{ + typeprefix Components "omg.org"; + + abstract valuetype EventBase {}; +}; +#endif /* CCM_EVENTBASE_IDL */ diff --git a/modules/CIAO/ccm/CCM_EventConsumerBase.idl b/modules/CIAO/ccm/CCM_EventConsumerBase.idl new file mode 100644 index 00000000000..86f4261b8f2 --- /dev/null +++ b/modules/CIAO/ccm/CCM_EventConsumerBase.idl @@ -0,0 +1,46 @@ +// $Id$ +/// NOT Compliant with OMG 06-04-01 Section 6.6.2 + +#if !defined (CCM_EVENTCONSUMERBASE_IDL) +#define CCM_EVENTCONSUMERBASE_IDL + +#include "ccm/CCM_EventBase.idl" +#include "tao/Typecode_types.pidl" +#include "tao/orb_types.pidl" + +module Components +{ + typeprefix Components "omg.org"; + + exception BadEventType + { + CORBA::RepositoryId expected_event_type; + }; + + interface EventConsumerBase + { + void push_event (in EventBase evt) raises (BadEventType); + + /* + * CIAO-specific operation to treat event service as regular event + * sink port. The source_id needs to be passed in to identify the + * source of the publisher port to support event filtering mechanism. + * + * @todo Has to be removed + */ + void ciao_push_event (in EventBase evt, + in string source_id, + in CORBA::TypeCode tc) + raises (BadEventType); + + /* + * CIAO-specific operation to help support the capability + * to subscribe to eventtypes more derived than the type + * consumed. + * + * @todo Has to be removed + */ + boolean ciao_is_substitutable (in string event_repo_id); + }; +}; +#endif /* CCM_EVENTCONSUMERBASE_IDL */ diff --git a/modules/CIAO/ccm/CCM_Events.idl b/modules/CIAO/ccm/CCM_Events.idl new file mode 100644 index 00000000000..96647942518 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Events.idl @@ -0,0 +1,85 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.6.8 + +#if !defined (CCM_EVENTS_IDL) +#define CCM_EVENTS_IDL + +#include "ccm/CCM_Base.idl" +#include "ccm/CCM_Navigation.idl" +#include "ccm/CCM_Receptacle.idl" +#include "ccm/CCM_Cookie.idl" +#include "ccm/CCM_EventBase.idl" +#include "ccm/CCM_EventConsumerBase.idl" + +module Components +{ + typeprefix Components "omg.org"; + + valuetype ConsumerDescription : PortDescription + { + public EventConsumerBase consumer; + }; + typedef sequence ConsumerDescriptions; + + valuetype EmitterDescription : PortDescription + { + public EventConsumerBase consumer; + }; + typedef sequence EmitterDescriptions; + + valuetype SubscriberDescription + { + public Cookie ck; + public EventConsumerBase consumer; + }; + typedef sequence SubscriberDescriptions; + + valuetype PublisherDescription : PortDescription + { + public SubscriberDescriptions consumers; + }; + typedef sequence PublisherDescriptions; + + interface Events + { + EventConsumerBase get_consumer (in FeatureName sink_name) + raises (InvalidName); + + Cookie subscribe (in FeatureName publisher_name, + in EventConsumerBase subscriber) + raises (InvalidName, + InvalidConnection, + ExceededConnectionLimit); + + EventConsumerBase unsubscribe (in FeatureName publisher_name, + in Cookie ck) + raises (InvalidName, + InvalidConnection); + + void connect_consumer (in FeatureName emitter_name, + in EventConsumerBase consumer) + raises (InvalidName, + AlreadyConnected, + InvalidConnection); + + EventConsumerBase disconnect_consumer (in FeatureName source_name) + raises (InvalidName, + NoConnection); + + ConsumerDescriptions get_all_consumers (); + + ConsumerDescriptions get_named_consumers (in NameList names) + raises (InvalidName); + + EmitterDescriptions get_all_emitters (); + + EmitterDescriptions get_named_emitters (in NameList names) + raises (InvalidName); + + PublisherDescriptions get_all_publishers (); + + PublisherDescriptions get_named_publishers (in NameList names) + raises (InvalidName); + }; +}; +#endif /* CCM_EVENTS_IDL */ diff --git a/modules/CIAO/ccm/CCM_Exceptions.idl b/modules/CIAO/ccm/CCM_Exceptions.idl new file mode 100644 index 00000000000..7e1f7067f2b --- /dev/null +++ b/modules/CIAO/ccm/CCM_Exceptions.idl @@ -0,0 +1,26 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.7.6 + +#if !defined (CCM_EXCEPTIONS_IDL) +#define CCM_EXCEPTIONS_IDL + +module Components +{ + typeprefix Components "omg.org"; + + typedef unsigned long FailureReason; + + exception CreateFailure { + FailureReason reason; + }; + exception FinderFailure + { + FailureReason reason; + }; + exception RemoveFailure + { + FailureReason reason; + }; +}; + +#endif diff --git a/modules/CIAO/ccm/CCM_ExecutorLocator.idl b/modules/CIAO/ccm/CCM_ExecutorLocator.idl new file mode 100644 index 00000000000..ef0ac8386d8 --- /dev/null +++ b/modules/CIAO/ccm/CCM_ExecutorLocator.idl @@ -0,0 +1,28 @@ +// $Id$ + +#if !defined (CCM_EXECUTORLOCATOR_IDL) +#define CCM_EXECUTORLOCATOR_IDL + +#include "ccm/CCM_EnterpriseComponent.idl" +#include "ccm/CCM_CCMException.idl" +#include "ccm/CCM_Object.idl" + +// *************** Extended Container Interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + local interface ExecutorLocator : EnterpriseComponent + { + Object obtain_executor (in string name) + raises (CCMException); + + void release_executor (in Object exc) + raises (CCMException); + + void configuration_complete() + raises (InvalidConfiguration); + }; +}; +#endif /* CCM_EXECUTORLOCATOR_IDL */ diff --git a/modules/CIAO/ccm/CCM_Home.idl b/modules/CIAO/ccm/CCM_Home.idl new file mode 100644 index 00000000000..697fccf72c4 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Home.idl @@ -0,0 +1,29 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.7.6 + +#if !defined (CCM_HOME_IDL) +#define CCM_HOME_IDL + +#include "tao/IFR_Client/IFR_Base.pidl" +#include "ccm/CCM_Exceptions.idl" + +module Components +{ + typeprefix Components "omg.org"; + + exception DuplicateKeyValue {}; + exception InvalidKey {}; + exception UnknownKeyValue {}; + + interface CCMObject; + + interface CCMHome + { + CORBA::IRObject get_component_def (); + CORBA::IRObject get_home_def (); + void remove_component (in CCMObject comp) + raises (RemoveFailure); + }; +}; + +#endif /* CCM_HOME_IDL */ diff --git a/modules/CIAO/ccm/CCM_HomeConfiguration.idl b/modules/CIAO/ccm/CCM_HomeConfiguration.idl new file mode 100644 index 00000000000..b3b0787ec28 --- /dev/null +++ b/modules/CIAO/ccm/CCM_HomeConfiguration.idl @@ -0,0 +1,23 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.10.2.1 + +#if !defined (CCM_HOMECONFIGURATION_IDL) +#define CCM_HOMECONFIGURATION_IDL + +#include "ccm/CCM_Configurator.idl" +#include "ccm/CCM_StandardConfigurator.idl" +#include "ccm/CCM_Home.idl" + +module Components +{ + typeprefix Components "omg.org"; + + interface HomeConfiguration : CCMHome + { + void set_configurator (in Configurator cfg); + void set_configuration_values (in ConfigValues config); + void complete_component_configuration (in boolean b); + void disable_home_configuration(); + }; +}; +#endif /* CCM_HOMECONFIGURATOR_IDL */ diff --git a/modules/CIAO/ccm/CCM_HomeExecutorBase.idl b/modules/CIAO/ccm/CCM_HomeExecutorBase.idl new file mode 100644 index 00000000000..34a92fbe539 --- /dev/null +++ b/modules/CIAO/ccm/CCM_HomeExecutorBase.idl @@ -0,0 +1,14 @@ +// $Id$ + +#if !defined (CCM_HOMEEXECUTORBASE_IDL) +#define CCM_HOMEEXECUTORBASE_IDL + +module Components +{ + typeprefix Components "omg.org"; + + local interface HomeExecutorBase + { + }; +}; +#endif /* CCM_HOMEEXECUTORBASE_IDL */ diff --git a/modules/CIAO/ccm/CCM_HomeFinder.idl b/modules/CIAO/ccm/CCM_HomeFinder.idl new file mode 100644 index 00000000000..50c41811acb --- /dev/null +++ b/modules/CIAO/ccm/CCM_HomeFinder.idl @@ -0,0 +1,29 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.8 + +#if !defined (CCM_HOMEFINDER_IDL) +#define CCM_HOMEFINDER_IDL + +#include "tao/orb_types.pidl" + +module Components +{ + typeprefix Components "omg.org"; + + exception HomeNotFound {}; + + interface CCMHome; + + interface HomeFinder + { + CCMHome find_home_by_component_type (in CORBA::RepositoryId comp_repid) + raises (HomeNotFound); + + CCMHome find_home_by_home_type (in CORBA::RepositoryId home_repid) + raises (HomeNotFound); + + CCMHome find_home_by_name (in string home_name) + raises (HomeNotFound); + }; +}; +#endif /* CCM_HOMEFINDER_IDL */ diff --git a/modules/CIAO/ccm/CCM_HomeRegistration.idl b/modules/CIAO/ccm/CCM_HomeRegistration.idl new file mode 100644 index 00000000000..c6f69ed6c43 --- /dev/null +++ b/modules/CIAO/ccm/CCM_HomeRegistration.idl @@ -0,0 +1,21 @@ +// $Id$ + +#if !defined (CCM_HOMEREGISTRATION_IDL) +#define CCM_HOMEREGISTRATION_IDL + +#include "ccm/CCM_Home.idl" + +module Components +{ + typeprefix Components "omg.org"; + + local interface HomeRegistration + { + void register_home (in CCMHome home_ref, + in string home_name); + + void unregister_home (in CCMHome home_ref); + }; + +}; +#endif /* CCM_HOMEREGISTRATION_IDL */ diff --git a/modules/CIAO/ccm/CCM_Homes.idl b/modules/CIAO/ccm/CCM_Homes.idl new file mode 100644 index 00000000000..edeb6ddb11f --- /dev/null +++ b/modules/CIAO/ccm/CCM_Homes.idl @@ -0,0 +1,19 @@ +// $Id$ +/// NOT Compliant with OMG 06-04-01 Section 6.7.6 + +#if !defined (CCM_HOMES_IDL) +#define CCM_HOMES_IDL + +#include "ccm/CCM_Home.idl" + +module Components +{ + typeprefix Components "omg.org"; + + /** + * @@ Added by wotte for continued compatibility with OFCCM + */ + typedef sequence CCMHomes; +}; + +#endif /* CCM_HOMES_IDL */ diff --git a/modules/CIAO/ccm/CCM_KeylessCCMHome.idl b/modules/CIAO/ccm/CCM_KeylessCCMHome.idl new file mode 100644 index 00000000000..8a720cf64f4 --- /dev/null +++ b/modules/CIAO/ccm/CCM_KeylessCCMHome.idl @@ -0,0 +1,19 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.7.7 + +#if !defined (CCM_KEYLESSCCMHOME_IDL) +#define CCM_KEYLESSCCMHOME_IDL + +#include "ccm/CCM_Object.idl" + +module Components +{ + typeprefix Components "omg.org"; + + interface KeylessCCMHome + { + CCMObject create_component() + raises (CreateFailure); + }; +}; +#endif /* CCM_KEYLESSCCMHOME_IDL */ diff --git a/modules/CIAO/ccm/CCM_Navigation.idl b/modules/CIAO/ccm/CCM_Navigation.idl new file mode 100644 index 00000000000..90e9abe8b71 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Navigation.idl @@ -0,0 +1,41 @@ +/// $Id$ +/// Compliant with OMG 06-04-01 Section 6.4.3.3 + +#if !defined (CCM_NAVIGATION_IDL) +#define CCM_NAVIGATION_IDL + +#include "tao/orb_types.pidl" +#include "tao/StringSeq.pidl" + +module Components +{ + typeprefix Components "omg.org"; + + typedef string FeatureName; + typedef sequence NameList; + + valuetype PortDescription + { + public FeatureName name; + public CORBA::RepositoryId type_id; + }; + + valuetype FacetDescription : PortDescription + { + public Object facet_ref; + }; + + typedef sequence FacetDescriptions; + + exception InvalidName {}; + interface Navigation + { + Object provide_facet (in FeatureName name) + raises (InvalidName); + FacetDescriptions get_all_facets(); + FacetDescriptions get_named_facets (in NameList names) + raises (InvalidName); + boolean same_component (in Object object_ref); + }; +}; +#endif /* CCM_NAVIGATION_IDL */ diff --git a/modules/CIAO/ccm/CCM_Object.idl b/modules/CIAO/ccm/CCM_Object.idl new file mode 100644 index 00000000000..5f44d1b0568 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Object.idl @@ -0,0 +1,58 @@ +// $Id$ +/// NOT Compliant with OMG 06-04-01 Section 6.11.1 + +#if !defined (CCM_OBJECT_IDL) +#define CCM_OBJECT_IDL + +#include "ccm/CCM_Events.idl" +#include "ccm/CCM_Navigation.idl" +#include "ccm/CCM_Home.idl" +#include "ccm/CCM_PrimaryKeyBase.idl" + +module Components +{ + typeprefix Components "omg.org"; + + /// This typedef and consts shouldn't be here but are here because of CIAO + /// specific additions + typedef FailureReason InvalidConfigurationReason; + const InvalidConfigurationReason UnknownConfigValueName = 0; + const InvalidConfigurationReason InvalidConfigValueType = 1; + const InvalidConfigurationReason ConfigValueRequired = 2; + const InvalidConfigurationReason ConfigValueNotExpected = 3; + + /// Shouldn't be here but is now here because of CIAO additions + exception InvalidConfiguration + { + InvalidConfigurationReason reason; + FeatureName name; + }; + + valuetype ComponentPortDescription + { + public FacetDescriptions facets; + public ReceptacleDescriptions receptacles; + public ConsumerDescriptions consumers; + public EmitterDescriptions emitters; + public PublisherDescriptions publishers; + }; + + exception NoKeyAvailable {}; + + interface CCMObject : Navigation, Receptacles, Events + { + CORBA::IRObject get_component_def ( ); + CCMHome get_ccm_home( ); + PrimaryKeyBase get_primary_key( ) + raises (NoKeyAvailable); + void configuration_complete () + raises (InvalidConfiguration); + void remove() + raises (RemoveFailure); + ComponentPortDescription get_all_ports (); + }; + + // From OMG 06-04-01 Section 10.3.1.2 + typedef sequence CCMObjectSeq; +}; +#endif /* CCM_OBJECT_IDL */ diff --git a/modules/CIAO/ccm/CCM_PrimaryKeyBase.idl b/modules/CIAO/ccm/CCM_PrimaryKeyBase.idl new file mode 100644 index 00000000000..27c261d20b2 --- /dev/null +++ b/modules/CIAO/ccm/CCM_PrimaryKeyBase.idl @@ -0,0 +1,13 @@ +// $Id$ + +#if !defined (CCM_PRIMARYKEYBASE_IDL) +#define CCM_PRIMARYKEYBASE_IDL + +module Components +{ + typeprefix Components "omg.org"; + + abstract valuetype PrimaryKeyBase {}; + +}; +#endif /* CCM_PRIMARYKEYBASE_IDL */ diff --git a/modules/CIAO/ccm/CCM_ProxyHomeRegistration.idl b/modules/CIAO/ccm/CCM_ProxyHomeRegistration.idl new file mode 100644 index 00000000000..3f613d7c13f --- /dev/null +++ b/modules/CIAO/ccm/CCM_ProxyHomeRegistration.idl @@ -0,0 +1,23 @@ +// $Id$ + +#if !defined (CCM_PROXYHOMEREGISTRATION_IDL) +#define CCM_PROXYHOMEREGISTRATION_IDL + +#include "ccm/CCM_HomeRegistration.idl" + +module Components +{ + typeprefix Components "omg.org"; + + exception UnknownActualHome {}; + exception ProxyHomeNotSupported {}; + + local interface ProxyHomeRegistration : HomeRegistration + { + void register_proxy_home (in CCMHome rhome, + in CCMHome ahome) + raises (UnknownActualHome, + ProxyHomeNotSupported); + }; +}; +#endif /* CCM_PROXYHOMEREGISTRATION_IDL */ diff --git a/modules/CIAO/ccm/CCM_Receptacle.idl b/modules/CIAO/ccm/CCM_Receptacle.idl new file mode 100644 index 00000000000..4d3af287c5c --- /dev/null +++ b/modules/CIAO/ccm/CCM_Receptacle.idl @@ -0,0 +1,55 @@ +/// $Id$ +/// Compliant with OMG 06-04-01 Section 6.5.3 + +#if !defined (CCM_RECEPTACLE_IDL) +#define CCM_RECEPTACLE_IDL + +#include "ccm/CCM_Base.idl" +#include "ccm/CCM_Navigation.idl" +#include "ccm/CCM_Cookie.idl" + +module Components +{ + typeprefix Components "omg.org"; + + valuetype ConnectionDescription + { + public Cookie ck; + public Object objref; + }; + typedef sequence ConnectionDescriptions; + + valuetype ReceptacleDescription : PortDescription + { + public boolean is_multiple; + public ConnectionDescriptions connections; + }; + typedef sequence ReceptacleDescriptions; + + exception ExceededConnectionLimit {}; + exception CookieRequired {}; + + interface Receptacles + { + Cookie connect (in FeatureName name, in Object connection ) + raises (InvalidName, + InvalidConnection, + AlreadyConnected, + ExceededConnectionLimit); + + Object disconnect (in FeatureName name, in Cookie ck) + raises (InvalidName, + InvalidConnection, + CookieRequired, + NoConnection); + + ConnectionDescriptions get_connections (in FeatureName name) + raises (InvalidName); + + ReceptacleDescriptions get_all_receptacles (); + + ReceptacleDescriptions get_named_receptacles (in NameList names) + raises (InvalidName); + }; +}; +#endif /* CCM_RECEPTACLE_IDL */ diff --git a/modules/CIAO/ccm/CCM_Session2Context.idl b/modules/CIAO/ccm/CCM_Session2Context.idl new file mode 100644 index 00000000000..e1f2d8f1614 --- /dev/null +++ b/modules/CIAO/ccm/CCM_Session2Context.idl @@ -0,0 +1,37 @@ +// $Id$ + +#if !defined (CCM_SESSION2CONTEXT_IDL) +#define CCM_SESSION2CONTEXT_IDL + +#include "ccm/CCM_CCM2Context.idl" + +// *************** Extended Container Interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + enum BadComponentReferenceReason + { + NON_LOCAL_REFERENCE, + NON_COMPONENT_REFERENCE, + WRONG_CONTAINER + }; + exception BadComponentReference + { + BadComponentReferenceReason reason; + }; + + local interface Session2Context : SessionContext, CCM2Context + { + Object create_ref (in CORBA::RepositoryId repid); + + Object create_ref_from_oid (in CORBA::OctetSeq oid, + in CORBA::RepositoryId repid); + + CORBA::OctetSeq get_oid_from_ref (in Object objref) + raises (IllegalState, + BadComponentReference); + }; +}; +#endif /* CCM_SESSION2CONTEXT_IDL */ diff --git a/modules/CIAO/ccm/CCM_SessionComponent.idl b/modules/CIAO/ccm/CCM_SessionComponent.idl new file mode 100644 index 00000000000..f7de21e3f04 --- /dev/null +++ b/modules/CIAO/ccm/CCM_SessionComponent.idl @@ -0,0 +1,34 @@ +// $Id$ + +#if !defined (CCM_SESSIONCOMPONENT_IDL) +#define CCM_SESSIONCOMPONENT_IDL + +#include "ccm/CCM_SessionContext.idl" +#include "ccm/CCM_CCMException.idl" +#include "ccm/CCM_EnterpriseComponent.idl" + +// *************** Basic Container interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + local interface SessionComponent : EnterpriseComponent + { + void set_session_context ( in SessionContext ctx) + raises (CCMException); + + void configuration_complete () + raises (CCMException); + + void ccm_activate() + raises (CCMException); + + void ccm_passivate() + raises (CCMException); + + void ccm_remove () + raises (CCMException); + }; +}; +#endif /* CCM_SESSIONCOMPONENT_IDL */ diff --git a/modules/CIAO/ccm/CCM_SessionContext.idl b/modules/CIAO/ccm/CCM_SessionContext.idl new file mode 100644 index 00000000000..88685acd965 --- /dev/null +++ b/modules/CIAO/ccm/CCM_SessionContext.idl @@ -0,0 +1,18 @@ +// $Id$ + +#if !defined (CCM_SESSIONCONTEXT_IDL) +#define CCM_SESSIONCONTEXT_IDL + +#include "ccm/CCM_Context.idl" + +module Components +{ + typeprefix Components "omg.org"; + + local interface SessionContext : CCMContext + { + Object get_CCM_object() + raises (IllegalState); + }; +}; +#endif /* CCM_SESSIONCONTEXT_IDL */ diff --git a/modules/CIAO/ccm/CCM_SessionSynchronization.idl b/modules/CIAO/ccm/CCM_SessionSynchronization.idl new file mode 100644 index 00000000000..988cd4fdfb1 --- /dev/null +++ b/modules/CIAO/ccm/CCM_SessionSynchronization.idl @@ -0,0 +1,26 @@ +// $Id$ + +#if !defined (CCM_SESSIONSYNCHRONIZATION_IDL) +#define CCM_SESSIONSYNCHRONIZATION_IDL + +#include "ccm/CCM_CCMException.idl" + +// *************** Basic Container interfaces *************** + +module Components +{ + typeprefix Components "omg.org"; + + local interface SessionSynchronization + { + void after_begin () + raises (CCMException); + + void before_completion () + raises (CCMException); + + void after_completion (in boolean committed) + raises (CCMException); + }; +}; +#endif /* CCM_SESSIONSYNCHRONIZATION_IDL */ diff --git a/modules/CIAO/ccm/CCM_StandardConfigurator.idl b/modules/CIAO/ccm/CCM_StandardConfigurator.idl new file mode 100644 index 00000000000..0013d3d5b31 --- /dev/null +++ b/modules/CIAO/ccm/CCM_StandardConfigurator.idl @@ -0,0 +1,28 @@ +// $Id$ +/// Compliant with OMG 06-04-01 Section 6.10.1.2 + +#if !defined (CCM_STANDARDCONFIGURATOR_IDL) +#define CCM_STANDARDCONFIGURATOR_IDL + +#include "ccm/CCM_Configurator.idl" +#include "ccm/CCM_Navigation.idl" + +module Components +{ + typeprefix Components "omg.org"; + + valuetype ConfigValue + { + public FeatureName name; + public any value; + }; + + typedef sequence ConfigValues; + + interface StandardConfigurator : Configurator + { + void set_configuration (in ConfigValues descr); + }; + +}; +#endif /* CCM_STANDARDCONFIGURATOR_IDL */ diff --git a/modules/CIAO/ccm/CCM_StateIdFactory.idl b/modules/CIAO/ccm/CCM_StateIdFactory.idl new file mode 100644 index 00000000000..f26371ecd54 --- /dev/null +++ b/modules/CIAO/ccm/CCM_StateIdFactory.idl @@ -0,0 +1,59 @@ +// $Id$ + +#if !defined (CCM_STATEIDFACTORY) +#define CCM_STATEIDFACTORY + +#include + +module Components +{ + typeprefix Components "omg.org"; + + typedef short SegmentId; + const SegmentId COMPONENT_SEGMENT = 0; + + typedef short FacetId; + const FacetId COMPONENT_FACET = 0; + + typedef sequence IdData; + typedef CosPersistentState::Pid PersistentId; + + exception InvalidStateIdData {}; + + typedef short StateIdType; + const StateIdType PERSISTENT_ID = 0; + + abstract valuetype StateIdValue + { + StateIdType get_sid_type(); + IdData get_sid_data(); + }; + + local interface StateIdFactory + { + StateIdValue create (in IdData data) + raises (InvalidStateIdData); + }; + + valuetype PersistentIdValue : StateIdValue + { + private PersistentId pid; + PersistentId get_pid(); + factory init (in PersistentId pid); + }; + + valuetype SegmentDescr + { + private StateIdValue sid; + private SegmentId seg; + + StateIdValue get_sid(); + SegmentId get_seg_id(); + factory init (in StateIdValue sid, + in SegmentId seg); + }; + + typedef sequence SegmentDescrSeq; + +}; +#endif /* CCM_STATEIDFACTORY */ diff --git a/modules/CIAO/ccm/CCM_Stub_Export.h b/modules/CIAO/ccm/CCM_Stub_Export.h new file mode 100644 index 00000000000..dad69c9cc0e --- /dev/null +++ b/modules/CIAO/ccm/CCM_Stub_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl CCM_Stub +// ------------------------------ +#ifndef CCM_STUB_EXPORT_H +#define CCM_STUB_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CCM_STUB_HAS_DLL) +# define CCM_STUB_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CCM_STUB_HAS_DLL */ + +#if !defined (CCM_STUB_HAS_DLL) +# define CCM_STUB_HAS_DLL 1 +#endif /* ! CCM_STUB_HAS_DLL */ + +#if defined (CCM_STUB_HAS_DLL) && (CCM_STUB_HAS_DLL == 1) +# if defined (CCM_STUB_BUILD_DLL) +# define CCM_Stub_Export ACE_Proper_Export_Flag +# define CCM_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CCM_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CCM_STUB_BUILD_DLL */ +# define CCM_Stub_Export ACE_Proper_Import_Flag +# define CCM_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CCM_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CCM_STUB_BUILD_DLL */ +#else /* CCM_STUB_HAS_DLL == 1 */ +# define CCM_Stub_Export +# define CCM_STUB_SINGLETON_DECLARATION(T) +# define CCM_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CCM_STUB_HAS_DLL == 1 */ + +// Set CCM_STUB_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CCM_STUB_NTRACE) +# if (ACE_NTRACE == 1) +# define CCM_STUB_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CCM_STUB_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CCM_STUB_NTRACE */ + +#if (CCM_STUB_NTRACE == 1) +# define CCM_STUB_TRACE(X) +#else /* (CCM_STUB_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CCM_STUB_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CCM_STUB_NTRACE == 1) */ + +#endif /* CCM_STUB_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/ccm/CCM_Svnt_Export.h b/modules/CIAO/ccm/CCM_Svnt_Export.h new file mode 100644 index 00000000000..edb1b38f5ba --- /dev/null +++ b/modules/CIAO/ccm/CCM_Svnt_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl CCM_Svnt +// ------------------------------ +#ifndef CCM_SVNT_EXPORT_H +#define CCM_SVNT_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CCM_SVNT_HAS_DLL) +# define CCM_SVNT_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CCM_SVNT_HAS_DLL */ + +#if !defined (CCM_SVNT_HAS_DLL) +# define CCM_SVNT_HAS_DLL 1 +#endif /* ! CCM_SVNT_HAS_DLL */ + +#if defined (CCM_SVNT_HAS_DLL) && (CCM_SVNT_HAS_DLL == 1) +# if defined (CCM_SVNT_BUILD_DLL) +# define CCM_Svnt_Export ACE_Proper_Export_Flag +# define CCM_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CCM_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CCM_SVNT_BUILD_DLL */ +# define CCM_Svnt_Export ACE_Proper_Import_Flag +# define CCM_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CCM_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CCM_SVNT_BUILD_DLL */ +#else /* CCM_SVNT_HAS_DLL == 1 */ +# define CCM_Svnt_Export +# define CCM_SVNT_SINGLETON_DECLARATION(T) +# define CCM_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CCM_SVNT_HAS_DLL == 1 */ + +// Set CCM_SVNT_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CCM_SVNT_NTRACE) +# if (ACE_NTRACE == 1) +# define CCM_SVNT_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CCM_SVNT_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CCM_SVNT_NTRACE */ + +#if (CCM_SVNT_NTRACE == 1) +# define CCM_SVNT_TRACE(X) +#else /* (CCM_SVNT_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CCM_SVNT_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CCM_SVNT_NTRACE == 1) */ + +#endif /* CCM_SVNT_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/ccm/CCM_Transaction.idl b/modules/CIAO/ccm/CCM_Transaction.idl new file mode 100644 index 00000000000..5760d39846d --- /dev/null +++ b/modules/CIAO/ccm/CCM_Transaction.idl @@ -0,0 +1,76 @@ +// $Id$ + +#if !defined (CCM_TRANSACTION_IDL) +#define CCM_TRANSACTION_IDL + +module Components +{ + typeprefix Components "omg.org"; + + // @@ Components::Transaction is still there. + module Transaction + { + + typedef sequence TranToken; + + exception NoTransaction {}; + exception NotSupported {}; + exception SystemError {}; + exception RollbackError {}; + exception HeuristicMixed {}; + exception HeuristicRollback {}; + exception Security {}; + exception InvalidToken {}; + + enum Status + { + ACTIVE, + MARKED_ROLLBACK, + PREPARED, + COMMITTED, + ROLLED_BACK, + NO_TRANSACTION, + PREPARING, + COMMITTING, + ROLLING_BACK + }; + + local interface UserTransaction { + void begin () + raises (NotSupported, + SystemError); + + void commit () + raises (RollbackError, + NoTransaction, + HeuristicMixed, + HeuristicRollback, + Security, + SystemError); + + void rollback () + raises (NoTransaction, + Security, + SystemError); + + void set_rollback_only () + raises (NoTransaction, + SystemError); + + Status get_status() + raises (SystemError); + + void set_timeout (in long to) + raises (SystemError); + + TranToken suspend () + raises (NoTransaction, + SystemError); + + void resume (in TranToken txtoken) + raises (InvalidToken, + SystemError); + }; + }; +}; +#endif /* CCM_TRANSACTION_IDL */ diff --git a/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.idl b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.idl new file mode 100644 index 00000000000..dd06fb7c1cb --- /dev/null +++ b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.idl @@ -0,0 +1,62 @@ +// $Id$ + +#if !defined (COMPONENTSERVER_IDL) +#define COMPONENTSERVER_IDL + +#include "ccm/ComponentServer/CCM_ComponentServer_Base.idl" +#include "ccm/CCM_Homes.idl" + +module Components +{ + typeprefix Components "omg.org"; + + module Deployment + { + interface Container; + typedef sequence Containers; + interface ServerActivator; + + interface ComponentServer + { + readonly attribute ConfigValues configuration; + + ServerActivator get_server_activator(); + + Container create_container(in ConfigValues config) + raises (::Components::CreateFailure, + ::Components::Deployment::InvalidConfiguration); + + void remove_container(in Container cref) raises (::Components::RemoveFailure); + + Containers get_containers(); + + void remove() raises (::Components::RemoveFailure); + }; + + typedef sequence ComponentServers; + + interface Container + { + readonly attribute ConfigValues configuration; + + ComponentServer get_component_server(); + + CCMHome install_home(in UUID id, + in string entrypt, + in ConfigValues config) + raises (::Components::Deployment::UnknownImplId, + ::Components::Deployment::ImplEntryPointNotFound, + ::Components::Deployment::InstallationFailure, + ::Components::Deployment::InvalidConfiguration); + + void remove_home(in CCMHome href) raises (::Components::RemoveFailure); + + CCMHomes get_homes(); + + void remove() raises (::Components::RemoveFailure); + }; + }; + +}; + +#endif /* COMPONENTSERVER_IDL */ diff --git a/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.mpc b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.mpc new file mode 100644 index 00000000000..a8d6e640caa --- /dev/null +++ b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer.mpc @@ -0,0 +1,65 @@ +// -*- MPC -*- +// $Id$ + +project(CCM_ComponentServer_IDL) : ciaoidldefaults, anytypecode { + idlflags += -Wb,stub_export_macro=DANCE_COMPONENTSERVER_STUB_Export \ + -Wb,stub_export_include=DAnCE_ComponentServer_stub_export.h \ + -Wb,skel_export_macro=DANCE_COMPONENTSERVER_SVNT_Export \ + -Wb,skel_export_include=DAnCE_ComponentServer_svnt_export.h + + custom_only = 1 + + IDL_Files { + idlflags += -SS -Sci -Gxhst -Gxhsk + CCM_ComponentServer_Base.idl + } + + IDL_Files { + idlflags += -Ssi + CCM_ComponentServer_Client.idl + } + + IDL_Files { + idlflags += -Ssi + CCM_ComponentServer.idl + } +} + +project(CCM_ComponentServer_stub) : ciaolib_with_idl, ciao_output, messaging, ccm_stub, anytypecode, ciao_lib { + dynamicflags = DANCE_COMPONENTSERVER_STUB_BUILD_DLL + after += CCM_ComponentServer_IDL + + Header_Files { + DAnCE_ComponentServer_stub_export.h + CCM_ComponentServerC.h + CCM_ComponentServer_ClientC.h + CCM_ComponentServer_BaseC.h + } + + Source_Files { + CCM_ComponentServerC.cpp + CCM_ComponentServer_ClientC.cpp + CCM_ComponentServer_BaseC.cpp + } + IDL_Files { + } +} + +project(CCM_ComponentServer_svnt) : ciaolib_with_idl, ciao_output, messaging, ccm_componentserver_stub, anytypecode, ciao_lib { + dynamicflags = DANCE_COMPONENTSERVER_SVNT_BUILD_DLL + + Header_Files { + DAnCE_ComponentServer_svnt_export.h + CCM_ComponentServerS.h + CCM_ComponentServer_ClientS.h + CCM_ComponentServer_BaseS.h + } + + Source_Files { + CCM_ComponentServerS.cpp + CCM_ComponentServer_ClientS.cpp + } + IDL_Files { + } +} + diff --git a/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Base.idl b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Base.idl new file mode 100644 index 00000000000..c44ce1b8796 --- /dev/null +++ b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Base.idl @@ -0,0 +1,56 @@ +/** + * @file CCM_ComponentServer_Base.idl + * $Id$ + * Contains base types for all componenent server interfaces. + * These interfaces are not part of the CCM standard. + */ + +#ifndef COMPONENTSERVER_BASE_IDL_ +#define COMPONENTSERVER_BASE_IDL_ + +#include "ccm/CCM_Home.idl" +#include "ccm/CCM_KeylessCCMHome.idl" +#include "ccm/CCM_Navigation.idl" +#include "ccm/CCM_StandardConfigurator.idl" + +module Components +{ + typeprefix Components "omg.org"; + + module Deployment + { + typedef string UUID; + typedef string Location; + + typedef FailureReason InvalidConfigurationReason; + const InvalidConfigurationReason UnknownConfigValueName = 0; + const InvalidConfigurationReason InvalidConfigValueType = 1; + const InvalidConfigurationReason ConfigValueRequired = 2; + const InvalidConfigurationReason ConfigValueNotExpected = 3; + + exception InvalidConfiguration + { + InvalidConfigurationReason reason; + FeatureName name; + }; + + exception UnknownImplId + { + }; + + exception InvalidLocation + { + }; + + exception ImplEntryPointNotFound + { + }; + + exception InstallationFailure + { + FailureReason reason; + }; + }; +}; + +#endif diff --git a/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Client.idl b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Client.idl new file mode 100644 index 00000000000..8d5b0b02abd --- /dev/null +++ b/modules/CIAO/ccm/ComponentServer/CCM_ComponentServer_Client.idl @@ -0,0 +1,47 @@ +/** + * @file CCM_ComponentServer_Client.idl + * Client side objects hosted by the NodeApplication. + * $Id$ + */ + +#ifndef COMPONENTSERVER_CLIENT_IDL_ +#define COMPONENTSERVER_CLIENT_IDL_ + +#include "ccm/ComponentServer/CCM_ComponentServer.idl" + +module Components +{ + typeprefix Components "omg.org"; + + module Deployment + { + interface ComponentInstallation + { + void install(in UUID implUUID, in Location component_loc) + raises (InvalidLocation, InstallationFailure); + + void replace(in UUID implUUID, in Location component_loc) + raises (InvalidLocation, InstallationFailure); + + void remove(in UUID implUUID) + raises (UnknownImplId, RemoveFailure); + + Location get_implementation(in UUID implUUID) + raises(UnknownImplId, InstallationFailure); + }; + + interface ServerActivator + { + ComponentServer create_component_server(in ConfigValues config) + raises(::Components::CreateFailure, + ::Components::Deployment::InvalidConfiguration); + + void remove_component_server(in ComponentServer server) + raises(::Components::RemoveFailure); + + ComponentServers get_component_servers(); + }; + }; +}; + +#endif diff --git a/modules/CIAO/ccm/Components.idl b/modules/CIAO/ccm/Components.idl new file mode 100644 index 00000000000..cda791f25fa --- /dev/null +++ b/modules/CIAO/ccm/Components.idl @@ -0,0 +1,17 @@ +// $Id$ + +/** + * This file is included in the generated executor + * mapping IDL file, + */ + +#if !defined (CCM_COMPONENTS_IDL) +#define CCM_COMPONENTS_IDL + +#include "ccm/CCM_Component.idl" +#include "ccm/CCM_KeylessCCMHome.idl" +#include "ccm/CCM_Home.idl" +#include "ccm/CCM_Object.idl" + +#endif /* CCM_COMPONENTS_IDL */ + diff --git a/modules/CIAO/ccm/CosPersistentState.idl b/modules/CIAO/ccm/CosPersistentState.idl new file mode 100644 index 00000000000..b6ce4324fa8 --- /dev/null +++ b/modules/CIAO/ccm/CosPersistentState.idl @@ -0,0 +1,21 @@ +// $Id$ + +/** + * @@ This is just a temporary file. Since TAO does not have + * CosPersistentState at all, we use this file to define + * types necessary to get ComponentBase.idl to compile. + */ + +#if !defined (CIAO_COSPERSISTENTSTATE_PIDL) +#define CIAO_COSPERSISTENTSTATE_PIDL + +module CosPersistentState { + + local interface CatalogBase + { + }; + + typedef sequence _TypeId; + typedef string Pid; +}; +#endif /* CIAO_COSPERSISTENTSTATE_PIDL */ diff --git a/modules/CIAO/ccm/Security.idl b/modules/CIAO/ccm/Security.idl new file mode 100644 index 00000000000..ce38f2ce1aa --- /dev/null +++ b/modules/CIAO/ccm/Security.idl @@ -0,0 +1,23 @@ +/** + * @@ This is just a temporary file. CIAO doesn't use the security + * service in its implementation but just using this local + * interface below from the real security service pulls in + * 250Kb of footprint + * + * $Id$ + */ + +#if !defined (CIAO_SECURITY_IDL) +#define CIAO_SECURITY_IDL + +#pragma prefix "omg.org" + +module SecurityLevel2 { + +# pragma version SecurityLevel2 1.8 + + local interface Credentials + { + }; +}; +#endif /* CIAO_SECURITY_IDL */ diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_CS_Client.idl b/modules/CIAO/ciao/ComponentServer/CIAO_CS_Client.idl new file mode 100644 index 00000000000..c966ac7ccf5 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_CS_Client.idl @@ -0,0 +1,35 @@ +/** + * @file CIAO_CS_Client.idl + * @author William R. Otte + * $Id$ + * A couple CIAO-specific extensions to the component server client + * interfaces. + */ + +#ifndef CIAO_COMPONENTSERVER_IDL_ +#define CIAO_COMPONENTSERVER_IDL_ + +#include + +module CIAO +{ + module Deployment + { + interface ServerActivator : ::Components::Deployment::ServerActivator + { + /// Used by spawned component servers to notify the server + /// activator of their object reference and retrieve + /// configuration information. + void component_server_callback (in ::Components::Deployment::ComponentServer serverref, + in string server_UUID, + out ::Components::ConfigValues config); + + void configuration_complete (in string server_UUID); + }; + }; +}; + + +#endif + + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp new file mode 100644 index 00000000000..4e6b323ccdb --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.cpp @@ -0,0 +1,129 @@ +// $Id$ + +#include "CIAO_ComponentInstallation_Impl.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Deployment + { + + ComponentInstallation_Impl::ComponentInstallation_Impl() + { + CIAO_TRACE ("ComponentInstallation_Impl::ComponentInstallation_Impl"); + } + + ComponentInstallation_Impl::~ComponentInstallation_Impl() + { + CIAO_TRACE ("ComponentInstallation_Impl::~ComponentInstallation_Impl"); + } + + void + ComponentInstallation_Impl::install (const char * implUUID, const char * component_loc) + { + CIAO_TRACE ("ComponentInstallation_Impl::install"); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentInstallation_Impl::install - " + "implUUID %C, component_loc %C\n", implUUID, component_loc)); + + ACE_CString location = component_loc; + + if (0 == this->locations_.find (implUUID)) + { + this->locations_.bind (implUUID, location); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentInstallation_Impl::install - Location for artifact %C " + "already present, replacing.\n", + implUUID)); + this->locations_.rebind (implUUID, location); + } + } + + + void + ComponentInstallation_Impl::replace (const char *uuid, const char *loc) + { + CIAO_TRACE ("ComponentInstallation_Impl::replace"); + + this->locations_.rebind (uuid, loc); + } + + void + ComponentInstallation_Impl::remove (const char *uuid) + { + CIAO_TRACE ("ComponentInstallation_Impl::remove"); + this->locations_.unbind (uuid); + } + + char * + ComponentInstallation_Impl::get_implementation (const char * implUUID) + { + CIAO_TRACE ("ComponentInstallation_Impl::get_implementation"); + + ACE_CString s; + if (0 == this->locations_.find (implUUID, s)) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentInstallation_Impl::get_implementation - " + "ComponentInstallation_Impl::get_implementation for UUID %C, location %C\n", + implUUID, s.c_str())); + + return CORBA::string_dup (s.c_str()); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "ComponentInstallation_Impl::get_implementation - " + "cannot find location for specified implementation UUID %C\n", implUUID)); + throw ::Components::Deployment::UnknownImplId(); + return 0; + } + } + + + char * + ComponentInstallation_Impl::get_valuetypefactory_location (const char * implUUID, + const char * repid) + { + CIAO_TRACE ("ComponentInstallation_Impl::get_valuetypefactory_location"); + + ACE_CString key = ComponentInstallation_Impl::valuefactory_key (implUUID, repid); + ACE_CString s; + if (0 == this->locations_.find (implUUID, s)) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentInstallation_Impl::get_valuetypefactory_location - " + "UUID:\"%C\" repid:\"%C\" -> location:\"%C\"\n", implUUID, repid, s.c_str())); + return CORBA::string_dup (s.c_str()); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "ComponentInstallation_Impl::get_valuetypefactory_location - " + "cannot find location for implementation UUID %C and repid %C.\n", implUUID, repid)); + throw ::Components::Deployment::InstallationFailure(); + return 0; + } + return 0; + } + + + void + ComponentInstallation_Impl::install_valuetypefactory_location (const char * implUUID, + const char * repid, + const char * loc) + { + CIAO_TRACE ("ComponentInstallation_Impl::install_valuetypefactory_location"); + ACE_CString key = ComponentInstallation_Impl::valuefactory_key (implUUID, repid); + if (0 != this->locations_.find (key)) + { + ACE_CString location = loc; + this->locations_.bind (implUUID, location); + } + else + { + // I don't certaint that we should throw exception here + //throw ::Components::Deployment::InstallationFailure(); + } + } + } +} + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h new file mode 100644 index 00000000000..3ca52bb1608 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h @@ -0,0 +1,65 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file CIAO_ComponentInstallation_Impl.h + * + * $Id$ + * + * @brief Return location of component artifact + * + * @author Erwin Gottlieb + */ +//============================================================================= + +#ifndef COMPONENTINSTALLATION_IMPL_H_ +#define COMPONENTINSTALLATION_IMPL_H_ + +#include "ace/Map_Manager.h" +#include "ciao/ComponentServer/CIAO_CS_ClientS.h" + +#include "tao/ORB.h" +#include "ciao/ComponentServer/CIAO_CS_Client_svnt_export.h" + +namespace CIAO +{ + namespace Deployment + { + + class CIAO_CS_CLIENT_SVNT_Export ComponentInstallation_Impl + : public virtual POA_Components::Deployment::ComponentInstallation + { + public: + ComponentInstallation_Impl(); + + virtual ~ComponentInstallation_Impl(); + + virtual void install (const char * implUUID, + const char * component_loc); + + virtual void replace (const char * implUUID, + const char * component_loc); + + virtual void remove (const char * implUUID); + + virtual char * get_implementation (const char * implUUID); + + virtual char * get_valuetypefactory_location (const char * implUUID, + const char * repid); + + void install_valuetypefactory_location (const char * implUUID, + const char * repid, + const char * loc); + + private: + typedef ACE_Map_Manager< ACE_CString, ACE_CString, ACE_Null_Mutex > TLocations; + TLocations locations_; + + static ACE_CString valuefactory_key (const char* uuid, const char* repid) + { + return ACE_CString (repid) + "@" + uuid; + }; + }; + } +} +#endif /*COMPONENTINSTALLATION_IMPL_H_*/ diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp new file mode 100644 index 00000000000..59a6bfad232 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp @@ -0,0 +1,42 @@ +/** + * @file CIAO_ComponentServer.cpp + * @author William R. Otte + * $Id$ + * + * Implementation and main for CIAO_ComponentServer. + */ + +#include "CIAO_ComponentServer_Task.h" +#include "ciao/Logger/Log_Macros.h" + +int ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + // Tracing disabled by default + CIAO_DISABLE_TRACE (); + + CIAO_TRACE ("CIAO_ComponentServer::ACE_TMAIN"); + + int retval = 0; + try + { + CIAO::Deployment::ComponentServer_Task cs (argc, argv); + cs.run (); + + // Wait for the threads to exit. + //ACE_Thread_Manager::instance ()->wait (); + } + catch (CIAO::Deployment::ComponentServer_Task::Error &e) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer main: Caught ComponentServer exception: %C\n", + e.err_.c_str ())); + retval = -1; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer main: Caught unknown exception.\n")); + retval = -1; + } + + return retval; +} + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.idl b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.idl new file mode 100644 index 00000000000..0acb62bb092 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.idl @@ -0,0 +1,79 @@ +/** + * @file CIAO_ComponentServer.idl + * @author William R. Otte + * $Id$ + * A couple CIAO-specific extensions to the component server + * interfaces. + */ + +#ifndef CIAO_COMPONENTSERVER_IDL_ +#define CIAO_COMPONENTSERVER_IDL_ + +#include +#include + +module CIAO +{ + module Deployment + { + interface ComponentServer : ::Components::Deployment::ComponentServer + { + oneway void shutdown (); + }; + + exception InvalidComponent + { + }; + + /** + * @interface CIAO_Container + * @brief CIAO specific extensions to the component server interface. + */ + interface Container : Components::Deployment::Container + { + /// Instruct the container to install a component without + /// an explicit home. + ::Components::CCMObject install_component (in ::Components::Deployment::UUID id, + in string entrypt, + in ::Components::ConfigValues config) + raises (::Components::Deployment::UnknownImplId, + ::Components::Deployment::ImplEntryPointNotFound, + ::Components::Deployment::InstallationFailure, + ::Components::Deployment::InvalidConfiguration); + + /// Activate component with specified ID, if no ID provided, + /// activates all components. + void activate_component (in ::Components::CCMObject comp) + raises (InvalidComponent); + + /// Passivate component with specified ID, if no ID provided, + /// passivates all components. + void passivate_component (in ::Components::CCMObject comp) + raises (InvalidComponent); + + /// Instruct the container to remove a component installed + /// without an explicit home. If the component was installed + /// with an explicit home, this operation will fail. + void remove_component (in ::Components::CCMObject cref) + raises (::Components::RemoveFailure); + + /// Returns a sequence of all homeless components. + ::Components::CCMObjectSeq get_components (); + + void connect_local_facet (in ::Components::CCMObject provider_ref, + in string provider_port, + in ::Components::CCMObject user_ref, + in string user_port) + raises (::Components::InvalidConnection, + ::Components::AlreadyConnected); + + void disconnect_local_facet (in ::Components::CCMObject provider_ref, + in string provider_port, + in ::Components::CCMObject user_ref, + in string user_port) + raises (::Components::InvalidConnection); + }; + }; +}; + +#endif /* CIAO_COMPONENTSERVER_IDL_ */ diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.mpc b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.mpc new file mode 100644 index 00000000000..1c0f73505a9 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer.mpc @@ -0,0 +1,119 @@ +// $Id$ + +project(CIAO_ComponentServer_IDL) : ciaoidldefaults, anytypecode { + idlflags += -Wb,stub_export_macro=CIAO_COMPONENTSERVER_STUB_Export \ + -Wb,stub_export_include=CIAO_ComponentServer_stub_export.h \ + -Wb,skel_export_macro=CIAO_COMPONENTSERVER_SVNT_Export \ + -Wb,skel_export_include=CIAO_ComponentServer_svnt_export.h \ + -Gxhst -Gxhsk + + custom_only=1 + + IDL_Files { + CIAO_ComponentServer.idl + } +} + +project(CIAO_CS_Client_IDL) : ciaoidldefaults, anytypecode { + idlflags += -Wb,stub_export_macro=CIAO_COMPONENTSERVER_STUB_Export \ + -Wb,stub_export_include=CIAO_ComponentServer_stub_export.h \ + -Wb,skel_export_macro=CIAO_CS_CLIENT_SVNT_Export \ + -Wb,skel_export_include=CIAO_CS_Client_svnt_export.h + + custom_only=1 + + IDL_Files { + CIAO_Properties.idl + idlflags += -SS -Sci -Gxhsk + } + IDL_Files { + CIAO_CS_Client.idl + } + IDL_Files { + idlflags += -Sci -SS + CIAO_FailureReasons.idl + } +} + +project(CIAO_ComponentServer_stub) : ccm_componentserver_stub, ciaolib_with_idl, ciao_output, \ + messaging, anytypecode, ciao_lib { + after += CIAO_ComponentServer_IDL CIAO_CS_Client_IDL + dynamicflags = CIAO_COMPONENTSERVER_STUB_BUILD_DLL + + IDL_Files { + } + Source_Files { + CIAO_ComponentServerC.cpp + CIAO_CS_ClientC.cpp + CIAO_PropertiesC.cpp + } + Header_Files { + CIAO_ComponentServer_stub_export.h + } +} + +project(CIAO_CS_Client_svnt) : ccm_svnt, ccm_componentserver_svnt, ciao_componentserver_stub, portableserver, \ + ciao_lib, threads, avoids_ace_for_tao, ciao_logger { + dynamicflags = CIAO_CS_CLIENT_SVNT_BUILD_DLL + after += CIAO_CS_Client_IDL + IDL_Files { + } + Source_Files { + CIAO_ServerActivator_Impl.cpp + Server_init.cpp + Client_init.cpp + CIAO_ComponentInstallation_Impl.cpp + CIAO_CS_ClientS.cpp + } + Header_Files { + CIAO_ServerActivator_Impl.h + CIAO_ComponentInstallation_Impl.h + CIAO_CS_ClientS.h + CIAO_CS_Client_svnt_export.h + } +} + +project(CIAO_ComponentServer_svnt) : ccm_componentserver_svnt, ciao_componentserver_stub, portableserver, \ + ciao_session_container, ciao_lib, ciao_cs_client { + dynamicflags = CIAO_COMPONENTSERVER_SVNT_BUILD_DLL + + IDL_Files { + } + Source_Files { + CIAO_ComponentServer_Impl.cpp + CIAO_ComponentServerS.cpp + CIAO_Container_Impl.cpp + } + Header_Files { + CIAO_ComponentServer_svnt_export.h + } +} + +project(CIAO_ComponentServer_exe) : ccm_componentserver_svnt, portableserver, ciao_componentserver_svnt, \ + messaging, anytypecode, ciaoexe, ciao_session_container,\ + ciao_logger { + exename = ciao_componentserver + Source_Files { + CIAO_ComponentServer.cpp + CIAO_ComponentServer_Task.cpp + } + Inline_Files { + } + IDL_Files { + } +} + +project(CIAO_RTComponentServer_exe) : ccm_componentserver_svnt, portableserver, ciao_componentserver_svnt, \ + messaging, anytypecode, ciaoexe, ciao_session_container,\ + ciao_logger, rt_server, rtportableserver { + exename = ciao_rtcomponentserver + Source_Files { + CIAO_RTComponentServer.cpp + CIAO_RTComponentServer_Task.cpp + } + Inline_Files { + } + IDL_Files { + } +} + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp new file mode 100644 index 00000000000..a2dd4343e44 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.cpp @@ -0,0 +1,268 @@ +// $Id$ +#include "CIAO_ComponentServer_Impl.h" + +#include "ciao/Logger/Log_Macros.h" + +#include "CIAO_CS_ClientC.h" +#include "CIAO_Container_Impl.h" +#include "CIAO_PropertiesC.h" + +namespace CIAO +{ + namespace Deployment + { + CIAO_ComponentServer_i::CIAO_ComponentServer_i (const ACE_CString &uuid, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa) + : uuid_ (uuid), + orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + containers_ () + { + CIAO_TRACE("CIAO_ComponentServer_i::CIAO_ComponentServer_i"); + } + + // Destructor + CIAO_ComponentServer_i::~CIAO_ComponentServer_i (void) + { + CIAO_TRACE("CIAO_ComponentServer_i::~CIAO_ComponentServer_i"); + } + + void + CIAO_ComponentServer_i::shutdown (void) + { + CIAO_TRACE("CIAO_ComponentServer_i::shutdown"); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "CIAO_ComponentServer_i::shutdown - ORB shutdown request " + "received at %C.\n", + this->uuid_.c_str ())); + + if (!this->containers_.is_empty ()) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ComponentServer_i::shutdown - ComponentServer %C " + "still has %u containers!\n", + this->uuid_.c_str (), + this->containers_.size ())); + } + + this->orb_->shutdown (); + } + + + ::Components::ConfigValues * + CIAO_ComponentServer_i::configuration (void) + { + CIAO_TRACE("CIAO_ComponentServer_i::configuration"); + return this->config_values_.out (); + } + + + ::Components::Deployment::ServerActivator_ptr + CIAO_ComponentServer_i::get_server_activator (void) + { + CIAO_TRACE("CIAO_ComponentServer_i::get_server_activator"); + return this->serv_act_.in (); + } + + ::Components::Deployment::Container_ptr + CIAO_ComponentServer_i::create_container ( + const ::Components::ConfigValues & config) + { + CIAO_TRACE("CIAO_ComponentServer_i::create_container"); + + try + { + CIAO_DEBUG (6, (LM_INFO, CLINFO + "CIAO_ComponentServer_i::create_container - Request " + "received with %u config values\n", + config.length ())); + + CORBA::PolicyList policies; + const char *name = 0; + CIAO_Container_i *cont = 0; + ACE_NEW_THROW_EX (cont, + CIAO_Container_i (config, 0, name, &policies, + this->ci_.in (), this->orb_.in (), + this->poa_.in ()), + CORBA::NO_MEMORY ()); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_ComponentServer_i::create_container - " + "Container servant successfully allocated.\n")); + + PortableServer::ServantBase_var safe_config = cont; + PortableServer::ObjectId_var id = + this->poa_->activate_object (cont); + CORBA::Object_var object = this->poa_->id_to_reference (id.in ()); + CIAO::Deployment::Container_var cont_var = + CIAO::Deployment::Container::_narrow (object.in ()); + + this->containers_.insert (CIAO::Deployment::Container::_duplicate(cont_var.in ())); + + CIAO_DEBUG (6, (LM_INFO, CLINFO + "CIAO_ComponentServer_i::create_container - Container successfully activated and stored," + " now managing %u containers\n", + this->containers_.size ())); + + return cont_var._retn (); + } + catch (const CORBA::NO_MEMORY &) + { + CIAO_ERROR (1, (LM_CRITICAL, CLINFO "CIAO_ComponentServer_Impl: Out of memory exception whilst creating container.\n")); + throw; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer_Impl: Caught unknown exception\n")); + } + + throw Components::CreateFailure (); + } + + void + CIAO_ComponentServer_i::remove_container ( + ::Components::Deployment::Container_ptr cref) + { + CIAO_TRACE("CIAO_ComponentServer_i::remove_container"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ComponentServer_i::remove_container - Remove request received.\n")); + + if (CORBA::is_nil (cref)) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ComponentServer_i::remove_container - " + "Error: Received nil container reference\n")); + throw Components::RemoveFailure (); + } + + try + { + CONTAINERS::ITERATOR i (this->containers_.begin ()); + + // @@ TODO: artifact from when this was a sequence, should probably use .find, + // which will work properly with the new parameterized set class. + for (CONTAINERS::iterator i = this->containers_.begin (); + i.done () != 1; i.advance ()) + { + if (CORBA::is_nil (*i)) + { + ACE_ERROR ((LM_WARNING, CLINFO + "CIAO_ComponentServer_i::remove_container - " + "Managed container reference is nil, skipping.\n")); + continue; + } + + if ((*i)->_is_equivalent (cref)) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_ComponentServer_i::remove_container - Found container, invoking remove....\n")); + cref->remove (); + if (this->containers_.remove (*i) != 0) + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ComponentServer_i::remove_container - Unable to remove " + "container reference from internal structure....\n")); + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_ComponentServer_i::remove_container - Remove completed, destroying object, " + "now manage %u containers\n", this->containers_.size ())); + return; + } + } + } + catch (const CORBA::Exception &ex) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer_i::remove_container - " + "Caught CORBA exception whilst removing container: %C\n", + ex._info ().c_str ())); + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer_i::remove_container - Error: Unknown exception caught while removing a container.\n")); + } + throw Components::RemoveFailure (); + } + + + ::Components::Deployment::Containers * + CIAO_ComponentServer_i::get_containers (void) + { + CIAO_TRACE("CIAO_ComponentServer_i::get_containers"); + + ::Components::Deployment::Containers *tmp = 0; + ACE_NEW_THROW_EX (tmp, + ::Components::Deployment::Containers (this->containers_.size ()), + CORBA::NO_MEMORY ()); + + ::Components::Deployment::Containers_var retval (tmp); + CORBA::ULong pos (0); + retval->length (this->containers_.size ()); + + for (CONTAINERS::iterator i = this->containers_.begin (); + i.done () != 1; i.advance ()) + { + retval[pos++] = ::CIAO::Deployment::Container::_duplicate (*i); + } + + return retval._retn (); + } + + + void + CIAO_ComponentServer_i::remove (void) + { + CIAO_TRACE("CIAO_ComponentServer_i::remove"); + + bool successful = true; + + for (CONTAINERS::iterator i = this->containers_.begin (); + i.done () != 1; i.advance ()) + { + try + { + (*i)->remove (); + } + catch (const CORBA::Exception &ex) + { + successful = false; + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ComponentServer_i::remove - " + "Intercepted CORBA exception while trying to remove a container:%C\n", + ex._info ().c_str ())); + } + catch (...) + { + successful = false; + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ComponentServer_i::remove - " + "Intercepted exception while trying to remove a container\n")); + } + } + + this->containers_.reset (); + + if (!successful) + throw ::Components::RemoveFailure (); + } + + void + CIAO_ComponentServer_i::init (::Components::Deployment::ServerActivator_ptr sa, + Components::ConfigValues *cvs) + { + this->serv_act_ = ::Components::Deployment::ServerActivator::_duplicate(sa); + if (cvs != 0) + { + this->config_values_ = cvs; + + for (CORBA::ULong i = 0; i < this->config_values_->length (); ++i) + { + if (ACE_OS::strcmp (CIAO::Deployment::COMPONENTINSTALLATION_REF, + this->config_values_[i]->name ()) == 0) + { + Components::Deployment::ComponentInstallation_ptr tmp; + this->config_values_[i]->value () >>= tmp; + this->ci_ = Components::Deployment::ComponentInstallation::_duplicate (tmp); + } + } + } + } + } +} diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.h b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.h new file mode 100644 index 00000000000..354bc5a7af7 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Impl.h @@ -0,0 +1,82 @@ +// $Id$ +/** + * @file CIAO_ComponentServer_Impl.h + * @author William R. Otte + */ + +#ifndef CIAO_COMPONENTSERVER_IMPL_H_ +#define CIAO_COMPONENTSERVER_IMPL_H_ + +#include "ciao/ComponentServer/CIAO_ComponentServerS.h" +#include "ciao/ComponentServer/CIAO_CS_ClientC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/String_Base.h" +#include "ace/Unbounded_Set_Ex.h" + +namespace CIAO +{ + namespace Deployment + { + class CIAO_COMPONENTSERVER_SVNT_Export CIAO_ComponentServer_i + : public virtual POA_CIAO::Deployment::ComponentServer + { + public: + // Constructor + CIAO_ComponentServer_i (const ACE_CString &uuid, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa); + + // Destructor + virtual ~CIAO_ComponentServer_i (void); + + virtual void shutdown (void); + + virtual ::Components::ConfigValues * configuration (void); + + virtual + ::Components::Deployment::ServerActivator_ptr get_server_activator (void); + + virtual + ::Components::Deployment::Container_ptr create_container (const ::Components::ConfigValues & config); + + virtual + void remove_container (::Components::Deployment::Container_ptr cref); + + virtual + ::Components::Deployment::Containers * get_containers (void); + + virtual + void remove (void); + + void init (::Components::Deployment::ServerActivator_ptr sa, + Components::ConfigValues *cvs); + + private: + ACE_CString uuid_; + CORBA::ORB_var orb_; + PortableServer::POA_var poa_; + ::Components::Deployment::ServerActivator_var serv_act_; + Components::ConfigValues_var config_values_; + + template + struct _is_equivalent + { + bool operator() (const T &a, const T &b) const + { + return a->_is_equivalent (const_cast (b)); + } + }; + + typedef ACE_Unbounded_Set_Ex > CONTAINERS; + + CONTAINERS containers_; + + Components::Deployment::ComponentInstallation_var ci_; + }; + } +} + +#endif diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp new file mode 100644 index 00000000000..3909a4f0b36 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp @@ -0,0 +1,308 @@ +/** + * @file CIAO_ComponentServer_Task.cpp + * @author William R. Otte + * $Id$ + * + * Implementation and main for CIAO_ComponentServer. + */ + +#include "CIAO_ComponentServer_Task.h" + +#include "ace/OS_NS_string.h" +#include "ace/Log_Msg.h" +#include "ace/Get_Opt.h" +#include "tao/ORB.h" +#include "tao/PortableServer/PortableServer.h" +#include "ciao/Logger/Logger_Service.h" +#include "ciao/Logger/Log_Macros.h" +#include "CIAO_ComponentServer_Impl.h" +#include "Server_init.h" + +namespace CIAO +{ + namespace Deployment + { + ComponentServer_Task::Error::Error(const ACE_CString &err) : err_(err) + { + } + + ComponentServer_Task::ComponentServer_Task (int argc, ACE_TCHAR **argv) + { + CIAO_TRACE ("CIAO_ComponentServer_Task::CIAO_ComponentServer_Task ()"); + + Logger_Service + *clf = ACE_Dynamic_Service::instance ("CIAO_Logger"); + + if (clf) + { + clf->init (argc, argv); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ComponentServer_Task::CIAO_ComponentServer_Task - " + "Creating ORB\n")); + + this->orb_ = CORBA::ORB_init (argc, argv); + + this->parse_args (argc, argv); + + CIAO::Server_init (this->orb_.in ()); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ComponentServer_Task::CIAO_ComponentServer_Task - " + "CIAO_ComponentServer object created.\n")); + } + + int + ComponentServer_Task::svc (void) + { + CIAO_TRACE ("ComponentServer_Task::svc"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "ComponentServer_Task::svc - " + "Activating the root POA\n")); + + CORBA::Object_var object = + this->orb_->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + poa_manager->activate (); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "ComponentServer_Task::svc - " + "Creating server implementation object\n")); + + CIAO::Deployment::CIAO_ComponentServer_i *ci_srv = 0; + ACE_NEW_NORETURN (ci_srv, + CIAO_ComponentServer_i (this->uuid_, + this->orb_.in (), + root_poa.in ())); + + if (ci_srv == 0) + { + CIAO_ERROR (1, (LM_CRITICAL, + "ComponentServer_Task::run - " + "Out of memory error while allocating servant.")); + throw Error ("Out of memory whilst allocating servant."); + } + + PortableServer::ServantBase_var safe_config = ci_srv; + PortableServer::ObjectId_var id = + root_poa->activate_object (ci_srv); + CORBA::Object_var cs_object = root_poa->id_to_reference (id.in ()); + ComponentServer_var cs = + ComponentServer::_narrow (cs_object.in ()); + + if (this->output_file_ != ACE_TEXT("")) + { + CORBA::String_var ior = this->orb_->object_to_string (cs.in ()); + ::CIAO::Utility::write_IOR (this->output_file_.c_str (), ior.in ()); + } + + if (this->callback_ior_str_ != ACE_TEXT("")) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::run - " + "Resolving callback IOR\n")); + CORBA::Object_ptr obj = + this->orb_->string_to_object (this->callback_ior_str_.c_str ()); + ServerActivator_var sa (ServerActivator::_narrow (obj)); + + if (CORBA::is_nil (sa.in ())) + { + CIAO_DEBUG (6, (LM_ERROR, CLINFO + "ComponentServer_Task::svc - " + "Failed to narrow callback IOR [%s]\n", + this->callback_ior_str_.c_str ())); + throw Error ("Failed to narrow callback IOR"); + } + + Components::ConfigValues_var config; + { + Components::ConfigValues *cf = 0; + ACE_NEW_NORETURN (cf, Components::ConfigValues (0)); + + if (cf == 0) + { + CIAO_ERROR (1, (LM_CRITICAL, "ComponentServer_Task::run - " + "Out of memory error while allocating config values.")); + } + else + { + config = cf; + } + } + + // Make callback. + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "ComponentServer_Task::svc - " + "Making callback on my ServerActivator\n")); + + try + { + // Callback to NodeApplication to get configuration + sa->component_server_callback (cs.in (), + this->uuid_.c_str (), + config.out ()); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::svc - " + "Configuration received\n")); + // @@WO: Probably need to do something with these config values. + + ci_srv->init (sa.in (), config._retn ()); + + CIAO_DEBUG (6, (LM_NOTICE, CLINFO "ComponentServer_Task::svc - " + "Configuration complete for component server %C\n", + this->uuid_.c_str ())); + + sa->configuration_complete (this->uuid_.c_str ()); + } + catch (const CORBA::BAD_PARAM &) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "ComponentServer_Task::svc - " + "The Callback IOR provided pointed to the " + "wrong ServerActivator\n")); + throw Error ("Bad callback IOR"); + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "ComponentServer_Task::svc - " + "Caught exception while calling back\n")); + throw Error ("Caught exception while calling back"); + } + + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::svc - " + "Initializing ComponentServer without ServantActivator " + "callback\n")); + ci_srv->init (0, 0); + } + + this->orb_->run (); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::svc - " + "ORB Event loop completed.\n")); + + root_poa->destroy (1, 1); + + this->orb_->destroy (); + + return 0; + } + + void + ComponentServer_Task::run (void) + { + CIAO_TRACE ("ComponentServer_Task::run"); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentServer_Task::run - Starting ORB\n")); + this->svc (); + CIAO_DEBUG (6, (LM_INFO, + CLINFO "ComponentServer_Task::run - ORB has " + "shutdown, terminating ComponentServer\n")); + } + + void + ComponentServer_Task::parse_args (int argc, ACE_TCHAR **argv) + { + CIAO_TRACE ("ComponentServer_Task::parse_args"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::parse_args - " + "parsing arguments...\n")); + + ACE_Get_Opt opts (argc, argv, ACE_TEXT("hu:c:"), 1, 0, + ACE_Get_Opt::RETURN_IN_ORDER); + opts.long_option (ACE_TEXT("uuid"), 'u', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("callback-ior"), 'c', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("help"), 'h'); + opts.long_option (ACE_TEXT("log-level"),'l', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("trace"),'t', ACE_Get_Opt::NO_ARG); + opts.long_option (ACE_TEXT("output-ior"),'o', ACE_Get_Opt::ARG_REQUIRED); + + int c = 0; + while ((c = opts ()) != -1) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::parse_args - " + "Found option: \"%s\" with argument \"%s\"\n", + opts.last_option (), opts.opt_arg ())); + + switch (c) + { + case 'u': + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentServer_Task::parse_args - " + "uuid is %s\n", + opts.opt_arg ())); + this->uuid_ = ACE_TEXT_ALWAYS_CHAR (opts.opt_arg ()); + break; + + case 'c': + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentServer_Task::parse_args - " + "callback ior is %s\n", + opts.opt_arg ())); + this->callback_ior_str_ = opts.opt_arg (); + break; + + case 'l': + { + continue; // no-op, already taken care of + } + + case 't': + continue; // already taken care of + + case 'o': + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "ComponentServer_Task::parse_args - " + "IOR Output file: %s\n", + opts.opt_arg ())); + this->output_file_ = opts.opt_arg (); + break; + + case 'h': + this->usage (); + throw Error ("Command line help requested, bailing out...."); + + default: + CIAO_ERROR (1, (LM_ERROR, CLINFO " Unknown option: %s\n", + opts.last_option ())); + this->usage (); + ACE_CString err ("Unknown option "); + err += ACE_TEXT_ALWAYS_CHAR (opts.last_option ()); + throw Error (err); + } + } + + // check required options. + if (this->uuid_ == "") + throw Error ("Option required: -u|--uuid"); + if (this->callback_ior_str_ == ACE_TEXT("")) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "ComponentServer_Task::parse_args - Starting ComponentServer without a callback IOR\n")); + } + } + + void + ComponentServer_Task::usage (void) + { + CIAO_TRACE ("ComponentServer_Task::usage"); + // Shouldn't be subject to CIAO's logging policy + ACE_ERROR ((LM_EMERGENCY, "Usage: CIAO_ComponentServer \n" + "Options:\n" + "\t-h|--help\t\t\t\tShow help\n" + "\t-l|--log-level \t\t\tSets log level (default 5). 1 - most detailed.\n" + "\t-u|--uuid \t\t\tSets UUID of spawned component server (required)\n" + "\t-c|--callback-ior \t\tSets callback url for the spawning ServerActivator.\n" + "\t-o|--output-ior \t\tOutputs the IOR of the component server object to file\n" + )); + + } + } +} + + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h new file mode 100644 index 00000000000..ba3f00d5c31 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h @@ -0,0 +1,50 @@ +// $Id$ +/** + * @file CIAO_ComponentServer_Task.h + * @author William R. Otte + * + * Defines interface for the bootstrap element of the CIAO Component + * Server. + */ + +#ifndef CIAO_COMPONENTSERVER_TASK_H_ +#define CIAO_COMPONENTSERVER_TASK_H_ + +#include "ace/String_Base.h" +#include "ace/Task.h" +#include "tao/ORB.h" + +namespace CIAO +{ + namespace Deployment + { + class ComponentServer_Task : ACE_Task_Base + { + public: + ComponentServer_Task (int argc, ACE_TCHAR **argv); + + int svc (void); + + struct Error + { + Error (const ACE_CString &err); + ACE_CString err_; + }; + + void run (void); + + private: + void parse_args (int argc, ACE_TCHAR **argv); + + void usage (void); + + CORBA::ORB_var orb_; + + ACE_CString uuid_; + ACE_TString callback_ior_str_; + ACE_TString output_file_; + }; + } +} + +#endif diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.cpp new file mode 100644 index 00000000000..553bec84eb2 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.cpp @@ -0,0 +1,490 @@ +// $Id$ +#include "CIAO_Container_Impl.h" + +#include "ace/Log_Msg.h" +#include "ccm/CCM_HomeC.h" +#include "CIAO_PropertiesC.h" +#include "CIAO_CS_ClientC.h" +#include "Client_init.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace Deployment + { + // Constructor + CIAO_Container_i::CIAO_Container_i (const Components::ConfigValues &config, + const Static_Config_EntryPoints_Maps *static_entrypts, + const char *name, + const CORBA::PolicyList *policies, + Components::Deployment::ComponentInstallation_ptr ci, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa) + : orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + config_ (config.length ()), + static_entrypts_maps_ (static_entrypts), + ci_ (Components::Deployment::ComponentInstallation::_duplicate (ci)) + { + CIAO_TRACE("CIAO_Container_i::CIAO_Container_i"); + + for (CORBA::ULong i = 0; i < config.length (); ++i) + { + this->config_[i] = config[i]; + } + + try + { + if (this->static_entrypts_maps_ == 0) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_Container_i: creating Session container with dynamic linkage\n")); + this->container_ = new CIAO::Session_Container (this->orb_.in (), this->poa_.in (), this, false, + 0, name, policies); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_Container_i: creating Session container with static linkage\n")); + this->container_ = new CIAO::Session_Container (this->orb_.in (), this->poa_.in (), this, true, + this->static_entrypts_maps_, + name, policies); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::CIAO_Container_i - " + "Caught exception while allocating container implementation\n")); + throw; + } + } + + + // Destructor + CIAO_Container_i::~CIAO_Container_i (void) + { + CIAO_TRACE("CIAO_Container_i::~CIAO_Container_i"); + } + + ::Components::CCMObject_ptr + CIAO_Container_i::install_component (const char * id, + const char * entrypt, + const ::Components::ConfigValues & config) + { + CIAO_TRACE("CIAO_Container_i::install_component"); + + if (!id) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::install_component - " + "No home ID provided\n")); + throw ::Components::Deployment::InvalidConfiguration (); + } + + Components::CCMObject_var comp; + + if (this->component_map_.find (id, comp) == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::install_component - " + "Component with id %C already installed, aborting\n", + id)); + throw Components::CreateFailure (); + } + + if (!entrypt) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::install_component - " + "No executor entrypoint found.\n")); + throw ::Components::Deployment::InvalidConfiguration (); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "CIAO_Container_i::install_component - " + "Attempting to install home with id [%C]\n", + id)); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_component - " + "Extracting ConfigValues from sequence of length [%u]\n", + config.length ())); + + CIAO::Utility::CONFIGVALUE_MAP cm; + CIAO::Utility::build_config_values_map (cm, config); + CORBA::Any val; + + const char *tmp = 0; + CORBA::String_var exec_art, svnt_art, svnt_entry; + + if (cm.find (SVNT_ENTRYPT, val) == 0) + { + val >>= tmp; + svnt_entry = tmp; + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_component - " + "Found Servant entrypoint %C\n", svnt_entry.in ())); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_component - " + "Error: No Servant entrypoint provided, aborting installation\n")); + throw Components::InvalidConfiguration (); + } + + if (cm.find (SVNT_ARTIFACT, val) == 0) + { + val >>= tmp; + svnt_art = this->ci_->get_implementation (tmp); + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_component - " + "Found Servant artifact %C\n", svnt_art.in ())); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_component - " + "Error: No Servant artifact provided, aborting installation\n")); + throw Components::InvalidConfiguration (); + } + + + if (cm.find (EXEC_ARTIFACT, val) == 0) + { + val >>= tmp; + exec_art = this->ci_->get_implementation (tmp); + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_component - " + "Found executor artifact: %C\n", exec_art.in ())); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_component - " + "Error: No Executor artifact provided, aborting installation\n")); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_component - " + "Extraction resulted in map of [%u] values\n", cm.current_size ())); + + comp = this->container_->install_component (exec_art, + entrypt, + svnt_art, + svnt_entry, + id); + + if (this->component_map_.bind (id, + Components::CCMObject::_duplicate (comp.in ())) == -1) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_component - " + "Unable to bind componnet into component map\n")); + } + + return comp._retn (); + } + + void + CIAO_Container_i::remove_component (::Components::CCMObject_ptr cref) + { + CIAO_TRACE("CIAO_Container_i::remove_component"); + + Component_Iterator i = this->component_map_.begin (); + while (!i.done ()) + { + if (i->item ()->_is_equivalent (cref)) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_Container_i::remove_component - " + "Successfully found matching component\n")); + break; + } + i.advance (); + } + + if (i.done ()) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::remove_component - " + "Unable to find matching component managed by this container, throwing RemoveFailure\n")); + throw Components::RemoveFailure (); + } + + if (!CORBA::is_nil (this->container_.in ())) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_Container_i::remove_component - " + "Invoking remove on the container impl for component %C.\n", + i->key ().c_str ())); + this->container_->uninstall_component (cref); + CIAO_DEBUG (6, (LM_INFO, CLINFO "CIAO_Container_i::remove_component - " + "Successfully removed component %C\n", + i->key ().c_str ())); + } + + if (this->component_map_.unbind (i->key ()) != 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::remove_component - " + "Unable to unbind removed component with id %C from component map\n", + i->key ().c_str ())); + } + } + + ::Components::CCMObjectSeq * + CIAO_Container_i::get_components (void) + { + CIAO_TRACE("CIAO_Container_i::get_components"); + throw CORBA::NO_IMPLEMENT (); + } + + ::Components::ConfigValues * + CIAO_Container_i::configuration (void) + { + CIAO_TRACE("CIAO_Container_i::configuration"); + throw CORBA::NO_IMPLEMENT (); + } + + ::Components::Deployment::ComponentServer_ptr + CIAO_Container_i::get_component_server (void) + { + CIAO_TRACE("CIAO_Container_i::get_component_server"); + throw CORBA::NO_IMPLEMENT (); + } + + ::Components::CCMHome_ptr + CIAO_Container_i::install_home (const char * id, + const char * entrypt, + const ::Components::ConfigValues & config) + { + CIAO_TRACE("CIAO_Container_i::install_home"); + + if (!id) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::install_home - " + "No home ID provided\n")); + throw ::Components::Deployment::InvalidConfiguration (); + } + + Components::CCMHome_var home; + + if (this->home_map_.find (id, home) == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::install_home - " + "Home with id %C already installed, aborting\n", + id)); + throw Components::CreateFailure (); + } + + if (!entrypt) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::install_home - " + "No executor entrypoint found.\n")); + throw ::Components::Deployment::InvalidConfiguration (); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "CIAO_Container_i::install_home - " + "Attempting to install home with id [%C]\n", id)); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_home - " + "Extracting ConfigValues from sequence of length [%u]\n", + config.length ())); + + CIAO::Utility::CONFIGVALUE_MAP cm; + CIAO::Utility::build_config_values_map (cm, config); + CORBA::Any val; + + const char *tmp = 0; + CORBA::String_var exec_art, svnt_art, svnt_entry; + if (cm.find (SVNT_ENTRYPT, val) == 0) + { + val >>= tmp; + svnt_entry = tmp; + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_home - " + "Found Servant entrypoint %C\n", svnt_entry.in ())); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_home - " + "Error: No Servant entrypoint provided, aborting installation\n")); + throw Components::InvalidConfiguration (); + } + + if (cm.find (SVNT_ARTIFACT, val) == 0) + { + val >>= tmp; + svnt_art = this->ci_->get_implementation (tmp); + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_home - " + "Found Servant artifact %C\n", svnt_art.in ())); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_home - " + "Error: No Servant artifact provided, aborting installation\n")); + throw Components::InvalidConfiguration (); + } + + + if (cm.find (EXEC_ARTIFACT, val) == 0) + { + val >>= tmp; + exec_art = this->ci_->get_implementation (tmp); + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_home - " + "Found executor artifact: %C\n", exec_art.in ())); + } + else + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_home - " + "Error: No Executor artifact provided, aborting installation\n")); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_Container_i::install_home - " + "Extraction resulted in map of [%u] values", cm.current_size ())); + + + // extract config values here... + + //CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_Container_i::install_home - ", + //"Executor entrypoint [%C], servant entrypoint [%C], servant library [%C]\n", + //entrypt, svnt_entrypt.in (), svnt_library.in ())); + + home = this->container_->install_home (exec_art, + entrypt, + svnt_art, + svnt_entry, + id); + + if (this->home_map_.bind (id, + Components::CCMHome::_duplicate (home.in ())) == -1) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_Container_i::install_home - " + "Unable to bind home into home map\n")); + } + + return home._retn (); + } + + void + CIAO_Container_i::remove_home (::Components::CCMHome_ptr href) + { + CIAO_TRACE("CIAO_Container_i::remove_home"); + + Home_Iterator i = this->home_map_.begin (); + while (!i.done ()) + { + if (i->item ()->_is_equivalent (href)) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_Container_i::remove_home - " + "Successfully found matching home\n")); + break; + } + i.advance (); + } + + if (i.done ()) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::remove_home - " + "Unable to find matching home managed by this container, throwing RemoveFailure\n")); + throw Components::RemoveFailure (); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_Container_i::remove_home - " + "Invoking remove on the container impl for home %C.\n", + i->key ().c_str ())); + this->container_->uninstall_home (href); + CIAO_DEBUG (6, (LM_INFO, CLINFO "CIAO_Container_i::remove_home - " + "Successfully removed home %C\n", + i->key ().c_str ())); + + if (this->home_map_.unbind (i->key ()) != 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_Container_i::remove_home - " + "Unable to unbind removed home with id %C from home map\n", + i->key ().c_str ())); + } + } + + ::Components::CCMHomes * + CIAO_Container_i::get_homes (void) + { + CIAO_TRACE("CIAO_Container_i::get_homes"); + + ::Components::CCMHomes *tmp_homes = 0; + + ACE_NEW_THROW_EX (tmp_homes, + ::Components::CCMHomes (this->home_map_.current_size ()), + CORBA::NO_MEMORY ()); + + ::Components::CCMHomes_var retval (tmp_homes); + retval->length (this->home_map_.current_size ()); + Home_Iterator i = this->home_map_.begin (); + CORBA::ULong pos = 0; + while (!i.done ()) + { + retval[pos++] = ::Components::CCMHome::_duplicate (i->item ().in ()); + i.advance (); + } + + return retval._retn (); + } + + void + CIAO_Container_i::remove (void) + { + CIAO_TRACE("CIAO_Container_i::remove"); + + if (this->home_map_.current_size () != 0 || + this->component_map_.current_size () != 0) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO "CIAO_Container_i::remove - " + "Attempting to remove container that still has %u homes and %u components installed\n", + this->home_map_.current_size (), + this->component_map_.current_size ())); + } + } + + void + CIAO_Container_i::activate_component (::Components::CCMObject_ptr comp) + { + CIAO_TRACE ("CIAO_Container_i::activate_component"); + + this->container_->activate_component (comp); + } + + + void + CIAO_Container_i::passivate_component (::Components::CCMObject_ptr comp) + { + CIAO_TRACE ("CIAO_Container_i::passivate_component"); + + this->container_->passivate_component (comp); + } + + PortableServer::POA_ptr + CIAO_Container_i::_default_POA (void) + { + CIAO_TRACE ("CIAO_Container_i::_default_POA"); + return PortableServer::POA::_duplicate (this->poa_.in ()); + } + + void CIAO_Container_i::connect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port) + { + CIAO_TRACE ("CIAO_Container_i::connect_local_facet"); + this->container_->connect_local_facet (provider, provider_port, user, user_port); + + } + + void CIAO_Container_i::disconnect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port) + { + CIAO_TRACE ("CIAO_Container_i::connect_local_facet"); + this->container_->disconnect_local_facet (provider, provider_port, user, user_port); + } + } +} diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.h b/modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.h new file mode 100644 index 00000000000..ea0b19e1a2d --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_Container_Impl.h @@ -0,0 +1,129 @@ +// $Id$ +/** + * @file CIAO_Container_Impl.h + * @author William R. Otte + */ + +#ifndef CIAO_CONTAINER_IMPL_H_ +#define CIAO_CONTAINER_IMPL_H_ + +#include "CIAO_ComponentServerS.h" +#include "CIAO_CS_ClientC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ciao/Containers/Session/Session_Container.h" + +#include "CIAO_ComponentServer_svnt_export.h" + +namespace CIAO +{ + namespace Deployment + { + /** + * @class CIAO_Container + * @brief Implements external interface for CIAO container. + */ + class CIAO_COMPONENTSERVER_SVNT_Export CIAO_Container_i + : public virtual POA_CIAO::Deployment::Container + { + public: + /// Constructor + CIAO_Container_i (const Components::ConfigValues &config, + const Static_Config_EntryPoints_Maps *, + const char *name, + const CORBA::PolicyList *, + Components::Deployment::ComponentInstallation_ptr, + CORBA::ORB_ptr, + PortableServer::POA_ptr); + + /// Destructor + virtual ~CIAO_Container_i (void); + + virtual ::Components::CCMObject_ptr install_component ( + const char * id, + const char * entrypt, + const ::Components::ConfigValues & config); + + virtual void remove_component (::Components::CCMObject_ptr cref); + + virtual ::Components::CCMObjectSeq * get_components (void); + + virtual ::Components::ConfigValues * configuration (void); + + virtual + ::Components::Deployment::ComponentServer_ptr get_component_server (void); + + virtual ::Components::CCMHome_ptr install_home (const char * id, + const char * entrypt, + const ::Components::ConfigValues & config); + + virtual void remove_home (::Components::CCMHome_ptr href); + + virtual ::Components::CCMHomes * get_homes (void); + + virtual void remove (void); + + virtual void activate_component (::Components::CCMObject_ptr comp); + + virtual void passivate_component (::Components::CCMObject_ptr comp); + + virtual PortableServer::POA_ptr _default_POA (void); + + virtual void connect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port); + + virtual void disconnect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port); + + private: + /// Keep a pointer to the managing ORB serving this servant. + CORBA::ORB_var orb_; + + PortableServer::POA_var poa_; + + CIAO::Container_var container_; + + Components::ConfigValues config_; + + const Static_Config_EntryPoints_Maps* static_entrypts_maps_; + + /// To store all created CCMHome object + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> CCMHome_Map; + + typedef CCMHome_Map::iterator Home_Iterator; + CCMHome_Map home_map_; + + /// To store all created Component object. + // @@Gan, see how this caching is duplicated.. + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> CCMComponent_Map; + + typedef CCMComponent_Map::iterator Component_Iterator; + CCMComponent_Map component_map_; + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> CCMNaming_Map; + CCMNaming_Map naming_map_; + + Components::Deployment::ComponentInstallation_var ci_; + }; + } +} +#endif /* CIAO_CONTAINER_IMPL_H_ */ diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_FailureReasons.idl b/modules/CIAO/ciao/ComponentServer/CIAO_FailureReasons.idl new file mode 100644 index 00000000000..c5bae8c9cbc --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_FailureReasons.idl @@ -0,0 +1,25 @@ +/** + * @file CIAO_FailureReasons.idl + * @author William R. Otte + * $Id$ + * Failure code definitions for CIAO. The VID is based on that of TAO, but + * our failure reasons start at that base since this is a different namespace. + */ + +#ifndef CIAO_FAILUREREASONS_IDL +#define CIAO_FAILUREREASONS_IDL + +#include + +module CIAO +{ + const Components::FailureReason VID = 0x54410000; + const Components::FailureReason MAX_FAILURE = VID | 0xfff; + + // Container failures + const Components::FailureReason SERVER_SPAWN_FAILURE = VID | 0x001; + const Components::FailureReason CALLBACK_TIMEOUT_EXCEEDED = VID | 0x002; +}; + +#endif + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_Properties.idl b/modules/CIAO/ciao/ComponentServer/CIAO_Properties.idl new file mode 100644 index 00000000000..bb4a39995c4 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_Properties.idl @@ -0,0 +1,27 @@ +/** + * @file CIAO_Properties.idl + * @author William R. Otte + * $Id$ + * Standardizes names of configvalues used by CIAO. + */ + +#ifndef CIAO_PROPERTIES_IDL +#define CIAO_PROPERTIES_IDL + +module CIAO +{ + module Deployment + { + const string SVNT_ENTRYPT = "edu.vanderbilt.dre.CIAO.ServantEntrypoint"; + const string SVNT_ARTIFACT = "edu.vanderbilt.dre.CIAO.ServantArtifact"; + const string EXEC_ARTIFACT = "edu.vanderbilt.dre.CIAO.ExecutorArtifact"; + const string SERVER_UUID = "edu.vanderbilt.dre.CIAO.ServerUUID"; + const string SERVER_EXECUTABLE = "edu.vanderbilt.dre.CIAO.ComponentServer.Executable"; + const string SERVER_ARGUMENTS = "edu.vanderbilt.dre.CIAO.ComponentServer.Args"; + const string SERVER_TIMEOUT = "edu.vanderbilt.dre.CIAO.ServerTimeout"; + const string SERVER_MULTITHREAD = "edu.vanderbilt.dre.CIAO.Multithreaded"; + const string REGISTER_NAMING = "edu.vanderbilt.dre.CIAO.RegisterNaming"; + const string COMPONENTINSTALLATION_REF = "edu.vanderbilt.dre.CIAO.ComponentInstallation"; + }; +}; +#endif /* CIAO_PROPERTIES_IDL */ diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer.cpp new file mode 100644 index 00000000000..087b4ddcb1f --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer.cpp @@ -0,0 +1,43 @@ +/** + * @file CIAO_RTComponentServer.cpp + * + * $Id$ + * + * Implementation and main for CIAO_RTComponentServer. + */ + +#include "CIAO_RTComponentServer_Task.h" +#include "ace/Thread_Manager.h" +#include "ciao/Logger/Log_Macros.h" + +int ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + // Tracing disabled by default + CIAO_DISABLE_TRACE (); + + CIAO_TRACE ("CIAO_RTComponentServer::ACE_TMAIN"); + + int retval = 0; + try + { + CIAO::Deployment::RTComponentServer_Task cs (argc, argv); + cs.run (); + + // Wait for the threads to exit. + //ACE_Thread_Manager::instance ()->wait (); + } + catch (CIAO::Deployment::RTComponentServer_Task::Error &e) + { + CIAO_DEBUG (6, (LM_ALERT, CLINFO "CIAO_RTComponentServer main: Caught ComponentServer exception: %C\n", + e.err_.c_str ())); + retval = -1; + } + catch (...) + { + CIAO_DEBUG (6, (LM_ALERT, CLINFO "CIAO_RTComponentServer main: Caught unknown exception.\n")); + retval = -1; + } + + return retval; +} + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp new file mode 100644 index 00000000000..4ce01c6c530 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp @@ -0,0 +1,422 @@ +/** + * @file CIAO_RTComponentServer_Task.cpp + * @author Johnny Willemsen + * $Id$ + * + * Implementation and main for CIAO_RTComponentServer. + */ + +#include "CIAO_RTComponentServer_Task.h" + +#include "ace/OS_NS_string.h" +#include "ace/Log_Msg.h" +#include "ace/Get_Opt.h" +#include "tao/ORB.h" +#include "tao/PortableServer/PortableServer.h" +#include "tao/RTPortableServer/RTPortableServer.h" +#include "ciao/Logger/Logger_Service.h" +#include "ciao/Logger/Log_Macros.h" +#include "CIAO_ComponentServer_Impl.h" +#include "Server_init.h" +#include "tao/RTCORBA/Priority_Mapping_Manager.h" +#include "tao/Protocols_Hooks.h" +#include "tao/ORB_Core.h" + +namespace CIAO +{ + namespace Deployment + { + CORBA::Short + get_implicit_thread_CORBA_priority (CORBA::ORB_ptr orb) + { + CORBA::Object_var obj = + orb->resolve_initial_references (TAO_OBJID_PRIORITYMAPPINGMANAGER); + + TAO_Priority_Mapping_Manager_var mapping_manager = + TAO_Priority_Mapping_Manager::_narrow (obj.in ()); + + if (CORBA::is_nil (mapping_manager.in ())) + throw CORBA::INTERNAL (); + + RTCORBA::PriorityMapping *pm = + mapping_manager.in ()->mapping (); + + TAO_Protocols_Hooks *tph = + orb->orb_core ()->get_protocols_hooks (); + + CORBA::Short corba_priority; + CORBA::Short native_priority; + + if (tph->get_thread_native_priority (native_priority) == 0 && + pm->to_CORBA (native_priority, corba_priority)) + { + return corba_priority; + } + + ACE_DEBUG ((LM_DEBUG, "get_implicit_thread_CORBA_priority - failed to access priority\n")); + throw CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); + } + + RTComponentServer_Task::Error::Error(const ACE_CString &err) : err_(err) + { + } + + RTComponentServer_Task::RTComponentServer_Task (int argc, ACE_TCHAR **argv) : + static_threads_ (0), + dynamic_threads_ (0) + { + CIAO_TRACE ("CIAO_RTComponentServer_Task::CIAO_RTComponentServer_Task"); + + Logger_Service + *clf = ACE_Dynamic_Service::instance ("CIAO_Logger"); + + if (clf) + { + clf->init (argc, argv); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_RTComponentServer_Task::CIAO_RTComponentServer_Task - " + "Creating ORB\n")); + + this->orb_ = CORBA::ORB_init (argc, argv); + + this->parse_args (argc, argv); + + CIAO::Server_init (this->orb_.in ()); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_RTComponentServer_Task::CIAO_RTComponentServer_Task - " + "CIAO_ComponentServer object created.\n")); + } + + int + RTComponentServer_Task::svc (void) + { + CIAO_TRACE ("RTComponentServer_Task::svc"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "RTComponentServer_Task::svc - " + "Activating the root POA\n")); + + CORBA::Object_var object = + this->orb_->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + poa_manager->activate (); + + object = + this->orb_->resolve_initial_references ("RTORB"); + + RTCORBA::RTORB_var rt_orb = + RTCORBA::RTORB::_narrow (object.in ()); + CORBA::ULong stacksize = 0; + CORBA::Boolean allow_request_buffering = false; + CORBA::ULong max_buffered_requests = 0; + CORBA::ULong max_request_buffer_size = 0; + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "RTComponentServer_Task::svc - " + "Creating server implementation object\n")); + + CORBA::PolicyList policies (0); + + if (this->static_threads_ > 0) + { + object = + this->orb_->resolve_initial_references ("RTCurrent"); + + RTCORBA::Current_var current = + RTCORBA::Current::_narrow (object.in ()); + + RTCORBA::Priority default_thread_priority = + get_implicit_thread_CORBA_priority (this->orb_.in ()); + + RTCORBA::ThreadpoolId threadpool_id_1 = + rt_orb->create_threadpool (stacksize, + this->static_threads_, + this->dynamic_threads_, + default_thread_priority, + allow_request_buffering, + max_buffered_requests, + max_request_buffer_size); + + CORBA::Policy_var threadpool_policy_1 = + rt_orb->create_threadpool_policy (threadpool_id_1); + + policies.length (2); + policies[0] = + CORBA::Policy::_duplicate (threadpool_policy_1); + + policies[1] = + rt_orb->create_priority_model_policy (RTCORBA::SERVER_DECLARED, + 0); + } + + // Create the POA under the RootPOA. + PortableServer::POA_var poa = + root_poa->create_POA ("RTPOA", + poa_manager, + policies); + + // Creation of POAs is over. Destroy the Policy objects. + for (CORBA::ULong i = 0; + i < policies.length (); + ++i) + { + policies[i]->destroy (); + } + + CIAO::Deployment::CIAO_ComponentServer_i *ci_srv = 0; + ACE_NEW_NORETURN (ci_srv, + CIAO_ComponentServer_i (this->uuid_, + this->orb_.in (), + poa.in ())); + + if (ci_srv == 0) + { + CIAO_ERROR (1, (LM_CRITICAL, + "RTComponentServer_Task::run - " + "Out of memory error while allocating servant.")); + throw Error ("Out of memory whilst allocating servant."); + } + + PortableServer::ServantBase_var safe (ci_srv); + + PortableServer::ObjectId_var id = + poa->activate_object (ci_srv); + CORBA::Object_var cs_object = poa->id_to_reference (id.in ()); + ComponentServer_var cs = + ComponentServer::_narrow (cs_object.in ()); + + if (this->output_file_ != ACE_TEXT("")) + { + CORBA::String_var ior = this->orb_->object_to_string (cs.in ()); + ::CIAO::Utility::write_IOR (this->output_file_.c_str (), ior.in ()); + } + + + if (this->callback_ior_str_ != ACE_TEXT("")) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::run - " + "Resolving callback IOR\n")); + CORBA::Object_ptr obj = + this->orb_->string_to_object (this->callback_ior_str_.c_str ()); + ServerActivator_var sa (ServerActivator::_narrow (obj)); + + if (CORBA::is_nil (sa.in ())) + { + CIAO_DEBUG (6, (LM_ERROR, CLINFO + "RTComponentServer_Task::svc - " + "Failed to narrow callback IOR\n")); + throw Error ("Failed to narrow callback IOR"); + } + + Components::ConfigValues_var config; + { + Components::ConfigValues *cf = 0; + ACE_NEW_NORETURN (cf, Components::ConfigValues (0)); + + if (cf == 0) + { + CIAO_ERROR (1, (LM_CRITICAL, "RTComponentServer_Task::run - " + "Out of memory error while allocating config values.")); + } + else + { + config = cf; + } + } + + // Make callback. + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "RTComponentServer_Task::svc - " + "Making callback on my ServerActivator\n")); + + try + { + // Callback to NodeApplication to get configuration + sa->component_server_callback (cs.in (), + this->uuid_.c_str (), + config.out ()); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::svc - " + "Configuration received\n")); + // @@WO: Probably need to do something with these config values. + + ci_srv->init (sa.in (), config._retn ()); + + CIAO_DEBUG (6, (LM_NOTICE, CLINFO "RTComponentServer_Task::svc - " + "Configuration complete for component server %C\n", + this->uuid_.c_str ())); + + sa->configuration_complete (this->uuid_.c_str ()); + } + catch (const CORBA::BAD_PARAM &) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTComponentServer_Task::svc - " + "The Callback IOR provided pointed to the " + "wrong ServerActivator\n")); + throw Error ("Bad callback IOR"); + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTComponentServer_Task::svc - " + "Caught exception while calling back\n")); + throw Error ("Caught exception while calling back"); + } + + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::svc - " + "Initializing ComponentServer without ServantActivator " + "callback\n")); + ci_srv->init (0, 0); + } + + this->orb_->run (); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::svc - " + "ORB Event loop completed.\n")); + + root_poa->destroy (1, 1); + + this->orb_->destroy (); + + return 0; + } + + void + RTComponentServer_Task::run (void) + { + CIAO_TRACE ("RTComponentServer_Task::run"); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "RTComponentServer_Task::run - Starting ORB\n")); + this->svc (); + CIAO_DEBUG (6, (LM_INFO, + CLINFO "RTComponentServer_Task::run - ORB has " + "shutdown, terminating ComponentServer\n")); + } + + void + RTComponentServer_Task::parse_args (int argc, ACE_TCHAR **argv) + { + CIAO_TRACE ("RTComponentServer_Task::parse_args"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::parse_args - " + "parsing arguments...\n")); + + ACE_Get_Opt opts (argc, argv, ACE_TEXT("hu:c:s:d:"), 1, 0, + ACE_Get_Opt::RETURN_IN_ORDER); + opts.long_option (ACE_TEXT("uuid"), 'u', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("callback-ior"), 'c', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("help"), 'h'); + opts.long_option (ACE_TEXT("log-level"),'l', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("trace"),'t', ACE_Get_Opt::NO_ARG); + opts.long_option (ACE_TEXT("output-ior"),'o', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("static"),'s', ACE_Get_Opt::ARG_REQUIRED); + opts.long_option (ACE_TEXT("dynamic"),'d', ACE_Get_Opt::ARG_REQUIRED); + + int c = 0; + while ((c = opts ()) != -1) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::parse_args - " + "Found option: \"%s\" with argument \"%s\"\n", + opts.last_option (), opts.opt_arg ())); + + switch (c) + { + case 's': + this->static_threads_ = ACE_OS::atoi (opts.opt_arg ()); + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "RTComponentServer_Task::parse_args - " + "Using %d static threads\n", + this->static_threads_)); + break; + + case 'd': + this->dynamic_threads_ = ACE_OS::atoi (opts.opt_arg ()); + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "RTComponentServer_Task::parse_args - " + "Using %d dynamic threads\n", + this->dynamic_threads_)); + break; + + case 'u': + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "RTComponentServer_Task::parse_args - " + "uuid is %s\n", + opts.opt_arg ())); + this->uuid_ = ACE_TEXT_ALWAYS_CHAR (opts.opt_arg ()); + break; + + case 'c': + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "RTComponentServer_Task::parse_args - " + "callback ior is %s\n", + opts.opt_arg ())); + this->callback_ior_str_ = opts.opt_arg (); + break; + + case 'l': + { + continue; // no-op, already taken care of + } + + case 't': + continue; // already taken care of + + case 'o': + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "RTComponentServer_Task::parse_args - " + "IOR Output file: %s\n", + opts.opt_arg ())); + this->output_file_ = opts.opt_arg (); + break; + + case 'h': + this->usage (); + throw Error ("Command line help requested, bailing out...."); + + default: + CIAO_ERROR (1, (LM_ERROR, CLINFO " Unknown option: %s\n", + opts.last_option ())); + this->usage (); + ACE_CString err ("Unknown option "); + err += ACE_TEXT_ALWAYS_CHAR (opts.last_option ()); + throw Error (err); + } + } + + // check required options. + if (this->uuid_ == "") + throw Error ("Option required: -u|--uuid"); + if (this->callback_ior_str_ == ACE_TEXT("")) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "RTComponentServer_Task::parse_args - Starting ComponentServer without a callback IOR\n")); + } + } + + void + RTComponentServer_Task::usage (void) + { + CIAO_TRACE ("RTComponentServer_Task::usage"); + // Shouldn't be subject to CIAO's logging policy + ACE_ERROR ((LM_EMERGENCY, "Usage: CIAO_ComponentServer \n" + "Options:\n" + "\t-h|--help\t\t\t\tShow help\n" + "\t-l|--log-level \t\t\tSets log level (default 5). 1 - most detailed.\n" + "\t-u|--uuid \t\t\tSets UUID of spawned component server (required)\n" + "\t-c|--callback-ior \t\tSets callback url for the spawning ServerActivator.\n" + "\t-o|--output-ior \t\tOutputs the IOR of the component server object to file\n" + "\t-s|--static \t\tNumber of static threads to run\n" + "\t-d|--dynamic \t\tNumber of dynamic threads to run\n" + )); + + } + } +} + + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h b/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h new file mode 100644 index 00000000000..4212bcb7751 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h @@ -0,0 +1,54 @@ +// $Id$ +/** + * @file CIAO_RTComponentServer_Task.h + * @author William R. Otte + * + * Defines interface for the bootstrap element of the CIAO Component + * Server. + */ + +#ifndef CIAO_COMPONENTSERVER_TASK_H_ +#define CIAO_COMPONENTSERVER_TASK_H_ + +#include "ace/String_Base.h" +#include "ace/Task.h" +#include "tao/ORB.h" +#include "tao/RTPortableServer/RTPortableServer.h" + +namespace CIAO +{ + namespace Deployment + { + class RTComponentServer_Task : ACE_Task_Base + { + public: + RTComponentServer_Task (int argc, ACE_TCHAR **argv); + + int svc (void); + + struct Error + { + Error (const ACE_CString &err); + ACE_CString err_; + }; + + void run (void); + + private: + void parse_args (int argc, ACE_TCHAR **argv); + + void usage (void); + + CORBA::ORB_var orb_; + + ACE_CString uuid_; + ACE_TString callback_ior_str_; + ACE_TString output_file_; + + CORBA::ULong static_threads_; + CORBA::ULong dynamic_threads_; + }; + } +} + +#endif diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp b/modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp new file mode 100644 index 00000000000..770ae3b7d22 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.cpp @@ -0,0 +1,510 @@ +// $Id$ + +#include "CIAO_ServerActivator_Impl.h" +#include "ace/Log_Msg.h" +#include "ace/UUID.h" +#include "ciao/Logger/Log_Macros.h" + +#include "CIAO_FailureReasonsC.h" +#include "CIAO_ComponentServerC.h" +#include "CIAO_PropertiesC.h" + +namespace CIAO +{ + namespace Deployment + { + CIAO_ServerActivator_i::CIAO_ServerActivator_i (CORBA::ULong def_spawn_delay, + const char * default_cs_path, + const char * cs_args, + bool multithreaded, + Components::Deployment::ComponentInstallation_ptr ci, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa) + : spawn_delay_ (def_spawn_delay), + multithreaded_ (multithreaded), + orb_ (CORBA::ORB::_duplicate (orb)), + poa_ (PortableServer::POA::_duplicate (poa)), + cs_path_ (default_cs_path), + cs_args_ (cs_args), + mutex_ (), + condition_ (mutex_), + ci_ (Components::Deployment::ComponentInstallation::_duplicate (ci)) + + { + CIAO_TRACE ("CIAO_ServerActivator_i::CIAO_ServerActivator_i"); + ACE_Utils::UUID_GENERATOR::instance ()->init (); + } + + CIAO_ServerActivator_i::~CIAO_ServerActivator_i(void) + { + } + + void + CIAO_ServerActivator_i::component_server_callback ( + ::Components::Deployment::ComponentServer_ptr serverref, + const char * server_UUID, + ::Components::ConfigValues_out config) + { + CIAO_TRACE("CIAO_ServerActivator_i::component_server_callback"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Received callback from ComponentServer %C\n", + server_UUID)); + + Server_Info *info = 0; + + for (SERVER_INFOS::iterator i (this->server_infos_.begin ()); + !i.done (); ++i) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Comparing %C with %C\n", (*i)->uuid_.c_str (), server_UUID)); + if ((*i)->uuid_ == server_UUID) + { + info = (*i).get (); + } + } + + if (!info) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Received callback from ComponentServer %C, which doesn't belong to me.\n", + server_UUID)); + throw CORBA::BAD_PARAM (); + } + + if (info->activated_) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Received callback from ComponentServer %C, which has already been configured.\n", + server_UUID)); + throw CORBA::BAD_INV_ORDER (); + } + + if (!CORBA::is_nil (info->ref_)) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Received callback from ComponentServer %C, which has already called back.\n", + server_UUID)); + throw CORBA::BAD_INV_ORDER (); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Received callback from ComponentServer %C\n", + server_UUID)); + + info->ref_ = ::Components::Deployment::ComponentServer::_duplicate (serverref); + + this->create_component_server_config_values (*info, config); + + // @@TODO: May want to print out configvalues here. + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "CIAO_ServerActivator_i::component_server_callback - " + "Generated %u ConfigValues for ComponentServer %C\n", + config->length (), server_UUID)); + } + + void + CIAO_ServerActivator_i::configuration_complete (const char *server_UUID) + { + CIAO_TRACE ("CIAO_ServerActivator_i::configuration_complete"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::configuration_complete - " + "Received configuration_complete from ComponentServer %C\n", + server_UUID)); + + try + { + Server_Info *info = 0; + + for (SERVER_INFOS::ITERATOR j (this->server_infos_); + !j.done (); ++j) + { + if ((*j)->uuid_ == server_UUID) + { + info = (*j).get (); + } + } + + if (!info) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "CIAO_ServerActivator_i::configuration_complete - " + "Received configuration_complete from ComponentServer %C, which doesn't belong to me.\n", + server_UUID)); + throw CORBA::BAD_PARAM (); + } + + if (info->activated_) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::configuration_complete - " + "Received configuration_complete from ComponentServer %C, which has already been completed.\n", + server_UUID)); + throw CORBA::BAD_INV_ORDER (); + } + + if (CORBA::is_nil (info->ref_.in ())) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::configuration_complete - " + "Received configuration_complete from ComponentServer %C, which has not called back.\n", + server_UUID)); + throw CORBA::BAD_INV_ORDER (); + } + + info->activated_ = true; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::configuration_complete - " + "Caught unknown exception while processing configuration_complete\n")); + throw; + } + } + + ::Components::Deployment::ComponentServer_ptr + CIAO_ServerActivator_i::create_component_server (const ::Components::ConfigValues & config) + { + CIAO_TRACE("CIAO_ServerActivator_i::create_component_server"); + + Safe_Server_Info server (new Server_Info (config.length () + 1)); + + CIAO::Utility::build_config_values_map (*server->cmap_, config); + + ACE_CString cmd_options = this->construct_command_line (*server); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "CIAO_ServerActivator_i::create_component_server - ComponentServer arguments: %C\n", + cmd_options.c_str ())); + + server_infos_.insert_tail (server); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::create_component_server - " + "Attempting to spawn ComponentServer with UUID %C\n", + server->uuid_.c_str ())); + + // Now we need to get a copy of the one that was inserted... + pid_t const pid = this->spawn_component_server (*server, cmd_options); + ACE_UNUSED_ARG (pid); + + ACE_Time_Value timeout (this->spawn_delay_); + + CORBA::Any val; + + if (server->cmap_->find (SERVER_TIMEOUT, val) == 0) + { + CORBA::ULong t; + if (val >>= t) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_ServerActivator_i::create_component_server - " + "Using provided non-default server timeout of %u\n", t)); + timeout = ACE_Time_Value (t); + } + else + { + CIAO_ERROR (1, (LM_WARNING, CLINFO "CIAO_ServerActivator_i::create_component_server - " + "Failed to extract provided non-default server timeout from property '%C', " + "falling back to default timeout of %u\n", + this->spawn_delay_)); + } + } + + if (this->multithreaded_) + this->multi_threaded_wait_for_callback (*server, timeout/*, pid*/); + else + this->single_threaded_wait_for_callback (*server, timeout/*, pid*/); + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "CIAO_ServerActivator_i::create_component_server - " + "ComponentServer %C successfully spawned and configured!\n", + server->uuid_.c_str ())); + + return ::Components::Deployment::ComponentServer::_duplicate (server->ref_.in ()); + } + + ACE_CString + CIAO_ServerActivator_i::construct_command_line (Server_Info &server) + { + CIAO_TRACE ("CIAO_ServerActivator_i::construct_command_line"); + + // Build our command line to launch the component server + ACE_CString cmd_options (this->cs_args_); + + CORBA::Any val; + + if (server.cmap_->find (SERVER_UUID, val) == 0) + { + // Nodeapplication has requested a custom uuid + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::construct_command_line - Using provided UUID\n")); + const char *uuid = 0; + val >>= uuid; + server.uuid_ = uuid; + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::construct_command_line - Using generated UUID\n")); + ACE_Utils::UUID uuid; + ACE_Utils::UUID_GENERATOR::instance ()->generate_UUID (uuid); + server.uuid_ = *uuid.to_string (); + } + + if (server.cmap_->find (SERVER_ARGUMENTS, val) == 0) + { + const char *args = 0; + val >>= args; + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::construct_command_line - " + "Adding provided server arguments %C\n", args)); + + cmd_options += ' '; + cmd_options += args; + cmd_options += ' '; + } + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "CIAO_ServerActivator_i::construct_command_line - Creating component server" + " with UUID %C\n", server.uuid_.c_str ())); + + cmd_options += " -u "; + cmd_options += server.uuid_; + + return cmd_options; + } + + pid_t + CIAO_ServerActivator_i::spawn_component_server (const Server_Info &si, + const ACE_CString &cmd_line) + { + CIAO_TRACE ("CIAO_ServerActivator_i::spawn_component_server"); + + // Get my object reference + CORBA::Object_var obj = this->poa_->servant_to_reference (this); + CORBA::String_var ior = this->orb_->object_to_string (obj.in ()); + CORBA::Any val; + + const char *path = this->cs_path_.c_str (); + + if (si.cmap_->find (SERVER_EXECUTABLE, val) == 0) + { + val >>= path; + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_ServerActivator_i::spawn_component_server - " + "Using provided component server executable: %C\n", path)); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "CIAO_ServerActivator_i::spawn_component_server - " + "Using default component server executable\n")); + } + + ACE_Process_Options options (true, + ACE_OS::strlen (path) + ACE_OS::strlen (cmd_line.c_str()) + ACE_OS::strlen (ior.in ()) + 15); + if (options.command_line ("%s %s -c %s", + path, + cmd_line.c_str (), + ior.in ()) != 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Failed to create commandline\n")); + throw Components::CreateFailure (CIAO::SERVER_SPAWN_FAILURE); + } + + options.avoid_zombies (0); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::spawn_component_server - Spawning process, command line is %s\n", + options.command_line_buf ())); + + pid_t const pid = this->process_manager_.spawn (options, + &this->child_handler_); + + if (pid == ACE_INVALID_PID) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Failed to spawn a ComponentServer process\n")); + throw Components::CreateFailure (CIAO::SERVER_SPAWN_FAILURE); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::spawn_component_server - Process successfully spawned with pid %u\n", + pid)); + return pid; + } + + void + CIAO_ServerActivator_i:: + single_threaded_wait_for_callback (const Server_Info &si, + ACE_Time_Value &timeout) + { + CIAO_TRACE ("CIAO_ServerActivator_i::single_threaded_wait_for_callback"); + + // Below code is broken for thread-per-connection concurrency model, + // since the main thread is running ORB event loop and will spawn + // a different thread to handle the call , + // the operation will not be invoked and finally + // a timeout will occur. For a similar reason, it won't work + // for thread-pool concurrency model. + while (true) + { + this->orb_->perform_work (timeout); + + if (timeout == ACE_Time_Value::zero) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::single_threaded_wait_for_callback - " + "Timed out while waiting for ComponentServer %C to call back.\n", + si.uuid_.c_str ())); + throw ::Components::CreateFailure (CIAO::CALLBACK_TIMEOUT_EXCEEDED); + } + + if (si.activated_) + { + break; + } + } + } + + void + CIAO_ServerActivator_i:: + multi_threaded_wait_for_callback (const Server_Info &si, + ACE_Time_Value &timeout) + { + CIAO_TRACE ("CIAO_ServerActivator_i::multi_threaded_wait_for_callback"); + + // Wait for a conditional variable + ACE_GUARD_THROW_EX ( TAO_SYNCH_MUTEX, + guard, + this->mutex_, + CORBA::NO_RESOURCES ()); + + while (! si.activated_ ) + if (this->condition_.wait (&timeout) == -1) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::multi_threaded_wait_for_callback - " + "Timed out while waiting for ComponentServer %C to call back.\n", + si.uuid_.c_str ())); + throw Components::CreateFailure (CIAO::CALLBACK_TIMEOUT_EXCEEDED); + } + } + + void + CIAO_ServerActivator_i::remove_component_server (::Components::Deployment::ComponentServer_ptr server) + { + CIAO_TRACE ("CIAO_ServerActivator_i::remove_component_server"); + + Server_Info *info = 0; + + for (SERVER_INFOS::ITERATOR i (this->server_infos_); + !i.done (); ++i) + { + if ((*i)->ref_->_is_equivalent (server)) + { + info = (*i).get (); + } + } + + if (!info) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO_ServerActivator_i::remove_component_server - " + "Failed to find equivalent ComponentServer under my management.\n")); + throw ::Components::RemoveFailure (); + } + + try + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::remove_component_server - " + "Calling remove () on ComponentServer %C\n", + info->uuid_.c_str ())); + server->remove (); + } + catch (::Components::RemoveFailure &) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "CIAO_ServerActivator_i::remove_component_server - " + "Received RemoveFailure exception from ComponentServer %C\n", + info->uuid_.c_str ())); + } + + // If this is a CIAO component server, call shutdown + CIAO::Deployment::ComponentServer_var ccs = + CIAO::Deployment::ComponentServer::_narrow (server); + if (!CORBA::is_nil (ccs)) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::remove_component_server - " + "Calling shutdown () on ComponentServer %C\n", + info->uuid_.c_str ())); + ccs->shutdown (); + } + else + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "CIAO_ServerActivator_i::remove_component_server - " + "ComponentServer %C is not a CIAO_ComponentServer, not calling shutdown.\n", + info->uuid_.c_str ())); + + CIAO_DEBUG (6, (LM_INFO, CLINFO + "CIAO_ServerActivator_i::remove_component_server - " + "ComponentServer %C successfully shut down.\n", + info->uuid_.c_str ())); + } + + ::Components::Deployment::ComponentServers * + CIAO_ServerActivator_i::get_component_servers (void) + { + CIAO_TRACE ("CIAO_ServerActivator_i::get_component_servers"); + + ::Components::Deployment::ComponentServers_var retval = new + Components::Deployment::ComponentServers (this->server_infos_.size ()); + + CORBA::ULong pos = 0; + + for (SERVER_INFOS::ITERATOR i (this->server_infos_); + !i.done (); ++i) + { + retval[pos++] = + ::Components::Deployment::ComponentServer::_duplicate ((*i)->ref_); + } + + return retval._retn (); + } + + void + CIAO_ServerActivator_i::create_component_server_config_values ( + const Server_Info &, + Components::ConfigValues_out &config) + { + ACE_NEW_THROW_EX (config, + Components::ConfigValues (1), + CORBA::NO_MEMORY ()); + + Components::Deployment::ComponentInstallation_ptr ci = + Components::Deployment::ComponentInstallation::_duplicate (this->ci_.in ()); + CORBA::Any ci_any; + ci_any <<= ci; + + OBV_Components::ConfigValue* p = 0; + ACE_NEW_THROW_EX (p, + OBV_Components::ConfigValue (), + CORBA::NO_MEMORY ()); + p->name (CIAO::Deployment::COMPONENTINSTALLATION_REF); + p->value (ci_any); + config->length (1); + config.operator[](0) = p; + } + } +} + diff --git a/modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.h b/modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.h new file mode 100644 index 00000000000..23057b2c550 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/CIAO_ServerActivator_Impl.h @@ -0,0 +1,191 @@ +// $Id$ +/** + * @file CIAO_ServerActivator_Impl.h + * @author William R. Otte + */ + +#ifndef CIAO_SERVERACTIVATOR_H_ +#define CIAO_SERVERACTIVATOR_H_ + +#include "ace/Process_Manager.h" +#include "ace/Event_Handler.h" +#include "ace/Condition_T.h" +#include "ace/OS_NS_sys_wait.h" +#include "ace/Refcounted_Auto_Ptr.h" +#include "ace/Unbounded_Set_Ex.h" +#include "ace/Synch_Traits.h" +#include "ace/Condition_T.h" +#include "tao/PortableServer/PortableServer.h" +#include "ciao/ComponentServer/CIAO_CS_ClientS.h" +#include "ciao/ComponentServer/CIAO_ComponentServerC.h" +#include "ciao/ComponentServer/CIAO_CS_Client_svnt_export.h" +#include "Client_init.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + namespace Deployment + { + /** + * @brief The signal handler class for the SIGCHLD handling to avoid + * zombies + */ + class Child_Handler : public virtual ACE_Event_Handler + { + public: + virtual int handle_signal (int, + siginfo_t *, + ucontext_t *) + { + // @@ Note that this code is not portable to all OS platforms + // since it uses print statements within signal handler context. + ACE_exitcode status; + // makes a claal to the underlying os system call + // -1 to wait for any child process + // and WNOHANG so that it retuurns immediately + ACE_OS::waitpid (-1 ,&status, WNOHANG, 0); + + return 0; + } + }; + + /** + * @author William R. Otte + * @brief Default server activator for CIAO component servers. + * + * Implements the default component server activation strategy + * which is to spawn new processes. This is not thread-safe, + * nor is it intended to be. Containers are reated serially, + * so there will be only one actor *modifying* data at a particular + * point in time. + */ + class CIAO_CS_CLIENT_SVNT_Export CIAO_ServerActivator_i + : public virtual POA_CIAO::Deployment::ServerActivator + { + public: + /// Constructor + CIAO_ServerActivator_i (CORBA::ULong def_spawn_delay, + const char * default_cs_path, + const char * cs_args, + bool multithreaded, + Components::Deployment::ComponentInstallation_ptr ci, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa_); + + /// Destructor + virtual ~CIAO_ServerActivator_i (void); + + virtual + void component_server_callback ( + ::Components::Deployment::ComponentServer_ptr serverref, + const char * server_UUID, + ::Components::ConfigValues_out config); + + virtual void configuration_complete (const char *server_UUID); + + virtual + ::Components::Deployment::ComponentServer_ptr + create_component_server (const ::Components::ConfigValues & config); + + virtual + void remove_component_server ( + ::Components::Deployment::ComponentServer_ptr server); + + virtual + ::Components::Deployment::ComponentServers * get_component_servers (void); + + private: + struct Server_Info; + + /// Builds command line options based on configuration information. + /// May modify the uuid of the component server. + ACE_CString construct_command_line (Server_Info &si); + + /// Spawns the component server process, but does not wait for it + /// to call back. + pid_t spawn_component_server (const Server_Info &si, + const ACE_CString &cmd_line); + + /// This method is only applicable when our program is configured as + /// singled threaded . Internally it uses a @c perform_work blocking + /// call to wait for NA object to call back + void single_threaded_wait_for_callback (const Server_Info &si, + ACE_Time_Value &timeout); + + /// This method is only applicable when our program is configured as + /// multiple threaded. Internally it waits on a conditional variable + /// that could be modified by the callback servant which runs in + /// another thread + void multi_threaded_wait_for_callback (const Server_Info &si, + ACE_Time_Value &timeout); + + void create_component_server_config_values (const Server_Info &info, + Components::ConfigValues_out &config); + + struct Server_Info + { + Server_Info (size_t cmap_size_hint = 128) + : cmap_ (new CIAO::Utility::CONFIGVALUE_MAP (cmap_size_hint)), + ref_ (Components::Deployment::ComponentServer::_nil ()), + pid_ (ACE_INVALID_PID), + activated_ (false) {} + + typedef ACE_Refcounted_Auto_Ptr CONFIGVALUE_MAP_PTR; + + ACE_CString uuid_; + CONFIGVALUE_MAP_PTR cmap_; + Components::Deployment::ComponentServer_var ref_; + pid_t pid_; + bool activated_; + }; + + typedef ACE_Refcounted_Auto_Ptr Safe_Server_Info; + + struct _server_info + { + bool operator() (const Safe_Server_Info &a, const Safe_Server_Info &b) const + { + return a->uuid_ == b->uuid_; + } + }; + + // Presumably, there won't be too many component servers per node application + typedef ACE_Unbounded_Set_Ex SERVER_INFOS; + + /// Default args to pass to all componentservers. + ACE_CString default_args_; + + SERVER_INFOS server_infos_; + + ACE_Process_Manager process_manager_; + + Child_Handler child_handler_; + + CORBA::ULong spawn_delay_; + + /////*******NEW + bool multithreaded_; + + CORBA::ORB_var orb_; + + PortableServer::POA_var poa_; + + ACE_CString cs_path_; + + ACE_CString cs_args_; + + TAO_SYNCH_MUTEX mutex_; + + ACE_Condition condition_; + + Components::Deployment::ComponentInstallation_var ci_; + }; + + + } +} +#endif /* CIAO_SERVERACTIVATOR_H_ */ diff --git a/modules/CIAO/ciao/ComponentServer/Client_init.cpp b/modules/CIAO/ciao/ComponentServer/Client_init.cpp new file mode 100644 index 00000000000..73925495579 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/Client_init.cpp @@ -0,0 +1,99 @@ +// $Id$ + +#include "Client_init.h" +#include +#include +#include +#include +#include "ciao/Valuetype_Factories/ConfigValue.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + int + Client_init (CORBA::ORB_ptr o) + { + CIAO_REGISTER_VALUE_FACTORY (o, Components::Cookie_init, + Components::Cookie); + CIAO_REGISTER_VALUE_FACTORY (o, Components::PortDescription_init, + Components::PortDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::FacetDescription_init, + Components::FacetDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::ConnectionDescription_init, + Components::ConnectionDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::ReceptacleDescription_init, + Components::ReceptacleDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::ConsumerDescription_init, + Components::ConsumerDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::EmitterDescription_init, + Components::EmitterDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::SubscriberDescription_init, + Components::SubscriberDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::PublisherDescription_init, + Components::PublisherDescription); + CIAO_REGISTER_VALUE_FACTORY (o, Components::ConfigValue_init, + Components::ConfigValue); + CIAO_REGISTER_VALUE_FACTORY (o, Components::ComponentPortDescription_init, + Components::ComponentPortDescription); + return 0; + } +} + +namespace CIAO +{ + namespace Utility + { + void build_config_values_map (CONFIGVALUE_MAP &map, + const ::Components::ConfigValues &config) + { + CIAO_TRACE("CIAO::build_config_values_map"); + map.unbind_all (); + + for (CORBA::ULong i = 0; i < config.length (); ++i) + { + int const retval = map.rebind (config[i]->name (), config[i]->value ()); + + if (retval == 1) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "build_config_values_map: Duplicate value for %C encountered, " + "old value overwritten.\n", + config[i]->name ())); + } + else if (retval == -1) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO + "build_config_values_map: Error binding value for %C, ignoring.\n", + config[i]->name ())); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "build_config_values_map: Bound value for config value %C\n", + config[i]->name ())); + } + } + } + + void build_config_values_sequence (::Components::ConfigValues &config, + const CONFIGVALUE_MAP &map) + { + CIAO_TRACE ("CIAO::build_config_values_sequence"); + + config.length (map.current_size ()); + + CORBA::ULong pos = 0; + + for (CONFIGVALUE_MAP::const_iterator i = map.begin (); + (i.advance ()) != 0; ++pos) + { + Components::ConfigValue_var newval; + ACE_NEW_THROW_EX (newval, + ConfigValue_impl (i->ext_id_.c_str (), i->int_id_), + CORBA::NO_MEMORY ()); + config[pos] = newval._retn (); + } + } + } +} + diff --git a/modules/CIAO/ciao/ComponentServer/Client_init.h b/modules/CIAO/ciao/ComponentServer/Client_init.h new file mode 100644 index 00000000000..d50f4b92605 --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/Client_init.h @@ -0,0 +1,74 @@ +// -*- C++ -*- +// +// $Id$ + +/** + * @file Client_init.h + * + * Initializing CIAO client side ORB, if they need to. + * + * @author Nanbor Wang + */ + +#ifndef CIAO_CLIENT_INIT_H +#define CIAO_CLIENT_INIT_H + +#include /**/ "ace/pre.h" + +#if !defined ACE_LACKS_PRAGMA_ONCE +#pragma once +#endif /* ! ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Hash_Map_Manager_T.h" +#include "tao/orbconf.h" +#include "tao/AnyTypeCode/Any.h" +#include "ccm/CCM_StandardConfiguratorC.h" +#include "ciao/ComponentServer/CIAO_CS_Client_svnt_export.h" + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL +namespace CORBA +{ + class ORB; + typedef ORB *ORB_ptr; +} +TAO_END_VERSIONED_NAMESPACE_DECL + +namespace CIAO +{ + /** + * The initialize routine for any clients that need to access + * component. This routine now simply registers various valuetype + * factories defined in CIAO_Component.pidl. Currently, this method + * should be call right after ORB initialization but we should try + * to register these stuff automatically. + */ + CIAO_CS_CLIENT_SVNT_Export int Client_init (CORBA::ORB_ptr o); + + namespace Utility + { + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> CONFIGVALUE_MAP; + + CIAO_CS_CLIENT_SVNT_Export void build_config_values_map (CONFIGVALUE_MAP &map, + const ::Components::ConfigValues &config); + + CIAO_CS_CLIENT_SVNT_Export void build_config_values_sequence (::Components::ConfigValues &config, + const CONFIGVALUE_MAP &map); + } +} + +#define CIAO_REGISTER_VALUE_FACTORY(ORB,FACTORY,VALUETYPE) {\ + CORBA::ValueFactory factory = new FACTORY; \ + CORBA::ValueFactory prev_factory = \ + ORB->register_value_factory \ + (VALUETYPE::_tao_obv_static_repository_id (), \ + factory); \ + if (prev_factory) prev_factory->_remove_ref (); \ + factory->_remove_ref (); } + +#include /**/ "ace/post.h" + +#endif /* CIAO_CLIENT_INIT_H */ diff --git a/modules/CIAO/ciao/ComponentServer/Server_init.cpp b/modules/CIAO/ciao/ComponentServer/Server_init.cpp new file mode 100644 index 00000000000..6f5c6b54caf --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/Server_init.cpp @@ -0,0 +1,42 @@ +// $Id$ + +#include "Server_init.h" + +#include +#include +#include "ciao/Valuetype_Factories/Cookies.h" +#include "ciao/Logger/Log_Macros.h" +#include "Client_init.h" +#include "ace/Tokenizer_T.h" + +namespace CIAO +{ + int + Server_init (CORBA::ORB_ptr o) + { + Client_init (o); + CIAO_REGISTER_VALUE_FACTORY (o, + CIAO::Cookie_Impl_init, + Components::Cookie); + return 0; + } + + namespace Utility + { + int write_IOR (const ACE_TCHAR *pathname, const char *ior) + { + FILE* ior_output_file_ = ACE_OS::fopen (pathname, ACE_TEXT("w")); + + if (ior_output_file_) + { + ACE_OS::fprintf (ior_output_file_, + "%s", + ior); + ACE_OS::fclose (ior_output_file_); + return 0; + } + + return -1; + } + } /* namespace Utility */ +} /* namespace CIAO */ diff --git a/modules/CIAO/ciao/ComponentServer/Server_init.h b/modules/CIAO/ciao/ComponentServer/Server_init.h new file mode 100644 index 00000000000..b475dc8312f --- /dev/null +++ b/modules/CIAO/ciao/ComponentServer/Server_init.h @@ -0,0 +1,59 @@ +// $Id$ + +/** + * @file Server_init.h + * + * Initializing CIAO Server side ORB, if they need to. + * I'm also puting some utilities functions here. + * + * @author Nanbor Wang + * @author Gan Deng + * @author William R. Otte + */ + +#ifndef CIAO_SERVER_INIT_H +#define CIAO_SERVER_INIT_H + +#include /**/ "ace/pre.h" + +#include "ciao/ComponentServer/CIAO_CS_Client_svnt_export.h" + +#if !defined ACE_LACKS_PRAGMA_ONCE +#pragma once +#endif /* ! ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/SString.h" +#include /**/ "tao/Versioned_Namespace.h" + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL +namespace CORBA +{ + class ORB; + typedef ORB *ORB_ptr; +} +TAO_END_VERSIONED_NAMESPACE_DECL + +namespace CIAO +{ + /** + * The initialize routine for any server that need to access + * component. This routine now simply registers various valuetype + * factories defined in CIAO_Component.pidl. Currently, this method + * should be call right after ORB initialization but we should try + * to register these stuff automatically. + */ + CIAO_CS_CLIENT_SVNT_Export int Server_init (CORBA::ORB_ptr o); + + namespace Utility + { + /// Write a string (usually a stringified IOR) to a file + /// designated by the @c pathname. The file named will always get + /// overwritten. + CIAO_CS_CLIENT_SVNT_Export int write_IOR (const ACE_TCHAR *pathname, + const char *IOR); + } +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SERVER_INIT_H */ diff --git a/modules/CIAO/ciao/Containers/CIAO_Servant_Activator.idl b/modules/CIAO/ciao/Containers/CIAO_Servant_Activator.idl new file mode 100644 index 00000000000..18aa906e0e2 --- /dev/null +++ b/modules/CIAO/ciao/Containers/CIAO_Servant_Activator.idl @@ -0,0 +1,24 @@ +/** + * @file CIAO_Servant_Activator.idl + * @author William R. Otte + * $Id$ + * Local interface extensions for the CIAO servant activator. + */ + +#ifndef CIAO_SERVANT_ACTIVATOR_IDL +#define CIAO_SERVANT_ACTIVATOR_IDL + +#include "tao/PortableServer/ServantActivator.pidl" +#include "ciao/Servants/CIAO_Port_Activator.idl" + +module CIAO +{ + local interface Servant_Activator : PortableServer::ServantActivator + { + boolean update_port_activator (in PortableServer::ObjectId oid); + + boolean register_port_activator (in Port_Activator pa); + }; +}; + +#endif diff --git a/modules/CIAO/ciao/Containers/CIAO_Servant_Activator.mpc b/modules/CIAO/ciao/Containers/CIAO_Servant_Activator.mpc new file mode 100644 index 00000000000..9f9843fc0b5 --- /dev/null +++ b/modules/CIAO/ciao/Containers/CIAO_Servant_Activator.mpc @@ -0,0 +1,24 @@ +// $Id$ + +project(CIAO_Servant_Activator_stub_idl) : ciaoidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_include=CIAO_Servant_Activator_export.h \ + -Wb,stub_export_macro=CIAO_SERVANT_ACTIVATOR_Export \ + -SS -Sci -Gxhst + IDL_Files { + CIAO_Servant_Activator.idl + } +} + +project(CIAO_Servant_Activator_stub) : ciao_lib, portableserver, ciao_port_activator_stub, avoids_minimum_corba, ciao_logger { + after += CIAO_Servant_Activator_stub_idl + dynamicflags = CIAO_SERVANT_ACTIVATOR_BUILD_DLL + + IDL_Files { + } + Source_Files { + Servant_Activator.cpp + CIAO_Servant_ActivatorC.cpp + } +} + diff --git a/modules/CIAO/ciao/Containers/Container_Base.cpp b/modules/CIAO/ciao/Containers/Container_Base.cpp new file mode 100644 index 00000000000..fc7e260a491 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Container_Base.cpp @@ -0,0 +1,48 @@ +// $Id$ + +#include "Container_Base.h" +#include "ciao/Logger/Log_Macros.h" + +#if !defined (__ACE_INLINE__) +# include "Container_Base.inl" +#endif /* __ACE_INLINE__ */ + +namespace CIAO +{ + //////////////////////////////////////////////////////////////// + + Container_i::Container_i (CORBA::ORB_ptr o, + PortableServer::POA_ptr root_poa) + : orb_ (CORBA::ORB::_duplicate (o)), + root_poa_ (PortableServer::POA::_duplicate (root_poa)), + container_impl_ (0) + { + } + + Container_i::Container_i (CORBA::ORB_ptr o, + PortableServer::POA_ptr root_poa, + Deployment::CIAO_Container_i *container_impl) + : orb_ (CORBA::ORB::_duplicate (o)), + root_poa_ (PortableServer::POA::_duplicate (root_poa)), + container_impl_ (container_impl) + { + } + + Container_i::~Container_i (void) + { + if (! CORBA::is_nil (this->component_poa_.in ())) + { + this->component_poa_->destroy (1, 1); + } + + if (! CORBA::is_nil (this->facet_cons_poa_.in ())) + { + this->facet_cons_poa_->destroy (1, 1); + } + + if (! CORBA::is_nil (this->home_servant_poa_.in ())) + { + this->home_servant_poa_->destroy (1, 1); + } + } +} diff --git a/modules/CIAO/ciao/Containers/Container_Base.h b/modules/CIAO/ciao/Containers/Container_Base.h new file mode 100644 index 00000000000..b249c630842 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Container_Base.h @@ -0,0 +1,146 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Container_Base.h + * + * $Id$ + * + * Header file for CIAO's container implementations + * + * @author Nanbor Wang + * @author Gan Deng + */ +//============================================================================= + +#ifndef CIAO_CONTAINER_BASE_H +#define CIAO_CONTAINER_BASE_H + +#include /**/ "ace/pre.h" + +#include "ciao/Containers/Container_Base_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Hash_Map_Manager_T.h" +#include "tao/LocalObject.h" +#include "tao/PortableServer/PortableServer.h" +#include "ccm/CCM_ContainerC.h" + +#include "ciao/Containers/Container_BaseC.h" + +namespace CIAO +{ + class Dynamic_Component_Servant_Base; + + namespace Deployment + { + class CIAO_Container_i; + } + + /** + * @class Container_i + * + * @brief Common container interface definition. + * + * Perhaps we can use local interface to define these interfaces as + * we will also get reference counting automatically. + */ + class CIAO_CONTAINER_BASE_Export Container_i : + public virtual Container, + public virtual ::CORBA::LocalObject + { + public: + Container_i (CORBA::ORB_ptr o, PortableServer::POA_ptr root_poa); + Container_i (CORBA::ORB_ptr o, PortableServer::POA_ptr root_poa, + Deployment::CIAO_Container_i *container_impl); + + virtual ~Container_i (void); + + /// Initialize the container with a name. + virtual void init (const char *name = 0, + const CORBA::PolicyList *more_policies = 0) = 0; + + /// Get component's POA. + /** + * This operation does *NOT* increase the reference count of the + * POA. Look at the const qualifier in the method. + */ + virtual PortableServer::POA_ptr the_POA (void); + virtual PortableServer::POA_ptr the_port_POA (void); + + /// Install a new home + virtual Components::CCMHome_ptr install_home (const char *primary_artifact, + const char *entry_point, + const char *servant_artifact, + const char *servant_entrypoint, + const char *name) = 0; + + /// Uninstall a servant for component or home. + virtual void uninstall_home (Components::CCMHome_ptr homeref) = 0; + + virtual Components::CCMObject_ptr install_component (const char *primary_artifact, + const char *entry_point, + const char *servant_artifact, + const char *servant_entrypoint, + const char *name) = 0; + + virtual void uninstall_component (Components::CCMObject_ptr compref) = 0; + + virtual CORBA::Object_ptr get_objref (PortableServer::Servant p) = 0; + + virtual CORBA::Object_ptr install_servant (PortableServer::Servant objref, + Container_Types::OA_Type type, + PortableServer::ObjectId_out oid) = 0; + + /// Uninstall a servant for component. + virtual void uninstall_servant (PortableServer::Servant objref, + Container_Types::OA_Type type, + PortableServer::ObjectId_out oid) = 0; + + virtual void add_servant_to_map (PortableServer::ObjectId &oid, + Dynamic_Component_Servant_Base* servant) = 0; + + virtual void delete_servant_from_map (PortableServer::ObjectId &oid) = 0; + + /// Get a reference to the underlying ORB. + CORBA::ORB_ptr the_ORB (void) const; + + protected: + /// Reference to the ORB + CORBA::ORB_var orb_; + + /// POA used as root + PortableServer::POA_var root_poa_; + + /// POA within which all the components in this container will be + /// activated. + PortableServer::POA_var component_poa_; + + /// POA within which all the facets and receptacles will be + /// activated. + /** + * Having two POA's allows us to associate different policies that + * are distinct from the component. + */ + PortableServer::POA_var facet_cons_poa_; + + PortableServer::POA_var home_servant_poa_; + + Deployment::CIAO_Container_i *container_impl_; + + private: + /// Not allowed to be used + Container_i (void); + }; +} + +#if defined (__ACE_INLINE__) +# include "Container_Base.inl" +#endif /* __ACE_INLINE__ */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_CONTAINER_BASE_H */ diff --git a/modules/CIAO/ciao/Containers/Container_Base.idl b/modules/CIAO/ciao/Containers/Container_Base.idl new file mode 100644 index 00000000000..da2d406573a --- /dev/null +++ b/modules/CIAO/ciao/Containers/Container_Base.idl @@ -0,0 +1,95 @@ +/** + * @file Container_Base.idl + * @author William R. Otte + * $Id$ + * Container local interface. + */ + +#include "tao/PortableServer/PortableServer_include.pidl" +#include "ccm/CCM_Home.idl" +#include "ccm/CCM_Base.idl" +#include "ciao/Containers/CIAO_Servant_Activator.idl" + +module CIAO +{ + module Container_Types + { + enum OA_Type + { + COMPONENT_t, + HOME_t, + FACET_CONSUMER_t + }; + }; + + exception InvalidComponent + { + }; + + /** + * @interface Container + * @brief Internal container interfaces. + * + * This interface provides interfactes to two portions of the CIAO + * container architecture: The generic external container interface + * created by the component server, and the component specific container + * portions generated by the CIDL compiler (the component servant) + */ + local interface Container + { + // **** Methods used by external container + Components::CCMHome install_home (in string primary_artifact, + in string entry_point, + in string servant_artifact, + in string servant_entrypoint, + in string name); + + void uninstall_home (in Components::CCMHome homeptr); + + Components::CCMObject install_component (in string primary_artifact, + in string entry_point, + in string servant_artifact, + in string servant_entrypoint, + in string name); + + void activate_component (in Components::CCMObject name); + + void passivate_component (in Components::CCMObject name); + + void uninstall_component (in Components::CCMObject compptr); + + void connect_local_facet (in ::Components::CCMObject provider_ref, + in string provider_port, + in ::Components::CCMObject user_ref, + in string user_port) + raises (::Components::InvalidConnection, + ::Components::AlreadyConnected); + + void disconnect_local_facet (in ::Components::CCMObject provider_ref, + in string provider_port, + in ::Components::CCMObject user_ref, + in string user_port) + raises (::Components::InvalidConnection); + + // *** Methods used by component specific container portions + Object install_servant (in PortableServer::Servant svnt, + in Container_Types::OA_Type type, + out PortableServer::ObjectId oid); + + void uninstall_servant (in PortableServer::Servant compptr, + in Container_Types::OA_Type type, + out PortableServer::ObjectId oid); + + Servant_Activator ports_servant_activator (); + + Object generate_reference (in string obj_id, + in string repo_id, + in Container_Types::OA_Type type); + + Object get_objref (in PortableServer::Servant p); + + PortableServer::POA the_POA (); + + PortableServer::POA the_port_POA (); + }; +}; diff --git a/modules/CIAO/ciao/Containers/Container_Base.inl b/modules/CIAO/ciao/Containers/Container_Base.inl new file mode 100644 index 00000000000..6ef5175d838 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Container_Base.inl @@ -0,0 +1,22 @@ +// $Id$ + +namespace CIAO +{ + ACE_INLINE PortableServer::POA_ptr + Container_i::the_POA (void) + { + return this->component_poa_.in (); + } + + ACE_INLINE PortableServer::POA_ptr + Container_i::the_port_POA (void) + { + return this->facet_cons_poa_.in (); + } + + ACE_INLINE CORBA::ORB_ptr + Container_i::the_ORB (void) const + { + return this->orb_.in (); + } +} diff --git a/modules/CIAO/ciao/Containers/Containers.mpc b/modules/CIAO/ciao/Containers/Containers.mpc new file mode 100644 index 00000000000..3e17afdb9fd --- /dev/null +++ b/modules/CIAO/ciao/Containers/Containers.mpc @@ -0,0 +1,30 @@ +// $Id$ + +project(CIAO_Container_Base_idl) : taoidldefaults { + custom_only = 1 + + idlflags += -Wb,export_include=Container_Base_export.h \ + -Wb,export_macro=CIAO_CONTAINER_BASE_Export \ + -SS -Sci -Gxhst + + IDL_Files { + Container_Base.idl + } +} +project(CIAO_Container_Base) : ciao_lib, ccm_svnt, ciao_servant_activator, ciao_port_activator_stub { + after += CIAO_Container_Base_idl + dynamicflags += CIAO_CONTAINER_BASE_BUILD_DLL + + IDL_Files { + } + Source_Files { + Container_Base.cpp + Container_BaseC.cpp + } + Inline_Files { + Container_Base.inl + } + Header_Files { + Container_Base.h + } +} diff --git a/modules/CIAO/ciao/Containers/Servant_Activator.cpp b/modules/CIAO/ciao/Containers/Servant_Activator.cpp new file mode 100644 index 00000000000..cf5a4556115 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Servant_Activator.cpp @@ -0,0 +1,172 @@ +// $Id$ + +#include "Servant_Activator.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/PortableServer/PortableServer_Functions.h" + +namespace CIAO +{ + Servant_Activator_i::Servant_Activator_i (CORBA::ORB_ptr o) + : orb_ (CORBA::ORB::_duplicate (o)), + slot_index_ (0) + { + } + + Servant_Activator_i::~Servant_Activator_i (void) + { + CIAO_TRACE ("Servant_Activator_i::~Servant_Activator_i"); + } + + bool + Servant_Activator_i::update_port_activator ( + const PortableServer::ObjectId &oid) + { + CIAO_TRACE ("Servant_Activator_i::update_port_activator"); + + CORBA::String_var str = + PortableServer::ObjectId_to_string (oid); + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, + guard, + this->mutex_, + CORBA::NO_RESOURCES ()); + + CIAO_DEBUG (6, (LM_INFO, CLINFO + "Servant_Activator_i::update_port_activator, " + "Attempting to update port name [%C]\n", + str.in ())); + + Port_Activators::iterator pa_iter = this->pa_.find (str.in ()); + + if (pa_iter != this->pa_.end ()) + { + this->pa_.erase (pa_iter); + } + else + { + return false; + } + } + + return true; + } + + PortableServer::Servant + Servant_Activator_i::incarnate (const PortableServer::ObjectId &oid, + PortableServer::POA_ptr) + { + CIAO_TRACE ("Servant_Activator_i::incarnate"); + + CORBA::String_var str = + PortableServer::ObjectId_to_string (oid); + + CIAO_DEBUG (6, (LM_INFO, CLINFO + "Servant_Activator_i::incarnate, " + "Attempting to activate port name [%C]\n", + str.in ())); + + Port_Activators::iterator pa_iter; + + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, + guard, + this->mutex_, + CORBA::NO_RESOURCES ()); + + pa_iter = this->pa_.find (str.in ()); + } + + if (pa_iter == this->pa_.end ()) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Activator_i::incarnate - " + "Unable to find suitable port activator for ObjectID %C\n", + str.in ())); + throw CORBA::OBJECT_NOT_EXIST (); + } + + if (CORBA::is_nil (pa_iter->second)) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Activator_i::incarnate - " + "Port Activator for ObjectId %C was nil!\n", + str.in ())); + throw CORBA::OBJECT_NOT_EXIST (); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO + "Servant_Activator_i::incarnate - Activating Port %C\n", + str.in ())); + + return pa_iter->second->activate (oid); + } + + void + Servant_Activator_i::etherealize (const PortableServer::ObjectId &oid, + PortableServer::POA_ptr , + PortableServer::Servant servant, + CORBA::Boolean , + CORBA::Boolean) + { + CORBA::String_var str = + PortableServer::ObjectId_to_string (oid); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Servant_Activator_i::etherealize - " + "Attempting to etherealize servant with object ID %C\n", + str.in ())); + + Port_Activators::iterator pa_iter; + + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, + guard, + this->mutex_, + CORBA::NO_RESOURCES ()); + + pa_iter = this->pa_.find (str.in ()); + } + + if (pa_iter == this->pa_.end ()) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Activator_i::etherealize - " + "Unable to find suitable port activator for ObjectID %C\n", + str.in ())); + throw CORBA::OBJECT_NOT_EXIST (); + } + + if (CORBA::is_nil (pa_iter->second)) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Activator_i::etherealize - " + "Port Activator for ObjectId %C was nil!\n", + str.in ())); + throw CORBA::OBJECT_NOT_EXIST (); + } + + pa_iter->second->deactivate (servant); + } + + bool + Servant_Activator_i::register_port_activator (Port_Activator_ptr pa) + { + ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, + guard, + this->mutex_, + false); + + CIAO_DEBUG (6, (LM_INFO, CLINFO "Servant_Activator_i::register_port_activator - " + "Registering a port activator for port [%C] with ObjectID [%C]\n", + pa->name (), pa->oid ())); + + try + { + this->pa_ [pa->oid ()] = Port_Activator::_duplicate (pa); + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Activator_i::register_port_activator - " + "Unable to register a port activator for port [%C] with ObjectID [%C]\n", + pa->name (), pa->oid ())); + return false; + } + + return true; + } +} diff --git a/modules/CIAO/ciao/Containers/Servant_Activator.h b/modules/CIAO/ciao/Containers/Servant_Activator.h new file mode 100644 index 00000000000..73bbdafee9d --- /dev/null +++ b/modules/CIAO/ciao/Containers/Servant_Activator.h @@ -0,0 +1,99 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Servant_Activator.h + * + * $Id$ + * + * @authors Balachandran Natarajan + */ +//============================================================================= + +#ifndef CIAO_SERVANT_ACTIVATOR_H +#define CIAO_SERVANT_ACTIVATOR_H + +#include /**/ "ace/pre.h" + +#include "CIAO_Servant_Activator_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Array_Base.h" +#include "tao/PortableServer/ServantActivatorC.h" +#include "tao/LocalObject.h" +#include "ciao/Containers/CIAO_Servant_ActivatorC.h" + +#include +#include + +namespace CIAO +{ + class Port_Activator; + + /** + * @class Servant_Activator + * + * @brief Activator that is registered with the POA for facet and + * consumer servants. + * + * This class acts like a factory in some sense. This factory is + * registered with the POA with RETAIN policy. When the factory gets + * a call back as part of the upcall, this factory looks at the + * list of port activators registered, uses the OID to pick the + * right one (yes a linear algorithm is used), calls activate () on + * it which returns the servant for *that* port. + */ + class CIAO_SERVANT_ACTIVATOR_Export Servant_Activator_i + : public virtual ::CIAO::Servant_Activator, + public virtual ::CORBA::LocalObject + { + public: + Servant_Activator_i (CORBA::ORB_ptr o); + + virtual ~Servant_Activator_i (void); + + virtual ::CORBA::Boolean update_port_activator ( + const ::PortableServer::ObjectId &oid); + + virtual ::CORBA::Boolean register_port_activator ( + ::CIAO::Port_Activator_ptr pa); + + /// Template methods overridden to get callbacks. + /** + * If you would like to know the details of the following two + * methods, please PortableServer documentation. This is probably + * not the place to document what these mean. + */ + virtual PortableServer::Servant incarnate ( + const PortableServer::ObjectId &oid, + PortableServer::POA_ptr poa); + + virtual void etherealize (const PortableServer::ObjectId &oid, + PortableServer::POA_ptr adapter, + PortableServer::Servant servant, + CORBA::Boolean cleanup_in_progress, + CORBA::Boolean remaining_activations); + + private: + /// Pointer to our ORB + CORBA::ORB_var orb_; + + typedef std::map Port_Activators; + + /// Array of port activators + Port_Activators pa_; + + /// Running index of the slot that has been just filled in. + size_t slot_index_; + + /// Mutex that synchronizes access to the array. + TAO_SYNCH_MUTEX mutex_; + }; +} + +#include /**/ "ace/post.h" + +#endif /*CIAO_SERVANT_ACTIVATOR_H*/ diff --git a/modules/CIAO/ciao/Containers/Session/Session_Container.cpp b/modules/CIAO/ciao/Containers/Session/Session_Container.cpp new file mode 100644 index 00000000000..d51852cad4c --- /dev/null +++ b/modules/CIAO/ciao/Containers/Session/Session_Container.cpp @@ -0,0 +1,1009 @@ +// $Id$ + +#include "Session_Container.h" + +#include "tao/Utils/PolicyList_Destroyer.h" +#include "ciao/Containers/Servant_Activator.h" +#include "ccm/ComponentServer/CCM_ComponentServer_BaseC.h" +#include "ciao/ComponentServer/CIAO_ComponentServerC.h" +#include "ciao/Servants/Servant_Impl_Base.h" +#include "ciao/Logger/Log_Macros.h" + +#if !defined (__ACE_INLINE__) +# include "Session_Container.inl" +#endif /* __ACE_INLINE__ */ + +namespace CIAO +{ + /////////////////////////////////////////////////////////////// + + ACE_Atomic_Op + Session_Container::serial_number_ (0); + + Session_Container::Session_Container (CORBA::ORB_ptr o, + PortableServer::POA_ptr poa, + Deployment::CIAO_Container_i *container_impl, + bool static_config_flag, + const Static_Config_EntryPoints_Maps* maps, + const char *name, + const CORBA::PolicyList *more_policies) + : Container_i (o, poa, container_impl), + static_config_flag_ (static_config_flag), + static_entrypts_maps_ (maps), + sa_ (0) + { + this->init (name, more_policies); + } + + Session_Container::~Session_Container (void) + { + // delete this->sa_; + } + + void + Session_Container::init (const char *name, + const CORBA::PolicyList *more_policies) + { + CIAO_TRACE ("Session_Container::init"); + + char buffer[MAXPATHLEN]; + + if (!name) + { + unsigned long number = ++Session_Container::serial_number_; + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::init - " + "Constructing container name from serial number %u\n", + number)); + if (ACE_OS::sprintf (buffer, + "CIAO::Session_Container-%ld", + number) < 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO::Session_Container: Unable to create name from number.\n")); + throw Components::CreateFailure (); + } + + name = buffer; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::init - " + "Initializing a container with name %C\n", + name)); + + if (CORBA::is_nil (this->root_poa_.in ())) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO::Session_Container: Unable to initialize the POA.\n")); + throw Components::CreateFailure (); + } + + this->create_component_POA (name, + more_policies, + this->root_poa_.in ()); + + ACE_CString port_poa_name (name); + port_poa_name += ":Port_POA"; + this->create_facet_consumer_POA (port_poa_name.c_str (), + more_policies, + this->root_poa_.in ()); + + PortableServer::POAManager_var poa_manager = + this->root_poa_->the_POAManager (); + + poa_manager->activate (); + } + + void + Session_Container::create_component_POA (const char *name, + const CORBA::PolicyList *p, + PortableServer::POA_ptr root) + { + CIAO_TRACE ("Session_Container::create_component_POA"); + + // Set up proper poa policies here. Default policies seems to be + // fine for session container. If you add some other default + // policies here, then you need to "add" more_policies below + // instead of simply assigning more_policies to the init policy + // list. + CORBA::PolicyList policies (0); + + if (p != 0) + { + policies = *p; + } + + PortableServer::POAManager_var poa_manager = + root->the_POAManager (); + + this->component_poa_ = + root->create_POA (name, poa_manager.in (), policies); + } + + void + Session_Container::create_facet_consumer_POA (const char *name, + const CORBA::PolicyList *p, + PortableServer::POA_ptr root) + { + CIAO_TRACE ("Session_Container::create_facet_consumer_POA"); + + PortableServer::POAManager_var poa_manager = root->the_POAManager (); + CORBA::ULong p_length = 0; + + if (p != 0) + { + p_length = p->length (); + } + + TAO::Utils::PolicyList_Destroyer policies (p_length + 3); + policies.length (p_length + 3); + + policies[0] = + root->create_id_assignment_policy (PortableServer::USER_ID); + + // Servant Manager Policy + policies[1] = + root->create_request_processing_policy (PortableServer::USE_SERVANT_MANAGER); + + // Servant Retention Policy + policies[2] = + root->create_servant_retention_policy (PortableServer::RETAIN); + + for (CORBA::ULong i = 0; i < p_length; ++i) + { + policies[i+3] = (*p)[i]; + } + + this->facet_cons_poa_ = + root->create_POA (name, + poa_manager.in (), + policies); + + Servant_Activator_i *sa = 0; + ACE_NEW_THROW_EX (sa, + Servant_Activator_i (this->orb_.in ()), + CORBA::NO_MEMORY ()); + this->sa_ = sa; + + this->facet_cons_poa_->set_servant_manager (this->sa_.in ()); + } + + CORBA::Object_ptr + Session_Container::install_servant (PortableServer::Servant p, + Container_Types::OA_Type t, + PortableServer::ObjectId_out oid) + { + CIAO_TRACE ("Session_Container::install_servant"); + + PortableServer::POA_ptr tmp = PortableServer::POA::_nil(); + + if (t == Container_Types::COMPONENT_t || + t == Container_Types::HOME_t) + { + tmp = this->component_poa_.in (); + } + else + { + tmp = this->facet_cons_poa_.in (); + } + + PortableServer::ObjectId_var tmp_id = tmp->activate_object (p); + CORBA::Object_var objref = tmp->id_to_reference (tmp_id.in ()); + oid = tmp_id._retn (); + + return objref._retn (); + } + + //@@ Apparently we need to be cautious when handling the exception + // thrown here. We should make sure that new DnC interfaces + // NodeApplication/NodeApplicationManager etc will cache the new + // exceptions--> rethrow of new exceptions is needed. + // --Tao + Components::CCMHome_ptr + Session_Container::install_home (const char *primary_artifact, + const char *entry_point, + const char *servant_artifact, + const char *servant_entrypoint, + const char *name) + { + CIAO_TRACE ("Session_Container::install_home"); + + HomeFactory hcreator = 0; + HomeServantFactory screator = 0; + + if (!this->static_config_flag_) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_home - " + "Loading home [%C] from shared libraries\n", + name)); + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_home - " + "Executor library [%C] with entrypoint [%C]\n", + primary_artifact, entry_point)); + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_home - " + "Servant library [%C] with entrypoint [%C]\n", + servant_artifact, servant_entrypoint)); + + if (!primary_artifact) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "ERROR: Null component executor DLL name\n")); + throw Components::Deployment::UnknownImplId (); + } + + if (!servant_artifact) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "ERROR: Null component servant DLL name\n")); + throw Components::Deployment::UnknownImplId (); + } + + if (!entry_point) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "ERROR: Null entry point for executor DLL [%C]\n", + primary_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + if (!servant_entrypoint) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "ERROR: Null entry point for servant DLL [%C]\n", + servant_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + ACE_DLL executor_dll; + if (executor_dll.open (ACE_TEXT_CHAR_TO_TCHAR (primary_artifact), + ACE_DEFAULT_SHLIB_MODE, + false) != 0) + { + const ACE_TCHAR* error = executor_dll.error (); + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "ERROR in opening the executor DLL [%C] with error [%s]\n", + primary_artifact, error)); + + throw Components::Deployment::UnknownImplId (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_home - " + "Executor DLL successfully opened\n")); + } + + ACE_DLL servant_dll; + if (servant_dll.open (ACE_TEXT_CHAR_TO_TCHAR (servant_artifact), + ACE_DEFAULT_SHLIB_MODE, + false) != 0) + { + const ACE_TCHAR* error = servant_dll.error (); + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "ERROR in opening the servant DLL [%C] with error [%s]\n", + servant_artifact, error)); + + throw Components::Deployment::UnknownImplId (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_home - " + "Servant DLL successfully openend.\n")); + } + + // We have to do this casting in two steps because the C++ + // standard forbids casting a pointer-to-object (including + // void*) directly to a pointer-to-function. + void *void_ptr = executor_dll.symbol (ACE_TEXT_CHAR_TO_TCHAR (entry_point)); + ptrdiff_t tmp_ptr = reinterpret_cast (void_ptr); + hcreator = reinterpret_cast (tmp_ptr); + + void_ptr = servant_dll.symbol (ACE_TEXT_CHAR_TO_TCHAR (servant_entrypoint)); + tmp_ptr = reinterpret_cast (void_ptr); + screator = reinterpret_cast (tmp_ptr); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_home - " + "Loading statically linked home [%C]\n", + name)); + + if (static_entrypts_maps_ == 0 + || static_entrypts_maps_->home_creator_funcptr_map_ == 0 + || static_entrypts_maps_->home_servant_creator_funcptr_map_ == 0) + { + CIAO_DEBUG (6, (LM_ERROR, CLINFO + "Session_Container::install_home - ERROR: Static entrypoint " + "maps are null or imcomplete.\n")); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + ACE_CString entry_point_str (entry_point); + static_entrypts_maps_->home_creator_funcptr_map_->find (entry_point_str, + hcreator); + + ACE_CString servant_entrypoint_str (servant_entrypoint); + static_entrypts_maps_->home_servant_creator_funcptr_map_->find ( + servant_entrypoint_str, screator); + } + + if (!hcreator) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - Error: Entry point " + "invalid in dll [%C]\n", + primary_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + if (!screator) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - Error: Entry point " + "invalid in dll [%C]\n", + servant_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_home - Loading home executor\n")); + Components::HomeExecutorBase_var home_executor = hcreator (); + + if (CORBA::is_nil (home_executor.in ())) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "Home executor factory failed.\n")); + throw Components::Deployment::InstallationFailure (); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_home - Loading home servant\n")); + PortableServer::Servant home_servant = screator (home_executor.in (), + this, + name); + + if (!home_servant) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - " + "Home servant factory failed.\n")); + throw Components::Deployment::InstallationFailure (); + } + + PortableServer::ServantBase_var safe (home_servant); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_home - Installing home servant\n")); + + PortableServer::ObjectId_var oid; + + CORBA::Object_var objref = + this->install_servant (home_servant, Container_Types::HOME_t, oid.out ()); + + Components::CCMHome_var homeref = + Components::CCMHome::_narrow (objref.in ()); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_home - Home successfully created with name\n")); + + return homeref._retn (); + } + + Components::CCMObject_ptr + Session_Container::install_component (const char *primary_artifact, + const char *entry_point, + const char *servant_artifact, + const char *servant_entrypoint, + const char *name) + { + CIAO_TRACE ("Session_Container::install_component"); + + ComponentFactory ccreator = 0; + ComponentServantFactory screator = 0; + + if (!this->static_config_flag_) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_component - " + "Loading component [%C] from shared libraries\n", + name)); + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_component - " + "Executor library [%C] with entrypoint [%C]\n", + primary_artifact, entry_point)); + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_component - " + "Servant library [%C] with entrypoint [%C]\n", + servant_artifact, servant_entrypoint)); + + if (!primary_artifact) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR: Null component executor DLL name\n")); + throw Components::Deployment::UnknownImplId (); + } + + if (!servant_artifact) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR: Null component servant DLL name\n")); + throw Components::Deployment::UnknownImplId (); + } + + if (!entry_point) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR: Null entry point for executor DLL [%C]\n", + primary_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + if (!servant_entrypoint) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR: Null entry point for servant DLL [%C]\n", + servant_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + + ACE_DLL executor_dll; + if (executor_dll.open (ACE_TEXT_CHAR_TO_TCHAR (primary_artifact), + ACE_DEFAULT_SHLIB_MODE, + 0) != 0) + { + const ACE_TCHAR* error = executor_dll.error (); + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR in opening the executor DLL [%C] with error [%s]\n", + primary_artifact, error)); + + throw Components::Deployment::UnknownImplId (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_component - Executor DLL successfully opened\n")); + } + + ACE_DLL servant_dll; + if (servant_dll.open (ACE_TEXT_CHAR_TO_TCHAR (servant_artifact), + ACE_DEFAULT_SHLIB_MODE, + 0) != 0) + { + const ACE_TCHAR* error = servant_dll.error (); + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR in opening the servant DLL [%C] with error [%s]\n", + servant_artifact, error)); + + throw Components::Deployment::UnknownImplId (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_component - Servant DLL successfully openend.\n")); + } + + // We have to do this casting in two steps because the C++ + // standard forbids casting a pointer-to-object (including + // void*) directly to a pointer-to-function. + void *void_ptr = executor_dll.symbol (ACE_TEXT_CHAR_TO_TCHAR (entry_point)); + ptrdiff_t tmp_ptr = reinterpret_cast (void_ptr); + ccreator = reinterpret_cast (tmp_ptr); + + void_ptr = servant_dll.symbol (ACE_TEXT_CHAR_TO_TCHAR (servant_entrypoint)); + tmp_ptr = reinterpret_cast (void_ptr); + screator = reinterpret_cast (tmp_ptr); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Session_Container::install_component - " + "Loading statically linked component [%C]\n", + name)); + + if (static_entrypts_maps_ == 0 + || static_entrypts_maps_->component_creator_funcptr_map_ == 0 + || static_entrypts_maps_->component_servant_creator_funcptr_map_ == 0) + { + CIAO_DEBUG (6, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "ERROR: Static entrypoint " + "maps are null or imcomplete.\n")); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + ACE_CString entry_point_str (entry_point); + static_entrypts_maps_->component_creator_funcptr_map_->find (entry_point_str, + ccreator); + + ACE_CString servant_entrypoint_str (servant_entrypoint); + static_entrypts_maps_->component_servant_creator_funcptr_map_->find (servant_entrypoint_str, + screator); + } + + if (!ccreator) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - Error: Entry point " + "invalid in dll [%C]\n", + primary_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + if (!screator) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_home - Error: Entry point " + "invalid in dll [%C]\n", + servant_artifact)); + throw Components::Deployment::ImplEntryPointNotFound (); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_component - " + "Loading component executor\n")); + + Components::EnterpriseComponent_var component_executor = ccreator (); + + if (CORBA::is_nil (component_executor.in ())) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "Component executor factory failed.\n")); + throw Components::Deployment::InstallationFailure (); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_component - " + "Loading component servant\n")); + PortableServer::Servant component_servant = screator (component_executor.in (), + this, + name); + + if (!component_servant) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO + "Session_Container::install_component - " + "Component servant factory failed.\n")); + throw Components::Deployment::InstallationFailure (); + } + + PortableServer::ServantBase_var safe (component_servant); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_component - " + "Installing component servant\n")); + + PortableServer::ObjectId_var oid; + + CORBA::Object_var objref = + this->install_servant (component_servant, Container_Types::COMPONENT_t, oid.out ()); + + Components::CCMObject_var componentref = + Components::CCMObject::_narrow (objref.in ()); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Session_Container::install_component - " + "Component successfully created\n")); + + return componentref._retn (); + } + + void + Session_Container::connect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port) + { + CIAO_TRACE ("Session_Container::connect_local_facet"); + + if (!provider_port || !user_port) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::connect_local_facet - " + "Nil port name provided to connect local facet, throwing exception\n")); + throw ::Components::InvalidConnection (); + } + + try + { + PortableServer::Servant srv_tmp = + this->component_poa_->reference_to_servant (provider); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::connect_local_facet - " + "Successfully fetched provider servant [%C] from POA\n", provider_port)); + + CIAO::Servant_Impl_Base *prov_serv = + dynamic_cast (srv_tmp); + + if (!prov_serv) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::connect_local_facet - " + "Unable to cast to provider servant implementation\n")); + throw ::Components::InvalidConnection (); + } + + srv_tmp = this->component_poa_->reference_to_servant (user); + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::connect_local_facet - " + "Successfully fetched user servant [%C] from POA\n", user_port)); + + CIAO::Servant_Impl_Base *user_serv = + dynamic_cast (srv_tmp); + + if (!user_serv) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::connect_local_facet - " + "Unable to cast to provider servant implementation\n")); + throw ::Components::InvalidConnection (); + } + + ::CORBA::Object_ptr exec = prov_serv->get_facet_executor (provider_port); + + // Note: Spec says that facet executor provided by component MAY BE NIL + if (!::CORBA::is_nil (exec)) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "Session_Container::connect_local_facet - " + "Create connection between [%C] and [%C]\n", user_port, provider_port)); + user_serv->connect (user_port, exec); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "Session_Container::connect_local_facet - " + "Got nil facet executor for [%C]\n", provider_port)); + } + } + catch (const ::Components::InvalidConnection &) + { + throw; + } + catch (const ::CORBA::Exception &ex) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::connect_local_facet - " + "Caught exception %C.\n", + ex._info ().c_str ())); + throw; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::connect_local_facet - " + "Attempting to connect components not managed by this container.\n")); + throw ::Components::InvalidConnection (); + } + } + + void + Session_Container::disconnect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port) + { + CIAO_TRACE ("Session_Container::disconnect_local_facet"); + + try + { + PortableServer::Servant srv_tmp = this->component_poa_->reference_to_servant (provider); + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::disconnect_local_facet - " + "Successfully fetched provider servant from POA\n")); + + CIAO::Servant_Impl_Base *prov_serv = + dynamic_cast (srv_tmp); + + if (!prov_serv) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::disconnect_local_facet - " + "Unable to cast to provider servant implementation\n")); + throw ::Components::InvalidConnection (); + } + + srv_tmp = this->component_poa_->reference_to_servant (user); + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::disconnect_local_facet - " + "Successfully fetched user servant from POA\n")); + + CIAO::Servant_Impl_Base *user_serv = + dynamic_cast (srv_tmp); + + if (!user_serv) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::disconnect_local_facet - " + "Unable to cast to provider servant implementation\n")); + throw ::Components::InvalidConnection (); + } + + ::CORBA::Object_ptr exec = prov_serv->get_facet_executor (provider_port); + + // Note: Spec says that facet executor provided by component MAY BE NIL + if (!::CORBA::is_nil (exec)) + { + user_serv->disconnect (user_port, 0); + } + else + { + throw ::Components::InvalidConnection (); + } + } + catch (const ::Components::InvalidConnection &) + { + throw; + } + catch (const ::CORBA::Exception &ex) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::disconnect_local_facet - " + "Caught exception %C.\n", + ex._info ().c_str ())); + throw; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::disconnect_local_facet - " + "Attempting to connect components not managed by this container.\n")); + throw ::Components::InvalidConnection (); + } + + } + + void + Session_Container::activate_component (Components::CCMObject_ptr compref) + { + CIAO_TRACE("Session_Container::activate_component"); + + try + { + + CIAO::Servant_Impl_Base * svt = 0; + + try + { + svt = dynamic_cast ( + this->component_poa_->reference_to_servant (compref)); + } + catch (...) + { + throw InvalidComponent (); + } + + if (!svt) + { + throw CIAO::InvalidComponent (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::activate_component - " + "Invoking CCM activate on provided component object reference.\n")); + svt->activate_component (); + } + } + catch (const CIAO::InvalidComponent &) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::activate_component - " + "Failed to retrieve servant and/or cast to servant pointer.\n")); + throw; + } + catch (const CORBA::Exception &ex) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::activate_component - " + "Caught CORBA exception while activating a component: %C\n", + ex._info ().c_str ())); + throw; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::activate_component - " + "Caught unknown C++ eception while activating a component.\n")); + throw; + } + } + + void + Session_Container::passivate_component (Components::CCMObject_ptr compref) + { + CIAO_TRACE ("Session_Container::passivate_component"); + + try + { + CIAO::Servant_Impl_Base * svt = 0; + + try + { + svt = dynamic_cast + (this->component_poa_->reference_to_servant (compref)); + } + catch (...) + { + throw InvalidComponent (); + } + + if (!svt) + { + throw CIAO::InvalidComponent (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::passivate_component - " + "Invoking CCM passivate on provided component object reference.\n")); + svt->passivate_component (); + } + } + catch (const CORBA::Exception &ex) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::passivate_component - " + "Caught CORBA exception while passivating a component: %C\n", + ex._info ().c_str ())); + throw; + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::passivate_component - " + "Caught unknown C++ eception while passivating a component.\n")); + throw; + } + } + + void + Session_Container::uninstall (CORBA::Object_ptr objref, Container_Types::OA_Type y) + { + CIAO_TRACE ("Session_Container::uninstall"); + + PortableServer::Servant svnt; + + switch (y) + { + case Container_Types::COMPONENT_t: + case Container_Types::HOME_t: + svnt = this->component_poa_->reference_to_servant (objref); + break; + default: + svnt = this->facet_cons_poa_->reference_to_servant (objref); + break; + } + + PortableServer::ObjectId_var oid; + this->uninstall_servant (svnt, y, oid.out ()); + } + + void + Session_Container::uninstall_home (Components::CCMHome_ptr homeref) + { + CIAO_TRACE ("Session_Container::uninstall_home"); + + this->uninstall (homeref, Container_Types::HOME_t); + } + + void + Session_Container::uninstall_component (Components::CCMObject_ptr homeref) + { + CIAO_TRACE ("Session_Container::uninstall_component"); + + CIAO::Servant_Impl_Base * svnt = dynamic_cast ( + this->component_poa_->reference_to_servant (homeref)); + + if (!svnt) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::uninstall_component - " + "Unable to convert provided servant reference to servant implementation.")); + throw ::Components::RemoveFailure (); + } + else + { + svnt->remove (); + } + } + + void + Session_Container::uninstall_servant (PortableServer::Servant svnt, + Container_Types::OA_Type t, + PortableServer::ObjectId_out oid) + { + CIAO_TRACE ("Session_Container::uninstall_servant"); + + PortableServer::POA_ptr tmp = PortableServer::POA::_nil(); + + if ((t == Container_Types::COMPONENT_t) || + (t == Container_Types::HOME_t)) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::uninstall_servant - " + "Removing component or home servant\n")); + tmp = this->component_poa_.in (); + } + else + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::uninstall_servant - " + "Removing facet or consumer servant\n")); + tmp = this->facet_cons_poa_.in (); + } + + try + { + PortableServer::ObjectId_var tmp_id; + tmp_id = tmp->servant_to_id (svnt); + tmp->deactivate_object (tmp_id); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Session_Container::uninstall_servant - " + "Servant successfully removed, reference count is %u\n", + svnt->_refcount_value () - 1)); + + svnt->_remove_ref (); + + oid = tmp_id._retn (); + } + catch (const CORBA::Exception &ex) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Session_Container::uninstall_servant - " + "Caught CORBA exception while uninstalling servant: %C\n", + ex._info ().c_str ())); + throw Components::RemoveFailure (); + } + + } + + void + Session_Container::add_servant_to_map (PortableServer::ObjectId &, + Dynamic_Component_Servant_Base*) + { + CIAO_TRACE ("Session_Container::add_servant_to_map"); + throw CORBA::NO_IMPLEMENT (); + } + + void + Session_Container::delete_servant_from_map (PortableServer::ObjectId &) + { + CIAO_TRACE ("Session_Container::delete_servant_from_map"); + throw CORBA::NO_IMPLEMENT (); + } + + void + Session_Container::deactivate_facet (const PortableServer::ObjectId &) + { + CIAO_TRACE ("Session_Container::deactivate_facet"); + } + + CORBA::Object_ptr + Session_Container::get_home_objref (PortableServer::Servant) + { + CIAO_TRACE ("Session_Container::get_home_objref"); + throw CORBA::NO_IMPLEMENT (); + } + + CORBA::Object_ptr + Session_Container::generate_reference (const char *obj_id, + const char *repo_id, + Container_Types::OA_Type t) + { + CIAO_TRACE ("Session_Container::generate_reference"); + + PortableServer::POA_ptr tmp = PortableServer::POA::_nil(); + + if (t == Container_Types::COMPONENT_t || t == Container_Types::HOME_t) + { + tmp = this->component_poa_.in (); + } + else + { + tmp = this->facet_cons_poa_.in (); + } + + PortableServer::ObjectId_var oid = + PortableServer::string_to_ObjectId (obj_id); + + CORBA::String_var str = PortableServer::ObjectId_to_string (oid.in ()); + + CORBA::Object_var objref = + tmp->create_reference_with_id (oid.in (), repo_id); + + return objref._retn (); + } +} diff --git a/modules/CIAO/ciao/Containers/Session/Session_Container.h b/modules/CIAO/ciao/Containers/Session/Session_Container.h new file mode 100644 index 00000000000..0f1f51f0fd2 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Session/Session_Container.h @@ -0,0 +1,239 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Session_Container.h + * + * $Id$ + * + * Header file for CIAO's container implementations + * + * @author Nanbor Wang + * @author Gan Deng + */ +//============================================================================= + +#ifndef CIAO_SESSION_CONTAINER_H +#define CIAO_SESSION_CONTAINER_H + +#include /**/ "ace/pre.h" + +#include "ciao/Containers/Session/Session_Container_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/PortableServer/Servant_Base.h" +#include "ciao/Containers/Container_Base.h" + +namespace CIAO +{ + class Session_Container; + class Servant_Activator; + + namespace Deployment + { + class CIAO_Container_i; + } + + typedef ::Components::HomeExecutorBase_ptr (*HomeFactory) (void); + typedef ::PortableServer::Servant (*HomeServantFactory) (::Components::HomeExecutorBase_ptr p, + ::CIAO::Container_ptr c, + const char *ins_name); + typedef ::Components::EnterpriseComponent_ptr (*ComponentFactory) (void); + typedef ::PortableServer::Servant (*ComponentServantFactory) (::Components::EnterpriseComponent_ptr, + ::CIAO::Container_ptr, + const char *); + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> + HOMECREATOR_FUNCPTR_MAP; + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> + HOMESERVANTCREATOR_FUNCPTR_MAP; + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> + COMPONENTCREATOR_FUNCPTR_MAP; + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> + COMPONENTSERVANTCREATOR_FUNCPTR_MAP; + + + struct SESSION_CONTAINER_Export Static_Config_EntryPoints_Maps + { + /// Map of home creator entry point name and func ptr + HOMECREATOR_FUNCPTR_MAP* home_creator_funcptr_map_; + + /// Map of home servant creator entry point name and func ptr + HOMESERVANTCREATOR_FUNCPTR_MAP* home_servant_creator_funcptr_map_; + + /// Map of home creator entry point name and func ptr + COMPONENTCREATOR_FUNCPTR_MAP* component_creator_funcptr_map_; + + /// Map of home servant creator entry point name and func ptr + COMPONENTSERVANTCREATOR_FUNCPTR_MAP* component_servant_creator_funcptr_map_; + }; + + class SESSION_CONTAINER_Export Session_Container : public Container_i + { + public: + Session_Container (CORBA::ORB_ptr o, + PortableServer::POA_ptr poa, + Deployment::CIAO_Container_i *container_impl, + bool static_config_flag = false, + const Static_Config_EntryPoints_Maps* static_entrypts_maps =0, + const char *name = 0, + const CORBA::PolicyList *more_policies = 0); + + virtual ~Session_Container (void); + + /** + * @brief Simply installing a home executor into the component. + * + * This operation install a home executor into the component. It + * requires the name of the DLLs to executor and the servant glue + * code, and the entry points to the respective DLLs. Currently, + * we don't try to manage the lifetime of DLL objects, but we + * should at some later point. + * + * @retval Home objref of the installed home. + */ + /// Install a new home + virtual Components::CCMHome_ptr install_home (const char *primary_artifact, + const char *entry_point, + const char *servant_artifact, + const char *servant_entrypoint, + const char *name); + + virtual void uninstall_home (Components::CCMHome_ptr homeref); + + virtual Components::CCMObject_ptr install_component (const char *primary_artifact, + const char *entry_point, + const char *servant_artifact, + const char *servant_entrypoint, + const char *name); + + virtual void connect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port); + + virtual void disconnect_local_facet (::Components::CCMObject_ptr provider, + const char * provider_port, + ::Components::CCMObject_ptr user, + const char * user_port); + + /// Activate component + virtual void activate_component (Components::CCMObject_ptr compref); + + virtual void passivate_component (Components::CCMObject_ptr compref); + + virtual void uninstall_component (Components::CCMObject_ptr compref); + + /// Uninstall a servant + virtual void uninstall_servant (PortableServer::Servant objref, + Container_Types::OA_Type type, + PortableServer::ObjectId_out oid); + + /// Install a servant for component or home. + virtual CORBA::Object_ptr install_servant (PortableServer::Servant p, + Container_Types::OA_Type type, + PortableServer::ObjectId_out oid); + + /// Get an object reference to a component or home from the servant. + virtual CORBA::Object_ptr get_objref (PortableServer::Servant p); + + /// Uninstall a servant for component or home. + void uninstall (CORBA::Object_ptr objref, Container_Types::OA_Type t); + + /// Uninstall a servant for component or home. + void uninstall (PortableServer::Servant svt, Container_Types::OA_Type t); + + virtual void add_servant_to_map (PortableServer::ObjectId &oid, + Dynamic_Component_Servant_Base* servant); + + virtual void delete_servant_from_map (PortableServer::ObjectId &oid); + + // @@Jai, could yo please add documentation? + /* + * @@Jai, you may want to consider moving these away from the + * container interface. I know what you are going to say + * :-). Consider using dynamic_cast <> to access + * add_servant_to_map, delete_servant_from_map and + * deactivate_facet from the Swapping_Conatiner's interface. It + * would make the base container interface much cleaner. + */ + virtual void deactivate_facet (const PortableServer::ObjectId &oid); + + virtual CORBA::Object_ptr get_home_objref (PortableServer::Servant p); + + /// Analog of the POA method that creates an object reference from + /// an object id string. + CORBA::Object_ptr generate_reference (const char *obj_id, + const char *repo_id, + Container_Types::OA_Type t); + + /// Return the servant activator factory that activates the + /// servants for facets and consumers. + ::CIAO::Servant_Activator_ptr ports_servant_activator (void); + + private: + + /// Initialize the container with a name. + virtual void init (const char *name = 0, + const CORBA::PolicyList *more_policies = 0); + + /// Create POA for the component. + /** + * This is the POA that is returned to the component applications + * if they need one. + */ + void create_component_POA (const char *name, + const CORBA::PolicyList *p, + PortableServer::POA_ptr root); + + /// Create POA for the facets and consumers alone. + void create_facet_consumer_POA (const char *name, + const CORBA::PolicyList *p, + PortableServer::POA_ptr root); + + /// Not allowed to be + Session_Container (void); + + protected: + /// Static variable to store the highest number we have given out until + /// now + static ACE_Atomic_Op serial_number_; + + const bool static_config_flag_; + const Static_Config_EntryPoints_Maps* static_entrypts_maps_; + + /// The servant activator factory used to activate facets and + /// consumer servants. + Servant_Activator_var sa_; + }; +} + +#if defined (__ACE_INLINE__) +# include "Session_Container.inl" +#endif /* __ACE_INLINE__ */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_SESSION_CONTAINER_H */ diff --git a/modules/CIAO/ciao/Containers/Session/Session_Container.idl b/modules/CIAO/ciao/Containers/Session/Session_Container.idl new file mode 100644 index 00000000000..65021db65c8 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Session/Session_Container.idl @@ -0,0 +1,15 @@ +/** + * @file Session_Container.idl + * @author William R. Otte + * $Id$ + * Extends the basic container interface for session capabilities. + */ + +#include "ciao/Containers/Container_Base.idl" + +module CIAO +{ + local interface Session_Container : Container + { + }; +}; diff --git a/modules/CIAO/ciao/Containers/Session/Session_Container.inl b/modules/CIAO/ciao/Containers/Session/Session_Container.inl new file mode 100644 index 00000000000..03461c07ac6 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Session/Session_Container.inl @@ -0,0 +1,13 @@ +// $Id$ -*- C++ -*- + +ACE_INLINE CORBA::Object_ptr +CIAO::Session_Container::get_objref (PortableServer::Servant p) +{ + return this->the_POA ()->servant_to_reference (p); +} + +ACE_INLINE CIAO::Servant_Activator_ptr +CIAO::Session_Container::ports_servant_activator (void) +{ + return Servant_Activator::_duplicate(this->sa_.in ()); +} diff --git a/modules/CIAO/ciao/Containers/Session/Session_Container.mpc b/modules/CIAO/ciao/Containers/Session/Session_Container.mpc new file mode 100644 index 00000000000..261a5eb0e45 --- /dev/null +++ b/modules/CIAO/ciao/Containers/Session/Session_Container.mpc @@ -0,0 +1,30 @@ +// -*- MPC -*- +// $Id$ + +project(CIAO_Session_Container_idl) : ciaoidldefaults { + custom_only = 1 + idlflags += -Wb,export_include=Session_Container_export.h \ + -Wb,export_macro=SESSION_CONTAINER_Export \ + -Gxhst -SS -Sci + IDL_Files { + Session_Container.idl + } +} + +project(CIAO_Session_Container) : ccm_svnt, ciao_lib, ciao_container_base, utils, \ + ccm_componentserver_stub, ciao_servant_activator, ciao_servant { + after += CIAO_Session_Container_idl + dynamicflags += SESSION_CONTAINER_BUILD_DLL + + IDL_Files { + } + Source_Files { + Session_Container.cpp + } + Inline_Files { + Session_Container.inl + } + Header_Files { + Session_Container.h + } +} diff --git a/modules/CIAO/ciao/Contexts/Context.mpc b/modules/CIAO/ciao/Contexts/Context.mpc new file mode 100644 index 00000000000..955521cfa3b --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context.mpc @@ -0,0 +1,16 @@ +//$Id$ +project(CIAO_Context_Impl) : ccm_svnt, ciao_container_base, portableserver, ciao_output { + dynamicflags = CONTEXT_IMPL_BUILD_DLL + Source_Files { + Context_Impl_Base.cpp + Context_Impl_T.cpp + } + Header_Files { + Context_Impl_Base.h + Context_Impl_T.h + Context_Impl_export.h + } + Inline_Files { + Context_Impl_Base.inl + } +} diff --git a/modules/CIAO/ciao/Contexts/Context_Impl_Base.cpp b/modules/CIAO/ciao/Contexts/Context_Impl_Base.cpp new file mode 100644 index 00000000000..d695b58025a --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context_Impl_Base.cpp @@ -0,0 +1,76 @@ +// $Id$ + +#include "Context_Impl_Base.h" + +#if !defined (__ACE_INLINE__) +# include "Context_Impl_Base.inl" +#endif /* __ACE_INLINE__ */ + +#include "ciao/Containers/Container_BaseC.h" + +namespace CIAO +{ + Context_Impl_Base::Context_Impl_Base (void) + { + // This constructor is here to keep MSVC happy and should + // not be used at all. This constructor should be removed + // in the future. Until then, we have the ACE_ASSERT + // below to detect a runtime call to this constructor. + ACE_ASSERT (0); + } + + Context_Impl_Base::Context_Impl_Base (Components::CCMHome_ptr home, + Container_ptr c) + : home_ (Components::CCMHome::_duplicate (home)), + container_ (Container::_duplicate (c)) + { + } + + Context_Impl_Base::~Context_Impl_Base (void) + { + } + + // Operations from ::Components::CCMContext. + + Components::Principal_ptr + Context_Impl_Base::get_caller_principal (void) + { + throw CORBA::NO_IMPLEMENT (); + } + + Components::CCMHome_ptr + Context_Impl_Base::get_CCM_home (void) + { + return Components::CCMHome::_duplicate (this->home_.in ()); + } + + CORBA::Boolean + Context_Impl_Base::get_rollback_only (void) + { + throw CORBA::NO_IMPLEMENT (); + } + + Components::Transaction::UserTransaction_ptr + Context_Impl_Base::get_user_transaction (void) + { + throw CORBA::NO_IMPLEMENT (); + } + + CORBA::Boolean + Context_Impl_Base::is_caller_in_role (const char * /* role */) + { + throw CORBA::NO_IMPLEMENT (); + } + + void + Context_Impl_Base::set_rollback_only (void) + { + throw CORBA::NO_IMPLEMENT (); + } + + CORBA::Object_ptr + Context_Impl_Base::resolve_service_reference(const char *) + { + throw CORBA::NO_IMPLEMENT (); + } +} diff --git a/modules/CIAO/ciao/Contexts/Context_Impl_Base.h b/modules/CIAO/ciao/Contexts/Context_Impl_Base.h new file mode 100644 index 00000000000..37afdbe9146 --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context_Impl_Base.h @@ -0,0 +1,103 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Context_Impl_Base.h + * + * $Id$ + * + * This file contains the non-template declaration of a base class for + * the template mixin for the generated context class. + * + * @author Jeff Parsons + */ +//============================================================================= + +#ifndef CIAO_CONTEXT_IMPL_BASE_H +#define CIAO_CONTEXT_IMPL_BASE_H + +#include /**/ "ace/pre.h" + +#include "Context_Impl_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ccm/CCM_ContextC.h" + +namespace Components +{ + class CCMHome; + typedef CCMHome *CCMHome_ptr; + + typedef + TAO_Objref_Var_T< + CCMHome + > + CCMHome_var; +} + +namespace CIAO +{ + class Container; + typedef Container *Container_ptr; + typedef TAO_Objref_Var_T Container_var; + + /** + * @class Context_Impl_Base + * + * @brief Non-template base class for Context_Impl. + * + * Holds the non-template parts of its child class + * Context_Impl. + */ + class Context_Impl_Export Context_Impl_Base + : public virtual Components::CCMContext + { + public: + Context_Impl_Base (Components::CCMHome_ptr home, Container_ptr c); + + virtual ~Context_Impl_Base (void); + + // Operations from ::Components::CCMContext. + + virtual Components::Principal_ptr get_caller_principal (); + + virtual Components::CCMHome_ptr get_CCM_home (); + + virtual CORBA::Boolean get_rollback_only (); + + virtual Components::Transaction::UserTransaction_ptr get_user_transaction (); + + virtual CORBA::Boolean is_caller_in_role (const char *role); + + virtual void set_rollback_only (); + + virtual CORBA::Object_ptr resolve_service_reference(const char *service_id); + + /// CIAO-specific. + CIAO::Container_ptr _ciao_the_Container (void) const; + + /// Accessors for the private member. + const char *_ciao_instance_id (void) const; + void _ciao_instance_id (const char *instance_id); + + protected: + Components::CCMHome_var home_; + Container_var container_; + + private: + Context_Impl_Base (void); + + CORBA::String_var ciao_instance_id_; + }; +} + +#if defined (__ACE_INLINE__) +# include "Context_Impl_Base.inl" +#endif /* __ACE_INLINE__ */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_CONTEXT_IMPL_BASE_H */ diff --git a/modules/CIAO/ciao/Contexts/Context_Impl_Base.inl b/modules/CIAO/ciao/Contexts/Context_Impl_Base.inl new file mode 100644 index 00000000000..7365d9c0b48 --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context_Impl_Base.inl @@ -0,0 +1,24 @@ +// $Id$ + +namespace CIAO +{ + // CIAO-specific. + + ACE_INLINE CIAO::Container_ptr + Context_Impl_Base::_ciao_the_Container (void) const + { + return this->container_; + } + + ACE_INLINE const char * + Context_Impl_Base::_ciao_instance_id (void) const + { + return this->ciao_instance_id_.in (); + } + + ACE_INLINE void + Context_Impl_Base::_ciao_instance_id (const char *instance_id) + { + this->ciao_instance_id_ = instance_id; + } +} diff --git a/modules/CIAO/ciao/Contexts/Context_Impl_T.cpp b/modules/CIAO/ciao/Contexts/Context_Impl_T.cpp new file mode 100644 index 00000000000..2481c562db4 --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context_Impl_T.cpp @@ -0,0 +1,58 @@ +// $Id$ + +#ifndef CIAO_CONTEXT_IMPL_T_C +#define CIAO_CONTEXT_IMPL_T_C + +#include "Context_Impl_T.h" + +namespace CIAO +{ + template + Context_Impl::Context_Impl ( + Components::CCMHome_ptr the_home, + Container_ptr c, + PortableServer::Servant sv) + : Context_Impl_Base (the_home, c), + servant_ (sv) + { + } + + template + Context_Impl::~Context_Impl (void) + { + } + + template + CORBA::Object_ptr + Context_Impl::get_CCM_object (void) + { + if (CORBA::is_nil (this->component_.in ())) + { + CORBA::Object_var obj; + + try + { + obj = this->container_->get_objref (this->servant_); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Caught Exception\n"); + return CORBA::Object::_nil (); + } + + this->component_ = COMP::_narrow (obj.in ()); + + if (CORBA::is_nil (this->component_.in ())) + { + throw CORBA::INTERNAL (); + } + } + + return COMP::_duplicate (this->component_.in ()); + } +} + +#endif /* CIAO_CONTEXT_IMPL_T_C */ diff --git a/modules/CIAO/ciao/Contexts/Context_Impl_T.h b/modules/CIAO/ciao/Contexts/Context_Impl_T.h new file mode 100644 index 00000000000..84c6d3d04bf --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context_Impl_T.h @@ -0,0 +1,110 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Context_Impl_T.h + * + * $Id$ + * + * This file contains the declaration of a mixin base class for + * the generated context class. + * + * @author Jeff Parsons + */ +//============================================================================= + + +#ifndef CIAO_CONTEXT_IMPL_T_H +#define CIAO_CONTEXT_IMPL_T_H + +#include /**/ "ace/pre.h" + +#include "Context_Impl_Base.h" +#include "tao/LocalObject.h" +#include "tao/PortableServer/PS_ForwardC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL +namespace CORBA +{ + class SystemException; +} + +namespace SecurityLevel2 +{ + class Credentials; +} +TAO_END_VERSIONED_NAMESPACE_DECL + +namespace Components +{ + typedef SecurityLevel2::Credentials Principal; + typedef Principal *Principal_ptr; + + class IllegalState; + + namespace Transaction + { + class UserTransaction; + typedef UserTransaction *UserTransaction_ptr; + } +} + +namespace CIAO +{ + class Container; + typedef Container *Container_ptr; + + /** + * @class Context_Impl + * + * @brief Mixin base class for generated context. + * + * This class implements operations and contains parameterized + * members common to all generated servants. + */ + template + class Context_Impl : public virtual BASE_CTX, + public virtual Context_Impl_Base, + public virtual ::CORBA::LocalObject + { + public: + /// Type definition of the context type. + typedef BASE_CTX context_type; + + /// Type definition of the var type for the context. + typedef typename context_type::_var_type _var_type; + + /// Type definition of the component type. + typedef COMP component_type; + + Context_Impl (Components::CCMHome_ptr the_home, + Container_ptr c, + PortableServer::Servant sv); + + virtual ~Context_Impl (void); + + // Operations from ::Components::SessionContext. + virtual CORBA::Object_ptr get_CCM_object (); + + private: + PortableServer::Servant servant_; + typename COMP::_var_type component_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "Context_Impl_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Context_Impl_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_CONTEXT_IMPL_T_H */ diff --git a/modules/CIAO/ciao/Contexts/Context_Impl_export.h b/modules/CIAO/ciao/Contexts/Context_Impl_export.h new file mode 100644 index 00000000000..644dbfc00bb --- /dev/null +++ b/modules/CIAO/ciao/Contexts/Context_Impl_export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl Context_Impl +// ------------------------------ +#ifndef CONTEXT_IMPL_EXPORT_H +#define CONTEXT_IMPL_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CONTEXT_IMPL_HAS_DLL) +# define CONTEXT_IMPL_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CONTEXT_IMPL_HAS_DLL */ + +#if !defined (CONTEXT_IMPL_HAS_DLL) +# define CONTEXT_IMPL_HAS_DLL 1 +#endif /* ! CONTEXT_IMPL_HAS_DLL */ + +#if defined (CONTEXT_IMPL_HAS_DLL) && (CONTEXT_IMPL_HAS_DLL == 1) +# if defined (CONTEXT_IMPL_BUILD_DLL) +# define Context_Impl_Export ACE_Proper_Export_Flag +# define CONTEXT_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CONTEXT_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CONTEXT_IMPL_BUILD_DLL */ +# define Context_Impl_Export ACE_Proper_Import_Flag +# define CONTEXT_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CONTEXT_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CONTEXT_IMPL_BUILD_DLL */ +#else /* CONTEXT_IMPL_HAS_DLL == 1 */ +# define Context_Impl_Export +# define CONTEXT_IMPL_SINGLETON_DECLARATION(T) +# define CONTEXT_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CONTEXT_IMPL_HAS_DLL == 1 */ + +// Set CONTEXT_IMPL_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CONTEXT_IMPL_NTRACE) +# if (ACE_NTRACE == 1) +# define CONTEXT_IMPL_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CONTEXT_IMPL_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CONTEXT_IMPL_NTRACE */ + +#if (CONTEXT_IMPL_NTRACE == 1) +# define CONTEXT_IMPL_TRACE(X) +#else /* (CONTEXT_IMPL_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CONTEXT_IMPL_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CONTEXT_IMPL_NTRACE == 1) */ + +#endif /* CONTEXT_IMPL_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/ciao/Logger/CIAO_Logger_Export.h b/modules/CIAO/ciao/Logger/CIAO_Logger_Export.h new file mode 100644 index 00000000000..b1760b426f9 --- /dev/null +++ b/modules/CIAO/ciao/Logger/CIAO_Logger_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl CIAO_Logger +// ------------------------------ +#ifndef CIAO_LOGGER_EXPORT_H +#define CIAO_LOGGER_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CIAO_LOGGER_HAS_DLL) +# define CIAO_LOGGER_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CIAO_LOGGER_HAS_DLL */ + +#if !defined (CIAO_LOGGER_HAS_DLL) +# define CIAO_LOGGER_HAS_DLL 1 +#endif /* ! CIAO_LOGGER_HAS_DLL */ + +#if defined (CIAO_LOGGER_HAS_DLL) && (CIAO_LOGGER_HAS_DLL == 1) +# if defined (CIAO_LOGGER_BUILD_DLL) +# define CIAO_Logger_Export ACE_Proper_Export_Flag +# define CIAO_LOGGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CIAO_LOGGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CIAO_LOGGER_BUILD_DLL */ +# define CIAO_Logger_Export ACE_Proper_Import_Flag +# define CIAO_LOGGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CIAO_LOGGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CIAO_LOGGER_BUILD_DLL */ +#else /* CIAO_LOGGER_HAS_DLL == 1 */ +# define CIAO_Logger_Export +# define CIAO_LOGGER_SINGLETON_DECLARATION(T) +# define CIAO_LOGGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CIAO_LOGGER_HAS_DLL == 1 */ + +// Set CIAO_LOGGER_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CIAO_LOGGER_NTRACE) +# if (ACE_NTRACE == 1) +# define CIAO_LOGGER_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CIAO_LOGGER_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CIAO_LOGGER_NTRACE */ + +#if (CIAO_LOGGER_NTRACE == 1) +# define CIAO_LOGGER_TRACE(X) +#else /* (CIAO_LOGGER_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CIAO_LOGGER_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CIAO_LOGGER_NTRACE == 1) */ + +#endif /* CIAO_LOGGER_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/ciao/Logger/Log_Macros.cpp b/modules/CIAO/ciao/Logger/Log_Macros.cpp new file mode 100644 index 00000000000..6b7dd6aeac9 --- /dev/null +++ b/modules/CIAO/ciao/Logger/Log_Macros.cpp @@ -0,0 +1,6 @@ +// $Id$ + +#include "Log_Macros.h" + +CIAO_Logger_Export unsigned int CIAO_debug_level = 0; + diff --git a/modules/CIAO/ciao/Logger/Log_Macros.h b/modules/CIAO/ciao/Logger/Log_Macros.h new file mode 100644 index 00000000000..92fc22ad59e --- /dev/null +++ b/modules/CIAO/ciao/Logger/Log_Macros.h @@ -0,0 +1,97 @@ +// $Id$ +/** + * @file Log_Macros.h + * @author William R. Otte + * + * Macros used for logging in CIAO. + */ + +#ifndef CIAO_LOG_MACROS_H_ +#define CIAO_LOG_MACROS_H_ + +// default information printed with CIAO logging messages. + +#include "CIAO_Logger_Export.h" + +#if !defined (CLINFO) +# define CLINFO "(%P|%t) [%M] - %T - " +#endif + +extern CIAO_Logger_Export unsigned int CIAO_debug_level; + +#if (CIAO_NTRACE == 1) +# if !defined (ACE_NTRACE) +# define CIAO_TRACE(X) do {} while (0) +# define CIAO_ENABLE_TRACE(X) do {} while (0) +# define CIAO_DISABLE_TRACE(X) do {} while (0) +# else +# if (ACE_NTRACE == 0) +# error CIAO_TRACE cannot be disabled if ACE_TRACE is enabled +# else +# define CIAO_TRACE(X) do {} while (0) +# define CIAO_ENABLE_TRACE(X) do {} while (0) +# define CIAO_DISABLE_TRACE(X) do {} while (0) +# endif +# endif +#else +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CIAO_TRACE(X) ACE_TRACE_IMPL(X) +# define CIAO_ENABLE_TRACE() ACE_Trace::start_tracing () +# define CIAO_DISABLE_TRACE() ACE_Trace::stop_tracing () +# undef CLINFO // Make log messages indent with tracing. +# define CLINFO "%I(%P|%t) [%M] - %T - " +# include "ace/Trace.h" +#endif /* CIAO_NTRACE */ + +#if defined (CIAO_NLOGGING) +# define CIAO_ERROR(L, X) do {} while (0) +# define CIAO_DEBUG(L, X) do {} while (0) +#define CIAO_ERROR_RETURN(L, X, Y) return (Y) +#define CIAO_ERROR_BREAK(L, X) { break; } +#else +# if !defined (CIAO_ERROR) +# define CIAO_ERROR(L, X) \ + do { \ + if (CIAO_debug_level >= L) \ + { \ + int const __ace_error = ACE_Log_Msg::last_error_adapter (); \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->conditional_set (__FILE__, __LINE__, -1, __ace_error); \ + ace___->log X; \ + } \ + } while (0) +# endif +# if !defined (CIAO_DEBUG) +# define CIAO_DEBUG(L, X) \ + do { \ + if (CIAO_debug_level >= L) \ + { \ + int const __ace_error = ACE_Log_Msg::last_error_adapter (); \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->conditional_set (__FILE__, __LINE__, 0, __ace_error); \ + ace___->log X; \ + } \ + } while (0) +# endif +# if !defined (CIAO_ERROR_RETURN) +# define CIAO_ERROR_RETURN(L, X, Y) \ + do { \ + if (CIAO_debug_level >= L) \ + { \ + int const __ace_error = ACE_Log_Msg::last_error_adapter (); \ + ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \ + ace___->conditional_set (__FILE__, __LINE__, Y, __ace_error); \ + ace___->log X; \ + } \ + return Y; \ + } while (0) +# endif +# if !defined (CIAO_ERROR_BREAK) +# define CIAO_ERROR_BREAK(L, X) { CIAO_ERROR (L, X); break; } +# endif +#endif + + +#endif diff --git a/modules/CIAO/ciao/Logger/Logger.mpc b/modules/CIAO/ciao/Logger/Logger.mpc new file mode 100644 index 00000000000..987e3a384c4 --- /dev/null +++ b/modules/CIAO/ciao/Logger/Logger.mpc @@ -0,0 +1,16 @@ +// -*- MPC -*- +// $Id$ + +project(CIAO_Logger): ciao_lib, taolib, acelib { + sharedname = CIAO_Logger + dynamicflags = CIAO_LOGGER_BUILD_DLL + + Source_Files { + Logger_Service.cpp + Log_Macros.cpp + } +} + + + + diff --git a/modules/CIAO/ciao/Logger/Logger_Service.cpp b/modules/CIAO/ciao/Logger/Logger_Service.cpp new file mode 100644 index 00000000000..b57bab7d313 --- /dev/null +++ b/modules/CIAO/ciao/Logger/Logger_Service.cpp @@ -0,0 +1,146 @@ +// $Id$ +#include "Logger_Service.h" +#include "Log_Macros.h" +#include "ace/Get_Opt.h" +#include "ace/CORBA_macros.h" +#include "ace/Env_Value_T.h" +#include "tao/SystemException.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_IOSTREAM_TOTALLY) +// Needed to set ACE_LOG_MSG::msg_ostream() +// FUZZ: disable check_for_streams_include +# include "ace/streams.h" +#endif /* !ACE_LACKS_IOSTREAM_TOTALLY */ + +namespace CIAO +{ + Logger_Service::Logger_Service (void) + : filename_ (ACE_TEXT("")), + trace_ (false) + { + } + + int + Logger_Service::init (int argc, ACE_TCHAR * argv[]) + { + // Get prospective values from the environment first, those given on + // command line can override + ACE_Env_Value log (ACE_TEXT("CIAO_LOG_LEVEL"), CIAO_debug_level); + CIAO_debug_level = log; + + ACE_Env_Value trace (ACE_TEXT("CIAO_TRACE_ENABLE"), 0); + this->trace_ = (trace != 0); + + ACE_Env_Value filename (ACE_TEXT("CIAO_LOG_FILE"), this->filename_.c_str ()); + this->filename_ = filename; + + this->parse_args (argc, argv); + + if (this->trace_) + { + CIAO_ENABLE_TRACE (); + } + else + { + CIAO_DISABLE_TRACE (); + } + + if (this->filename_.length () > 0) + { +#if defined (ACE_LACKS_IOSTREAM_TOTALLY) + + FILE* output_stream = ACE_OS::fopen (this->filename_.c_str (), ACE_TEXT ("a")); + + ACE_LOG_MSG->msg_ostream (output_stream, 1); + +#else /* ! ACE_LACKS_IOSTREAM_TOTALLY */ + + ofstream* output_stream = 0; + + ACE_NEW_THROW_EX (output_stream, + ofstream (), + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + 0, + ENOMEM), + CORBA::COMPLETED_NO)); + + output_stream->open (ACE_TEXT_ALWAYS_CHAR (this->filename_.c_str ()), + ios::out | ios::app); + + if (!output_stream->bad ()) + { + ACE_LOG_MSG->msg_ostream (output_stream, 1); + } + +#endif /* ACE_LACKS_IOSTREAM_TOTALLY */ + + ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); + ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); + } + + return 0; + } + + void + Logger_Service::parse_args (int argc, ACE_TCHAR **argv) + { + CIAO_TRACE ("Logger_Service::parse_args"); + + ACE_Get_Opt get_opts (argc, + argv, + "l:tf:", + 0, + 0, + ACE_Get_Opt::RETURN_IN_ORDER); + + get_opts.long_option (ACE_TEXT("log-level"), 'l', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("trace"), 't', ACE_Get_Opt::NO_ARG); + get_opts.long_option (ACE_TEXT("log-file"), 'f', ACE_Get_Opt::ARG_REQUIRED); + + int c; + while ( (c = get_opts ()) != -1) + { + switch (c) + { + case 't': + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Logger_Service::parse_args - " + "Trace enabled\n", + get_opts.opt_arg ())); + this->trace_ = true; + break; + + case 'l': + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Logger_Service::parse_args - " + "Log level set to %s\n", + get_opts.opt_arg ())); + CIAO_debug_level = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'f': + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Logger_Service::parse_args - " + "Log file set to %s\n", + get_opts.opt_arg ())); + this->filename_ = get_opts.opt_arg (); + break; + } + } + } + + int + Logger_Service::Initializer (void) + { + return ACE_Service_Config::process_directive (ace_svc_desc_Logger_Service); + } +} // CIAO + +using namespace CIAO; +ACE_STATIC_SVC_DEFINE (Logger_Service, + ACE_TEXT ("CIAO_Logger"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Logger_Service), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) +ACE_FACTORY_DEFINE (CIAO_Logger, Logger_Service) + diff --git a/modules/CIAO/ciao/Logger/Logger_Service.h b/modules/CIAO/ciao/Logger/Logger_Service.h new file mode 100644 index 00000000000..890c9c07a93 --- /dev/null +++ b/modules/CIAO/ciao/Logger/Logger_Service.h @@ -0,0 +1,32 @@ +// $Id$ + +#ifndef CIAO_LOGGER_SERVICE_H_ +#define CIAO_LOGGER_SERVICE_H_ + +#include "CIAO_Logger_Export.h" +#include "ace/Service_Object.h" + +namespace CIAO + { + class CIAO_Logger_Export Logger_Service : public ACE_Service_Object + { + public: + Logger_Service (void); + virtual int init (int argc, ACE_TCHAR * argv[]); + + static int Initializer (void); + private: + void parse_args (int argc, ACE_TCHAR **argv); + + ACE_TString filename_; + bool trace_; + }; + } + +static int TAO_Requires_CIAO_Logger_Service_Initializer = + CIAO::Logger_Service::Initializer (); + +ACE_STATIC_SVC_DECLARE (Logger_Service) +ACE_FACTORY_DECLARE (CIAO_Logger, Logger_Service) + +#endif /*LOGGER_SERVICE_H_*/ diff --git a/modules/CIAO/ciao/Servants/CIAO_Port_Activator.idl b/modules/CIAO/ciao/Servants/CIAO_Port_Activator.idl new file mode 100644 index 00000000000..be3148ed0ae --- /dev/null +++ b/modules/CIAO/ciao/Servants/CIAO_Port_Activator.idl @@ -0,0 +1,38 @@ +/** + * @file CIAO_Port_Activator.idl + * @author Wiliam R. Otte + */ +//============================================================================= + +#ifndef CIAO_HOME_SERVANT_IMPL_BASE_H +#define CIAO_HOME_SERVANT_IMPL_BASE_H + +#include /**/ "ace/pre.h" + +#include "CIAO_Servant_Impl_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ccm/CCM_HomeS.h" +#include "ciao/Containers/Container_BaseC.h" + +namespace CIAO +{ + /** + * @class Home_Servant_Impl_Base + * + * @brief Non-template base class for Home_Servant_Impl. + * + * Holds the non-template parts of its child class + * Home_Servant_Impl. + */ + class CIAO_Servant_Impl_Export Home_Servant_Impl_Base + : public virtual POA_Components::CCMHome + { + public: + Home_Servant_Impl_Base (Container_ptr c); + + virtual ~Home_Servant_Impl_Base (void); + + // Operations for CCMHome interface. + + virtual ::CORBA::IRObject_ptr get_component_def (void); + + virtual ::CORBA::IRObject_ptr get_home_def (void); + + virtual void update_component_map (PortableServer::ObjectId &oid) = 0; + + protected: + Container_var container_; + + private: + /// Not to be used + Home_Servant_Impl_Base (void); + }; +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_HOME_SERVANT_IMPL_BASE_H */ diff --git a/modules/CIAO/ciao/Servants/Home_Servant_Impl_T.cpp b/modules/CIAO/ciao/Servants/Home_Servant_Impl_T.cpp new file mode 100644 index 00000000000..5444b2ed0bd --- /dev/null +++ b/modules/CIAO/ciao/Servants/Home_Servant_Impl_T.cpp @@ -0,0 +1,225 @@ +// $Id$ + +#ifndef CIAO_HOME_SERVANT_IMPL_T_C +#define CIAO_HOME_SERVANT_IMPL_T_C + +#include "Home_Servant_Impl_T.h" +#include "ccm/CCM_ObjectC.h" +#include "ccm/CCM_EnterpriseComponentC.h" +#include "ciao/Containers/Container_BaseC.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + template + Home_Servant_Impl::Home_Servant_Impl ( + typename EXEC::_ptr_type exe, + Container_ptr c, + const char *ins_name + ) + : Home_Servant_Impl_Base (c), + ins_name_ (ins_name), + executor_ (EXEC::_duplicate (exe)), + serial_number_ (0) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Home_Servant_Impl<>::Home_Servant_Impl - " + "Creating servant for home with ID %C\n", + ins_name)); + } + + template + Home_Servant_Impl::~Home_Servant_Impl (void) + { + CIAO_TRACE ("Home_Servant_Impl<>::destructor"); + + OBJ_ITERATOR const end = this->objref_map_.end (); + + for (OBJ_ITERATOR iter = this->objref_map_.begin (); + iter != end; + ++iter) + { + this->remove_component (((*iter).int_id_).in ()); + } + } + + // Operations for CCMHome interface. + + template + void + Home_Servant_Impl::remove_component ( + ::Components::CCMObject_ptr comp) + { + CIAO_TRACE ("Home_Servant_Impl<>::remove_component"); + + PortableServer::ObjectId_var oid = + this->container_->the_POA ()->reference_to_id (comp); + + Components::CCMObject_var ccm_obj_var = Components::CCMObject::_nil (); + if (objref_map_.find (oid.in (), ccm_obj_var) != 0) + { + CIAO_ERROR (1, (LM_WARNING, CLINFO "Home_Servant_Impl<>::remove_component - Invalid component object reference\n")); + throw Components::RemoveFailure (); + } + + typedef typename COMP_SVNT::_stub_type stub_type; + typename COMP_SVNT::_stub_var_type _ciao_comp = + stub_type::_narrow (ccm_obj_var.in ()); + + if (CORBA::is_nil (_ciao_comp.in ())) + { + throw Components::RemoveFailure (); + } + else + { + _ciao_comp->remove (); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "Home_Servant_Impl<>::remove_component - Removed the component\n")); + } + + template + void + Home_Servant_Impl::update_component_map ( + PortableServer::ObjectId &oid) + { + CIAO_TRACE ("Home_Servant_Impl<>::update_component_map"); + + Components::CCMObject_var ccm_obj_ptr; + if (objref_map_.unbind (oid, ccm_obj_ptr) != 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Home_Servant_Impl<>::update_component_map - " + "Invalid component object reference\n")); + } + } + + // Operations for keyless home interface. + + template + Components::CCMObject_ptr + Home_Servant_Impl::create_component (void) + { + CIAO_TRACE ("Home_Servant_Impl<>::create_component"); + + return this->create (); + } + + // Operations for implicit home interface. + + template + typename COMP_SVNT::_stub_ptr_type + Home_Servant_Impl::create (void) + { + CIAO_TRACE ("Home_Servant_Impl<>::create"); + + if (::CORBA::is_nil (this->executor_.in ())) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Home_Servant_Impl<>:create - nil executor reference\n")); + throw CORBA::INTERNAL (); + } + + ::Components::EnterpriseComponent_var _ciao_ec = + this->executor_->create (); + + typedef typename COMP_SVNT::_exec_type exec_type; + typename COMP_SVNT::_exec_type::_var_type _ciao_comp = + exec_type::_narrow (_ciao_ec.in ()); + + return this->_ciao_activate_component (_ciao_comp.in ()); + } + + // CIAO-specific operations. + + template + typename COMP_SVNT::_stub_ptr_type + Home_Servant_Impl::_ciao_activate_component ( + typename COMP_SVNT::_exec_type::_ptr_type exe) + { + CIAO_TRACE ("Home_Servant_Impl<>::_ciao_activate_component"); + + CORBA::Object_var hobj = this->container_->get_objref (this); + + Components::CCMHome_var home = + Components::CCMHome::_narrow (hobj.in ()); + + char buffer[256]; + unsigned long const serial = this->serial_number_++; + if (ACE_OS::sprintf (buffer, "%ld", serial) < 0) + { + throw CORBA::INTERNAL (); + } + + typedef typename COMP_SVNT::_stub_type stub_type; + COMP_SVNT *svt = 0; + ACE_NEW_THROW_EX (svt, + COMP_SVNT (exe, + home.in (), + (this->ins_name_ + buffer).c_str (), + this, + this->container_), + CORBA::NO_MEMORY ()); + + PortableServer::ServantBase_var safe (svt); + PortableServer::ObjectId_var oid; + + CORBA::Object_var objref = + this->container_->install_servant (svt, + Container_Types::COMPONENT_t, + oid.out ()); + + typedef typename COMP_SVNT::_stub_type stub_type; + typename COMP_SVNT::_stub_var_type ho = stub_type::_narrow (objref.in ()); + + Components::CCMObject_var ccmobjref = + Components::CCMObject::_narrow (objref.in ()); + + this->objref_map_.bind ( + oid.in (), + Components::CCMObject::_duplicate (ccmobjref.in ())); + + return ho._retn (); + } + + template + void + Home_Servant_Impl::_ciao_passivate_component ( + typename COMP_SVNT::_stub_ptr_type comp) + { + CIAO_TRACE ("Home_Servant_Impl<>::_ciao_passivate_component"); + + this->container_->uninstall_component (comp); + } +} + +#endif /* CIAO_HOME_SERVANT_IMPL_T_C */ diff --git a/modules/CIAO/ciao/Servants/Home_Servant_Impl_T.h b/modules/CIAO/ciao/Servants/Home_Servant_Impl_T.h new file mode 100644 index 00000000000..80b57189ef1 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Home_Servant_Impl_T.h @@ -0,0 +1,107 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Home_Servant_Impl_T.h + * + * $Id$ + * + * This file contains the declaration of a mixin base class for + * the generated home servant class. + * + * @authors Jeff Parsons + */ +//============================================================================= + + +#ifndef CIAO_HOME_SERVANT_IMPL_T_H +#define CIAO_HOME_SERVANT_IMPL_T_H + +#include /**/ "ace/pre.h" + +#include "Home_Servant_Impl_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Hash_Map_Manager_T.h" +#include "tao/PortableServer/Key_Adapters.h" + +namespace CIAO +{ + class Container; + typedef Container *Container_ptr; + + + /** + * @class Home_Servant_Impl + * + * @brief Mixin base class for generated home servant. + * + * This class implements operations + * common to all generated home servants. + */ + template + class Home_Servant_Impl + : public virtual BASE_SKEL, + public virtual Home_Servant_Impl_Base + { + public: + Home_Servant_Impl (typename EXEC::_ptr_type exe, + Container_ptr c, + const char *ins_name); + + virtual ~Home_Servant_Impl (void); + + // Operations for CCMHome interface. + virtual void remove_component (Components::CCMObject_ptr comp); + + // Operations for keyless home interface. + virtual ::Components::CCMObject_ptr create_component (); + + // Operations for implicit home interface. + virtual typename COMP_SVNT::_stub_ptr_type create (); + + virtual void update_component_map (PortableServer::ObjectId &oid); + + protected: + // CIAO-specific operations. + typename COMP_SVNT::_stub_ptr_type + _ciao_activate_component (typename COMP_SVNT::_exec_type::_ptr_type exe); + + void + _ciao_passivate_component (typename COMP_SVNT::_stub_ptr_type comp); + + protected: + ACE_CString ins_name_; + typename EXEC::_var_type executor_; + + typedef ACE_Hash_Map_Manager_Ex, + TAO_SYNCH_MUTEX> + OBJREF_MAP; + + typedef OBJREF_MAP::iterator OBJ_ITERATOR; + + OBJREF_MAP objref_map_; + + ACE_Atomic_Op serial_number_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "Home_Servant_Impl_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Home_Servant_Impl_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_HOME_SERVANT_IMPL_T_H */ diff --git a/modules/CIAO/ciao/Servants/Port_Activator.cpp b/modules/CIAO/ciao/Servants/Port_Activator.cpp new file mode 100644 index 00000000000..68e253dea13 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Port_Activator.cpp @@ -0,0 +1,39 @@ +#include "Port_Activator.h" + +ACE_RCSID (ciao, + Servant_Activator, + "$Id$") + +namespace CIAO +{ + Port_Activator_i::Port_Activator_i (const char *oid, + const char *name, + Port_Activator_Types::Type t) + : oid_ (oid), + name_ (name), + t_ (t) + { + } + + Port_Activator_i::~Port_Activator_i (void) + { + } + + char* + Port_Activator_i::oid (void) + { + return CORBA::string_dup(this->oid_.in ()); + } + + void + Port_Activator_i::oid (const char* oid) + { + this->oid_ = oid; + } + + char* + Port_Activator_i::name (void) + { + return CORBA::string_dup(this->name_.in ()); + } +} diff --git a/modules/CIAO/ciao/Servants/Port_Activator.h b/modules/CIAO/ciao/Servants/Port_Activator.h new file mode 100644 index 00000000000..9e633b7985b --- /dev/null +++ b/modules/CIAO/ciao/Servants/Port_Activator.h @@ -0,0 +1,84 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file Port_Activator.h + * + * $Id$ + * + * @authors Bala Natarajan + */ +//============================================================================= + +#ifndef CIAO_PORT_ACTIVATOR_H +#define CIAO_PORT_ACTIVATOR_H + +#include /**/ "ace/pre.h" + +#include "CIAO_Servant_Impl_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/PortableServer/PortableServer.h" +#include "ciao/Servants/CIAO_Port_ActivatorC.h" + +namespace CIAO +{ + /** + * @class Port_Activator_i + * + * @brief Base class for port activations + * + * This is a ABC for the Port_Activator_T <> template class where + * the bulk of the work is done. This class is simply a place holder + * so that we could use the pointer to this class to achieve + * polymorphism for facet and consumer servant activations. + * + */ + class CIAO_Servant_Impl_Export Port_Activator_i : + public virtual Port_Activator + { + public: + Port_Activator_i (const char *oid, + const char *name, + Port_Activator_Types::Type t); + + virtual ~Port_Activator_i (void); + + /// Return the oid of port that this activator encapulates. + virtual char* oid (void); + + /// Set the oid + virtual void oid (const char* oid); + + /// Return the oid of port that this activator encapulates. + virtual char* name (void); + + /// Activate the servant reponsible for this port. + /** + * There are intentionally no throw specifications. It is the + * caller's responsibility to handle CORBA and C++ + * specifications. + */ + virtual PortableServer::Servant activate ( + const PortableServer::ObjectId &oid) = 0; + + virtual void deactivate (::PortableServer::Servant servant) = 0; + + protected: + /// The object ID that is used to activate the servant within the + /// POA. + CORBA::String_var oid_; + + /// Name of the port + CORBA::String_var name_; + + /// What type of port is it, a consumer or facet. + Port_Activator_Types::Type const t_; + }; +} + +#include /**/ "ace/post.h" + +#endif /*CIAO_PORT_ACTIVATOR_H*/ diff --git a/modules/CIAO/ciao/Servants/Port_Activator_T.cpp b/modules/CIAO/ciao/Servants/Port_Activator_T.cpp new file mode 100644 index 00000000000..96db72b4e23 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Port_Activator_T.cpp @@ -0,0 +1,81 @@ +// $Id$ + +#ifndef CIAO_PORT_ACTIVATOR_T_CPP +#define CIAO_PORT_ACTIVATOR_T_CPP + +#include "Port_Activator_T.h" +#include "tao/CORBA_String.h" + +#include "ace/OS_NS_string.h" + +namespace CIAO +{ + template + Port_Activator_T::Port_Activator_T ( + const char *oid, + const char *name, + Port_Activator_Types::Type t, + EXEC *e, + CONTEXT *c, + COMP_SERV *cc) + : Port_Activator_i (oid, name, t) + , executor_ (e) + , context_ (c) + , comp_serv_ (cc) + { + } + + template + void + Port_Activator_T::deactivate ( + PortableServer::Servant servant) + { + SERVANT *s = dynamic_cast (servant); + if (s) + { + s->_remove_ref (); + } + } + + template + PortableServer::Servant + Port_Activator_T::activate ( + const PortableServer::ObjectId &oid) + { + CORBA::String_var str = PortableServer::ObjectId_to_string (oid); + + // An additional check, may not be necessary. Being on the safe + // side. + if (ACE_OS::strcmp (this->oid_.in (), str.in ()) == 0) + { + if (this->executor_ == 0 && this->t_ == Port_Activator_Types::FACET) + { + CORBA::Object_var tmp = + this->comp_serv_->get_facet_executor (this->name_.in ()); + + this->executor_ = EXEC::_narrow (tmp.in ()); + } + + SERVANT *s = 0; + + ACE_NEW_THROW_EX (s, + SERVANT (this->executor_, + this->context_), + CORBA::NO_MEMORY ()); + return s; + } + + throw CORBA::OBJECT_NOT_EXIST (); + } +} + +#endif /*SERVANT_ACTIVATOR_T_CPP*/ diff --git a/modules/CIAO/ciao/Servants/Port_Activator_T.h b/modules/CIAO/ciao/Servants/Port_Activator_T.h new file mode 100644 index 00000000000..4e244d88f94 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Port_Activator_T.h @@ -0,0 +1,80 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Port_Activator_T.h + * + * $Id$ + * + * @authors Bala Natarajan + */ +//============================================================================= + +#ifndef CIAO_PORT_ACTIVATOR_T_H +#define CIAO_PORT_ACTIVATOR_T_H +#include /**/ "ace/pre.h" + +#include "ciao/Servants/Port_Activator.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +namespace CIAO +{ + /** + * @class Port_Activator_T + * + * @brief Concrete class that implements the strategy for creating + * the right type of servant for the ports in question. + * + * This class is parametrized by the servant type for the port, the + * executor type for the port, the context for the component and the + * component servant which instantiated this class within the + * container. + */ + template + class Port_Activator_T : public virtual Port_Activator_i + { + public: + typedef SERV SERVANT; + + Port_Activator_T (const char *oid, + const char *name, + Port_Activator_Types::Type t, + EXEC *e, + CONTEXT *c, + COMP_SERV *cs); + + /// Template method from the base class, please see the base class + /// documentation for details. + virtual PortableServer::Servant activate (const PortableServer::ObjectId &oid); + + virtual void deactivate (PortableServer::Servant servant); + + private: + /// The executor + EXEC *executor_; + + /// Context classes + CONTEXT *context_; + + /// Component servant which created @c this + COMP_SERV *comp_serv_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "Port_Activator_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Port_Activator_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" +#endif /*CIAO_SERVANT_ACTIVATOR_T_H*/ diff --git a/modules/CIAO/ciao/Servants/Servant_Impl_Base.cpp b/modules/CIAO/ciao/Servants/Servant_Impl_Base.cpp new file mode 100644 index 00000000000..029e802c2f1 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Servant_Impl_Base.cpp @@ -0,0 +1,649 @@ +// $Id$ + +#include "Servant_Impl_Base.h" + +#include "StandardConfigurator_Impl.h" +#include "ciao/Logger/Log_Macros.h" +#include "ciao/Containers/Container_BaseC.h" + +namespace CIAO +{ + Servant_Impl_Base::Servant_Impl_Base (Components::CCMHome_ptr home, + Home_Servant_Impl_Base *home_servant, + Container_ptr c) + : home_ (Components::CCMHome::_duplicate (home)), + home_servant_ (home_servant), + container_ (Container::_duplicate (c)) + { + if (home_servant_) + { + home_servant_->_add_ref (); + } + } + + Servant_Impl_Base::~Servant_Impl_Base (void) + { + } + + // Operations for CCMObject interface. + + ::Components::PrimaryKeyBase * + Servant_Impl_Base::get_primary_key (void) + { + CIAO_TRACE("Servant_Impl_Base::get_primary_key"); + throw ::Components::NoKeyAvailable (); + } + + CORBA::IRObject_ptr + Servant_Impl_Base::get_component_def (void) + { + CIAO_TRACE("Servant_Impl_Base::get_component_def"); + throw ::CORBA::NO_IMPLEMENT (); + } + + void + Servant_Impl_Base::remove (void) + { + CIAO_TRACE("Servant_Impl_Base::remove (void)"); + try + { + // Removing Facets + Components::FacetDescriptions_var facets = this->get_all_facets (); + + CORBA::ULong const facet_len = facets->length (); + + for (CORBA::ULong i = 0; i < facet_len; ++i) + { + PortableServer::ObjectId_var facet_id = + this->container_->the_port_POA ()->reference_to_id ( + facets[i]->facet_ref ()); + + this->container_->the_port_POA ()->deactivate_object (facet_id); + + CIAO::Servant_Activator_var sa = + this->container_->ports_servant_activator (); + + if (!CORBA::is_nil (sa.in ())) + { + sa->update_port_activator (facet_id.in ()); + } + } + + // Removed Facets + + // Removing Consumers + Components::ConsumerDescriptions_var consumers = + this->get_all_consumers (); + + CORBA::ULong const consumer_len = consumers->length (); + + for (CORBA::ULong j = 0; j < consumer_len; ++j) + { + PortableServer::ObjectId_var cons_id = + this->container_->the_port_POA ()->reference_to_id ( + consumers[j]->consumer ()); + + this->container_->the_port_POA ()->deactivate_object ( + cons_id); + + CIAO::Servant_Activator_var sa = + this->container_->ports_servant_activator (); + + if (!CORBA::is_nil (sa.in ())) + { + sa->update_port_activator (cons_id.in ()); + } + } + + Components::SessionComponent_var temp = this->get_executor (); + temp->ccm_remove (); + + CORBA::Object_var objref = this->container_->get_objref (this); + + Components::CCMObject_var ccmobjref = + Components::CCMObject::_narrow (objref.in ()); + + PortableServer::ObjectId_var oid; + + this->container_->uninstall_servant (this, + Container_Types::COMPONENT_t, + oid.out ()); + + if (this->home_servant_) + { + this->home_servant_->update_component_map (oid); + this->home_servant_->_remove_ref (); + this->home_servant_ = 0; + } + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Port not active\n"); + } + } + + ::Components::ConnectionDescriptions * + Servant_Impl_Base::get_connections (const char * /* name */) + { + CIAO_TRACE("Servant_Impl_Base::get_connections (const char * /* name */)"); + throw CORBA::NO_IMPLEMENT (); + } + + ::Components::ComponentPortDescription * + Servant_Impl_Base::get_all_ports (void) + { + CIAO_TRACE("Servant_Impl_Base::get_all_ports (void)"); + OBV_Components::ComponentPortDescription *cps = 0; + ACE_NEW_THROW_EX (cps, + OBV_Components::ComponentPortDescription, + CORBA::NO_MEMORY ()); + ::Components::ComponentPortDescription_var retv = cps; + + ::Components::FacetDescriptions_var facets_desc = + this->get_all_facets (); + + ::Components::ReceptacleDescriptions_var receptacle_desc = + this->get_all_receptacles (); + + ::Components::ConsumerDescriptions_var consumer_desc = + this->get_all_consumers (); + + ::Components::EmitterDescriptions_var emitter_desc = + this->get_all_emitters (); + + ::Components::PublisherDescriptions_var publisher_desc = + this->get_all_publishers (); + + retv->facets (facets_desc.in ()); + retv->receptacles (receptacle_desc.in ()); + retv->consumers (consumer_desc.in ()); + retv->emitters (emitter_desc.in ()); + retv->publishers (publisher_desc.in ()); + + return retv._retn (); + } + + ::CORBA::Object_ptr + Servant_Impl_Base::provide_facet (const char *name) + { + CIAO_TRACE("Servant_Impl_Base::provide_facet (const char *name)"); + if (0 == name) + { + throw Components::InvalidName (); + } + + CORBA::Object_ptr retval = this->lookup_facet (name); + + if ( ::CORBA::is_nil (retval)) + { + throw Components::InvalidName (); + } + + return retval; + } + + Components::FacetDescriptions * + Servant_Impl_Base::get_named_facets ( + const ::Components::NameList & names) + { + CIAO_TRACE("Servant_Impl_Base::get_named_facets"); + Components::FacetDescriptions *retval = 0; + ACE_NEW_THROW_EX (retval, + ::Components::FacetDescriptions, + CORBA::NO_MEMORY ()); + Components::FacetDescriptions_var safe_retval = retval; + CORBA::ULong const len = names.length (); + safe_retval->length (len); + + for (CORBA::ULong i = 0; i < len; ++i) + { + ::Components::FacetDescription *tmp = + this->lookup_facet_description (names[i]); + + if (!tmp) + { + throw Components::InvalidName (); + } + + safe_retval[i] = tmp; + } + + return safe_retval._retn (); + } + + ::Components::FacetDescriptions * + Servant_Impl_Base::get_all_facets (void) + { + CIAO_TRACE ("Servant_Impl_Base::get_all_facets (void)"); + ::Components::FacetDescriptions *tmp = 0; + ACE_NEW_THROW_EX (tmp, + ::Components::FacetDescriptions, + CORBA::NO_MEMORY ()); + + ::Components::FacetDescriptions_var retval = tmp; + + retval->length (this->facet_table_.size ()); + CORBA::ULong i = 0UL; + + for (FacetTable::const_iterator iter = this->facet_table_.begin (); + iter != this->facet_table_.end (); + ++iter, ++i) + { + retval[i] = iter->second; + } + + return retval._retn (); + } + + + ::Components::ConsumerDescriptions * + Servant_Impl_Base::get_all_consumers (void) + { + CIAO_TRACE("Servant_Impl_Base::get_all_consumers (void)"); + ::Components::ConsumerDescriptions *tmp = 0; + ACE_NEW_THROW_EX (tmp, + ::Components::ConsumerDescriptions ( + this->consumer_table_.size ()), + CORBA::NO_MEMORY ()); + + ::Components::ConsumerDescriptions_var retval = tmp; + + retval->length (this->consumer_table_.size ()); + CORBA::ULong i = 0UL; + + for (ConsumerTable::const_iterator iter = this->consumer_table_.begin (); + iter != this->consumer_table_.end (); + ++iter, ++i) + { + retval[i] = iter->second; + } + + return retval._retn (); + } + + + ::Components::EventConsumerBase_ptr + Servant_Impl_Base::get_consumer (const char *sink_name) + { + CIAO_TRACE("Servant_Impl_Base::get_consumer (const char *sink_name)"); + if (!sink_name) + { + throw Components::InvalidName (); + } + + Components::EventConsumerBase_ptr retval = + this->lookup_consumer (sink_name); + + if (CORBA::is_nil (retval)) + { + throw Components::InvalidName (); + } + + return retval; + } + + ::Components::ConsumerDescriptions * + Servant_Impl_Base::get_named_consumers ( + const ::Components::NameList & names) + { + CIAO_TRACE("Servant_Impl_Base::get_named_consumers"); + Components::ConsumerDescriptions *retval = 0; + ACE_NEW_THROW_EX (retval, + ::Components::ConsumerDescriptions, + CORBA::NO_MEMORY ()); + Components::ConsumerDescriptions_var safe_retval = retval; + CORBA::ULong const len = names.length (); + safe_retval->length (len); + + for (CORBA::ULong i = 0; i < len; ++i) + { + ::Components::ConsumerDescription *tmp = + this->lookup_consumer_description (names[i]); + + if (!tmp) + { + throw Components::InvalidName (); + } + + safe_retval[i] = tmp; + } + + return safe_retval._retn (); + } + + ::Components::EmitterDescriptions * + Servant_Impl_Base::get_named_emitters ( + const ::Components::NameList & /* names */) + { + CIAO_TRACE("Servant_Impl_Base::get_named_emitters"); + throw CORBA::NO_IMPLEMENT (); + } + + ::Components::ReceptacleDescriptions * + Servant_Impl_Base::get_all_receptacles (void) + { + CIAO_TRACE(" Servant_Impl_Base::get_all_receptacles (void)"); + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Servant_Impl_Base::get_all_receptacles\n")); + + ::Components::ReceptacleDescriptions *tmp = 0; + ACE_NEW_THROW_EX (tmp, + ::Components::ReceptacleDescriptions, + CORBA::NO_MEMORY ()); + + ::Components::ReceptacleDescriptions_var retval = tmp; + + retval->length (this->receptacle_table_.current_size ()); + CORBA::ULong i = 0; + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Servant_Impl_Base::get_all_receptacles - Building sequence of length %d\n", + retval->length())); + + for (ReceptacleTable::iterator iter = this->receptacle_table_.begin (); + iter != this->receptacle_table_.end (); + ++iter, ++i) + { + CIAO_DEBUG (9, (LM_TRACE, CLINFO + "Servant_Impl_Base::get_all_receptacles - Starting loop iteration...\n", + retval->length())); + + ReceptacleTable::ENTRY & entry = *iter; + retval[i] = entry.int_id_; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "Servant_Impl_Base::get_all_receptacles - Escaped loop.\n")); + return retval._retn (); + } + + ::Components::ReceptacleDescriptions * + Servant_Impl_Base::get_named_receptacles ( + const ::Components::NameList & /* names */) + { + CIAO_TRACE("Servant_Impl_Base::get_named_receptacles"); + throw ::CORBA::NO_IMPLEMENT (); + } + + ::Components::PublisherDescriptions * + Servant_Impl_Base::get_named_publishers ( + const ::Components::NameList & /* names */) + { + CIAO_TRACE("Servant_Impl_Base::get_named_publishers"); + throw ::CORBA::NO_IMPLEMENT (); + } + + /// Protected operations. + void + Servant_Impl_Base::add_facet (const char *port_name, + ::CORBA::Object_ptr port_ref) + { + CIAO_TRACE("Servant_Impl_Base::add_facet"); + if (0 == port_name || ::CORBA::is_nil (port_ref)) + { + throw ::CORBA::BAD_PARAM (); + } + + ::Components::FacetDescription *fd = 0; + ACE_NEW_THROW_EX (fd, + ::OBV_Components::FacetDescription (port_name, + port_ref->_interface_repository_id (), + port_ref), + CORBA::NO_MEMORY ()); + ::Components::FacetDescription_var safe = fd; + + FacetTable::value_type entry; + entry.first = port_name; + entry.second = safe._retn (); + + { + ACE_WRITE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, mon, this->lock_, + CORBA::NO_RESOURCES ()); + + (void) this->facet_table_.insert (entry); + } + } + + CORBA::Object_ptr + Servant_Impl_Base::lookup_facet (const char *port_name) + { + CIAO_TRACE("Servant_Impl_Base::lookup_facet"); + if (!port_name) + { + return CORBA::Object::_nil (); + } + + ACE_READ_GUARD_THROW_EX (TAO_SYNCH_MUTEX, + mon, + this->lock_, + CORBA::NO_RESOURCES ()); + + FacetTable::const_iterator iter = this->facet_table_.find (port_name); + + if (iter == this->facet_table_.end ()) + { + return CORBA::Object::_nil (); + } + + return CORBA::Object::_duplicate (iter->second->facet_ref ()); + } + + ::Components::FacetDescription * + Servant_Impl_Base::lookup_facet_description (const char *port_name) + { + CIAO_TRACE("Servant_Impl_Base::lookup_facet_description"); + if (!port_name) + { + /// Calling function will throw InvalidName after getting this. + return 0; + } + + ::Components::FacetDescription_var fd; + + { + ACE_READ_GUARD_RETURN (TAO_SYNCH_MUTEX, + mon, + this->lock_, + 0); + FacetTable::const_iterator iter = + this->facet_table_.find (port_name); + + if (iter != this->facet_table_.end ()) + { + fd = iter->second; + } + } + + return fd._retn (); + } + + void + Servant_Impl_Base::add_receptacle (const char *receptacle_name, + CORBA::Object_ptr recept_ref, + ::Components::Cookie * cookie) + { + CIAO_TRACE("Servant_Impl_Base::add_receptacle"); + CIAO_DEBUG (6, (LM_INFO, CLINFO + "Servant_Impl_Base::add_receptacle - attempting to add new connection to receptacle (%C)\n", + receptacle_name)); + + ::Components::ReceptacleDescription_var safe; + ::Components::ReceptacleDescription *rd = 0; + + if (this->receptacle_table_.find (receptacle_name, safe) == -1) + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Servant_Impl_Base::add_receptacle - Found no receptacle named (%C), creating it...\n", + receptacle_name)); + + ACE_NEW_THROW_EX (rd, + OBV_Components::ReceptacleDescription, + CORBA::NO_MEMORY ()); + safe = rd; + + rd->name (receptacle_name); + rd->type_id (); + // The receptacle is a multiplex receptacle if and only if a + // cookie was given. + rd->is_multiple (cookie != 0); + + ::Components::ConnectionDescription *cd = 0; + ACE_NEW_THROW_EX (cd, + OBV_Components::ConnectionDescription (cookie, + recept_ref), + CORBA::NO_MEMORY ()); + ::Components::ConnectionDescription_var cd_safe = cd; + ::Components::ConnectionDescriptions cds (1); + + cds.length (1); + cds[0] = cd_safe; + rd->connections (cds); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Servant_Impl_Base::add_receptacle - Found a receptacle named (%C)\n", + receptacle_name)); + rd = safe.inout (); + + ::Components::ConnectionDescription *cd = 0; + ACE_NEW_THROW_EX (cd, + OBV_Components::ConnectionDescription (cookie, + recept_ref), + CORBA::NO_MEMORY ()); + ::Components::ConnectionDescription_var cd_safe = cd; + ::Components::ConnectionDescriptions & cds = rd->connections (); + CORBA::ULong old_length = cds.length (); + cds.length (old_length + 1); + cds [old_length] = cd_safe; + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO + "Servant_Impl_Base::add_receptacle - Added new connection to " + "existing receptacle named (%C)\n", + receptacle_name)); + } + + if (this->receptacle_table_.bind (receptacle_name, safe) == 0) + { + CIAO_DEBUG (6, (LM_INFO, CLINFO + "Servant_Impl_Base::add_receptacle - Successfully added new receptacle named (%C)\n", + receptacle_name)); + } + } + + void + Servant_Impl_Base::add_consumer (const char *port_name, + ::Components::EventConsumerBase_ptr port_ref) + { + CIAO_TRACE("Servant_Impl_Base::add_consumer"); + if (0 == port_name || ::CORBA::is_nil (port_ref)) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Impl_Base::add_consumer - Bad port name [%C] or bad objref\n", + port_name)); + throw ::CORBA::BAD_PARAM (); + return; + } + + ::Components::ConsumerDescription *cd = 0; + ACE_NEW_THROW_EX (cd, + ::OBV_Components::ConsumerDescription, + CORBA::NO_MEMORY ()); + + ::Components::ConsumerDescription_var safe = cd; + + cd->name (port_name); + cd->type_id (port_ref->_interface_repository_id ()); + cd->consumer (port_ref); + + ConsumerTable::value_type entry; + entry.first = port_name; + entry.second = safe._retn (); + + ACE_WRITE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, mon, this->lock_, + CORBA::NO_RESOURCES ()); + + (void) this->consumer_table_.insert (entry); + } + + ::Components::EventConsumerBase_ptr + Servant_Impl_Base::lookup_consumer (const char *port_name) + { + CIAO_TRACE("Servant_Impl_Base::lookup_consumer"); + if (0 == port_name) + { + return ::Components::EventConsumerBase::_nil (); + } + + ACE_READ_GUARD_THROW_EX (TAO_SYNCH_MUTEX, + mon, + this->lock_, + CORBA::NO_RESOURCES ()); + + ConsumerTable::const_iterator iter = + this->consumer_table_.find (port_name); + + if (iter == this->consumer_table_.end ()) + { + return ::Components::EventConsumerBase::_nil (); + } + + return + ::Components::EventConsumerBase::_duplicate ( + iter->second->consumer ()); + } + + ::Components::ConsumerDescription * + Servant_Impl_Base::lookup_consumer_description ( + const char *port_name) + { + CIAO_TRACE("Servant_Impl_Base::lookup_consumer_description"); + if (0 == port_name) + { + /// Calling function will throw InvalidName after getting this. + return 0; + } + + ::Components::ConsumerDescription_var cd; + ConsumerTable::const_iterator iter; + + { + ACE_READ_GUARD_THROW_EX (TAO_SYNCH_MUTEX, + mon, + this->lock_, + CORBA::NO_RESOURCES ()); + + iter = this->consumer_table_.find (port_name); + + if (iter != this->consumer_table_.end ()) + { + cd = iter->second; + } + } + + return cd._retn (); + } + + ::Components::StandardConfigurator_ptr + Servant_Impl_Base::get_standard_configurator (void) + { + CIAO_TRACE("Servant_Impl_Base::get_standard_configurator (void)"); + // Create the configurator servant. + StandardConfigurator_Impl *config_impl = 0; + + ACE_NEW_THROW_EX (config_impl, + StandardConfigurator_Impl (this), + CORBA::NO_MEMORY ()); + + + Components::StandardConfigurator_var configurator = + config_impl->_this (); + + return configurator._retn (); + } + + PortableServer::POA_ptr + Servant_Impl_Base::_default_POA (void) + { + CIAO_TRACE("Servant_Impl_Base::_default_POA (void)"); + return PortableServer::POA::_duplicate (container_->the_POA ()); + } +} + diff --git a/modules/CIAO/ciao/Servants/Servant_Impl_Base.h b/modules/CIAO/ciao/Servants/Servant_Impl_Base.h new file mode 100644 index 00000000000..6bf83fa964a --- /dev/null +++ b/modules/CIAO/ciao/Servants/Servant_Impl_Base.h @@ -0,0 +1,242 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Servant_Impl_Base.h + * + * $Id$ + * + * This file contains the non-template declaration of a base class for + * the template mixin for the generated servant class. + * + * @author Jeff Parsons + */ +//============================================================================= + +#ifndef CIAO_SERVANT_IMPL_BASE_H +#define CIAO_SERVANT_IMPL_BASE_H + +#include /**/ "ace/pre.h" + +#include "CIAO_Servant_Impl_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Home_Servant_Impl_Base.h" +#include "ciao/Containers/CIAO_Servant_ActivatorC.h" + +#include "ace/Hash_Map_Manager_T.h" +#include "ace/Array_Map.h" +#include "ccm/CCM_ContainerC.h" +#include "ccm/CCM_ObjectS.h" +#include "ccm/CCM_StandardConfiguratorC.h" + +namespace CIAO +{ + class Container; + typedef Container *Container_ptr; + typedef TAO_Objref_Var_T Container_var; + + namespace Servant { + template + void describe_simplex_receptacle ( + const char *port_name, + const char *port_type_repo_id, + T_var &connection, + ::Components::ReceptacleDescriptions_var &descriptions, + CORBA::ULong slot); + + template + void describe_multiplex_receptacle ( + const char *port_name, + const char *port_type_repo_id, + ACE_Array_Map &objrefs, + ::Components::ReceptacleDescriptions_var &descriptions, + CORBA::ULong slot); + + template + void describe_pub_event_source ( + const char *port_name, + const char *port_type_repo_id, + ACE_Array_Map &consumers, + ::Components::PublisherDescriptions_var &descriptions, + CORBA::ULong slot); + + template + void describe_emit_event_source ( + const char *port_name, + const char *port_type_repo_id, + T_var &consumer_ref, + ::Components::EmitterDescriptions_var &descriptions, + CORBA::ULong slot); + } /* Servant */ + + /** + * @class Servant_Impl_Base + * + * @brief Non-template base class for Servant_Impl. + * + * Holds the non-template parts of its child class + * Servant_Impl. + */ + class CIAO_Servant_Impl_Export Servant_Impl_Base + : public virtual POA_Components::CCMObject + { + protected: + Servant_Impl_Base (Components::CCMHome_ptr home, + Home_Servant_Impl_Base *home_servant, + Container_ptr c); + + public: + virtual ~Servant_Impl_Base (void); + + /// Operations for CCMObject interface. + + virtual ::Components::PrimaryKeyBase * get_primary_key (void); + + virtual CORBA::IRObject_ptr get_component_def (void); + + virtual Components::SessionComponent_ptr get_executor (void) = 0; + + virtual void activate_component (void) = 0; + + virtual void passivate_component (void) = 0; + + virtual void remove (void); + + virtual ::Components::ConnectionDescriptions * + get_connections (const char *name); + + virtual ::Components::ComponentPortDescription * get_all_ports (void); + + virtual CORBA::Object_ptr provide_facet (const char *name); + + virtual ::Components::FacetDescriptions * + get_named_facets (const ::Components::NameList & names); + + virtual ::Components::FacetDescriptions * get_all_facets (void); + + virtual ::Components::ConsumerDescriptions * get_all_consumers (void); + + virtual ::Components::EventConsumerBase_ptr + get_consumer (const char *sink_name); + + virtual ::Components::ConsumerDescriptions * + get_named_consumers (const ::Components::NameList & names); + + virtual ::Components::EmitterDescriptions * + get_named_emitters (const ::Components::NameList & names); + + virtual ::Components::ReceptacleDescriptions * + get_named_receptacles (const ::Components::NameList & names); + + virtual ::Components::ReceptacleDescriptions * + get_all_receptacles (void); + + virtual ::Components::PublisherDescriptions * + get_named_publishers (const ::Components::NameList & names); + + /// Operation to set attributes on the component. + virtual void set_attributes (const Components::ConfigValues &descr) = 0; + + // Creates and returns the StandardConfigurator for the component. + virtual ::Components::StandardConfigurator_ptr + get_standard_configurator (void); + + /// Override that returns the (passed-in) default POA of our member + /// component's container, to ensure that we get registered + /// to that POA when _this() is called. + virtual PortableServer::POA_ptr _default_POA (void); + + virtual ::Components::Cookie * subscribe (const char * publisher_name, + ::Components::EventConsumerBase_ptr subscriber) = 0; + + virtual ::Components::EventConsumerBase_ptr unsubscribe (const char * publisher_name, + ::Components::Cookie * ck) = 0; + + virtual void connect_consumer (const char * emitter_name, + ::Components::EventConsumerBase_ptr consumer) = 0; + + virtual ::Components::EventConsumerBase_ptr disconnect_consumer ( + const char * source_name) = 0; + + virtual ::Components::EmitterDescriptions * get_all_emitters (void) = 0; + + virtual ::Components::PublisherDescriptions * get_all_publishers (void) = 0; + + virtual ::Components::Cookie * connect (const char * name, + ::CORBA::Object_ptr connection) = 0; + + virtual ::CORBA::Object_ptr disconnect (const char * name, + ::Components::Cookie * ck) = 0; + + + virtual ::CORBA::Object_ptr get_facet_executor (const char *name) = 0; + + protected: + void add_facet (const char *port_name, + ::CORBA::Object_ptr port_ref); + + CORBA::Object_ptr lookup_facet (const char *port_name); + + ::Components::FacetDescription *lookup_facet_description ( + const char *port_name); + + void add_receptacle (const char *receptacle_name, + CORBA::Object_ptr recept_ref, + ::Components::Cookie * cookie); + + void add_consumer (const char *port_name, + ::Components::EventConsumerBase_ptr port_ref); + + ::Components::EventConsumerBase_ptr lookup_consumer ( + const char *port_name); + + ::Components::ConsumerDescription *lookup_consumer_description ( + const char *port_name); + + /// Called from generated servant class to help with + /// get_all_*() methods. + + protected: + typedef ACE_Array_Map + FacetTable; + + typedef ACE_Array_Map + ConsumerTable; + + typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> + ReceptacleTable; + + FacetTable facet_table_; + ConsumerTable consumer_table_; + ReceptacleTable receptacle_table_; + Components::CCMHome_var home_; + Home_Servant_Impl_Base *home_servant_; + Container_var container_; + + private: + /// For internal locking of table reads and writes. + TAO_SYNCH_MUTEX lock_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "Servant_Impl_Utils_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Servant_Impl_Utils_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_SERVANT_IMPL_T_H */ diff --git a/modules/CIAO/ciao/Servants/Servant_Impl_T.cpp b/modules/CIAO/ciao/Servants/Servant_Impl_T.cpp new file mode 100644 index 00000000000..8de0e688b0c --- /dev/null +++ b/modules/CIAO/ciao/Servants/Servant_Impl_T.cpp @@ -0,0 +1,191 @@ +// $Id$ + +#ifndef CIAO_SERVANT_IMPL_T_C +#define CIAO_SERVANT_IMPL_T_C + +#include "Servant_Impl_T.h" +#include + +namespace CIAO +{ + template + Servant_Impl::Servant_Impl ( + EXEC * exe, + Components::CCMHome_ptr home, + const char * ins_name, + Home_Servant_Impl_Base *home_servant, + Container_ptr c) + : Servant_Impl_Base (home, home_servant, c), + activated_ (false), + configuration_completed_ (false), + executor_ (EXEC::_duplicate (exe)), + context_ (0), + ins_name_ (ins_name) + { + ACE_NEW (this->context_, + CONTEXT (home, c, this)); + + /// Set the instance id of the component on the context. + this->context_->_ciao_instance_id (this->ins_name_); + + ::Components::SessionComponent_var scom = + ::Components::SessionComponent::_narrow (exe); + + if (! ::CORBA::is_nil (scom.in ())) + { + scom->set_session_context (this->context_); + } + } + + template + Servant_Impl::~Servant_Impl (void) + { + if (this->executor_->_refcount_value () > 1) + { + CIAO_DEBUG (6, (LM_INFO, "Servant_Impl_T::~Servant_Impl - " + "Executor object reference count is %u\n", + this->executor_->_refcount_value ())); + } + + this->context_->_remove_ref (); + } + + // Operations for CCMObject interface. + + template + CORBA::Boolean + Servant_Impl::same_component ( + CORBA::Object_ptr object_ref) + { + if (::CORBA::is_nil (object_ref)) + { + throw ::CORBA::BAD_PARAM (); + } + + ::CORBA::Object_var me = this->context_->get_CCM_object (); + + if (::CORBA::is_nil (me.in ())) + { + throw ::CORBA::INTERNAL (); + } + + ::CORBA::Object_var the_other = object_ref->_get_component (); + + return me->_is_equivalent (the_other.in ()); + + } + + template + ::Components::CCMHome_ptr + Servant_Impl::get_ccm_home (void) + { + return this->context_->get_CCM_home (); + } + + template + Components::SessionComponent_ptr + Servant_Impl::get_executor (void) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow (this->executor_.in ()); + + return temp._retn (); + } + + template + CORBA::Object_ptr + Servant_Impl::_get_component (void) + { + ::Components::SessionContext_var sc = + ::Components::SessionContext::_narrow (this->context_); + + if (! ::CORBA::is_nil (sc.in ())) + { + return sc->get_CCM_object (); + } + + ::Components::EntityContext_var ec = + ::Components::EntityContext::_narrow (this->context_); + + if (! ::CORBA::is_nil (ec.in ())) + { + return ec->get_CCM_object (); + } + + throw CORBA::INTERNAL (); + } + + // CIAO-specific operations. + + template + void + Servant_Impl::activate_component (void) + { + if (this->configuration_completed_ && !this->activated_) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ccm_activate (); + this->activated_ = true; + } + } + } + + template + void + Servant_Impl::passivate_component (void) + { + if (this->activated_) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ccm_passivate (); + this->activated_ = false; + } + } + } + + template + void + Servant_Impl::configuration_complete ( + ) + { + if (!this->configuration_completed_) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->configuration_complete (); + this->configuration_completed_ = true; + } + } + } +} + +#endif /* CIAO_SERVANT_IMPL_T_C */ diff --git a/modules/CIAO/ciao/Servants/Servant_Impl_T.h b/modules/CIAO/ciao/Servants/Servant_Impl_T.h new file mode 100644 index 00000000000..da9f5a3291a --- /dev/null +++ b/modules/CIAO/ciao/Servants/Servant_Impl_T.h @@ -0,0 +1,94 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Servant_Impl_T.h + * + * $Id$ + * + * This file contains the declaration of a mixin base class for + * the generated servant class. + * + * @authors Boris Kolpackov + * Jeff Parsons + */ +//============================================================================= + + +#ifndef CIAO_SERVANT_IMPL_T_H +#define CIAO_SERVANT_IMPL_T_H + +#include /**/ "ace/pre.h" + +#include "Servant_Impl_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + /** + * @class Servant_Impl + * + * @brief Mixin base class for generated servant. + * + * This class implements navigation and other operations + * common to all generated servants. + */ + template + class Servant_Impl : public virtual BASE_SKEL, + public virtual Servant_Impl_Base + { + public: + Servant_Impl (EXEC * exe, + Components::CCMHome_ptr home, + const char * ins_name, + Home_Servant_Impl_Base *home_servant, + Container_ptr c); + + virtual ~Servant_Impl (void); + + // Operations for CCMObject interface. + + virtual CORBA::Boolean same_component (CORBA::Object_ptr object_ref); + + virtual ::Components::CCMHome_ptr get_ccm_home (); + + virtual CORBA::Object_ptr _get_component (); + + virtual Components::SessionComponent_ptr get_executor (); + + void configuration_complete (); + + virtual void activate_component (); + + virtual void passivate_component (); + + protected: + CORBA::Boolean activated_; + CORBA::Boolean configuration_completed_; + + /// Initialized in this constructor. + typename EXEC::_var_type executor_; + + /// Initialized in the derived, generated servant constructor. + CONTEXT * context_; + + const char * ins_name_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "Servant_Impl_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Servant_Impl_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_SERVANT_IMPL_T_H */ diff --git a/modules/CIAO/ciao/Servants/Servant_Impl_Utils_T.cpp b/modules/CIAO/ciao/Servants/Servant_Impl_Utils_T.cpp new file mode 100644 index 00000000000..4d4332fd5a8 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Servant_Impl_Utils_T.cpp @@ -0,0 +1,182 @@ +// $Id$ + +#ifndef CIAO_SERVANT_IMPL_UTILS_T_C +#define CIAO_SERVANT_IMPL_UTILS_T_C + +#include "ciao/Servants/Servant_Impl_Base.h" +#include "ciao/Valuetype_Factories/Cookies.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + template + void + Servant::describe_simplex_receptacle ( + const char *port_name, + const char *port_type_repo_id, + T_var &connection, + ::Components::ReceptacleDescriptions_var &descriptions, + CORBA::ULong slot) + { + CIAO_TRACE ("Servant::describe_simplex_receptacle"); + + ::Components::ReceptacleDescription *elem = 0; + ACE_NEW_THROW_EX (elem, + ::OBV_Components::ReceptacleDescription, + CORBA::NO_MEMORY ()); + + ::Components::ReceptacleDescription_var safe_elem = elem; + + elem->name (port_name); + elem->type_id (port_type_repo_id); + elem->is_multiple (false); + elem->connections ().length (1UL); + + ::Components::ConnectionDescription *conn = 0; + ACE_NEW (conn, ::OBV_Components::ConnectionDescription); + ::Components::ConnectionDescription_var safe_conn = conn; + + conn->ck (0); + conn->objref (connection.in ()); + + elem->connections ()[0UL] = safe_conn._retn (); + descriptions[slot] = safe_elem._retn (); + } + + template + void + Servant::describe_multiplex_receptacle ( + const char *port_name, + const char *port_type_repo_id, + ACE_Array_Map &objrefs, + ::Components::ReceptacleDescriptions_var &descriptions, + CORBA::ULong slot + ) + { + CIAO_TRACE ("Servant::describe_multiplex_receptacle"); + + ::Components::ReceptacleDescription *elem = 0; + ACE_NEW_THROW_EX (elem, + ::OBV_Components::ReceptacleDescription, + CORBA::NO_MEMORY ()); + + ::Components::ReceptacleDescription_var safe_elem = elem; + + elem->name (port_name); + elem->type_id (port_type_repo_id); + elem->is_multiple (true); + elem->connections ().length (objrefs.size ()); + + CORBA::ULong seq_slot = 0UL; + ::Components::ConnectionDescription *conn = 0; + + typedef typename ACE_Array_Map::const_iterator + CONST_ITERATOR; + + for (CONST_ITERATOR iter = objrefs.begin (); + iter != objrefs.end (); + ++iter, ++seq_slot) + { + ACE_NEW_THROW_EX (conn, + ::OBV_Components::ConnectionDescription, + CORBA::NO_MEMORY ()); + ::Components::ConnectionDescription_var safe_conn = conn; + + ::Components::Cookie *key_cookie = 0; + ACE_NEW_THROW_EX (key_cookie, + CIAO::Cookie_Impl (iter->first), + CORBA::NO_MEMORY ()); + + // Valuetype member set operation calls add_ref. + conn->ck (key_cookie); + CORBA::remove_ref (key_cookie); + + conn->objref (iter->second.in ()); + + elem->connections ()[seq_slot] = safe_conn._retn (); + } + + descriptions[slot] = safe_elem._retn (); + } + + template + void + Servant::describe_pub_event_source ( + const char *port_name, + const char *port_type_repo_id, + ACE_Array_Map &consumers, + ::Components::PublisherDescriptions_var &descriptions, + CORBA::ULong slot + ) + { + CIAO_TRACE ("Servant::describe_pub_event_source"); + + ::Components::PublisherDescription *elem = 0; + ACE_NEW_THROW_EX (elem, + ::OBV_Components::PublisherDescription, + CORBA::NO_MEMORY ()); + + ::Components::PublisherDescription_var safe_elem = elem; + + elem->name (port_name); + elem->type_id (port_type_repo_id); + elem->consumers ().length (consumers.size ()); + + ptrdiff_t map_slot = 0UL; + ::Components::SubscriberDescription *sub = 0; + + typedef typename ACE_Array_Map::const_iterator + CONST_ITERATOR; + + for (CONST_ITERATOR iter = consumers.begin (); + iter != consumers.end (); + ++iter, ++map_slot) + { + ACE_NEW_THROW_EX (sub, + ::OBV_Components::SubscriberDescription, + CORBA::NO_MEMORY ()); + ::Components::SubscriberDescription_var safe_sub = sub; + + ::Components::Cookie *key_cookie = 0; + ACE_NEW (key_cookie, + CIAO::Cookie_Impl (iter->first)); + + // Valuetype member set operation calls add_ref. + sub->ck (key_cookie); + CORBA::remove_ref (key_cookie); + + sub->consumer (iter->second.in ()); + + elem->consumers ()[map_slot] = safe_sub._retn (); + } + + descriptions[slot] = safe_elem._retn (); + } + + template + void + Servant::describe_emit_event_source ( + const char *port_name, + const char *port_type_repo_id, + T_var &consumer_ref, + ::Components::EmitterDescriptions_var &descriptions, + CORBA::ULong slot) + { + CIAO_TRACE ("Servant::describe_emit_event_source"); + ::Components::EmitterDescription *elem = 0; + ACE_NEW_THROW_EX (elem, + ::OBV_Components::EmitterDescription, + CORBA::NO_MEMORY ()); + ::Components::EmitterDescription_var safe_elem = elem; + + elem->name (port_name); + elem->type_id (port_type_repo_id); + + // Valuetype 'set' call increments the reference count. + elem->consumer (consumer_ref.in ()); + + descriptions[slot] = safe_elem._retn (); + } +} + +#endif /* CIAO_SERVANT_IMPL_T_C */ diff --git a/modules/CIAO/ciao/Servants/Servants.mpc b/modules/CIAO/ciao/Servants/Servants.mpc new file mode 100644 index 00000000000..3bce7351c57 --- /dev/null +++ b/modules/CIAO/ciao/Servants/Servants.mpc @@ -0,0 +1,57 @@ +// $Id$ +project(CIAO_Port_Activator_stub_idl) : ciaoidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_include=CIAO_Port_Activator_export.h \ + -Wb,stub_export_macro=CIAO_PORT_ACTIVATOR_Export \ + -SS -Sci -Gxhst + IDL_Files { + CIAO_Port_Activator.idl + } +} + +project(CIAO_Port_Activator_stub) : portableserver, ciao_lib { + dynamicflags = CIAO_PORT_ACTIVATOR_BUILD_DLL + after += CIAO_Port_Activator_stub_idl + IDL_Files { + } + Source_Files { + CIAO_Port_ActivatorC.cpp + } + Header_Files { + } +} + +project(CIAO_Servant_Impl) : ciao_servant_activator, ciao_port_activator_stub, ciao_container_base, ccm_svnt, ciao_output { + dynamicflags = CIAO_SERVANT_IMPL_BUILD_DLL + IDL_Files { + } + + Source_Files { + Home_Servant_Impl_Base.cpp + Home_Servant_Impl_T.cpp + Servant_Impl_Base.cpp + Servant_Impl_T.cpp + StandardConfigurator_Impl.cpp + Port_Activator.cpp + } + + Template_Files { + Servant_Impl_Utils_T.cpp + Port_Activator_T.cpp + } + + Header_Files { + CIAO_Servant_Impl_export.h + Home_Servant_Impl_Base.h + Home_Servant_Impl_T.h + Servant_Impl_Base.h + Servant_Impl_T.h + StandardConfigurator_Impl.h + Port_Activator.h + Port_Activator_T.h + } + + Inline_Files { + Port_Activator.inl + } +} diff --git a/modules/CIAO/ciao/Servants/StandardConfigurator_Impl.cpp b/modules/CIAO/ciao/Servants/StandardConfigurator_Impl.cpp new file mode 100644 index 00000000000..59b683fb82b --- /dev/null +++ b/modules/CIAO/ciao/Servants/StandardConfigurator_Impl.cpp @@ -0,0 +1,33 @@ +// StandardConfigurator.cpp,v 1.0 2004/14/04 08:47:46 white Exp + +#include "StandardConfigurator_Impl.h" +#include "Servant_Impl_Base.h" + +ACE_RCSID (ciao, + StandardConfigurator_Impl, + "$Id$") + +namespace CIAO +{ + StandardConfigurator_Impl::StandardConfigurator_Impl ( + Servant_Impl_Base* servant) + : component_ (servant) + { + } + + StandardConfigurator_Impl::~StandardConfigurator_Impl (void) + { + } + + void + StandardConfigurator_Impl::set_configuration ( + const Components::ConfigValues &descr) + { + this->component_->set_attributes (descr); + } + + void + StandardConfigurator_Impl::configure (Components::CCMObject_ptr) + { + } +} diff --git a/modules/CIAO/ciao/Servants/StandardConfigurator_Impl.h b/modules/CIAO/ciao/Servants/StandardConfigurator_Impl.h new file mode 100644 index 00000000000..4f49e216b88 --- /dev/null +++ b/modules/CIAO/ciao/Servants/StandardConfigurator_Impl.h @@ -0,0 +1,73 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file StandardConfigurator_Impl.h + * + * $Id$ + * + * This file contains implementation for the servant of + * Components::StandardConfigurator interface. + * + * @author Jules White + */ +//============================================================================= + +#ifndef CIAO_STANDARDCONFIGURATOR_IMPL_H +#define CIAO_STANDARDCONFIGURATOR_IMPL_H + +# include /**/ "ace/pre.h" + +#include "CIAO_Servant_Impl_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ccm/CCM_StandardConfiguratorS.h" + +namespace CIAO +{ + class Servant_Impl_Base; +} + +namespace CIAO +{ + /** + * @class StandardConfigurator_Impl + * + * @brief Servant implementation for Components::StandardConfigurator + * + * This class implements the Components::StandardConfigurator + * interface as defined by the CCM spcification. This class aids + * in setting the initial values of component attributes that are + * defined in the meta data. + */ + class CIAO_Servant_Impl_Export StandardConfigurator_Impl + : public virtual POA_Components::StandardConfigurator + { + public: + /// Constructor + StandardConfigurator_Impl (Servant_Impl_Base* toconfigure); + + /// Destructor + virtual ~StandardConfigurator_Impl (void); + + /// This method will call set_attributes on the component that is + /// being configured, i.e, the template method from + /// StandardConfigurator interface. + virtual void set_configuration (const Components::ConfigValues & descr); + + void configure (Components::CCMObject_ptr comp); + + private: + /// The component whose attributes are going to be configured via + /// set_attributes + Servant_Impl_Base* const component_; + }; + +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_STANDARDCONFIGURATOR_IMPL_H */ diff --git a/modules/CIAO/ciao/Valuetype_Factories/ConfigValue.cpp b/modules/CIAO/ciao/Valuetype_Factories/ConfigValue.cpp new file mode 100644 index 00000000000..30a12b438b3 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/ConfigValue.cpp @@ -0,0 +1,43 @@ +// $Id$ +#include "ConfigValue.h" + +ACE_RCSID (ciao, + ConfigValue, + "$Id$") + +namespace CIAO +{ + ConfigValue_impl::ConfigValue_impl() + { + CORBA::Any any; + any <<= CORBA::Short(0); + name((const char*)""); + value(any); + } + + + ConfigValue_impl::ConfigValue_impl(const char* the_name, + const CORBA::Any& the_value) + : OBV_Components::ConfigValue() + { + CORBA::Any any = the_value; + name( the_name ); + value( any ); + } + + CORBA::ValueBase* ConfigValue_impl::_copy_value() + { + return new ConfigValue_impl(name(),value()); + } + + ConfigValue_impl::~ConfigValue_impl() + throw () + { + } + + CORBA::ValueBase * + ConfigValueFactory::create_for_unmarshal () + { + return new ConfigValue_impl(); + } +} diff --git a/modules/CIAO/ciao/Valuetype_Factories/ConfigValue.h b/modules/CIAO/ciao/Valuetype_Factories/ConfigValue.h new file mode 100644 index 00000000000..11681ede8d8 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/ConfigValue.h @@ -0,0 +1,37 @@ +// $Id$ + +#ifndef CIAO_CONFIG_VALUE_H +#define CIAO_CONFIG_VALUE_H +#include /**/ "ace/pre.h" + +#include "ccm/CCM_StandardConfiguratorC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ConfigValue_Export.h" +// #include "ace/Active_Map_Manager.h" + +namespace CIAO +{ + class ConfigValue_Factory_Export ConfigValue_impl + : public virtual OBV_Components::ConfigValue, + public virtual CORBA::DefaultValueRefCountBase + { + public: + ConfigValue_impl(); + ConfigValue_impl(const char* the_name, const CORBA::Any& the_value); + ~ConfigValue_impl() throw(); + virtual CORBA::ValueBase* _copy_value(); + }; + + class ConfigValueFactory : virtual public Components::ConfigValue_init + { + public: + CORBA::ValueBase * create_for_unmarshal (); + }; +} + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIG_VALUE_H */ diff --git a/modules/CIAO/ciao/Valuetype_Factories/ConfigValue_Export.h b/modules/CIAO/ciao/Valuetype_Factories/ConfigValue_Export.h new file mode 100644 index 00000000000..71ec6ce9491 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/ConfigValue_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl ConfigValue_Factory +// ------------------------------ +#ifndef CONFIGVALUE_FACTORY_EXPORT_H +#define CONFIGVALUE_FACTORY_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CONFIGVALUE_FACTORY_HAS_DLL) +# define CONFIGVALUE_FACTORY_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CONFIGVALUE_FACTORY_HAS_DLL */ + +#if !defined (CONFIGVALUE_FACTORY_HAS_DLL) +# define CONFIGVALUE_FACTORY_HAS_DLL 1 +#endif /* ! CONFIGVALUE_FACTORY_HAS_DLL */ + +#if defined (CONFIGVALUE_FACTORY_HAS_DLL) && (CONFIGVALUE_FACTORY_HAS_DLL == 1) +# if defined (CONFIGVALUE_FACTORY_BUILD_DLL) +# define ConfigValue_Factory_Export ACE_Proper_Export_Flag +# define CONFIGVALUE_FACTORY_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CONFIGVALUE_FACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CONFIGVALUE_FACTORY_BUILD_DLL */ +# define ConfigValue_Factory_Export ACE_Proper_Import_Flag +# define CONFIGVALUE_FACTORY_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CONFIGVALUE_FACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CONFIGVALUE_FACTORY_BUILD_DLL */ +#else /* CONFIGVALUE_FACTORY_HAS_DLL == 1 */ +# define ConfigValue_Factory_Export +# define CONFIGVALUE_FACTORY_SINGLETON_DECLARATION(T) +# define CONFIGVALUE_FACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CONFIGVALUE_FACTORY_HAS_DLL == 1 */ + +// Set CONFIGVALUE_FACTORY_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CONFIGVALUE_FACTORY_NTRACE) +# if (ACE_NTRACE == 1) +# define CONFIGVALUE_FACTORY_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CONFIGVALUE_FACTORY_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CONFIGVALUE_FACTORY_NTRACE */ + +#if (CONFIGVALUE_FACTORY_NTRACE == 1) +# define CONFIGVALUE_FACTORY_TRACE(X) +#else /* (CONFIGVALUE_FACTORY_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CONFIGVALUE_FACTORY_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CONFIGVALUE_FACTORY_NTRACE == 1) */ + +#endif /* CONFIGVALUE_FACTORY_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/ciao/Valuetype_Factories/Cookie_Export.h b/modules/CIAO/ciao/Valuetype_Factories/Cookie_Export.h new file mode 100644 index 00000000000..277717f4d5c --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/Cookie_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl Cookie_Factory +// ------------------------------ +#ifndef COOKIE_FACTORY_EXPORT_H +#define COOKIE_FACTORY_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (COOKIE_FACTORY_HAS_DLL) +# define COOKIE_FACTORY_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && COOKIE_FACTORY_HAS_DLL */ + +#if !defined (COOKIE_FACTORY_HAS_DLL) +# define COOKIE_FACTORY_HAS_DLL 1 +#endif /* ! COOKIE_FACTORY_HAS_DLL */ + +#if defined (COOKIE_FACTORY_HAS_DLL) && (COOKIE_FACTORY_HAS_DLL == 1) +# if defined (COOKIE_FACTORY_BUILD_DLL) +# define Cookie_Factory_Export ACE_Proper_Export_Flag +# define COOKIE_FACTORY_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define COOKIE_FACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* COOKIE_FACTORY_BUILD_DLL */ +# define Cookie_Factory_Export ACE_Proper_Import_Flag +# define COOKIE_FACTORY_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define COOKIE_FACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* COOKIE_FACTORY_BUILD_DLL */ +#else /* COOKIE_FACTORY_HAS_DLL == 1 */ +# define Cookie_Factory_Export +# define COOKIE_FACTORY_SINGLETON_DECLARATION(T) +# define COOKIE_FACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* COOKIE_FACTORY_HAS_DLL == 1 */ + +// Set COOKIE_FACTORY_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (COOKIE_FACTORY_NTRACE) +# if (ACE_NTRACE == 1) +# define COOKIE_FACTORY_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define COOKIE_FACTORY_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !COOKIE_FACTORY_NTRACE */ + +#if (COOKIE_FACTORY_NTRACE == 1) +# define COOKIE_FACTORY_TRACE(X) +#else /* (COOKIE_FACTORY_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define COOKIE_FACTORY_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (COOKIE_FACTORY_NTRACE == 1) */ + +#endif /* COOKIE_FACTORY_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/ciao/Valuetype_Factories/Cookies.cpp b/modules/CIAO/ciao/Valuetype_Factories/Cookies.cpp new file mode 100644 index 00000000000..0d32ffe9d89 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/Cookies.cpp @@ -0,0 +1,68 @@ +// $Id$ + +#include "Cookies.h" + +#if !defined (__ACE_INLINE__) +#include "Cookies.inl" +#endif /* !defined INLINE */ + +ACE_RCSID (ciao, + Cookies, + "$Id$") + +namespace CIAO +{ + Cookie_Impl::Cookie_Impl (ptrdiff_t const &key) + { + this->cookieValue ().length (sizeof (ptrdiff_t)); + ACE_OS::memcpy (this->cookieValue ().get_buffer (false), + &key, + sizeof (ptrdiff_t)); + } + + Cookie_Impl::~Cookie_Impl (void) + { + } + + bool + Cookie_Impl::extract (Components::Cookie const * const ck, + ptrdiff_t &key) + { + Cookie_Impl const * const c = + dynamic_cast (ck); + + if (c == 0) + { + return false; + } + + CORBA::OctetSeq const &x = c->cookieValue (); + + if (x.length () != sizeof (ptrdiff_t)) + { + return false; + } + + key = *reinterpret_cast (x.get_buffer ()); + + return true; + } + + //======================================================== + + CORBA::ValueBase * + Cookie_Impl_init::create_for_unmarshal (void) + { + CORBA::ValueBase *ret_val = 0; + + ACE_NEW_THROW_EX (ret_val, + CIAO::Cookie_Impl, + CORBA::NO_MEMORY ()); + + return ret_val; + } + + Cookie_Impl_init::~Cookie_Impl_init (void) + { + } +} diff --git a/modules/CIAO/ciao/Valuetype_Factories/Cookies.h b/modules/CIAO/ciao/Valuetype_Factories/Cookies.h new file mode 100644 index 00000000000..8fd92b348f8 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/Cookies.h @@ -0,0 +1,70 @@ +// $Id$ + +/** + * @file Cookies.h + * + * A CIAO implementation of Cookie valuetype. + * + * @author Nanbor Wang + */ + +#ifndef CIAO_COOKIES_H +#define CIAO_COOKIES_H + +#include /**/ "ace/pre.h" + +#include "Cookie_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ccm/CCM_CookieC.h" + +#include "ace/Active_Map_Manager.h" + +namespace CIAO +{ + /** + * @class Cookie_Impl + * + * @brief A cookie implementation using an unsigned integer + * big enough to hold an address, even on a 64-bit machine. + */ + class Cookie_Factory_Export Cookie_Impl + : public virtual OBV_Components::Cookie + { + public: + Cookie_Impl (void); + virtual ~Cookie_Impl (void); + + /// Initialize a @c Cookie with a @c ptrdiff_t + Cookie_Impl (ptrdiff_t const &key); + + /// Extract the @c CORBA::ULong + static bool extract (Components::Cookie const * const c, + ptrdiff_t &key); + }; + + /** + * @class Cookie_Impl_init + * + * @brief Valuefactory implementation for Cookie_Impl. + */ + class Cookie_Factory_Export Cookie_Impl_init + : public virtual Components::Cookie_init + { + public: + virtual ~Cookie_Impl_init (void); + + virtual CORBA::ValueBase *create_for_unmarshal (void); + }; +} + +#if defined (__ACE_INLINE__) +#include "Cookies.inl" +#endif /* defined INLINE */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_COOKIES_H */ diff --git a/modules/CIAO/ciao/Valuetype_Factories/Cookies.inl b/modules/CIAO/ciao/Valuetype_Factories/Cookies.inl new file mode 100644 index 00000000000..406485110c4 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/Cookies.inl @@ -0,0 +1,10 @@ +/* -*- C++ -*- */ +// $Id$ + +namespace CIAO +{ + ACE_INLINE + Cookie_Impl::Cookie_Impl (void) + { + } +} diff --git a/modules/CIAO/ciao/Valuetype_Factories/Factories.mpc b/modules/CIAO/ciao/Valuetype_Factories/Factories.mpc new file mode 100644 index 00000000000..c03e88e1ec8 --- /dev/null +++ b/modules/CIAO/ciao/Valuetype_Factories/Factories.mpc @@ -0,0 +1,23 @@ +//$Id$ +project(CCM_Cookie_Factory) : ccm_stub, ciao_lib { + dynamicflags = COOKIE_FACTORY_BUILD_DLL + Source_Files { + Cookies.cpp + } + Header_Files { + Cookies.h + } + Inline_Files { + Cookies.inl + } +} + +project(CCM_ConfigValue_Factory) : ccm_stub, ciao_lib { + dynamicflags = CONFIGVALUE_FACTORY_BUILD_DLL + Source_Files { + ConfigValue.cpp + } + Header_Files { + ConfigValue.h + } +} diff --git a/modules/CIAO/ciao/Version.h b/modules/CIAO/ciao/Version.h new file mode 100644 index 00000000000..d6e636c00b9 --- /dev/null +++ b/modules/CIAO/ciao/Version.h @@ -0,0 +1,9 @@ + +// -*- C++ -*- +// $Id$ +// This is file was automatically generated by \$ACE_ROOT/bin/make_release. + +#define CIAO_MAJOR_VERSION 0 +#define CIAO_MINOR_VERSION 7 +#define CIAO_BETA_VERSION 5 +#define CIAO_VERSION "0.7.5" diff --git a/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt new file mode 100644 index 00000000000..dbbe631d461 Binary files /dev/null and b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt differ diff --git a/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt new file mode 100644 index 00000000000..9805b277765 Binary files /dev/null and b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt differ diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl new file mode 100644 index 00000000000..fc1bef18139 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl @@ -0,0 +1,31 @@ +// $Id$ + +#ifndef HELLO_IDL +#define HELLO_IDL + +module Hello +{ + exception InternalError + { + long id; + string error_string; + }; + + // Sender/Receiver interface + interface MyFoo + { + long foo (in string in_str, out string answer) + raises (InternalError); + void hello (out long answer) + raises (InternalError); + + attribute short rw_attrib + getraises (InternalError) + setraises (InternalError); + + readonly attribute short ro_attrib + raises (InternalError); + }; +}; + +#endif diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc new file mode 100644 index 00000000000..7abff93973e --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc @@ -0,0 +1,109 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Hello" + +project(AMI_Hello_idl_gen) : componentidldefaults, ami { + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_STUB_Export \ + -Wb,stub_export_include=Hello_stub_export.h \ + -Wb,skel_export_macro=HELLO_SKEL_Export \ + -Wb,skel_export_include=Hello_skel_export.h \ + -Wb,exec_export_macro=HELLO_EXEC_Export \ + -Wb,exec_export_include=Hello_exec_export.h -I.. + + IDL_Files { + Hello.idl + } +} + +project(AMI_Hello_lem_gen) : ciaoidldefaults { + after += AMI_Hello_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=HELLO_EXEC_Export \ + -Wb,export_include=Hello_exec_export.h -I.. -SS + + IDL_Files { + HelloE.idl + } +} + +project(AMI_Hello_stub) : ccm_stub, ami { + after += AMI_Hello_lem_gen + libs += + libout = ../lib + libpaths += ../lib + includes += .. + + sharedname = Hello_stub + dynamicflags = HELLO_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + HelloC.cpp + } + + Header_Files { + HelloC.h + Hello_stub_export.h +} + + Inline_Files { + HelloC.inl + } +} + +project(AMI_Hello_exec) : ccm_executor, ami { + after += AMI_Hello_lem_gen AMI_Hello_stub + libs += Hello_stub + libout = ../lib + libpaths += ../lib + includes += .. + + sharedname = Hello_exec + dynamicflags = HELLO_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + HelloEC.cpp + } + + Header_Files { + HelloEC.h + Hello_exec_export.h +} + + Inline_Files { + HelloEC.inl + } +} + +project(AMI_Hello_skel) : ciao_executor, ami { + after += AMI_Hello_stub AMI_Hello_exec + sharedname = Hello_skel + libs += Hello_stub Hello_exec + libout = ../lib + libpaths += ../lib + includes += .. + + dynamicflags = HELLO_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + HelloS.cpp + } + + Header_Files { + HelloS.h + Hello_skel_export.h + } + + Inline_Files { + HelloS.inl + } +} + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.idl new file mode 100644 index 00000000000..0167d0b99e8 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.idl @@ -0,0 +1,27 @@ +// $Id$ + +#ifndef AMI_IDL +#define AMI_IDL + +#include + +#include "Connector/Hello_Base.idl" +#include "Connector/Hello_BaseE.idl" +#include "Base/HelloE.idl" + +#define connector component + +module Hello +{ + connector AMI_Sender + { + /// Provides the interface for Sender + provides AMI_MyFoo sendc_run_my_foo; + + /// Uses the interface of the Receiver ('server') + uses MyFoo run_my_foo; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.mpc new file mode 100644 index 00000000000..1346238561c --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI.mpc @@ -0,0 +1,224 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Hello_Base AMI" + +project(Conn_Hello_Base_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export \ + -Wb,stub_export_include=Hello_Base_stub_export.h \ + -Wb,skel_export_macro=HELLO_BASE_SKEL_Export \ + -Wb,skel_export_include=Hello_Base_skel_export.h \ + -Wb,exec_export_macro=HELLO_BASE_EXEC_Export \ + -Wb,exec_export_include=Hello_Base_exec_export.h -I.. -SS + + IDL_Files { + Hello_Base.idl + } +} + +project(Conn_Hello_Base_lem_gen) : ciaoidldefaults { + after += Conn_Hello_Base_idl_gen + custom_only = 1 + idlflags += \ + -Wb,export_macro=HELLO_BASE_EXEC_Export \ + -Wb,export_include=Hello_Base_exec_export.h -I.. -SS + + IDL_Files { + Hello_BaseE.idl + } +} + +project(Conn_Hello_Base_stub) : ccm_stub, ami { + after += AMI_Hello_lem_gen Conn_Hello_Base_lem_gen + libs += + libout = ../lib + libpaths += ../lib + includes += .. + + sharedname = Conn_Hello_stub + dynamicflags = HELLO_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseC.cpp + } + + Header_Files { + Hello_BaseC.h + Hello_Base_stub_export.h +} + + Inline_Files { + Hello_BaseC.inl + } +} + +project(Conn_AMI_Hello_Base_exec) : ccm_executor, ami { + after += Conn_Hello_Base_lem_gen Conn_Hello_Base_stub + libs += Conn_Hello_stub + libout = ../lib + libpaths += ../lib + includes += .. + + sharedname = Conn_Hello_exec + dynamicflags = HELLO_BASE_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseEC.cpp + } + + Header_Files { + Hello_BaseEC.h + Hello_Base_exec_export.h +} + + Inline_Files { + Hello_BaseEC.inl + } +} + + +project(Hello_Base_AMI_idl_gen) : componentidldefaults { + after += Conn_Hello_Base_idl_gen Conn_Hello_idl_gen AMI_Hello_idl_gen + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=AMI_STUB_Export \ + -Wb,stub_export_include=AMI_stub_export.h \ + -Wb,skel_export_macro=AMI_SVNT_Export \ + -Wb,skel_export_include=AMI_svnt_export.h \ + -Wb,exec_export_macro=AMI_EXEC_Export \ + -Wb,exec_export_include=AMI_exec_export.h \ + -I.. + + IDL_Files { + AMI.idl + } +} + +project(Hello_Base_AMI_lem_gen) : ciaoidldefaults { + after += Hello_Base_AMI_idl_gen Conn_Hello_Base_lem_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=AMI_LEM_STUB_Export \ + -Wb,stub_export_include=AMI_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + AMIE.idl + } +} + +project(Hello_Base_AMI_lem_stub) : ccm_svnt, ami { + after += Hello_Base_AMI_lem_gen Hello_Base_AMI_stub AMI_Hello_Base_stub + libs += Hello_stub AMI_stub + libpaths += ../lib + libout = ../lib + sharedname = AMI_lem_stub + dynamicflags = AMI_LEM_STUB_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + AMIEC.cpp + } + + Header_Files { + AMIEC.h + AMI_lem_stub_export.h + } + + Inline_Files { + AMIEC.inl + } +} + +project(Hello_Base_AMI_stub) : ccm_stub, ami { + after += Hello_Base_AMI_idl_gen AMI_Hello_Base_stub AMI_Hello_stub + libs += Hello_stub + libpaths += ../lib + libout = ../lib + sharedname = AMI_stub + dynamicflags = AMI_STUB_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + AMIC.cpp + } + + Header_Files { + AMIC.h + AMI_stub_export.h + } + + Inline_Files { + AMIC.inl + } +} + +project(Hello_Base_AMI_exec) : ciao_executor, ami { + after += Hello_Base_AMI_lem_stub AMI_Hello_Base_AMI_stub AMI_Hello_Base_skel AMI_Hello_Base_exec Hello_Base_AMI_stub Conn_Hello_Base_skel Conn_AMI_Hello_Base_exec AMI_Hello_exec AMI_Hello_skel + sharedname = AMI_exec + libs += AMI_stub AMI_lem_stub Hello_stub Hello_skel Hello_exec Conn_Hello_stub Conn_Hello_exec + libpaths += ../lib + libout = ../lib + dynamicflags = AMI_EXEC_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + AMI_exec.cpp + AMI_MyFoo_i.cpp + } + + Header_Files { + AMI_exec.h + AMI_MyFoo_i.h + AMI_exec_export.h + } + + Inline_Files { + } +} + + +project(Hello_Base_AMI_svnt) : ciao_servant, ami { + after += AMI_Hello_Base_skel Hello_Base_AMI_lem_stub Hello_Base_AMI_exec + sharedname = AMI_svnt + libs += AMI_stub AMI_lem_stub \ + Hello_skel \ + Hello_stub \ + Hello_exec \ + Conn_Hello_stub \ + Conn_Hello_exec \ + AMI_exec + libpaths += ../lib + libout = ../lib + dynamicflags = AMI_SVNT_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + AMIS.cpp + AMI_svnt.cpp + } + + Header_Files { + AMIS.h + AMI_svnt.h + AMI_svnt_export.h + } + + Inline_Files { + AMIS.inl + } +} + + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.cpp new file mode 100644 index 00000000000..8cdc2728ec0 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.cpp @@ -0,0 +1,140 @@ +// $Id$ + +#include "AMI_MyFoo_i.h" +#include "Hello_BaseEC.h" +#include "tao/LocalObject.h" + +class ExceptionHolder_i + : public virtual ::CCM_AMI::CCM_ExceptionHolder, + public virtual ::CORBA::LocalObject +{ +public: + ExceptionHolder_i (::Messaging::ExceptionHolder* holder) : holder_ (holder) {} + + virtual void raise_exception (void) + { + if (holder_) + { + holder_->raise_exception (); + } + else + throw ::CORBA::UNKNOWN (TAO::VMCID, CORBA::COMPLETED_YES); + } +private: + ::Messaging::ExceptionHolder* holder_; +}; + +namespace CCM_CORBA_AMI_MyFoo_Impl +{ + //============================================================ + // Implementation of the AMI CORBA FOO reply handler + //============================================================ + AMI_MyFoo_reply_handler::AMI_MyFoo_reply_handler (::Hello::AMI_MyFooCallback_ptr foo_callback) + : foo_callback_ (::Hello::AMI_MyFooCallback::_duplicate (foo_callback)) + { + } + + AMI_MyFoo_reply_handler::~AMI_MyFoo_reply_handler () + { + } + + // FOO methods + void + AMI_MyFoo_reply_handler::foo ( + CORBA::Long result, + const char * out_str) + { + printf ("AMI CORBA (FOO) :\tMyFoo Foo Reply Handler::foo\n"); + this->foo_callback_->foo (result, out_str); + this->_remove_ref (); + } + + void + AMI_MyFoo_reply_handler::foo_excep ( + ::Messaging::ExceptionHolder * excep_holder) + { + printf ("AMI CORBA (FOO) :\tMyFoo Foo Reply Handler::foo_excep\n"); + ExceptionHolder_i holder (excep_holder); + this->foo_callback_->foo_excep (&holder); + this->_remove_ref (); + } + + // HELLO methods + void + AMI_MyFoo_reply_handler::hello ( + CORBA::Long answer) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::hello\n"); + this->foo_callback_->hello (answer); + this->_remove_ref (); + } + + void + AMI_MyFoo_reply_handler::hello_excep ( + ::Messaging::ExceptionHolder * excep_holder) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::hello_excep\n"); + ExceptionHolder_i holder (excep_holder); + this->foo_callback_->hello_excep (&holder); + this->_remove_ref (); + } + + //GET rw_attrib Reply Handler + void + AMI_MyFoo_reply_handler::get_rw_attrib ( + ::CORBA::Short ami_return_val) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_rw_atrrib\n"); + this->foo_callback_->get_rw_attrib (ami_return_val); + this->_remove_ref (); + } + + void + AMI_MyFoo_reply_handler::get_rw_attrib_excep ( + ::Messaging::ExceptionHolder * excep_holder) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_rw_attrib_excep\n"); + ExceptionHolder_i holder (excep_holder); + this->foo_callback_->get_rw_attrib_excep (&holder); + this->_remove_ref (); + } + + //SET rw_attrib Reply Handler + void + AMI_MyFoo_reply_handler::set_rw_attrib () + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::set_rw_attrib\n"); + this->foo_callback_->set_rw_attrib (); + this->_remove_ref (); + } + + void + AMI_MyFoo_reply_handler::set_rw_attrib_excep ( + ::Messaging::ExceptionHolder * excep_holder) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::set_rw_attrib_excep\n"); + ExceptionHolder_i holder (excep_holder); + this->foo_callback_->set_rw_attrib_excep (&holder); + this->_remove_ref (); + } + + //ro_attrib Reply Handler + void + AMI_MyFoo_reply_handler::get_ro_attrib ( + ::CORBA::Short ami_return_val) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_ro_attrib\n"); + this->foo_callback_->get_ro_attrib (ami_return_val); + this->_remove_ref (); + } + + void + AMI_MyFoo_reply_handler::get_ro_attrib_excep ( + ::Messaging::ExceptionHolder * excep_holder) + { + printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_ro_attrib_excep\n"); + ExceptionHolder_i holder (excep_holder); + this->foo_callback_->get_ro_attrib_excep (&holder); + this->_remove_ref (); + } +} diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.h new file mode 100644 index 00000000000..49e68ba0097 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_MyFoo_i.h @@ -0,0 +1,47 @@ +// $Id$ + +#ifndef AMI_MyFoo_i_H +#define AMI_MyFoo_i_H + +#include "Base/HelloS.h" +#include "Hello_BaseC.h" +#include "ace/Task.h" + +namespace CCM_CORBA_AMI_MyFoo_Impl +{ + class AMI_MyFoo_reply_handler : public POA_Hello::AMI_MyFooHandler + { + public: + AMI_MyFoo_reply_handler ( + ::Hello::AMI_MyFooCallback_ptr foo_callback); + + virtual ~AMI_MyFoo_reply_handler (void); + + virtual void foo (CORBA::Long result, const char * out_str); + + virtual void foo_excep (::Messaging::ExceptionHolder * excep_holder); + + virtual void hello (CORBA::Long answer); + + virtual void hello_excep (::Messaging::ExceptionHolder * excep_holder); + + virtual void get_rw_attrib (::CORBA::Short ami_return_val); + + virtual void get_rw_attrib_excep ( + ::Messaging::ExceptionHolder * excep_holder); + + virtual void set_rw_attrib (); + + virtual void set_rw_attrib_excep ( + ::Messaging::ExceptionHolder * excep_holder); + + virtual void get_ro_attrib (::CORBA::Short ami_return_val); + + virtual void get_ro_attrib_excep ( + ::Messaging::ExceptionHolder * excep_holder); + private: + ::Hello::AMI_MyFooCallback_var foo_callback_; + }; +} +#endif /* AMI_MyFoo_i_H */ + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp new file mode 100644 index 00000000000..133b5039d3c --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.cpp @@ -0,0 +1,201 @@ +// -*- C++ -*- +// $Id$ + +#include "AMI_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "AMI_MyFoo_i.h" + +namespace CIAO_Hello_AMI_Sender_Impl +{ + AMI_MyFoo_exec_i::AMI_MyFoo_exec_i () + { + } + + AMI_MyFoo_exec_i::~AMI_MyFoo_exec_i (void) + { + } + + void + AMI_MyFoo_exec_i::provide_receiver (::Hello::MyFoo_ptr receiver_foo) + { + this->ami_foo_server_ = ::Hello::MyFoo::_duplicate (receiver_foo); + } + + void + AMI_MyFoo_exec_i::sendc_foo ( + ::Hello::AMI_MyFooCallback_ptr ami_handler, + const char * in_str) + { + printf ("AMI (FOO) :\tsendc_foo <%s>\n", in_str); + if (!::CORBA::is_nil (this->ami_foo_server_.in ())) + { + Hello::AMI_MyFooHandler_var the_handler_var; + if (!::CORBA::is_nil (ami_handler)) + { + ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); + the_handler_var = handler->_this (); + } + printf ("AMI (FOO) :\tSending string <%s> to AMI CORBA server\n", in_str); + this->ami_foo_server_->sendc_foo (the_handler_var.in (), in_str); + printf ("AMI (FOO) : \tInvoked sendc_foo\n"); + } + } + + void + AMI_MyFoo_exec_i::sendc_hello ( + ::Hello::AMI_MyFooCallback_ptr ami_handler) + { + printf ("AMI (FOO) :\tsendc_hello\n"); + if (!::CORBA::is_nil (this->ami_foo_server_.in ())) + { + Hello::AMI_MyFooHandler_var the_handler_var; + if (!::CORBA::is_nil (ami_handler)) + { + ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); + the_handler_var = handler->_this (); + } + printf ("AMI (FOO) :\tCalling AMI CORBA server\n"); + this->ami_foo_server_->sendc_hello (the_handler_var.in ()); + printf ("AMI (FOO) : \tInvoked sendc_foo\n"); + } + } + + void + AMI_MyFoo_exec_i::sendc_get_rw_attrib ( + ::Hello::AMI_MyFooCallback_ptr ami_handler) + { + printf ("AMI (FOO) :\tsendc_get_rw_attrib\n"); + if (!::CORBA::is_nil (this->ami_foo_server_.in ())) + { + Hello::AMI_MyFooHandler_var the_handler_var; + if (!::CORBA::is_nil (ami_handler)) + { + ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); + the_handler_var = handler->_this (); + } + this->ami_foo_server_->sendc_get_rw_attrib (the_handler_var.in ()); + printf ("AMI (FOO) : \tInvoked sendc_get_rw_attrib\n"); + } + } + + void + AMI_MyFoo_exec_i::sendc_set_rw_attrib ( + ::Hello::AMI_MyFooCallback_ptr ami_handler, + CORBA::Short rw_attrib) + { + printf ("AMI (FOO) :\tsendc_set_rw_attrib\n"); + if (!::CORBA::is_nil (this->ami_foo_server_.in ())) + { + Hello::AMI_MyFooHandler_var the_handler_var; + if (!::CORBA::is_nil (ami_handler)) + { + ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); + the_handler_var = handler->_this (); + } + printf ("AMI (FOO) : \tSet rw_attrib <%d>\n", rw_attrib); + this->ami_foo_server_->sendc_set_rw_attrib (the_handler_var.in (), rw_attrib); + printf ("AMI (FOO) : \tInvoked sendc_set_rw_attrib\n"); + } + } + + void + AMI_MyFoo_exec_i::sendc_get_ro_attrib ( + ::Hello::AMI_MyFooCallback_ptr ami_handler) + { + printf ("AMI (FOO) :\tsendc_get_ro_attrib\n"); + if (!::CORBA::is_nil (this->ami_foo_server_.in ())) + { + Hello::AMI_MyFooHandler_var the_handler_var; + if (!::CORBA::is_nil (ami_handler)) + { + ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler* handler = + new ::CCM_CORBA_AMI_MyFoo_Impl::AMI_MyFoo_reply_handler (ami_handler); + the_handler_var = handler->_this (); + } + this->ami_foo_server_->sendc_get_ro_attrib (the_handler_var.in ()); + printf ("AMI (FOO) : \tInvoked sendc_get_ro_attrib\n"); + } + } + //============================================================ + // Component Executor Implementation Class: AMI_exec_i + //============================================================ + + AMI_exec_i::AMI_exec_i (void) + : myfoo_ (0) + { + } + + AMI_exec_i::~AMI_exec_i (void) + { + delete myfoo_; + } + + // Supported operations and attributes. + + // Component attributes. + + // Port operations. + + ::Hello::CCM_AMI_MyFoo_ptr + AMI_exec_i::get_sendc_run_my_foo (void) + { + this->myfoo_ = new AMI_MyFoo_exec_i (); + return this->myfoo_; + } + // Operations from Components::SessionComponent. + + void + AMI_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Hello::CCM_AMI_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + AMI_exec_i::configuration_complete (void) + { + this->receiver_foo_ = + this->context_->get_connection_run_my_foo (); + + this->myfoo_->provide_receiver (receiver_foo_.in ()); + } + + void + AMI_exec_i::ccm_activate (void) + { + } + + void + AMI_exec_i::ccm_passivate (void) + { + } + + void + AMI_exec_i::ccm_remove (void) + { + } + + extern "C" ::Components::EnterpriseComponent_ptr + create_Hello_AMI_AMI_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + AMI_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } +} diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.h new file mode 100644 index 00000000000..35d27482d48 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/AMI_exec.h @@ -0,0 +1,89 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_AMI_EXEC_H_ +#define CIAO_AMI_EXEC_H_ + +#include "AMIEC.h" +#include "AMI_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Hello_AMI_Sender_Impl +{ + class AMI_MyFoo_exec_i + : public virtual ::Hello::CCM_AMI_MyFoo, + public virtual ::CORBA::LocalObject + { + public: + AMI_MyFoo_exec_i (); + + virtual ~AMI_MyFoo_exec_i (void); + + void provide_receiver (::Hello::MyFoo_ptr receiver_foo); + + virtual void + sendc_foo ( + ::Hello::AMI_MyFooCallback_ptr ami_handler, + const char * in_str); + + virtual void + sendc_hello ( + ::Hello::AMI_MyFooCallback_ptr ami_handler); + + virtual void + sendc_get_rw_attrib ( + ::Hello::AMI_MyFooCallback_ptr ami_handler); + + virtual void + sendc_set_rw_attrib ( + ::Hello::AMI_MyFooCallback_ptr ami_handler, + CORBA::Short rw_attrib); + + virtual void + sendc_get_ro_attrib ( + ::Hello::AMI_MyFooCallback_ptr ami_handler); + + private: + Hello::MyFoo_var ami_foo_server_; + }; + + class AMI_exec_i + : public virtual AMI_Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + AMI_exec_i (void); + virtual ~AMI_exec_i (void); + + virtual ::Hello::CCM_AMI_MyFoo_ptr + get_sendc_run_my_foo (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Hello::CCM_AMI_Sender_Context_var context_; + ::Hello::AMI_MyFooCallback_var callback_foo_; + ::Hello::MyFoo_var receiver_foo_; + + AMI_MyFoo_exec_i *myfoo_; + }; + + extern "C" AMI_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_AMI_AMI_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl new file mode 100644 index 00000000000..672116c8da0 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Connector/Hello_Base.idl @@ -0,0 +1,54 @@ +// $Id$ + +#ifndef HELLO_BASE_IDL +#define HELLO_BASE_IDL + +#include "Base/Hello.idl" + +module CCM_AMI +{ + native UserExceptionBase; + + local interface ExceptionHolder + { + void raise_exception() raises (UserExceptionBase); + }; +}; + +module Hello +{ + // Callback interface from AMI-component to Sender component + local interface AMI_MyFooCallback + { + void foo (in long ami_return_val, in string answer); + void foo_excep (in CCM_AMI::ExceptionHolder excep_holder); + + void hello (in long ami_return_val); + void hello_excep (in CCM_AMI::ExceptionHolder excep_holder); + + void get_rw_attrib (in short ami_return_val); + void get_rw_attrib_excep (in CCM_AMI::ExceptionHolder excep_holder); + + void set_rw_attrib (); + void set_rw_attrib_excep (in CCM_AMI::ExceptionHolder excep_holder); + + void get_ro_attrib (in short ami_return_val); + void get_ro_attrib_excep (in CCM_AMI::ExceptionHolder excep_holder); + }; + + // AMI component. Sender calls AMI-component and AMI-component calls Receiver + // using the AMI_foo interface. + // Example of a global reply handler + local interface AMI_MyFoo + { + void sendc_foo (in AMI_MyFooCallback ami_handler, in string in_str); + void sendc_hello (in AMI_MyFooCallback ami_handler); + + /// Asynch method for handling attributes + void sendc_get_rw_attrib (in AMI_MyFooCallback ami_handler); + void sendc_set_rw_attrib (in AMI_MyFooCallback ami_handler, in short rw_attrib); + void sendc_get_ro_attrib (in AMI_MyFooCallback ami_handler); + }; +}; + +#endif /* HELLO_BASE_IDL */ diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl new file mode 100644 index 00000000000..27474b40151 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl @@ -0,0 +1,19 @@ +// $Id$ + +#ifndef HELLO_RECEIVER_IDL +#define HELLO_RECEIVER_IDL + +#include + +#include "Base/Hello.idl" +#include "Base/HelloE.idl" + +module Hello +{ + component Receiver + { + /// Provides + provides MyFoo do_my_foo; + }; +}; +#endif diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc new file mode 100644 index 00000000000..2ff613ec46b --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc @@ -0,0 +1,135 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Hello_Base Hello_Receiver" + +project(AMI_Hello_Base_Hello_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += AMI_Hello_idl_gen + idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_STUB_Export \ + -Wb,stub_export_include=Hello_Receiver_stub_export.h \ + -Wb,skel_export_macro=HELLO_RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Hello_Receiver_svnt_export.h \ + -Wb,exec_export_macro=HELLO_RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Hello_Receiver_exec_export.h \ + -Glem -I.. + + IDL_Files { + Hello_Receiver.idl + } +} + +project(AMI_Hello_Base_Hello_Receiver_lem_gen) : ciaoidldefaults { + after += AMI_Hello_Base_Hello_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Hello_Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Hello_ReceiverE.idl + } +} + +project(AMI_Hello_Base_Hello_Receiver_l_stub) : ccm_svnt, messaging { + after += AMI_Hello_Base_Hello_Receiver_lem_gen AMI_Hello_Base_Hello_Receiver_stub AMI_Hello_stub + libs += Hello_stub Hello_Receiver_stub + libpaths += ../lib + libout = ../lib + sharedname = Hello_Receiver_lem_stub + dynamicflags = HELLO_RECEIVER_LEM_STUB_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_ReceiverEC.cpp + } + + Header_Files { + Hello_ReceiverEC.h + Hello_Receiver_lem_stub_export.h + } + + Inline_Files { + Hello_ReceiverEC.inl + } +} + +project(AMI_Hello_Base_Hello_Receiver_stub) : ccm_stub, messaging { + after += AMI_Hello_Base_Hello_Receiver_idl_gen AMI_Hello_stub + libs += Hello_stub + libpaths += ../lib + libout = ../lib + sharedname = Hello_Receiver_stub + dynamicflags = HELLO_RECEIVER_STUB_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_ReceiverC.cpp + } + + Header_Files { + Hello_ReceiverC.h + Hello_Receiver_stub_export.h + } + + Inline_Files { + Hello_ReceiverC.inl + } +} + +project(AMI_Hello_Base_Hello_Receiver_exec) : ciao_executor, messaging { + after += AMI_Hello_Base_Hello_Receiver_l_stub AMI_Hello_Base_Hello_Receiver_stub AMI_Hello_stub AMI_Hello_exec + sharedname = Hello_Receiver_exec + libs += Hello_Receiver_stub Hello_Receiver_lem_stub Hello_stub Hello_exec + libpaths += ../lib + libout = ../lib + dynamicflags = HELLO_RECEIVER_EXEC_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_Receiver_exec.cpp + } + + Header_Files { + Hello_Receiver_exec.h + Hello_Receiver_exec_export.h + } + + Inline_Files { + } +} + +project(AMI_Hello_Base_Hello_Receiver_svnt) : ciao_servant, messaging { + after += AMI_Hello_Base_skel AMI_Hello_Base_Hello_Receiver_l_stub AMI_Hello_stub AMI_Hello_exec AMI_Hello_skel + sharedname = Hello_Receiver_svnt + libs += Hello_Receiver_stub Hello_Receiver_lem_stub \ + Hello_skel \ + Hello_stub \ + Hello_exec + libpaths += ../lib + libout = ../lib + dynamicflags = HELLO_RECEIVER_SVNT_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_ReceiverS.cpp + Hello_Receiver_svnt.cpp + } + + Header_Files { + Hello_ReceiverS.h + Hello_Receiver_svnt.h + Hello_Receiver_svnt_export.h + } + + Inline_Files { + Hello_ReceiverS.inl + } +} + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp new file mode 100644 index 00000000000..7140896a887 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp @@ -0,0 +1,156 @@ +// -*- C++ -*- +// $Id$ + +#include "Hello_Receiver_exec.h" +#include "ace/OS_NS_unistd.h" + +namespace CIAO_Hello_Receiver_Impl +{ + MyFoo_exec_i::MyFoo_exec_i (void) : get_rw_ (false), get_ro_ (false) + { + } + + MyFoo_exec_i::~MyFoo_exec_i (void) + { + } + + ::CORBA::Long + MyFoo_exec_i::foo (const char * in_str, ::CORBA::String_out answer) + { + if (ACE_OS::strlen (in_str) == 0) + { + printf ("Receiver (FOO) :\tEMPTY string received -> throw internal excep with id <42> and errorstring \n"); + Hello::InternalError ex (42, "Hello world"); + throw ex; + } + else + { + printf ("Receiver (FOO) :\tReceived string <%s>\n", in_str); + ACE_OS::sleep (ACE_OS::rand () % 2); + answer = CORBA::string_dup ("This is my answer : Hi"); + return ACE_OS::rand () % 100; + } + } + + void + MyFoo_exec_i::hello (::CORBA::Long_out answer) + { + printf ("Receiver (HELLO) :\tReceived request\n"); + ACE_OS::sleep (ACE_OS::rand () % 2); + answer = ACE_OS::rand () % 100; + } + + ::CORBA::Short + MyFoo_exec_i::rw_attrib () + { + printf ("Receiver (RW_ATTRIB) :\tReceived request\n"); + if (this->get_rw_) + { + this->get_rw_ = false; + printf ("Receiver (FOO) :\tSecond get rw_attrib received -> throw internal excep with id <42> and errorstring \n"); + Hello::InternalError ex (42, "Hello world"); + throw ex; + } + else + { + ACE_OS::sleep (ACE_OS::rand () % 2); + this->get_rw_ = true; + } + return ACE_OS::rand () % 100; + } + + void + MyFoo_exec_i::rw_attrib (::CORBA::Short new_value) + { + if (new_value == 0) + { + printf ("Receiver (RW_ATTRIB) :\tnew_value == 0 -> throw internal excep with id <42> and errorstring \n"); + Hello::InternalError ex (42, "Hello world"); + throw ex; + } + else + { + printf ("Receiver (RW_ATTRIB) :\tSet <%d>\n", new_value); + ACE_OS::sleep (ACE_OS::rand () % 2); + } + } + + CORBA::Short + MyFoo_exec_i::ro_attrib () + { + printf ("Receiver (RO_ATTRIB) :\tReceived request\n"); + if (this->get_ro_) + { + this->get_ro_ = false; + printf ("Receiver (FOO) :\tSecond get ro_attrib received -> throw internal excep with id <42> and errorstring \n"); + Hello::InternalError ex (42, "Hello world"); + throw ex; + } + else + { + ACE_OS::sleep (ACE_OS::rand () % 2); + this->get_ro_ = true; + } + return ACE_OS::rand () % 100; + } + + Receiver_exec_i::Receiver_exec_i (void) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + ::Hello::CCM_MyFoo_ptr + Receiver_exec_i::get_do_my_foo (void) + { + return new MyFoo_exec_i (); + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = ::Hello::CCM_Receiver_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" ::Components::EnterpriseComponent_ptr + create_Hello_AMI_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + Receiver_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } +} diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h new file mode 100644 index 00000000000..e785da3f319 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h @@ -0,0 +1,67 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_HELLO_RECEIVER_EXEC_H_ +#define CIAO_HELLO_RECEIVER_EXEC_H_ + +#include "Hello_ReceiverEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "Hello_Receiver_exec_export.h" + +namespace CIAO_Hello_Receiver_Impl +{ + class MyFoo_exec_i + : public virtual ::Hello::CCM_MyFoo, + public virtual ::CORBA::LocalObject + { + public: + MyFoo_exec_i (void); + virtual ~MyFoo_exec_i (void); + + virtual ::CORBA::Long foo (const char * in_str, ::CORBA::String_out answer); + + virtual void hello (::CORBA::Long_out answer); + + virtual ::CORBA::Short rw_attrib (); + + virtual void rw_attrib (::CORBA::Short new_value); + + virtual CORBA::Short ro_attrib (); + private: + bool get_rw_; + bool get_ro_; + }; + + class Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + virtual ::Hello::CCM_MyFoo_ptr get_do_my_foo (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Hello::CCM_Receiver_Context_var context_; + }; + + extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_AMI_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl new file mode 100644 index 00000000000..0ae341c48df --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl @@ -0,0 +1,24 @@ +// $Id$ + +#ifndef HELLO_SENDER_IDL +#define HELLO_SENDER_IDL + +#include + +#include "Base/HelloE.idl" +#include "Connector/Hello_Base.idl" +#include "Connector/Hello_BaseE.idl" + +module Hello +{ + component Sender + { + /// For asynch invocation. @@implied + uses AMI_MyFoo sendc_run_my_foo; + + /// For synchronous invocation + uses MyFoo run_my_foo; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc new file mode 100644 index 00000000000..d95ec8dc391 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc @@ -0,0 +1,139 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Hello_Base Hello_Sender" + +project(AMI_Hello_Base_Hello_Sender_idl_gen) : componentidldefaults { + after += Conn_Hello_Base_idl_gen AMI_Hello_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_SENDER_STUB_Export \ + -Wb,stub_export_include=Hello_Sender_stub_export.h \ + -Wb,skel_export_macro=HELLO_SENDER_SVNT_Export \ + -Wb,skel_export_include=Hello_Sender_svnt_export.h \ + -Wb,exec_export_macro=HELLO_SENDER_EXEC_Export \ + -Wb,exec_export_include=Hello_Sender_exec_export.h \ + -I.. + + IDL_Files { + Hello_Sender.idl + } +} + +project(AMI_Hello_Base_Hello_Sender_lem_gen) : ciaoidldefaults { + after += AMI_Hello_Base_Hello_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Hello_Sender_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Hello_SenderE.idl + } +} + +project(AMI_Hello_Base_Hello_Sender_lem_stub) : ccm_svnt, ami { + after += AMI_Hello_Base_Hello_Sender_lem_gen AMI_Hello_stub Conn_Hello_Base_stub + libs += Hello_stub Conn_Hello_stub + libpaths += ../lib + libout = ../lib + sharedname = Hello_Sender_lem_stub + dynamicflags = HELLO_SENDER_LEM_STUB_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_SenderEC.cpp + } + + Header_Files { + Hello_SenderEC.h + Hello_Sender_lem_stub_export.h + } + + Inline_Files { + Hello_SenderEC.inl + } +} + +project(AMI_Hello_Base_Hello_Sender_stub) : ccm_stub, ami { + after += AMI_Hello_Base_Hello_Sender_idl_gen AMI_Hello_Base_stub AMI_Hello_stub Conn_Hello_Base_stub + libs += Hello_stub Conn_Hello_stub + libpaths += ../lib + libout = ../lib + sharedname = Hello_Sender_stub + dynamicflags = HELLO_SENDER_STUB_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_SenderC.cpp + } + + Header_Files { + Hello_SenderC.h + Hello_Sender_stub_export.h + } + + Inline_Files { + Hello_SenderC.inl + } +} + +project(AMI_Hello_Base_Hello_Sender_exec) : ciao_executor, ami { + after += AMI_Hello_Base_Hello_Sender_lem_stub AMI_Hello_Base_Hello_Sender_stub AMI_Hello_Base_exec AMI_Hello_exec Conn_Hello_Base_stub + sharedname = Hello_Sender_exec + libs += Hello_Sender_stub Hello_Sender_lem_stub Hello_stub Hello_exec Hello_stub Conn_Hello_stub Conn_Hello_exec + libpaths += ../lib + libout = ../lib + dynamicflags = HELLO_SENDER_EXEC_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_Sender_exec.cpp + } + + Header_Files { + Hello_Sender_exec.h + Hello_Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(AMI_Hello_Base_Hello_Sender_svnt) : ciao_servant, ami { + after += AMI_Hello_Base_skel AMI_Hello_Base_Hello_Sender_lem_stub AMI_Hello_Base_exec AMI_Hello_exec Conn_Hello_Base_skel Conn_Hello_Base_stub Conn_Hello_Base_exec + sharedname = Hello_Sender_svnt + libs += Hello_Sender_stub Hello_Sender_lem_stub \ + Conn_Hello_stub \ + Conn_Hello_exec \ + Hello_skel \ + Hello_stub \ + Hello_exec + libpaths += ../lib + libout = ../lib + dynamicflags = HELLO_SENDER_SVNT_BUILD_DLL + includes += .. + IDL_Files { + } + + Source_Files { + Hello_SenderS.cpp + Hello_Sender_svnt.cpp + } + + Header_Files { + Hello_SenderS.h + Hello_Sender_svnt.h + Hello_Sender_svnt_export.h + } + + Inline_Files { + Hello_SenderS.inl + } +} + + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp new file mode 100644 index 00000000000..1050cb0deda --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp @@ -0,0 +1,333 @@ +// -*- C++ -*- +// $Id$ + +#include "Hello_Sender_exec.h" +#include "ace/OS_NS_unistd.h" + +namespace CIAO_Hello_Sender_Impl +{ + void HandleException ( + long id, + const char* error_string, + const char* func) + { + printf ("Sender (%s) :\tCallback except from AMI\n", func); + if (id != 42) + { + printf ("ERROR (%s) :\tReceived unexpected ID received in except handler\n", + func); + return; + } + if (ACE_OS::strcmp (error_string, "Hello world") != 0) + { + printf ("ERROR (%s) :\tReceived unexpected error string received in except handler\n", + func); + return; + } + printf ("OK (%s) :\tReceived the correct except parameters.\n", func); + } + + void HandleException ( + ::CCM_AMI::ExceptionHolder_ptr excep_holder, + const char* func) + { + printf ("Sender (%s) :\tHandle except AMI\n", func); + try + { + excep_holder->raise_exception (); + } + catch (const Hello::InternalError& ex) + { + ACE_DEBUG ((LM_DEBUG, "Sender: Caught the correct except type <%d> <%C>\n", + ex.id, ex.error_string.in ())); + HandleException (ex.id, ex.error_string.in (), func); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: Caught unexpected except:"); + } + } + + //============================================================ + // Facet Executor Implementation Class: MyFoo_callback_exec_i + //============================================================ + MyFoo_callback_exec_i::MyFoo_callback_exec_i (void) + { + } + + MyFoo_callback_exec_i::~MyFoo_callback_exec_i (void) + { + } + + //============================================================ + // Operations from ::CCM_AMI::MyFoo_callback + //============================================================ + + // FOO methods + void + MyFoo_callback_exec_i::foo ( + ::CORBA::Long ami_return_val, + const char * answer) + { + printf ("Sender (FOO) :\tCallback from AMI : result <%d> answer <%s>\n", ami_return_val, answer); + } + + void + MyFoo_callback_exec_i::foo_excep ( + ::CCM_AMI::ExceptionHolder * excep_holder) + { + HandleException (excep_holder, "FOO"); + } + + // HELLO methods + void + MyFoo_callback_exec_i::hello ( + ::CORBA::Long answer) + { + printf ("Sender (FOO) :\tCallback from AMI (HELLO) : answer <%d>\n", answer); + } + + void + MyFoo_callback_exec_i::hello_excep ( + ::CCM_AMI::ExceptionHolder * excep_holder) + { + HandleException (excep_holder, "HELLO"); + } + + //GET rw_attrib Reply Handler + void + MyFoo_callback_exec_i::get_rw_attrib ( + ::CORBA::Short ami_return_val) + { + printf ("Sender (RW_ATTRIB) :\tCallback from AMI (RW_ATTRIB) : answer <%d>\n", ami_return_val); + } + + void + MyFoo_callback_exec_i::get_rw_attrib_excep ( + ::CCM_AMI::ExceptionHolder * excep_holder) + { + HandleException (excep_holder, "GET RW_ATTRIB"); + } + + //SET rw_attrib Reply Handler + void + MyFoo_callback_exec_i::set_rw_attrib () + { + printf ("Sender (RW_ATTRIB) :\tCallback from AMI (RW_ATTRIB)\n"); + } + + void + MyFoo_callback_exec_i::set_rw_attrib_excep ( + ::CCM_AMI::ExceptionHolder * excep_holder) + { + HandleException (excep_holder, "SET_RW_ATTRIB"); + } + + //ro_attrib Reply Handler + void + MyFoo_callback_exec_i::get_ro_attrib ( + ::CORBA::Short ami_return_val) + { + printf ("Sender (RO_ATTRIB) :\tCallback from AMI (RO_ATTRIB) : answer <%d>\n", ami_return_val); + } + + void + MyFoo_callback_exec_i::get_ro_attrib_excep ( + ::CCM_AMI::ExceptionHolder * excep_holder) + { + HandleException (excep_holder, "RO_ATTRIB"); + } + + //============================================================ + // Worker thread for asynchronous invocations for MyFoo + //============================================================ + asynch_foo_generator::asynch_foo_generator (::Hello::AMI_MyFoo_ptr my_foo_ami) + : my_foo_ami_ (::Hello::AMI_MyFoo::_duplicate (my_foo_ami)) + { + } + + int asynch_foo_generator::svc () + { + ACE_OS::sleep (3); + for (int i = 0; i < 5; ++i) + { + if (CORBA::is_nil (my_foo_ami_)) + { + printf ("ERROR Sender (ASYNCH) :\tfoo_ami is NIL !!!\n"); + return 1; + } + else + { + printf ("Sender (ASYNCH) :\tInvoke Asynchronous calls\n"); + my_foo_ami_->sendc_foo (new MyFoo_callback_exec_i (), "Do something asynchronous"); + my_foo_ami_->sendc_hello (new MyFoo_callback_exec_i ()); + my_foo_ami_->sendc_get_rw_attrib(new MyFoo_callback_exec_i ()); + my_foo_ami_->sendc_get_rw_attrib(new MyFoo_callback_exec_i ()); + my_foo_ami_->sendc_set_rw_attrib(new MyFoo_callback_exec_i (), 15); + my_foo_ami_->sendc_get_ro_attrib(new MyFoo_callback_exec_i ()); + my_foo_ami_->sendc_get_ro_attrib(new MyFoo_callback_exec_i ()); + printf ("Sender (ASYNCH) :\tInvoked Asynchronous calls\n"); + } + } + printf ("Sender (ASYNCH) :\tInvoke Asynchronous calls to test except handling\n"); + my_foo_ami_->sendc_foo (new MyFoo_callback_exec_i (), ""); + my_foo_ami_->sendc_set_rw_attrib(new MyFoo_callback_exec_i (), 0); + printf ("Sender (ASYNCH) :\tInvoked Asynchronous call.\n"); + return 0; + } + + //============================================================ + // Worker thread for synchronous invocations for MyFoo + //============================================================ + synch_foo_generator::synch_foo_generator (::Hello::MyFoo_ptr my_foo_ami) + : my_foo_ami_ (::Hello::MyFoo::_duplicate (my_foo_ami)) + { + } + + int synch_foo_generator::svc () + { + ACE_OS::sleep (3); + //run synch calls + char * out_str = 0; + for (int i = 0; i < 5; ++i) + { + CORBA::Long result = my_foo_ami_->foo ("Do something synchronous", out_str); + printf ("Sender (SYNCH):\tInvoked synchronous call (FOO) result <%d> answer <%s>\n", result, out_str); + + CORBA::Long answer; + my_foo_ami_->hello (answer); + printf ("Sender (SYNCH):\tInvoked synchronous call (HELLO) answer <%d>\n", answer); + + try + { + CORBA::Short rw_attrib = my_foo_ami_->rw_attrib (); + printf ("Sender (SYNCH):\tInvoked synchronous call (GET_RW_ATTRIB) answer <%d>\n", rw_attrib); + } + catch (const Hello::InternalError& ex) + { + printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ()); + } + + try + { + my_foo_ami_->rw_attrib (15); + printf ("Sender (SYNCH):\tInvoked synchronous call (SET_RW_ATTRIB) to <15>\n"); + } + catch (const Hello::InternalError& ex) + { + printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ()); + } + + try + { + CORBA::Short ro_attrib = my_foo_ami_->ro_attrib (); + printf ("Sender (SYNCH):\tInvoked synchronous call (GET_RO_ATTRIB) answer <%d>\n", ro_attrib); + } + catch (const Hello::InternalError& ex) + { + printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ()); + } + } + try + { + CORBA::Long result = my_foo_ami_->foo ("", out_str); + printf ("Sender (SYNCH) :\tInvoked synchronous call result <%d> answer <%s>\n", result, out_str); + } + catch (const Hello::InternalError& ex) + { + printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ()); + } + + try + { + my_foo_ami_->rw_attrib (0); + printf ("Sender (SYNCH) :\tInvoked synchronous call rw_attrib\n"); + } + catch (const Hello::InternalError& ex) + { + printf ("Sender (SYNCH RW_ATTRIB) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ()); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: Caught unexpected except:"); + } + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : global_foo_callback_ (0) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + + // Component attributes. + + // Port operations. + // Operations from Components::SessionComponent. + + void + Sender_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Hello::CCM_Sender_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + ::Hello::AMI_MyFoo_var asynch_foo = + this->context_->get_connection_sendc_run_my_foo(); + asynch_foo_generator* asynch_foo_gen = + new asynch_foo_generator (asynch_foo); + asynch_foo_gen->activate (THR_NEW_LWP | THR_JOINABLE, 1); + + ::Hello::MyFoo_var synch_foo = + this->context_->get_connection_run_my_foo (); + synch_foo_generator* synch_foo_gen = + new synch_foo_generator (synch_foo); + synch_foo_gen->activate (THR_NEW_LWP | THR_JOINABLE, 1); + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" ::Components::EnterpriseComponent_ptr + create_Hello_AMI_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + Sender_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h new file mode 100644 index 00000000000..e23deab200f --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h @@ -0,0 +1,117 @@ +// -*- C++ -*- +// +// $Id$ + +#ifndef CIAO_HELLO_SENDER_EXEC_H_ +#define CIAO_HELLO_SENDER_EXEC_H_ + +#include "Hello_SenderEC.h" +#include "Hello_Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" + +namespace CIAO_Hello_Sender_Impl +{ + /// Common exception handlers + void HandleException ( + long id, + const char* error_string, + const char* func); + + void HandleException ( + ::Messaging::ExceptionHolder * excep_holder, + const char* func); + + // Worker thread for asynchronous invocations + class asynch_foo_generator : public virtual ACE_Task_Base + { + public: + asynch_foo_generator (::Hello::AMI_MyFoo_ptr my_foo_ami); + + virtual int svc (void); + + private: + ::Hello::AMI_MyFoo_var my_foo_ami_; + }; + + // Worker thread for synchronous invocations + class synch_foo_generator : public virtual ACE_Task_Base + { + public: + synch_foo_generator (::Hello::MyFoo_ptr my_foo_ami); + + virtual int svc (void); + + private: + ::Hello::MyFoo_var my_foo_ami_; + }; + + class MyFoo_callback_exec_i + : public virtual ::Hello::CCM_AMI_MyFooCallback, + public virtual ::CORBA::LocalObject + { + public: + MyFoo_callback_exec_i (void); + virtual ~MyFoo_callback_exec_i (void); + + virtual void foo (::CORBA::Long ami_return_val, const char * answer); + + virtual void foo_excep (::CCM_AMI::ExceptionHolder_ptr excep_holder); + + // Hello Reply Handler + virtual void hello (::CORBA::Long answer); + + virtual void hello_excep (::CCM_AMI::ExceptionHolder_ptr excep_holder); + + //GET rw_attrib Reply Handler + virtual void get_rw_attrib ( + ::CORBA::Short ami_return_val); + virtual void get_rw_attrib_excep ( + ::CCM_AMI::ExceptionHolder_ptr excep_holder); + + //SET rw_attrib Reply Handler + virtual void set_rw_attrib (void); + virtual void set_rw_attrib_excep ( + ::CCM_AMI::ExceptionHolder_ptr excep_holder); + + //ro_attrib Reply Handler + virtual void get_ro_attrib ( + ::CORBA::Short ami_return_val); + virtual void get_ro_attrib_excep ( + ::CCM_AMI::ExceptionHolder_ptr excep_holder); + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Hello::CCM_Sender_Context_var context_; + MyFoo_callback_exec_i* global_foo_callback_; + }; + + extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_AMI_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp new file mode 100644 index 00000000000..d1fdbef956a --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp @@ -0,0 +1,373 @@ + + + + 6D382DAE-9024-4C4D-B91B-A0F9176AFACF + + + Hello_ReceiverHomeImplementation + + + + + component factory + + + tk_string + + + create_Hello_AMI_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_exec + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_svnt + + + + + + + Hello_SenderHomeImplementation + + + + + component factory + + + tk_string + + + create_Hello_AMI_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello.ImplementationArtifacts.SenderArtifacts.Sender_exec + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello.ImplementationArtifacts.SenderArtifacts.Sender_svnt + + + + + + + Hello_AMIHomeImplementation + + + + + component factory + + + tk_string + + + create_Hello_AMI_AMI_Impl + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello.ImplementationArtifacts.AMIArtifacts.AMI_exec + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_AMI_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello.ImplementationArtifacts.AMIArtifacts.AMI_svnt + + + + + + + Hello.ComponentImplementations.HelloImplementation.Hello.Receiver + Receiver + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + Receiver.ior + + + + + + + Hello.ComponentImplementations.HelloImplementation.Hello.Sender + Sender + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + Sender.ior + + + + + + + Hello.ComponentImplementations.HelloImplementation.Hello.AMI + Sender + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + AMI.ior + + + + + + + run_asynch_foo_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + sendc_run_my_foo + false + SimplexReceptacle + + + + sendc_run_my_foo + true + Facet + + + + + + do_foo_connection + + do_my_foo + true + Facet + + + + run_my_foo + false + SimplexReceptacle + + + + + + synch_foo_connection + + do_my_foo + true + Facet + + + + run_my_foo + false + SimplexReceptacle + + + + + + Hello.ImplementationArtifacts.AMIArtifacts.AMI_svnt + + + AMI_svnt + + entryPoint + + + tk_string + + + create_Hello_AMI_AMIHome_Servant + + + + + + + Hello.ImplementationArtifacts.AMIArtifacts.AMI_exec + + + AMI_exec + + entryPoint + + + tk_string + + + create_Hello_AMI_AMIHome_Impl + + + + + + + Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_svnt + + + Hello_Receiver_svnt + + entryPoint + + + tk_string + + + create_Hello_AMI_ReceiverHome_Servant + + + + + + + Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_exec + + + Hello_Receiver_exec + + entryPoint + + + tk_string + + + create_Hello_AMI_ReceiverHome_Impl + + + + + + + Hello.ImplementationArtifacts.SenderArtifacts.Sender_svnt + + + Hello_Sender_svnt + + entryPoint + + + tk_string + + + create_Hello_AMI_SenderHome_Servant + + + + + + + Hello.ImplementationArtifacts.SenderArtifacts.Sender_exec + + + Hello_Sender_exec + + entryPoint + + + tk_string + + + create_Hello_AMI_SenderHome_Impl + + + + + + diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl new file mode 100755 index 00000000000..58e4eb77196 --- /dev/null +++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 3; +@ports = ( 60000, 60001 ); +@iorbases = ( "Sender.ior", "Receiver.ior", "AMI.ior" ); +@iorfiles = 0; +@nodenames = ( "Sender", "Receiver" ); + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); + +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 90 seconds to allow task to complete\n"; +sleep (90); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf b/modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf new file mode 100644 index 00000000000..26e72bcd894 Binary files /dev/null and b/modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf differ diff --git a/modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf b/modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf new file mode 100644 index 00000000000..69c23485067 Binary files /dev/null and b/modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf differ diff --git a/modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf b/modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf new file mode 100644 index 00000000000..038b2aa1e20 Binary files /dev/null and b/modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf differ diff --git a/modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml b/modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml new file mode 100644 index 00000000000..3c2fe44e581 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml @@ -0,0 +1,254 @@ + + + + + + VOLATILE_DURABILITY_QOS + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + 0 + 0 + + + + AUTOMATIC_LIVELINESS_QOS + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + BEST_EFFORT_RELIABILITY_QOS + + 0 + 100000000 + + + + BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS + + + KEEP_LAST_HISTORY_QOS + 1 + + + LENGTH_UNLIMITED + LENGTH_UNLIMITED + LENGTH_UNLIMITED + + + + + + SHARED_OWNERSHIP_QOS + + + + 0 + 0 + + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + + VOLATILE_DURABILITY_QOS + + + + 0 + 0 + + KEEP_LAST_HISTORY_QOS + 1 + LENGTH_UNLIMITED + LENGTH_UNLIMITED + LENGTH_UNLIMITED + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + 0 + 0 + + + + AUTOMATIC_LIVELINESS_QOS + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + RELIABLE_RELIABILITY_QOS + + 0 + 100000000 + + + + BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS + + + KEEP_LAST_HISTORY_QOS + 1 + + + LENGTH_UNLIMITED + LENGTH_UNLIMITED + LENGTH_UNLIMITED + + + 0 + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + + + SHARED_OWNERSHIP_QOS + + + 0 + + + true + + + + + + + + true + + + + + INSTANCE_PRESENTATION_QOS + false + false + + + + + + + + + true + + + + + INSTANCE_PRESENTATION_QOS + false + false + + + + + + + + + true + + + + + + + + VOLATILE_DURABILITY_QOS + + + + 0 + 0 + + KEEP_LAST_HISTORY_QOS + 1 + LENGTH_UNLIMITED + LENGTH_UNLIMITED + LENGTH_UNLIMITED + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + 0 + 0 + + + + AUTOMATIC_LIVELINESS_QOS + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + BEST_EFFORT_RELIABILITY_QOS + + 0 + 100000000 + + + + BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS + + + KEEP_LAST_HISTORY_QOS + 1 + + + LENGTH_UNLIMITED + LENGTH_UNLIMITED + LENGTH_UNLIMITED + + + 0 + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + SHARED_OWNERSHIP_QOS + + + + diff --git a/modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd b/modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd new file mode 100644 index 00000000000..62a3a4731cb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml b/modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml new file mode 100644 index 00000000000..9fec3ed3ac1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml @@ -0,0 +1,567 @@ + + + + Can be an interface which depends on the template parameters. Might be given in form of an interface template. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods b/modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods new file mode 100644 index 00000000000..f3d5bde0469 Binary files /dev/null and b/modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods differ diff --git a/modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf b/modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf new file mode 100644 index 00000000000..ed6164d2e85 Binary files /dev/null and b/modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf differ diff --git a/modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl new file mode 100644 index 00000000000..1dcae88e5bb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl @@ -0,0 +1,396 @@ +// $Id$ + +#include "dds_rtf2_dcps.idl" + +module CCM_DDS { + + // =================================================================================== + // Non-typed part + // (here are placed all the constructs that are not dependent on the data type) + // =================================================================================== + // --------------------------- + // Enums, structs and Typedefs + // --------------------------- + typedef unsigned long DataNumber_t; // count or index of data + typedef sequence DataNumberSeq; + + const DataNumber_t UNLIMITED = 0; + + enum AccessStatus { + FRESH_INFO, + ALREADY_SEEN + }; + + enum InstanceStatus { // at sample time, as perceived by the component + INSTANCE_CREATED, + INSTANCE_FILTERED_IN, + INSTANCE_UPDATED, + INSTANCE_FILTERED_OUT, + INSTANCE_DELETED + }; + + struct ReadInfo { + DDS::InstanceHandle_t instance_handle; + DDS::Time_t source_timestamp; + AccessStatus access_status; + InstanceStatus instance_status; + }; + typedef sequence ReadInfoSeq; + + struct QueryFilter { + string query; + DDS::StringSeq query_parameters; + }; + + // Data Listener control + // --------------------- + enum ListenerMode { + NOT_ENABLED, + ONE_BY_ONE, + MANY_BY_MANY + }; + + // ---------- + // Exceptions + // ---------- + exception AlreadyCreated { + DataNumberSeq indexes; // of the erroneous + }; + + exception NonExistent{ + DataNumberSeq indexes; // of the erroneous + }; + + exception InternalError{ + DDS::ReturnCode_t error_code; // DDS codes that are relevant: + // ERROR (1); + // UNSUPPORTED (2); + // BAD_PARAMETER (3) + // PRECONDITION_NOT_MET (4) + // OUT_OF_RESOURCE (5) + DataNumber_t index; // of the erroneous + }; + + exception NonChangeable {}; + + // ---------- + // Interfaces + // ---------- + + // Listener Control + // ---------------- + local interface DataListenerControl { + attribute ListenerMode mode; // default NOT_ENABLED + attribute DataNumber_t max_delivered_data; // default 0 (no limit) + }; + + local interface StateListenerControl : DataListenerControl { + attribute boolean is_filter_interpreted; // default FALSE + }; + + // Status Access + // ------------- + local interface PortStatusListener { // status that are relevant to the component + void on_requested_deadline_missed( + in DDS::DataReader the_reader, + in DDS::RequestedDeadlineMissedStatus status); + void on_sample_lost( + in DDS::DataReader the_reader, + in DDS::SampleLostStatus status); + }; + + local interface ConnectorStatusListener { // status that are relevant system-wide + void on_inconsistent_topic( + in DDS::Topic the_topic, + in DDS::InconsistentTopicStatus status); + void on_requested_incompatible_qos( + in DDS::DataReader the_reader, + in DDS::RequestedIncompatibleQosStatus status); + void on_sample_rejected( + in DDS::DataReader the_reader, + in DDS::SampleRejectedStatus status); + void on_offered_deadline_missed( + in DDS::DataWriter the_writer, + in DDS::OfferedDeadlineMissedStatus status); + void on_offered_incompatible_qos( + in DDS::DataWriter the_writer, + in DDS::OfferedIncompatibleQosStatus status); + void on_unexpected_status ( + in DDS::Entity the_entity, + in DDS::StatusKind status_kind); + }; + + // --------------- + // Connector bases + // --------------- + connector DDS_Base { + uses ConnectorStatusListener error_listener; + attribute DDS::DomainId_t domain_id + setraises (NonChangeable); + attribute string qos_profile // File URL or XML string + setraises (NonChangeable); + }; + + connector DDS_TopicBase : DDS_Base { + attribute string topic_name + setraises (NonChangeable); + attribute DDS::StringSeq key_fields + setraises (NonChangeable); + }; + + // =================================================================================== + // Typed sub-part + // (here are placed all the construct that are depending on the data type + // either directly or indirectly) + // =================================================================================== + + module Typed TSeq> { + // Gathers all the constructs that are dependent on the data type (T), + // either directly -- interfaces making use of T or TSeq, + // or indirectly -- porttypes using or providing those intefaces. + // TSeq is passed as a second parameter to avoid creating a new sequence type. + + // ------------------------------------- + // Interfaces to be 'used' or 'provided' + // ------------------------------------- + + // Data access - publishing side + // ----------------------------- + + // -- InstanceHandle Manager + abstract interface InstanceHandleManager { + DDS::InstanceHandle_t register_instance (in T datum) + raises (InternalError); + void unregister_instance (in datum, in DDS::InstanceHandle_t instance_handle) + raises (InternalError); + }; + + // -- Writer: when the instance lifecycle is not a concern + local interface Writer : InstanceHandleManager { + void write_one (in T datum, in DDS::InstanceHandle_t instance_handle) + raises (InternalError); + void write_many (in TSeq data) + raises (InternalError); + attribute boolean is_coherent_write; // FALSE by default + // behavior + // --------- + // - the handle is exactly managed as by DDS (cf. DDS spec for more details) + // - attempt to write_many is stopped at the first error + // - if is_coherent_write, DDS write orders issued by a write_many + // are placed between begin/end coherent updates (even if an error occurs) + }; + + // -- Updater: when the instance lifecycle is a concern + local interface Updater : InstanceHandleManager { + void create_one (in T datum) + raises (AlreadyCreated, + InternalError); + void update_one (in T datum, in DDS::InstanceHandle_t instance_handle) + raises (NonExistent, + InternalError); + void delete_one (in T datum,in DDS::InstanceHandle_t instance_handle) + raises (NonExistent, + InternalError); + + void create_many (in TSeq data) + raises (AlreadyCreated, + InternalError); + void update_many (in TSeq data) + raises (NonExistent, + InternalError); + void delete_many (in TSeq data) + raises (NonExistent, + InternalError); + + readonly attribute boolean is_global_scope; // FALSE by default + attribute boolean is_coherent_write; // FALSE by default + + // behavior + // -------- + // - the handle is exactly managed as by DDS (cf. DDS spec for more details) + // - exceptions AlreadyCreated or NonExistent are raised at least if a local + // conflict exists; in addition if is_global_scope is true, the test on + // existence attempts to take into account the instances created outside + // - note: this check requires to previously attempt to read (not free) + // - note: this check is not 100% guaranteed as a creation or a deletion + // may occur in the short time between the check and the DDS order + // - For *-many operations: + // - global check is performed before actual write or dispose + // (in case of error, all the erroneous instances are reported + // in the exception) + // - attempt to DDS write or dispose is stopped at the first error + // - if is_coherent_write, DDS orders resulting from a *_many operation + // are placed between begin/end coherent updates (even if an error + // occurs) + }; + + // Data access - subscribing side + // ------------------------------ + + // -- Reader: to simply access to the available data (no wait) + local interface Reader { + void read_last (out TSeq data, out ReadInfoSeq infos) + raises (InternalError); + void read_all (out TSeq data, out ReadInfoSeq infos) + raises (InternalError); + void read_one_last (inout T datum, out ReadInfo info, + in DDS::InstanceHandle_t instance_handle) + raises (NonExistent, + InternalError); + void read_one_all (in T datum, out TSeq data, out ReadInfoSeq infos, + in DDS::InstanceHandle_t instance_handle) + raises (NonExistent, + InternalError); + attribute QueryFilter filter + setraises (InternalError); + // behavior + // -------- + // - read operations are performed with the following parameters + // - READ or NO_READ + // - NEW or NOT_NEW + // - ALIVE + // - through the query as specified in the filter ("" means no query) + // - data returned: + // - read_last returns for each living instance, its last sample + // - read_all returns all the samples of all instances + // ordered by instance first and then by sample + // - read_one_last returns the last sample of the given instance + // - read_one_all returns all the samples for the given instance + // - read_one operations use the instance_handle the same way + // the Writer or Updater *_one operations do + }; + + // -- Getter: to get new data (and wait for) + local interface Getter { + boolean get_one (out T datum, out ReadInfo info) + raises (InternalError); + boolean get_many (out TSeq data, out ReadInfoSeq infos) + raises (InternalError); + attribute DDS::Duration_t time_out; + attribute DataNumber_t max_delivered_data; // default 0 (no limit) + // behavior + // -------- + // - get operations are performed with the following parameters + // - NO_READ + // - NEW or NOT_NEW + // - ALIVE or NOT_ALIVE + // - through the query as specified in the associated Reader + // - within the time limit specified in time_out + // - all operations returns TRUE if data are provided + // or FALSE if time-out occurred + // - data returned: + // - get_one returns each read sample one by one + // - get_many returns all available samples within the + // max_delivered_data limit + }; + + // -- Listener: similar to a Getter but in push mode + local interface Listener { + void on_one_data (in T datum, in ReadInfo info); + void on_many_data (in TSeq data, in ReadInfoSeq infos); + // behavior + // -------- + // - on_one_data() trigered is the mode of the associated listener control + // is ONE_BY_ONE (then similar to a get_one(), except that in push mode + // instead of pull mode) + // - on_many_data() triggered if the listener mode is MANY_BY_MANY (then + // similar to get_many() but in push mode) + // - query filter (if any) in the associated Reader + }; + + // -- StateListener: listener to be notified based on the instance lifecycle + local interface StateListener { + void on_creation (in T datum, in ReadInfo info); + void on_one_update (in T datum, in ReadInfo info); + void on_many_updates (in TSeq data, in ReadInfoSeq infos); + void on_deletion (in T datum, in ReadInfo info); + // behavior + // -------- + // - no operations are trigerred if the mode of the associated listener + // control is NOT_ENABLED + // - on_creation() is triggered if the instance is considered as new in the + // component scope; note that in case there is a filter and the attribute + // is_filter_interpreted of the listener control is TRUE, this gathers also + // the case when the instance is filtered-in. + // - on_delation() is triggered if the instance is no more existing; note + // that in case there is a filter and the attribute + // is_filter_interpreted of the listener control is TRUE, this gathers + // also the case when the instance is filtered-out + // - on_one_update() is trigrered if neither on_creation() nor on_deletion() + // are triggered and the mode of the associated listener control is + // ONE_BY_ONE + // - on_many_updates()is triggered if neither on_creation() nor on_deletion() + // are triggered and the mode of the associated listener control is + // MANY_BY_MANY; the number of returned samples is within the limits of + // max_delivered_data attribute of the associated listener control. + // - query filter (if any) in the associated Reader + }; + + + // --------- + // DDS Ports + // --------- + + porttype DDS_Write { + uses Writer data; + uses DDS::DataWriter dds_entity; + }; + + porttype DDS_Update { + uses Updater data; + uses DDS::DataWriter dds_entity; + }; + + porttype DDS_Read { + uses Reader data; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + porttype DDS_Get { + uses Reader data; + uses Getter fresh_data; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + porttype DDS_Listen { + uses Reader data; + uses DataListenerControl data_control; + provides Listener data_listener; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + porttype DDS_StateListen { + uses Reader data; + uses StateListenerControl data_control; + provides StateListener data_listener; + uses DDS::DataReader dds_entity; + provides PortStatusListener status; + }; + + // ---------------------------- + // Connectors + // (Correspond to DDS patterns) + // ---------------------------- + + connector DDS_State : DDS_TopicBase { + mirrorport DDS_Update observable; + mirrorport DDS_Read passive_observer; + mirrorport DDS_Get pull_observer; + mirrorport DDS_Listen push_observer; + mirrorport DDS_StateListen push_state_observer; + }; + + connector DDS_Event : DDS_TopicBase { + mirrorport DDS_Write supplier; + mirrorport DDS_Get pull_consumer; + mirrorport DDS_Listen push_consumer; + }; + }; + }; + + + + diff --git a/modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl new file mode 100644 index 00000000000..42b65c36406 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl @@ -0,0 +1,44 @@ +// $Id$ + +#include "dds_rtf2_dlrl.idl" + +module CCM_DDS { + +local interface CacheOperation { + // Cache kind + // ---------- + readonly attribute DDS::CacheUsage cache_usage; + + // Other Cache attributes + // ---------------------- + readonly attribute DDS::ObjectRootSeq objects; + readonly attribute boolean updates_enabled; + readonly attribute DDS::ObjectHomeSeq homes; + readonly attribute DDS::CacheAccessSeq sub_accesses; + readonly attribute DDS::CacheListenerSeq listeners; + + // Cache update + // ------------ + void DDS::refresh( ) + raises (DDS::DCPSError); + + // Listener management + // ------------------- + void attach_listener (in DDS::CacheListener listener); + void detach_listener (in DDS::CacheListener listener); + + // Updates management + // ------------------ + void enable_updates (); + void disable_updates (); + + // CacheAccess Management + // ---------------------- + DDS::CacheAccess create_access (in DDS::CacheUsage purpose) + raises (DDS::PreconditionNotMet); + void delete_access (in DDS::CacheAccess access) + raises (DDS::PreconditionNotMet); + }; +}; + + diff --git a/modules/CIAO/connectors/dds4ccm/docs/details.txt b/modules/CIAO/connectors/dds4ccm/docs/details.txt new file mode 100644 index 00000000000..8d871ba686b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/docs/details.txt @@ -0,0 +1,33 @@ +$Id$ + +For more information regarding DDS4CCM also check the CCM tutoral, see +$CIAO_ROOT/docs/OMG-CCM-Tutorial.ppt + +Currently the exact syntax of IDL3+ is not clear. The batch 4 document has +been outdated and we are waiting for a new batch 5. Before this will be +published a decision on IDL3+ has to be made. The latest proposal is to just +use templated modules, no templated interfaces. The usage of $ as +concatanation symbol has been removed from the spec. + +A lis of all open issues can be found at: +http://www.omg.org/issues/dds4ccm-ftf.open.html + +The list of issues that have been resolved are in the DDS for CCM FTF +27Aug09 document in the same directory as this file. + +One issue that has to be reraised is the fact that DDS SampleInfo is not +available at the CCM level, we need to have access to that. + +The DDS4CCM spec still has to be reviewed whether the given ports deliver the +correct abstraction. We want to prevent that we get lightweight DDS for +lightweight CCM. + +The CIAO tooling will generate the full connector. The goal is to have just +template instantiations and simple pass through code inside the connector, all +real code should be in a supporting core library. That makes it possible to +change the connector without changing the code generators. + +A problem to resolve is the fact that DDS defines an implicit sequence. We +need to be able to have the same sequence in IDL to be used for DDS and CCM. +This is not possible at this moment because we have 2 different code +generators each generating the same type. diff --git a/modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf b/modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf new file mode 100644 index 00000000000..2f99240be78 Binary files /dev/null and b/modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf differ diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl new file mode 100644 index 00000000000..d24b377ddb1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Hello_Base.idl + * @author Marcel Smit + */ + +#ifndef HELLO_BASE_IDL +#define HELLO_BASE_IDL + +struct DDSHello { + string hello; + short iterator; +}; + +typedef sequence DDSHello_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc new file mode 100644 index 00000000000..7db4c4cbc4c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc @@ -0,0 +1,80 @@ +// $Id$ + +project(DDS_Hello_Base_idl_gen) : taoidldefaults, anytypecode { + avoids += ace_for_tao + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=HELLO_BASE_STUB_Export \ + -Wb,stub_export_include=Hello_Base_stub_export.h + + IDL_Files { + Hello_Base.idl + } +} + +project(DDS_Hello_Base_ndds_ts_gen) : ndds_ts_defaults { + avoids += ace_for_tao + custom_only = 1 + after += DDS_Hello_Base_idl_gen + ndds_ts_flags += -corba Hello_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Hello_Base.idl + } +} + +project(DDS_Hello_Base_NDDS_TS) : nddslib, taolib { + avoids += ace_for_tao + after += DDS_Hello_Base_ndds_ts_gen DDS_Hello_Base_stub + libs += DDS_Hello_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Hello_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Hello_Base.cxx + Hello_BasePlugin.cxx + Hello_BaseSupport.cxx + } + + Header_Files { + Hello_Base.h + Hello_BasePlugin.h + Hello_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Hello_Base_stub) : ccm_stub { + avoids += ace_for_tao + after += DDS_Hello_Base_idl_gen + libs += + libout = ../lib + sharedname = DDS_Hello_Base_stub + dynamicflags = HELLO_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseC.cpp + } + + Header_Files { + Hello_BaseC.h + Hello_Base_stub_export.h + } + + Inline_Files { + Hello_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl new file mode 100644 index 00000000000..b5f51ac69e8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl @@ -0,0 +1,28 @@ +// $Id$ + +/** + * @file Hello_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef HELLO_CONNECTOR_IDL_ +#define HELLO_CONNECTOR_IDL_ + +#include +#include "Base/Hello_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::DDSHello, ::DDSHello_Seq, Hello) + +module Hello +{ + connector Hello_Connector : ::CCM_DDS::Hello::DDS_Event + { + }; +}; + +#endif /* HELLO_CONNECTOR_IDL_ */ + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc new file mode 100644 index 00000000000..a6ea05beacb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc @@ -0,0 +1,150 @@ +// $Id$ + +project(DDS_Hello_Connector_idl_gen) : connectoridldefaults { + avoids += ace_for_tao + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Hello_Connector_stub_export.h \ + -Wb,skel_export_macro=HELLO_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Hello_Connector_svnt_export.h \ + -Wb,svnt_export_macro=HELLO_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Hello_Connector_svnt_export.h \ + -Wb,exec_export_macro=HELLO_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Hello_Connector_exec_export.h \ + -I .. + + IDL_Files { + Hello_Connector.idl + } +} + +project(DDS_Hello_Connector_lem_gen) : ciaoidldefaults { + avoids += ace_for_tao + custom_only = 1 + after += DDS_Hello_Connector_idl_gen + idlflags += -Wb,stub_export_macro=HELLO_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Hello_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I $(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Hello_ConnectorE.idl + } +} + +project(DDS_Hello_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Connector_lem_gen DDS_Hello_Connector_stub DDS_Hello_Base_stub DDS4CCM_lem_stub + libs += DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Hello_Connector_lem_stub + dynamicflags = HELLO_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_ConnectorEC.cpp + } + + Header_Files { + Hello_ConnectorEC.h + Hello_Connector_lem_stub_export.h + } + + Inline_Files { + Hello_ConnectorEC.inl + } +} + +project(DDS_Hello_Connector_stub) : ccm_stub, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Connector_idl_gen DDS_Hello_Base_stub + libs += DDS_Hello_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Hello_Connector_stub + dynamicflags = HELLO_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_ConnectorC.cpp + } + + Header_Files { + Hello_ConnectorC.h + Hello_Connector_stub_export.h + } + + Inline_Files { + Hello_ConnectorC.inl + } +} + +project(DDS_Hello_Connector_exec) : ciao_executor, dds4ccm_impl { + avoids += ace_for_tao + after += DDS_Hello_Connector_lem_stub DDS_Hello_Connector_stub DDS4CCM_lem_stub DDS_Hello_Base_NDDS_TS + sharedname = DDS_Hello_Connector_exec + libs += DDS_Hello_Connector_stub DDS_Hello_Connector_lem_stub DDS_Hello_Base_stub DDS4CCM_lem_stub DDS_Hello_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = HELLO_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_Connector_exec.cpp + } + + Header_Files { + Hello_Connector_exec.h + Hello_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Hello_Connector_svnt) : ciao_servant, dds4ccm_impl { + avoids += ace_for_tao + after += DDS_Hello_Connector_lem_stub DDS_Hello_Connector_exec DDS_Hello_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Hello_Connector_svnt + libs += DDS_Hello_Connector_stub \ + DDS_Hello_Connector_lem_stub \ + DDS_Hello_Base_stub \ + DDS_Hello_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = HELLO_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_ConnectorS.cpp + Hello_Connector_svnt.cpp + } + + Header_Files { + Hello_ConnectorS.h + Hello_Connector_svnt.h + Hello_Connector_svnt_export.h + } + + Inline_Files { + Hello_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.cpp new file mode 100644 index 00000000000..011406cc1a2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Hello_Connector_exec.h" + +namespace CIAO_Hello_Hello_Connector_Impl +{ + Hello_Connector_exec_i::Hello_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Hello_Connector_exec_i::~Hello_Connector_exec_i (void) + { + } + + extern "C" HELLO_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Hello_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Hello_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.h new file mode 100644 index 00000000000..b5af71934ea --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef HELLO_CONNECTOR_EXEC_H_ +#define HELLO_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Hello_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Hello_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Hello_BaseSupport.h" + +namespace CIAO_Hello_Hello_Connector_Impl +{ + + // @from use of DDSHello as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + DDSHello, + DDSHelloSeq, + DDSHelloTypeSupport, + DDSHelloDataWriter, + DDSHelloDataReader > DDSHello_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Hello_Hello_Connector_Impl::Hello_Connector_Exec, + DDSHello_Seq, + ::CCM_DDS::Hello::CCM_Writer, + ::CCM_DDS::Hello::CCM_Updater, + ::CCM_DDS::Hello::CCM_Getter, + ::CCM_DDS::Hello::CCM_Reader, + ::Hello::CCM_Hello_Connector_Context, + ::CCM_DDS::Hello::Listener, + ::CCM_DDS::Hello::StateListener, + ::CCM_DDS::ConnectorStatusListener> DDSHello_Connector_Traits; + + class HELLO_CONNECTOR_EXEC_Export Hello_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Hello_Connector_exec_i (void); + virtual ~Hello_Connector_exec_i (void); + }; + + extern "C" HELLO_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Hello_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc new file mode 100644 index 00000000000..3405db77926 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc @@ -0,0 +1,11 @@ +// $Id$ + +project(*receiver) : nddslib, acelib { + exename = DDS_receiver + avoids += ace_for_tao + + Source_Files { + Hello_Receiver.cpp + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp new file mode 100644 index 00000000000..e4b26b81f31 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp @@ -0,0 +1,169 @@ +// $Id$ + +#include "ace/OS_main.h" +#include "ace/Get_Opt.h" +#include "ace/OS_NS_unistd.h" +#include "ace/OS_NS_string.h" +#include "ace/OS_NS_stdlib.h" +#include "ace/Date_Time.h" +#include "ace/SString.h" + +#include + +/* By default DDS::String type manage strings up to 1k */ +#define MAX_STRING_SIZE 1024 + +bool shutdown_flag = false; +long num_samples = 0; +long received_samples = 0; + +/* The listener of events and data from the middleware */ +class HelloListener: public ::DDS::DataReaderListener { +public: + void on_data_available(::DDS::DataReader *reader); +}; + + +int ACE_TMAIN(int argc, ACE_TCHAR** argv) { + HelloListener listener; + int main_result = 1; /* error by default */ + ::DDS::Topic * topic = 0; + ::DDS::DataReader *data_reader = 0; + + if (argc == 2) + { + char *end = 0; + num_samples = ACE_OS::strtol (argv[1], &end, 10); + + if (end == argv[1] && num_samples < 0) + { + ACE_ERROR ((LM_ERROR, "Error: provided argument not a valid integer over zero\n")); + return -1; + } + } + + /* Create the domain participant on domain ID 0 */ + ::DDS::DomainParticipant *participant = ::DDS::DomainParticipantFactory::get_instance()-> + create_participant( + 0, /* Domain ID */ + DDS_PARTICIPANT_QOS_DEFAULT, /* QoS */ + 0, /* Listener */ + DDS_STATUS_MASK_NONE); + if (!participant) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create domain participant.\n"))); + goto clean_exit; + } + + /* Create the topic "Hello, World" for the String type */ + topic = participant->create_topic( + "Hello, World", /* Topic name*/ + ::DDS::StringTypeSupport::get_type_name(), /* Type name */ + DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */ + 0, /* Listener */ + DDS_STATUS_MASK_NONE); + if (!topic) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n"))); + goto clean_exit; + } + + /* Create the data writer using the default publisher */ + data_reader = participant->create_datareader( + topic, + DDS_DATAREADER_QOS_DEFAULT, /* QoS */ + &listener, /* Listener */ + DDS_DATA_AVAILABLE_STATUS); + if (!data_reader) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n"))); + goto clean_exit; + } + + /* --- Sleep During Asynchronous Reception ---------------------------- */ + + /* This thread sleeps forever. When a sample is received, RTI Data + * Distribution Service will call the on_data_available_callback function. + */ + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Ready to read data.\n"))); + for (;;) { + ACE_OS::sleep (1); + if(shutdown_flag){ + break; + } + } + + /* --- Clean Up ------------------------------------------------------- */ + + main_result = 0; + clean_exit: + ::DDS::ReturnCode_t retcode; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting."))); + if (participant) { + retcode = participant->delete_contained_entities(); + if (retcode != DDS_RETCODE_OK) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n"))); + main_result = 1; + } + retcode = ::DDS::DomainParticipantFactory::get_instance()-> + delete_participant(participant); + if (retcode != DDS_RETCODE_OK) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n"))); + main_result = 1; + } + } + + return main_result; +} + + +/* This method gets called back by DDS when one or more data samples have been + * received. + */ +void HelloListener::on_data_available(::DDS::DataReader *reader) { + /* Perform a safe type-cast from a generic data reader into a + * specific data reader for the type "DDS::String" + */ + ::DDS::StringDataReader * string_reader = ::DDS::StringDataReader::narrow(reader); + if (!string_reader) { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("::DDS::StringDataReader::narrow failed.\n"))); + return; + } + + /* Loop until there are messages available in the queue */ + char sample[MAX_STRING_SIZE]; + char *ptr_sample = &sample[0]; + for(;;) { + ::DDS::SampleInfo info; + ::DDS::ReturnCode_t retcode = string_reader->take_next_sample( + ptr_sample, + info); + if (retcode == DDS_RETCODE_NO_DATA) { + /* No more samples */ + break; + } else if (retcode != DDS_RETCODE_OK) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), retcode)); + return; + } + if (info.valid_data) { + // Valid (this isn't just a lifecycle sample): print it + ++received_samples; + ACE_CString rec (sample); + ACE_Date_Time now; + int sec_rec = ACE_OS::atoi (rec.substr (0, 2).c_str() ); + if (sec_rec > 0) + { + int usec_rec = ACE_OS::atoi (rec.substr (3, 6).c_str ()); + if (sec_rec != now.second ()) + usec_rec += 10000000; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT("%C dur <%d>\n"), sample, now.microsec () - usec_rec)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT("%C\n"), sample)); + } + if(received_samples == num_samples || ACE_OS::strlen(sample) == 0){ + shutdown_flag = true; + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc new file mode 100644 index 00000000000..43154f47f03 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc @@ -0,0 +1,11 @@ +// $Id$ + +project(*sender) : nddslib, acelib { + exename = DDS_Sender + avoids += ace_for_tao + + Source_Files { + Hello_Sender.cpp + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp new file mode 100644 index 00000000000..c761e4e7b8f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp @@ -0,0 +1,151 @@ +// $Id$ + +#include "ace/OS_main.h" +#include "ace/Get_Opt.h" +#include "ace/OS_NS_unistd.h" +#include "ace/OS_NS_stdio.h" +#include "ace/Date_Time.h" +#include "ace/SString.h" +#include + +int number_of_iterations = 100; +bool log_time = false; +const char* send_string = "This is a DDS sender"; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("i:s:t")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 's': + send_string = ACE_TEXT_ALWAYS_CHAR (get_opts.opt_arg ()); + break; + case 'i': + number_of_iterations = ACE_OS::atoi (get_opts.opt_arg ()); + break; + case 't': + log_time = true; + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-s " + "-i " + "-t log timing" + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { + ::DDS::ReturnCode_t retcode; + ::DDS::StringDataWriter *string_writer = 0; + ::DDS::Topic *topic = 0; + ::DDS::DataWriter *data_writer = 0; + int main_result = 1; /* error by default */ + + if (parse_args (argc, argv) != 0) + return 1; + + ACE_Time_Value tv (0, 1000); //1 msec + /* Create the domain participant */ + ::DDS::DomainParticipant *participant = ::DDS::DomainParticipantFactory::get_instance()-> + create_participant( + 0, /* Domain ID */ + DDS_PARTICIPANT_QOS_DEFAULT, /* QoS */ + 0, /* Listener */ + DDS_STATUS_MASK_NONE); + if (!participant) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create domain participant.\n"))); + goto clean_exit; + } + + /* Create the topic "Hello, World" for the String type */ + topic = participant->create_topic( + "Hello, World", /* Topic name*/ + ::DDS::StringTypeSupport::get_type_name(), /* Type name */ + DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */ + 0, /* Listener */ + DDS_STATUS_MASK_NONE); + if (!topic) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n"))); + goto clean_exit; + } + + /* Create the data writer using the default publisher */ + data_writer = participant->create_datawriter( + topic, + DDS_DATAWRITER_QOS_DEFAULT, /* QoS */ + 0, /* Listener */ + DDS_STATUS_MASK_NONE); + if (!data_writer) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n"))); + goto clean_exit; + } + + /* Perform a safe type-cast from a generic data writer into a + * specific data writer for the type "DDS::String" + */ + string_writer = ::DDS::StringDataWriter::narrow(data_writer); + if (!string_writer) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DDS_StringDataWriter_narrow failed.\n"))); + /* In this specific case, this will never fail */ + goto clean_exit; + } + + // Sleep a couple seconds to allow discovery to happen + ACE_OS::sleep (1); + + /* --- Write Data ----------------------------------------------------- */ + + for (int i = 0; i < number_of_iterations; i++) + { + ACE_TCHAR timestamp[16]; + ACE_CString msg (send_string); + ACE_CString ret; + ACE_Date_Time now; + ACE_OS::sprintf (timestamp, + "%02d.%d", + now.second(), + now.microsec ()); + ret.set (timestamp); + ret = ret + " " + msg; + retcode = string_writer->write( + ret.c_str (), + DDS_HANDLE_NIL); + if (retcode != DDS_RETCODE_OK) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Write failed: %d.\n"), retcode)); + //ACE_ERROR ((LM_ERROR, ACE_TEXT ("%C.\n"), ret.c_str())); + ACE_OS::sleep (tv); + } + + /* --- Clean Up ------------------------------------------------------- */ + + main_result = 0; +clean_exit: + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting."))); + if (participant) { + retcode = participant->delete_contained_entities(); + if (retcode != DDS_RETCODE_OK) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n"))); + main_result = 1; + } + retcode = ::DDS::DomainParticipantFactory::get_instance()-> + delete_participant(participant); + if (retcode != DDS_RETCODE_OK) { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n"))); + main_result = 1; + } + } + return main_result; +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl new file mode 100644 index 00000000000..f3198b6a59e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef HELLO_RECEIVER_IDL +#define HELLO_RECEIVER_IDL + +#include "Connector/Hello_Connector.idl" +#include "Connector/Hello_ConnectorE.idl" + +module Hello +{ + component Receiver + { + port CCM_DDS::Hello::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + + attribute string name; + attribute unsigned long expected_samples; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc new file mode 100644 index 00000000000..034ff3e22c7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc @@ -0,0 +1,144 @@ +// $Id$ + +project(DDS_Hello_Receiver_idl_gen) : componentidldefaults { + avoids += ace_for_tao + custom_only = 1 + after += DDS_Hello_Connector_idl_gen + idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=HELLO_RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=HELLO_RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=HELLO_RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Hello_Receiver.idl + } +} + +project(DDS_Hello_Receiver_lem_gen) : ciaoidldefaults { + avoids += ace_for_tao + after += DDS_Hello_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Hello_ReceiverE.idl + } +} + +project(DDS_Hello_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Receiver_lem_gen DDS_Hello_Receiver_stub DDS_Hello_Connector_stub DDS_Hello_Base_stub + libs += Receiver_stub DDS_Hello_Connector_stub DDS_Hello_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = HELLO_RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_ReceiverEC.cpp + } + + Header_Files { + Hello_ReceiverEC.h + Hello_Receiver_lem_stub_export.h + } + + Inline_Files { + Hello_ReceiverEC.inl + } +} + +project(DDS_Hello_Receiver_stub) : ccm_stub, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Receiver_idl_gen DDS_Hello_Connector_stub DDS_Hello_Base_stub DDS_Hello_Connector_lem_gen + libs += DDS_Hello_Connector_stub DDS_Hello_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = HELLO_RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_ReceiverC.cpp + } + + Header_Files { + Hello_ReceiverC.h + Hello_Receiver_stub_export.h + } + + Inline_Files { + Hello_ReceiverC.inl + } +} + +project(DDS_Hello_Receiver_exec) : ciao_executor, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Receiver_lem_stub DDS_Hello_Receiver_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = HELLO_RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_Receiver_exec.cpp + } + + Header_Files { + Hello_Receiver_exec.h + Hello_Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Hello_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + avoids += ace_for_tao + after += DDS_Hello_Receiver_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_svnt DDS_Hello_Receiver_exec DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_svnt Receiver_exec DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = HELLO_RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_ReceiverS.cpp + Hello_Receiver_svnt.cpp + } + + Header_Files { + Hello_ReceiverS.h + Hello_Receiver_svnt.h + Hello_Receiver_svnt_export.h + } + + Inline_Files { + Hello_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp new file mode 100644 index 00000000000..bd16e019348 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp @@ -0,0 +1,305 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Hello_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Date_Time.h" + +namespace CIAO_Hello_Receiver_Impl +{ + //============================================================ + // Facet Executor Implementation Class: DDSHello_Listener_exec_i + //============================================================ + + DDSHello_Listener_exec_i::DDSHello_Listener_exec_i (Atomic_ULong &received, + const ACE_CString &name) + : received_ (received), + name_ (name) + { + } + + DDSHello_Listener_exec_i::~DDSHello_Listener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::DDSHello_Listener + + void + DDSHello_Listener_exec_i::on_many_data ( + const DDSHello_Seq & /* an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + + void + DDSHello_Listener_exec_i::on_one_data ( + const DDSHello & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ++this->received_; + ACE_CString rec (an_instance.hello.in ()); + ACE_Date_Time now; + int sec_rec = ACE_OS::atoi (rec.substr (0, 2).c_str() ); + if (sec_rec > 0) + { + int usec_rec = ACE_OS::atoi (rec.substr (3, 6).c_str ()); + if (sec_rec != now.second ()) + usec_rec += 10000000; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("<%C> received <%C> - <%d>. difference <%d>\n"), + this->name_.c_str (), + an_instance.hello.in (), + an_instance.iterator, + now.microsec () - usec_rec)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT("<%C> received <%C> - <%d>.\n"), + this->name_.c_str (), + an_instance.hello.in (), + an_instance.iterator)); + } +/* + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("DDSHello_Listener: ") + ACE_TEXT ("received hello for <%C> - iterator <%d>\n"), + an_instance.hello.in (), + an_instance.iterator)); +*/ + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (Atomic_ULong &lost) + : lost_ (lost) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + ++this->lost_; + ACE_DEBUG ((LM_ERROR, ACE_TEXT("port status listener::on_sample_lost\n"))); + } + + + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (void) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /* the_topic */, + const DDS::InconsistentTopicStatus & /* status */) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_inconsistent_topic\n"))); + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n"))); + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_sample_rejected\n"))); + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_deadline_missed\n"))); + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n"))); + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_unexpected_status\n"))); + } + + void ConnectorStatusListener_exec_i::on_subscription_matched ( + ::DDS::DataReader_ptr /*the_reader*/, + const ::DDS::SubscriptionMatchedStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_subscription_matched\n"))); + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iDDSHello_Listener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : expected_ (0), + received_ (0), + lost_ (0) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + ::CORBA::ULong + Receiver_exec_i::expected_samples (void) + { + return this->expected_; + } + + void + Receiver_exec_i::expected_samples (::CORBA::ULong expected_samples) + { + this->expected_ = expected_samples; + } + + char * + Receiver_exec_i::name (void) + { + return CORBA::string_dup (this->name_.c_str ()); + } + + void + Receiver_exec_i::name (const char *name) + { + this->name_ = name; + } + + // Port operations. + ::CCM_DDS::Hello::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new DDSHello RAW listener\n"))); + return new DDSHello_Listener_exec_i (this->received_, this->name_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (this->lost_); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new ConnectorStatusListener\n"))); + return new ConnectorStatusListener_exec_i (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Hello::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode ( ::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + ACE_DEBUG ((LM_INFO, "Receiver_exec_i summary: received <%u> - expected <%d> - lost <%u>\n", + this->received_.value (), + this->expected_, + this->lost_.value ())); + if (this->lost_ > 0) + { + ACE_ERROR ((LM_ERROR, "ERROR : Lost %u samples\n", + this->lost_.value ())); + } + if (this->received_ < this->expected_) + { + ACE_ERROR ((LM_ERROR, "ERROR : Expected to receive %u samples, actually got %u\n", + this->expected_, this->received_.value ())); + } + } + + extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + + + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h new file mode 100644 index 00000000000..1a8889e2c3f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h @@ -0,0 +1,186 @@ +// -*- C++ -*- +// +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.3 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// be/be_codegen.cpp:1217 + +#ifndef HELLO_RECEIVER_EXEC_H_ +#define HELLO_RECEIVER_EXEC_H_ + + +#include "Hello_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Hello_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_ULong; + + class HELLO_RECEIVER_EXEC_Export DDSHello_Listener_exec_i + : public virtual ::CCM_DDS::Hello::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + DDSHello_Listener_exec_i (Atomic_ULong &, + const ACE_CString &); + virtual ~DDSHello_Listener_exec_i (void); + + virtual void + on_one_data ( + const DDSHello & an_instance, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_many_data ( + const DDSHello_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_; + const ACE_CString &name_; + }; + + class HELLO_RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (Atomic_ULong &); + virtual ~PortStatusListener_exec_i (void); + + // Operations and attributes from ::CCM_DDS::PortStatusListener + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + private: + Atomic_ULong &lost_; + }; + + class HELLO_RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (void); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + virtual + void on_subscription_matched (::DDS::DataReader_ptr the_reader, + const ::DDS::SubscriptionMatchedStatus & status); + + }; + + class HELLO_RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported operations and attributes. + // Port operations. + + virtual ::CORBA::ULong expected_samples (void); + virtual void expected_samples (::CORBA::ULong expected_samples); + + virtual char * name (void); + virtual void name (const char *name); + + virtual ::CCM_DDS::Hello::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + + // Operations from Components::SessionComponent. + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Hello::CCM_Receiver_Context_var context_; + CORBA::ULong expected_; + Atomic_ULong received_; + Atomic_ULong lost_; + ACE_CString name_; + }; + + extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl new file mode 100644 index 00000000000..6c2d0285019 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl @@ -0,0 +1,39 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_SENDER_IDL +#define DDS_SENDER_IDL + +#include "Connector/Hello_Connector.idl" +#include "Connector/Hello_ConnectorE.idl" + +module Hello +{ + component Sender + { + port CCM_DDS::Hello::DDS_Write info_in; + attribute unsigned long rate; + attribute unsigned long iterations; + attribute string message; + attribute boolean log_time; + provides CCM_DDS::ConnectorStatusListener connector_status; + }; +}; + +/* +For future use: IDL3 plus +module Hello +{ + component Sender + { + port CCM_DDS::DDS_Write info; + }; +}; +*/ +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc new file mode 100644 index 00000000000..bdc5cbb14a2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc @@ -0,0 +1,145 @@ +// $Id$ + +project(DDS_Hello_Sender_idl_gen) : componentidldefaults { + avoids += ace_for_tao + after += DDS_Hello_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=HELLO_SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=HELLO_SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=HELLO_SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Hello_Sender.idl + } +} + +project(DDS_Hello_Sender_lem_gen) : ciaoidldefaults { + avoids += ace_for_tao + after += DDS_Hello_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Hello_SenderE.idl + } +} + +project(DDS_Hello_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Sender_lem_gen DDS_Hello_Sender_stub DDS_Hello_Base_stub + libs += DDS_Hello_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = HELLO_SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_SenderEC.cpp + } + + Header_Files { + Hello_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Hello_SenderEC.inl + } +} + +project(DDS_Hello_Sender_stub) : ccm_stub, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Sender_idl_gen DDS_Hello_Base_stub DDS_Hello_Connector_stub + libs += DDS_Hello_Base_stub DDS_Hello_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = HELLO_SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_SenderC.cpp + } + + Header_Files { + Hello_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Hello_SenderC.inl + } +} + +project(DDS_Hello_Sender_exec) : ciao_executor, dds4ccm_base { + avoids += ace_for_tao + after += DDS_Hello_Sender_lem_stub DDS_Hello_Sender_stub DDS_Hello_Connector_lem_stub DDS_Hello_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_lem_stub DDS_Hello_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = HELLO_SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_Sender_exec.cpp + } + + Header_Files { + Hello_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Hello_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + avoids += ace_for_tao + after += DDS_Hello_Base_stub DDS_Hello_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Hello_Connector_stub DDS_Hello_Connector_svnt DDS_Hello_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_Hello_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Hello_Connector_stub DDS_Hello_Connector_svnt DDS_Hello_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = HELLO_SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_SenderS.cpp + Hello_Sender_svnt.cpp + } + + Header_Files { + Hello_SenderS.h + Hello_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Hello_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp new file mode 100644 index 00000000000..089a40db2e7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp @@ -0,0 +1,278 @@ +// -*- C++ -*- +// $Id$ + +#include "Hello_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Date_Time.h" +#include "ace/OS_NS_unistd.h" + +namespace CIAO_Hello_Sender_Impl +{ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &ready_to_start) + :ready_to_start_(ready_to_start) + { + } + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind) + { + CORBA::ULong kind = status_kind; + if(!this->ready_to_start_.value()) + { + if((!CORBA::is_nil(the_entity)) && (kind==DDS::PUBLICATION_MATCHED_STATUS)) + { + //DataWriter find a DataReader that Matched the Topic + this->ready_to_start_ = true; + } + } + } + + + //============================================================ + // Pulse generator + //============================================================ + + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + pulse_Generator::~pulse_Generator () + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, + const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : rate_ (1), + iteration_ (0), + iterations_ (1000), + log_time_ (false), + msg_ ("Hello World!"), + ready_to_start_(false) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->ready_to_start_); + } + + ACE_CString Sender_exec_i::create_message (const ACE_CString &msg) + { + if (!this->log_time_) + return msg; + char timestamp[16]; + ACE_Date_Time now; + ACE_OS::sprintf (timestamp, + "%02d.%06d", + now.second(), + now.microsec ()); + ACE_CString ret (timestamp); + ret = ret + " " + msg; + return ret.c_str (); + } + + void + Sender_exec_i::tick () + { + if (this->iteration_ == 0) + ACE_OS::sleep (1); + + // Start writing after DataWriter find first DataReader that matched the Topic + // It is stll possible that other Readers aren't yet ready to recieve data, for that case in the + // profile the durability is set to TRANSIENT_DURABILITY_QOS, so each Raeder should receive each message. + // + if(this->ready_to_start_.value()) + { + if (this->iteration_ < this->iterations_) + { + DDSHello * new_msg = new DDSHello(); + ACE_CString msg = create_message (this->msg_); + new_msg->hello = msg.c_str (); + new_msg->iterator = ++this->iteration_; + this->writer_->write_one (*new_msg, ::DDS::HANDLE_NIL); + } + else + { //we're done + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + } + } + } + + void + Sender_exec_i::start (void) + { + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (5, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + // Component attributes. + ::CORBA::ULong + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::ULong iterations) + { + this->iterations_ = iterations; + } + + char * + Sender_exec_i::message (void) + { + return CORBA::string_dup (this->msg_.c_str()); + } + void + Sender_exec_i::message (const char *msg) + { + this->msg_ = msg; + } + + ::CORBA::Boolean + Sender_exec_i::log_time (void) + { + return this->log_time_; + } + + void + Sender_exec_i::log_time (::CORBA::Boolean log_time) + { + this->log_time_ = log_time; + } + + ::CORBA::ULong + Sender_exec_i::rate (void) + { + return this->rate_; + } + + void + Sender_exec_i::rate (::CORBA::ULong rate) + { + this->rate_ = rate; + } + + // Port operations. + + // Operations from Components::SessionComponent. + void + Sender_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Hello::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_in_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h new file mode 100644 index 00000000000..bfc3c75f7be --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h @@ -0,0 +1,150 @@ +// -*- C++ -*- +// $Id$ + +#ifndef HELLO_SENDER_EXEC_H_ +#define HELLO_SENDER_EXEC_H_ + + +#include "Hello_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +#include + +namespace CIAO_Hello_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + class HELLO_SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &ready_to_start_; + + }; + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + + ~pulse_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + // Supported operations and attributes. + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + void start (void); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + void stop (void); + + void tick (); + + // Component attributes. + virtual ::CORBA::ULong iterations (void); + + virtual void iterations (CORBA::ULong iterations); + + virtual char * message (void); + + virtual void message (const char *message); + + virtual ::CORBA::Boolean log_time (void); + + virtual void log_time (::CORBA::Boolean log_time); + + virtual ::CORBA::ULong rate (void); + + virtual void rate (::CORBA::ULong rate); + + + // Operations from Components::SessionComponent. + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_connector_status(void); + + private: + ::Hello::CCM_Sender_Context_var context_; + CCM_DDS::Hello::Writer_var writer_; + pulse_Generator * ticker_; + CORBA::ULong rate_; + CORBA::ULong iteration_, iterations_; + CORBA::Boolean log_time_; + ACE_CString msg_; + + ACE_CString create_message ( + const ACE_CString &msg); + Atomic_Boolean ready_to_start_; + + }; + + extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp new file mode 100644 index 00000000000..7fa83efc8d3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp @@ -0,0 +1,1048 @@ + + + Hello_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + + Hello_ReceiverComponentOne + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverOne + + + + + name + + + tk_string + + + ReceiverOne + + + + + expected_samples + + + tk_ulong + + + 100 + + + + + + + Hello_ReceiverConnectorComponentOne + ReceiverNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorOne + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentTwo + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverTwo + + + + + name + + + tk_string + + + ReceiverTwo + + + + + expected_samples + + + tk_ulong + + + 100 + + + + + + + Hello_ReceiverConnectorComponentTwo + ReceiverNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorTwo + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentThree + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverThree + + + + + name + + + tk_string + + + ReceiverThree + + + + + expected_samples + + + tk_ulong + + + 100 + + + + + + + Hello_ReceiverConnectorComponentThree + ReceiverNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorThree + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentFour + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverFour + + + + + name + + + tk_string + + + ReceiverFour + + + + + expected_samples + + + tk_ulong + + + 100 + + + + + + + + Hello_ReceiverConnectorComponentFour + ReceiverNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorFour + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentFive + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverFive + + + + + name + + + tk_string + + + ReceiverFive + + + + + expected_samples + + + tk_ulong + + + 100 + + + + + + + Hello_ReceiverConnectorComponentFive + ReceiverNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorFive + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + + Hello_SenderConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS + + + + + log_time + + + tk_boolean + + + true + + + + + + + info_write_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + _listenercontrolOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + + + + _portstatuslistenerOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + + + + + _listenerOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp new file mode 100644 index 00000000000..2c6429403b9 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp @@ -0,0 +1,1041 @@ + + + Hello_DDS_Deployment_5_Receivers + + + + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + + Hello_ReceiverComponentOne + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverOne + + + + + name + + + tk_string + + + ReceiverOne + + + + + expected_samples + + + tk_ulong + + + 500 + + + + + + + Hello_ReceiverConnectorComponentOne + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverConnectorHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorOne + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentTwo + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverTwo + + + + + name + + + tk_string + + + ReceiverTwo + + + + + expected_samples + + + tk_ulong + + + 500 + + + + + + + Hello_ReceiverConnectorComponentTwo + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverConnectorHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorTwo + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentThree + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverThree + + + + + name + + + tk_string + + + ReceiverThree + + + + + expected_samples + + + tk_ulong + + + 500 + + + + + + + Hello_ReceiverConnectorComponentThree + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverConnectorHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorThree + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentFour + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverFour + + + + + name + + + tk_string + + + ReceiverFour + + + + + expected_samples + + + tk_ulong + + + 500 + + + + + + + Hello_ReceiverConnectorComponentFour + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverConnectorHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorFour + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_ReceiverComponentFive + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverFive + + + + + name + + + tk_string + + + ReceiverFive + + + + + expected_samples + + + tk_ulong + + + 500 + + + + + + + Hello_ReceiverConnectorComponentFive + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverConnectorHome + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverConnectorFive + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + _listenercontrolOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _listenercontrolFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + + + + _portstatuslistenerOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistenerFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + + + + + _listenerOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + _listenerFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp new file mode 100644 index 00000000000..c358229d69c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp @@ -0,0 +1,882 @@ + + + Hello_DDS_Deployment_5_Senders + + + + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + + Hello_SenderComponentOne + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderOne + + + + + message + + + tk_string + + + Hi, I'm sender One! + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + + + Hello_SenderConnectorComponentOne + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorOne + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + Hello_SenderComponentTwo + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderTwo + + + + + message + + + tk_string + + + Hi, I'm sender Two! + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + + + Hello_SenderConnectorComponentTwo + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorTwo + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentThree + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderThree + + + + + message + + + tk_string + + + Hi, I'm sender Three! + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + + + Hello_SenderConnectorComponentThree + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorThree + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentFour + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderFour + + + + + message + + + tk_string + + + Hi, I'm sender Four! + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + + + + Hello_SenderConnectorComponentFour + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorFour + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentFive + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderFive + + + + + message + + + tk_string + + + Hi, I'm sender Five! + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + + + Hello_SenderConnectorComponentFive + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorFive + + + + + topic_name + + + tk_string + + + hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + info_write_dataOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp new file mode 100644 index 00000000000..de44d461117 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp @@ -0,0 +1,1043 @@ + + + Hello_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + + Hello_SenderComponentOne + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS Sender One + + + + + log_time + + + tk_boolean + + + true + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderOne + + + + + + + Hello_SenderConnectorComponentOne + SenderNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorOne + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentTwo + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS Sender Two + + + + + log_time + + + tk_boolean + + + true + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderTwo + + + + + + + Hello_SenderConnectorComponentTwo + SenderNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorTwo + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentThree + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS Sender Three + + + + + log_time + + + tk_boolean + + + true + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderThree + + + + + + + Hello_SenderConnectorComponentThree + SenderNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorThree + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentFour + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS Sender Four + + + + + log_time + + + tk_boolean + + + true + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderFour + + + + + + + Hello_SenderConnectorComponentFour + SenderNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorFour + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + Hello_SenderComponentFive + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS Sender Five + + + + + log_time + + + tk_boolean + + + true + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderFive + + + + + + + Hello_SenderConnectorComponentFive + SenderNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderConnectorFive + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + + + + Hello_ReceiverConnectorComponent + ReceiverNode + + + + + topic_name + + + tk_string + + + DDS_Hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + ReceiverComponent + ReceiverNode + + + + + expected_samples + + + tk_long + + + 500 + + + + + + + info_write_dataOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderOne + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderTwo + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderThree + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderFour + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_write_dataFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_senderFive + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp new file mode 100644 index 00000000000..5a71dfa85e2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp @@ -0,0 +1,463 @@ + + + Hello_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + expected_samples + + + tk_long + + + 100 + + + + + name + + + tk_string + + + Receiver1 + + + + + + Hello_ReceiverConnectorComponent + ReceiverNode + + + + + topic_name + + + tk_string + + + Hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + Hello_SenderConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + Hello + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + iterations + + + tk_long + + + 100 + + + + + message + + + tk_string + + + Hello, World via DDS + + + + + log_time + + + tk_boolean + + + true + + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp new file mode 100644 index 00000000000..5bd769432db --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp @@ -0,0 +1,248 @@ + + + Hello_DDS_Deployment_1 + + + + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + name + + + tk_string + + + Receiver1 + + + + + + Hello_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + Hello + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp new file mode 100644 index 00000000000..f79157f2c56 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp @@ -0,0 +1,199 @@ + + + Hello_DDS_Deployment_1 + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + + Hello_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Hello_Hello_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_Hello_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Connector_exec + + + + + + SenderComponent + SenderNode + + + + + + Hello_ConnectorComponent2 + SenderNode + + + + + topic_name + + + tk_string + + + Hello + + + + + + + info_write_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + + Hello_Connector_exec + + + DDS_Hello_Connector_exec + + + Hello_Connector_svnt + + + DDS_Hello_Connector_svnt + + + Hello_Connector_stub + + + DDS_Hello_Connector_stub + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..705e3d4edb5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + + TRANSIENT_DURABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + + + + 10 + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + + + TRANSIENT_DURABILITY_QOS + + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl new file mode 100755 index 00000000000..cb3fe92b80c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl @@ -0,0 +1,236 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "Sender.ior", "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "1_to_5.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill (3 * $tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl new file mode 100755 index 00000000000..cdfb23b9467 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl @@ -0,0 +1,236 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "Sender.ior", "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "5_to_1.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill (3 * $tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl new file mode 100755 index 00000000000..a33aa440a7c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl @@ -0,0 +1,250 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "Sender.ior", "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$E2 = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "5_Senders.cdp"; +$cdp_file_two = "5_Receivers.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Start dance_plan_launcher.exe with -x $cdp_file_two -k file://$ior_emfile\n"; +$E2 = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file_two -k file://$ior_emfile"); +$E2->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill (5 * $tg_executor->ProcessStopWaitInterval ()); + +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file_two -q\n"; + +$E2 = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file_two -q"); +$E2->SpawnWaitKill (5 * $tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl new file mode 100755 index 00000000000..c5e7ffd4855 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60002 ); +@iorbases = ( "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "ReceiverOnly.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 5 seconds to allow task to complete\n"; +sleep (5); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl new file mode 100755 index 00000000000..9f1ebd63536 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "Sender.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "SenderOnly.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 5 seconds to allow task to complete\n"; +sleep (5); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl new file mode 100755 index 00000000000..764905498b6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl @@ -0,0 +1,236 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "Sender.ior", "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "DeploymentPlan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl new file mode 100755 index 00000000000..020c238f5b4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl @@ -0,0 +1,26 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; + +$tg_sender = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; +$tg_receiver = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + + +print "Start receiver\n"; +$R = $tg_receiver->CreateProcess ("$CIAO_ROOT/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_receiver", ""); +$R->Spawn(); +print "Start sender\n"; +$S = $tg_sender->CreateProcess ("$CIAO_ROOT/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender", + "-i 10000 -t -s \"Hello, World\""); +$S->SpawnWaitKill ($tg_sender->ProcessStartWaitInterval ()); +$R->Kill (); + +exit 0; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl new file mode 100644 index 00000000000..750908a015d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl @@ -0,0 +1,23 @@ +// $Id$ + +/** + * @file Quoter_Base.idl + * @author William R. Otte + */ + +#ifndef QUOTER_BASE_IDL +#define QUOTER_BASE_IDL + +module Quoter +{ + struct Stock_Info + { + unsigned long low; + unsigned long high; + unsigned long current; + string symbol; //@key + }; + typedef sequence Stock_Info_Seq; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc new file mode 100644 index 00000000000..69ef6d370dd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc @@ -0,0 +1,78 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Quoter_Base" + +project(DDS_Quoter_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=QUOTER_BASE_STUB_Export \ + -Wb,stub_export_include=Quoter_Base_stub_export.h + + IDL_Files { + Quoter_Base.idl + } +} + +project(DDS_Quoter_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Quoter_Base_idl_gen + ndds_ts_flags += -corba Quoter_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Quoter_Base.idl + } +} + +project(DDS_Quoter_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Quoter_Base_ndds_ts_gen DDS_Quoter_Base_stub + libs += DDS_Quoter_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Quoter_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Quoter_Base.cxx + Quoter_BasePlugin.cxx + Quoter_BaseSupport.cxx + } + + Header_Files { + Quoter_Base.h + Quoter_BasePlugin.h + Quoter_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Quoter_Base_stub) : ccm_stub { + after += DDS_Quoter_Base_idl_gen + libs += + libout = ../lib + libpaths += ../lib + sharedname = DDS_Quoter_Base_stub + dynamicflags = QUOTER_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Quoter_BaseC.cpp + } + + Header_Files { + Quoter_BaseC.h + Quoter_Base_stub_export.h + } + + Inline_Files { + Quoter_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl new file mode 100644 index 00000000000..457f617a374 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl @@ -0,0 +1,35 @@ +// $Id$ + +/** + * @file Broker.idl + * @author William R. Otte + */ + +#ifndef BROKER_IDL +#define BROKER_IDL + +#include "Connector/Quoter_Connector.idl" +#include "Connector/Quoter_ConnectorE.idl" + +module Quoter +{ + component Broker + { + port CCM_DDS::Quoter::DDS_Listen info_out; + }; +}; + +/* +#include +#include + +module Quoter +{ + component Broker + { + port CCM_DDS::DDS_RawListen info; + }; +}; + + */ +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc new file mode 100644 index 00000000000..d6f1b5aa469 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc @@ -0,0 +1,139 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -u DDS -b dds4ccm_base Broker" + +project(DDS_Broker_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_Quoter_Connector_idl_gen + idlflags += -Wb,stub_export_macro=BROKER_STUB_Export \ + -Wb,stub_export_include=Broker_stub_export.h \ + -Wb,skel_export_macro=BROKER_SVNT_Export \ + -Wb,skel_export_include=Broker_svnt_export.h \ + -Wb,svnt_export_macro=BROKER_SVNT_Export \ + -Wb,svnt_export_include=Broker_svnt_export.h \ + -Wb,exec_export_macro=BROKER_EXEC_Export \ + -Wb,exec_export_include=Broker_exec_export.h -I.. + + IDL_Files { + Broker.idl + } +} + +project(DDS_Broker_lem_gen) : ciaoidldefaults { + after += DDS_Broker_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=BROKER_LEM_STUB_Export \ + -Wb,stub_export_include=Broker_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + BrokerE.idl + } +} + +project(DDS_Broker_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Broker_lem_gen DDS_Broker_stub DDS_Quoter_Connector_stub DDS_Quoter_Base_stub + libs += Broker_stub DDS_Quoter_Connector_stub DDS_Quoter_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Broker_lem_stub + dynamicflags = BROKER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BrokerEC.cpp + } + + Header_Files { + BrokerEC.h + Broker_lem_stub_export.h + } + + Inline_Files { + BrokerEC.inl + } +} + +project(DDS_Broker_stub) : ccm_stub, dds4ccm_base { + after += DDS_Broker_idl_gen DDS_Quoter_Connector_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_lem_gen + libs += DDS_Quoter_Connector_stub DDS_Quoter_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Broker_stub + dynamicflags = BROKER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BrokerC.cpp + } + + Header_Files { + BrokerC.h + Broker_stub_export.h + } + + Inline_Files { + BrokerC.inl + } +} + +project(DDS_Broker_exec) : ciao_executor, dds4ccm_base { + after += DDS_Broker_lem_stub DDS_Broker_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Broker_exec + libs += Broker_stub Broker_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = BROKER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Broker_exec.cpp + } + + Header_Files { + Broker_exec.h + Broker_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Broker_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Broker_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt DDS_Broker_exec DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Broker_svnt + libs += Broker_stub Broker_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt Broker_exec DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = BROKER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BrokerS.cpp + Broker_svnt.cpp + } + + Header_Files { + BrokerS.h + Broker_svnt.h + Broker_svnt_export.h + } + + Inline_Files { + BrokerS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp new file mode 100644 index 00000000000..9b714733acb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp @@ -0,0 +1,352 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Broker_exec.h" +#include "ace/Reactor.h" +#include "ace/OS_NS_time.h" +#include "ace/OS_NS_unistd.h" +#include "tao/ORB_Core.h" + +namespace CIAO_Quoter_Broker_Impl +{ + + read_action_Generator::read_action_Generator (Broker_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, + const void *) + { + // Notify the subscribers + // this->pulse_callback_.read_one(); + // this->pulse_callback_.read_one_history(); + // this->pulse_callback_.read_all(); + // this->pulse_callback_.read_all_history(); + return 0; + } + + void + Broker_exec_i::read_one (void) + { + ACE_DEBUG ((LM_DEBUG, "read_one\n")); + ::Quoter::Stock_Info stock_info; + stock_info.symbol= "IBM"; + ::CCM_DDS::ReadInfo readinfo; + + try + { + this->reader_->read_one_last (stock_info, readinfo, ::DDS::HANDLE_NIL); + time_t tim = readinfo.source_timestamp.sec; + ACE_DEBUG ((LM_DEBUG, "Read_Info. -> date = %C\n", ctime (&tim))); + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One: received a stock_info for <%C> at %u:%u:%u\n", + stock_info.symbol.in (), + stock_info.low, + stock_info.current, + stock_info.high)); + } + catch(CCM_DDS::NonExistent& ) + { + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One: no stock_info received\n")); + } + } + + void + Broker_exec_i::read_all (void) + { + ACE_DEBUG ((LM_DEBUG, "read_all\n")); + + ::Quoter::Stock_Info_Seq_var stock_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + this->reader_->read_all(stock_infos.out (), readinfoseq.out ()); + if(readinfoseq->length()!= 0) + { + int nr_of_infos = readinfoseq->length(); + for(int i = 0; i < nr_of_infos; i ++) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + ACE_DEBUG ((LM_DEBUG, "Read_Info.source_timestamp -> date = %C\n",ctime (&tim))); + } + } + if(stock_infos->length()!= 0) + { + for(CORBA::ULong i = 0; i < stock_infos->length(); i ++) + { + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_All: Number %d : received a stock_info for <%C> at %u:%u:%u\n", + i, + stock_infos[i].symbol.in (), + stock_infos[i].low, + stock_infos[i].current, + stock_infos[i].high)); + } + } + } + void + Broker_exec_i::read_all_history (void) + { + ACE_DEBUG ((LM_DEBUG, "read_all_history\n")); + + ::Quoter::Stock_Info_Seq_var stock_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + this->reader_->read_all(stock_infos.out (), readinfoseq.out ()); + if(readinfoseq->length()!= 0) + { + int nr_of_infos = readinfoseq->length(); + for(int i = 0; i < nr_of_infos; i ++) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + ACE_DEBUG ((LM_DEBUG, "Read_Info.source_timestamp -> date = %C\n", ctime (&tim))); + } + } + if(stock_infos->length()!= 0) + { + int nr_of_stock_infos = stock_infos->length(); + for(CORBA::ULong i = 0; i < (CORBA::ULong)nr_of_stock_infos; i ++) + { + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_All_History: Number %d : received a stock_info for <%C> at %u:%u:%u\n", + i, + stock_infos[i].symbol.in (), + stock_infos[i].low, + stock_infos[i].current, + stock_infos[i].high)); + } + } + } + // read all samples of an given instance + void + Broker_exec_i::read_one_history (void) + { + ACE_DEBUG ((LM_DEBUG, "read_one_history\n")); + ::Quoter::Stock_Info stock_info; + stock_info.symbol= "IBM"; //key of instance to read + + ::Quoter::Stock_Info_Seq_var stock_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try + { + this->reader_->read_one_all(stock_info,stock_infos.out (), readinfoseq.out (), ::DDS::HANDLE_NIL); + if(readinfoseq->length()!= 0) + { + int nr_of_infos = readinfoseq->length(); + for(int i = 0; i < nr_of_infos; i ++) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + ACE_DEBUG ((LM_DEBUG, "Read_Info.source_timestamp -> date = %C\n", ctime (&tim))); + } + } + if(stock_infos->length()!= 0) + { + int nr_of_stock_infos = stock_infos->length(); + for(CORBA::ULong i = 0; i < (CORBA::ULong)nr_of_stock_infos; i ++) + { + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One_History: Number %d : received a stock_info for <%C> at %u:%u:%u\n", + i, + stock_infos[i].symbol.in (), + stock_infos[i].low, + stock_infos[i].current, + stock_infos[i].high)); + } + } + } + catch(CCM_DDS::NonExistent& ) + { + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One_History: no stock_info's received\n")); + } + } + //============================================================ + // Facet Executor Implementation Class: Stock_Info_Listener_exec_i + //============================================================ + + Stock_Info_Listener_exec_i::Stock_Info_Listener_exec_i (void) + { + } + + Stock_Info_Listener_exec_i::~Stock_Info_Listener_exec_i (void) + { + } + + void + Stock_Info_Listener_exec_i::on_many_data ( + const ::Quoter::Stock_Info_Seq & /* an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + + void + Stock_Info_Listener_exec_i::on_one_data ( + const ::Quoter::Stock_Info & an_instance, + const ::CCM_DDS::ReadInfo & /* info */) + { + ACE_DEBUG ((LM_DEBUG, "Stock_Info_Listener: received a stock_info for <%C> at %u:%u:%u\n", + an_instance.symbol.in (), + an_instance.low, + an_instance.current, + an_instance.high)); + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + ACE_DEBUG ((LM_DEBUG, "####### construct PortStatusListener ######\n")); + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + ACE_DEBUG ((LM_DEBUG, "####### deadline missed ######\n")); + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /*the_reader*/ , + const ::DDS::SampleLostStatus & status ) + { + ACE_DEBUG ((LM_DEBUG, "####### sample lost ######\n")); + ACE_DEBUG ((LM_DEBUG, " status.total_count = %d\n", status.total_count)); + ACE_DEBUG ((LM_DEBUG, " status.total_count_change = %d\n", status.total_count_change)); + } + + //============================================================ + // Component Executor Implementation Class: Broker_exec_i + //============================================================ + + Broker_exec_i::Broker_exec_i (void) + { + ACE_OS::srand (static_cast (ACE_OS::time ())); + this->ticker_ = new read_action_Generator (*this); + } + + Broker_exec_i::~Broker_exec_i (void) + { + ACE_DEBUG ((LM_DEBUG, "Broker_exec_i::~Broker_exec_i\n")); + } + + // Supported operations and attributes. + + // Component attributes. + + // Port operations. + + ::CCM_DDS::Quoter::CCM_Listener_ptr + Broker_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, "*************** out listener\n")); + return new Stock_Info_Listener_exec_i (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Broker_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, "*************** out status************************\n")); + return new PortStatusListener_exec_i (); + } + + // Operations from Components::SessionComponent. + + void + Broker_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + ::Quoter::CCM_Broker_Context_var lctx = + ::Quoter::CCM_Broker_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (lctx.in ())) + { + throw ::CORBA::INTERNAL (); + } + + this->context_ = lctx; + } + + void + Broker_exec_i::configuration_complete (void) + { + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::configuration_complete\n")); + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Broker_exec_i::start (void) + { + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::start\n")); + // calculate the interval time + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, 2000), + ACE_Time_Value (0, 2000)) == -1) + { + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::start : error scheduling timer\n")); + } + } + + void + Broker_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::stop\n")); + delete this->ticker_; + } + + void + Broker_exec_i::ccm_activate (void) + { + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::ccm_activate\n")); + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_DEBUG ((LM_DEBUG, "Error: Listener control receptacle is null!\n")); + throw CORBA::INTERNAL (); + } + //in case of testing Listener set lc-> enabled true + lc->mode ( ::CCM_DDS::ONE_BY_ONE); + //in case of testing Reader set lc-> enabled false, so the Listener doesn't consume all the messages + //lc->enabled (false); + this->start(); + } + + void + Broker_exec_i::ccm_passivate (void) + { + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::ccm_passivate\n")); + this->stop (); + } + + void + Broker_exec_i::ccm_remove (void) + { + ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::ccm_remove\n")); + } + + extern "C" BROKER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Quoter_Broker_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + ACE_DEBUG ((LM_DEBUG, "in create Broker\n")); + ACE_NEW_NORETURN ( + retval, + Broker_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h new file mode 100644 index 00000000000..75714128f5e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h @@ -0,0 +1,163 @@ +// -*- C++ -*- +// +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.2 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// be/be_codegen.cpp:1217 + +#ifndef CIAO_BROKER_EXEC_H_ +#define CIAO_BROKER_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "BrokerEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Broker_exec_export.h" +#include "tao/LocalObject.h" +#include "ace/Reactor.h" + +namespace CIAO_Quoter_Broker_Impl +{ + + class Broker_exec_i; + /** + * @class reader activity generator + * + * @brief an active object used by StockBroker to perform a periodical read action + * + */ + class read_action_Generator : public ACE_Event_Handler + { + public: + read_action_Generator (Broker_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Broker_exec_i &pulse_callback_; + }; + + class BROKER_EXEC_Export Stock_Info_Listener_exec_i + : public virtual ::CCM_DDS::Quoter::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + Stock_Info_Listener_exec_i (void); + virtual ~Stock_Info_Listener_exec_i (void); + + virtual void + on_one_data ( + const ::Quoter::Stock_Info & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const ::Quoter::Stock_Info_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + }; + + class BROKER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + + class BROKER_EXEC_Export Broker_exec_i + : public virtual Broker_Exec, + public virtual ::CORBA::LocalObject + { + public: + Broker_exec_i (void); + virtual ~Broker_exec_i (void); + + // Supported operations and attributes. + + // Component attributes. + + // Port operations. + + virtual ::CCM_DDS::Quoter::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + void read_one (void); + void read_one_history (void); + void read_all(void); + void read_all_history(void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + virtual void start (void); + virtual void stop (void); + + private: + ::Quoter::CCM_Broker_Context_var context_; + read_action_Generator * ticker_; + ::CCM_DDS::Quoter::Reader_var reader_; + ::CCM_DDS::Quoter::Getter_var getter_; + }; + + extern "C" BROKER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Quoter_Broker_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl new file mode 100644 index 00000000000..68516937e67 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Quoter_Connector.idl + * @author William R. Otte + * + * by-hand translation of the idl3p. + */ + +#ifndef QUOTER_CONNECTOR_IDL_ +#define QUOTER_CONNECTOR_IDL_ + +#include +#include "Base/Quoter_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::Quoter::Stock_Info, ::Quoter::Stock_Info_Seq, Quoter) + +module Quoter +{ + connector Quoter_Connector : ::CCM_DDS::Quoter::DDS_Event + { + }; +}; + +#endif /* QUOTER_CONNECTOR_IDL3_ */ diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc new file mode 100644 index 00000000000..54940c0df43 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Quoter_Base -l .. -o ../lib -u DDS Quoter_Connector" + +project(DDS_Quoter_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=QUOTER_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Quoter_Connector_stub_export.h \ + -Wb,skel_export_macro=QUOTER_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Quoter_Connector_svnt_export.h \ + -Wb,svnt_export_macro=QUOTER_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Quoter_Connector_svnt_export.h \ + -Wb,exec_export_macro=QUOTER_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Quoter_Connector_exec_export.h \ + -I .. + + IDL_Files { + Quoter_Connector.idl + } +} + +project(DDS_Quoter_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_Quoter_Connector_idl_gen + idlflags += -Wb,stub_export_macro=QUOTER_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Quoter_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Quoter_ConnectorE.idl + } +} + +project(DDS_Quoter_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Quoter_Connector_lem_gen DDS_Quoter_Connector_stub DDS_Quoter_Base_stub DDS4CCM_lem_stub + libs += DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Quoter_Connector_lem_stub + dynamicflags = QUOTER_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Quoter_ConnectorEC.cpp + } + + Header_Files { + Quoter_ConnectorEC.h + Quoter_Connector_lem_stub_export.h + } + + Inline_Files { + Quoter_ConnectorEC.inl + } +} + +project(DDS_Quoter_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Quoter_Connector_idl_gen DDS_Quoter_Base_stub + libs += DDS_Quoter_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Quoter_Connector_stub + dynamicflags = QUOTER_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Quoter_ConnectorC.cpp + } + + Header_Files { + Quoter_ConnectorC.h + Quoter_Connector_stub_export.h + } + + Inline_Files { + Quoter_ConnectorC.inl + } +} + +project(DDS_Quoter_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub DDS_Quoter_Base_NDDS_TS + sharedname = DDS_Quoter_Connector_exec + libs += DDS_Quoter_Connector_stub DDS_Quoter_Connector_lem_stub DDS_Quoter_Base_stub DDS4CCM_lem_stub DDS_Quoter_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = QUOTER_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Quoter_Connector_exec.cpp + } + + Header_Files { + Quoter_Connector_exec.h + Quoter_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Quoter_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_exec DDS_Quoter_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Quoter_Connector_svnt + libs += DDS_Quoter_Connector_stub \ + DDS_Quoter_Connector_lem_stub \ + DDS_Quoter_Base_stub \ + DDS_Quoter_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = QUOTER_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Quoter_ConnectorS.cpp + Quoter_Connector_svnt.cpp + } + + Header_Files { + Quoter_ConnectorS.h + Quoter_Connector_svnt.h + Quoter_Connector_svnt_export.h + } + + Inline_Files { + Quoter_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp new file mode 100644 index 00000000000..c7c1ab7d213 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Quoter_Connector_exec.h" + +namespace CIAO_Quoter_Quoter_Connector_Impl +{ + Quoter_Connector_exec_i::Quoter_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Quoter_Connector_exec_i::~Quoter_Connector_exec_i (void) + { + } + + extern "C" QUOTER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Quoter_Quoter_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Quoter_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h new file mode 100644 index 00000000000..b3085ea6033 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_QUOTER_CONNECTOR_EXEC_H_ +#define CIAO_QUOTER_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Quoter_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Quoter_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Quoter_BaseSupport.h" + +namespace CIAO_Quoter_Quoter_Connector_Impl +{ + + // @from use of Stock_Info as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + ::Quoter::Stock_Info, + ::Quoter::Stock_InfoSeq, + ::Quoter::Stock_InfoTypeSupport, + ::Quoter::Stock_InfoDataWriter, + ::Quoter::Stock_InfoDataReader > Stock_Info_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Quoter_Quoter_Connector_Impl::Quoter_Connector_Exec, + ::Quoter::Stock_Info_Seq, + ::CCM_DDS::Quoter::CCM_Writer, + ::CCM_DDS::Quoter::CCM_Updater, + ::CCM_DDS::Quoter::CCM_Getter, + ::CCM_DDS::Quoter::CCM_Reader, + ::Quoter::CCM_Quoter_Connector_Context, + ::CCM_DDS::Quoter::Listener, + ::CCM_DDS::Quoter::StateListener, + ::CCM_DDS::ConnectorStatusListener> Stock_Info_Connector_Traits; + + class QUOTER_CONNECTOR_EXEC_Export Quoter_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Quoter_Connector_exec_i (void); + virtual ~Quoter_Connector_exec_i (void); + }; + + extern "C" QUOTER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Quoter_Quoter_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl new file mode 100644 index 00000000000..e1906334c18 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl @@ -0,0 +1,36 @@ +// $Id$ + +/** + * @file Distributor.idl + * @author William R. Otte + * + * by-hand idl3 translation of distributor components. + */ + +#ifndef DDS_DISTRIBUTOR_IDL +#define DDS_DISTRIBUTOR_IDL + +#include "Connector/Quoter_Connector.idl" +#include "Connector/Quoter_ConnectorE.idl" + +module Quoter +{ + interface Trigger + { + void add_stock (in string stock); + void del_stock (in string stock); + void start (); + void stop (); + }; + + component Distributor supports Trigger + { + //port CCM_DDS::Quoter::DDS_Update info_update; + port CCM_DDS::Quoter::DDS_Write info_in; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + attribute unsigned long rate; + }; +}; + +#endif + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc new file mode 100644 index 00000000000..c95e5876763 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Quoter_Base -l ../lib -o ../lib -c controller -u DDS Distributor" + +project(DDS_Distributor_idl_gen) : componentidldefaults { + after += DDS_Quoter_Connector_idl_gen + custom_only = 1 + idlflags += -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 \ + -Wb,svnt_export_macro=DISTRIBUTOR_SVNT_Export \ + -Wb,svnt_export_include=Distributor_svnt_export.h \ + -Wb,exec_export_macro=DISTRIBUTOR_EXEC_Export \ + -Wb,exec_export_include=Distributor_exec_export.h \ + -I .. + + IDL_Files { + Distributor.idl + } +} + +project(DDS_Distributor_lem_gen) : ciaoidldefaults { + after += DDS_Distributor_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=DISTRIBUTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Distributor_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + DistributorE.idl + } +} + +project(DDS_Distributor_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Distributor_lem_gen DDS_Distributor_stub DDS_Quoter_Base_stub + libs += DDS_Quoter_Base_stub Distributor_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Distributor_lem_stub + dynamicflags = DISTRIBUTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + DistributorEC.cpp + } + + Header_Files { + DistributorEC.h + Distributor_lem_stub_export.h + } + + Inline_Files { + DistributorEC.inl + } +} + +project(DDS_Distributor_stub) : ccm_stub, dds4ccm_base { + after += DDS_Distributor_idl_gen DDS_Quoter_Base_stub DDS_Quoter_Connector_stub + libs += DDS_Quoter_Base_stub DDS_Quoter_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Distributor_stub + dynamicflags = DISTRIBUTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + DistributorC.cpp + } + + Header_Files { + DistributorC.h + Distributor_stub_export.h + } + + Inline_Files { + DistributorC.inl + } +} + +project(DDS_Distributor_exec) : ciao_executor, dds4ccm_base { + after += DDS_Distributor_lem_stub DDS_Distributor_stub DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub + sharedname = Distributor_exec + libs += Distributor_stub Distributor_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = DISTRIBUTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Distributor_exec.cpp + } + + Header_Files { + Distributor_exec.h + Distributor_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Distributor_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Quoter_Base_stub DDS_Distributor_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt DDS_Quoter_Connector_lem_stub + sharedname = Distributor_svnt + libs += Distributor_stub Distributor_lem_stub \ + DDS_Quoter_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt DDS_Quoter_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = DISTRIBUTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + DistributorS.cpp + Distributor_svnt.cpp + } + + Header_Files { + DistributorS.h + Distributor_svnt.h + Distributor_svnt_export.h + } + + Inline_Files { + DistributorS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp new file mode 100644 index 00000000000..2a13fccacfa --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp @@ -0,0 +1,304 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Distributor_exec.h" +#include "ace/Reactor.h" +#include "ace/Guard_T.h" +#include "ace/CORBA_macros.h" +#include "ace/OS_NS_time.h" +#include "tao/ORB_Core.h" +#include + +namespace CIAO_Quoter_Distributor_Impl +{ + //============================================================ + // Component Executor Implementation Class: Distributor_exec_i + //============================================================ + + pulse_Generator::pulse_Generator (Distributor_exec_i &callback) + : pulse_callback_ (callback) + { + } + + pulse_Generator::~pulse_Generator () + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, + const void *) + { + // Notify the subscribers + try + { + this->pulse_callback_.tick (); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "Distributor pulse_Generator::handle_timeout: Caught exception\n")); + } + + return 0; + } + + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (void) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_inconsistent_topic\n")); + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n")); + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_sample_rejected\n")); + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_deadline_missed\n")); + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n")); + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_unexpected_status\n")); + } + + void ConnectorStatusListener_exec_i::on_publication_matched ( ::DDS::DataWriter_ptr , + const DDS::PublicationMatchedStatus & ) + { + ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_publication_matched\n")); + } + + Distributor_exec_i::Distributor_exec_i (void) + : rate_ (1) + { + ACE_OS::srand (static_cast (ACE_OS::time ())); + this->ticker_ = new pulse_Generator (*this); + } + + Distributor_exec_i::~Distributor_exec_i (void) + { + } + + // Supported operations and attributes. + + void + Distributor_exec_i::tick (void) + { + std::cerr << "Ticking" << std::endl; + + for (Stock_Table::iterator i = this->stocks_.begin (); + i != this->stocks_.end (); + ++i) + { + if (ACE_OS::rand () % 2) + { + //std::cerr << "Updating stock: " << i->first.c_str () << std::endl; + + int delta = (ACE_OS::rand () % 10) - 2; + + i->second->current += delta; + + if (i->second->current > i->second->high) + i->second->high = i->second->current; + + if (i->second->current < i->second->low) + i->second->low = i->second->current; + + if (!CORBA::is_nil (this->writer_)) { + ACE_DEBUG ((LM_DEBUG, "WRITE AND CREATE stock_info for <%C> %u:%u:%u\n", + i->first.c_str (), + i->second->low, + i->second->current, + i->second->high)); + try + { + this->writer_->write_one (i->second, ::DDS::HANDLE_NIL); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, "Internal Error while writing Stock_info for <%C>.\n", + i->first.c_str ())); + } + } + else + std::cerr << "Writer reference is nil!" << std::endl; + } + } + } + + void + Distributor_exec_i::add_stock ( + const char * stock) + { + std::cerr << "Distributor_exec_i::add_stock - Adding stock: " << stock << std::endl; + + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + Quoter::Stock_Info *new_stock = new Quoter::Stock_Info; + + new_stock->low = 50; + new_stock->high = 50; + new_stock->current = 50; + new_stock->symbol = stock; + + this->stocks_[stock] = new_stock; + } + + void + Distributor_exec_i::del_stock (const char * stock) + { + std::cerr << "Distributor_exec_i::del_stock - Removing stock: " << stock << std::endl; + + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + Stock_Table::iterator pos = this->stocks_.find (stock); + + if (pos != this->stocks_.end ()) + { + this->stocks_.erase (pos); + } + + std::cerr << "Distributor_exec_i::del_stock - Stock no present: " << stock; + } + + void + Distributor_exec_i::start (void) + { + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + std::cerr << ">>> Distributor_exec_i::start : error scheduling timer" << endl; + } + } + + void + Distributor_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + std::cerr << ">>> Distributor_exec_i::stop" << endl; + delete this->ticker_; + } + + // Component attributes. + + ::CORBA::ULong + Distributor_exec_i::rate (void) + { + return this->rate_; + } + + void + Distributor_exec_i::rate ( + ::CORBA::ULong rate ) + { + this->rate_ = rate; + } + + // Port operations. + + // Operations from Components::SessionComponent. + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Distributor_exec_i::get_info_out_connector_status (void) + { + ACE_DEBUG ((LM_DEBUG, "*************** DIST out connector status************************\n")); + return new ConnectorStatusListener_exec_i (); + } + + void + Distributor_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + ::Quoter::CCM_Distributor_Context_var lctx = + ::Quoter::CCM_Distributor_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (lctx.in ())) + { + throw ::CORBA::INTERNAL (); + } + + this->context_ = lctx; + } + + void + Distributor_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_in_data (); + } + + void + Distributor_exec_i::ccm_activate (void) + { + this->start (); + this->add_stock ("MSFT"); + this->add_stock ("IBM"); + this->add_stock ("HP"); + this->add_stock ("DELL"); + this->add_stock ("ACER"); + this->add_stock ("ASUS"); + } + + void + Distributor_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Distributor_exec_i::ccm_remove (void) + { + } + + extern "C" DISTRIBUTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Quoter_Distributor_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Distributor_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h new file mode 100644 index 00000000000..1ab67b20547 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h @@ -0,0 +1,166 @@ +// -*- C++ -*- +// +// $Id$ + +#ifndef CIAO_DISTRIBUTOR_EXEC_H_ +#define CIAO_DISTRIBUTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "DistributorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Distributor_exec_export.h" +#include "tao/LocalObject.h" +#include "ace/Thread_Mutex.h" +#include "ace/Reactor.h" + +#include + +namespace CIAO_Quoter_Distributor_Impl +{ + class Distributor_exec_i; + + /** + * @class pulse generator + * + * @brief an active object used by StockDistributor to perform periodical pulse generation + * + */ + class pulse_Generator : public ACE_Event_Handler + { + public: + pulse_Generator (Distributor_exec_i &callback); + + ~pulse_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Distributor_exec_i &pulse_callback_; + + }; + +class DISTRIBUTOR_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (void); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + virtual + void on_publication_matched ( ::DDS::DataWriter_ptr the_writer, + const DDS::PublicationMatchedStatus & status); + + }; + class DISTRIBUTOR_EXEC_Export Distributor_exec_i + : public virtual Distributor_Exec, + public virtual ::CORBA::LocalObject + { + public: + Distributor_exec_i (void); + virtual ~Distributor_exec_i (void); + + void tick (void); + + // Supported operations and attributes. + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + add_stock ( + const char * stock); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + del_stock ( + const char * stock); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + start (void); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + stop (void); + + // Component attributes. + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual ::CORBA::ULong + rate (void); + + // TAO_IDL - Generated from + // be/be_visitor_operation/operation_ch.cpp:46 + + virtual void + rate ( + ::CORBA::ULong rate); + + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + pulse_Generator * ticker_; + ::Quoter::CCM_Distributor_Context_var context_; + TAO_SYNCH_MUTEX mutex_; + typedef std::map Stock_Table; + Stock_Table stocks_; + CORBA::ULong rate_; + CCM_DDS::Quoter::Writer_var writer_; + }; + + extern "C" DISTRIBUTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Quoter_Distributor_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp new file mode 100644 index 00000000000..942fd32a0ca --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp @@ -0,0 +1,425 @@ + + + Quoter_Depl_1 + + + BrokerComponentImplementation + + + + + + component factory + + + tk_string + + + create_Quoter_Broker_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Quoter_Broker_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Broker_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Broker_exec + + + + + + + Quoter_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Quoter_Quoter_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Quoter_Quoter_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Quoter_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Quoter_Connector_exec + + + + + + DistributorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Quoter_Distributor_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Quoter_Distributor_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Distributor_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Distributor_exec + + + + + + BrokerComponent + BrokerNode + + + + + + Quoter_ConnectorComponent + DistributorNode + + + + + topic_name + + + tk_string + + + Quoter + + + + + + Quoter_ConnectorComponent2 + BrokerNode + + + + + topic_name + + + tk_string + + + Quoter + + + + + + DistributorComponent + DistributorNode + + + + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + _datareader + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_dds_entity + false + SimplexReceptacle + + + + push_consumer_dds_entity + true + Facet + + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + + _connectorstatuslistener_distributor + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_in_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + + + Distributor_exec + + + Distributor_exec + + + Distributor_svnt + + + Distributor_svnt + + + Distributor_stub + + + Distributor_stub + + + Quoter_Connector_exec + + + DDS_Quoter_Connector_exec + + + Quoter_Connector_svnt + + + DDS_Quoter_Connector_svnt + + + Quoter_Connector_stub + + + DDS_Quoter_Connector_stub + + + Broker_exec + + + Broker_exec + + + Broker_svnt + + + Broker_svnt + + + Broker_stub + + + Broker_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl new file mode 100755 index 00000000000..d3ed3f32ef1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "DistributorNode", "BrokerNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 30 seconds to allow task to complete\n"; +sleep (30); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl new file mode 100644 index 00000000000..750a8e327e5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Shapes_Base.idl + * @author Marcel Smit + */ + +#ifndef SHAPES_BASE_IDL +#define SHAPES_BASE_IDL + +struct ShapeType { + string color; //@key + long x; + long y; + long shapesize; +}; + +struct Attributes { + string shape; //@key + string color; //@key + float speed; +}; + +typedef sequence ShapeType_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc new file mode 100644 index 00000000000..163df6d255f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Shapes_Base" + +project(DDS_Shapes_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=SHAPES_BASE_STUB_Export \ + -Wb,stub_export_include=Shapes_Base_stub_export.h + + IDL_Files { + Shapes_Base.idl + } +} + +project(DDS_Shapes_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Shapes_Base_idl_gen + ndds_ts_flags += -corba Shapes_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Shapes_Base.idl + } +} + +project(DDS_Shapes_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Shapes_Base_ndds_ts_gen DDS_Shapes_Base_stub + libs += DDS_Shapes_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Shapes_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Shapes_Base.cxx + Shapes_BasePlugin.cxx + Shapes_BaseSupport.cxx + } + + Header_Files { + Shapes_Base.h + Shapes_BasePlugin.h + Shapes_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Shapes_Base_stub) : ccm_stub { + after += DDS_Shapes_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_Shapes_Base_stub + dynamicflags = SHAPES_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_BaseC.cpp + } + + Header_Files { + Shapes_BaseC.h + Shapes_Base_stub_export.h + } + + Inline_Files { + Shapes_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl new file mode 100644 index 00000000000..38cb5445c72 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl @@ -0,0 +1,28 @@ +// $Id$ + +/** + * @file Shapes_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef SHAPES_CONNECTOR_IDL_ +#define SHAPES_CONNECTOR_IDL_ + +#include +#include "Base/Shapes_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::ShapeType, ::ShapeType_Seq, ShapeType) + +module Shapes +{ + connector Shapes_Connector : ::CCM_DDS::ShapeType::DDS_Event + { + }; +}; + +#endif /* SHAPES_CONNECTOR_IDL_ */ + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc new file mode 100644 index 00000000000..9fa3ee70555 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Shapes_Base -l .. -o ../lib -u DDS Shapes_Connector" + +project(DDS_Shapes_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SHAPES_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Shapes_Connector_stub_export.h \ + -Wb,skel_export_macro=SHAPES_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Shapes_Connector_svnt_export.h \ + -Wb,svnt_export_macro=SHAPES_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Shapes_Connector_svnt_export.h \ + -Wb,exec_export_macro=SHAPES_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Shapes_Connector_exec_export.h \ + -I .. + + IDL_Files { + Shapes_Connector.idl + } +} + +project(DDS_Shapes_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_Shapes_Connector_idl_gen + idlflags += -Wb,stub_export_macro=SHAPES_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Shapes_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Shapes_ConnectorE.idl + } +} + +project(DDS_Shapes_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Shapes_Connector_lem_gen DDS_Shapes_Connector_stub DDS_Shapes_Base_stub DDS4CCM_lem_stub + libs += DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Shapes_Connector_lem_stub + dynamicflags = SHAPES_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_ConnectorEC.cpp + } + + Header_Files { + Shapes_ConnectorEC.h + Shapes_Connector_lem_stub_export.h + } + + Inline_Files { + Shapes_ConnectorEC.inl + } +} + +project(DDS_Shapes_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Shapes_Connector_idl_gen DDS_Shapes_Base_stub + libs += DDS_Shapes_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Shapes_Connector_stub + dynamicflags = SHAPES_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_ConnectorC.cpp + } + + Header_Files { + Shapes_ConnectorC.h + Shapes_Connector_stub_export.h + } + + Inline_Files { + Shapes_ConnectorC.inl + } +} + +project(DDS_Shapes_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_stub DDS4CCM_lem_stub DDS_Shapes_Base_NDDS_TS + sharedname = DDS_Shapes_Connector_exec + libs += DDS_Shapes_Connector_stub DDS_Shapes_Connector_lem_stub DDS_Shapes_Base_stub DDS4CCM_lem_stub DDS_Shapes_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SHAPES_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_Connector_exec.cpp + } + + Header_Files { + Shapes_Connector_exec.h + Shapes_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Shapes_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_exec DDS_Shapes_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Shapes_Connector_svnt + libs += DDS_Shapes_Connector_stub \ + DDS_Shapes_Connector_lem_stub \ + DDS_Shapes_Base_stub \ + DDS_Shapes_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SHAPES_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_ConnectorS.cpp + Shapes_Connector_svnt.cpp + } + + Header_Files { + Shapes_ConnectorS.h + Shapes_Connector_svnt.h + Shapes_Connector_svnt_export.h + } + + Inline_Files { + Shapes_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.cpp new file mode 100644 index 00000000000..10e7ef3b0e7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Shapes_Connector_exec.h" + +namespace CIAO_Shapes_Shapes_Connector_Impl +{ + Shapes_Connector_exec_i::Shapes_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Shapes_Connector_exec_i::~Shapes_Connector_exec_i (void) + { + } + + extern "C" SHAPES_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Shapes_Shapes_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Shapes_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.h new file mode 100644 index 00000000000..36a073c34ef --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef SHAPES_CONNECTOR_EXEC_H_ +#define SHAPES_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Shapes_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Shapes_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Shapes_BaseSupport.h" + +namespace CIAO_Shapes_Shapes_Connector_Impl +{ + + // @from use of ShapeType as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + ShapeType, + ShapeTypeSeq, + ShapeTypeTypeSupport, + ShapeTypeDataWriter, + ShapeTypeDataReader > ShapeType_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Shapes_Shapes_Connector_Impl::Shapes_Connector_Exec, + ShapeType_Seq, + ::CCM_DDS::ShapeType::CCM_Writer, + ::CCM_DDS::ShapeType::CCM_Updater, + ::CCM_DDS::ShapeType::CCM_Getter, + ::CCM_DDS::ShapeType::CCM_Reader, + ::Shapes::CCM_Shapes_Connector_Context, + ::CCM_DDS::ShapeType::Listener, + ::CCM_DDS::ShapeType::StateListener, + ::CCM_DDS::ConnectorStatusListener> ShapeType_Connector_Traits; + + class SHAPES_CONNECTOR_EXEC_Export Shapes_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Shapes_Connector_exec_i (void); + virtual ~Shapes_Connector_exec_i (void); + }; + + extern "C" SHAPES_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Shapes_Shapes_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl new file mode 100644 index 00000000000..81d0ee8c510 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Shapes_Connector.idl" +#include "Connector/Shapes_ConnectorE.idl" + +module Shapes +{ + component Receiver + { + port CCM_DDS::ShapeType::DDS_Listen info_out; + port CCM_DDS::ShapeType::DDS_Get info_get; + attribute unsigned long rate; + attribute boolean get_data; //if true, get_one and get_all are invoked + attribute boolean read_data;//if true, read_one and read_all are invoked. + attribute boolean raw_listen; //if true, raw listen port is enabled. + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc new file mode 100644 index 00000000000..2571cbc74cd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc @@ -0,0 +1,139 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -u DDS -b dds4ccm_base Receiver" + +project(DDS_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_Shapes_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Shapes_Receiver.idl + } +} + +project(DDS_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Shapes_ReceiverE.idl + } +} + +project(DDS_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Receiver_lem_gen DDS_Receiver_stub DDS_Shapes_Connector_stub DDS_Shapes_Base_stub + libs += Receiver_stub DDS_Shapes_Connector_stub DDS_Shapes_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_ReceiverEC.cpp + } + + Header_Files { + Shapes_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Shapes_ReceiverEC.inl + } +} + +project(DDS_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Receiver_idl_gen DDS_Shapes_Connector_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_lem_gen + libs += DDS_Shapes_Connector_stub DDS_Shapes_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_ReceiverC.cpp + } + + Header_Files { + Shapes_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Shapes_ReceiverC.inl + } +} + +project(DDS_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_Receiver_lem_stub DDS_Receiver_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_Receiver_exec.cpp + } + + Header_Files { + Shapes_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Receiver_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt DDS_Receiver_exec DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt Receiver_exec DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_ReceiverS.cpp + Shapes_Receiver_svnt.cpp + } + + Header_Files { + Shapes_ReceiverS.h + Shapes_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Shapes_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp new file mode 100644 index 00000000000..6b00af5fa54 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp @@ -0,0 +1,369 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Shapes_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_Shapes_Receiver_Impl +{ + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + if (pulse_callback_.read_data ()) + { + this->pulse_callback_.read_one(); + this->pulse_callback_.read_all(); + } + if (pulse_callback_.get_data ()) + { + this->pulse_callback_.get_one (); + this->pulse_callback_.get_all (); + } + return 0; + } + + //============================================================ + // Facet Executor Implementation Class: ShapeType_Listener_exec_i + //============================================================ + + ShapeType_Listener_exec_i::ShapeType_Listener_exec_i (void) + { + } + + ShapeType_Listener_exec_i::~ShapeType_Listener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ShapeType_Listener + void + ShapeType_Listener_exec_i::on_many_data ( + const ShapeType_Seq & /* an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + + void + ShapeType_Listener_exec_i::on_one_data ( + const ShapeType & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("ShapeType_Listener: ") + ACE_TEXT ("received shape_info for <%C> at %u:%u:%u\n"), + an_instance.color.in (), + an_instance.x, + an_instance.y, + an_instance.shapesize)); + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iShapeType_Listener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (0), + get_data_ (true), + read_data_ (true), + raw_listen_ (false) + + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_one (void) + { + ShapeType shape_info; + shape_info.color = "GREEN"; + ::CCM_DDS::ReadInfo readinfo; + + try + { + this->reader_->read_one_last (shape_info, readinfo, ::DDS::HANDLE_NIL); + time_t tim = readinfo.source_timestamp.sec; + tm* time = localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ONE Read_Info ") + ACE_TEXT (" -> date = %02d:%02d:%02d.%d\n"), + time->tm_hour, + time->tm_min, + time->tm_sec, + readinfo.source_timestamp.nanosec)); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ON shape info : ") + ACE_TEXT ("received shape_info for <%C> at %u:%u:%u\n"), + shape_info.color.in (), + shape_info.x, + shape_info.y, + shape_info.shapesize)); + } + catch(CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ShapeType_Read_One: ") + ACE_TEXT ("no shape_info receieved\n"))); + } + } + + void + Receiver_exec_i::read_all (void) + { + ShapeType_Seq_var shape_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + this->reader_->read_all(shape_infos.out(), readinfoseq.out()); + for(unsigned int i = 0; i < readinfoseq->length(); ++i) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time->tm_hour, + time->tm_min, + time->tm_sec, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < shape_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL Shape Info : ") + ACE_TEXT ("Number <%d> : received shape_info for <%C> at %u:%u:%u\n"), + i, + shape_infos[i].color.in (), + shape_infos[i].x, + shape_infos[i].y, + shape_infos[i].shapesize)); + } + } + + void + Receiver_exec_i::get_one (void) + { + ShapeType_var shape_info; +// shape_info.color = "yellow"; + ::CCM_DDS::ReadInfo_var readinfo; + + try + { + if (this->getter_->get_one (shape_info.out (), readinfo.out ())) + { + time_t tim = readinfo->source_timestamp.sec; + tm* time = localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("GET_ONE ReadInfo -> ") + ACE_TEXT ("date = %02d:%02d:%02d.%d\n"), + time->tm_hour, + time->tm_min, + time->tm_sec, + readinfo->source_timestamp.nanosec)); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("GET_ONE ShapeType : ") + ACE_TEXT ("received shape_info for <%C> at %u:%u:%u\n"), + shape_info->color.in (), + shape_info->x, + shape_info->y, + shape_info->shapesize)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("GET_ONE No data available for <%C>\n"), + shape_info->color.in ())); + } + } + catch(CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ShapeType_Read_One: no shape_info receieved\n"))); + } + } + + void + Receiver_exec_i::get_all (void) + { + } + // Component attributes. + ::CORBA::ULong + Receiver_exec_i::rate (void) + { + return this->rate_; + } + + void + Receiver_exec_i::rate ( + ::CORBA::ULong rate) + { + this->rate_ = rate; + } + ::CORBA::Boolean + Receiver_exec_i::get_data (void) + { + return this->get_data_; + } + + void + Receiver_exec_i::get_data ( + ::CORBA::Boolean get_data) + { + this->get_data_ = get_data; + } + + ::CORBA::Boolean + Receiver_exec_i::read_data (void) + { + return this->read_data_; + } + + void + Receiver_exec_i::read_data ( + ::CORBA::Boolean read_data) + { + this->read_data_ = read_data; + } + + ::CORBA::Boolean + Receiver_exec_i::raw_listen (void) + { + return this->raw_listen_; + } + + void + Receiver_exec_i::raw_listen ( + ::CORBA::Boolean raw_listen) + { + this->raw_listen_ = raw_listen; + } + + // Port operations. + ::CCM_DDS::ShapeType::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new ShapeType RAW listener\n"))); + return new ShapeType_Listener_exec_i (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Shapes::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + if (this->read_data ()) + { + this->reader_ = this->context_->get_connection_info_out_data (); + } + if (this->get_data ()) + { + this->getter_ = this->context_->get_connection_info_get_fresh_data (); + } + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + + lc->mode (this->raw_listen_ ? ::CCM_DDS::ONE_BY_ONE : ::CCM_DDS::NOT_ENABLED); + + // calculate the interval time + long const usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(0, usec), + ACE_Time_Value(0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Shapes_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h new file mode 100644 index 00000000000..299c34d06ea --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h @@ -0,0 +1,150 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Shapes_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_Shapes_Receiver_Impl +{ + class Receiver_exec_i; + /** + * @class reader activity generator + * + * @brief an active object used by Receiver to perform a periodical read action + * + */ + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + + class RECEIVER_EXEC_Export ShapeType_Listener_exec_i + : public virtual ::CCM_DDS::ShapeType::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + ShapeType_Listener_exec_i (void); + virtual ~ShapeType_Listener_exec_i (void); + + virtual void + on_one_data ( + const ShapeType & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const ShapeType_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + }; + + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported operations and attributes. + void read_one (void); + void read_all (void); + void get_one (void); + void get_all (void); + + // Component attributes. + virtual ::CORBA::ULong rate (void); + + virtual void rate (::CORBA::ULong rate); + + virtual ::CORBA::Boolean get_data (void); + + virtual void get_data (::CORBA::Boolean get_data); + + virtual ::CORBA::Boolean read_data (void); + + virtual void read_data (::CORBA::Boolean read_data); + + virtual ::CORBA::Boolean raw_listen (void); + + virtual void raw_listen (::CORBA::Boolean raw_listen); + + // Port operations. + virtual ::CCM_DDS::ShapeType::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Shapes::CCM_Receiver_Context_var context_; + ::CCM_DDS::ShapeType::Reader_var reader_; + ::CCM_DDS::ShapeType::Getter_var getter_; + + read_action_Generator * ticker_; + CORBA::ULong rate_; + ::CORBA::Boolean get_data_, read_data_, raw_listen_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Shape_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl new file mode 100644 index 00000000000..e213a5a3eee --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_SENDER_IDL +#define DDS_SENDER_IDL + +#include "Connector/Shapes_Connector.idl" +#include "Connector/Shapes_ConnectorE.idl" + +module Shapes +{ + component Sender + { + port CCM_DDS::ShapeType::DDS_Write info_write; + attribute unsigned long rate; + attribute unsigned short max_x; + attribute unsigned short max_y; + attribute unsigned short max_size; + attribute boolean resize_shape; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc new file mode 100644 index 00000000000..3fe8f672eb2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Shapes_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Sender_idl_gen) : componentidldefaults { + after += DDS_Shapes_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Shapes_Sender.idl + } +} + +project(DDS_Sender_lem_gen) : ciaoidldefaults { + after += DDS_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Shapes_SenderE.idl + } +} + +project(DDS_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Sender_lem_gen DDS_Sender_stub DDS_Shapes_Base_stub + libs += DDS_Shapes_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_SenderEC.cpp + } + + Header_Files { + Shapes_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Shapes_SenderEC.inl + } +} + +project(DDS_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Sender_idl_gen DDS_Shapes_Base_stub DDS_Shapes_Connector_stub + libs += DDS_Shapes_Base_stub DDS_Shapes_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_SenderC.cpp + } + + Header_Files { + Shapes_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Shapes_SenderC.inl + } +} + +project(DDS_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Sender_lem_stub DDS_Sender_stub DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_Sender_exec.cpp + } + + Header_Files { + Shapes_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Shapes_Base_stub DDS_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt DDS_Shapes_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_Shapes_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt DDS_Shapes_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Shapes_SenderS.cpp + Shapes_Sender_svnt.cpp + } + + Header_Files { + Shapes_SenderS.h + Shapes_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Shapes_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp new file mode 100644 index 00000000000..f17efba6189 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp @@ -0,0 +1,288 @@ +// -*- C++ -*- +// $Id$ + +#include "Shapes_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_Shapes_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + pulse_Generator::~pulse_Generator () + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : rate_ (1), + max_x_ (100), + max_y_ (100), + max_size_ (25), + resize_ (false), + x_increasing_ (false), + y_increasing_ (false), + size_increasing_ (false) + { + square_ = new ShapeType; + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + + void + Sender_exec_i::tick () + { + if (this->x_increasing_) + { + ++square_->x; + this->x_increasing_ = square_->x + 1 <= this->max_x_; + } + else + { + --square_->x; + this->x_increasing_ = square_->x - 1 < 0; + } + if (this->y_increasing_) + { + ++square_->y; + this->y_increasing_ = square_->y + 1 <= this->max_y_; + } + else + { + --square_->y; + this->y_increasing_ = square_->y - 1 < 0; + } + if (resize_shape ()) + { + if (this->size_increasing_) + { + ++square_->shapesize; + this->size_increasing_ = square_->shapesize + 1 <= this->max_size_; + } + else + { + --square_->shapesize; + this->size_increasing_ = square_->shapesize - 1 < 0; + } + } + try + { + this->writer_->write_one (*square_, this->instance_handle_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("UPDATED Shape_info for <%C> %u:%u:%u\n"), + square_->color.in (), + square_->x, + square_->y, + square_->shapesize)); + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Shape_info for <%C> not updated: <%C> didn't exist.\n"), + square_->color.in (), square_->color.in ())); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Internal Error while updating Shape_info for <%C>.\n"), + square_->color.in ())); + } + } + + void + Sender_exec_i::start (void) + { + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + try + { + this->writer_->unregister_instance (*this->square_, this->instance_handle_); + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Shape_info for <%C> not deleted: <%C> didn't exist.\n"), + square_->color.in (), square_->color.in ())); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while deleting Shape_info for <%C>.\n"), + square_->color.in ())); + } + delete this->ticker_; + delete this->square_; + } + + ::CORBA::ULong + Sender_exec_i::rate (void) + { + return this->rate_; + } + + void + Sender_exec_i::rate (::CORBA::ULong rate) + { + this->rate_ = rate; + } + + ::CORBA::UShort + Sender_exec_i::max_x (void) + { + return this->max_x_; + } + + void + Sender_exec_i::max_x (::CORBA::UShort max_x) + { + this->max_x_ = max_x; + } + + ::CORBA::UShort + Sender_exec_i::max_y (void) + { + return this->max_y_; + } + + void + Sender_exec_i::max_y (::CORBA::UShort max_y) + { + this->max_y_ = max_y; + } + + ::CORBA::UShort + Sender_exec_i::max_size (void) + { + return this->max_size_; + } + + void + Sender_exec_i::max_size (::CORBA::UShort max_size) + { + this->max_size_ = max_size; + } + + void + Sender_exec_i::resize_shape (::CORBA::Boolean resize) + { + this->resize_ = resize; + } + + ::CORBA::Boolean + Sender_exec_i::resize_shape () + { + return this->resize_; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Shapes::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_write_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + this->start (); + square_->x = ACE_OS::rand () % this->max_x_; + square_->y = ACE_OS::rand () % this->max_y_; + square_->shapesize = max_size_; + square_->color = CORBA::string_dup("GREEN"); + + //Register shape with dds. + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("REGISTER Shape_info for <%C> %u:%u:%u\n"), + square_->color.in (), + square_->x, + square_->y, + square_->shapesize)); + try + { + this->instance_handle_ = this->writer_->register_instance (*square_); + } + catch (const CCM_DDS::AlreadyCreated& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Shape_info for <%C> already created.\n"), + square_->color.in ())); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating Shape_info for <%C>.\n"), + square_->color.in ())); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Shape_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h new file mode 100644 index 00000000000..f79c7d0a2dc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h @@ -0,0 +1,104 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + +#include "Shapes_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_Shapes_Sender_Impl +{ + class Sender_exec_i; + + class pulse_Generator : public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + + virtual ~pulse_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::ULong rate (void); + + virtual void rate (::CORBA::ULong rate); + + virtual ::CORBA::UShort max_x (void); + + virtual void max_x (::CORBA::UShort max_x); + + virtual ::CORBA::UShort max_y (void); + + virtual void max_y (::CORBA::UShort max_y); + + virtual ::CORBA::UShort max_size (void); + + virtual void max_size (::CORBA::UShort max_size); + + virtual void resize_shape (::CORBA::Boolean resize); + + virtual ::CORBA::Boolean resize_shape (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void tick (); + + private: + void start (void); + void stop (void); + + CCM_DDS::ShapeType::Writer_var writer_; + + pulse_Generator * ticker_; + ::Shapes::CCM_Sender_Context_var context_; + CORBA::ULong rate_; + CORBA::UShort max_x_; + CORBA::UShort max_y_; + CORBA::UShort max_size_; + CORBA::Boolean resize_; + + bool x_increasing_; + bool y_increasing_; + bool size_increasing_; + + ShapeType* square_; + + ::DDS::InstanceHandle_t instance_handle_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Shape_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp new file mode 100644 index 00000000000..afe644d93d1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp @@ -0,0 +1,464 @@ + + + Shapes_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Shapes_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Shapes_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Shapes_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Shapes_Shapes_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Shapes_Shapes_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Shapes_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Shapes_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Shape_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Shapes_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + rate + + + tk_long + + + 1 + + + + + get_data + + + tk_boolean + + + false + + + + + read_data + + + tk_boolean + + + false + + + + + raw_listen + + + tk_boolean + + + true + + + + + + Shapes_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + Square + + + + + + Shapes_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + Square + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_long + + + 10 + + + + + max_x + + + tk_short + + + 225 + + + + + max_y + + + tk_short + + + 250 + + + + + max_size + + + tk_short + + + 25 + + + + + resize_shape + + + tk_boolean + + + true + + + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Shapes_Connector_exec + + + DDS_Shapes_Connector_exec + + + Shapes_Connector_svnt + + + DDS_Shapes_Connector_svnt + + + Shapes_Connector_stub + + + DDS_Shapes_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl new file mode 100755 index 00000000000..66131f97fdb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p b/modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p new file mode 100644 index 00000000000..5c131f20cd1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p @@ -0,0 +1,17 @@ +// $Id$ + +// IDL3+ + +#ifndef TEST_IDL3P +#define TEST_IDL3P + +module Hello_DDS +{ + component Sender + { + port DDS_Write push_message; + port DDS_Write push_state; + }; +}; + +#endif /* TEST_IDL3P */ diff --git a/modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl b/modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl new file mode 100644 index 00000000000..c4690e51d37 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl @@ -0,0 +1,141 @@ +// $Id$ + +#ifndef DDS_CCM_BASE_IDL +#define DDS_CCM_BASE_IDL + +#include +#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl" +#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlE.idl" +#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl" +#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlE.idl" +#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl" +#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerE.idl" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerE.idl" +#include "connectors/dds4ccm/idl/dds4ccm_Connector.idl" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorE.idl" +#include "connectors/dds4ccm/idl/dds_rtf2_dcpsE.idl" + +#define TYPED_MODULE(T, TSeq, T_MODULE) \ +module CCM_DDS \ +{ \ + module T_MODULE { \ + abstract interface InstanceHandleManager { \ + DDS::InstanceHandle_t register_instance (in T datum); \ + void unregister_instance (in T datum, in DDS::InstanceHandle_t instance_handle); \ + }; \ + local interface Writer : InstanceHandleManager \ + { \ + void write_one (in T datum, in DDS::InstanceHandle_t instance_handle) \ + raises (InternalError); \ + void write_many (in TSeq data) \ + raises (InternalError); \ + attribute boolean is_coherent_write; \ + }; \ + local interface Updater : InstanceHandleManager \ + { \ + void create_one (in T datum) \ + raises (AlreadyCreated, \ + InternalError); \ + void update_one (in T datum, in DDS::InstanceHandle_t instance_handle) \ + raises (NonExistent, \ + InternalError); \ + void delete_one (in T datum,in DDS::InstanceHandle_t instance_handle) \ + raises (NonExistent, \ + InternalError); \ + void create_many (in TSeq data) \ + raises (AlreadyCreated, \ + InternalError); \ + void update_many (in TSeq data) \ + raises (NonExistent, \ + InternalError); \ + void delete_many (in TSeq data) \ + raises (NonExistent, \ + InternalError); \ + readonly attribute boolean is_global_scope; \ + attribute boolean is_coherent_write; \ + }; \ + local interface Getter \ + { \ + boolean get_one (out T datum, out ReadInfo info) \ + raises (InternalError); \ + boolean get_many (out TSeq data, out ReadInfoSeq infos) \ + raises (InternalError); \ + attribute DDS::Duration_t time_out; \ + attribute DataNumber_t max_delivered_data; \ + }; \ + local interface Reader \ + { \ + void read_last (out TSeq data, out ReadInfoSeq infos) \ + raises (InternalError); \ + void read_all (out TSeq data, out ReadInfoSeq infos) \ + raises (InternalError); \ + void read_one_last (inout T datum, out ReadInfo info, \ + in DDS::InstanceHandle_t instance_handle) \ + raises (NonExistent, InternalError); \ + void read_one_all (in T datum, out TSeq data, out ReadInfoSeq infos, \ + in DDS::InstanceHandle_t instance_handle) \ + raises (NonExistent, InternalError); \ + attribute QueryFilter filter \ + setraises (InternalError); \ + }; \ + local interface Listener \ + { \ + void on_one_data (in T datum, in ReadInfo info); \ + void on_many_data (in TSeq data, in ReadInfoSeq infos); \ + }; \ + local interface StateListener { \ + void on_creation (in T datum, in ReadInfo info); \ + void on_one_update (in T datum, in ReadInfo info); \ + void on_many_updates (in TSeq data, in ReadInfoSeq infos); \ + void on_deletion (in T datum, in ReadInfo info); \ + }; \ + porttype DDS_Write { \ + uses Writer data; \ + uses DDS::DataWriter dds_entity; \ + }; \ + porttype DDS_Update { \ + uses Updater data; \ + uses DDS::DataWriter dds_entity; \ + }; \ + porttype DDS_Read { \ + uses Reader data; \ + uses DDS::DataReader dds_entity; \ + provides PortStatusListener status; \ + }; \ + porttype DDS_Get { \ + uses Reader data; \ + uses Getter fresh_data; \ + uses DDS::DataReader dds_entity; \ + provides PortStatusListener status; \ + }; \ + porttype DDS_Listen { \ + uses Reader data; \ + uses DataListenerControl data_control; \ + provides Listener data_listener; \ + uses DDS::DataReader dds_entity; \ + provides PortStatusListener status; \ + }; \ + porttype DDS_StateListen { \ + uses Reader data; \ + uses StateListenerControl data_control; \ + provides StateListener data_listener; \ + uses DDS::DataReader dds_entity; \ + provides PortStatusListener status; \ + }; \ + connector DDS_State : DDS_TopicBase { \ + mirrorport DDS_Update observable; \ + mirrorport DDS_Read passive_observer; \ + mirrorport DDS_Get pull_observer; \ + mirrorport DDS_Listen push_observer; \ + mirrorport DDS_StateListen push_state_observer; \ + }; \ + connector DDS_Event : DDS_TopicBase { \ + mirrorport DDS_Write supplier; \ + mirrorport DDS_Get pull_consumer; \ + mirrorport DDS_Listen push_consumer; \ + }; \ + }; \ +}; \ + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h new file mode 100644 index 00000000000..9b7875c02ea --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h @@ -0,0 +1,83 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:134 + +#ifndef _TAO_IDL_CCM_DDS_H +#define _TAO_IDL_CCM_DDS_H + +#include /**/ "ace/pre.h" + + +#include /**/ "ace/config-all.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +#include /**/ "dds4ccm_stub_export.h" +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/ORB.h" +#include "tao/UserException.h" +#include "tao/Basic_Types.h" +#include "tao/String_Manager_T.h" +#include "tao/Sequence_T.h" +#include "tao/Seq_Var_T.h" +#include "tao/Seq_Out_T.h" +#include "tao/VarOut_T.h" +#include /**/ "tao/Versioned_Namespace.h" + +#include "ComponentsC.h" +#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlC.h" +#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlEC.h" +#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlC.h" +#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlEC.h" +#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerC.h" +#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerEC.h" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerC.h" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerEC.h" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorC.h" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorEC.h" +#include "connectors/dds4ccm/idl/dds_rtf2_dcpsEC.h" +#include "dds_rtf2_dcpsC.h" + +#if defined (TAO_EXPORT_MACRO) +#undef TAO_EXPORT_MACRO +#endif +#define TAO_EXPORT_MACRO DDS4CCM_STUB_Export + +// TAO_IDL - Generated from +// c:\ace\latest\ace_wrappers\tao\tao_idl\be\be_visitor_module/module_ch.cpp:49 + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + + diff --git a/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h new file mode 100644 index 00000000000..2a6dce1392d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:471 + +#ifndef _TAO_IDL_CCM_DDSS_H +#define _TAO_IDL_CCM_DDSS_H + +#include /**/ "ace/pre.h" + +#include "dds4ccm_BaseC.h" +#include "dds_rtf2_dcpsS.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlS.h" +#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlS.h" +#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerS.h" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerS.h" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorS.h" + +#include /**/ "dds4ccm_skel_export.h" + +#include /**/ "ace/post.h" +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc new file mode 100644 index 00000000000..7b4a3425cb8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc @@ -0,0 +1,140 @@ +// $Id$ + +project (DDS4CCM_idl_gen) : ciaoidldefaults, anytypecode { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DDS4CCM_STUB_Export \ + -Wb,stub_export_include=dds4ccm_stub_export.h \ + -Wb,skel_export_macro=DDS4CCM_SKEL_Export \ + -Wb,skel_export_include=dds4ccm_skel_export.h \ + -I$(CIAO_ROOT)/connectors -Glem + + IDL_Files { + idlflags += -Gxhst -Gxhsk -Glem -Glfa -SS + dds4ccm_Base.idl + } + + IDL_Files { + dds_rtf2_dcps.idl + dds_rtf2_dcps_i_handle.idl + dds4ccm_PortStatusListener.idl + dds4ccm_DataListenerControl.idl + dds4ccm_ConnectorStatusListener.idl + dds4ccm_StateListenerControl.idl + dds4ccm_Connector.idl + } +} + +project (DDS4CCM_lem_gen) : ciaoidldefaults, anytypecode { + custom_only = 1 + after += DDS4CCM_idl_gen + idlflags += -I$(CIAO_ROOT)/connectors \ + -Wb,stub_export_macro=DDS4CCM_LEM_STUB_Export \ + -Wb,stub_export_include=dds4ccm_lem_stub_export.h -SS + + IDL_Files { + idlflags += -Gxhst + dds_rtf2_dcpsE.idl + } + + IDL_Files { + dds4ccm_BaseE.idl + dds4ccm_PortStatusListenerE.idl + dds4ccm_DataListenerControlE.idl + dds4ccm_ConnectorStatusListenerE.idl + dds4ccm_StateListenerControlE.idl + dds4ccm_ConnectorE.idl + dds_rtf2_dcps_i_handleE.idl + } +} + +project (DDS4CCM_stub) : ccm_stub, ciaolib_with_idl, ciao_output, taolib, anytypecode { + + after += DDS4CCM_idl_gen + includes += $(CIAO_ROOT)/connectors + + dynamicflags += DDS4CCM_STUB_BUILD_DLL + IDL_Files { + } + + Header_Files { + dds4ccm_BaseC.h + dds4ccm_PortStatusListenerC.h + dds4ccm_DataListenerControlC.h + dds4ccm_ConnectorStatusListenerC.h + dds4ccm_StateListenerControlC.h + dds_rtf2_dcpsC.h + } + + Source_Files { + dds4ccm_BaseC.cpp + dds4ccm_PortStatusListenerC.cpp + dds4ccm_DataListenerControlC.cpp + dds4ccm_ConnectorStatusListenerC.cpp + dds4ccm_StateListenerControlC.cpp + dds4ccm_ConnectorC.cpp + dds_rtf2_dcpsC.cpp + dds_rtf2_dcps_i_handleC.cpp + dds_rtf2_dcps_instance_handleC.cpp + } +} + +project (DDS4CCM_lem_stub) : ccm_svnt, ciaolib_with_idl, ciao_output, taolib, valuetype, anytypecode, ifr_client { + after += DDS4CCM_stub DDS4CCM_lem_gen + libs += DDS4CCM_stub + includes += $(CIAO_ROOT)/connectors + sharedname = DDS4CCM_lem_stub + dynamicflags += DDS4CCM_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + dds4ccm_BaseEC.cpp + dds_rtf2_dcpsEC.cpp + dds4ccm_PortStatusListenerEC.cpp + dds4ccm_DataListenerControlEC.cpp + dds4ccm_ConnectorStatusListenerEC.cpp + dds4ccm_StateListenerControlEC.cpp + dds4ccm_ConnectorEC.cpp + dds_rtf2_dcps_i_handleEC.cpp + } + + Header_Files { + dds4ccm_BaseEC.h + dds_rtf2_dcpsEC.h + dds4ccm_PortStatusListenerEC.h + dds4ccm_DataListenerControlEC.h + dds4ccm_ConnectorStatusListenerEC.h + dds4ccm_StateListenerControlEC.h + dds4ccm_lem_stub_export.h + } +} + +project (DDS4CCM_skel) : ciaolib_with_idl, ciao_output, taolib, anytypecode, portableserver, ciao_servant { + after += DDS4CCM_stub + libs += DDS4CCM_stub + includes += $(CIAO_ROOT)/connectors + + dynamicflags += DDS4CCM_SKEL_BUILD_DLL + IDL_Files { + } + + Header_Files { + dds4ccm_BaseS.h + dds4ccm_PortStatusListenerS.h + dds4ccm_DataListenerControlS.h + dds4ccm_StateListenerControlS.h + dds4ccm_ConnectorStatusListenerS.h + dds_rtf2_dcpsS.h + } + + Source_Files { + dds_rtf2_dcpsS.cpp + dds4ccm_PortStatusListenerS.cpp + dds4ccm_DataListenerControlS.cpp + dds4ccm_ConnectorStatusListenerS.cpp + dds4ccm_ConnectorS.cpp + dds4ccm_StateListenerControlS.cpp + dds_rtf2_dcps_i_handleS.cpp + } +} diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl new file mode 100644 index 00000000000..040a0d4cba6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl @@ -0,0 +1,69 @@ +// $Id$ +/** + * @file dds4ccm_Base.idl + * + */ + +#ifndef DDS4CCM_BASE_IDL3 +#define DDS4CCM_BASE_IDL3 + +#include "dds_rtf2_dcps.idl" + +#define connector component + +module CCM_DDS +{ + typedef unsigned long DataNumber_t; // count or index of data + typedef sequence DataNumberSeq; + const DataNumber_t UNLIMITED = 0; + + enum AccessStatus { + FRESH_INFO, + ALREADY_SEEN + }; + + enum InstanceStatus { + INSTANCE_CREATED, + INSTANCE_FILTERED_IN, + INSTANCE_UPDATED, + INSTANCE_FILTERED_OUT, + INSTANCE_DELETED + }; + + struct ReadInfo { + DDS::InstanceHandle_t instance_handle; + DDS::Time_t source_timestamp; + AccessStatus access_status; + InstanceStatus instance_status; + }; + typedef sequence ReadInfoSeq; + + struct QueryFilter { + string query; + ::DDS::StringSeq query_parameters; + }; + + enum ListenerMode { + NOT_ENABLED, + ONE_BY_ONE, + MANY_BY_MANY + }; + + exception AlreadyCreated { + DataNumberSeq indexes; // of the erroneous + }; + + exception NonExistent{ + DataNumberSeq indexes; // of the erroneous + }; + + exception InternalError{ + DDS::ReturnCode_t error_code; + DataNumber_t index; // of the erroneaous + }; + + exception NonChangeable { + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl new file mode 100644 index 00000000000..93605f843bd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +#ifndef DDS4CCM_CONNECTOR_IDL +#define DDS4CCM_CONNECTOR_IDL + +#include +#include "connectors/dds4ccm/idl/dds4ccm_Base.idl" +#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl" + +#define connector component + +module CCM_DDS +{ + connector DDS_Base { + uses ConnectorStatusListener error_listener; + attribute DDS::DomainId_t domain_id + setraises (NonChangeable); + attribute string qos_profile + setraises (NonChangeable); + }; + connector DDS_TopicBase : DDS_Base { + attribute string topic_name + setraises (NonChangeable); + attribute DDS::StringSeq key_fields + setraises (NonChangeable); + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl new file mode 100644 index 00000000000..7b4d22d48bd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl @@ -0,0 +1,32 @@ +// $Id$ + +/** + * @file dds4ccm_ConnectorStatusListener.idl + * + */ + +#ifndef DDS4CCM_CONNECTORSTATUSLISTNER_IDL3 +#define DDS4CCM_CONNECTORSTATUSLISTNER_IDL3 + +#include "connectors/dds4ccm/idl/dds4ccm_Base.idl" + +module CCM_DDS +{ + local interface ConnectorStatusListener { + // status that are relevant system-wide + void on_inconsistent_topic(in DDS::Topic the_topic, + in DDS::InconsistentTopicStatus status); + void on_requested_incompatible_qos(in DDS::DataReader the_reader, + in DDS::RequestedIncompatibleQosStatus status); + void on_sample_rejected(in DDS::DataReader the_reader, + in DDS::SampleRejectedStatus status); + void on_offered_deadline_missed(in DDS::DataWriter the_writer, + in DDS::OfferedDeadlineMissedStatus status); + void on_offered_incompatible_qos(in DDS::DataWriter the_writer, + in DDS::OfferedIncompatibleQosStatus status); + void on_unexpected_status (in DDS::Entity the_entity, + in DDS::StatusKind status_kind); + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl new file mode 100644 index 00000000000..a1011304116 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl @@ -0,0 +1,21 @@ +// $Id$ + +/** + * @file dds4ccm_DataListenerControl.idl + * + */ + +#ifndef DDS4CCM_LISTENERCONTROL_IDL3 +#define DDS4CCM_LISTENERCONTROL_IDL3 + +#include "connectors/dds4ccm/idl/dds4ccm_Base.idl" + +module CCM_DDS +{ + local interface DataListenerControl { + attribute ListenerMode mode; + attribute DataNumber_t max_delivered_data; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl new file mode 100644 index 00000000000..7407cfa9cc7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl @@ -0,0 +1,22 @@ +// $Id$ +/** + * @file dds4ccm_PortStatusListener.idl + * + */ + +#ifndef DDS4CCM_PORTSTATUSLISTNER_IDL3 +#define DDS4CCM_PORTSTATUSLISTNER_IDL3 + +#include "connectors/dds4ccm/idl/dds4ccm_Base.idl" + +module CCM_DDS +{ + local interface PortStatusListener { + void on_requested_deadline_missed(in DDS::DataReader the_reader, + in DDS::RequestedDeadlineMissedStatus status); + void on_sample_lost(in DDS::DataReader the_reader, + in DDS::SampleLostStatus status); + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl new file mode 100644 index 00000000000..871062ad0b6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl @@ -0,0 +1,19 @@ +// $Id$ + +/** + * @file dds4ccm_StateListenerControl.idl + */ + +#ifndef DDS4CCM_STATELISTENERCONTROL_IDL +#define DDS4CCM_STATELISTENERCONTROL_IDL + +#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl" + +module CCM_DDS +{ + local interface StateListenerControl : DataListenerControl { + attribute boolean is_filter_interpreted; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl new file mode 100644 index 00000000000..12bc98b4df3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl @@ -0,0 +1,1237 @@ +// $Id$ + +#ifndef DDS_RFT2_DCPS_IDL +#define DDS_RFT2_DCPS_IDL + +#define DOMAINID_TYPE_NATIVE long +#define HANDLE_TYPE_NATIVE long +#define HANDLE_NIL_NATIVE 0 +#define BUILTIN_TOPIC_KEY_TYPE_NATIVE long + +#define TheParticipantFactory +#define PARTICIPANT_QOS_DEFAULT +#define TOPIC_QOS_DEFAULT +#define PUBLISHER_QOS_DEFAULT +#define SUBSCRIBER_QOS_DEFAULT +#define DATAWRITER_QOS_DEFAULT +#define DATAREADER_QOS_DEFAULT +#define DATAWRITER_QOS_USE_TOPIC_QOS +#define DATAREADER_QOS_USE_TOPIC_QOS + +#include "tao/StringSeq.pidl" +#include "connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl" + +module DDS { + typedef long DomainId_t; + struct BuiltinTopicKey_t { + long value[3]; + }; + typedef long ReturnCode_t; + typedef long QosPolicyId_t; + typedef sequence StringSeq; + + struct Duration_t { + long sec; + unsigned long nanosec; + }; + + struct Time_t { + long sec; + unsigned long nanosec; + }; + + // ---------------------------------------------------------------------- + // Pre-defined values + // ---------------------------------------------------------------------- + //const InstanceHandle_t HANDLE_NIL = 0; + + const long LENGTH_UNLIMITED = -1; + + const long DURATION_INFINITE_SEC = 0x7fffffff; + const unsigned long DURATION_INFINITE_NSEC = 0x7fffffff; + + const long DURATION_ZERO_SEC = 0; + const unsigned long DURATION_ZERO_NSEC = 0; + + const long TIME_INVALID_SEC = -1; + const unsigned long TIME_INVALID_NSEC = 0xffffffff; + + // ---------------------------------------------------------------------- + // Return codes + // ---------------------------------------------------------------------- + const ReturnCode_t RETCODE_OK = 0; + const ReturnCode_t RETCODE_ERROR = 1; + const ReturnCode_t RETCODE_UNSUPPORTED = 2; + const ReturnCode_t RETCODE_BAD_PARAMETER = 3; + const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = 4; + const ReturnCode_t RETCODE_OUT_OF_RESOURCES = 5; + const ReturnCode_t RETCODE_NOT_ENABLED = 6; + const ReturnCode_t RETCODE_IMMUTABLE_POLICY = 7; + const ReturnCode_t RETCODE_INCONSISTENT_POLICY = 8; + const ReturnCode_t RETCODE_ALREADY_DELETED = 9; + const ReturnCode_t RETCODE_TIMEOUT = 10; + const ReturnCode_t RETCODE_NO_DATA = 11; + const ReturnCode_t RETCODE_ILLEGAL_OPERATION = 12; + + // ---------------------------------------------------------------------- + // Status to support listeners and conditions + // ---------------------------------------------------------------------- + + typedef unsigned long StatusKind; + typedef unsigned long StatusMask; // bit-mask StatusKind + + const StatusKind INCONSISTENT_TOPIC_STATUS = 0x0001 << 0; + const StatusKind OFFERED_DEADLINE_MISSED_STATUS = 0x0001 << 1; + const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = 0x0001 << 2; + const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 5; + const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 6; + const StatusKind SAMPLE_LOST_STATUS = 0x0001 << 7; + const StatusKind SAMPLE_REJECTED_STATUS = 0x0001 << 8; + const StatusKind DATA_ON_READERS_STATUS = 0x0001 << 9; + const StatusKind DATA_AVAILABLE_STATUS = 0x0001 << 10; + const StatusKind LIVELINESS_LOST_STATUS = 0x0001 << 11; + const StatusKind LIVELINESS_CHANGED_STATUS = 0x0001 << 12; + const StatusKind PUBLICATION_MATCHED_STATUS = 0x0001 << 13; + const StatusKind SUBSCRIPTION_MATCHED_STATUS = 0x0001 << 14; + + struct InconsistentTopicStatus { + long total_count; + long total_count_change; + }; + + struct SampleLostStatus { + long total_count; + long total_count_change; + }; + + enum SampleRejectedStatusKind { + NOT_REJECTED, + REJECTED_BY_INSTANCES_LIMIT, + REJECTED_BY_SAMPLES_LIMIT, + REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT + }; + + struct SampleRejectedStatus { + long total_count; + long total_count_change; + SampleRejectedStatusKind last_reason; + InstanceHandle_t last_instance_handle; + }; + + struct LivelinessLostStatus { + long total_count; + long total_count_change; + }; + + struct LivelinessChangedStatus { + long alive_count; + long not_alive_count; + long alive_count_change; + long not_alive_count_change; + InstanceHandle_t last_publication_handle; + }; + + struct OfferedDeadlineMissedStatus { + long total_count; + long total_count_change; + InstanceHandle_t last_instance_handle; + }; + + struct RequestedDeadlineMissedStatus { + long total_count; + long total_count_change; + InstanceHandle_t last_instance_handle; + }; + + struct QosPolicyCount { + QosPolicyId_t policy_id; + long count; + }; + + typedef sequence QosPolicyCountSeq; + + struct OfferedIncompatibleQosStatus { + long total_count; + long total_count_change; + QosPolicyId_t last_policy_id; + QosPolicyCountSeq policies; + }; + + struct RequestedIncompatibleQosStatus { + long total_count; + long total_count_change; + QosPolicyId_t last_policy_id; + QosPolicyCountSeq policies; + }; + + + struct PublicationMatchedStatus { + long total_count; + long total_count_change; + long current_count; + long current_count_change; + InstanceHandle_t last_subscription_handle; + }; + + + struct SubscriptionMatchedStatus { + long total_count; + long total_count_change; + long current_count; + long current_count_change; + InstanceHandle_t last_publication_handle; + }; + + // ---------------------------------------------------------------------- + // Listeners + // ---------------------------------------------------------------------- + + local interface Listener; + local interface Entity; + local interface TopicDescription; + local interface Topic; + local interface ContentFilteredTopic; + local interface MultiTopic; + local interface DataWriter; + local interface DataReader; + local interface Subscriber; + local interface Publisher; + + typedef sequence DataReaderSeq; + + local interface Listener {}; + + local interface TopicListener : Listener { + void on_inconsistent_topic(in Topic the_topic, + in InconsistentTopicStatus status); + }; + + local interface DataWriterListener : Listener { + void on_offered_deadline_missed( + in DataWriter writer, + in OfferedDeadlineMissedStatus status); + void on_offered_incompatible_qos( + in DataWriter writer, + in OfferedIncompatibleQosStatus status); + void on_liveliness_lost( + in DataWriter writer, + in LivelinessLostStatus status); + void on_publication_matched( + in DataWriter writer, + in PublicationMatchedStatus status); + }; + + local interface PublisherListener : DataWriterListener { + }; + + local interface DataReaderListener : Listener { + void on_requested_deadline_missed( + in DataReader the_reader, + in RequestedDeadlineMissedStatus status); + void on_requested_incompatible_qos( + in DataReader the_reader, + in RequestedIncompatibleQosStatus status); + void on_sample_rejected( + in DataReader the_reader, + in SampleRejectedStatus status); + void on_liveliness_changed( + in DataReader the_reader, + in LivelinessChangedStatus status); + void on_data_available( + in DataReader the_reader); + void on_subscription_matched( + in DataReader the_reader, + in SubscriptionMatchedStatus status); + void on_sample_lost( + in DataReader the_reader, + in SampleLostStatus status); + }; + + local interface SubscriberListener : DataReaderListener { + void on_data_on_readers( + in Subscriber the_subscriber); + }; + + + local interface DomainParticipantListener : TopicListener, + PublisherListener, + SubscriberListener { + }; + + + // ---------------------------------------------------------------------- + // Conditions + // ---------------------------------------------------------------------- + + local interface Condition { + boolean get_trigger_value(); + }; + + typedef sequence ConditionSeq; + + local interface WaitSet { + ReturnCode_t wait( + inout ConditionSeq active_conditions, + in Duration_t timeout); + ReturnCode_t attach_condition( + in Condition cond); + ReturnCode_t detach_condition( + in Condition cond); + ReturnCode_t get_conditions( + inout ConditionSeq attached_conditions); + }; + + local interface GuardCondition : Condition { + ReturnCode_t set_trigger_value( + in boolean value); + }; + + local interface StatusCondition : Condition { + StatusMask get_enabled_statuses(); + ReturnCode_t set_enabled_statuses( + in StatusMask mask); + Entity get_entity(); + }; + + // Sample states to support reads + typedef unsigned long SampleStateKind; + const SampleStateKind READ_SAMPLE_STATE = 0x0001 << 0; + const SampleStateKind NOT_READ_SAMPLE_STATE = 0x0001 << 1; + + // This is a bit-mask SampleStateKind + typedef unsigned long SampleStateMask; + const SampleStateMask ANY_SAMPLE_STATE = 0xffff; + + // View states to support reads + typedef unsigned long ViewStateKind; + const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0; + const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1; + + // This is a bit-mask ViewStateKind + typedef unsigned long ViewStateMask; + const ViewStateMask ANY_VIEW_STATE = 0xffff; + + // Instance states to support reads + typedef unsigned long InstanceStateKind; + const InstanceStateKind ALIVE_INSTANCE_STATE = 0x0001 << 0; + const InstanceStateKind NOT_ALIVE_DISPOSED_INSTANCE_STATE = 0x0001 << 1; + const InstanceStateKind NOT_ALIVE_NO_WRITERS_INSTANCE_STATE = 0x0001 << 2; + + // This is a bit-mask InstanceStateKind + typedef unsigned long InstanceStateMask; + const InstanceStateMask ANY_INSTANCE_STATE = 0xffff; + const InstanceStateMask NOT_ALIVE_INSTANCE_STATE = 0x006; + + + local interface ReadCondition : Condition { + SampleStateMask get_sample_state_mask(); + ViewStateMask get_view_state_mask(); + InstanceStateMask get_instance_state_mask(); + DataReader get_datareader(); + }; + + local interface QueryCondition : ReadCondition { + string get_query_expression(); + ReturnCode_t get_query_parameters( + inout StringSeq query_parameters); + ReturnCode_t set_query_parameters( + in StringSeq query_parameters); + }; + + // ---------------------------------------------------------------------- + // Qos + // ---------------------------------------------------------------------- + const string USERDATA_QOS_POLICY_NAME = "UserData"; + const string DURABILITY_QOS_POLICY_NAME = "Durability"; + const string PRESENTATION_QOS_POLICY_NAME = "Presentation"; + const string DEADLINE_QOS_POLICY_NAME = "Deadline"; + const string LATENCYBUDGET_QOS_POLICY_NAME = "LatencyBudget"; + const string OWNERSHIP_QOS_POLICY_NAME = "Ownership"; + const string OWNERSHIPSTRENGTH_QOS_POLICY_NAME = "OwnershipStrength"; + const string LIVELINESS_QOS_POLICY_NAME = "Liveliness"; + const string TIMEBASEDFILTER_QOS_POLICY_NAME = "TimeBasedFilter"; + const string PARTITION_QOS_POLICY_NAME = "Partition"; + const string RELIABILITY_QOS_POLICY_NAME = "Reliability"; + const string DESTINATIONORDER_QOS_POLICY_NAME = "DestinationOrder"; + const string HISTORY_QOS_POLICY_NAME = "History"; + const string RESOURCELIMITS_QOS_POLICY_NAME = "ResourceLimits"; + const string ENTITYFACTORY_QOS_POLICY_NAME = "EntityFactory"; + const string WRITERDATALIFECYCLE_QOS_POLICY_NAME = "WriterDataLifecycle"; + const string READERDATALIFECYCLE_QOS_POLICY_NAME = "ReaderDataLifecycle"; + const string TOPICDATA_QOS_POLICY_NAME = "TopicData"; + const string GROUPDATA_QOS_POLICY_NAME = "TransportPriority"; + const string LIFESPAN_QOS_POLICY_NAME = "Lifespan"; + const string DURABILITYSERVICE_POLICY_NAME = "DurabilityService"; + + const QosPolicyId_t INVALID_QOS_POLICY_ID = 0; + const QosPolicyId_t USERDATA_QOS_POLICY_ID = 1; + const QosPolicyId_t DURABILITY_QOS_POLICY_ID = 2; + const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = 3; + const QosPolicyId_t DEADLINE_QOS_POLICY_ID = 4; + const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = 5; + const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = 6; + const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = 7; + const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = 8; + const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = 9; + const QosPolicyId_t PARTITION_QOS_POLICY_ID = 10; + const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = 11; + const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = 12; + const QosPolicyId_t HISTORY_QOS_POLICY_ID = 13; + const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = 14; + const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = 15; + const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = 16; + const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = 17; + const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = 18; + const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = 19; + const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = 20; + const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = 21; + const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = 22; + + typedef sequence OctetSeq; + struct UserDataQosPolicy { + OctetSeq value; + }; + + struct TopicDataQosPolicy { + OctetSeq value; + }; + + struct GroupDataQosPolicy { + OctetSeq value; + }; + + struct TransportPriorityQosPolicy { + long value; + }; + + struct LifespanQosPolicy { + Duration_t duration; + }; + + enum DurabilityQosPolicyKind { + VOLATILE_DURABILITY_QOS, + TRANSIENT_LOCAL_DURABILITY_QOS, + TRANSIENT_DURABILITY_QOS, + PERSISTENT_DURABILITY_QOS + }; + struct DurabilityQosPolicy { + DurabilityQosPolicyKind kind; + }; + + enum PresentationQosPolicyAccessScopeKind { + INSTANCE_PRESENTATION_QOS, + TOPIC_PRESENTATION_QOS, + GROUP_PRESENTATION_QOS + }; + struct PresentationQosPolicy { + PresentationQosPolicyAccessScopeKind access_scope; + boolean coherent_access; + boolean ordered_access; + }; + + struct DeadlineQosPolicy { + Duration_t period; + }; + + struct LatencyBudgetQosPolicy { + Duration_t duration; + }; + + enum OwnershipQosPolicyKind { + SHARED_OWNERSHIP_QOS, + EXCLUSIVE_OWNERSHIP_QOS + }; + struct OwnershipQosPolicy { + OwnershipQosPolicyKind kind; + }; + + struct OwnershipStrengthQosPolicy { + long value; + }; + + enum LivelinessQosPolicyKind { + AUTOMATIC_LIVELINESS_QOS, + MANUAL_BY_PARTICIPANT_LIVELINESS_QOS, + MANUAL_BY_TOPIC_LIVELINESS_QOS + }; + + struct LivelinessQosPolicy { + LivelinessQosPolicyKind kind; + Duration_t lease_duration; + }; + + struct TimeBasedFilterQosPolicy { + Duration_t minimum_separation; + }; + + struct PartitionQosPolicy { + StringSeq name; + }; + + enum ReliabilityQosPolicyKind { + BEST_EFFORT_RELIABILITY_QOS, + RELIABLE_RELIABILITY_QOS + }; + + struct ReliabilityQosPolicy { + ReliabilityQosPolicyKind kind; + Duration_t max_blocking_time; + }; + + enum DestinationOrderQosPolicyKind { + BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, + BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS + }; + struct DestinationOrderQosPolicy { + DestinationOrderQosPolicyKind kind; + }; + + enum HistoryQosPolicyKind { + KEEP_LAST_HISTORY_QOS, + KEEP_ALL_HISTORY_QOS + }; + struct HistoryQosPolicy { + HistoryQosPolicyKind kind; + long depth; + }; + + struct ResourceLimitsQosPolicy { + long max_samples; + long max_instances; + long max_samples_per_instance; + }; + + struct EntityFactoryQosPolicy { + boolean autoenable_created_entities; + }; + + struct WriterDataLifecycleQosPolicy { + boolean autodispose_unregistered_instances; + }; + + struct ReaderDataLifecycleQosPolicy { + Duration_t autopurge_nowriter_samples_delay; + Duration_t autopurge_disposed_samples_delay; + }; + + struct DurabilityServiceQosPolicy { + Duration_t service_cleanup_delay; + HistoryQosPolicyKind history_kind; + long history_depth; + long max_samples; + long max_instances; + long max_samples_per_instance; + }; + + struct DomainParticipantFactoryQos { + EntityFactoryQosPolicy entity_factory; + }; + + struct DomainParticipantQos { + UserDataQosPolicy user_data; + EntityFactoryQosPolicy entity_factory; + }; + + struct TopicQos { + TopicDataQosPolicy topic_data; + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + TransportPriorityQosPolicy transport_priority; + LifespanQosPolicy lifespan; + + OwnershipQosPolicy ownership; + }; + + struct DataWriterQos { + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + TransportPriorityQosPolicy transport_priority; + LifespanQosPolicy lifespan; + + UserDataQosPolicy user_data; + OwnershipQosPolicy ownership; + OwnershipStrengthQosPolicy ownership_strength; + WriterDataLifecycleQosPolicy writer_data_lifecycle; + }; + + struct PublisherQos { + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + GroupDataQosPolicy group_data; + EntityFactoryQosPolicy entity_factory; + }; + + struct DataReaderQos { + DurabilityQosPolicy durability; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + + UserDataQosPolicy user_data; + OwnershipQosPolicy ownership; + TimeBasedFilterQosPolicy time_based_filter; + ReaderDataLifecycleQosPolicy reader_data_lifecycle; + }; + + struct SubscriberQos { + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + GroupDataQosPolicy group_data; + EntityFactoryQosPolicy entity_factory; + }; + + // ---------------------------------------------------------------------- + + struct ParticipantBuiltinTopicData { + BuiltinTopicKey_t key; + UserDataQosPolicy user_data; + }; + + struct TopicBuiltinTopicData { + BuiltinTopicKey_t key; + string name; + string type_name; + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + TransportPriorityQosPolicy transport_priority; + LifespanQosPolicy lifespan; + DestinationOrderQosPolicy destination_order; + HistoryQosPolicy history; + ResourceLimitsQosPolicy resource_limits; + OwnershipQosPolicy ownership; + TopicDataQosPolicy topic_data; + }; + + struct PublicationBuiltinTopicData { + BuiltinTopicKey_t key; + BuiltinTopicKey_t participant_key; + string topic_name; + string type_name; + + DurabilityQosPolicy durability; + DurabilityServiceQosPolicy durability_service; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + LifespanQosPolicy lifespan; + UserDataQosPolicy user_data; + OwnershipQosPolicy ownership; + OwnershipStrengthQosPolicy ownership_strength; + DestinationOrderQosPolicy destination_order; + + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + TopicDataQosPolicy topic_data; + GroupDataQosPolicy group_data; + }; + + struct SubscriptionBuiltinTopicData { + BuiltinTopicKey_t key; + BuiltinTopicKey_t participant_key; + string topic_name; + string type_name; + + DurabilityQosPolicy durability; + DeadlineQosPolicy deadline; + LatencyBudgetQosPolicy latency_budget; + LivelinessQosPolicy liveliness; + ReliabilityQosPolicy reliability; + OwnershipQosPolicy ownership; + DestinationOrderQosPolicy destination_order; + UserDataQosPolicy user_data; + TimeBasedFilterQosPolicy time_based_filter; + + PresentationQosPolicy presentation; + PartitionQosPolicy partition; + TopicDataQosPolicy topic_data; + GroupDataQosPolicy group_data; + }; + + // ---------------------------------------------------------------------- + local interface Entity { + // ReturnCode_t set_qos( + // in EntityQos qos); + // ReturnCode_t get_qos( + // inout EntityQos qos); + // ReturnCode_t set_listener( + // in Listener l, + // in StatusMask mask); + // Listener get_listener(); + + ReturnCode_t enable(); + + StatusCondition get_statuscondition(); + + StatusMask get_status_changes(); + + InstanceHandle_t get_instance_handle(); + }; + + // ---------------------------------------------------------------------- + local interface DomainParticipant : Entity { + // Factory interfaces + Publisher create_publisher( + in PublisherQos qos, + in PublisherListener a_listener, + in StatusMask mask); + Publisher create_publisher_with_profile( + in string library_name, + in string profile_name, + in PublisherListener a_listener, + in StatusMask mask); + ReturnCode_t delete_publisher( + in Publisher p); + + Subscriber create_subscriber( + in SubscriberQos qos, + in SubscriberListener a_listener, + in StatusMask mask); + Subscriber create_subscriber_with_profile( + in string library_name, + in string profile_name, + in SubscriberListener a_listener, + in StatusMask mask); + ReturnCode_t delete_subscriber( + in Subscriber s); + Subscriber get_builtin_subscriber(); + + Topic create_topic( + in string topic_name, + in string type_name, + in TopicQos qos, + in TopicListener a_listener, + in StatusMask mask); + Topic create_topic_with_profile( + in string topic_name, + in string type_name, + in string library_name, + in string profile_name, + in TopicListener a_listener, + in StatusMask mask); + + ReturnCode_t delete_topic( + in Topic a_topic); + + Topic find_topic( + in string topic_name, + in Duration_t timeout); + TopicDescription lookup_topicdescription( + in string name); + + ContentFilteredTopic create_contentfilteredtopic( + in string name, + in Topic related_topic, + in string filter_expression, + in StringSeq expression_parameters); + + ReturnCode_t delete_contentfilteredtopic( + in ContentFilteredTopic a_contentfilteredtopic); + + MultiTopic create_multitopic( + in string name, + in string type_name, + in string subscription_expression, + in StringSeq expression_parameters); + + ReturnCode_t delete_multitopic( + in MultiTopic a_multitopic); + + ReturnCode_t delete_contained_entities(); + + ReturnCode_t set_qos( + in DomainParticipantQos qos); + ReturnCode_t get_qos( + inout DomainParticipantQos qos); + + ReturnCode_t set_listener( + in DomainParticipantListener a_listener, + in StatusMask mask); + DomainParticipantListener get_listener(); + + ReturnCode_t ignore_participant( + in InstanceHandle_t handle); + ReturnCode_t ignore_topic( + in InstanceHandle_t handle); + ReturnCode_t ignore_publication( + in InstanceHandle_t handle); + ReturnCode_t ignore_subscription( + in InstanceHandle_t handle); + + DomainId_t get_domain_id(); + ReturnCode_t assert_liveliness(); + + ReturnCode_t set_default_publisher_qos( + in PublisherQos qos); + ReturnCode_t get_default_publisher_qos( + inout PublisherQos qos); + + ReturnCode_t set_default_subscriber_qos( + in SubscriberQos qos); + ReturnCode_t get_default_subscriber_qos( + inout SubscriberQos qos); + + ReturnCode_t set_default_topic_qos( + in TopicQos qos); + ReturnCode_t get_default_topic_qos( + inout TopicQos qos); + + ReturnCode_t get_discovered_participants( + inout InstanceHandleSeq participant_handles); + ReturnCode_t get_discovered_participant_data( + inout ParticipantBuiltinTopicData participant_data, + in InstanceHandle_t participant_handle); + + ReturnCode_t get_discovered_topics( + inout InstanceHandleSeq topic_handles); + ReturnCode_t get_discovered_topic_data( + inout TopicBuiltinTopicData topic_data, + in InstanceHandle_t topic_handle); + + boolean contains_entity( + in InstanceHandle_t a_handle); + + ReturnCode_t get_current_time( + inout Time_t current_time); + }; + + local interface DomainParticipantFactory { + DomainParticipant create_participant( + in DomainId_t domain_id, + in DomainParticipantQos qos, + in DomainParticipantListener a_listener, + in StatusMask mask); + DomainParticipant create_participant_with_profile( + in DomainId_t domain_id, + in string library_name, + in string profile_name, + in DomainParticipantListener a_listener, + in StatusMask mask); + ReturnCode_t delete_participant( + in DomainParticipant a_participant); + + DomainParticipant lookup_participant( + in DomainId_t domain_id); + + ReturnCode_t set_default_participant_qos( + in DomainParticipantQos qos); + ReturnCode_t set_default_participant_qos_with_profile( + in string library_name, + in string profile_name); + ReturnCode_t get_default_participant_qos( + inout DomainParticipantQos qos); + + ReturnCode_t set_qos( + in DomainParticipantFactoryQos qos); + ReturnCode_t get_qos( + inout DomainParticipantFactoryQos qos); + }; + + local interface TypeSupport { + // ReturnCode_t register_type( + // in DomainParticipant domain, + // in string type_name); + // string get_type_name(); + }; + + // ---------------------------------------------------------------------- + local interface TopicDescription { + string get_type_name(); + string get_name(); + + DomainParticipant get_participant(); + }; + + local interface Topic : Entity, TopicDescription { + ReturnCode_t set_qos( + in TopicQos qos); + ReturnCode_t get_qos( + inout TopicQos qos); + ReturnCode_t set_listener( + in TopicListener a_listener, + in StatusMask mask); + TopicListener get_listener(); + // Access the status + ReturnCode_t get_inconsistent_topic_status( + inout InconsistentTopicStatus a_status); + }; + + local interface ContentFilteredTopic : TopicDescription { + string get_filter_expression(); + ReturnCode_t get_expression_parameters( + inout StringSeq expression_parameters); + ReturnCode_t set_expression_parameters( + in StringSeq expression_parameters); + Topic get_related_topic(); + }; + + local interface MultiTopic : TopicDescription { + string get_subscription_expression(); + ReturnCode_t get_expression_parameters( + inout StringSeq expression_parameters); + ReturnCode_t set_expression_parameters( + in StringSeq expression_parameters); + }; + + // ---------------------------------------------------------------------- + local interface Publisher : Entity { + DataWriter create_datawriter( + in Topic a_topic, + in DataWriterQos qos, + in DataWriterListener a_listener, + in StatusMask mask); + DataWriter create_datawriter_with_profile( + in Topic a_topic, + in string library_name, + in string probile_name, + in DataWriterListener a_listener, + in StatusMask mask); + ReturnCode_t delete_datawriter( + in DataWriter a_datawriter); + DataWriter lookup_datawriter( + in string topic_name); + + ReturnCode_t delete_contained_entities(); + + ReturnCode_t set_qos( + in PublisherQos qos); + ReturnCode_t get_qos( + inout PublisherQos qos); + + ReturnCode_t set_listener( + in PublisherListener a_listener, + in StatusMask mask); + PublisherListener get_listener(); + + ReturnCode_t suspend_publications(); + ReturnCode_t resume_publications(); + + ReturnCode_t begin_coherent_changes(); + ReturnCode_t end_coherent_changes(); + + ReturnCode_t wait_for_acknowledgments( + in Duration_t max_wait); + + DomainParticipant get_participant(); + + ReturnCode_t set_default_datawriter_qos( + in DataWriterQos qos); + ReturnCode_t get_default_datawriter_qos( + inout DataWriterQos qos); + + ReturnCode_t copy_from_topic_qos( + inout DataWriterQos a_datawriter_qos, + in TopicQos a_topic_qos); + }; + + local interface DataWriter : Entity { + // InstanceHandle_t register_instance( + // in Data instance_data); + // InstanceHandle_t register_instance_w_timestamp( + // in Data instance_data, + // in Time_t source_timestamp); + // ReturnCode_t unregister_instance( + // in Data instance_data, + // in InstanceHandle_t handle); + // ReturnCode_t unregister_instance_w_timestamp( + // in Data instance_data, + // in InstanceHandle_t handle, + // in Time_t source_timestamp); + // ReturnCode_t write( + // in Data instance_data, + // in InstanceHandle_t handle); + // ReturnCode_t write_w_timestamp( + // in Data instance_data, + // in InstanceHandle_t handle, + // in Time_t source_timestamp); + // ReturnCode_t dispose( + // in Data instance_data, + // in InstanceHandle_t instance_handle); + // ReturnCode_t dispose_w_timestamp( + // in Data instance_data, + // in InstanceHandle_t instance_handle, + // in Time_t source_timestamp); + // ReturnCode_t get_key_value( + // inout Data key_holder, + // in InstanceHandle_t handle); + // InstanceHandle_t lookup_instance( + // in Data instance_data); + + ReturnCode_t set_qos( + in DataWriterQos qos); + ReturnCode_t get_qos( + inout DataWriterQos qos); + + ReturnCode_t set_listener( + in DataWriterListener a_listener, + in StatusMask mask); + DataWriterListener get_listener(); + + Topic get_topic(); + Publisher get_publisher(); + + ReturnCode_t wait_for_acknowledgments( + in Duration_t max_wait); + + // Access the status + ReturnCode_t get_liveliness_lost_status( + inout LivelinessLostStatus status); + ReturnCode_t get_offered_deadline_missed_status( + inout OfferedDeadlineMissedStatus status); + ReturnCode_t get_offered_incompatible_qos_status( + inout OfferedIncompatibleQosStatus status); + ReturnCode_t get_publication_matched_status( + inout PublicationMatchedStatus status); + + ReturnCode_t assert_liveliness(); + + ReturnCode_t get_matched_subscriptions( + inout InstanceHandleSeq subscription_handles); + ReturnCode_t get_matched_subscription_data( + inout SubscriptionBuiltinTopicData subscription_data, + in InstanceHandle_t subscription_handle); + }; + + // ---------------------------------------------------------------------- + local interface Subscriber : Entity { + DataReader create_datareader( + in TopicDescription a_topic, + in DataReaderQos qos, + in DataReaderListener a_listener, + in StatusMask mask); + DataReader create_datareader_with_profile( + in TopicDescription a_topic, + in string library_name, + in string profile_name, + in DataReaderListener a_listener, + in StatusMask mask); + ReturnCode_t delete_datareader( + in DataReader a_datareader); + ReturnCode_t delete_contained_entities(); + DataReader lookup_datareader( + in string topic_name); + ReturnCode_t get_datareaders( + inout DataReaderSeq readers, + in SampleStateMask sample_states, + in ViewStateMask view_states, + in InstanceStateMask instance_states); + ReturnCode_t notify_datareaders(); + + ReturnCode_t set_qos( + in SubscriberQos qos); + ReturnCode_t get_qos( + inout SubscriberQos qos); + + ReturnCode_t set_listener( + in SubscriberListener a_listener, + in StatusMask mask); + SubscriberListener get_listener(); + + ReturnCode_t begin_access(); + ReturnCode_t end_access(); + + DomainParticipant get_participant(); + + ReturnCode_t set_default_datareader_qos( + in DataReaderQos qos); + ReturnCode_t get_default_datareader_qos( + inout DataReaderQos qos); + + ReturnCode_t copy_from_topic_qos( + inout DataReaderQos a_datareader_qos, + in TopicQos a_topic_qos); + }; + + local interface DataReader : Entity { + // ReturnCode_t read( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t take( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t read_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in ReadCondition a_condition); + + // ReturnCode_t take_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in ReadCondition a_condition); + + // ReturnCode_t read_next_sample( + // inout Data data_values, + // inout SampleInfo sample_info); + + // ReturnCode_t take_next_sample( + // inout Data data_values, + // inout SampleInfo sample_info); + + // ReturnCode_t read_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t a_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t take_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t a_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t read_next_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t take_next_instance( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in SampleStateMask sample_states, + // in ViewStateMask view_states, + // in InstanceStateMask instance_states); + + // ReturnCode_t read_next_instance_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in ReadCondition a_condition); + + // ReturnCode_t take_next_instance_w_condition( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos, + // in long max_samples, + // in InstanceHandle_t previous_handle, + // in ReadCondition a_condition); + + // ReturnCode_t return_loan( + // inout DataSeq data_values, + // inout SampleInfoSeq sample_infos); + + // ReturnCode_t get_key_value( + // inout Data key_holder, + // in InstanceHandle_t handle); + + // InstanceHandle_t lookup_instance( + // in Data instance_data); + + ReadCondition create_readcondition( + in SampleStateMask sample_states, + in ViewStateMask view_states, + in InstanceStateMask instance_states); + + QueryCondition create_querycondition( + in SampleStateMask sample_states, + in ViewStateMask view_states, + in InstanceStateMask instance_states, + in string query_expression, + in StringSeq query_parameters); + + ReturnCode_t delete_readcondition( + in ReadCondition a_condition); + + ReturnCode_t delete_contained_entities(); + + ReturnCode_t set_qos( + in DataReaderQos qos); + ReturnCode_t get_qos( + inout DataReaderQos qos); + + ReturnCode_t set_listener( + in DataReaderListener a_listener, + in StatusMask mask); + DataReaderListener get_listener(); + + TopicDescription get_topicdescription(); + Subscriber get_subscriber(); + + ReturnCode_t get_sample_rejected_status( + inout SampleRejectedStatus status); + ReturnCode_t get_liveliness_changed_status( + inout LivelinessChangedStatus status); + ReturnCode_t get_requested_deadline_missed_status( + inout RequestedDeadlineMissedStatus status); + ReturnCode_t get_requested_incompatible_qos_status( + inout RequestedIncompatibleQosStatus status); + ReturnCode_t get_subscription_matched_status( + inout SubscriptionMatchedStatus status); + ReturnCode_t get_sample_lost_status( + inout SampleLostStatus status); + + ReturnCode_t wait_for_historical_data( + in Duration_t max_wait); + + ReturnCode_t get_matched_publications( + inout InstanceHandleSeq publication_handles); + ReturnCode_t get_matched_publication_data( + inout PublicationBuiltinTopicData publication_data, + in InstanceHandle_t publication_handle); + }; + + + struct SampleInfo { + SampleStateKind sample_state; + ViewStateKind view_state; + InstanceStateKind instance_state; + Time_t source_timestamp; + InstanceHandle_t instance_handle; + InstanceHandle_t publication_handle; + long disposed_generation_count; + long no_writers_generation_count; + long sample_rank; + long generation_rank; + long absolute_generation_rank; + boolean valid_data; + }; + + typedef sequence SampleInfoSeq; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl new file mode 100644 index 00000000000..57ef72e2257 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl @@ -0,0 +1,16 @@ +// $Id$ + +#ifndef DDS_RFT2_DCPS_IDL_I +#define DDS_RFT2_DCPS_IDL_I + +module DDS { + struct NativeInstanceHandle_t { + octet value[16]; + unsigned long length; + unsigned long isValid; + }; + typedef NativeInstanceHandle_t InstanceHandle_t; + typedef sequence InstanceHandleSeq; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl new file mode 100644 index 00000000000..45d9515937c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl @@ -0,0 +1,12 @@ +// $Id$ + +#ifndef DDS_RFT2_DCPS_INSTANCE_HANDLE_IDL +#define DDS_RFT2_DCPS_INSTANCE_HANDLE_IDL + +#include "dds_rtf2_dcps_i_handle.idl" + +module DDS { + native HANDLE_NIL; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp new file mode 100644 index 00000000000..bceb22e2770 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp @@ -0,0 +1,12 @@ +// -*- C++ -*- +// $Id$ + +#include "dds_rtf2_dcps_instance_handleC.h" + +static ::DDS::InstanceHandle_t S_HANDLE = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 16, 0}; + +namespace DDS +{ + ::DDS::InstanceHandle_t const HANDLE_NIL = S_HANDLE; +} + diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h new file mode 100644 index 00000000000..fd777ae27ac --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h @@ -0,0 +1,33 @@ +// -*- C++ -*- +// $Id$ + +#ifndef _TAO_IDL_DDS_RTF2_DCPSC_H_XX +#define _TAO_IDL_DDS_RTF2_DCPSC_H_XX + +#include /**/ "ace/pre.h" + +#include /**/ "ace/config-all.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +#include /**/ "dds4ccm_stub_export.h" +#include /**/ "tao/Versioned_Namespace.h" + +#include "dds_rtf2_dcps_i_handleC.h" + +// TAO_IDL - Generated from +// c:\ace\latest\ace_wrappers\tao\tao_idl\be\be_visitor_root/root_ch.cpp:62 + +namespace DDS +{ + extern DDS4CCM_STUB_Export ::DDS::InstanceHandle_t const HANDLE_NIL; +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + + diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h new file mode 100644 index 00000000000..aa63d70414b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h @@ -0,0 +1,66 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:134 + +#ifndef _TAO_IDL_DDS_RTF2_DCPSEC_H_XX +#define _TAO_IDL_DDS_RTF2_DCPSEC_H_XX + +#include /**/ "ace/pre.h" + + +#include /**/ "ace/config-all.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +#include /**/ "dds4ccm_lem_stub_export.h" +#include "tao/AnyTypeCode/AnyTypeCode_methods.h" +#include "tao/ORB.h" +#include "tao/SystemException.h" +#include "tao/Basic_Types.h" +#include "tao/ORB_Constants.h" +#include "tao/Object.h" +#include "tao/AnyTypeCode/TypeCode.h" +#include "tao/AnyTypeCode/TypeCode_Constants.h" +#include "tao/String_Manager_T.h" +#include "tao/Objref_VarOut_T.h" +#include /**/ "tao/Versioned_Namespace.h" + +#include "ccm/CCM_ContainerC.h" +#include "dds_rtf2_dcps_instance_handleC.h" + + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + + diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h new file mode 100644 index 00000000000..cfde5fcb45e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h @@ -0,0 +1,48 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:471 + +#ifndef _TAO_IDL_DDS_RTF2_DCPS_I_HANDLES_H_S +#define _TAO_IDL_DDS_RTF2_DCPS_I_HANDLES_H_S + +#include /**/ "ace/pre.h" + +#include "dds_rtf2_dcps_i_handleC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +#include /**/ "dds4ccm_skel_export.h" + +#include /**/ "ace/post.h" +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.cpp new file mode 100644 index 00000000000..93aef94fe30 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.cpp @@ -0,0 +1,19 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Coherent_Changes_Guard.h" + +CIAO::DDS4CCM::RTI::Coherent_Changes_Guard::Coherent_Changes_Guard (DDSPublisher* p, bool coherent_write) : p_ (p), coherent_write_ (coherent_write) +{ + if (this->coherent_write_) + { + p_->begin_coherent_changes (); + } +} + +CIAO::DDS4CCM::RTI::Coherent_Changes_Guard::~Coherent_Changes_Guard () +{ + if (this->coherent_write_) + { + this->p_->end_coherent_changes (); + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.h new file mode 100644 index 00000000000..e16f249f401 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Coherent_Changes_Guard.h @@ -0,0 +1,38 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef _CIAO_COHERENT_CHANGES_GUARD +#define _CIAO_COHERENT_CHANGES_GUARD + +#include "ace/Copy_Disabled.h" +#include "ndds/ndds_cpp.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export Coherent_Changes_Guard : + private ACE_Copy_Disabled + { + public: + Coherent_Changes_Guard (::DDSPublisher* p, bool coherent_write); + ~Coherent_Changes_Guard (); + private: + ::DDSPublisher* p_; + bool const coherent_write_; + }; + } + } +} + +#endif /* _CIAO_COHERENT_CHANGES_GUARD */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS4CCM_Traits.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS4CCM_Traits.h new file mode 100644 index 00000000000..b86f48a8e5c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS4CCM_Traits.h @@ -0,0 +1,71 @@ +/** + * @file DDS4CCM_Traits.h + * @author William R. Otte + * + * $Id$ + * + * Traits necessary for various bits and pieces of the DDS4CCM infrastructure. + */ + +#ifndef NDDS_TRAITS_H +#define NDDS_TRAITS_H + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + template + + struct Connector_Traits + { + typedef BASE_TYPE base_type; + typedef SEQ_TYPE seq_type; + typedef WRITER_TYPE writer_type; + typedef UPDATER_TYPE updater_type; + typedef GETTER_TYPE getter_type; + typedef READER_TYPE reader_type; + typedef CONTEXT_TYPE context_type; + typedef LISTENER_TYPE listener_type; + typedef STATELISTENER_TYPE statelistener_type; + typedef CONNECTORSTATUSLISTENER_TYPE connectorstatuslistener_type; + }; + + namespace RTI + { + /** + * @struct Type_Traits + * @brief Convenience traits struct. + * + * This is a convenience struct that is used by most of the + * DDS4CCM infrastructure; it is not necessary to use this exact + * struct, so long as all of the needed fields are filled in. + */ + template + struct Type_Traits + { + typedef VALUE_TYPE value_type; + typedef DDS_SEQ_TYPE dds_seq_type; + typedef TYPE_SUPPORT type_support; + typedef DATA_WRITER data_writer; + typedef DATA_READER data_reader; + }; + } + } +} +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp new file mode 100644 index 00000000000..b840d54d078 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp @@ -0,0 +1,216 @@ +// -*- C++ -*- +// $Id$ + +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DomainParticipantFactory.h" +#include "dds4ccm/impl/ndds/DomainParticipant.h" +#include "dds4ccm/impl/ndds/DomainParticipantListener_T.h" +#include "ace/Tokenizer_T.h" +#include "ace/Env_Value_T.h" + +template +DDS_Base_Connector_T::DDS_Base_Connector_T (void) + : domain_id_ (0) + , configuration_complete_ (false) + , library_name_ (0) + , profile_name_ (0) +{ + ACE_Env_Value id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), this->domain_id_); + this->domain_id_ = id; +} + +template +DDS_Base_Connector_T::~DDS_Base_Connector_T (void) +{ +} + +template +::DDS::DomainId_t +DDS_Base_Connector_T::domain_id (void) +{ + CIAO_TRACE ("DDS_Base_Connector_T::domain_id"); + + return this->domain_id_; +} + +template +void +DDS_Base_Connector_T::domain_id ( + ::DDS::DomainId_t domain_id) +{ + CIAO_TRACE ("DDS_Base_Connector_T::domain_id"); + + if (this->configuration_complete_) + { + throw ::CCM_DDS::NonChangeable (); + } + else + { + this->domain_id_ = domain_id; + } +} + +template +char * +DDS_Base_Connector_T::qos_profile (void) +{ + CIAO_TRACE ("DDS_Base_Connector_T::qos_profile"); + + return CORBA::string_dup (this->qos_profile_.in ()); +} + +template +void +DDS_Base_Connector_T::qos_profile ( + const char * qos_profile) +{ + CIAO_TRACE ("DDS_Base_Connector_T::qos_profile"); + + if (this->configuration_complete_) + { + throw ::CCM_DDS::NonChangeable (); + } + else + { + this->qos_profile_ = qos_profile; + } +} + +template +void +DDS_Base_Connector_T::configure_default_domain (void) +{ + CIAO_DEBUG (9, (LM_TRACE, CLINFO "DDS_Base_Connector_T::configure_default_domain_ - " + "Configuring default domain\n")); + + if (CORBA::is_nil (this->domain_participant_factory_.in ())) + { + try + { + ACE_Env_Value verbosity (ACE_TEXT("DDS4CCM_NDDS_LOG_VERBOSITY"), + NDDS_CONFIG_LOG_VERBOSITY_SILENT); + + NDDS_Config_LogVerbosity n_verbosity = + static_cast (verbosity.operator int()); + NDDSConfigLogger::get_instance()->set_verbosity (n_verbosity); + + // Generic code + this->domain_participant_factory_ = + new ::CIAO::DDS4CCM::RTI::RTI_DomainParticipantFactory_i (); + + if (this->qos_profile_.in ()) + { + char* buf = ACE_OS::strdup (this->qos_profile_.in ()); + ACE_Tokenizer_T tok (buf); + tok.delimiter_replace ('#', 0); + for (char *p = tok.next (); p; p = tok.next ()) + { + if (!this->library_name_) + { + this->library_name_ = p; + } + else if (!this->profile_name_) + { + this->profile_name_ = p; + } + } + } + this->domainparticipantlistener_ = new ::CIAO::DDS4CCM::DomainParticipantListener_T + ( + this->context_->get_connection_error_listener ()); + if (this->library_name_ && this->profile_name_) + { + this->domain_participant_factory_-> + set_default_participant_qos_with_profile ( + this->library_name_, + this->profile_name_); + this->domain_participant_ = + this->domain_participant_factory_->create_participant_with_profile ( + this->domain_id_, + this->library_name_, + this->profile_name_, + this->domainparticipantlistener_.in (), + ::CIAO::DDS4CCM::DomainParticipantListener_T::get_mask ()); + } + else + { + ::DDS::DomainParticipantQos qos; + this->domain_participant_ = + this->domain_participant_factory_->create_participant ( + this->domain_id_, + qos, + this->domainparticipantlistener_.in (), + ::CIAO::DDS4CCM::DomainParticipantListener_T::get_mask ()); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, "Caught unknown C++ exception while configuring default domain\n")); + throw CORBA::INTERNAL (); + } + } +} + +template +void +DDS_Base_Connector_T::set_session_context ( + ::Components::SessionContext_ptr ctx) +{ + CIAO_TRACE ("DDS_Base_Connector_T::set_session_context"); + + typename CCM_TYPE::context_type::_var_type lctx = + CCM_TYPE::context_type::_narrow (ctx); + + if (::CORBA::is_nil (lctx.in ())) + { + throw ::CORBA::INTERNAL (); + } + + this->context_ = lctx; +} + +template +void +DDS_Base_Connector_T::ccm_remove (void) +{ + CIAO_TRACE ("DDS_Base_Connector_T::ccm_remove"); + + if (! ::CORBA::is_nil (this->domain_participant_.in ())) + { + this->domain_participant_->delete_contained_entities (); + } + + if (! ::CORBA::is_nil (this->domain_participant_factory_.in ())) + { + this->domain_participant_factory_->delete_participant ( + this->domain_participant_.in ()); + this->domain_participant_ = ::DDS::DomainParticipant::_nil (); + } +} + +template +void +DDS_Base_Connector_T::ccm_activate (void) +{ + CIAO_TRACE ("DDS_Base_Connector_T::ccm_activate"); + + this->configure_default_domain (); +} + +template +void +DDS_Base_Connector_T::ccm_passivate (void) +{ + CIAO_TRACE ("DDS_Base_Connector_T::ccm_passivate"); +} + +template +void +DDS_Base_Connector_T::configuration_complete (void) +{ + CIAO_TRACE ("DDS_Base_Connector_T::configuration_complete"); + this->configuration_complete_ = true; +} + + + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h new file mode 100644 index 00000000000..a8f398340c1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h @@ -0,0 +1,56 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + */ +#ifndef DDS_BASE_CONNECTOR_T_H +#define DDS_BASE_CONNECTOR_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +template +class DDS_Base_Connector_T + : public virtual CCM_TYPE::base_type, + public virtual ::CORBA::LocalObject, + private virtual ACE_Copy_Disabled +{ +public: + DDS_Base_Connector_T (void); + virtual ~DDS_Base_Connector_T (void); + + virtual ::DDS::DomainId_t domain_id (void); + + virtual void domain_id (::DDS::DomainId_t domain_id); + + virtual char *qos_profile (void); + + virtual void qos_profile (const char * qos_profile); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_remove (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + +protected: + void configure_default_domain (void); + + DDS::DomainId_t domain_id_; + CORBA::String_var qos_profile_; + bool configuration_complete_; + const char* library_name_; + const char* profile_name_; + + ::DDS::DomainParticipantFactory_var domain_participant_factory_; + ::DDS::DomainParticipant_var domain_participant_; + ::DDS::DomainParticipantListener_var domainparticipantlistener_; + typename CCM_TYPE::context_type::_var_type context_; + + ::CCM_DDS::ConnectorStatusListener_var error_listener_; +}; + +#include "dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp" + +#endif /* CONNECTOR_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp new file mode 100644 index 00000000000..5a4a636c89e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp @@ -0,0 +1,163 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Writer_T.h" +#include "dds4ccm/impl/ndds/Getter_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_Event_Connector_T::DDS_Event_Connector_T (void) : + DDS_TopicBase_Connector_T() +{ +} + +template +DDS_Event_Connector_T::~DDS_Event_Connector_T (void) +{ +} + +template +typename CCM_TYPE::writer_type::_ptr_type +DDS_Event_Connector_T::get_supplier_data (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_supplier_data"); + + return this->supplier_.get_data (); +} + +template +::DDS::CCM_DataWriter_ptr +DDS_Event_Connector_T::get_supplier_dds_entity (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_supplier_dds_entity"); + + return this->supplier_.get_dds_entity (); +} + +template +typename CCM_TYPE::getter_type::_ptr_type +DDS_Event_Connector_T::get_pull_consumer_fresh_data (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_pull_consumer_fresh_data"); + + return this->pull_consumer_.get_fresh_data (); +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_Event_Connector_T::get_push_consumer_data (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_push_consumer_data"); + + return this->push_consumer_.get_data (); +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_Event_Connector_T::get_pull_consumer_data (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_pull_consumer_data"); + + return this->pull_consumer_.get_data (); +} + +template +::CCM_DDS::CCM_DataListenerControl_ptr +DDS_Event_Connector_T::get_push_consumer_data_control (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_push_consumer_data_control"); + + return this->push_consumer_.get_data_control (); +} + +template +::DDS::CCM_DataReader_ptr +DDS_Event_Connector_T::get_pull_consumer_dds_entity (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_pull_consumer_dds_entity"); + + return this->pull_consumer_.get_dds_entity (); +} + +template +::DDS::CCM_DataReader_ptr +DDS_Event_Connector_T::get_push_consumer_dds_entity (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::get_push_consumer_dds_entity"); + + return this->push_consumer_.get_dds_entity (); +} + +template +void +DDS_Event_Connector_T::configuration_complete (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::configuration_complete"); + + DDS_TopicBase_Connector_T::configuration_complete (); + + this->push_consumer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); + + this->supplier_.configuration_complete( + this->topic_.in (), + this->publisher_.in (), + this->library_name_, + this->profile_name_); + + this->pull_consumer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); +} + +template +void +DDS_Event_Connector_T::ccm_activate (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::ccm_activate"); + DDS_TopicBase_Connector_T::ccm_activate (); + + this->push_consumer_.activate ( + this->context_->get_connection_push_consumer_data_listener (), + this->context_->get_connection_push_consumer_status ()); + + this->supplier_.activate (); + + this->pull_consumer_.activate ( + this->context_->get_connection_pull_consumer_status ()); +} + +template +void +DDS_Event_Connector_T::ccm_passivate (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::ccm_passivate"); + + DDS_TopicBase_Connector_T::ccm_passivate (); + this->push_consumer_.passivate (); + this->supplier_.passivate (); + this->pull_consumer_.passivate (); +} + +template +void +DDS_Event_Connector_T::ccm_remove (void) +{ + CIAO_TRACE ("DDS_Event_Connector_T::ccm_remove"); + + DDS_TopicBase_Connector_T::ccm_remove (); + this->push_consumer_.remove (this->subscriber_.in ()); + this->supplier_.remove (this->publisher_.in ()); + this->pull_consumer_.remove (this->subscriber_.in ()); +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h new file mode 100644 index 00000000000..8309a2e822e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h @@ -0,0 +1,89 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_EVENT_CONNECTOR_T_H_ +#define DDS_EVENT_CONNECTOR_T_H_ + +#include "dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h" +#include "dds4ccm/impl/ndds/DDS_Get_T.h" +#include "dds4ccm/impl/ndds/DDS_Write_T.h" +#include "dds4ccm/impl/ndds/DDS_Listen_T.h" + +template +class DDS_Event_Connector_T + : public virtual DDS_TopicBase_Connector_T +{ +public: + DDS_Event_Connector_T (void); + virtual ~DDS_Event_Connector_T (void); + + /** + * @name DDS_Write + * DDS_Write operations + */ + //@{ + virtual typename CCM_TYPE::writer_type::_ptr_type get_supplier_data (void); + + virtual ::DDS::CCM_DataWriter_ptr get_supplier_dds_entity (void); + //@} + + /** + * @name DDS_Get + * DDS_Get operations + */ + //@{ + virtual typename CCM_TYPE::reader_type::_ptr_type get_pull_consumer_data (void); + + virtual typename CCM_TYPE::getter_type::_ptr_type get_pull_consumer_fresh_data (void); + + virtual ::DDS::CCM_DataReader_ptr get_pull_consumer_dds_entity (void); + //@} + + /** + * @name DDS_Listen + * DDS_Listen operations + */ + //@{ + virtual typename CCM_TYPE::reader_type::_ptr_type get_push_consumer_data (void); + + virtual ::CCM_DDS::CCM_DataListenerControl_ptr get_push_consumer_data_control (void); + + virtual ::DDS::CCM_DataReader_ptr get_push_consumer_dds_entity (void); + //@} + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + +private: + /** + * DDS_Write supplier + */ + //@{ + DDS_Write_T supplier_; + //@} + + /** + * DDS_Listen push_consumer + */ + //@{ + DDS_Listen_T push_consumer_; + //@} + + /** + * DDS_Get pull_consumer + */ + //@{ + DDS_Get_T pull_consumer_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp" + +#endif /* DDS_EVENT_CONNECTOR_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp new file mode 100644 index 00000000000..7123ece60d7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp @@ -0,0 +1,160 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_Get_T::DDS_Get_T (void) +{ +} + +template +DDS_Get_T::~DDS_Get_T (void) +{ +} + +template +void +DDS_Get_T::configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name) +{ + CIAO_TRACE ("DDS_Get_T::configuration_complete"); + + try + { + if (CORBA::is_nil (this->data_reader_.in ())) + { + ::DDS::DataReader_var reader; + if (profile_name && library_name) + { + reader = subscriber->create_datareader_with_profile ( + topic, + library_name, + profile_name, + ::DDS::DataReaderListener::_nil (), + 0); + } + else + { + ::DDS::DataReaderQos drqos; + reader = subscriber->create_datareader ( + topic, + drqos, + ::DDS::DataReaderListener::_nil (), + 0); + } + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *> (reader.in ()); + this->rti_reader_.set_impl (rd->get_impl ()); + this->data_reader_ = ::DDS::CCM_DataReader::_narrow (reader); + this->dds_get_.set_impl (reader); + this->dds_read_.set_impl (reader); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::configuration_complete: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Get_T::activate ( + ::CCM_DDS::PortStatusListener_ptr listener) +{ + CIAO_TRACE ("DDS_Get_T::activate"); + try + { + if (CORBA::is_nil (this->status_.in ())) + { + this->status_ = new ::CIAO::DDS4CCM::RTI::PortStatusListener_T + (listener); + } + this->rti_reader_.set_listener ( + this->status_.in (), + ::CIAO::DDS4CCM::RTI::PortStatusListener_T::get_mask ()); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::activate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Get_T::passivate (void) +{ + CIAO_TRACE ("DDS_Get_T::passivate"); + try + { + this->rti_reader_.set_listener ( + ::DDS::DataReaderListener::_nil (), + 0); + this->status_ = ::DDS::DataReaderListener::_nil (); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::passivate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Get_T::remove ( + ::DDS::Subscriber_ptr subscriber) +{ + CIAO_TRACE ("DDS_Get_T::remove"); + try + { + subscriber->delete_datareader (this->data_reader_.in ()); + this->data_reader_ = ::DDS::CCM_DataReader::_nil (); + this->dds_get_.set_impl (0); + this->dds_read_.set_impl (0); + this->rti_reader_.set_impl (0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::remove: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +typename CCM_TYPE::getter_type::_ptr_type +DDS_Get_T::get_fresh_data (void) +{ + CIAO_TRACE ("DDS_Get_T::get_fresh_data"); + + return &this->dds_get_; +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_Get_T::get_data (void) +{ + CIAO_TRACE ("DDS_Get_T::get_data"); + + return &this->dds_read_; +} + +template +::DDS::CCM_DataReader_ptr +DDS_Get_T::get_dds_entity (void) +{ + CIAO_TRACE ("DDS_Get_T::get_dds_entity"); + + return &this->rti_reader_; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.h new file mode 100644 index 00000000000..79cf6cff0dc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Get_T.h @@ -0,0 +1,61 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_GET_T_H_ +#define DDS_GET_T_H_ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/Getter_T.h" + +template +class DDS_Get_T +{ +public: + DDS_Get_T (void); + ~DDS_Get_T (void); + + /** + * @name DDS_Get + * DDS_Get operations + */ + //@{ + typename CCM_TYPE::reader_type::_ptr_type get_data (void); + + typename CCM_TYPE::getter_type::_ptr_type get_fresh_data (void); + + ::DDS::CCM_DataReader_ptr get_dds_entity (void); + //@} + void configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name); + + void activate ( + ::CCM_DDS::PortStatusListener_ptr listener); + + void passivate (void); + + void remove (::DDS::Subscriber_ptr subscriber); + +private: + /** + * DDS_Get + */ + //@{ + ::DDS::CCM_DataReader_var data_reader_; + ::DDS::DataReaderListener_var status_; + ::CIAO::DDS4CCM::RTI::Getter_T dds_get_; + ::CIAO::DDS4CCM::RTI::Reader_T dds_read_; + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i rti_reader_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_Get_T.cpp" + +#endif /* DDS_GET_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp new file mode 100644 index 00000000000..15a3516969e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.cpp @@ -0,0 +1,168 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Writer_T.h" +#include "dds4ccm/impl/ndds/Getter_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/DataReader.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_Listen_T::DDS_Listen_T (void) : + data_control_ (new CCM_DDS_DataListenerControl_T + < ::CCM_DDS::CCM_DataListenerControl> ()) +{ +} + +template +DDS_Listen_T::~DDS_Listen_T (void) +{ +} + +template +void +DDS_Listen_T::configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name) +{ + CIAO_TRACE ("DDS_Listen_T::init"); + + try + { + if (CORBA::is_nil (this->data_reader_.in ())) + { + ::DDS::DataReader_var reader; + if (library_name && profile_name) + { + reader = subscriber->create_datareader_with_profile ( + topic, + library_name, + profile_name, + ::DDS::DataReaderListener::_nil (), + 0); + } + else + { + ::DDS::DataReaderQos drqos; + reader = subscriber->create_datareader ( + topic, + drqos, + ::DDS::DataReaderListener::_nil (), + 0); + } + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *> (reader.in ()); + this->rti_reader_.set_impl (rd->get_impl ()); + this->data_reader_ = ::DDS::CCM_DataReader::_narrow (reader); + this->dds_read_.set_impl (this->data_reader_.in ()); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::configuration_complete: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Listen_T::activate ( + typename CCM_TYPE::listener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr status) +{ + CIAO_TRACE ("DDS_Listen_T::activate"); + try + { + if (CORBA::is_nil (this->data_listener_.in ())) + { + this->data_listener_ = new ::CIAO::DDS4CCM::RTI::DataReaderListener_T + ( + listener, + status, + this->data_control_.in ()); + } + this->rti_reader_.set_listener ( + this->data_listener_.in (), + ::CIAO::DDS4CCM::RTI::DataReaderListener_T::get_mask ()); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::activate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Listen_T::passivate () +{ + CIAO_TRACE ("DDS_Listen_T::passivate"); + try + { + this->rti_reader_.set_listener ( + ::DDS::DataReaderListener::_nil (), + 0); + this->data_listener_= ::DDS::DataReaderListener::_nil (); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::passivate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Listen_T::remove ( + ::DDS::Subscriber_ptr subscriber) +{ + CIAO_TRACE ("DDS_Listen_T::remove"); + try + { + subscriber->delete_datareader (this->data_reader_.in ()); + this->rti_reader_.set_impl (0); + this->data_reader_ = ::DDS::CCM_DataReader::_nil (); + this->dds_read_.set_impl (0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::remove: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_Listen_T::get_data (void) +{ + CIAO_TRACE ("DDS_Listen_T::get_data"); + + return &this->dds_read_; +} + +template +::DDS::CCM_DataReader_ptr +DDS_Listen_T::get_dds_entity (void) +{ + CIAO_TRACE ("DDS_Listen_T::get_dds_entity"); + + return &this->rti_reader_; +} + +template +::CCM_DDS::CCM_DataListenerControl_ptr +DDS_Listen_T::get_data_control (void) +{ + CIAO_TRACE ("DDS_Listen_T::get_data_control"); + + return ::CCM_DDS::CCM_DataListenerControl::_duplicate (this->data_control_.in ()); +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.h new file mode 100644 index 00000000000..c84e13f397c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Listen_T.h @@ -0,0 +1,60 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_LISTEN_T_H_ +#define DDS_LISTEN_T_H_ + +template +class DDS_Listen_T +{ +public: + DDS_Listen_T (void); + ~DDS_Listen_T (void); + + /** + * @name DDS_Listen + * DDS_Listen operations + */ + //@{ + typename CCM_TYPE::reader_type::_ptr_type get_data (void); + + ::CCM_DDS::CCM_DataListenerControl_ptr get_data_control (void); + + ::DDS::CCM_DataReader_ptr get_dds_entity (void); + //@} + + void configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name); + + void activate ( + typename CCM_TYPE::listener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr status); + + void passivate (void); + + void remove ( + ::DDS::Subscriber_ptr subscriber); + +private: + /** + * DDS_Listen + */ + //@{ + ::DDS::CCM_DataReader_var data_reader_; + ::CCM_DDS::CCM_DataListenerControl_var data_control_; + ::DDS::DataReaderListener_var data_listener_; + ::CIAO::DDS4CCM::RTI::Reader_T dds_read_; + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i rti_reader_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_Listen_T.cpp" + +#endif /* DDS_LISTEN_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp new file mode 100644 index 00000000000..4d4c0d95900 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.cpp @@ -0,0 +1,153 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Writer_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_Read_T::DDS_Read_T (void) +{ +} + +template +DDS_Read_T::~DDS_Read_T (void) +{ +} + +template +void +DDS_Read_T::configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name) +{ + CIAO_TRACE ("DDS_Read_T::configuration_complete"); + + try + { + if (CORBA::is_nil (this->data_.in ())) + { + ::DDS::DataReader_var reader; + if (profile_name && library_name) + { + reader = subscriber->create_datareader_with_profile ( + topic, + library_name, + profile_name, + ::DDS::DataReaderListener::_nil (), + 0); + } + else + { + ::DDS::DataReaderQos drqos; + reader = subscriber->create_datareader ( + topic, + drqos, + ::DDS::DataReaderListener::_nil (), + 0); + } + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *> (reader.in ()); + this->rti_reader_.set_impl (rd->get_impl ()); + this->data_ = ::DDS::CCM_DataReader::_narrow (reader); + this->dds_read_.set_impl (reader); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::configuration_complete: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Read_T::activate ( + ::CCM_DDS::PortStatusListener_ptr listener) +{ + CIAO_TRACE ("DDS_Read_T::activate"); + + try + { + if (CORBA::is_nil (this->status_.in ())) + { + this->status_ = new ::CIAO::DDS4CCM::RTI::PortStatusListener_T + (listener); + } + this->rti_reader_.set_listener ( + this->status_.in (), + ::CIAO::DDS4CCM::RTI::PortStatusListener_T::get_mask ()); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::activate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Read_T::passivate () +{ + CIAO_TRACE ("DDS_Read_T::passivate"); + + try + { + this->rti_reader_.set_listener ( + ::DDS::DataReaderListener::_nil (), + 0); + this->status_ = ::DDS::DataReaderListener::_nil (); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::passivate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Read_T::remove ( + ::DDS::Subscriber_ptr subscriber) +{ + CIAO_TRACE ("DDS_Read_T::remove"); + + try + { + subscriber->delete_datareader (this->data_.in ()); + this->rti_reader_.set_impl (0); + this->data_ = ::DDS::CCM_DataReader::_nil (); + this->dds_read_.set_impl (0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::remove: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_Read_T::get_data (void) +{ + CIAO_TRACE ("DDS_Read_T::get_data"); + + return &this->dds_read_; +} + +template +::DDS::CCM_DataReader_ptr +DDS_Read_T::get_dds_entity (void) +{ + CIAO_TRACE ("DDS_Read_T::get_dds_entity"); + + return &this->rti_reader_; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.h new file mode 100644 index 00000000000..57fdd46ff6d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Read_T.h @@ -0,0 +1,58 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_READ_T_H_ +#define DDS_READ_T_H_ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" + +template +class DDS_Read_T +{ +public: + DDS_Read_T (void); + ~DDS_Read_T (void); + + /** + * @name DDS_Read + * DDS_Read operations + */ + //@{ + typename CCM_TYPE::reader_type::_ptr_type get_data (void); + + ::DDS::CCM_DataReader_ptr get_dds_entity (void); + //@} + + void configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name); + + void activate ( + ::CCM_DDS::PortStatusListener_ptr listener); + + void passivate (void); + + void remove ( + ::DDS::Subscriber_ptr subscriber); + +private: + /** + * DDS_Read + */ + //@{ + ::DDS::CCM_DataReader_var data_; + ::DDS::DataReaderListener_var status_; + ::CIAO::DDS4CCM::RTI::Reader_T dds_read_; + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i rti_reader_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_Read_T.cpp" + +#endif /* DDS_READ_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp new file mode 100644 index 00000000000..39161b25cd5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.cpp @@ -0,0 +1,165 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderStateListener_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/StateListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_StateListen_T::DDS_StateListen_T (void) : + data_control_ (new CCM_DDS_StateListenerControl_T + < ::CCM_DDS::CCM_StateListenerControl> ()) +{ +} + +template +DDS_StateListen_T::~DDS_StateListen_T (void) +{ +} + +template +void +DDS_StateListen_T::configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name) +{ + CIAO_TRACE ("DDS_StateListen_T::configuration_complete"); + + try + { + if (CORBA::is_nil (this->data_reader_.in ())) + { + ::DDS::DataReader_var reader; + if (library_name && profile_name) + { + reader = subscriber->create_datareader_with_profile ( + topic, + library_name, + profile_name, + ::DDS::DataReaderListener::_nil (), + 0); + } + else + { + ::DDS::DataReaderQos drqos; + reader = subscriber->create_datareader ( + topic, + drqos, + ::DDS::DataReaderListener::_nil (), + 0); + } + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i *> (reader.in ()); + this->rti_reader_.set_impl (rd->get_impl ()); + this->data_reader_ = ::DDS::CCM_DataReader::_narrow (reader); + this->dds_read_.set_impl (this->data_reader_.in ()); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::configuration_complete: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_StateListen_T::activate ( + typename CCM_TYPE::statelistener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr status) +{ + CIAO_TRACE ("DDS_StateListen_T::activate"); + + try + { + if (CORBA::is_nil (this->data_listener_.in ())) + { + this->data_listener_ = new ::CIAO::DDS4CCM::RTI::DataReaderStateListener_T + ( + listener, + status, + data_control_.in ()); + } + this->rti_reader_.set_listener ( + this->data_listener_.in (), + 0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::activate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_StateListen_T::passivate (void) +{ + CIAO_TRACE ("DDS_StateListen_T::passivate"); + try + { + this->rti_reader_.set_listener ( + ::DDS::DataReaderListener::_nil (), + 0); + this->data_listener_ = ::DDS::DataReaderListener::_nil (); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::passivate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_StateListen_T::remove ( + ::DDS::Subscriber_ptr subscriber) +{ + CIAO_TRACE ("DDS_StateListen_T::remove"); + try + { + subscriber->delete_datareader (this->data_reader_.in ()); + this->rti_reader_.set_impl (0); + this->data_reader_ = ::DDS::CCM_DataReader::_nil (); + this->dds_read_.set_impl (0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::remove: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_StateListen_T::get_data (void) +{ + CIAO_TRACE ("DDS_StateListen_T::get_data"); + + return &this->dds_read_; +} + +template +::DDS::CCM_DataReader_ptr +DDS_StateListen_T::get_dds_entity (void) +{ + CIAO_TRACE ("DDS_StateListen_T::get_dds_entity"); + + return &this->rti_reader_; +} + +template +::CCM_DDS::CCM_StateListenerControl_ptr +DDS_StateListen_T::get_data_control (void) +{ + CIAO_TRACE ("DDS_StateListen_T::get_data_control"); + + return ::CCM_DDS::CCM_StateListenerControl::_duplicate ( + this->data_control_.in ()); +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h new file mode 100644 index 00000000000..b1b6cd31a3e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_StateListen_T.h @@ -0,0 +1,61 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_STATELISTEN_T_H_ +#define DDS_STATELISTEN_T_H_ + +template +class DDS_StateListen_T +{ +public: + DDS_StateListen_T (void); + ~DDS_StateListen_T (void); + + /** + * @name DDS_Listen + * DDS_Listen operations + */ + //@{ + typename CCM_TYPE::reader_type::_ptr_type get_data (void); + + ::CCM_DDS::CCM_StateListenerControl_ptr get_data_control (void); + + ::DDS::CCM_DataReader_ptr get_dds_entity (void); + //@} + + void configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Subscriber_ptr subscriber, + const char* library_name, + const char* profile_name); + + void activate ( + typename CCM_TYPE::statelistener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr status); + + void passivate (void); + + void remove ( + ::DDS::Subscriber_ptr subscriber); + + +private: + /** + * DDS_Listen + */ + //@{ + ::DDS::CCM_DataReader_var data_reader_; + ::CCM_DDS::CCM_StateListenerControl_var data_control_; + ::DDS::DataReaderListener_var data_listener_; + ::CIAO::DDS4CCM::RTI::Reader_T dds_read_; + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i rti_reader_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_StateListen_T.cpp" + +#endif /* DDS_STATELISTEN_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp new file mode 100644 index 00000000000..14d515ae588 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp @@ -0,0 +1,199 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderStateListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Updater_T.h" +#include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/PublisherListener_T.h" +#include "dds4ccm/impl/ndds/SubscriberListener_T.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/StateListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_State_Connector_T::DDS_State_Connector_T (void) : + DDS_TopicBase_Connector_T() +{ +} + +template +DDS_State_Connector_T::~DDS_State_Connector_T (void) +{ +} + +template +typename CCM_TYPE::updater_type::_ptr_type +DDS_State_Connector_T::get_observable_data (void) +{ + return this->observable_.get_data (); +} + +template +::DDS::CCM_DataWriter_ptr +DDS_State_Connector_T::get_observable_dds_entity (void) +{ + return this->observable_.get_dds_entity (); +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_State_Connector_T::get_passive_observer_data (void) +{ + return this->passive_observer_.get_data (); +} + +template +::DDS::CCM_DataReader_ptr +DDS_State_Connector_T::get_passive_observer_dds_entity (void) +{ + return this->passive_observer_.get_dds_entity (); +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_State_Connector_T::get_pull_observer_data (void) +{ + return this->pull_observer_.get_data (); +} + +template +typename CCM_TYPE::getter_type::_ptr_type +DDS_State_Connector_T::get_pull_observer_fresh_data (void) +{ + return this->pull_observer_.get_fresh_data (); +} + +template +::DDS::CCM_DataReader_ptr +DDS_State_Connector_T::get_pull_observer_dds_entity (void) +{ + return this->pull_observer_.get_dds_entity (); +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_State_Connector_T::get_push_observer_data (void) +{ + return this->push_observer_.get_data (); +} + +template +::CCM_DDS::CCM_DataListenerControl_ptr +DDS_State_Connector_T::get_push_observer_data_control (void) +{ + return this->push_observer_.get_data_control (); +} + +template +::DDS::CCM_DataReader_ptr +DDS_State_Connector_T::get_push_observer_dds_entity (void) +{ + return this->push_observer_.get_dds_entity (); +} + +template +typename CCM_TYPE::reader_type::_ptr_type +DDS_State_Connector_T::get_push_state_observer_data (void) +{ + return this->push_state_observer_.get_data (); +} + +template +::CCM_DDS::CCM_StateListenerControl_ptr +DDS_State_Connector_T::get_push_state_observer_data_control (void) +{ + return this->push_state_observer_.get_data_control (); +} + +template +::DDS::CCM_DataReader_ptr +DDS_State_Connector_T::get_push_state_observer_dds_entity (void) +{ + return this->push_state_observer_.get_dds_entity (); +} + +template +void +DDS_State_Connector_T::configuration_complete (void) +{ + DDS_TopicBase_Connector_T::configuration_complete (); + this->observable_.configuration_complete ( + this->topic_.in (), + this->publisher_.in (), + this->library_name_, + this->profile_name_); + + this->push_observer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); + + this->push_state_observer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); + + this->pull_observer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); + + this->passive_observer_.configuration_complete ( + this->topic_.in (), + this->subscriber_.in (), + this->library_name_, + this->profile_name_); +} + +template +void +DDS_State_Connector_T::ccm_activate (void) +{ + DDS_TopicBase_Connector_T::ccm_activate (); + this->observable_.activate (); + + this->push_observer_.activate ( + this->context_->get_connection_push_observer_data_listener (), + this->context_->get_connection_push_observer_status ()); + + this->push_state_observer_.activate ( + this->context_->get_connection_push_state_observer_data_listener (), + this->context_->get_connection_push_state_observer_status ()); + + this->pull_observer_.activate ( + this->context_->get_connection_pull_observer_status ()); + + this->passive_observer_.activate ( + this->context_->get_connection_passive_observer_status ()); +} + +template +void +DDS_State_Connector_T::ccm_passivate (void) +{ + DDS_TopicBase_Connector_T::ccm_passivate (); + this->observable_.passivate (); + this->push_observer_.passivate (); + this->push_state_observer_.passivate (); + this->pull_observer_.passivate (); + this->passive_observer_.passivate (); +} + +template +void +DDS_State_Connector_T::ccm_remove (void) +{ + DDS_TopicBase_Connector_T::ccm_remove (); + this->observable_.remove (this->publisher_.in ()); + this->push_observer_.remove (this->subscriber_.in ()); + this->push_state_observer_.remove (this->subscriber_.in ()); + this->pull_observer_.remove (this->subscriber_.in ()); + this->passive_observer_.remove (this->subscriber_.in ()); +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h new file mode 100644 index 00000000000..b13b1953466 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h @@ -0,0 +1,110 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_STATE_CONNECTOR_T_H_ +#define DDS_STATE_CONNECTOR_T_H_ + +#include "dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h" +#include "dds4ccm/impl/ndds/DDS_Get_T.h" +#include "dds4ccm/impl/ndds/DDS_Listen_T.h" +#include "dds4ccm/impl/ndds/DDS_StateListen_T.h" +#include "dds4ccm/impl/ndds/DDS_Update_T.h" +#include "dds4ccm/impl/ndds/DDS_Read_T.h" + +template +class DDS_State_Connector_T + : public virtual DDS_TopicBase_Connector_T +{ +public: + DDS_State_Connector_T (void); + virtual ~DDS_State_Connector_T (void); + + virtual typename CCM_TYPE::updater_type::_ptr_type + get_observable_data (void); + + virtual ::DDS::CCM_DataWriter_ptr + get_observable_dds_entity (void); + + virtual typename CCM_TYPE::reader_type::_ptr_type + get_passive_observer_data (void); + + virtual ::DDS::CCM_DataReader_ptr + get_passive_observer_dds_entity (void); + + virtual typename CCM_TYPE::reader_type::_ptr_type + get_pull_observer_data (void); + + virtual typename CCM_TYPE::getter_type::_ptr_type + get_pull_observer_fresh_data (void); + + virtual ::DDS::CCM_DataReader_ptr + get_pull_observer_dds_entity (void); + + virtual typename CCM_TYPE::reader_type::_ptr_type + get_push_observer_data (void); + + virtual ::CCM_DDS::CCM_DataListenerControl_ptr + get_push_observer_data_control (void); + + virtual ::DDS::CCM_DataReader_ptr + get_push_observer_dds_entity (void); + + virtual typename CCM_TYPE::reader_type::_ptr_type + get_push_state_observer_data (void); + + virtual ::CCM_DDS::CCM_StateListenerControl_ptr + get_push_state_observer_data_control (void); + + virtual ::DDS::CCM_DataReader_ptr + get_push_state_observer_dds_entity (void); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + +private: + /** + * DDS_Update observable + */ + //@{ + DDS_Update_T observable_; + //@} + + /** + * DDS_Read passive_observer + */ + //@{ + DDS_Read_T passive_observer_; + //@} + + /** + * DDS_Get pull_observer + */ + //@{ + DDS_Get_T pull_observer_; + //@} + + /** + * DDS_Listen push_observer + */ + //@{ + DDS_Listen_T push_observer_; + //@} + + /** + * DDS_StateListen push_state_observer + */ + //@{ + DDS_StateListen_T push_state_observer_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_State_Connector_T.cpp" + +#endif /* DDS_STATE_CONNECTOR_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp new file mode 100644 index 00000000000..b136889b588 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp @@ -0,0 +1,258 @@ +// -*- C++ -*- +// $Id$ + +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/TopicListener_T.h" +#include "dds4ccm/impl/ndds/PublisherListener_T.h" +#include "dds4ccm/impl/ndds/SubscriberListener_T.h" + +template +DDS_TopicBase_Connector_T::DDS_TopicBase_Connector_T (void) : + DDS_Base_Connector_T() +{ +} + +template +DDS_TopicBase_Connector_T::~DDS_TopicBase_Connector_T (void) +{ +} + +template +void +DDS_TopicBase_Connector_T::configuration_complete (void) +{ + DDS_Base_Connector_T::configuration_complete (); + + this->configure_default_topic (); + this->configure_subscriber (); + this->configure_publisher (); +} + +template +void +DDS_TopicBase_Connector_T::ccm_remove (void) +{ + DDS_Base_Connector_T::ccm_remove (); +} + +template +void +DDS_TopicBase_Connector_T::ccm_activate (void) +{ + DDS_Base_Connector_T::ccm_activate (); +} + +template +void +DDS_TopicBase_Connector_T::ccm_passivate (void) +{ + DDS_Base_Connector_T::ccm_passivate (); +} + +template +char * +DDS_TopicBase_Connector_T::topic_name (void) +{ + CIAO_TRACE ("DDS_TopicBase_Connector_T::topic_name"); + return CORBA::string_dup (this->topic_name_.in ()); +} + +template +void +DDS_TopicBase_Connector_T::topic_name ( + const char * topic_name) +{ + CIAO_TRACE ("DDS_TopicBase_Connector_T::topic_name"); + if (this->configuration_complete_) + { + throw ::CCM_DDS::NonChangeable (); + } + else + { + this->topic_name_ = topic_name; + } +} + +template +void +DDS_TopicBase_Connector_T::key_fields ( + const ::DDS::StringSeq & key_fields) +{ + CIAO_TRACE ("DDS_TopicBase_Connector_T::key_fields"); + if (this->configuration_complete_) + { + throw ::CCM_DDS::NonChangeable (); + } + else + { + this->key_fields_.length (key_fields.length ()); + for (CORBA::ULong i = 0; i < key_fields.length (); ++i) + { + this->key_fields_.operator [](i) = CORBA::string_dup (key_fields[i]); + } + } +} + +template +::DDS::StringSeq * +DDS_TopicBase_Connector_T::key_fields (void) +{ + CIAO_TRACE ("DDS_TopicBase_Connector_T::key_fields"); +/* + For future use, DDS_TYPE doesn't have get_typecode yet + ::DDS_TypeCode* ptr = ::DDS_TYPE::get_typecode (); + DDS_ExceptionCode_t ex; + DDS_UnsignedLong number = ptr->member_count (ex); + for (DDS_UnsignedLong i = 0; i < number; i++) + { + if (ptr->is_member_key (i, ex)) + { + const char* name = ptr->member_name (i, ex); + printf ("Name: %s\n", name); + } + } + */ + ::DDS::StringSeq_var retval = + new ::DDS::StringSeq (this->key_fields_.length ()); + retval->length (this->key_fields_.length ()); + + for (CORBA::ULong i = 0; i < this->key_fields_.length (); ++i) + { + (*retval)[i] = CORBA::string_dup (this->key_fields_[i]); + } + return retval._retn (); +} + +template +void +DDS_TopicBase_Connector_T::configure_subscriber (void) +{ + CIAO_DEBUG (9, (LM_TRACE, CLINFO "DDS_TopicBase_Connector_T::configure_subscriber - " + "Configuring subscriber\n")); + + if (CORBA::is_nil (this->subscriber_.in ())) + { + this->subscriber_listener_ = new ::CIAO::DDS4CCM::SubscriberListener_T + ( + this->context_, + this->context_->get_connection_error_listener ()); + + if (this->library_name_ && this->profile_name_) + { + this->subscriber_ = this->domain_participant_-> + create_subscriber_with_profile ( + this->library_name_, + this->profile_name_, + this->subscriber_listener_.in (), + ::CIAO::DDS4CCM::SubscriberListener_T::get_mask ()); + } + else + { + ::DDS::SubscriberQos sqos; + this->subscriber_ = this->domain_participant_-> + create_subscriber ( + sqos, + this->subscriber_listener_.in (), + ::CIAO::DDS4CCM::SubscriberListener_T::get_mask ()); + } + } +} + +template +void +DDS_TopicBase_Connector_T::configure_publisher (void) +{ + CIAO_DEBUG (9, (LM_TRACE, CLINFO "DDS_TopicBase_Connector_T::configure_publisher - " + "Configuring publisher\n")); + + if (CORBA::is_nil (this->publisher_.in ())) + { + this->publisher_listener_ = new ::CIAO::DDS4CCM::PublisherListener_T + ( + this->context_, + this->context_->get_connection_error_listener ()); + + if (this->library_name_ && this->profile_name_) + { + this->publisher_ = this->domain_participant_-> + create_publisher_with_profile ( + this->library_name_, + this->profile_name_, + this->publisher_listener_.in (), + ::CIAO::DDS4CCM::PublisherListener_T::get_mask ()); + } + else + { + ::DDS::PublisherQos pqos; + this->publisher_ = this->domain_participant_-> + create_publisher ( + pqos, + this->publisher_listener_.in (), + ::CIAO::DDS4CCM::PublisherListener_T::get_mask ()); + } + } +} + +template +void +DDS_TopicBase_Connector_T::configure_default_topic (void) +{ + CIAO_DEBUG (9, (LM_TRACE, CLINFO "DDS_TopicBase_Connector_T::configure_default_topic - " + "Configuring default topic\n")); + + this->configure_default_domain (); + + if (CORBA::is_nil (this->topic_)) + { + try + { + CIAO::DDS4CCM::RTI::RTI_DomainParticipant_i *part = + dynamic_cast< CIAO::DDS4CCM::RTI::RTI_DomainParticipant_i * > ( + this->domain_participant_.in ()); + DDS_ReturnCode_t const retcode = DDS_TYPE::type_support::register_type( + part->get_impl (), DDS_TYPE::type_support::get_type_name ()); + + if (retcode == DDS_RETCODE_OK) + { + this->topiclistener_ = new ::CIAO::DDS4CCM::TopicListener_T + ( + this->context_->get_connection_error_listener ()); + + if (this->library_name_ && this->profile_name_) + { + ::DDS::TopicQos tqos; + this->topic_ = + this->domain_participant_->create_topic_with_profile ( + this->topic_name_.in (), + DDS_TYPE::type_support::get_type_name (), + this->library_name_, + this->profile_name_, + this->topiclistener_.in (), + ::CIAO::DDS4CCM::TopicListener_T::get_mask ()); + } + else + { + ::DDS::TopicQos tqos; + this->topic_ = + this->domain_participant_->create_topic ( + this->topic_name_.in (), + DDS_TYPE::type_support::get_type_name (), + tqos, + this->topiclistener_.in (), + ::CIAO::DDS4CCM::TopicListener_T::get_mask ()); + } + } + else + { + throw CCM_DDS::InternalError (retcode, 0); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_ERROR, "Caught unknown error while configuring default topic\n")); + throw CORBA::INTERNAL (); + } + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h new file mode 100644 index 00000000000..b6a80ad08dd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h @@ -0,0 +1,54 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_TOPIC_BASE_CONNECTOR_H +#define DDS_TOPIC_BASE_CONNECTOR_H + +#include "ace/Copy_Disabled.h" +#include "dds4ccm/impl/ndds/DDS_Base_Connector_T.h" + +template +class DDS_TopicBase_Connector_T + : public virtual DDS_Base_Connector_T +{ +public: + DDS_TopicBase_Connector_T (void); + virtual ~DDS_TopicBase_Connector_T (void); + + virtual char *topic_name (void); + + virtual void topic_name (const char * topic_name); + + virtual ::DDS::StringSeq *key_fields (void); + + virtual void key_fields (const ::DDS::StringSeq & key_fields); + + virtual void configuration_complete (void); + virtual void ccm_remove (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + +protected: + void configure_default_topic (void); + void configure_publisher (void); + void configure_subscriber (void); + + CORBA::String_var topic_name_; + DDS::StringSeq key_fields_; + + ::DDS::Topic_var topic_; + ::DDS::TopicListener_var topiclistener_; + + ::DDS::Publisher_var publisher_; + ::DDS::PublisherListener_var publisher_listener_; + ::DDS::Subscriber_var subscriber_; + ::DDS::SubscriberListener_var subscriber_listener_; +}; + +#include "dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp" + +#endif /* DDS_TOPIC_BASE_CONNECTOR_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp new file mode 100644 index 00000000000..e53d99126e3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp @@ -0,0 +1,142 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderStateListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/Updater_T.h" +#include "dds4ccm/impl/ndds/DataWriter.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_Update_T::DDS_Update_T (void) +{ +} + +template +DDS_Update_T::~DDS_Update_T (void) +{ +} + +template +void +DDS_Update_T::configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Publisher_ptr publisher, + const char* library_name, + const char* profile_name) +{ + CIAO_TRACE ("DDS_Update_T::configuration_complete"); + try + { + if (CORBA::is_nil (this->data_writer_.in ())) + { + ::DDS::DataWriter_var dwv_tmp; + if (library_name && profile_name) + { + dwv_tmp = publisher->create_datawriter_with_profile ( + topic, + library_name, + profile_name, + ::DDS::DataWriterListener::_nil (), + 0); + } + else + { + ::DDS::DataWriterQos dwqos; + dwv_tmp = publisher->create_datawriter ( + topic, + dwqos, + ::DDS::DataWriterListener::_nil (), + 0); + } + ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *rw = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *> (dwv_tmp.in ()); + this->rti_writer_.set_impl (rw->get_impl ()); + this->data_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp); + this->dds_update_.set_impl (dwv_tmp); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::configuration_complete: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Update_T::activate () +{ + CIAO_TRACE ("DDS_Update_T::activate"); + try + { + if (CORBA::is_nil (this->data_listener_.in ())) + { + this->data_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T + (); + } + this->rti_writer_.set_listener ( + this->data_listener_.in (), + ::CIAO::DDS4CCM::DataWriterListener_T::get_mask ()); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::activate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Update_T::passivate () +{ + CIAO_TRACE ("DDS_Update_T::passivate"); + try + { + this->rti_writer_.set_listener ( + ::DDS::DataWriterListener::_nil (), + 0); + this->data_listener_ = ::DDS::DataWriterListener::_nil (); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::passivate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Update_T::remove ( + ::DDS::Publisher_ptr publisher) +{ + CIAO_TRACE ("DDS_Update_T::remove"); + try + { + publisher->delete_datawriter (this->data_writer_.in ()); + this->rti_writer_.set_impl (0); + this->data_writer_ = ::DDS::CCM_DataWriter::_nil (); + this->dds_update_.set_impl (0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::remove: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +typename CCM_TYPE::updater_type::_ptr_type +DDS_Update_T::get_data (void) +{ + return &this->dds_update_; +} + +template +::DDS::CCM_DataWriter_ptr +DDS_Update_T::get_dds_entity (void) +{ + return &this->rti_writer_; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h new file mode 100644 index 00000000000..1fd0ddd1653 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h @@ -0,0 +1,51 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_UPDATE_T_H +#define DDS_UPDATE_T_H + +#include "dds4ccm/impl/ndds/Updater_T.h" + +template +class DDS_Update_T +{ +public: + DDS_Update_T (void); + ~DDS_Update_T (void); + + typename CCM_TYPE::updater_type::_ptr_type get_data (void); + + ::DDS::CCM_DataWriter_ptr get_dds_entity (void); + + void configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Publisher_ptr publisher, + const char* library_name, + const char* profile_name); + + void activate (void); + + void passivate (void); + + void remove ( + ::DDS::Publisher_ptr publisher); + +private: + /** + * DDS_Update + */ + //@{ + ::DDS::CCM_DataWriter_var data_writer_; + ::DDS::DataWriterListener_var data_listener_; + ::CIAO::DDS4CCM::RTI::Updater_T dds_update_; + ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i rti_writer_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_Update_T.cpp" + +#endif /* DDS_UPDATE_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp new file mode 100644 index 00000000000..7bccac7fa8a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp @@ -0,0 +1,148 @@ +// -*- C++ -*- +// $Id$ + +#include "dds4ccm/impl/ndds/DataReaderListener_T.h" +#include "dds4ccm/impl/ndds/DataWriterListener_T.h" +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +#include "ciao/Logger/Log_Macros.h" + +template +DDS_Write_T::DDS_Write_T (void) +{ +} + +template +DDS_Write_T::~DDS_Write_T (void) +{ +} + +template +void +DDS_Write_T::configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Publisher_ptr publisher, + const char* library_name, + const char* profile_name) +{ + CIAO_TRACE ("DDS_Write_T::configuration_complete"); + + try + { + if (CORBA::is_nil (this->data_writer_.in ())) + { + ::DDS::DataWriter_var dwv_tmp; + if (library_name && profile_name) + { + dwv_tmp = publisher->create_datawriter_with_profile ( + topic, + library_name, + profile_name, + ::DDS::DataWriterListener::_nil (), + 0); + } + else + { + ::DDS::DataWriterQos dwqos; + dwv_tmp = publisher->create_datawriter ( + topic, + dwqos, + ::DDS::DataWriterListener::_nil (), + 0); + } + ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *rw = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *> (dwv_tmp.in ()); + this->rti_writer_.set_impl (rw->get_impl ()); + this->data_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp); + this->writer_t_.set_impl (dwv_tmp); + } + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::configuration_complete: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} +template +void +DDS_Write_T::activate () +{ + CIAO_TRACE ("DDS_Write_T::activate"); + try + { + if (CORBA::is_nil (this->data_listener_.in ())) + { + this->data_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T + (); + } + this->rti_writer_.set_listener ( + this->data_listener_.in (), + ::CIAO::DDS4CCM::DataWriterListener_T::get_mask ()); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::activate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Write_T::passivate () +{ + CIAO_TRACE ("DDS_Write_T::passivate"); + try + { + this->rti_writer_.set_listener ( + ::DDS::DataWriterListener::_nil (), + 0); + this->data_listener_->_remove_ref (); + this->data_listener_ = ::DDS::DataWriterListener::_nil (); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::passivate: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_Write_T::remove ( + ::DDS::Publisher_ptr publisher) +{ + CIAO_TRACE ("DDS_Write_T::remove"); + try + { + publisher->delete_datawriter (this->data_writer_.in ()); + this->rti_writer_.set_impl (0); + this->data_writer_ = ::DDS::CCM_DataWriter::_nil (); + this->writer_t_.set_impl (0); + } + catch (...) + { + CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::remove: Caught unknown c++ exception.\n")); + throw CORBA::INTERNAL (); + } +} + + +template +typename CCM_TYPE::writer_type::_ptr_type +DDS_Write_T::get_data (void) +{ + CIAO_TRACE ("DDS_Write_T::get_data"); + + return &this->writer_t_; +} + +template +::DDS::CCM_DataWriter_ptr +DDS_Write_T::get_dds_entity (void) +{ + CIAO_TRACE ("DDS_Write_T::get_dds_entity"); + + return &this->rti_writer_; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h new file mode 100644 index 00000000000..6eef29555df --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h @@ -0,0 +1,58 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_WRITE_T_H_ +#define DDS_WRITE_T_H_ + +#include "dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.h" +#include "dds4ccm/impl/ndds/Writer_T.h" + +template +class DDS_Write_T +{ +public: + DDS_Write_T (void); + ~DDS_Write_T (void); + + /** + * @name DDS_Write + * DDS_Write operations + */ + //@{ + typename CCM_TYPE::writer_type::_ptr_type get_data (void); + + ::DDS::CCM_DataWriter_ptr get_dds_entity (void); + //@} + + void configuration_complete ( + ::DDS::Topic_ptr topic, + ::DDS::Publisher_ptr publisher, + const char* library_name, + const char* profile_name); + + void activate (void); + + void passivate (void); + + void remove ( + ::DDS::Publisher_ptr publisher); + +private: + /** + * DDS_Write + */ + //@{ + ::DDS::CCM_DataWriter_var data_writer_; + ::DDS::DataWriterListener_var data_listener_; + ::CIAO::DDS4CCM::RTI::Writer_T writer_t_; + ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i rti_writer_; + //@} +}; + +#include "dds4ccm/impl/ndds/DDS_Write_T.cpp" + +#endif /* DDS_WRITE_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.cpp new file mode 100644 index 00000000000..e3c83f0359d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.cpp @@ -0,0 +1,50 @@ +// -*- C++ -*- +// $Id$ + +template +CCM_DDS_DataListenerControl_T::CCM_DDS_DataListenerControl_T (void) : + mode_ (::CCM_DDS::NOT_ENABLED), + max_delivered_data_ (0) +{ + CIAO_TRACE ("CCM_DDS_DataListenerControl_T::CCM_DDS_DataListenerControl_T"); +} + +template +CCM_DDS_DataListenerControl_T::~CCM_DDS_DataListenerControl_T (void) +{ + CIAO_TRACE ("CCM_DDS_DataListenerControl_T::~CCM_DDS_DataListenerControl_T"); +} + +template +::CCM_DDS::ListenerMode +CCM_DDS_DataListenerControl_T::mode (void) +{ + CIAO_TRACE ("CCM_DDS_DataListenerControl_T::mode"); + return this->mode_.value (); +} + +template +void +CCM_DDS_DataListenerControl_T::mode (::CCM_DDS::ListenerMode mode) +{ + CIAO_TRACE ("CCM_DDS_DataListenerControl_T::mode"); + this->mode_ = mode; +} + +template +::CCM_DDS::DataNumber_t +CCM_DDS_DataListenerControl_T::max_delivered_data (void) +{ + CIAO_TRACE ("CCM_DDS_DataListenerControl_T::max_delivered_data"); + return this->max_delivered_data_.value (); +} + +template +void +CCM_DDS_DataListenerControl_T::max_delivered_data ( + ::CCM_DDS::DataNumber_t max_delivered_data) +{ + CIAO_TRACE ("CCM_DDS_DataListenerControl_T::max_delivered_data"); + this->max_delivered_data_ = max_delivered_data; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.h new file mode 100644 index 00000000000..c0aa0db8272 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataListenerControl_T.h @@ -0,0 +1,48 @@ +// -*- C++ -*- +// $Id$ + +#ifndef DDS4CCM_DATALISTENERCONTROLI_H_ +#define DDS4CCM_DATALISTENERCONTROLI_H_ + +#include "dds4ccm/idl/dds4ccm_DataListenerControlEC.h" +#include "tao/LocalObject.h" +#include "ace/Copy_Disabled.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template +class CCM_DDS_DataListenerControl_T + : public virtual BASE_TYPE, + public virtual ::CORBA::LocalObject, + private ACE_Copy_Disabled +{ +public: + /// Constructor + CCM_DDS_DataListenerControl_T (void); + + /// Destructor + virtual ~CCM_DDS_DataListenerControl_T (void); + + /// Set the mode + virtual ::CCM_DDS::ListenerMode mode (void); + + /// Get the mode + virtual void mode (::CCM_DDS::ListenerMode mode); + + /// Set the max_delivered_data + virtual ::CCM_DDS::DataNumber_t max_delivered_data (void); + + /// Get the max_delivered_data + virtual void max_delivered_data (::CCM_DDS::DataNumber_t max_delivered_data); + +protected: + ACE_Atomic_Op mode_; + ACE_Atomic_Op max_delivered_data_; +}; + +#include "dds4ccm/impl/ndds/DataListenerControl_T.cpp" + +#endif /* DDS4CCM_DATALISTENERCONTROLI_H_ */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp new file mode 100644 index 00000000000..499c7251777 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp @@ -0,0 +1,285 @@ +// $Id$ + +#include "DataReader.h" +#include "DataReaderListener.h" +#include "StatusCondition.h" +#include "ReadCondition.h" +#include "QueryCondition.h" +#include "SampleLostStatus.h" +#include "SubscriptionMatchedStatus.h" +#include "RequestedDeadlineMissedStatus.h" +#include "SampleRejectedStatus.h" +#include "LivelinessChangedStatus.h" +#include "RequestedIncompatibleQosStatus.h" +#include "Duration_t.h" +#include "InstanceHandle_t.h" +#include "InstanceHandleSeq.h" +#include "Subscriber.h" +#include "TopicDescription.h" +#include "DataReaderQos.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_DataReader_i::RTI_DataReader_i (void) + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_DataReader_i::~RTI_DataReader_i (void) + { + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::enable (void) + { + return this->impl ()->enable (); + } + + ::DDS::StatusCondition_ptr + RTI_DataReader_i::get_statuscondition (void) + { + DDSStatusCondition* sc = this->impl ()->get_statuscondition (); + ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (); + RTI_StatusCondition_i *rti_sc = dynamic_cast < RTI_StatusCondition_i *> (retval.in ()); + rti_sc->set_impl (sc); + return retval._retn (); + } + + ::DDS::StatusMask + RTI_DataReader_i::get_status_changes (void) + { + return this->impl ()->get_status_changes (); + } + + ::DDS::InstanceHandle_t + RTI_DataReader_i::get_instance_handle (void) + { + ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle (); + ::DDS::InstanceHandle_t handle; + handle <<= rtihandle; + return handle; + } + + ::DDS::ReadCondition_ptr + RTI_DataReader_i::create_readcondition ( + ::DDS::SampleStateMask sample_states, + ::DDS::ViewStateMask view_states, + ::DDS::InstanceStateMask instance_states) + { + DDSReadCondition* rc = this->impl ()->create_readcondition (sample_states, view_states, instance_states); + ::DDS::ReadCondition_var retval = new RTI_ReadCondition_i (); + RTI_ReadCondition_i *rti_rc = dynamic_cast < RTI_ReadCondition_i *>(retval.in ()); + rti_rc->set_impl (rc); + return retval._retn (); + } + + ::DDS::QueryCondition_ptr + RTI_DataReader_i::create_querycondition ( + ::DDS::SampleStateMask /*sample_states*/, + ::DDS::ViewStateMask /*view_states*/, + ::DDS::InstanceStateMask /*instance_states*/, + const char * /*query_expression*/, + const ::DDS::StringSeq & /*query_parameters*/) + { + DDSQueryCondition* qc = 0; // @todo = this->impl ()->create_querycondition (sample_states, view_states, instance_states, query_expression, query_parameters); + ::DDS::QueryCondition_var retval = new RTI_QueryCondition_i (); + RTI_QueryCondition_i *rti_qc = dynamic_cast < RTI_QueryCondition_i *> (retval.in ()); + rti_qc->set_impl (qc); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::delete_readcondition ( + ::DDS::ReadCondition_ptr a_condition) + { + RTI_ReadCondition_i *rc = dynamic_cast< RTI_ReadCondition_i *> (a_condition); + if (!rc) + { + return ::DDS::RETCODE_BAD_PARAMETER; + } + return this->impl ()->delete_readcondition (rc->get_impl ()); + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::delete_contained_entities (void) + { + return this->impl ()->delete_contained_entities (); + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::set_qos ( + const ::DDS::DataReaderQos &qos) + { + ::DDS_DataReaderQos ddsqos; + ddsqos <<= qos; + return this->impl ()->set_qos (ddsqos); + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_qos ( + ::DDS::DataReaderQos &qos) + { + ::DDS_DataReaderQos ddsqos; + ::DDS_ReturnCode_t const retval = this->impl ()->get_qos (ddsqos); + qos <<= ddsqos; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::set_listener ( + ::DDS::DataReaderListener_ptr a_listener, + ::DDS::StatusMask mask) + { + RTI_DataReaderListener_i* rti_impl_list = new RTI_DataReaderListener_i (a_listener); + return this->impl ()->set_listener (rti_impl_list, mask); + } + + ::DDS::DataReaderListener_ptr + RTI_DataReader_i::get_listener (void) + { + //::DDSDataReaderListener* reader = this->impl ()->get_listener (); +// ::DDS::DataReaderListener_var dds_reader = new RTI_DataReaderListener_i (reader); + //return dds_reader._retn (); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::TopicDescription_ptr + RTI_DataReader_i::get_topicdescription (void) + { + ::DDSTopicDescription* td = this->impl ()->get_topicdescription (); + ::DDS::TopicDescription_var dds_td = new RTI_TopicDescription_i (); + RTI_TopicDescription_i *rti_td = dynamic_cast < RTI_TopicDescription_i *>(dds_td.in ()); + rti_td->set_impl (td); + return dds_td._retn (); + } + + ::DDS::Subscriber_ptr + RTI_DataReader_i::get_subscriber (void) + { + ::DDSSubscriber* subscriber = this->impl ()->get_subscriber (); + ::DDS::Subscriber_var dds_td = new RTI_Subscriber_i (); + RTI_Subscriber_i *sub = dynamic_cast < RTI_Subscriber_i *>(dds_td.in ()); + sub->set_impl (subscriber); + return dds_td._retn (); + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_sample_rejected_status ( + ::DDS::SampleRejectedStatus & status) + { + DDS_SampleRejectedStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_sample_rejected_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_liveliness_changed_status ( + ::DDS::LivelinessChangedStatus & status) + { + DDS_LivelinessChangedStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_liveliness_changed_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_requested_deadline_missed_status ( + ::DDS::RequestedDeadlineMissedStatus & status) + { + DDS_RequestedDeadlineMissedStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_requested_deadline_missed_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_requested_incompatible_qos_status ( + ::DDS::RequestedIncompatibleQosStatus & status) + { + DDS_RequestedIncompatibleQosStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_requested_incompatible_qos_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_subscription_matched_status ( + ::DDS::SubscriptionMatchedStatus & status) + { + ::DDS_SubscriptionMatchedStatus ddsstatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_subscription_matched_status (ddsstatus); + ddsstatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_sample_lost_status ( + ::DDS::SampleLostStatus & status) + { + DDS_SampleLostStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_sample_lost_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::wait_for_historical_data ( + const ::DDS::Duration_t & max_wait) + { + ::DDS_Duration_t rtiduration; + rtiduration <<= max_wait; + return this->impl ()->wait_for_historical_data (rtiduration); + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_matched_publications ( + ::DDS::InstanceHandleSeq & publication_handles) + { + ::DDS_InstanceHandleSeq rtiseq; + ::DDS::ReturnCode_t const retval = this->impl ()->get_matched_publications (rtiseq); + rtiseq >>= publication_handles; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataReader_i::get_matched_publication_data ( + ::DDS::PublicationBuiltinTopicData & /*publication_data*/, + const ::DDS::InstanceHandle_t & /*publication_handle*/) + { + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + DDSDataReader * + RTI_DataReader_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_DataReader_i::set_impl (DDSDataReader * dw) + { + this->impl_ = dw; + } + + DDSDataReader * + RTI_DataReader_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h new file mode 100644 index 00000000000..768c81df7bb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h @@ -0,0 +1,144 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DATAREADER_H +#define CIAO_RTI_DATAREADER_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" +#include "tao/LocalObject.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DataReader_i + : public virtual ::DDS::CCM_DataReader, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_DataReader_i (void); + + // Destructor + virtual ~RTI_DataReader_i (void); + + virtual ::DDS::ReturnCode_t + enable (void); + + virtual ::DDS::StatusCondition_ptr + get_statuscondition (void); + + virtual ::DDS::StatusMask + get_status_changes (void); + + virtual ::DDS::InstanceHandle_t + get_instance_handle (void); + + virtual ::DDS::ReadCondition_ptr + create_readcondition ( + ::DDS::SampleStateMask sample_states, + ::DDS::ViewStateMask view_states, + ::DDS::InstanceStateMask instance_states); + + virtual ::DDS::QueryCondition_ptr + create_querycondition ( + ::DDS::SampleStateMask sample_states, + ::DDS::ViewStateMask view_states, + ::DDS::InstanceStateMask instance_states, + const char * query_expression, + const ::DDS::StringSeq & query_parameters); + + virtual ::DDS::ReturnCode_t + delete_readcondition ( + ::DDS::ReadCondition_ptr a_condition); + + virtual ::DDS::ReturnCode_t + delete_contained_entities (void); + + virtual ::DDS::ReturnCode_t + set_qos ( + const ::DDS::DataReaderQos & qos); + + virtual ::DDS::ReturnCode_t + get_qos ( + ::DDS::DataReaderQos & qos); + + virtual ::DDS::ReturnCode_t + set_listener ( + ::DDS::DataReaderListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::DataReaderListener_ptr + get_listener (void); + + virtual ::DDS::TopicDescription_ptr + get_topicdescription (void); + + virtual ::DDS::Subscriber_ptr + get_subscriber (void); + + virtual ::DDS::ReturnCode_t + get_sample_rejected_status ( + ::DDS::SampleRejectedStatus & status); + + virtual ::DDS::ReturnCode_t + get_liveliness_changed_status ( + ::DDS::LivelinessChangedStatus & status); + + virtual ::DDS::ReturnCode_t + get_requested_deadline_missed_status ( + ::DDS::RequestedDeadlineMissedStatus & status); + + virtual ::DDS::ReturnCode_t + get_requested_incompatible_qos_status ( + ::DDS::RequestedIncompatibleQosStatus & status); + + virtual ::DDS::ReturnCode_t + get_subscription_matched_status ( + ::DDS::SubscriptionMatchedStatus & status); + + virtual ::DDS::ReturnCode_t + get_sample_lost_status ( + ::DDS::SampleLostStatus & status); + + virtual ::DDS::ReturnCode_t + wait_for_historical_data ( + const ::DDS::Duration_t & max_wait); + + virtual ::DDS::ReturnCode_t + get_matched_publications ( + ::DDS::InstanceHandleSeq & publication_handles); + + virtual ::DDS::ReturnCode_t + get_matched_publication_data ( + ::DDS::PublicationBuiltinTopicData & publication_data, + const ::DDS::InstanceHandle_t & publication_handle); + + DDSDataReader * get_impl (void); + + void set_impl (DDSDataReader * dw); + + private: + DDSDataReader * impl_; + + DDSDataReader * impl (void); + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp new file mode 100644 index 00000000000..a068e675c94 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp @@ -0,0 +1,56 @@ +// $Id$ + +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" + + +template +CIAO::DDS4CCM::RTI::DataReaderHandler_T::DataReaderHandler_T ( + typename CCM_TYPE::listener_type::_ptr_type listener, + typename DDS_TYPE::data_reader * reader) + : reader_ (reader), + listener_ (CCM_TYPE::listener_type::_duplicate (listener)) +{ +} + +template +CIAO::DDS4CCM::RTI::DataReaderHandler_T::~DataReaderHandler_T (void) +{ +} + +template +int +CIAO::DDS4CCM::RTI::DataReaderHandler_T::handle_exception (ACE_HANDLE) +{ + try + { + // Loop until there are messages available in the queue + for(;;) + { + typename DDS_TYPE::value_type instance; + ::DDS_SampleInfo sampleinfo; + ::DDS::ReturnCode_t const result = this->reader_->take_next_sample(instance, + sampleinfo); + if (result == DDS_RETCODE_NO_DATA) + break; + else if (result != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), result)); + return 1; + } + if (sampleinfo.valid_data) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("DataReaderHandler_T : found valid data\n"))); + ::CCM_DDS::ReadInfo readinfo; + readinfo <<= sampleinfo; + listener_->on_one_data (instance, readinfo); + } + } + } + catch (...) + { + } + return 0; +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h new file mode 100644 index 00000000000..d4cfb988e54 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h @@ -0,0 +1,44 @@ +// $Id$ +/** + * @author Marcel Smit + * + * $Id$ + * + * Eventhandler on orb thread, handling the + * received data from DDS. + */ + +#ifndef CIAO_RTI_DATAREADERHANDLER_T_H +#define CIAO_RTI_DATAREADERHANDLER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Reactor.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class DataReaderHandler_T : + public ACE_Event_Handler + { + public: + DataReaderHandler_T ( + typename CCM_TYPE::listener_type::_ptr_type listener, + typename DDS_TYPE::data_reader * reader); + virtual ~DataReaderHandler_T (); + + virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); + private: + typename DDS_TYPE::data_reader * reader_; + typename CCM_TYPE::listener_type::_var_type listener_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/DataReaderHandler_T.cpp" + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp new file mode 100644 index 00000000000..5a837df224f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp @@ -0,0 +1,135 @@ +// $Id$ + +#include "DataReaderListener.h" +#include "DataReader.h" +#include "SampleLostStatus.h" +#include "SubscriptionMatchedStatus.h" +#include "RequestedDeadlineMissedStatus.h" +#include "SampleRejectedStatus.h" +#include "LivelinessChangedStatus.h" +#include "RequestedIncompatibleQosStatus.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_DataReaderListener_i::RTI_DataReaderListener_i (::DDS::DataReaderListener_ptr p) + : impl_ (::DDS::DataReaderListener::_duplicate (p)) + { + } + + // Implementation skeleton destructor + RTI_DataReaderListener_i::~RTI_DataReaderListener_i (void) + { + } + + void + RTI_DataReaderListener_i::on_requested_deadline_missed ( + ::DDSDataReader* the_reader, + const ::DDS_RequestedDeadlineMissedStatus & status) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_requested_deadline_missed"); + ::DDS::RequestedDeadlineMissedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_requested_deadline_missed (dds_reader.in (), ddsstatus); + } + + void + RTI_DataReaderListener_i::on_requested_incompatible_qos ( + ::DDSDataReader* the_reader, + const ::DDS_RequestedIncompatibleQosStatus & status) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_requested_incompatible_qos"); + ::DDS::RequestedIncompatibleQosStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_requested_incompatible_qos (dds_reader.in (), ddsstatus); + } + + void + RTI_DataReaderListener_i::on_sample_rejected ( + ::DDSDataReader* the_reader, + const ::DDS_SampleRejectedStatus & status) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_sample_rejected"); + ::DDS::SampleRejectedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_sample_rejected (dds_reader.in (), ddsstatus); + } + + void + RTI_DataReaderListener_i::on_liveliness_changed ( + ::DDSDataReader* the_reader, + const ::DDS_LivelinessChangedStatus & status) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_liveliness_changed"); + ::DDS::LivelinessChangedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_liveliness_changed (dds_reader.in (), ddsstatus); + } + + void + RTI_DataReaderListener_i::on_data_available(::DDSDataReader *the_reader) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_data_available"); + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_data_available (dds_reader.in ()); + } + + void + RTI_DataReaderListener_i::on_subscription_matched ( + ::DDSDataReader* the_reader, + const ::DDS_SubscriptionMatchedStatus & status) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_subscription_matched"); + ::DDS::SubscriptionMatchedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_subscription_matched (dds_reader.in (), ddsstatus); + } + + void + RTI_DataReaderListener_i::on_sample_lost ( + ::DDSDataReader* the_reader, + const ::DDS_SampleLostStatus & status) + { + CIAO_TRACE ("RTI_DataReaderListener_i::on_sample_lost"); + ::DDS::SampleLostStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_sample_lost (dds_reader.in (), ddsstatus); + } + + ::DDS::DataReaderListener_ptr + RTI_DataReaderListener_i::get_datareaderlistener (void) + { + return ::DDS::DataReaderListener::_duplicate (this->impl_.in ()); + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h new file mode 100644 index 00000000000..373cd469f7a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h @@ -0,0 +1,63 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DATAREADERLISTENER_H +#define CIAO_RTI_DATAREADERLISTENER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DataReaderListener_i : + public virtual ::DDSDataReaderListener + { + public: + // Constructor + RTI_DataReaderListener_i (::DDS::DataReaderListener_ptr p); + + // Destructor + virtual ~RTI_DataReaderListener_i (void); + + virtual void on_requested_deadline_missed(::DDSDataReader* reader, + const ::DDS_RequestedDeadlineMissedStatus& status); + + virtual void on_liveliness_changed(::DDSDataReader* reader, + const ::DDS_LivelinessChangedStatus& status); + + virtual void on_requested_incompatible_qos(::DDSDataReader* reader, + const ::DDS_RequestedIncompatibleQosStatus& status); + + virtual void on_sample_rejected(::DDSDataReader* reader, + const ::DDS_SampleRejectedStatus& status); + + virtual void on_data_available(::DDSDataReader* reader); + + virtual void on_sample_lost(::DDSDataReader* reader, + const ::DDS_SampleLostStatus& status); + + virtual void on_subscription_matched(::DDSDataReader* reader, + const ::DDS_SubscriptionMatchedStatus& status); + + ::DDS::DataReaderListener_ptr get_datareaderlistener (void); + private: + ::DDS::DataReaderListener_var impl_; + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp new file mode 100644 index 00000000000..2d359126189 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp @@ -0,0 +1,133 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::DataReaderListener_T::DataReaderListener_T ( + typename CCM_TYPE::listener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, + ::CCM_DDS::DataListenerControl_ptr control) + : PortStatusListener_T (port_status_listener) , + listener_ (CCM_TYPE::listener_type::_duplicate (listener)), + control_ (::CCM_DDS::DataListenerControl::_duplicate (control)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderListener_T::DataReaderListener_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::DataReaderListener_T::~DataReaderListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderListener_T::~DataReaderListener_T"); +} + +template +void +CIAO::DDS4CCM::RTI::DataReaderListener_T::on_data_available(::DDS::DataReader *rdr) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderListener_T::on_data_available"); + + if (CORBA::is_nil (this->control_.in ()) || this->control_->mode () == ::CCM_DDS::NOT_ENABLED) + return; + + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i* rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i*>(rdr); + if (!rd) + { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DataReaderListener_T::dynamic_cast failed.\n"))); + return; + } + + typename DDS_TYPE::data_reader * reader = + dynamic_cast< typename DDS_TYPE::data_reader * > ((rd->get_impl ())); + + if (!reader) + { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DataReaderListener_T::narrow failed.\n"))); + return; + } +// for now, don't use a DataReaderHandler. Just perform inline. +// ::CIAO::DDS4CCM::RTI::DataReaderHandler_T* rh = +// new ::CIAO::DDS4CCM::RTI::DataReaderHandler_T(this->listener_.in (), reader); +// this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh); + typename DDS_TYPE::dds_seq_type data; + DDS_SampleInfoSeq sample_info; + ::DDS::ReturnCode_t const result = reader->take ( + data, + sample_info, + DDS_LENGTH_UNLIMITED, + DDS_NOT_READ_SAMPLE_STATE, + DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE, + DDS_ANY_INSTANCE_STATE); + if (result == DDS_RETCODE_NO_DATA) + return; + else if (result != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), result)); + return; + } + + if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE) + { + for (::DDS_Long i = 0; i < data.length (); ++i) + { + if (sample_info[i].valid_data) + { + ::CCM_DDS::ReadInfo info; + info <<= sample_info[i]; + listener_->on_one_data (data[i], info); + } + } + } + else + { + CORBA::ULong nr_of_samples = 0; + for (::DDS_Long i = 0 ; i < sample_info.length(); i++) + { + if (sample_info[i].valid_data) + { + ++nr_of_samples; + } + } + + if (nr_of_samples > 0) + { + typename CCM_TYPE::seq_type::_var_type inst_seq = new typename CCM_TYPE::seq_type; + ::CCM_DDS::ReadInfoSeq_var infoseq = new ::CCM_DDS::ReadInfoSeq; + + infoseq->length (nr_of_samples); + inst_seq->length (nr_of_samples); + + // Copy the valid samples + CORBA::ULong ix = 0; + for (::DDS_Long i = 0 ; i < sample_info.length(); i++) + { + if(sample_info[i].valid_data) + { + infoseq[ix] <<= sample_info[i]; + inst_seq[ix] = data[i]; + ++ix; + } + } + listener_->on_many_data (inst_seq, infoseq); + } + } + // Return the loan + reader->return_loan(data, sample_info); +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::RTI::DataReaderListener_T::get_mask (void) +{ + return DDS_DATA_AVAILABLE_STATUS | + DDS_REQUESTED_DEADLINE_MISSED_STATUS | + DDS_SAMPLE_LOST_STATUS; +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h new file mode 100644 index 00000000000..b6d650604c5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h @@ -0,0 +1,49 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS4CCM_DATAREADERLISTENER_T_H +#define DDS4CCM_DATAREADERLISTENER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/PortStatusListener_T.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class DataReaderListener_T : + public PortStatusListener_T + { + public: + /// Constructor + DataReaderListener_T ( + typename CCM_TYPE::listener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, + ::CCM_DDS::DataListenerControl_ptr control); + + /// Destructor + virtual ~DataReaderListener_T (void); + + virtual void on_data_available( ::DDS::DataReader *rdr); + + static ::DDS::StatusMask get_mask (void); + private: + typename CCM_TYPE::listener_type::_var_type listener_; + ::CCM_DDS::DataListenerControl_var control_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/DataReaderListener_T.cpp" + +#endif /* DDS4CCM_DATAREADERLISTENER_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderQos.h new file mode 100644 index 00000000000..21b523b51cd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderQos.h @@ -0,0 +1,93 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DATAREADERQOS_H +#define CIAO_RTI_DATAREADERQOS_H + +#include "DurabilityQosPolicy.h" +#include "DeadlineQosPolicy.h" +#include "LatencyBudgetQosPolicy.h" +#include "LivelinessQosPolicy.h" +#include "ReliabilityQosPolicy.h" +#include "DestinationOrderQosPolicy.h" +#include "HistoryQosPolicy.h" +#include "ResourceLimitsQosPolicy.h" +#include "UserDataQosPolicy.h" +#include "OwnershipQosPolicy.h" +#include "TimeBasedFilterQosPolicy.h" +#include "ReaderDataLifecycleQosPolicy.h" + +inline void +operator<<= (::DDS::DataReaderQos &ddsqos, const ::DDS_DataReaderQos & qos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.time_based_filter <<= qos.time_based_filter; + ddsqos.reader_data_lifecycle <<= qos.reader_data_lifecycle; +} + +inline void +operator<<= (::DDS_DataReaderQos &ddsqos, const ::DDS::DataReaderQos & qos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.time_based_filter <<= qos.time_based_filter; + ddsqos.reader_data_lifecycle <<= qos.reader_data_lifecycle; +} + +inline void +operator>>= (const ::DDS_DataReaderQos &qos, ::DDS::DataReaderQos & ddsqos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.time_based_filter <<= qos.time_based_filter; + ddsqos.reader_data_lifecycle <<= qos.reader_data_lifecycle; +} + +inline void +operator>>= (const ::DDS::DataReaderQos &qos, ::DDS_DataReaderQos & ddsqos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.time_based_filter <<= qos.time_based_filter; + ddsqos.reader_data_lifecycle <<= qos.reader_data_lifecycle; +} + +#endif /* CIAO_RTI_DATAREADERQOS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp new file mode 100644 index 00000000000..515af1e08b7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.cpp @@ -0,0 +1,206 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +#include + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::DataReaderStateListener_T::DataReaderStateListener_T ( + typename CCM_TYPE::statelistener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, + ::CCM_DDS::StateListenerControl_ptr control) + : PortStatusListener_T (port_status_listener) , + listener_ (CCM_TYPE::statelistener_type::_duplicate (listener)), + control_ (::CCM_DDS::StateListenerControl::_duplicate (control)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderStateListener_T::DataReaderStateListener_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::DataReaderStateListener_T::~DataReaderStateListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderStateListener_T::~DataReaderStateListener_T"); +} + +template +void +CIAO::DDS4CCM::RTI::DataReaderStateListener_T::on_data_available(::DDS::DataReader *rdr) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderStateListener_T::on_data_available"); + + if (this->control_->mode () == ::CCM_DDS::NOT_ENABLED) + return; + + ::CIAO::DDS4CCM::RTI::RTI_DataReader_i* rd = + dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i*>(rdr); + if (!rd) + { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DataReaderStateListener_T::dynamic_cast failed.\n"))); + return; + } + + typename DDS_TYPE::data_reader * reader = + dynamic_cast< typename DDS_TYPE::data_reader * > ((rd->get_impl ())); + + if (!reader) + { + /* In this specific case, this will never fail */ + ACE_ERROR ((LM_ERROR, ACE_TEXT ("DataReaderStateListener_T::narrow failed.\n"))); + return; + } + + try + { + typename DDS_TYPE::dds_seq_type data; + DDS_SampleInfoSeq sample_info; + ::DDS_Long max_samples = 0; + + this->control_->mode () == ::CCM_DDS::ONE_BY_ONE + ? max_samples = DDS_LENGTH_UNLIMITED + : this->control_->max_delivered_data() == 0 + ? max_samples = DDS_LENGTH_UNLIMITED + : max_samples = this->control_->max_delivered_data (); + + ::DDS::ReturnCode_t const result = reader->take ( + data, + sample_info, + max_samples, + DDS_NOT_READ_SAMPLE_STATE, + DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE, + DDS_ANY_INSTANCE_STATE); + if (result == DDS_RETCODE_NO_DATA) + return; + else if (result != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), result)); + } + if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE) + { + for (::DDS_Long i = 0; i < data.length (); ++i) + { + // sample data may not be valid anymore when + // deleted so don't check the valid_data flag + // here. + if (sample_info[i].instance_state == + ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE) + { + ::CCM_DDS::ReadInfo readinfo; + readinfo <<= sample_info[i]; + this->listener_->on_deletion (data[i], readinfo); + } + if (sample_info[i].valid_data) + { + if (sample_info[i].view_state == + ::DDS_NEW_VIEW_STATE) + { + ::CCM_DDS::ReadInfo readinfo; + readinfo <<= sample_info[i]; + this->listener_->on_creation (data[i], readinfo); + } + else + { + ::CCM_DDS::ReadInfo info; + info <<= sample_info[i]; + this->listener_->on_one_update (data[i], info); + } + } + } + } + else if (this->control_->mode () == ::CCM_DDS::MANY_BY_MANY) + { + typedef std::vector Updates; + Updates updates; + + CORBA::ULong nr_of_updates = 0; + + for (::DDS_Long i = 0 ; i < sample_info.length(); i++) + { + if ((sample_info[i].valid_data && + sample_info[i].view_state == ::DDS_NEW_VIEW_STATE) || + sample_info[i].instance_state == ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE) + { + // new or delete found -> first send out the updated + // samples in one go + typename CCM_TYPE::seq_type::_var_type inst_seq = new typename CCM_TYPE::seq_type; + ::CCM_DDS::ReadInfoSeq_var infoseq = new ::CCM_DDS::ReadInfoSeq; + + infoseq->length (nr_of_updates); + inst_seq->length (nr_of_updates); + CORBA::ULong ix = 0; + for(Updates::iterator iter = updates.begin(); + iter != updates.end(); + ++iter) + { + infoseq[ix] <<= sample_info[*iter]; + inst_seq[ix] = data[*iter]; + ++ix; + } + this->listener_->on_many_updates (inst_seq, infoseq); + // now invoke on_creation or on_deletion + if (sample_info[i].valid_data && + sample_info[i].view_state == ::DDS_NEW_VIEW_STATE) + { + ::CCM_DDS::ReadInfo readinfo; + readinfo <<= sample_info[i]; + this->listener_->on_creation (data[i], readinfo); + } + else if (sample_info[i].instance_state == ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE) + { + ::CCM_DDS::ReadInfo readinfo; + readinfo <<= sample_info[i]; + this->listener_->on_deletion (data[i], readinfo); + } + //clean up + updates.clear (); + nr_of_updates = 0; + } + else if (sample_info[i].valid_data) + { + ++nr_of_updates; + updates.push_back (i); + } + } + //send the latest updates. + if (updates.size () > 0) + { + typename CCM_TYPE::seq_type::_var_type inst_seq = new typename CCM_TYPE::seq_type; + ::CCM_DDS::ReadInfoSeq_var infoseq = new ::CCM_DDS::ReadInfoSeq; + + infoseq->length (nr_of_updates); + inst_seq->length (nr_of_updates); + CORBA::ULong ix = 0; + for(Updates::iterator iter = updates.begin(); + iter != updates.end(); + ++iter) + { + infoseq[ix] <<= sample_info[*iter]; + inst_seq[ix] = data[*iter]; + ++ix; + } + this->listener_->on_many_updates (inst_seq, infoseq); + } + // Return the loan + reader->return_loan(data, sample_info); + } + } + catch (...) + { + } +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::RTI::DataReaderStateListener_T::get_mask (void) +{ + return DDS_DATA_AVAILABLE_STATUS | + DDS_REQUESTED_DEADLINE_MISSED_STATUS | + DDS_SAMPLE_LOST_STATUS; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h new file mode 100644 index 00000000000..24ca19a8310 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderStateListener_T.h @@ -0,0 +1,50 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS4CCM_DATAREADERSTATELISTENER_T_H +#define DDS4CCM_DATAREADERSTATELISTENER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class DataReaderStateListener_T : + public PortStatusListener_T + { + public: + /// Constructor + DataReaderStateListener_T ( + typename CCM_TYPE::statelistener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, + ::CCM_DDS::StateListenerControl_ptr control); + + /// Destructor + virtual ~DataReaderStateListener_T (void); + + virtual void on_data_available( ::DDS::DataReader *rdr); + + static ::DDS::StatusMask get_mask (void); + + private: + typename CCM_TYPE::statelistener_type::_var_type listener_; + ::CCM_DDS::StateListenerControl_var control_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/DataReaderStateListener_T.cpp" + +#endif /* DDS4CCM_DATAREADERSTATELISTENER_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp new file mode 100644 index 00000000000..901a403d9e3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp @@ -0,0 +1,210 @@ +// $Id$ + +#include "DataWriter.h" +#include "StatusCondition.h" +#include "Publisher.h" +#include "DataWriterListener.h" +#include "Topic.h" +#include "Duration_t.h" +#include "InstanceHandle_t.h" +#include "PublicationMatchedStatus.h" +#include "LivelinessLostStatus.h" +#include "OfferedIncompatibleQosStatus.h" +#include "OfferedDeadlineMissedStatus.h" +#include "InstanceHandleSeq.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_DataWriter_i::RTI_DataWriter_i (void) + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_DataWriter_i::~RTI_DataWriter_i (void) + { + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::set_qos (const ::DDS::DataWriterQos & /*qos*/) + { + CIAO_TRACE ("RTI_DataWriter_i::set_qos"); + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_qos (::DDS::DataWriterQos & /*qos*/) + { + CIAO_TRACE ("RTI_DataWriter_i::get_qos"); + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::set_listener (::DDS::DataWriterListener_ptr a_listener, + ::DDS::StatusMask mask) + { + RTI_DataWriterListener_i* rti_impl_list = new RTI_DataWriterListener_i (a_listener); + return this->impl ()->set_listener (rti_impl_list, mask); + } + + ::DDS::DataWriterListener_ptr + RTI_DataWriter_i::get_listener (void) + { + DDSDataWriterListener* wr = this->impl ()->get_listener (); + RTI_DataWriterListener_i *dwl = dynamic_cast< RTI_DataWriterListener_i *> (wr); + return dwl->get_datawriterlistener (); + } + + ::DDS::Topic_ptr + RTI_DataWriter_i::get_topic (void) + { + DDSTopic* t = this->impl ()->get_topic (); + ::DDS::Topic_var retval = new RTI_Topic_i (); + RTI_Topic_i *tp = dynamic_cast < RTI_Topic_i *> (retval.in ()); + tp->set_impl (t); + return retval._retn (); + } + + ::DDS::Publisher_ptr + RTI_DataWriter_i::get_publisher (void) + { + DDSPublisher* p = this->impl ()->get_publisher (); + ::DDS::Publisher_var retval = new RTI_Publisher_i (); + RTI_Publisher_i *rti_p = dynamic_cast < RTI_Publisher_i *> (retval.in ()); + rti_p->set_impl (p); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::wait_for_acknowledgments (const ::DDS::Duration_t & max_wait) + { + ::DDS_Duration_t rtiduration; + rtiduration <<= max_wait; + return this->impl ()->wait_for_acknowledgments (rtiduration); + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_liveliness_lost_status (::DDS::LivelinessLostStatus & status) + { + ::DDS_LivelinessLostStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_liveliness_lost_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_offered_deadline_missed_status (::DDS::OfferedDeadlineMissedStatus & status) + { + ::DDS_OfferedDeadlineMissedStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_offered_deadline_missed_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_offered_incompatible_qos_status (::DDS::OfferedIncompatibleQosStatus & status) + { + ::DDS_OfferedIncompatibleQosStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_offered_incompatible_qos_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_publication_matched_status (::DDS::PublicationMatchedStatus & status) + { + ::DDS_PublicationMatchedStatus rtistatus; + ::DDS::ReturnCode_t const retval = this->impl ()->get_publication_matched_status (rtistatus); + rtistatus >>= status; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::assert_liveliness (void) + { + return this->impl ()->assert_liveliness (); + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_matched_subscriptions (::DDS::InstanceHandleSeq & subscription_handles) + { + ::DDS_InstanceHandleSeq rtiseq; + ::DDS::ReturnCode_t const retval = this->impl ()->get_matched_subscriptions (rtiseq); + rtiseq >>= subscription_handles; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::get_matched_subscription_data (::DDS::SubscriptionBuiltinTopicData & /*subscription_data*/, + const ::DDS::InstanceHandle_t & /*subscription_handle*/) + { + CIAO_TRACE ("RTI_DataWriter_i::get_matched_subscription_data"); + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + ::DDS::ReturnCode_t + RTI_DataWriter_i::enable (void) + { + return this->impl ()->enable (); + } + + ::DDS::StatusCondition_ptr + RTI_DataWriter_i::get_statuscondition (void) + { + DDSStatusCondition* sc = this->impl ()->get_statuscondition (); + ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (); + RTI_StatusCondition_i *rti_sc = dynamic_cast < RTI_StatusCondition_i *> (retval.in ()); + rti_sc->set_impl (sc); + return retval._retn (); + } + + ::DDS::StatusMask + RTI_DataWriter_i::get_status_changes (void) + { + return this->impl ()->get_status_changes (); + } + + ::DDS::InstanceHandle_t + RTI_DataWriter_i::get_instance_handle (void) + { + ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle (); + ::DDS::InstanceHandle_t handle; + handle <<= rtihandle; + return handle; + } + + DDSDataWriter * + RTI_DataWriter_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_DataWriter_i::set_impl (DDSDataWriter * dw) + { + this->impl_ = dw; + } + + DDSDataWriter * + RTI_DataWriter_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h new file mode 100644 index 00000000000..f7655cc7e37 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h @@ -0,0 +1,108 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DATAWRITER_H +#define CIAO_RTI_DATAWRITER_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" +#include "tao/LocalObject.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DataWriter_i + : public virtual ::DDS::CCM_DataWriter, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_DataWriter_i (void); + + // Destructor + virtual ~RTI_DataWriter_i (void); + + virtual + ::DDS::ReturnCode_t set_qos (const ::DDS::DataWriterQos & qos); + + virtual + ::DDS::ReturnCode_t get_qos (::DDS::DataWriterQos & qos); + + virtual + ::DDS::ReturnCode_t set_listener (::DDS::DataWriterListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::DataWriterListener_ptr get_listener (void); + + virtual + ::DDS::Topic_ptr get_topic (void); + + virtual + ::DDS::Publisher_ptr get_publisher (void); + + virtual + ::DDS::ReturnCode_t wait_for_acknowledgments (const ::DDS::Duration_t & max_wait); + + virtual + ::DDS::ReturnCode_t get_liveliness_lost_status (::DDS::LivelinessLostStatus & status); + + virtual + ::DDS::ReturnCode_t get_offered_deadline_missed_status (::DDS::OfferedDeadlineMissedStatus & status); + + virtual + ::DDS::ReturnCode_t get_offered_incompatible_qos_status (::DDS::OfferedIncompatibleQosStatus & status); + + virtual + ::DDS::ReturnCode_t get_publication_matched_status (::DDS::PublicationMatchedStatus & status); + + virtual + ::DDS::ReturnCode_t assert_liveliness (void); + + virtual + ::DDS::ReturnCode_t get_matched_subscriptions (::DDS::InstanceHandleSeq & subscription_handles); + + virtual + ::DDS::ReturnCode_t get_matched_subscription_data (::DDS::SubscriptionBuiltinTopicData & subscription_data, + const ::DDS::InstanceHandle_t & subscription_handle); + + virtual + ::DDS::ReturnCode_t enable (void); + + virtual + ::DDS::StatusCondition_ptr get_statuscondition (void); + + virtual + ::DDS::StatusMask get_status_changes (void); + + virtual + ::DDS::InstanceHandle_t get_instance_handle (void); + + DDSDataWriter * get_impl (void); + + void set_impl (DDSDataWriter * dw); + + private: + DDSDataWriter * impl_; + + DDSDataWriter * impl (void); + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp new file mode 100644 index 00000000000..a4ab9432b3f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp @@ -0,0 +1,87 @@ +// $Id$ + +#include "DataWriterListener.h" +#include "DataWriter.h" +#include "PublicationMatchedStatus.h" +#include "LivelinessLostStatus.h" +#include "OfferedIncompatibleQosStatus.h" +#include "OfferedDeadlineMissedStatus.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_DataWriterListener_i::RTI_DataWriterListener_i (::DDS::DataWriterListener_ptr s) + : impl_ (::DDS::DataWriterListener::_duplicate (s)) + { + } + + // Implementation skeleton destructor + RTI_DataWriterListener_i::~RTI_DataWriterListener_i (void) + { + } + + void + RTI_DataWriterListener_i::on_offered_deadline_missed ( + ::DDSDataWriter *the_writer, + const ::DDS_OfferedDeadlineMissedStatus & status) + { + ::DDS::OfferedDeadlineMissedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (the_writer); + this->impl_->on_offered_deadline_missed (dds_writer.in (), ddsstatus); + } + + void + RTI_DataWriterListener_i::on_offered_incompatible_qos ( + ::DDSDataWriter *the_writer, + const ::DDS_OfferedIncompatibleQosStatus & status) + { + ::DDS::OfferedIncompatibleQosStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (the_writer); + this->impl_->on_offered_incompatible_qos (dds_writer.in (), ddsstatus); + } + + void + RTI_DataWriterListener_i::on_liveliness_lost ( + ::DDSDataWriter *the_writer, + const ::DDS_LivelinessLostStatus & status) + { + ::DDS::LivelinessLostStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (the_writer); + this->impl_->on_liveliness_lost (dds_writer.in (), ddsstatus); + } + + void + RTI_DataWriterListener_i::on_publication_matched ( + ::DDSDataWriter *the_writer, + const ::DDS_PublicationMatchedStatus & status) + { + ::DDS::PublicationMatchedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (the_writer); + this->impl_->on_publication_matched (dds_writer.in (), ddsstatus); + } + + ::DDS::DataWriterListener_ptr + RTI_DataWriterListener_i::get_datawriterlistener (void) + { + return ::DDS::DataWriterListener::_duplicate (this->impl_.in ()); + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h new file mode 100644 index 00000000000..29462493c48 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h @@ -0,0 +1,62 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DATAWRITERLISTENER_H +#define CIAO_RTI_DATAWRITERLISTENER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DataWriterListener_i : + public virtual ::DDSDataWriterListener + { + public: + // Constructor + RTI_DataWriterListener_i (::DDS::DataWriterListener_ptr p); + + // Destructor + virtual ~RTI_DataWriterListener_i (void); + + virtual void on_offered_deadline_missed ( + ::DDSDataWriter *the_writer, + const ::DDS_OfferedDeadlineMissedStatus & status); + + virtual void on_offered_incompatible_qos ( + ::DDSDataWriter *the_writer, + const ::DDS_OfferedIncompatibleQosStatus & status); + + virtual void on_liveliness_lost ( + ::DDSDataWriter *the_writer, + const ::DDS_LivelinessLostStatus & status); + + virtual void on_publication_matched ( + ::DDSDataWriter *the_writer, + const ::DDS_PublicationMatchedStatus & status); + + ::DDS::DataWriterListener_ptr get_datawriterlistener (void); + private: + ::DDS::DataWriterListener_var impl_; + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp new file mode 100644 index 00000000000..5bd4a39e1b7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.cpp @@ -0,0 +1,26 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataWriter.h" +#include "ciao/Logger/Log_Macros.h" + +template +CIAO::DDS4CCM::DataWriterListener_T::DataWriterListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::DataWriterListener_T::DataWriterListener_T"); +} + +template +CIAO::DDS4CCM::DataWriterListener_T::~DataWriterListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::DataWriterListener_T::~DataWriterListener_T"); +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::DataWriterListener_T::get_mask (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::DataWriterListener_T::get_mask"); + return DDS_STATUS_MASK_NONE; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.h new file mode 100644 index 00000000000..51ca4b0bd97 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener_T.h @@ -0,0 +1,55 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_DATAWRITERLISTENER_T +#define DDS_DATAWRITERLISTENER_T + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + template + class DataWriterListener_T : + public ::DDS::DataWriterListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + DataWriterListener_T (void); + + /// Destructor + virtual ~DataWriterListener_T (void); + + virtual void + on_offered_deadline_missed ( + ::DDS::DataWriter_ptr , + const ::DDS::OfferedDeadlineMissedStatus & ) {} + virtual void + on_offered_incompatible_qos ( + ::DDS::DataWriter_ptr , + const ::DDS::OfferedIncompatibleQosStatus & ) {} + virtual void + on_liveliness_lost ( + ::DDS::DataWriter_ptr , + const ::DDS::LivelinessLostStatus & ) {} + virtual void + on_publication_matched ( + ::DDS::DataWriter_ptr , + const ::DDS::PublicationMatchedStatus & ) {} + + static ::DDS::StatusMask get_mask (void); + }; + } +} + +#include "dds4ccm/impl/ndds/DataWriterListener_T.cpp" + +#endif /* DDS_DATAWRITERLISTENER_T */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterQos.h new file mode 100644 index 00000000000..6b24d40d494 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterQos.h @@ -0,0 +1,108 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DATAWRITERQOS_H +#define CIAO_RTI_DATAWRITERQOS_H + +#include "DurabilityQosPolicy.h" +#include "DurabilityServiceQosPolicy.h" +#include "DeadlineQosPolicy.h" +#include "LatencyBudgetQosPolicy.h" +#include "LivelinessQosPolicy.h" +#include "ReliabilityQosPolicy.h" +#include "DestinationOrderQosPolicy.h" +#include "HistoryQosPolicy.h" +#include "ResourceLimitsQosPolicy.h" +#include "TransportPriorityQosPolicy.h" +#include "LifespanQosPolicy.h" +#include "UserDataQosPolicy.h" +#include "OwnershipQosPolicy.h" +#include "OwnershipStrengthQosPolicy.h" +#include "WriterDataLifecycleQosPolicy.h" + +inline void +operator<<= (::DDS::DataWriterQos &ddsqos, const ::DDS_DataWriterQos & qos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.ownership_strength <<= qos.ownership_strength; + ddsqos.writer_data_lifecycle <<= qos.writer_data_lifecycle; +} + +inline void +operator<<= (::DDS_DataWriterQos &ddsqos, const ::DDS::DataWriterQos & qos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.ownership_strength <<= qos.ownership_strength; + ddsqos.writer_data_lifecycle <<= qos.writer_data_lifecycle; +} + +inline void +operator>>= (const ::DDS_DataWriterQos &qos, ::DDS::DataWriterQos & ddsqos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.ownership_strength <<= qos.ownership_strength; + ddsqos.writer_data_lifecycle <<= qos.writer_data_lifecycle; +} + +inline void +operator>>= (const ::DDS::DataWriterQos &qos, ::DDS_DataWriterQos & ddsqos) +{ + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.user_data <<= qos.user_data; + ddsqos.ownership <<= qos.ownership; + ddsqos.ownership_strength <<= qos.ownership_strength; + ddsqos.writer_data_lifecycle <<= qos.writer_data_lifecycle; +} + +#endif /* CIAO_RTI_DATAWRITERQOS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DeadlineQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DeadlineQosPolicy.h new file mode 100644 index 00000000000..45a24e0c3b0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DeadlineQosPolicy.h @@ -0,0 +1,38 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DEADLINEQOSPOLICY_H +#define CIAO_RTI_DEADLINEQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::DeadlineQosPolicy &ddsqos, const ::DDS_DeadlineQosPolicy & qos) +{ + ddsqos.period <<= qos.period; +} + +inline void +operator<<= (::DDS_DeadlineQosPolicy &ddsqos, const ::DDS::DeadlineQosPolicy & qos) +{ + ddsqos.period <<= qos.period; +} + +inline void +operator>>= (const ::DDS_DeadlineQosPolicy &qos, ::DDS::DeadlineQosPolicy & ddsqos) +{ + ddsqos.period <<= qos.period; +} + +inline void +operator>>= (const ::DDS::DeadlineQosPolicy &qos, ::DDS_DeadlineQosPolicy & ddsqos) +{ + ddsqos.period <<= qos.period; +} + +#endif /* CIAO_RTI_DEADLINEQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DestinationOrderQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DestinationOrderQosPolicy.h new file mode 100644 index 00000000000..00b58fe57c7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DestinationOrderQosPolicy.h @@ -0,0 +1,38 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DESTINATIONORDERQOSPOLICY_H +#define CIAO_RTI_DESTINATIONORDERQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::DestinationOrderQosPolicy &ddsqos, const ::DDS_DestinationOrderQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS::DestinationOrderQosPolicyKind> (qos.kind); +} + +inline void +operator<<= (::DDS_DestinationOrderQosPolicy &ddsqos, const ::DDS::DestinationOrderQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS_DestinationOrderQosPolicyKind> (qos.kind); +} + +inline void +operator>>= (const ::DDS_DestinationOrderQosPolicy &qos, ::DDS::DestinationOrderQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS::DestinationOrderQosPolicyKind> (qos.kind); +} + +inline void +operator>>= (const ::DDS::DestinationOrderQosPolicy &qos, ::DDS_DestinationOrderQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS_DestinationOrderQosPolicyKind> (qos.kind); +} + +#endif /* CIAO_RTI_DESTINATIONORDERQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp new file mode 100644 index 00000000000..1e5269cda7b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp @@ -0,0 +1,692 @@ +// $Id$ + +#include "DomainParticipant.h" +#include "Subscriber.h" +#include "Publisher.h" +#include "Topic.h" +#include "TopicDescription.h" +#include "Utils.h" +#include "StatusCondition.h" +#include "InstanceHandle_t.h" +#include "Duration_t.h" +#include "Time_t.h" +#include "InstanceHandleSeq.h" +#include "PublisherListener.h" +#include "SubscriberListener.h" +#include "TopicListener.h" +#include "PublisherQos.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_DomainParticipant_i::RTI_DomainParticipant_i (void) + : impl_ (0) + { + CIAO_TRACE ("RTI_DomainParticipant_i::RTI_DomainParticipant_i"); + } + + // Implementation skeleton destructor + RTI_DomainParticipant_i::~RTI_DomainParticipant_i (void) + { + CIAO_TRACE ("RTI_DomainParticipant_i::~RTI_DomainParticipant_i"); + } + + ::DDS::Publisher_ptr + RTI_DomainParticipant_i::create_publisher_with_profile ( + const char* library_name, + const char *profile_name, + ::DDS::PublisherListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_publisher_with_profile"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_publisher_with_profile - " + "Creating Publisher\n")); + + RTI_PublisherListener_i *rti_pl = new RTI_PublisherListener_i (a_listener); + DDSPublisher * rti_pub = + this->impl_->create_publisher_with_profile (library_name, + profile_name, + rti_pl, + mask); + + if (!rti_pub) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_publisher_with_profile - " + "Error: Unable to create Publisher\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipant_i::create_publisher_with_profile - " + "Successfully created a DDSPublisher\n")); + + rti_pub->enable (); + ::DDS::Publisher_var retval = new RTI_Publisher_i (); + RTI_Publisher_i *rti_p = dynamic_cast < RTI_Publisher_i *> (retval.in ()); + rti_p->set_impl (rti_pub); + + return retval._retn (); + } + + ::DDS::Publisher_ptr + RTI_DomainParticipant_i::create_publisher ( + const ::DDS::PublisherQos & /*qos*/, + ::DDS::PublisherListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_publisher"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_publisher - " + "Creating Publisher\n")); + + DDS_PublisherQos rti_qos = DDS_PUBLISHER_QOS_DEFAULT; +// rti_qos <<= qos; + RTI_PublisherListener_i *rti_pl = new RTI_PublisherListener_i (a_listener); + DDSPublisher * rti_pub = + this->impl_->create_publisher (rti_qos, + rti_pl, + mask); + + if (!rti_pub) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_publisher - " + "Error: Unable to create Publisher\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipant_i::create_publisher - " + "Successfully created a DDSPublisher\n")); + + rti_pub->enable (); + ::DDS::Publisher_var retval = new RTI_Publisher_i (); + RTI_Publisher_i *rti_p = dynamic_cast < RTI_Publisher_i *> (retval.in ()); + rti_p->set_impl (rti_pub); + + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::delete_publisher (::DDS::Publisher_ptr p) + { + RTI_Publisher_i *rti_pub = dynamic_cast < RTI_Publisher_i * > (p); + + if (!rti_pub) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_publisher - " + "Unable to cast provided object refence to servant pointer.\n")); + return ::DDS::RETCODE_ERROR; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::delete_publisher - " + "Successfully casted provided object refence to RTI_Publisher_i\n")); + + DDS_ReturnCode_t retval = this->impl_->delete_publisher (rti_pub->get_impl ()); + + if (retval != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_publisher - " + "Error: RTI delete_publisher returned non-ok error code %c\n", + translate_retcode (retval))); + } + else CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipant_i::delete_publisher - " + "Provided publisher successfully created\n")); + + return retval; + } + + ::DDS::Subscriber_ptr + RTI_DomainParticipant_i::create_subscriber_with_profile ( + const char* library_name, + const char *profile_name, + ::DDS::SubscriberListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_subscriber_with_profile"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_subscriber_with_profile - " + "Creating Subscriber\n")); + + RTI_SubscriberListener_i *rti_sl = new RTI_SubscriberListener_i (a_listener); + DDSSubscriber * rti_sub = + this->impl_->create_subscriber_with_profile ( + library_name, + profile_name, + rti_sl, + mask); + + if (!rti_sub) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_subscriber_with_profile - " + "Error: Unable to create Subscriber\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipant_i::create_subscriber_with_profile - " + "Successfully created a DDSSubscriber\n")); + + rti_sub->enable (); + ::DDS::Subscriber_var retval = new RTI_Subscriber_i (); + RTI_Subscriber_i *rti_s = dynamic_cast < RTI_Subscriber_i *> (retval.in ()); + rti_s->set_impl (rti_sub); + + return retval._retn (); + } + + ::DDS::Subscriber_ptr + RTI_DomainParticipant_i::create_subscriber (const ::DDS::SubscriberQos & /*qos*/, + ::DDS::SubscriberListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_subscriber"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_subscriber - " + "Creating Subscriber\n")); + + RTI_SubscriberListener_i *rti_sl = new RTI_SubscriberListener_i (a_listener); + DDSSubscriber * rti_sub = + this->impl_->create_subscriber (DDS_SUBSCRIBER_QOS_DEFAULT, + rti_sl, + mask); + + if (!rti_sub) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_subscriber - " + "Error: Unable to create Subscriber\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipant_i::create_subscriber - " + "Successfully created a DDSSubscriber\n")); + + rti_sub->enable (); + ::DDS::Subscriber_var retval = new RTI_Subscriber_i (); + RTI_Subscriber_i *rti_s = dynamic_cast < RTI_Subscriber_i *> (retval.in ()); + rti_s->set_impl (rti_sub); + + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::delete_subscriber (::DDS::Subscriber_ptr s) + { + RTI_Subscriber_i *rti_sub = dynamic_cast < RTI_Subscriber_i * > (s); + + if (!rti_sub) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_subscriber - " + "Unable to cast provided object refence to servant pointer.\n")); + return ::DDS::RETCODE_ERROR; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::delete_subscriber - " + "Successfully casted provided object refence to RTI_Subscriber_i\n")); + + return this->impl_->delete_subscriber (rti_sub->get_impl ()); + } + + ::DDS::Subscriber_ptr + RTI_DomainParticipant_i::get_builtin_subscriber (void) + { + DDSSubscriber* rti_sub = this->impl_->get_builtin_subscriber (); + ::DDS::Subscriber_var retval = new RTI_Subscriber_i (); + RTI_Subscriber_i *rti_s = dynamic_cast < RTI_Subscriber_i *> (retval.in ()); + rti_s->set_impl (rti_sub); + return retval._retn (); + } + + ::DDS::Topic_ptr + RTI_DomainParticipant_i::create_topic (const char * impl_name, + const char * type_name, + const ::DDS::TopicQos & /*qos*/, + ::DDS::TopicListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_topic"); + + if (impl_name == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Error: provided nil topic name\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, + 0); + } + + if (type_name == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Error: provided nil type name\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, + 0); + } + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Attempting to create topic with name %C and type %C\n", + impl_name, type_name)); + + RTI_TopicListener_i *rti_tl = new RTI_TopicListener_i (a_listener); + DDSTopic *rti_topic = this->impl_->create_topic (impl_name, + type_name, + DDS_TOPIC_QOS_DEFAULT, + rti_tl, + mask); + + if (rti_topic == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Error: RTI DDS returned a nil topic\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Successfully created topic with name %C and type %C\n", + impl_name, type_name)); + + ::DDS::Topic_var retval = new RTI_Topic_i (); + RTI_Topic_i *tp = dynamic_cast < RTI_Topic_i *> (retval.in ()); + tp->set_impl (rti_topic); + + return retval._retn (); + } + + ::DDS::Topic_ptr + RTI_DomainParticipant_i::create_topic_with_profile ( + const char *impl_name, + const char *type_name, + const char *library_name, + const char *profile_name, + ::DDS::TopicListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_topic_with_profile"); + + if (impl_name == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - " + "Error: provided nil topic name\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, + 0); + } + + if (type_name == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - " + "Error: provided nil type name\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, + 0); + } + + CIAO_DEBUG (6, (LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - " + "Attempting to create topic with name %C and type %C\n", + impl_name, type_name)); + + RTI_TopicListener_i *rti_tl = new RTI_TopicListener_i (a_listener); + DDSTopic *rti_topic = this->impl_->create_topic_with_profile (impl_name, + type_name, + library_name, + profile_name, + rti_tl, + mask); + + if (rti_topic == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Error: RTI DDS returned a nil topic\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + CIAO_DEBUG (6, (LM_INFO, CLINFO "DDS_DomainParticipant_i::create_topic - " + "Successfully created topic with name %C and type %C\n", + impl_name, type_name)); + + ::DDS::Topic_var retval = new RTI_Topic_i (); + RTI_Topic_i *tp = dynamic_cast < RTI_Topic_i *> (retval.in ()); + tp->set_impl (rti_topic); + + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::delete_topic (::DDS::Topic_ptr a_topic) + { + CIAO_TRACE ("DDS_DomainParticipant_i::delete_topic"); + + RTI_Topic_i *top = dynamic_cast< RTI_Topic_i *> (a_topic); + + if (top == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_topic - " + "Unable to cast provided object reference to servant.\n")); + return ::DDS::RETCODE_BAD_PARAMETER; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipant_i::delete_topic - " + "Successfully casted provided object reference to servant.\n")); + + DDS_ReturnCode_t retval = this->impl_->delete_topic (top->get_impl ()); + + if (retval != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_topic - " + "Error: RTI delete_topic returned non-ok error code %c\n", + translate_retcode (retval))); + } + else CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipant_i::delete_topic - " + "Provided topic successfully deleted\n")); + + return retval; + } + + ::DDS::Topic_ptr + RTI_DomainParticipant_i::find_topic (const char * impl_name, + const ::DDS::Duration_t & timeout) + { + ::DDS_Duration_t ddstimeout; + ddstimeout <<= timeout; + ::DDSTopic* rti_topic = this->impl_->find_topic (impl_name, ddstimeout); + ::DDS::Topic_var retval = new RTI_Topic_i (); + RTI_Topic_i *tp = dynamic_cast < RTI_Topic_i *> (retval.in ()); + tp->set_impl (rti_topic); + return retval._retn (); + } + + ::DDS::TopicDescription_ptr + RTI_DomainParticipant_i::lookup_topicdescription (const char * name) + { + ::DDSTopicDescription* rti_topic = this->impl_->lookup_topicdescription (name); + ::DDS::TopicDescription_var retval = new RTI_TopicDescription_i (); + RTI_TopicDescription_i *rti_td = dynamic_cast < RTI_TopicDescription_i *>(retval.in ()); + rti_td->set_impl (rti_topic); + return retval._retn (); + } + + ::DDS::ContentFilteredTopic_ptr + RTI_DomainParticipant_i::create_contentfilteredtopic (const char * /*name*/, + ::DDS::Topic_ptr /*related_topic*/, + const char * /*filter_expression*/, + const ::DDS::StringSeq & /*expression_parameters*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_contentfilteredtopic"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::delete_contentfilteredtopic (::DDS::ContentFilteredTopic_ptr /*a_contentfilteredtopic*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::delete_contentfilteredtopic"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::MultiTopic_ptr + RTI_DomainParticipant_i::create_multitopic (const char * /*name*/, + const char * /*type_name*/, + const char * /*subscription_expression*/, + const ::DDS::StringSeq & /*expression_parameters*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::create_multitopic"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::delete_multitopic (::DDS::MultiTopic_ptr /*a_multitopic*/) + { + //this->impl_->delete_multitopic ( + CIAO_TRACE ("DDS_DomainParticipant_i::delete_multitopic"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::delete_contained_entities (void) + { + return this->impl_->delete_contained_entities (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::set_qos (const ::DDS::DomainParticipantQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::set_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_qos (::DDS::DomainParticipantQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::set_listener (::DDS::DomainParticipantListener_ptr /*a_listener*/, + ::DDS::StatusMask /*mask*/) + { +// RTI_DomainParticipantListener_i* rti_impl_list = new RTI_DomainParticipantListener_i (a_listener); + //return this->impl_->set_listener (rti_impl_list, mask); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::DomainParticipantListener_ptr + RTI_DomainParticipant_i::get_listener (void) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_listener"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::ignore_participant (const ::DDS::InstanceHandle_t & handle) + { + ::DDS_InstanceHandle_t rti_handle; + rti_handle <<= handle; + return this->impl_->ignore_participant (rti_handle); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::ignore_topic (const ::DDS::InstanceHandle_t & handle) + { + ::DDS_InstanceHandle_t rti_handle; + rti_handle <<= handle; + return this->impl_->ignore_topic (rti_handle); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::ignore_publication (const ::DDS::InstanceHandle_t & handle) + { + ::DDS_InstanceHandle_t rti_handle; + rti_handle <<= handle; + return this->impl_->ignore_publication (rti_handle); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::ignore_subscription (const ::DDS::InstanceHandle_t & handle) + { + ::DDS_InstanceHandle_t rti_handle; + rti_handle <<= handle; + return this->impl_->ignore_subscription (rti_handle); + } + + ::DDS::DomainId_t + RTI_DomainParticipant_i::get_domain_id (void) + { + return this->impl_->get_domain_id (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::assert_liveliness (void) + { + return this->impl_->assert_liveliness (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::set_default_publisher_qos (const ::DDS::PublisherQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::set_default_publisher_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_default_publisher_qos (::DDS::PublisherQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_default_publisher_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::set_default_subscriber_qos (const ::DDS::SubscriberQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::set_default_subscriber_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_default_subscriber_qos (::DDS::SubscriberQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_default_subscriber_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::set_default_topic_qos (const ::DDS::TopicQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::set_default_topic_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_default_topic_qos (::DDS::TopicQos & /*qos*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_default_topic_qos"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_discovered_participants (::DDS::InstanceHandleSeq & impl_handles) + { + ::DDS_InstanceHandleSeq rtiseq; + ::DDS::ReturnCode_t const retval = this->impl_->get_discovered_participants (rtiseq); + rtiseq >>= impl_handles; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_discovered_participant_data (::DDS::ParticipantBuiltinTopicData & /*impl_data*/, + const ::DDS::InstanceHandle_t & /*impl_handle*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_discovered_participant_data"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_discovered_topics (::DDS::InstanceHandleSeq & impl_handles) + { + ::DDS_InstanceHandleSeq rtiseq; + ::DDS::ReturnCode_t const retval = this->impl_->get_discovered_topics (rtiseq); + rtiseq >>= impl_handles; + return retval; + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_discovered_topic_data (::DDS::TopicBuiltinTopicData & /*impl_data*/, + const ::DDS::InstanceHandle_t & /*impl_handle*/) + { + CIAO_TRACE ("DDS_DomainParticipant_i::get_discovered_topic_data"); + throw CORBA::NO_IMPLEMENT (); + + } + + ::CORBA::Boolean + RTI_DomainParticipant_i::contains_entity (const ::DDS::InstanceHandle_t & a_handle) + { + ::DDS_InstanceHandle_t rti_handle; + rti_handle <<= a_handle; + return this->impl_->contains_entity (rti_handle); + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::get_current_time (::DDS::Time_t & current_time) + { + DDS_Time_t rti_time; + ::DDS::ReturnCode_t const retval = this->impl_->get_current_time (rti_time); + rti_time >>= current_time; + return retval; + + } + + ::DDS::ReturnCode_t + RTI_DomainParticipant_i::enable (void) + { + return this->impl_->enable (); + } + + ::DDS::StatusCondition_ptr + RTI_DomainParticipant_i::get_statuscondition (void) + { + DDSStatusCondition* sc = this->impl_->get_statuscondition (); + ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (); + RTI_StatusCondition_i *rti_sc = dynamic_cast < RTI_StatusCondition_i *> (retval.in ()); + rti_sc->set_impl (sc); + return retval._retn (); + } + + ::DDS::StatusMask + RTI_DomainParticipant_i::get_status_changes (void) + { + return this->impl_->get_status_changes (); + } + + ::DDS::InstanceHandle_t + RTI_DomainParticipant_i::get_instance_handle (void) + { + ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle (); + ::DDS::InstanceHandle_t handle; + handle <<= rtihandle; + return handle; + } + + DDSDomainParticipant * + RTI_DomainParticipant_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_DomainParticipant_i::set_impl (DDSDomainParticipant * dw) + { + this->impl_ = dw; + } + + DDSDomainParticipant * + RTI_DomainParticipant_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h new file mode 100644 index 00000000000..8df41a7b687 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h @@ -0,0 +1,200 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_NDDS_PARTICIPANT_H +#define CIAO_NDDS_PARTICIPANT_H + +#include "tao/LocalObject.h" +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DomainParticipant_i : + public virtual ::DDS::CCM_DomainParticipant, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_DomainParticipant_i (void); + + // Destructor + virtual ~RTI_DomainParticipant_i (void); + + virtual ::DDS::Publisher_ptr create_publisher ( + const ::DDS::PublisherQos & qos, + ::DDS::PublisherListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::Publisher_ptr create_publisher_with_profile ( + const char* library_name, + const char *profile_name, + ::DDS::PublisherListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::ReturnCode_t delete_publisher (::DDS::Publisher_ptr p); + + virtual ::DDS::Subscriber_ptr create_subscriber ( + const ::DDS::SubscriberQos & qos, + ::DDS::SubscriberListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::Subscriber_ptr create_subscriber_with_profile( + const char* library_name, + const char *profile_name, + ::DDS::SubscriberListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::ReturnCode_t delete_subscriber (::DDS::Subscriber_ptr s); + + virtual ::DDS::Subscriber_ptr get_builtin_subscriber (void); + + virtual ::DDS::Topic_ptr create_topic ( + const char * impl_name, + const char * type_name, + const ::DDS::TopicQos & qos, + ::DDS::TopicListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::Topic_ptr create_topic_with_profile ( + const char * impl_name, + const char * type_name, + const char* library_name, + const char *profile_name, + ::DDS::TopicListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::ReturnCode_t delete_topic (::DDS::Topic_ptr a_topic); + + virtual ::DDS::Topic_ptr find_topic ( + const char * impl_name, + const ::DDS::Duration_t & timeout); + + virtual ::DDS::TopicDescription_ptr lookup_topicdescription ( + const char * name); + + virtual ::DDS::ContentFilteredTopic_ptr create_contentfilteredtopic ( + const char * name, + ::DDS::Topic_ptr related_topic, + const char * filter_expression, + const ::DDS::StringSeq & expression_parameters); + + virtual ::DDS::ReturnCode_t delete_contentfilteredtopic ( + ::DDS::ContentFilteredTopic_ptr a_contentfilteredtopic); + + virtual ::DDS::MultiTopic_ptr create_multitopic ( + const char * name, + const char * type_name, + const char * subscription_expression, + const ::DDS::StringSeq & expression_parameters); + + virtual ::DDS::ReturnCode_t delete_multitopic ( + ::DDS::MultiTopic_ptr a_multitopic); + + virtual ::DDS::ReturnCode_t delete_contained_entities (void); + + virtual ::DDS::ReturnCode_t set_qos ( + const ::DDS::DomainParticipantQos & qos); + + virtual ::DDS::ReturnCode_t get_qos ( + ::DDS::DomainParticipantQos & qos); + + virtual ::DDS::ReturnCode_t set_listener ( + ::DDS::DomainParticipantListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::DomainParticipantListener_ptr get_listener (void); + + virtual ::DDS::ReturnCode_t ignore_participant ( + const ::DDS::InstanceHandle_t & handle); + + virtual ::DDS::ReturnCode_t ignore_topic ( + const ::DDS::InstanceHandle_t & handle); + + virtual ::DDS::ReturnCode_t ignore_publication ( + const ::DDS::InstanceHandle_t & handle); + + virtual ::DDS::ReturnCode_t ignore_subscription ( + const ::DDS::InstanceHandle_t & handle); + + virtual ::DDS::DomainId_t get_domain_id (void); + + virtual ::DDS::ReturnCode_t assert_liveliness (void); + + virtual ::DDS::ReturnCode_t set_default_publisher_qos ( + const ::DDS::PublisherQos & qos); + + virtual ::DDS::ReturnCode_t get_default_publisher_qos ( + ::DDS::PublisherQos & qos); + + virtual ::DDS::ReturnCode_t set_default_subscriber_qos ( + const ::DDS::SubscriberQos & qos); + + virtual ::DDS::ReturnCode_t get_default_subscriber_qos ( + ::DDS::SubscriberQos & qos); + + virtual ::DDS::ReturnCode_t set_default_topic_qos ( + const ::DDS::TopicQos & qos); + + virtual ::DDS::ReturnCode_t get_default_topic_qos ( + ::DDS::TopicQos & qos); + + virtual ::DDS::ReturnCode_t get_discovered_participants ( + ::DDS::InstanceHandleSeq & impl_handles); + + virtual ::DDS::ReturnCode_t get_discovered_participant_data ( + ::DDS::ParticipantBuiltinTopicData & impl_data, + const ::DDS::InstanceHandle_t & impl_handle); + + virtual ::DDS::ReturnCode_t get_discovered_topics ( + ::DDS::InstanceHandleSeq & impl_handles); + + virtual ::DDS::ReturnCode_t get_discovered_topic_data ( + ::DDS::TopicBuiltinTopicData & impl_data, + const ::DDS::InstanceHandle_t & impl_handle); + + virtual ::CORBA::Boolean contains_entity ( + const ::DDS::InstanceHandle_t & a_handle); + + virtual ::DDS::ReturnCode_t get_current_time ( + ::DDS::Time_t & current_time); + + virtual ::DDS::ReturnCode_t enable (void); + + virtual ::DDS::StatusCondition_ptr get_statuscondition (void); + + virtual ::DDS::StatusMask get_status_changes (void); + + virtual ::DDS::InstanceHandle_t get_instance_handle (void); + + DDSDomainParticipant * get_impl (void); + + void set_impl (DDSDomainParticipant * dp); + + protected: + DDSDomainParticipant *impl_; + + DDSDomainParticipant * impl (void); + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp new file mode 100644 index 00000000000..9c8f06ba3c7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp @@ -0,0 +1,176 @@ +// $Id$ + +#include "DomainParticipantFactory.h" +#include "DomainParticipant.h" +#include "Utils.h" + +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + RTI_DomainParticipantFactory_i::RTI_DomainParticipantFactory_i (void) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::RTI_DomainParticipantFactory_i"); + } + + RTI_DomainParticipantFactory_i::~RTI_DomainParticipantFactory_i (void) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::~RTI_DomainParticipantFactory_i"); + } + + ::DDS::DomainParticipant_ptr + RTI_DomainParticipantFactory_i::create_participant (::DDS::DomainId_t domain_id, + const ::DDS::DomainParticipantQos & /*qos*/, + ::DDS::DomainParticipantListener_ptr /*a_listener*/, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::create_participant"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipantFactory_i::create_participant - " + "Creating domain participant\n")); + DDSDomainParticipant *part = DDSDomainParticipantFactory::get_instance ()-> + create_participant (domain_id, + DDS_PARTICIPANT_QOS_DEFAULT, + 0, + mask); + + if (!part) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::create_participant - " + "Error: Unable to create DomainParticipant\n")); + throw CCM_DDS::InternalError (1, 0); + } + + part->enable (); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (part); + + return retval._retn (); + } + + + ::DDS::DomainParticipant_ptr + RTI_DomainParticipantFactory_i::create_participant_with_profile ( + ::DDS::DomainId_t domain_id, + const char* library_name, + const char *profile_name, + ::DDS::DomainParticipantListener_ptr /*a_listener*/, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::create_participant_with_profile"); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipantFactory_i::create_participant_with_profile - " + "Creating domain participant\n")); + DDSDomainParticipant *part = DDSDomainParticipantFactory::get_instance ()-> + create_participant_with_profile (domain_id, + library_name, + profile_name, + 0, + mask); + + if (!part) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::create_participant_with_profile - " + "Error: Unable to create DomainParticipant\n")); + throw CCM_DDS::InternalError (1, 0); + } + + part->enable (); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (part); + + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipantFactory_i::delete_participant (::DDS::DomainParticipant_ptr a_participant) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::delete_participant"); + + RTI_DomainParticipant_i *part = dynamic_cast< RTI_DomainParticipant_i * > (a_participant); + + if (!part) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - " + "Unable to cast provided object reference to servant type, bailing.\n")); + return DDS::RETCODE_ERROR; + } + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - " + "Successfully casted provided object reference to servant type.\n")); + + DDS_ReturnCode_t retval = DDSDomainParticipantFactory::get_instance ()-> + delete_participant (part->get_impl ()); + + if (retval != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - " + "RTI delete_participant returned non-ok error code %C\n", + translate_retcode (retval))); + } + else CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - " + "Successfully deleted provided participant.\n")); + + return retval; + } + + ::DDS::DomainParticipant_ptr + RTI_DomainParticipantFactory_i::lookup_participant (::DDS::DomainId_t domain_id) + { + DDSDomainParticipant* dp = DDSDomainParticipantFactory::get_instance ()->lookup_participant (domain_id); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (dp); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipantFactory_i::set_default_participant_qos (const ::DDS::DomainParticipantQos & /*qos*/) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::set_default_participant_qos"); + + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipantFactory_i::get_default_participant_qos (::DDS::DomainParticipantQos & /*qos*/) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::get_default_participant_qos"); + + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipantFactory_i::set_qos (const ::DDS::DomainParticipantFactoryQos & /*qos*/) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::set_qos"); + + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipantFactory_i::get_qos (::DDS::DomainParticipantFactoryQos & /*qos*/) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::get_qos"); + + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_DomainParticipantFactory_i::set_default_participant_qos_with_profile ( + const char* library_name, + const char *profile_name) + { + CIAO_TRACE ("RTI_DomainParticipantFactory_i::set_default_participant_qos_with_profile"); + + return DDSDomainParticipantFactory::get_instance ()->set_default_participant_qos_with_profile (library_name, profile_name); + } + } + } +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h new file mode 100644 index 00000000000..064574b47b6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h @@ -0,0 +1,79 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS_RTI_PARTICIPANTFACTORY_H +#define DDS_RTI_PARTICIPANTFACTORY_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DomainParticipantFactory_i : + public virtual ::DDS::CCM_DomainParticipantFactory, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_DomainParticipantFactory_i (void); + + // Destructor + virtual ~RTI_DomainParticipantFactory_i (void); + + virtual + ::DDS::DomainParticipant_ptr create_participant (::DDS::DomainId_t domain_id, + const ::DDS::DomainParticipantQos & qos, + ::DDS::DomainParticipantListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::DomainParticipant_ptr create_participant_with_profile (::DDS::DomainId_t domain_id, + const char* library_name, + const char *profile_name, + ::DDS::DomainParticipantListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::ReturnCode_t delete_participant (::DDS::DomainParticipant_ptr a_participant); + + virtual + ::DDS::DomainParticipant_ptr lookup_participant (::DDS::DomainId_t domain_id); + + virtual + ::DDS::ReturnCode_t set_default_participant_qos (const ::DDS::DomainParticipantQos & qos); + + virtual + ::DDS::ReturnCode_t get_default_participant_qos (::DDS::DomainParticipantQos & qos); + + virtual + ::DDS::ReturnCode_t set_qos (const ::DDS::DomainParticipantFactoryQos & qos); + + virtual + ::DDS::ReturnCode_t get_qos (::DDS::DomainParticipantFactoryQos & qos); + + virtual ::DDS::ReturnCode_t set_default_participant_qos_with_profile( + const char* library_name, + const char *profile_name); + + }; + } + } +} + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactoryQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactoryQos.h new file mode 100644 index 00000000000..ba7c84c030d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactoryQos.h @@ -0,0 +1,38 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DOMAINPARTICIPANTFACTORYQOSPOLICY_H +#define CIAO_RTI_DOMAINPARTICIPANTFACTORYQOSPOLICY_H + +#include "EntityFactoryQosPolicy.h" + +inline void +operator<<= (::DDS::DomainParticipantFactoryQos &ddsqos, const ::DDS_DomainParticipantFactoryQos & qos) +{ + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator<<= (::DDS_DomainParticipantFactoryQos &ddsqos, const ::DDS::DomainParticipantFactoryQos & qos) +{ + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS_DomainParticipantFactoryQos &qos, ::DDS::DomainParticipantFactoryQos & ddsqos) +{ + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS::DomainParticipantFactoryQos &qos, ::DDS_DomainParticipantFactoryQos & ddsqos) +{ + ddsqos.entity_factory <<= qos.entity_factory; +} + +#endif /* CIAO_RTI_DOMAINPARTICIPANTFACTORYQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp new file mode 100644 index 00000000000..37a4c33fc7d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp @@ -0,0 +1,40 @@ +// $Id$ + +#include "DomainParticipantListener.h" +#include "DomainParticipant.h" +#include "SampleLostStatus.h" +#include "SubscriptionMatchedStatus.h" +#include "RequestedDeadlineMissedStatus.h" +#include "SampleRejectedStatus.h" +#include "LivelinessChangedStatus.h" +#include "RequestedIncompatibleQosStatus.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + RTI_DomainParticipantListener_i::RTI_DomainParticipantListener_i ( + ::DDS::DomainParticipantListener_ptr p) + : impl_ (::DDS::DomainParticipantListener::_duplicate (p)) + { + } + + RTI_DomainParticipantListener_i::~RTI_DomainParticipantListener_i (void) + { + } + + ::DDS::DomainParticipantListener_ptr + RTI_DomainParticipantListener_i::get_domainparticipantlistener (void) + { + return ::DDS::DomainParticipantListener::_duplicate (this->impl_.in ()); + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h new file mode 100644 index 00000000000..0fd77cee91b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h @@ -0,0 +1,44 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DOMAINPARTICIPANTLISTENER_H +#define CIAO_RTI_DOMAINPARTICIPANTLISTENER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_DomainParticipantListener_i : + public virtual ::DDSDomainParticipantListener + { + public: + // Constructor + RTI_DomainParticipantListener_i (::DDS::DomainParticipantListener_ptr p); + + // Destructor + virtual ~RTI_DomainParticipantListener_i (void); + + ::DDS::DomainParticipantListener_ptr get_domainparticipantlistener (void); + private: + ::DDS::DomainParticipantListener_var impl_; + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp new file mode 100644 index 00000000000..7c6b0361c90 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp @@ -0,0 +1,32 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::DomainParticipantListener_T::DomainParticipantListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) + : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::DomainParticipantListener_T::DomainParticipantListener_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::DomainParticipantListener_T::~DomainParticipantListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::DomainParticipantListener_T::~DomainParticipantListener_T"); +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::DomainParticipantListener_T::get_mask (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::DomainParticipantListener_T::get_mask"); + return DDS_STATUS_MASK_NONE; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h new file mode 100644 index 00000000000..8032f5121f8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h @@ -0,0 +1,90 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + template + class DomainParticipantListener_T : + public virtual ::DDS::CCM_DomainParticipantListener, + public virtual ::CORBA::LocalObject, + private virtual ACE_Copy_Disabled + { + public: + /// Constructor + DomainParticipantListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + /// Destructor + virtual ~DomainParticipantListener_T (void); + + static ::DDS::StatusMask get_mask (void); + + virtual void + on_inconsistent_topic ( + ::DDS::Topic_ptr, + const ::DDS::InconsistentTopicStatus & ) {} + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr , + const ::DDS::RequestedDeadlineMissedStatus & ) {} + virtual void + on_requested_incompatible_qos ( + ::DDS::DataReader_ptr , + const ::DDS::RequestedIncompatibleQosStatus & ) {} + virtual void + on_sample_rejected ( + ::DDS::DataReader_ptr , + const ::DDS::SampleRejectedStatus & ) {} + virtual void + on_liveliness_changed ( + ::DDS::DataReader_ptr , + const ::DDS::LivelinessChangedStatus & ) {} + virtual void + on_data_available ( + ::DDS::DataReader_ptr ) {} + virtual void + on_subscription_matched ( + ::DDS::DataReader_ptr , + const ::DDS::SubscriptionMatchedStatus & ) {} + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr , + const ::DDS::SampleLostStatus & ) {} + virtual void + on_offered_deadline_missed ( + ::DDS::DataWriter_ptr , + const ::DDS::OfferedDeadlineMissedStatus & ) {} + virtual void + on_offered_incompatible_qos ( + ::DDS::DataWriter_ptr , + const ::DDS::OfferedIncompatibleQosStatus & ) {} + virtual void + on_liveliness_lost ( + ::DDS::DataWriter_ptr , + const ::DDS::LivelinessLostStatus & ) {} + virtual void + on_publication_matched ( + ::DDS::DataWriter_ptr , + const ::DDS::PublicationMatchedStatus & ) {} + virtual void + on_data_on_readers ( + ::DDS::Subscriber_ptr ) {} + + private: + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } +} + +#include "dds4ccm/impl/ndds/DomainParticipantListener_T.cpp" diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantQos.h new file mode 100644 index 00000000000..8f05d12328e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantQos.h @@ -0,0 +1,42 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DOMAINPARTICIPANTQOSPOLICY_H +#define CIAO_RTI_DOMAINPARTICIPANTQOSPOLICY_H + +#include "UserDataQosPolicy.h" +#include "EntityFactoryQosPolicy.h" + +inline void +operator<<= (::DDS::DomainParticipantQos &ddsqos, const ::DDS_DomainParticipantQos & qos) +{ + ddsqos.user_data <<= qos.user_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator<<= (::DDS_DomainParticipantQos &ddsqos, const ::DDS::DomainParticipantQos & qos) +{ + ddsqos.user_data <<= qos.user_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS_DomainParticipantQos &qos, ::DDS::DomainParticipantQos & ddsqos) +{ + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS::DomainParticipantQos &qos, ::DDS_DomainParticipantQos & ddsqos) +{ + ddsqos.user_data <<= qos.user_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +#endif /* CIAO_RTI_DOMAINPARTICIPANTQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityQosPolicy.h new file mode 100644 index 00000000000..f915b8d5ecd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityQosPolicy.h @@ -0,0 +1,36 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DURABILITYQOSPOLICY_H +#define CIAO_RTI_DURABILITYQOSPOLICY_H + +inline void +operator<<= (::DDS::DurabilityQosPolicy &ddsqos, const ::DDS_DurabilityQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS::DurabilityQosPolicyKind> (qos.kind); +} + +inline void +operator<<= (::DDS_DurabilityQosPolicy &ddsqos, const ::DDS::DurabilityQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS_DurabilityQosPolicyKind> (qos.kind); +} + +inline void +operator>>= (const ::DDS_DurabilityQosPolicy &qos, ::DDS::DurabilityQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS::DurabilityQosPolicyKind> (qos.kind); +} + +inline void +operator>>= (const ::DDS::DurabilityQosPolicy &qos, ::DDS_DurabilityQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS_DurabilityQosPolicyKind> (qos.kind); +} + +#endif /* CIAO_RTI_DURABILITYQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityServiceQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityServiceQosPolicy.h new file mode 100644 index 00000000000..63215703ab6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DurabilityServiceQosPolicy.h @@ -0,0 +1,58 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DURABILITYSERVICEQOSPOLICY_H +#define CIAO_RTI_DURABILITYSERVICEQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::DurabilityServiceQosPolicy &ddsqos, const ::DDS_DurabilityServiceQosPolicy & qos) +{ + ddsqos.service_cleanup_delay <<= qos.service_cleanup_delay; + ddsqos.history_kind = static_cast < ::DDS::HistoryQosPolicyKind> (qos.history_kind); + ddsqos.history_depth = qos.history_depth; + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +inline void +operator<<= (::DDS_DurabilityServiceQosPolicy &ddsqos, const ::DDS::DurabilityServiceQosPolicy & qos) +{ + ddsqos.service_cleanup_delay <<= qos.service_cleanup_delay; + ddsqos.history_kind = static_cast < ::DDS_HistoryQosPolicyKind> (qos.history_kind); + ddsqos.history_depth = qos.history_depth; + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +inline void +operator>>= (const ::DDS_DurabilityServiceQosPolicy &qos, ::DDS::DurabilityServiceQosPolicy & ddsqos) +{ + ddsqos.service_cleanup_delay <<= qos.service_cleanup_delay; + ddsqos.history_kind = static_cast < ::DDS::HistoryQosPolicyKind> (qos.history_kind); + ddsqos.history_depth = qos.history_depth; + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +inline void +operator>>= (const ::DDS::DurabilityServiceQosPolicy &qos, ::DDS_DurabilityServiceQosPolicy & ddsqos) +{ + ddsqos.service_cleanup_delay <<= qos.service_cleanup_delay; + ddsqos.history_kind = static_cast < ::DDS_HistoryQosPolicyKind> (qos.history_kind); + ddsqos.history_depth = qos.history_depth; + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +#endif /* CIAO_RTI_DURABILITYSERVICEQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h new file mode 100644 index 00000000000..3f8245afc81 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h @@ -0,0 +1,35 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DURATION_T_H +#define CIAO_RTI_DURATION_T_H + +inline void +operator<<= (::DDS::Duration_t &ddsduration, const ::DDS_Duration_t & duration) +{ + ddsduration.sec = duration.sec; + ddsduration.nanosec = duration.nanosec; +} + +inline void +operator<<= (::DDS_Duration_t &ddsduration, const ::DDS::Duration_t & duration) +{ + ddsduration.sec = duration.sec; + ddsduration.nanosec = duration.nanosec; +} + +inline void +operator>>= (const ::DDS_Duration_t &duration, ::DDS::Duration_t & ddsduration) +{ + ddsduration.sec = duration.sec; + ddsduration.nanosec = duration.nanosec; +} + +#endif /* CIAO_RTI_DURATION_T_H */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/EntityFactoryQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/EntityFactoryQosPolicy.h new file mode 100644 index 00000000000..f7f0fe8ae5e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/EntityFactoryQosPolicy.h @@ -0,0 +1,36 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_ENTITYFACTORYQOSPOLICY_H +#define CIAO_RTI_ENTITYFACTORYQOSPOLICY_H + +inline void +operator<<= (::DDS::EntityFactoryQosPolicy &ddsqos, const ::DDS_EntityFactoryQosPolicy & qos) +{ + ddsqos.autoenable_created_entities = qos.autoenable_created_entities; +} + +inline void +operator<<= (::DDS_EntityFactoryQosPolicy &ddsqos, const ::DDS::EntityFactoryQosPolicy & qos) +{ + ddsqos.autoenable_created_entities = qos.autoenable_created_entities; +} + +inline void +operator>>= (const ::DDS_EntityFactoryQosPolicy &qos, ::DDS::EntityFactoryQosPolicy & ddsqos) +{ + ddsqos.autoenable_created_entities = qos.autoenable_created_entities; +} + +inline void +operator>>= (const ::DDS::EntityFactoryQosPolicy &qos, ::DDS_EntityFactoryQosPolicy & ddsqos) +{ + ddsqos.autoenable_created_entities = qos.autoenable_created_entities; +} + +#endif /* CIAO_RTI_ENTITYFACTORYQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.cpp new file mode 100644 index 00000000000..6ddc60bb46c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.cpp @@ -0,0 +1,305 @@ +// $Id$ +#include "dds4ccm/impl/ndds/DataReader.h" +#include "dds4ccm/impl/ndds/Utils.h" +#include "dds4ccm/impl/ndds/Duration_t.h" +#include "dds4ccm/impl/ndds/SampleInfo.h" + +#include "ciao/Logger/Log_Macros.h" + +template +CIAO::DDS4CCM::RTI::Getter_T::Getter_T (void) : + impl_ (0), + condition_(0), + time_out_ (), + max_delivered_data_ (0), + gd_ (0), + ws_ (0), + rd_condition_ (0) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Getter_T::Getter_T"); +} + +template +CIAO::DDS4CCM::RTI::Getter_T::~Getter_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Getter_T::~Getter_T"); + delete gd_; + delete ws_; +} + +template +typename DDS_TYPE::data_reader * +CIAO::DDS4CCM::RTI::Getter_T::impl (void) +{ + if (this->impl_) + { + return this->impl_; + } + else + { + throw ::CORBA::BAD_INV_ORDER (); + } +} + +template +bool +CIAO::DDS4CCM::RTI::Getter_T::wait ( + DDSConditionSeq& active_conditions) +{ + DDS_Duration_t timeout; + timeout <<= this->time_out_; + DDS_ReturnCode_t const retcode = ws_->wait (active_conditions, timeout); + if (retcode == DDS_RETCODE_TIMEOUT) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("Getter: No data available after timeout.\n"))); + return false; + } + return true; +} + +template +bool +CIAO::DDS4CCM::RTI::Getter_T::get_many ( + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos) +{ + instances = new typename CCM_TYPE::seq_type; + infos = new ::CCM_DDS::ReadInfoSeq; + + DDSConditionSeq active_conditions; + if (!this->wait (active_conditions)) + { + return false; + } + + ::DDS_Long max_samples = this->max_delivered_data_; + if (max_samples == 0) + { + max_samples = DDS_LENGTH_UNLIMITED; + } + + DDS_SampleInfoSeq sample_info; + typename DDS_TYPE::dds_seq_type data; + for (::DDS_Long i = 0; i < active_conditions.length(); i++) + { + if (active_conditions[i] == gd_) + { + gd_->set_trigger_value (false); + } + + if (active_conditions[i] == rd_condition_) + { + // Check trigger + active_conditions[i]->get_trigger_value (); + + // Take read condition + DDS_ReturnCode_t retcode = this->impl ()->read (data, + sample_info, + max_samples, + DDS_NOT_READ_SAMPLE_STATE , + DDS_ANY_VIEW_STATE, + DDS_ANY_INSTANCE_STATE); + + if (retcode == DDS_RETCODE_OK && data.length () >= 1) + { + ::CORBA::ULong number_read = 0; + for (::DDS_Long index = 0; index < sample_info.length (); index ++) + { + if (sample_info[index].valid_data) + { + ++number_read; + } + } + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("Getter_T::get_many: ") + ACE_TEXT ("read <%d> - valid <%d>\n"), + sample_info.length (), + number_read)); + infos->length (number_read); + instances->length (number_read); + number_read = 0; + for (::DDS_Long j = 0; j < data.length (); j ++) + { + if (sample_info[j].valid_data) + { + infos->operator[](number_read) <<= sample_info[j]; + instances->operator[](number_read) = data[j]; + ++number_read; + } + } + } + else + { + // RETCODE_NO_DATA should be an error + // because after a timeout there should be + // data. + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO::DDS4CCM::RTI::Getter_T::Getter_T - " + "Error while reading from DDS: <%C>\n", + translate_retcode (retcode))); + this->impl ()->return_loan(data,sample_info); + throw CCM_DDS::InternalError (retcode, 1); + } + + retcode = this->impl ()->return_loan(data,sample_info); + if (retcode != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("return loan error %C\n"), + translate_retcode (retcode))); + } + } + } + return true; +} + +template +bool +CIAO::DDS4CCM::RTI::Getter_T::get_one ( + typename DDS_TYPE::value_type::_out_type an_instance, + ::CCM_DDS::ReadInfo_out info) +{ + an_instance = new typename DDS_TYPE::value_type; + + DDSConditionSeq active_conditions; + if (!this->wait (active_conditions)) + { + return false; + } + + DDS_SampleInfoSeq sample_info; + typename DDS_TYPE::dds_seq_type data; + for (::DDS_Long i = 0; i < active_conditions.length(); i++) + { + if (active_conditions[i] == gd_) + { + gd_->set_trigger_value (false); + } + + if (active_conditions[i] == rd_condition_) + { + // Check trigger + active_conditions[i]->get_trigger_value (); + + // Take read condition + DDS_ReturnCode_t retcode = this->impl ()->read (data, + sample_info, + DDS_LENGTH_UNLIMITED, + DDS_NOT_READ_SAMPLE_STATE , + DDS_ANY_VIEW_STATE, + DDS_ANY_INSTANCE_STATE); + + if (retcode == DDS_RETCODE_OK && data.length () >= 1) + { + info <<= sample_info[0]; //retrieves the last sample. + *an_instance = data[0]; + } + else + { + // RETCODE_NO_DATA should be an error + // because after a timeout there should be + // data. + CIAO_ERROR (1, (LM_ERROR, CLINFO + "CIAO::DDS4CCM::RTI::Getter_T::Getter_T - " + "Error while reading from DDS: <%C>\n", + translate_retcode (retcode))); + this->impl ()->return_loan(data,sample_info); + throw CCM_DDS::InternalError (retcode, 1); + } + + retcode = this->impl ()->return_loan(data,sample_info); + if (retcode != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, + ACE_TEXT ("return loan error %C\n"), + translate_retcode (retcode))); + } + } + } + return true; +} + +template +::DDS::Duration_t +CIAO::DDS4CCM::RTI::Getter_T::time_out (void) +{ + return this->time_out_; +} + +template +void +CIAO::DDS4CCM::RTI::Getter_T::time_out ( + const ::DDS::Duration_t & time_out) +{ + this->time_out_ = time_out; +} + +template +::CCM_DDS::DataNumber_t +CIAO::DDS4CCM::RTI::Getter_T::max_delivered_data (void) +{ + return this->max_delivered_data_; +} + +template +void +CIAO::DDS4CCM::RTI::Getter_T::max_delivered_data ( + ::CCM_DDS::DataNumber_t max_delivered_data) +{ + this->max_delivered_data_ = max_delivered_data; +} + +template +void +CIAO::DDS4CCM::RTI::Getter_T::set_impl ( + ::DDS::DataReader_ptr reader) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Getter_T::set_impl"); + + if (::CORBA::is_nil (reader)) + { + impl_ = 0; + delete gd_; + gd_ = 0; + delete ws_; + ws_ = 0; + } + else + { + RTI_DataReader_i *rdr = dynamic_cast (reader); + if (!rdr) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Getter_T::data_reader - " + "Unable to cast provided DataReader to servant\n")); + throw CORBA::INTERNAL (); + } + + this->impl_ = DDS_TYPE::data_reader::narrow (rdr->get_impl ()); + + if (!this->impl_) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Getter_T::data_reader - " + "Unable to narrow the provided writer entity to the specific " + "type necessary to publish messages\n")); + throw CORBA::INTERNAL (); + } + + // Now create the waitset conditions + gd_ = new DDSGuardCondition (); + ws_ = new DDSWaitSet (); + rd_condition_ = this->impl ()->create_readcondition (DDS_NOT_READ_SAMPLE_STATE, + DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE, + DDS_ALIVE_INSTANCE_STATE | DDS_NOT_ALIVE_INSTANCE_STATE); + DDS_ReturnCode_t retcode = ws_->attach_condition (gd_); + if (retcode != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "GETTER: Unable to attach guard condition to waitset.\n")); + throw CCM_DDS::InternalError (retcode, 0); + } + retcode = ws_->attach_condition (rd_condition_); + if (retcode != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "GETTER: Unable to attach read condition to waitset.\n")); + throw CCM_DDS::InternalError (retcode, 1); + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.h new file mode 100644 index 00000000000..bb9a694ef84 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Getter_T.h @@ -0,0 +1,70 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef GETTER_T_H +#define GETTER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class Getter_T : + public virtual CCM_TYPE::getter_type, + public virtual ::CORBA::LocalObject, + private virtual ACE_Copy_Disabled + { + public: + /// Constructor + Getter_T (void); + + /// Destructor + virtual ~Getter_T (void); + + virtual bool get_one ( + typename DDS_TYPE::value_type::_out_type an_instance, + ::CCM_DDS::ReadInfo_out info); + + virtual bool get_many ( + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos); + + virtual ::DDS::Duration_t time_out (void); + virtual void time_out (const ::DDS::Duration_t & time_out); + + virtual ::CCM_DDS::DataNumber_t max_delivered_data (void); + virtual void max_delivered_data (::CCM_DDS::DataNumber_t max_delivered_data); + + void set_impl (::DDS::DataReader_ptr reader); + + private: + typename DDS_TYPE::data_reader *impl_; + + DDSQueryCondition* condition_; + ::DDS::Duration_t time_out_; + ::CCM_DDS::DataNumber_t max_delivered_data_; + DDSGuardCondition* gd_; + DDSWaitSet* ws_; + DDSReadCondition* rd_condition_; + + bool wait (DDSConditionSeq& active_conditions); + + typename DDS_TYPE::data_reader * impl (void); + }; + } + } +} + +#include "dds4ccm/impl/ndds/Getter_T.cpp" + +#endif /* GETTER_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/GroupDataQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/GroupDataQosPolicy.h new file mode 100644 index 00000000000..96cc5611f85 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/GroupDataQosPolicy.h @@ -0,0 +1,45 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_GROUPDATAQOSPOLICY_H +#define CIAO_RTI_GROUPDATAQOSPOLICY_H + +// @todo here +inline void +operator<<= (::DDS::GroupDataQosPolicy &ddsqos, const ::DDS_GroupDataQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +inline void +operator<<= (::DDS_GroupDataQosPolicy &ddsqos, const ::DDS::GroupDataQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +inline void +operator>>= (const ::DDS_GroupDataQosPolicy &qos, ::DDS::GroupDataQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +inline void +operator>>= (const ::DDS::GroupDataQosPolicy &qos, ::DDS_GroupDataQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +#endif /* CIAO_RTI_GROUPDATAQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/HistoryQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/HistoryQosPolicy.h new file mode 100644 index 00000000000..5c759852d35 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/HistoryQosPolicy.h @@ -0,0 +1,40 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_HISTORYQOSPOLICY_H +#define CIAO_RTI_HISTORYQOSPOLICY_H + +inline void +operator<<= (::DDS::HistoryQosPolicy &ddsqos, const ::DDS_HistoryQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS::HistoryQosPolicyKind> (qos.kind); + ddsqos.depth = qos.depth; +} + +inline void +operator<<= (::DDS_HistoryQosPolicy &ddsqos, const ::DDS::HistoryQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS_HistoryQosPolicyKind> (qos.kind); + ddsqos.depth = qos.depth; +} + +inline void +operator>>= (const ::DDS_HistoryQosPolicy &qos, ::DDS::HistoryQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS::HistoryQosPolicyKind> (qos.kind); + ddsqos.depth = qos.depth; +} + +inline void +operator>>= (const ::DDS::HistoryQosPolicy &qos, ::DDS_HistoryQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS_HistoryQosPolicyKind> (qos.kind); + ddsqos.depth = qos.depth; +} + +#endif /* CIAO_RTI_HISTORYQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h new file mode 100644 index 00000000000..31585e1a0d5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h @@ -0,0 +1,41 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_INCONSISTENTTOPICSTATUS_H +#define CIAO_RTI_INCONSISTENTTOPICSTATUS_H + +inline void +operator<<= (::DDS::InconsistentTopicStatus &ddsstatus, const ::DDS_InconsistentTopicStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator<<= (::DDS_InconsistentTopicStatus &ddsstatus, const ::DDS::InconsistentTopicStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator>>= (const ::DDS_InconsistentTopicStatus &status, ::DDS::InconsistentTopicStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator>>= (const ::DDS::InconsistentTopicStatus &status, ::DDS_InconsistentTopicStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +#endif /* CIAO_RTI_INCONSISTENTTOPICSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp new file mode 100644 index 00000000000..f272a21e41c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.cpp @@ -0,0 +1,91 @@ +// $Id$ + +#include "dds4ccm/impl/ndds/DataWriter.h" +#include "dds4ccm/impl/ndds/Utils.h" +#include "dds4ccm/impl/ndds/InstanceHandle_t.h" +#include "ciao/Logger/Log_Macros.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::InstanceHandleManager_T::InstanceHandleManager_T (void) + : impl_ (0) +{ +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::InstanceHandleManager_T::~InstanceHandleManager_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::InstanceHandleManager_T::~InstanceHandleManager_T"); +} + +template +typename DDS_TYPE::data_writer * +CIAO::DDS4CCM::RTI::InstanceHandleManager_T::impl (void) +{ + if (this->impl_) + { + return this->impl_; + } + else + { + throw ::CORBA::BAD_INV_ORDER (); + } +} + +template +::DDS::InstanceHandle_t +CIAO::DDS4CCM::RTI::InstanceHandleManager_T:: + register_instance (const typename DDS_TYPE::value_type & datum) +{ + ::DDS::InstanceHandle_t dds_handle; + ::DDS_InstanceHandle_t const handle = this->impl ()->register_instance (datum); + dds_handle <<= handle; + return dds_handle; +} + +template +void +CIAO::DDS4CCM::RTI::InstanceHandleManager_T::unregister_instance ( + const typename DDS_TYPE::value_type & datum, + const ::DDS::InstanceHandle_t & instance_handle) +{ + ::DDS_InstanceHandle_t handle = ::DDS_HANDLE_NIL; + handle <<= instance_handle; + this->impl ()->unregister_instance (datum, handle); +} + +template +void +CIAO::DDS4CCM::RTI::InstanceHandleManager_T::set_impl ( + ::DDS::DataWriter_ptr writer) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::InstanceHandleManager_T::set_impl"); + + if (::CORBA::is_nil (writer)) + { + impl_ = 0; + } + else + { + RTI_DataWriter_i *rdw = dynamic_cast (writer); + + if (rdw == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::InstanceHandleManager_T::data_writer - " + "Unable to cast provided DataWriter to servant\n")); + throw ::CORBA::INTERNAL (); + } + + this->impl_ = DDS_TYPE::data_writer::narrow (rdw->get_impl ()); + + if (!this->impl_) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::InstanceHandleManager_T::data_writer - " + "Unable to narrow the provided writer entity to the specific " + "type necessary to publish messages\n")); + throw ::CORBA::INTERNAL (); + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.h new file mode 100644 index 00000000000..22d5a2393d7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleManager_T.h @@ -0,0 +1,55 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef INSTANCE_HANDLEMANGER_T_H +#define INSTANCE_HANDLEMANGER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class InstanceHandleManager_T : + public virtual BASE_TYPE, + public virtual ::CORBA::LocalObject, + private virtual ACE_Copy_Disabled + { + public: + /// Constructor + InstanceHandleManager_T (void); + + /// Destructor + virtual ~InstanceHandleManager_T (void); + + virtual ::DDS::InstanceHandle_t register_instance ( + const typename DDS_TYPE::value_type & datum); + + virtual void unregister_instance ( + const typename DDS_TYPE::value_type & datum, + const ::DDS::InstanceHandle_t & instance_handle); + + void set_impl (::DDS::DataWriter_ptr writer); + + typename DDS_TYPE::data_writer * impl (void); + + private: + typename DDS_TYPE::data_writer *impl_; + + }; + } + } +} + +#include "dds4ccm/impl/ndds/InstanceHandleManager_T.cpp" + +#endif /* INSTANCE_HANDLEMANGER_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h new file mode 100644 index 00000000000..e3916285d14 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h @@ -0,0 +1,60 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_INSTANCEHANDLESEQ_H +#define CIAO_RTI_INSTANCEHANDLESEQ_H + +#include "InstanceHandle_t.h" + +template +void convert_dds_to_corba_sequence(corbaseq & target, const ddsseq& source) { + target.length (source.length ()); + for (::DDS_Long index = 0; index < source.length (); index++) + { + target[index] <<= source[index]; + } +} + +inline void +operator<<= (::DDS::InstanceHandleSeq &ddsinstancehandleseqseq, const ::DDS_InstanceHandleSeq & instancehandleseq) +{ + convert_dds_to_corba_sequence (ddsinstancehandleseqseq, instancehandleseq); +} + +inline void +operator<<= (::DDS_InstanceHandleSeq &ddsinstancehandleseqseq, const ::DDS::InstanceHandleSeq & instancehandleseq) +{ + ddsinstancehandleseqseq.length (instancehandleseq.length ()); + for (::DDS::InstanceHandleSeq::size_type index = 0; index < instancehandleseq.length (); index++) + { + ddsinstancehandleseqseq[index] <<= instancehandleseq[index]; + } +} + +inline void +operator>>= (const ::DDS_InstanceHandleSeq &instancehandle, ::DDS::InstanceHandleSeq & ddsinstancehandleseqseq) +{ + ddsinstancehandleseqseq.length (instancehandle.length ()); + for (::DDS_Long index = 0; index < instancehandle.length (); index++) + { + ddsinstancehandleseqseq[index] <<= instancehandle[index]; + } +} + +inline void +operator>>= (const ::DDS::InstanceHandleSeq &instancehandle, ::DDS_InstanceHandleSeq & ddsinstancehandleseqseq) +{ + ddsinstancehandleseqseq.length (instancehandle.length ()); + for (::DDS::InstanceHandleSeq::size_type index = 0; index < instancehandle.length (); index++) + { + ddsinstancehandleseqseq[index] <<= instancehandle[index]; + } +} + +#endif /* CIAO_RTI_INSTANCEHANDLESEQ_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h new file mode 100644 index 00000000000..2a974f8c9e0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h @@ -0,0 +1,45 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_INSTANCEHANDLE_T_H +#define CIAO_RTI_INSTANCEHANDLE_T_H + +inline void +operator<<= (::DDS::InstanceHandle_t &ddsinstancehandle, const ::DDS_InstanceHandle_t & instancehandle) +{ + ACE_OS::memcpy (ddsinstancehandle.value, instancehandle.keyHash.value, sizeof (instancehandle.keyHash.value)); + ddsinstancehandle.length = instancehandle.keyHash.length; + ddsinstancehandle.isValid = instancehandle.isValid; +} + +inline void +operator<<= (::DDS_InstanceHandle_t &ddsinstancehandle, const ::DDS::InstanceHandle_t & instancehandle) +{ + ACE_OS::memcpy (ddsinstancehandle.keyHash.value, instancehandle.value, sizeof (instancehandle.value)); + ddsinstancehandle.keyHash.length = instancehandle.length; + ddsinstancehandle.isValid = instancehandle.isValid; +} + +inline void +operator>>= (const ::DDS_InstanceHandle_t &instancehandle, ::DDS::InstanceHandle_t & ddsinstancehandle) +{ + ACE_OS::memcpy (ddsinstancehandle.value, instancehandle.keyHash.value, sizeof (instancehandle.keyHash.value)); + ddsinstancehandle.length = instancehandle.keyHash.length; + ddsinstancehandle.isValid = instancehandle.isValid; +} + +inline void +operator>>= (const ::DDS::InstanceHandle_t &instancehandle, ::DDS_InstanceHandle_t & ddsinstancehandle) +{ + ACE_OS::memcpy (ddsinstancehandle.keyHash.value, instancehandle.value, sizeof (instancehandle.value)); + ddsinstancehandle.keyHash.length = instancehandle.length; + ddsinstancehandle.isValid = instancehandle.isValid; +} + +#endif /* CIAO_RTI_INSTANCEHANDLE_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LatencyBudgetQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LatencyBudgetQosPolicy.h new file mode 100644 index 00000000000..270efbe4dd7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LatencyBudgetQosPolicy.h @@ -0,0 +1,38 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_LATENCYBUDGETQOSPOLICY_H +#define CIAO_RTI_LATENCYBUDGETQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::LatencyBudgetQosPolicy &ddsqos, const ::DDS_LatencyBudgetQosPolicy & qos) +{ + ddsqos.duration <<= qos.duration; +} + +inline void +operator<<= (::DDS_LatencyBudgetQosPolicy &ddsqos, const ::DDS::LatencyBudgetQosPolicy & qos) +{ + ddsqos.duration <<= qos.duration; +} + +inline void +operator>>= (const ::DDS_LatencyBudgetQosPolicy &qos, ::DDS::LatencyBudgetQosPolicy & ddsqos) +{ + ddsqos.duration <<= qos.duration; +} + +inline void +operator>>= (const ::DDS::LatencyBudgetQosPolicy &qos, ::DDS_LatencyBudgetQosPolicy & ddsqos) +{ + ddsqos.duration <<= qos.duration; +} + +#endif /* CIAO_RTI_LATENCYBUDGETQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LifespanQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LifespanQosPolicy.h new file mode 100644 index 00000000000..92282613bf9 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LifespanQosPolicy.h @@ -0,0 +1,38 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_LIFESPANQOSPOLICY_H +#define CIAO_RTI_LIFESPANQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::LifespanQosPolicy &ddsqos, const ::DDS_LifespanQosPolicy & qos) +{ + ddsqos.duration <<= qos.duration; +} + +inline void +operator<<= (::DDS_LifespanQosPolicy &ddsqos, const ::DDS::LifespanQosPolicy & qos) +{ + ddsqos.duration <<= qos.duration; +} + +inline void +operator>>= (const ::DDS_LifespanQosPolicy &qos, ::DDS::LifespanQosPolicy & ddsqos) +{ + ddsqos.duration <<= qos.duration; +} + +inline void +operator>>= (const ::DDS::LifespanQosPolicy &qos, ::DDS_LifespanQosPolicy & ddsqos) +{ + ddsqos.duration <<= qos.duration; +} + +#endif /* CIAO_RTI_LIFESPANQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h new file mode 100644 index 00000000000..4215f1bd160 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h @@ -0,0 +1,55 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_LIVELINESSCHANGEDSTATUS_H +#define CIAO_RTI_LIVELINESSCHANGEDSTATUS_H + +#include "InstanceHandle_t.h" + +inline void +operator<<= (::DDS::LivelinessChangedStatus &ddsstatus, const ::DDS_LivelinessChangedStatus & status) +{ + ddsstatus.alive_count = status.alive_count; + ddsstatus.not_alive_count = status.not_alive_count; + ddsstatus.alive_count_change = status.alive_count_change; + ddsstatus.not_alive_count_change = status.not_alive_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +inline void +operator<<= (::DDS_LivelinessChangedStatus &ddsstatus, const ::DDS::LivelinessChangedStatus & status) +{ + ddsstatus.alive_count = status.alive_count; + ddsstatus.not_alive_count = status.not_alive_count; + ddsstatus.alive_count_change = status.alive_count_change; + ddsstatus.not_alive_count_change = status.not_alive_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +inline void +operator>>= (const ::DDS_LivelinessChangedStatus &status, ::DDS::LivelinessChangedStatus & ddsstatus) +{ + ddsstatus.alive_count = status.alive_count; + ddsstatus.not_alive_count = status.not_alive_count; + ddsstatus.alive_count_change = status.alive_count_change; + ddsstatus.not_alive_count_change = status.not_alive_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +inline void +operator>>= (const ::DDS::LivelinessChangedStatus &status, ::DDS_LivelinessChangedStatus & ddsstatus) +{ + ddsstatus.alive_count = status.alive_count; + ddsstatus.not_alive_count = status.not_alive_count; + ddsstatus.alive_count_change = status.alive_count_change; + ddsstatus.not_alive_count_change = status.not_alive_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +#endif /* CIAO_RTI_LIVELINESSCHANGEDSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h new file mode 100644 index 00000000000..926e39d8f08 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h @@ -0,0 +1,41 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_LIVELINESSLOSTSTATUS_H +#define CIAO_RTI_LIVELINESSLOSTSTATUS_H + +inline void +operator<<= (::DDS::LivelinessLostStatus &ddsstatus, const ::DDS_LivelinessLostStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator<<= (::DDS_LivelinessLostStatus &ddsstatus, const ::DDS::LivelinessLostStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator>>= (const ::DDS_LivelinessLostStatus &status, ::DDS::LivelinessLostStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator>>= (const ::DDS::LivelinessLostStatus &status, ::DDS_LivelinessLostStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +#endif /* CIAO_RTI_LIVELINESSLOSTSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessQosPolicy.h new file mode 100644 index 00000000000..60c1c658d41 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessQosPolicy.h @@ -0,0 +1,42 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_LIVELINESSQOSPOLICY_H +#define CIAO_RTI_LIVELINESSQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::LivelinessQosPolicy &ddsqos, const ::DDS_LivelinessQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS::LivelinessQosPolicyKind> (qos.kind); + ddsqos.lease_duration <<= qos.lease_duration; +} + +inline void +operator<<= (::DDS_LivelinessQosPolicy &ddsqos, const ::DDS::LivelinessQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS_LivelinessQosPolicyKind> (qos.kind); + ddsqos.lease_duration <<= qos.lease_duration; +} + +inline void +operator>>= (const ::DDS_LivelinessQosPolicy &qos, ::DDS::LivelinessQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS::LivelinessQosPolicyKind> (qos.kind); + ddsqos.lease_duration <<= qos.lease_duration; +} + +inline void +operator>>= (const ::DDS::LivelinessQosPolicy &qos, ::DDS_LivelinessQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS_LivelinessQosPolicyKind> (qos.kind); + ddsqos.lease_duration <<= qos.lease_duration; +} + +#endif /* CIAO_RTI_LIVELINESSQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h new file mode 100644 index 00000000000..255b22b4c71 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h @@ -0,0 +1,47 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_OFFEREDDEADLINEMISSEDSTATUS_H +#define CIAO_RTI_OFFEREDDEADLINEMISSEDSTATUS_H + +#include "InstanceHandle_t.h" + +inline void +operator<<= (::DDS::OfferedDeadlineMissedStatus &ddsstatus, const ::DDS_OfferedDeadlineMissedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator<<= (::DDS_OfferedDeadlineMissedStatus &ddsstatus, const ::DDS::OfferedDeadlineMissedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator>>= (const ::DDS_OfferedDeadlineMissedStatus &status, ::DDS::OfferedDeadlineMissedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator>>= (const ::DDS::OfferedDeadlineMissedStatus &status, ::DDS_OfferedDeadlineMissedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +#endif /* CIAO_RTI_OFFEREDDEADLINEMISSEDSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h new file mode 100644 index 00000000000..3021d2ff935 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h @@ -0,0 +1,51 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_OFFEREDINCOMPATIBLEQOSSTATUS_H +#define CIAO_RTI_OFFEREDINCOMPATIBLEQOSSTATUS_H + +#include "QosPolicyCountSeq.h" + +inline void +operator<<= (::DDS::OfferedIncompatibleQosStatus &ddsstatus, const ::DDS_OfferedIncompatibleQosStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = status.last_policy_id; + ddsstatus.policies <<= status.policies; +} + +inline void +operator<<= (::DDS_OfferedIncompatibleQosStatus &ddsstatus, const ::DDS::OfferedIncompatibleQosStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = static_cast (status.last_policy_id); + ddsstatus.policies <<= status.policies; +} + +inline void +operator>>= (const ::DDS_OfferedIncompatibleQosStatus &status, ::DDS::OfferedIncompatibleQosStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = status.last_policy_id; + ddsstatus.policies <<= status.policies; +} + +inline void +operator>>= (const ::DDS::OfferedIncompatibleQosStatus &status, ::DDS_OfferedIncompatibleQosStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = static_cast (status.last_policy_id); + ddsstatus.policies <<= status.policies; +} + +#endif /* CIAO_RTI_OFFEREDINCOMPATIBLEQOSSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipQosPolicy.h new file mode 100644 index 00000000000..9afc00e9a4f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipQosPolicy.h @@ -0,0 +1,36 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_OWNERSHIPQOSPOLICY_H +#define CIAO_RTI_OWNERSHIPQOSPOLICY_H + +inline void +operator<<= (::DDS::OwnershipQosPolicy &ddsqos, const ::DDS_OwnershipQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS::OwnershipQosPolicyKind> (qos.kind); +} + +inline void +operator<<= (::DDS_OwnershipQosPolicy &ddsqos, const ::DDS::OwnershipQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS_OwnershipQosPolicyKind> (qos.kind); +} + +inline void +operator>>= (const ::DDS_OwnershipQosPolicy &qos, ::DDS::OwnershipQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS::OwnershipQosPolicyKind> (qos.kind); +} + +inline void +operator>>= (const ::DDS::OwnershipQosPolicy &qos, ::DDS_OwnershipQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS_OwnershipQosPolicyKind> (qos.kind); +} + +#endif /* CIAO_RTI_OWNERSHIPQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipStrengthQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipStrengthQosPolicy.h new file mode 100644 index 00000000000..125fb0a3c09 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/OwnershipStrengthQosPolicy.h @@ -0,0 +1,36 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_OWNERSHIPSTRENGTHQOSPOLICY_H +#define CIAO_RTI_OWNERSHIPSTRENGTHQOSPOLICY_H + +inline void +operator<<= (::DDS::OwnershipStrengthQosPolicy &ddsqos, const ::DDS_OwnershipStrengthQosPolicy & qos) +{ + ddsqos.value = qos.value; +} + +inline void +operator<<= (::DDS_OwnershipStrengthQosPolicy &ddsqos, const ::DDS::OwnershipStrengthQosPolicy & qos) +{ + ddsqos.value = qos.value; +} + +inline void +operator>>= (const ::DDS_OwnershipStrengthQosPolicy &qos, ::DDS::OwnershipStrengthQosPolicy & ddsqos) +{ + ddsqos.value = qos.value; +} + +inline void +operator>>= (const ::DDS::OwnershipStrengthQosPolicy &qos, ::DDS_OwnershipStrengthQosPolicy & ddsqos) +{ + ddsqos.value = qos.value; +} + +#endif /* CIAO_RTI_OWNERSHIPSTRENGTHQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PartitionQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PartitionQosPolicy.h new file mode 100644 index 00000000000..1b67f6a9b40 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PartitionQosPolicy.h @@ -0,0 +1,46 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_PARTITIONQOSPOLICY_H +#define CIAO_RTI_PARTITIONQOSPOLICY_H + +/// @todo + +inline void +operator<<= (::DDS::PartitionQosPolicy &ddsqos, const ::DDS_PartitionQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.name <<= qos.name; +} + +inline void +operator<<= (::DDS_PartitionQosPolicy &ddsqos, const ::DDS::PartitionQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.name <<= qos.name; +} + +inline void +operator>>= (const ::DDS_PartitionQosPolicy &qos, ::DDS::PartitionQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.name <<= qos.name; +} + +inline void +operator>>= (const ::DDS::PartitionQosPolicy &qos, ::DDS_PartitionQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.name <<= qos.name; +} + +#endif /* CIAO_RTI_PARTITIONQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp new file mode 100644 index 00000000000..d07d6ac18e5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.cpp @@ -0,0 +1,85 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +template +CIAO::DDS4CCM::RTI::PortStatusListener_T::PortStatusListener_T ( + ::CCM_DDS::PortStatusListener_ptr port_status_listener) + : port_status_listener_ (::CCM_DDS::PortStatusListener::_duplicate (port_status_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::PortStatusListener_T"); +} + +template +CIAO::DDS4CCM::RTI::PortStatusListener_T::~PortStatusListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::~PortStatusListener_T"); +} + +template +void +CIAO::DDS4CCM::RTI::PortStatusListener_T::on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::on_requested_deadline_missed"); + + try + { + if (!CORBA::is_nil (this->port_status_listener_)) + { + this->port_status_listener_->on_requested_deadline_missed (the_reader, status); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ") + ACE_TEXT ("No portstatus listener installed\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::RTI::PortStatusListener_T::on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::PortStatusListener_T::on_sample_lost"); + + try + { + if (!CORBA::is_nil (this->port_status_listener_)) + { + this->port_status_listener_->on_sample_lost (the_reader, status); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("PortStatusListener_T::on_sample_lost: ") + ACE_TEXT ("No portstatus listener installed\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PortStatusListener_T::on_sample_lost: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::RTI::PortStatusListener_T::get_mask (void) +{ + return DDS_REQUESTED_DEADLINE_MISSED_STATUS | + DDS_SAMPLE_LOST_STATUS; +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.h new file mode 100644 index 00000000000..873d6bc4fb8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener_T.h @@ -0,0 +1,73 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS4CCM_PORTSTATUSLISTENER_T_H +#define DDS4CCM_PORTSTATUSLISTENER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class PortStatusListener_T : + public ::DDS::DataReaderListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + PortStatusListener_T ( + ::CCM_DDS::PortStatusListener_ptr port_status_listener); + + /// Destructor + virtual ~PortStatusListener_T (void); + + virtual void on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + + virtual void + on_requested_incompatible_qos ( + ::DDS::DataReader_ptr , + const ::DDS::RequestedIncompatibleQosStatus & ) {} + virtual void + on_sample_rejected ( + ::DDS::DataReader_ptr , + const ::DDS::SampleRejectedStatus & ) {} + virtual void + on_liveliness_changed ( + ::DDS::DataReader_ptr , + const ::DDS::LivelinessChangedStatus & ) {} + virtual void + on_data_available ( + ::DDS::DataReader_ptr ) {} + virtual void + on_subscription_matched ( + ::DDS::DataReader_ptr , + const ::DDS::SubscriptionMatchedStatus & ) {} + + static ::DDS::StatusMask get_mask (void); + private: + ::CCM_DDS::PortStatusListener_var port_status_listener_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/PortStatusListener_T.cpp" + +#endif /* DDS4CCM_PORTSTATUSLISTENER_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PresentationQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PresentationQosPolicy.h new file mode 100644 index 00000000000..2be0c9005a1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PresentationQosPolicy.h @@ -0,0 +1,40 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_PRESENTATIONQOSPOLICY_H +#define CIAO_RTI_PRESENTATIONQOSPOLICY_H + +inline void +operator<<= (::DDS::PresentationQosPolicy &ddsqos, const ::DDS_PresentationQosPolicy & qos) +{ + ddsqos.coherent_access = qos.coherent_access; + ddsqos.ordered_access = qos.ordered_access; +} + +inline void +operator<<= (::DDS_PresentationQosPolicy &ddsqos, const ::DDS::PresentationQosPolicy & qos) +{ + ddsqos.coherent_access = qos.coherent_access; + ddsqos.ordered_access = qos.ordered_access; +} + +inline void +operator>>= (const ::DDS_PresentationQosPolicy &qos, ::DDS::PresentationQosPolicy & ddsqos) +{ + ddsqos.coherent_access = qos.coherent_access; + ddsqos.ordered_access = qos.ordered_access; +} + +inline void +operator>>= (const ::DDS::PresentationQosPolicy &qos, ::DDS_PresentationQosPolicy & ddsqos) +{ + ddsqos.coherent_access = qos.coherent_access; + ddsqos.ordered_access = qos.ordered_access; +} + +#endif /* CIAO_RTI_PRESENTATIONQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h new file mode 100644 index 00000000000..fa967fcbee8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h @@ -0,0 +1,55 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_PUBLICATIONMATCHEDSTATUS_H +#define CIAO_RTI_PUBLICATIONMATCHEDSTATUS_H + +#include "InstanceHandle_t.h" + +inline void +operator<<= (::DDS::PublicationMatchedStatus &ddsstatus, const ::DDS_PublicationMatchedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_subscription_handle <<= status.last_subscription_handle; +} + +inline void +operator<<= (::DDS_PublicationMatchedStatus &ddsstatus, const ::DDS::PublicationMatchedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_subscription_handle <<= status.last_subscription_handle; +} + +inline void +operator>>= (const ::DDS_PublicationMatchedStatus &status, ::DDS::PublicationMatchedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_subscription_handle <<= status.last_subscription_handle; +} + +inline void +operator>>= (const ::DDS::PublicationMatchedStatus &status, ::DDS_PublicationMatchedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_subscription_handle <<= status.last_subscription_handle; +} + +#endif /* CIAO_RTI_PUBLICATIONMATCHEDSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp new file mode 100644 index 00000000000..d1f5d821b7d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp @@ -0,0 +1,328 @@ +// $Id$ + +#include "Publisher.h" +#include "PublisherListener.h" +#include "Topic.h" +#include "DataWriter.h" +#include "StatusCondition.h" +#include "Utils.h" +#include "Duration_t.h" +#include "InstanceHandle_t.h" +#include "DataWriterListener.h" +#include "DataWriterQos.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_Publisher_i::RTI_Publisher_i (void) + : impl_ (0) + { + CIAO_TRACE ("RTI_Publisher_i::RTI_Publisher_i"); + } + + // Implementation skeleton destructor + RTI_Publisher_i::~RTI_Publisher_i (void) + { + CIAO_TRACE ("RTI_Publisher_i::~RTI_Publisher_i"); + } + + ::DDS::DataWriter_ptr + RTI_Publisher_i::create_datawriter (::DDS::Topic_ptr a_topic, + const ::DDS::DataWriterQos & /*qos*/, + ::DDS::DataWriterListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("RTI_Publisher_i::create_datawriter"); + + RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic); + + if (!topic) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter - " + "Error: Unable to cast provided topic to its servant.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0); + } + + DDSTopic *rti_topic = topic->get_impl (); + DDSDataWriterListener *rti_drl = 0; + if (!CORBA::is_nil (a_listener)) + { + rti_drl = new RTI_DataWriterListener_i (a_listener); + } + DDS_DataWriterQos rti_qos = DDS_DATAWRITER_QOS_DEFAULT; +// rti_qos <<= qos; + DDSDataWriter *rti_dw = this->impl ()->create_datawriter (rti_topic, + rti_qos, + rti_drl, + mask); + + if (!rti_dw) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter - " + "Error: RTI Topic returned a nil datawriter.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + rti_dw->enable (); + ::DDS::DataWriter_var retval = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (retval.in ()); + dw->set_impl (rti_dw); + + return retval._retn (); + } + + ::DDS::DataWriter_ptr + RTI_Publisher_i::create_datawriter_with_profile (::DDS::Topic_ptr a_topic, + const char* library_name, + const char *profile_name, + ::DDS::DataWriterListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("RTI_Publisher_i::create_datawriter"); + + RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic); + + if (!topic) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter_with_profile - " + "Error: Unable to cast provided topic to its servant.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0); + } + + DDSTopic *rti_topic = topic->get_impl (); + DDSDataWriterListener *rti_drl = 0; + if (!CORBA::is_nil (a_listener)) + { + rti_drl = new RTI_DataWriterListener_i (a_listener); + } + DDSDataWriter *rti_dw = this->impl ()->create_datawriter_with_profile (rti_topic, + library_name, + profile_name, + rti_drl, + mask); + + if (!rti_dw) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter_with_profile - " + "Error: RTI Topic returned a nil datawriter.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + rti_dw->enable (); + ::DDS::DataWriter_var retval = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (retval.in ()); + dw->set_impl (rti_dw); + + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::delete_datawriter (::DDS::DataWriter_ptr a_datawriter) + { + CIAO_TRACE ("RTI_Publisher_i::delete_datawriter"); + + RTI_DataWriter_i *top = dynamic_cast< RTI_DataWriter_i *> (a_datawriter); + + if (top == 0) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Publisher_i::delete_datawriter - " + "Unable to cast provided object reference to servant.\n")); + return ::DDS::RETCODE_BAD_PARAMETER; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_Publisher_i::delete_datawriter - " + "Successfully casted provided object reference to servant.\n")); + + DDS_ReturnCode_t retval = this->impl ()->delete_datawriter (top->get_impl ()); + + if (retval != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Publisher_i::delete_datawriter - " + "Error: RTI delete_datawriter returned non-ok error code %c\n", + translate_retcode (retval))); + } + else CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_Publisher_i::delete_datawriter - " + "Provided datawriter successfully deleted\n")); + + return retval; + } + + ::DDS::DataWriter_ptr + RTI_Publisher_i::lookup_datawriter (const char * impl_name) + { + DDSDataWriter* dw = this->impl ()->lookup_datawriter (impl_name); + ::DDS::DataWriter_var retval = new RTI_DataWriter_i (); + RTI_DataWriter_i *rti_dw = dynamic_cast< RTI_DataWriter_i * > (retval.in ()); + rti_dw->set_impl (dw); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::delete_contained_entities (void) + { + return this->impl ()->delete_contained_entities (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::set_qos (const ::DDS::PublisherQos & /*qos*/) + { + CIAO_TRACE ("RTI_Publisher_i::set_qos"); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::get_qos (::DDS::PublisherQos & /* qos*/) + { + CIAO_TRACE ("RTI_Publisher_i::get_qos"); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::set_listener (::DDS::PublisherListener_ptr a_listener, + ::DDS::StatusMask mask) + { + CIAO_TRACE ("RTI_Publisher_i::set_listener"); + + RTI_PublisherListener_i* rti_impl_list = new RTI_PublisherListener_i (a_listener); + return this->impl ()->set_listener (rti_impl_list, mask); + } + + ::DDS::PublisherListener_ptr + RTI_Publisher_i::get_listener (void) + { +/* DDSPublisherListener* pl = this->impl ()->get_listener (); + ::DDS::PublisherListener_var retval = new RTI_PublisherListener_i (pl); + return retval._retn ();*/ + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::suspend_publications (void) + { + return this->impl ()->suspend_publications (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::resume_publications (void) + { + return this->impl ()->resume_publications (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::begin_coherent_changes (void) + { + return this->impl ()->begin_coherent_changes (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::end_coherent_changes (void) + { + return this->impl ()->end_coherent_changes (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::wait_for_acknowledgments (const ::DDS::Duration_t & max_wait) + { + DDS_Duration_t rti_dds_duration; + rti_dds_duration <<= max_wait; + return this->impl ()->wait_for_acknowledgments (rti_dds_duration); + } + + ::DDS::DomainParticipant_ptr + RTI_Publisher_i::get_participant (void) + { + CIAO_TRACE ("RTI_Publisher_i::get_participant"); + DDSDomainParticipant* p = this->impl ()->get_participant (); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (p); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::set_default_datawriter_qos (const ::DDS::DataWriterQos & /*qos*/) + { + CIAO_TRACE ("RTI_Publisher_i::set_default_datawriter_qos"); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::get_default_datawriter_qos (::DDS::DataWriterQos & /*qos*/) + { + CIAO_TRACE ("RTI_Publisher_i::get_default_datawriter_qos"); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::copy_from_topic_qos (::DDS::DataWriterQos & /*a_dataimpl_qos*/, + const ::DDS::TopicQos & /*a_impl_qos*/) + { + CIAO_TRACE ("RTI_Publisher_i::copy_from_topic_qos"); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Publisher_i::enable (void) + { + return this->impl ()->enable (); + } + + ::DDS::StatusCondition_ptr + RTI_Publisher_i::get_statuscondition (void) + { + DDSStatusCondition* sc = this->impl ()->get_statuscondition (); + ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (); + RTI_StatusCondition_i *rti_sc = dynamic_cast < RTI_StatusCondition_i *> (retval.in ()); + rti_sc->set_impl (sc); + return retval._retn (); + } + + ::DDS::StatusMask + RTI_Publisher_i::get_status_changes (void) + { + return this->impl ()->get_status_changes (); + } + + ::DDS::InstanceHandle_t + RTI_Publisher_i::get_instance_handle (void) + { + ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle (); + ::DDS::InstanceHandle_t handle; + handle <<= rtihandle; + return handle; + } + + DDSPublisher * + RTI_Publisher_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_Publisher_i::set_impl (DDSPublisher * dw) + { + this->impl_ = dw; + } + + DDSPublisher * + RTI_Publisher_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h new file mode 100644 index 00000000000..fbdd4c2285d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h @@ -0,0 +1,128 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_PUBLISHER_H +#define CIAO_RTI_PUBLISHER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_Publisher_i : + public virtual ::DDS::CCM_Publisher, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_Publisher_i (void); + + // Destructor + virtual ~RTI_Publisher_i (void); + + virtual + ::DDS::DataWriter_ptr create_datawriter (::DDS::Topic_ptr a_topic, + const ::DDS::DataWriterQos & qos, + ::DDS::DataWriterListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::DataWriter_ptr create_datawriter_with_profile (::DDS::Topic_ptr a_topic, + const char* library_name, + const char *profile_name, + ::DDS::DataWriterListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::ReturnCode_t delete_datawriter (::DDS::DataWriter_ptr a_datawriter); + + virtual + ::DDS::DataWriter_ptr lookup_datawriter (const char * impl_name); + + virtual + ::DDS::ReturnCode_t delete_contained_entities (void); + + virtual + ::DDS::ReturnCode_t set_qos (const ::DDS::PublisherQos & qos); + + virtual + ::DDS::ReturnCode_t get_qos (::DDS::PublisherQos & qos); + + virtual + ::DDS::ReturnCode_t set_listener (::DDS::PublisherListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::PublisherListener_ptr get_listener (void); + + virtual + ::DDS::ReturnCode_t suspend_publications (void); + + virtual + ::DDS::ReturnCode_t resume_publications (void); + + virtual + ::DDS::ReturnCode_t begin_coherent_changes (void); + + virtual + ::DDS::ReturnCode_t end_coherent_changes (void); + + virtual + ::DDS::ReturnCode_t wait_for_acknowledgments (const ::DDS::Duration_t & max_wait); + + virtual + ::DDS::DomainParticipant_ptr get_participant (void); + + virtual + ::DDS::ReturnCode_t set_default_datawriter_qos (const ::DDS::DataWriterQos & qos); + + virtual + ::DDS::ReturnCode_t get_default_datawriter_qos (::DDS::DataWriterQos & qos); + + virtual + ::DDS::ReturnCode_t copy_from_topic_qos (::DDS::DataWriterQos & a_dataimpl_qos, + const ::DDS::TopicQos & a_impl_qos); + + virtual + ::DDS::ReturnCode_t enable (void); + + virtual + ::DDS::StatusCondition_ptr get_statuscondition (void); + + virtual + ::DDS::StatusMask get_status_changes (void); + + virtual + ::DDS::InstanceHandle_t get_instance_handle (void); + + DDSPublisher * get_impl (void); + + void set_impl (DDSPublisher *p); + + private: + DDSPublisher *impl_; + + DDSPublisher *impl (void); + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp new file mode 100644 index 00000000000..902923b6a72 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp @@ -0,0 +1,101 @@ +// $Id$ + +#include "PublisherListener.h" +#include "Publisher.h" +#include "DataWriter.h" +#include "PublicationMatchedStatus.h" +#include "LivelinessLostStatus.h" +#include "OfferedIncompatibleQosStatus.h" +#include "OfferedDeadlineMissedStatus.h" +#include "ciao/Logger/Log_Macros.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_PublisherListener_i::RTI_PublisherListener_i ( ::DDS::PublisherListener_ptr p) + : impl_ (::DDS::PublisherListener::_duplicate (p)) + { + CIAO_TRACE ("RTI_PublisherListener_i::RTI_PublisherListener_i"); + } + + // Implementation skeleton destructor + RTI_PublisherListener_i::~RTI_PublisherListener_i (void) + { + CIAO_TRACE ("RTI_PublisherListener_i::~RTI_PublisherListener_i"); + } + + void + RTI_PublisherListener_i::on_offered_deadline_missed ( + ::DDSDataWriter* writer, + const ::DDS_OfferedDeadlineMissedStatus & status) + { + CIAO_TRACE ("RTI_PublisherListener_i::on_offered_deadline_missed"); + + ::DDS::OfferedDeadlineMissedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (writer); + this->impl_->on_offered_deadline_missed (dds_writer.in (), ddsstatus); + } + + void + RTI_PublisherListener_i::on_offered_incompatible_qos ( + ::DDSDataWriter* writer, + const ::DDS_OfferedIncompatibleQosStatus & status) + { + CIAO_TRACE ("RTI_PublisherListener_i::on_offered_incompatible_qos"); + + ::DDS::OfferedIncompatibleQosStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (writer); + this->impl_->on_offered_incompatible_qos (dds_writer.in (), ddsstatus); + } + + void + RTI_PublisherListener_i::on_liveliness_lost ( + ::DDSDataWriter* writer, + const ::DDS_LivelinessLostStatus & status) + { + CIAO_TRACE ("RTI_PublisherListener_i::on_liveliness_lost"); + + ::DDS::LivelinessLostStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (writer); + this->impl_->on_liveliness_lost (dds_writer.in (), ddsstatus); + } + + void + RTI_PublisherListener_i::on_publication_matched ( + ::DDSDataWriter* writer, + const ::DDS_PublicationMatchedStatus & status) + { + CIAO_TRACE ("RTI_PublisherListener_i::on_publication_matched"); + + ::DDS::PublicationMatchedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (); + RTI_DataWriter_i *dw = dynamic_cast< RTI_DataWriter_i * > (dds_writer.in ()); + dw->set_impl (writer); + this->impl_->on_publication_matched (dds_writer.in (), ddsstatus); + } + + ::DDS::PublisherListener_ptr + RTI_PublisherListener_i::get_publisher_listener (void) + { + return ::DDS::PublisherListener::_duplicate (this->impl_.in ()); + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h new file mode 100644 index 00000000000..edad2f0a620 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h @@ -0,0 +1,67 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_PUBLISHERLISTENER_H +#define CIAO_RTI_PUBLISHERLISTENER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_PublisherListener_i : + public virtual ::DDSPublisherListener + { + public: + // Constructor + RTI_PublisherListener_i (::DDS::PublisherListener_ptr p); + + // Destructor + virtual ~RTI_PublisherListener_i (void); + + virtual void + on_offered_deadline_missed ( + ::DDSDataWriter *writer, + const ::DDS_OfferedDeadlineMissedStatus & status); + + virtual void + on_offered_incompatible_qos ( + ::DDSDataWriter *writer, + const ::DDS_OfferedIncompatibleQosStatus & status); + + virtual void + on_liveliness_lost ( + ::DDSDataWriter* writer, + const ::DDS_LivelinessLostStatus & status); + + virtual void + on_publication_matched ( + ::DDSDataWriter *writer, + const ::DDS_PublicationMatchedStatus & status); + + ::DDS::PublisherListener_ptr get_publisher_listener (void); + private: + ::DDS::PublisherListener_var impl_; + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp new file mode 100644 index 00000000000..7b055015b45 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp @@ -0,0 +1,147 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +template +CIAO::DDS4CCM::PublisherListener_T::PublisherListener_T ( + typename CCM_TYPE::context_type::_ptr_type context, + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) + : context_ (CCM_TYPE::context_type::_duplicate (context)), + error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::PublisherListener_T::PublisherListener_T"); +} + +template +CIAO::DDS4CCM::PublisherListener_T::~PublisherListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::PublisherListener_T::~PublisherListener_T"); +} + +template +void +CIAO::DDS4CCM::PublisherListener_T::on_offered_deadline_missed ( + ::DDS::DataWriter_ptr the_Writer, + const ::DDS::OfferedDeadlineMissedStatus & status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_offered_deadline_missed"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_offered_deadline_missed (the_Writer, status); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("PublisherListener_T::on_offered_deadline_missed: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PublisherListener_T::on_offered_deadline_missed: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::PublisherListener_T::on_offered_incompatible_qos ( + ::DDS::DataWriter_ptr the_Writer, + const ::DDS::OfferedIncompatibleQosStatus & status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_offered_incompatible_qos"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_offered_incompatible_qos (the_Writer, status); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("PublisherListener_T::on_offered_incompatible_qos: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PublisherListener_T::on_offered_incompatible_qos: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::PublisherListener_T::on_liveliness_lost ( + ::DDS::DataWriter_ptr the_Writer, + const ::DDS::LivelinessLostStatus &) +{ + CIAO_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_liveliness_lost"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_unexpected_status (the_Writer, ::DDS::LIVELINESS_LOST_STATUS); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("PublisherListener_T::on_liveliness_lost: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PublisherListener_T::on_liveliness_lost: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::PublisherListener_T::on_publication_matched ( + ::DDS::DataWriter_ptr the_Writer, + const ::DDS::PublicationMatchedStatus &) +{ + CIAO_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_publication_matched"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_unexpected_status (the_Writer, ::DDS::PUBLICATION_MATCHED_STATUS); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("PublisherListener_T::on_publication_matched: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PublisherListener_T::on_publication_matched: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + + +template +::DDS::StatusMask +CIAO::DDS4CCM::PublisherListener_T::get_mask (void) +{ + return DDS_OFFERED_DEADLINE_MISSED_STATUS | + DDS_OFFERED_INCOMPATIBLE_QOS_STATUS | + DDS_LIVELINESS_LOST_STATUS | + DDS_PUBLICATION_MATCHED_STATUS; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h new file mode 100644 index 00000000000..3760f5754d4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h @@ -0,0 +1,62 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS_PUBLISHERLISTENER_T_H_ +#define DDS_PUBLISHERLISTENER_T_H_ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + template + class PublisherListener_T : + public ::DDS::PublisherListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + PublisherListener_T ( + typename CCM_TYPE::context_type::_ptr_type context, + ::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + virtual void on_offered_deadline_missed ( + ::DDS::DataWriter *the_writer, + const ::DDS::OfferedDeadlineMissedStatus & status); + + virtual void on_liveliness_lost ( + ::DDS::DataWriter *the_writer, + const ::DDS::LivelinessLostStatus & status); + + virtual void on_offered_incompatible_qos ( + ::DDS::DataWriter *the_writer, + const ::DDS::OfferedIncompatibleQosStatus & status); + + virtual void on_publication_matched ( + ::DDS::DataWriter *the_writer, + const ::DDS::PublicationMatchedStatus & status); + + /// Destructor + virtual ~PublisherListener_T (void); + + static ::DDS::StatusMask get_mask (void); + + private: + typename CCM_TYPE::context_type::_var_type context_; + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } +} + +#include "dds4ccm/impl/ndds/PublisherListener_T.cpp" + +#endif /* DDS_PUBLISHERLISTENER_T_H_ */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherQos.h new file mode 100644 index 00000000000..25244282b6b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherQos.h @@ -0,0 +1,53 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_PUBLISHERQOS_H +#define CIAO_RTI_PUBLISHERQOS_H + +#include "PresentationQosPolicy.h" +#include "PartitionQosPolicy.h" +#include "GroupDataQosPolicy.h" +#include "EntityFactoryQosPolicy.h" + +inline void +operator<<= (::DDS::PublisherQos &ddsqos, const ::DDS_PublisherQos & qos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator<<= (::DDS_PublisherQos &ddsqos, const ::DDS::PublisherQos & qos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS_PublisherQos &qos, ::DDS::PublisherQos & ddsqos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS::PublisherQos &qos, ::DDS_PublisherQos & ddsqos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +#endif /* CIAO_RTI_PUBLISHERQOS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h new file mode 100644 index 00000000000..a54eb46faf6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h @@ -0,0 +1,34 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_QOSPOLICYCOUNTSEQ_H +#define CIAO_RTI_QOSPOLICYCOUNTSEQ_H + +inline void +operator<<= (::DDS::QosPolicyCountSeq &/*ddsstatus*/, const ::DDS_QosPolicyCountSeq & /*status*/) +{ + // todo +} + +inline void +operator<<= (::DDS_QosPolicyCountSeq &/*ddsstatus*/, const ::DDS::QosPolicyCountSeq & /*status*/) +{ +} + +inline void +operator>>= (const ::DDS_QosPolicyCountSeq &/*status*/, ::DDS::QosPolicyCountSeq & /*ddsstatus*/) +{ +} + +inline void +operator>>= (const ::DDS::QosPolicyCountSeq &/*status*/, ::DDS_QosPolicyCountSeq & /*ddsstatus*/) +{ +} + +#endif /* CIAO_RTI_QOSPOLICYCOUNTSEQ_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp new file mode 100644 index 00000000000..31b90c8a19d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp @@ -0,0 +1,108 @@ +// $Id$ + +#include "QueryCondition.h" +#include "Subscriber.h" +#include "DataReader.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_QueryCondition_i::RTI_QueryCondition_i () + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_QueryCondition_i::~RTI_QueryCondition_i (void) + { + } + + ::CORBA::Boolean + RTI_QueryCondition_i::get_trigger_value (void) + { + return this->impl ()->get_trigger_value (); + } + + ::DDS::SampleStateMask + RTI_QueryCondition_i::get_sample_state_mask (void) + { + return this->impl ()->get_sample_state_mask (); + } + + ::DDS::ViewStateMask + RTI_QueryCondition_i::get_view_state_mask (void) + { + return this->impl ()->get_view_state_mask (); + } + + ::DDS::InstanceStateMask + RTI_QueryCondition_i::get_instance_state_mask (void) + { + return this->impl ()->get_instance_state_mask (); + } + + ::DDS::DataReader_ptr + RTI_QueryCondition_i::get_datareader (void) + { + ::DDSDataReader* reader = this->impl ()->get_datareader (); + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (reader); + + return dds_reader._retn (); + } + + char * + RTI_QueryCondition_i::get_query_expression (void) + { + return ::CORBA::string_dup (this->impl ()->get_query_expression ()); + } + + ::DDS::ReturnCode_t + RTI_QueryCondition_i::get_query_parameters ( + ::DDS::StringSeq & /*query_parameters*/) + { + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_QueryCondition_i::set_query_parameters ( + const ::DDS::StringSeq & /*query_parameters*/) + { + throw CORBA::NO_IMPLEMENT (); + } + + DDSQueryCondition * + RTI_QueryCondition_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_QueryCondition_i::set_impl (DDSQueryCondition * dw) + { + this->impl_ = dw; + } + + DDSQueryCondition * + RTI_QueryCondition_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h new file mode 100644 index 00000000000..bf602477877 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h @@ -0,0 +1,79 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_QUERYCONDITION_H +#define CIAO_RTI_QUERYCONDITION_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_QueryCondition_i : + public virtual ::DDS::CCM_QueryCondition, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_QueryCondition_i (void); + + // Destructor + virtual ~RTI_QueryCondition_i (void); + + virtual ::CORBA::Boolean + get_trigger_value (void); + + virtual ::DDS::SampleStateMask + get_sample_state_mask (void); + + virtual ::DDS::ViewStateMask + get_view_state_mask (void); + + virtual ::DDS::InstanceStateMask + get_instance_state_mask (void); + + virtual ::DDS::DataReader_ptr + get_datareader (void); + + virtual char * + get_query_expression (void); + + virtual ::DDS::ReturnCode_t + get_query_parameters ( + ::DDS::StringSeq & query_parameters); + + virtual ::DDS::ReturnCode_t + set_query_parameters ( + const ::DDS::StringSeq & query_parameters); + + DDSQueryCondition * get_impl (void); + + void set_impl (DDSQueryCondition * qc); + + private: + DDSQueryCondition * impl_; + + DDSQueryCondition * impl (); + }; + } + } +} + +#endif /* CIAO_RTI_QUERYCONDITION_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp new file mode 100644 index 00000000000..5ae5382892a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp @@ -0,0 +1,83 @@ +// $Id$ + +#include "ReadCondition.h" +#include "DataReader.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_ReadCondition_i::RTI_ReadCondition_i (void) + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_ReadCondition_i::~RTI_ReadCondition_i (void) + { + } + + ::CORBA::Boolean + RTI_ReadCondition_i::get_trigger_value (void) + { + return this->impl ()->get_trigger_value (); + } + + ::DDS::SampleStateMask + RTI_ReadCondition_i::get_sample_state_mask (void) + { + return this->impl ()->get_sample_state_mask (); + } + + ::DDS::ViewStateMask + RTI_ReadCondition_i::get_view_state_mask (void) + { + return this->impl ()->get_view_state_mask (); + } + + ::DDS::InstanceStateMask + RTI_ReadCondition_i::get_instance_state_mask (void) + { + return this->impl ()->get_instance_state_mask (); + } + + ::DDS::DataReader_ptr + RTI_ReadCondition_i::get_datareader (void) + { + DDSDataReader* rd = this->impl ()->get_datareader (); + ::DDS::DataReader_var retval = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(retval.in ()); + rti_dr->set_impl (rd); + + return retval._retn (); + } + + DDSReadCondition * + RTI_ReadCondition_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_ReadCondition_i::set_impl (DDSReadCondition * rc) + { + this->impl_ = rc; + } + + DDSReadCondition * + RTI_ReadCondition_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h new file mode 100644 index 00000000000..c2f72f601f8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h @@ -0,0 +1,68 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_READCONDITION_H +#define CIAO_RTI_READCONDITION_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_ReadCondition_i : + public virtual ::DDS::CCM_ReadCondition, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_ReadCondition_i (void); + + // Destructor + virtual ~RTI_ReadCondition_i (void); + + virtual ::CORBA::Boolean + get_trigger_value (void); + + virtual ::DDS::SampleStateMask + get_sample_state_mask (void); + + virtual ::DDS::ViewStateMask + get_view_state_mask (void); + + virtual ::DDS::InstanceStateMask + get_instance_state_mask (void); + + virtual ::DDS::DataReader_ptr + get_datareader (void); + + DDSReadCondition * get_impl (void); + + void set_impl (DDSReadCondition * rc); + + private: + DDSReadCondition *impl_; + + DDSReadCondition * impl (void); + }; + } + } +} + +#endif /* CIAO_RTI_READCONDITION_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ReaderDataLifecycleQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReaderDataLifecycleQosPolicy.h new file mode 100644 index 00000000000..abc9363bfc3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReaderDataLifecycleQosPolicy.h @@ -0,0 +1,40 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_READERDATALIFECYCLEQOSPOLICY_H +#define CIAO_RTI_READERDATALIFECYCLEQOSPOLICY_H + +inline void +operator<<= (::DDS::ReaderDataLifecycleQosPolicy &ddsqos, const ::DDS_ReaderDataLifecycleQosPolicy & qos) +{ + ddsqos.autopurge_nowriter_samples_delay <<= qos.autopurge_nowriter_samples_delay; + ddsqos.autopurge_disposed_samples_delay <<= qos.autopurge_disposed_samples_delay; +} + +inline void +operator<<= (::DDS_ReaderDataLifecycleQosPolicy &ddsqos, const ::DDS::ReaderDataLifecycleQosPolicy & qos) +{ + ddsqos.autopurge_nowriter_samples_delay <<= qos.autopurge_nowriter_samples_delay; + ddsqos.autopurge_disposed_samples_delay <<= qos.autopurge_disposed_samples_delay; +} + +inline void +operator>>= (const ::DDS_ReaderDataLifecycleQosPolicy &qos, ::DDS::ReaderDataLifecycleQosPolicy & ddsqos) +{ + ddsqos.autopurge_nowriter_samples_delay <<= qos.autopurge_nowriter_samples_delay; + ddsqos.autopurge_disposed_samples_delay <<= qos.autopurge_disposed_samples_delay; +} + +inline void +operator>>= (const ::DDS::ReaderDataLifecycleQosPolicy &qos, ::DDS_ReaderDataLifecycleQosPolicy & ddsqos) +{ + ddsqos.autopurge_nowriter_samples_delay <<= qos.autopurge_nowriter_samples_delay; + ddsqos.autopurge_disposed_samples_delay <<= qos.autopurge_disposed_samples_delay; +} + +#endif /* CIAO_RTI_READERDATALIFECYCLEQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.cpp new file mode 100644 index 00000000000..78398a34800 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.cpp @@ -0,0 +1,353 @@ +// $Id$ + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "dds4ccm/impl/ndds/Utils.h" +#include "dds4ccm/impl/ndds/SampleInfo.h" +#include "ciao/Logger/Log_Macros.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::Reader_T::Reader_T (void) + : impl_ (0) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Reader_T::Reader_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::Reader_T::~Reader_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Reader_T::~Reader_T"); +} + +template +typename DDS_TYPE::data_reader * +CIAO::DDS4CCM::RTI::Reader_T::impl (void) +{ + if (this->impl_) + { + return this->impl_; + } + else + { + throw ::CORBA::BAD_INV_ORDER (); + } +} + +//for the requirement : 'samples ordered by instances' the following settings are necessary: +// ordered_access -> true and DDS_INSTANCE_PRESENTATION_QOS (default) . +template +CORBA::ULong +CIAO::DDS4CCM::RTI::Reader_T::get_nr_valid_samples ( + const DDS_SampleInfoSeq & sample_info, + bool determine_last) +{ + CORBA::ULong nr_of_samples = 0; + for (::DDS_Long i = 0 ; i < sample_info.length(); ++i) + { + if (determine_last) + { + if (sample_info[i].sample_rank == 0 && + sample_info[i].valid_data) + { + ++nr_of_samples; + } + } + else if (sample_info[i].valid_data) + { + ++nr_of_samples; + } + } + return nr_of_samples; +} + + +template +void +CIAO::DDS4CCM::RTI::Reader_T::read_without_instance ( + typename DDS_TYPE::dds_seq_type & data, + DDS_SampleInfoSeq & sample_info) +{ + DDS_ReturnCode_t retval = this->impl ()->read ( + data, + sample_info, + DDS_LENGTH_UNLIMITED, + DDS_READ_SAMPLE_STATE | DDS_NOT_READ_SAMPLE_STATE, + DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE, + DDS_ALIVE_INSTANCE_STATE); + + if (retval != DDS_RETCODE_OK && retval != DDS_RETCODE_NO_DATA) + { + this->impl ()->return_loan(data, sample_info); + CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_without_instance - ") + ACE_TEXT ("retval is %C\n"), translate_retcode(retval))); + throw ::CCM_DDS::InternalError (retval, 0); + } +} + + +template +void +CIAO::DDS4CCM::RTI::Reader_T::read_last ( + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos) +{ + //this function has to return the last sample of all instances + DDS_SampleInfoSeq sample_info; + typename DDS_TYPE::dds_seq_type data; + + read_without_instance (data, sample_info); + + typename CCM_TYPE::seq_type::_var_type inst_seq = new typename CCM_TYPE::seq_type; + ::CCM_DDS::ReadInfoSeq_var infoseq = new ::CCM_DDS::ReadInfoSeq; + + CORBA::ULong const nr_of_last_samples = get_nr_valid_samples (sample_info, true); + + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_last - ") + ACE_TEXT ("total number of samples <%u> - ") + ACE_TEXT ("last number of samples <%u>\n"), + data.length(), + nr_of_last_samples)); + + CORBA::ULong ix = 0; + infoseq->length (nr_of_last_samples); + inst_seq->length (nr_of_last_samples); + // we need only the last sample of each instance + for (::DDS_Long i = 0 ; i < sample_info.length(); ++i) + { + if((sample_info[i].sample_rank == 0) && (sample_info[i].valid_data)) + { + infoseq[ix] <<= sample_info[i]; + inst_seq[ix] = data[i]; + ++ix; + } + } + //return the loan + this->impl ()->return_loan(data,sample_info); + infos = infoseq._retn (); + instances = inst_seq._retn(); +} + +template +void +CIAO::DDS4CCM::RTI::Reader_T::read_all ( + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos) +{ + //this function has to return all samples of all instances + DDS_SampleInfoSeq sample_info; + typename DDS_TYPE::dds_seq_type data; + + this->read_without_instance (data, sample_info); + + CORBA::ULong const nr_of_valid_samples = get_nr_valid_samples (sample_info); + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_all - ") + ACE_TEXT ("total number of samples <%u> - ") + ACE_TEXT ("valid number of samples <%u>\n"), + data.length (), + nr_of_valid_samples)); + + typename CCM_TYPE::seq_type::_var_type inst_seq = new typename CCM_TYPE::seq_type; + ::CCM_DDS::ReadInfoSeq_var infoseq = new ::CCM_DDS::ReadInfoSeq; + + infoseq->length (nr_of_valid_samples); + inst_seq->length (nr_of_valid_samples); + + CORBA::ULong ix = 0; + + for (::DDS_Long i = 0 ; i < sample_info.length(); ++i) + { + if(sample_info[i].valid_data) + { + infoseq[ix] <<= sample_info[i]; + inst_seq[ix] = data[i]; + ++ix; + } + } + //return the loan + this->impl ()->return_loan(data,sample_info); + + infos = infoseq._retn (); + instances = inst_seq._retn(); +} + +template +DDS_InstanceHandle_t +CIAO::DDS4CCM::RTI::Reader_T::check_handle ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle) +{ + DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL; + hnd <<= instance_handle; + + DDS_InstanceHandle_t lookup_hnd = + this->impl ()->lookup_instance (an_instance); + if (!DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL) && + !DDS_InstanceHandle_equals (&hnd, &lookup_hnd)) + { + throw ::CCM_DDS::InternalError (0, 0); + } + if (DDS_InstanceHandle_equals (&lookup_hnd, &::DDS_HANDLE_NIL)) + { + throw ::CCM_DDS::NonExistent (); + } + return lookup_hnd; +} + +template +void +CIAO::DDS4CCM::RTI::Reader_T::read_with_instance ( + typename DDS_TYPE::dds_seq_type & data, + const ::DDS_InstanceHandle_t & lookup_hnd, + DDS_SampleInfoSeq & sample_info) +{ + CIAO_DEBUG (6, (LM_INFO, ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_with_instance - ") + ACE_TEXT ("Reading with instance.\n"))); + DDS_ReturnCode_t const retval = this->impl ()->read_instance ( + data, + sample_info, + DDS_LENGTH_UNLIMITED, + lookup_hnd, + DDS_READ_SAMPLE_STATE | DDS_NOT_READ_SAMPLE_STATE , + DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE, + DDS_ALIVE_INSTANCE_STATE); + if (retval != DDS_RETCODE_OK && retval != DDS_RETCODE_NO_DATA) + { + this->impl ()->return_loan(data, sample_info); + CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_with_instance - ") + ACE_TEXT ("retval is %C\n"), translate_retcode(retval))); + throw ::CCM_DDS::InternalError (retval, 0); + } +} + +template +void +CIAO::DDS4CCM::RTI::Reader_T::read_one_last ( + typename DDS_TYPE::value_type& an_instance, + ::CCM_DDS::ReadInfo_out info, + const ::DDS::InstanceHandle_t & instance_handle) +{ + DDS_InstanceHandle_t lookup_hnd = check_handle (an_instance, instance_handle); + + DDS_SampleInfoSeq sample_info; + typename DDS_TYPE::dds_seq_type data; + //for now, only read with instance... + this->read_with_instance (data, lookup_hnd, sample_info); + + ::DDS_Long sample = data.length(); + CIAO_DEBUG (6, (LM_INFO, + ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_one_last - ") + ACE_TEXT ("total number of samples <%u>\n"), + sample)); + while (sample >= 0 && !sample_info[sample-1].valid_data) + --sample; + if (sample >= 0) + { + if(sample_info[sample-1].valid_data) + { + an_instance = data[sample-1]; + info <<= sample_info[sample-1]; + } + } + // Return the loan + this->impl ()->return_loan(data, sample_info); +} + +template +void +CIAO::DDS4CCM::RTI::Reader_T::read_one_all ( + const typename DDS_TYPE::value_type& an_instance, + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos, + const ::DDS::InstanceHandle_t & instance_handle) +{ + DDS_InstanceHandle_t const lookup_hnd = check_handle (an_instance, instance_handle); + + DDS_SampleInfoSeq sample_info; + typename DDS_TYPE::dds_seq_type data; + + this->read_with_instance (data, lookup_hnd, sample_info); + + // Count the number of valid samples + CORBA::ULong nr_of_valid_samples = this->get_nr_valid_samples (sample_info); + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("CIAO::DDS4CCM::RTI::Reader_T::read_all - ") + ACE_TEXT ("total number of samples <%u> - ") + ACE_TEXT ("valid number of samples <%u>\n"), + data.length (), + nr_of_valid_samples)); + + typename CCM_TYPE::seq_type::_var_type inst_seq = new typename CCM_TYPE::seq_type; + ::CCM_DDS::ReadInfoSeq_var infoseq = new ::CCM_DDS::ReadInfoSeq; + + infoseq->length (nr_of_valid_samples); + inst_seq->length (nr_of_valid_samples); + + // Copy the valid samples + CORBA::ULong ix = 0; + for (::DDS_Long i = 0 ; i < sample_info.length(); ++i) + { + if(sample_info[i].valid_data) + { + infoseq[ix] <<= sample_info[i]; + inst_seq[ix] = data[i]; + ++ix; + } + } + + // Return the loan + this->impl ()->return_loan(data, sample_info); + + infos = infoseq._retn (); + instances = inst_seq._retn(); +} + +template + ::CCM_DDS::QueryFilter * + CIAO::DDS4CCM::RTI::Reader_T::filter (void) +{ + /// @todo + return 0; +} + +template +void +CIAO::DDS4CCM::RTI::Reader_T::filter (const ::CCM_DDS::QueryFilter & filter) +{ + /// @todo + ACE_UNUSED_ARG (filter); +} + +template +void +CIAO::DDS4CCM::RTI::Reader_T::set_impl ( + ::DDS::DataReader_ptr reader) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Reader_T::set_impl"); + + if (::CORBA::is_nil (reader)) + { + this->impl_ = 0; + } + else + { + RTI_DataReader_i *rdw = dynamic_cast (reader); + + if (!rdw) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Reader_T::data_reader - " + "Unable to cast provided DataReader to servant\n")); + throw ::CORBA::INTERNAL (); + } + + this->impl_ = DDS_TYPE::data_reader::narrow (rdw->get_impl ()); + + if (!this->impl ()) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Reader_T::data_reader - " + "Unable to narrow the provided reader entity to the specific " + "type necessary to publish messages\n")); + throw ::CORBA::INTERNAL (); + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.h new file mode 100644 index 00000000000..3ae443a9896 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader_T.h @@ -0,0 +1,89 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ +#ifndef DDS_READER_T +#define DDS_READER_T + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class Reader_T : + public virtual CCM_TYPE::reader_type, + public virtual ::CORBA::LocalObject, + private virtual ACE_Copy_Disabled + { + public: + /// Constructor + Reader_T (void); + + /// Destructor + virtual ~Reader_T (void); + + virtual void read_last ( + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos); + + virtual void read_all ( + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos); + + virtual void read_one_last ( + typename DDS_TYPE::value_type& an_instance, + ::CCM_DDS::ReadInfo_out info, + const ::DDS::InstanceHandle_t & instance_handle); + + virtual void read_one_all ( + const typename DDS_TYPE::value_type& an_instance, + typename CCM_TYPE::seq_type::_out_type instances, + ::CCM_DDS::ReadInfoSeq_out infos, + const ::DDS::InstanceHandle_t & instance_handle); + + virtual ::CCM_DDS::QueryFilter *filter (void); + + virtual void filter (const ::CCM_DDS::QueryFilter & filter); + + void set_impl (::DDS::DataReader_ptr reader); + + private: + typename DDS_TYPE::data_reader *impl_; + ::DDS::DataReader_ptr reader_; + + typename DDS_TYPE::data_reader * impl (void); + + DDS_InstanceHandle_t check_handle ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle); + + void read_with_instance ( + typename DDS_TYPE::dds_seq_type & data, + const ::DDS_InstanceHandle_t & lookup_hnd, + DDS_SampleInfoSeq & sample_info); + + void read_without_instance ( + typename DDS_TYPE::dds_seq_type & data, + DDS_SampleInfoSeq & sample_info); + + CORBA::ULong get_nr_valid_samples ( + const DDS_SampleInfoSeq & sample_info, + bool determine_last = false); + }; + } + } +} + +#include "dds4ccm/impl/ndds/Reader_T.cpp" + +#endif /* DDS_READER_T */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ReliabilityQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReliabilityQosPolicy.h new file mode 100644 index 00000000000..1a114e4c3a4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReliabilityQosPolicy.h @@ -0,0 +1,42 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_RELIABILITYSQOSPOLICY_H +#define CIAO_RTI_RELIABILITYSQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::ReliabilityQosPolicy &ddsqos, const ::DDS_ReliabilityQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS::ReliabilityQosPolicyKind> (qos.kind); + ddsqos.max_blocking_time <<= qos.max_blocking_time; +} + +inline void +operator<<= (::DDS_ReliabilityQosPolicy &ddsqos, const ::DDS::ReliabilityQosPolicy & qos) +{ + ddsqos.kind = static_cast < ::DDS_ReliabilityQosPolicyKind> (qos.kind); + ddsqos.max_blocking_time <<= qos.max_blocking_time; +} + +inline void +operator>>= (const ::DDS_ReliabilityQosPolicy &qos, ::DDS::ReliabilityQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS::ReliabilityQosPolicyKind> (qos.kind); + ddsqos.max_blocking_time <<= qos.max_blocking_time; +} + +inline void +operator>>= (const ::DDS::ReliabilityQosPolicy &qos, ::DDS_ReliabilityQosPolicy & ddsqos) +{ + ddsqos.kind = static_cast < ::DDS_ReliabilityQosPolicyKind> (qos.kind); + ddsqos.max_blocking_time <<= qos.max_blocking_time; +} + +#endif /* CIAO_RTI_RELIABILITYSQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h new file mode 100644 index 00000000000..9d9f203c649 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h @@ -0,0 +1,47 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_REQUESTEDDEADLINEMISSEDSTATUS_H +#define CIAO_RTI_REQUESTEDDEADLINEMISSEDSTATUS_H + +#include "InstanceHandle_t.h" + +inline void +operator<<= (::DDS::RequestedDeadlineMissedStatus &ddsstatus, const ::DDS_RequestedDeadlineMissedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator<<= (::DDS_RequestedDeadlineMissedStatus &ddsstatus, const ::DDS::RequestedDeadlineMissedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator>>= (const ::DDS_RequestedDeadlineMissedStatus &status, ::DDS::RequestedDeadlineMissedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator>>= (const ::DDS::RequestedDeadlineMissedStatus &status, ::DDS_RequestedDeadlineMissedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +#endif /* CIAO_RTI_REQUESTEDDEADLINEMISSEDSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h new file mode 100644 index 00000000000..b657de7c1fc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h @@ -0,0 +1,51 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_REQUESTEDINCOMPATIBLEQOSSTATUS_H +#define CIAO_RTI_REQUESTEDINCOMPATIBLEQOSSTATUS_H + +#include "QosPolicyCountSeq.h" + +inline void +operator<<= (::DDS::RequestedIncompatibleQosStatus &ddsstatus, const ::DDS_RequestedIncompatibleQosStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = status.last_policy_id; + ddsstatus.policies <<= status.policies; +} + +inline void +operator<<= (::DDS_RequestedIncompatibleQosStatus &ddsstatus, const ::DDS::RequestedIncompatibleQosStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = static_cast (status.last_policy_id); + ddsstatus.policies <<= status.policies; +} + +inline void +operator>>= (const ::DDS_RequestedIncompatibleQosStatus &status, ::DDS::RequestedIncompatibleQosStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = status.last_policy_id; + ddsstatus.policies <<= status.policies; +} + +inline void +operator>>= (const ::DDS::RequestedIncompatibleQosStatus &status, ::DDS_RequestedIncompatibleQosStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_policy_id = static_cast (status.last_policy_id); + ddsstatus.policies <<= status.policies; +} + +#endif /* CIAO_RTI_REQUESTEDINCOMPATIBLEQOSSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ResourceLimitsQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/ResourceLimitsQosPolicy.h new file mode 100644 index 00000000000..1f41063358a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ResourceLimitsQosPolicy.h @@ -0,0 +1,44 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_RESOURCELIMITSQOSPOLICY_H +#define CIAO_RTI_RESOURCELIMITSQOSPOLICY_H + +inline void +operator<<= (::DDS::ResourceLimitsQosPolicy &ddsqos, const ::DDS_ResourceLimitsQosPolicy & qos) +{ + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +inline void +operator<<= (::DDS_ResourceLimitsQosPolicy &ddsqos, const ::DDS::ResourceLimitsQosPolicy & qos) +{ + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +inline void +operator>>= (const ::DDS_ResourceLimitsQosPolicy &qos, ::DDS::ResourceLimitsQosPolicy & ddsqos) +{ + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +inline void +operator>>= (const ::DDS::ResourceLimitsQosPolicy &qos, ::DDS_ResourceLimitsQosPolicy & ddsqos) +{ + ddsqos.max_samples = qos.max_samples; + ddsqos.max_instances = qos.max_instances; + ddsqos.max_samples_per_instance = qos.max_samples_per_instance; +} + +#endif /* CIAO_RTI_RESOURCELIMITSQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleInfo.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleInfo.h new file mode 100644 index 00000000000..16f664924c8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleInfo.h @@ -0,0 +1,56 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef SAMPLE_INFO_H +#define SAMPLE_INFO_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "Time_t.h" +#include "InstanceHandle_t.h" + +inline void +operator<<= (::CCM_DDS::AccessStatus & access_status, const ::DDS_SampleStateKind & sample_state) +{ + if (sample_state == DDS_NOT_READ_SAMPLE_STATE) + { + access_status = ::CCM_DDS::FRESH_INFO; + } + else if (sample_state == DDS_READ_SAMPLE_STATE) + { + access_status = ::CCM_DDS::ALREADY_SEEN; + } +} + +inline void +operator<<= (::CCM_DDS::ReadInfo& ccm_dds_readinfo, const ::DDS_SampleInfo& sample_info) +{ + ccm_dds_readinfo.source_timestamp <<= sample_info.source_timestamp; + ccm_dds_readinfo.access_status <<= sample_info.sample_state; + ccm_dds_readinfo.instance_handle <<= sample_info.instance_handle; + + if (sample_info.instance_state == DDS_ALIVE_INSTANCE_STATE && + sample_info.view_state == DDS_NEW_VIEW_STATE) + { + // Instance_status new + ccm_dds_readinfo.instance_status = ::CCM_DDS::INSTANCE_CREATED; + } + else if (sample_info.instance_state == DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE) + { + // Instance_status deleted + ccm_dds_readinfo.instance_status = ::CCM_DDS::INSTANCE_DELETED; + } + else if ((sample_info.instance_state == DDS_ALIVE_INSTANCE_STATE && + sample_info.view_state == DDS_NOT_NEW_VIEW_STATE) || + sample_info.instance_state == DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE) + { + // Instance_status updated + ccm_dds_readinfo.instance_status = ::CCM_DDS::INSTANCE_UPDATED; + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h new file mode 100644 index 00000000000..4e51ef3e61a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h @@ -0,0 +1,28 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_SAMPLELOSTSTATUS_H +#define CIAO_RTI_SAMPLELOSTSTATUS_H + +inline void +operator<<= (::DDS::SampleLostStatus &ddsstatus, const ::DDS_SampleLostStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +inline void +operator>>= (const ::DDS_SampleLostStatus &status, ::DDS::SampleLostStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; +} + +#endif /* CIAO_RTI_SAMPLELOSTSTATUS_H */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h new file mode 100644 index 00000000000..09bee568910 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h @@ -0,0 +1,51 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_SAMPLEREJECTEDSTATUS_H +#define CIAO_RTI_SAMPLEREJECTEDSTATUS_H + +#include "InstanceHandle_t.h" + +inline void +operator<<= (::DDS::SampleRejectedStatus &ddsstatus, const ::DDS_SampleRejectedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_reason = static_cast < ::DDS::SampleRejectedStatusKind> (status.last_reason); + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator<<= (::DDS_SampleRejectedStatus &ddsstatus, const ::DDS::SampleRejectedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_reason = static_cast < ::DDS_SampleRejectedStatusKind> (status.last_reason); + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator>>= (const ::DDS_SampleRejectedStatus &status, ::DDS::SampleRejectedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_reason = static_cast < ::DDS::SampleRejectedStatusKind> (status.last_reason); + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +inline void +operator>>= (const ::DDS::SampleRejectedStatus &status, ::DDS_SampleRejectedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.last_reason = static_cast < ::DDS_SampleRejectedStatusKind> (status.last_reason); + ddsstatus.last_instance_handle <<= status.last_instance_handle; +} + +#endif /* CIAO_RTI_SAMPLEREJECTEDSTATUS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.cpp new file mode 100644 index 00000000000..1a6c0c536b0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.cpp @@ -0,0 +1,35 @@ +// -*- C++ -*- +// $Id$ + +template +CCM_DDS_StateListenerControl_T::CCM_DDS_StateListenerControl_T (void) + : is_filter_interpreted_ (false) +{ + CIAO_TRACE ("CCM_DDS_StateListenerControl_T::CCM_DDS_StateListenerControl_T"); +} + +template +CCM_DDS_StateListenerControl_T::~CCM_DDS_StateListenerControl_T (void) +{ + CIAO_TRACE ("CCM_DDS_StateListenerControl_T::~CCM_DDS_StateListenerControl_T"); +} + +template +::CORBA::Boolean +CCM_DDS_StateListenerControl_T::is_filter_interpreted (void) +{ + CIAO_TRACE ("CCM_DDS_StateListenerControl_T::is_filter_interpreted"); + + return this->is_filter_interpreted_.value (); +} + +template +void +CCM_DDS_StateListenerControl_T::is_filter_interpreted ( + ::CORBA::Boolean is_filter_interpreted) +{ + CIAO_TRACE ("CCM_DDS_StateListenerControl_T::is_filter_interpreted"); + + this->is_filter_interpreted_ = is_filter_interpreted; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.h new file mode 100644 index 00000000000..87ed1de1034 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/StateListenerControl_T.h @@ -0,0 +1,38 @@ +// -*- C++ -*- +// $Id$ + +#ifndef DDS4CCM_STATELISTENERCONTROLI_H_ +#define DDS4CCM_STATELISTENERCONTROLI_H_ + +#include "dds4ccm/impl/ndds/DataListenerControl_T.h" +#include "dds4ccm/idl/dds4ccm_StateListenerControlEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template +class CCM_DDS_StateListenerControl_T + : public virtual CCM_DDS_DataListenerControl_T +{ +public: + /// Constructor + CCM_DDS_StateListenerControl_T (void); + + /// Destructor + virtual ~CCM_DDS_StateListenerControl_T (void); + + /// Set the is_filter_interpreted + virtual ::CORBA::Boolean is_filter_interpreted (void); + + /// Get the is_filter_interpreted + virtual void is_filter_interpreted (::CORBA::Boolean is_filter_interpreted); + +private: + ACE_Atomic_Op is_filter_interpreted_; +}; + +#include "dds4ccm/impl/ndds/StateListenerControl_T.cpp" + +#endif /* DDS4CCM_STATELISTENERCONTROLI_H_ */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp new file mode 100644 index 00000000000..6fd74b9bf82 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp @@ -0,0 +1,77 @@ +// $Id$ + +#include "StatusCondition.h" +#include "Subscriber.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_StatusCondition_i::RTI_StatusCondition_i (void) + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_StatusCondition_i::~RTI_StatusCondition_i (void) + { + } + + ::CORBA::Boolean + RTI_StatusCondition_i::get_trigger_value (void) + { + return this->impl ()->get_trigger_value (); + } + + ::DDS::StatusMask + RTI_StatusCondition_i::get_enabled_statuses (void) + { + return this->impl ()->get_enabled_statuses (); + } + + ::DDS::ReturnCode_t + RTI_StatusCondition_i::set_enabled_statuses ( + ::DDS::StatusMask mask) + { + return this->impl ()->set_enabled_statuses (mask); + } + + ::DDS::Entity_ptr + RTI_StatusCondition_i::get_entity (void) + { + throw CORBA::NO_IMPLEMENT (); + } + + DDSStatusCondition * + RTI_StatusCondition_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_StatusCondition_i::set_impl (DDSStatusCondition * sc) + { + this->impl_ = sc; + } + + DDSStatusCondition * + RTI_StatusCondition_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h new file mode 100644 index 00000000000..c30d2cad0bb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h @@ -0,0 +1,66 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_STATUSCONDITION_H +#define CIAO_RTI_STATUSCONDITION_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_StatusCondition_i : + public virtual ::DDS::CCM_StatusCondition, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_StatusCondition_i (void); + + // Destructor + virtual ~RTI_StatusCondition_i (void); + + virtual ::CORBA::Boolean + get_trigger_value (void); + + virtual ::DDS::StatusMask + get_enabled_statuses (void); + + virtual ::DDS::ReturnCode_t + set_enabled_statuses ( + ::DDS::StatusMask mask); + + virtual ::DDS::Entity_ptr + get_entity (void); + + DDSStatusCondition * get_impl (void); + + void set_impl (DDSStatusCondition * sc); + + private: + DDSStatusCondition * impl_; + + DDSStatusCondition * impl (void); + }; + } + } +} + +#endif /* CIAO_RTI_STATUSCONDITION_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp new file mode 100644 index 00000000000..974e8ffd35f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp @@ -0,0 +1,324 @@ +// $Id$ + +#include "Subscriber.h" +#include "SubscriberListener.h" +#include "Topic.h" +#include "DataReader.h" +#include "DataReaderListener.h" +#include "Utils.h" +#include "StatusCondition.h" +#include "InstanceHandle_t.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_Subscriber_i::RTI_Subscriber_i (void) + : impl_ (0) + { + CIAO_TRACE ("RTI_Subscriber_i::RTI_Subscriber_i"); + } + + // Implementation skeleton destructor + RTI_Subscriber_i::~RTI_Subscriber_i (void) + { + CIAO_TRACE ("RTI_Subscriber_i::~RTI_Subscriber_i"); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::enable (void) + { + return this->impl ()->enable (); + } + + ::DDS::StatusCondition_ptr + RTI_Subscriber_i::get_statuscondition (void) + { + DDSStatusCondition* sc = this->impl ()->get_statuscondition (); + ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (); + RTI_StatusCondition_i *rti_sc = dynamic_cast < RTI_StatusCondition_i *> (retval.in ()); + rti_sc->set_impl (sc); + return retval._retn (); + } + + ::DDS::StatusMask + RTI_Subscriber_i::get_status_changes (void) + { + return this->impl ()->get_status_changes (); + } + + ::DDS::InstanceHandle_t + RTI_Subscriber_i::get_instance_handle (void) + { + ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle (); + ::DDS::InstanceHandle_t handle; + handle <<= rtihandle; + return handle; + } + + ::DDS::DataReader_ptr + RTI_Subscriber_i::create_datareader ( + ::DDS::TopicDescription_ptr a_topic, + const ::DDS::DataReaderQos & /*qos*/, + ::DDS::DataReaderListener_ptr a_listener, + ::DDS::StatusMask mask) + { + RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic); + if (!topic) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader - " + "Error: Unable to cast provided topic to its servant.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0); + } + DDSTopic *rti_topic = topic->get_impl (); + DDS_DataReaderQos rti_qos = DDS_DATAREADER_QOS_DEFAULT; + DDSDataReaderListener *rti_drl = 0; + if (!CORBA::is_nil (a_listener)) + { + rti_drl = new RTI_DataReaderListener_i (a_listener); + } + DDSDataReader *rti_dr = this->impl ()->create_datareader (rti_topic, + rti_qos, + rti_drl, + mask); + if (!rti_dr) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader - " + "Error: RTI Topic returned a nil datareader.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + rti_dr->enable (); + ::DDS::DataReader_var retval = new RTI_DataReader_i (); + RTI_DataReader_i *dr = dynamic_cast < RTI_DataReader_i *>(retval.in ()); + dr->set_impl (rti_dr); + + return retval._retn (); + } + + ::DDS::DataReader_ptr + RTI_Subscriber_i::create_datareader_with_profile ( + ::DDS::TopicDescription_ptr a_topic, + const char* library_name, + const char *profile_name, + ::DDS::DataReaderListener_ptr a_listener, + ::DDS::StatusMask mask) + { + RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic); + if (!topic) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader_with_profile - " + "Error: Unable to cast provided topic to its servant.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0); + } + DDSTopic *rti_topic = topic->get_impl (); + DDSDataReaderListener *rti_drl = 0; + if (!CORBA::is_nil (a_listener)) + { + rti_drl = new RTI_DataReaderListener_i (a_listener); + } + DDSDataReader *rti_dr = this->impl ()->create_datareader_with_profile (rti_topic, + library_name, + profile_name, + rti_drl, + mask); + if (!rti_dr) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader_with_profile - " + "Error: RTI Topic returned a nil datareader.\n")); + throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0); + } + + rti_dr->enable (); + ::DDS::DataReader_var retval = new RTI_DataReader_i (); + RTI_DataReader_i *dr = dynamic_cast < RTI_DataReader_i *>(retval.in ()); + dr->set_impl (rti_dr); + + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::delete_datareader ( + ::DDS::DataReader_ptr a_datareader) + { + RTI_DataReader_i *top = dynamic_cast< RTI_DataReader_i *> (a_datareader); + if (!top) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Subscriber_i::delete_datareader - " + "Unable to cast provided object reference to servant.\n")); + return ::DDS::RETCODE_BAD_PARAMETER; + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTI_Subscriber_i::delete_datareader - " + "Successfully casted provided object reference to servant.\n")); + + DDS_ReturnCode_t retval = this->impl ()->delete_datareader (top->get_impl ()); + + if (retval != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "RTI_Subscriber_i::delete_datareader - " + "Error: Returned non-ok error code %c\n", + translate_retcode (retval))); + } + else CIAO_DEBUG (6, (LM_INFO, CLINFO "RTI_Subscriber_i::delete_datareader - " + "Successfully deleted\n")); + + return retval; + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::delete_contained_entities (void) + { + return this->impl ()->delete_contained_entities (); + } + + ::DDS::DataReader_ptr + RTI_Subscriber_i::lookup_datareader ( + const char * impl_name) + { + DDSDataReader* dr = this->impl ()->lookup_datareader (impl_name); + ::DDS::DataReader_var retval = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(retval.in ()); + rti_dr->set_impl (dr); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::get_datareaders ( + ::DDS::DataReaderSeq & /*readers*/, + ::DDS::SampleStateMask /*sample_states*/, + ::DDS::ViewStateMask /*view_states*/, + ::DDS::InstanceStateMask /*instance_states*/) + { + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::notify_datareaders (void) + { + return this->impl ()->notify_datareaders (); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::set_qos ( + const ::DDS::SubscriberQos & /*qos*/) + { + DDS_SubscriberQos rti_impl_qos; +/* rti_impl_qos.presentation = qos.presentation; + rti_impl_qos.partition = qos.partition; + rti_impl_qos.group_data = qos.group_data; + rti_impl_qos.entity_factory = qos.entity_factory;*/ + return this->impl ()->set_qos (rti_impl_qos); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::get_qos ( + ::DDS::SubscriberQos & /*qos*/) + { + DDS_SubscriberQos rti_impl_qos; + DDS_ReturnCode_t const rti_retcode = this->impl ()->get_qos (rti_impl_qos); + /*qos.presentation = rti_impl_qos.presentation; + qos.partition = rti_impl_qos.partition; + qos.group_data = rti_impl_qos.group_data; + qos.entity_factory = rti_impl_qos.entity_factory;*/ + return rti_retcode; + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::set_listener ( + ::DDS::SubscriberListener_ptr a_listener, + ::DDS::StatusMask mask) + { + RTI_SubscriberListener_i* rti_impl_list = new RTI_SubscriberListener_i (a_listener); + return this->impl ()->set_listener (rti_impl_list, mask); + } + + ::DDS::SubscriberListener_ptr + RTI_Subscriber_i::get_listener (void) + { +// DDSSubscriberListener* rti_impl_list = this->impl ()->get_listener (); +// ::DDS::SubscriberListener_var retval = new RTI_SubscriberListener_i (rti_impl_list); +// return retval._retn (); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::begin_access (void) + { + return this->impl ()->begin_access (); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::end_access (void) + { + return this->impl ()->end_access (); + } + + ::DDS::DomainParticipant_ptr + RTI_Subscriber_i::get_participant (void) + { + DDSDomainParticipant* p = this->impl ()->get_participant (); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (p); + return retval._retn (); + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::set_default_datareader_qos ( + const ::DDS::DataReaderQos & /*qos*/) + { + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::get_default_datareader_qos ( + ::DDS::DataReaderQos & /*qos*/) + { + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + ::DDS::ReturnCode_t + RTI_Subscriber_i::copy_from_topic_qos ( + ::DDS::DataReaderQos & /*a_datareader_qos*/, + const ::DDS::TopicQos & /*a_impl_qos*/) + { + throw CORBA::NO_IMPLEMENT (); + // Add your implementation here + } + + DDSSubscriber * + RTI_Subscriber_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_Subscriber_i::set_impl (DDSSubscriber * dw) + { + this->impl_ = dw; + } + + DDSSubscriber * + RTI_Subscriber_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h new file mode 100644 index 00000000000..d43485428db --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h @@ -0,0 +1,140 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_SUBSCRIBER_H +#define CIAO_RTI_SUBSCRIBER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_Subscriber_i : + public virtual ::DDS::CCM_Subscriber, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_Subscriber_i (void); + + // Destructor + virtual ~RTI_Subscriber_i (void); + + virtual ::DDS::ReturnCode_t + enable (void); + + virtual ::DDS::StatusCondition_ptr + get_statuscondition (void); + + virtual ::DDS::StatusMask + get_status_changes (void); + + virtual ::DDS::InstanceHandle_t + get_instance_handle (void); + + virtual ::DDS::DataReader_ptr + create_datareader ( + ::DDS::TopicDescription_ptr a_topic, + const ::DDS::DataReaderQos & qos, + ::DDS::DataReaderListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::DataReader_ptr + create_datareader_with_profile ( + ::DDS::TopicDescription_ptr a_topic, + const char* library_name, + const char *profile_name, + ::DDS::DataReaderListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::ReturnCode_t + delete_datareader ( + ::DDS::DataReader_ptr a_datareader); + + virtual ::DDS::ReturnCode_t + delete_contained_entities (void); + + virtual ::DDS::DataReader_ptr + lookup_datareader ( + const char * impl_name); + + virtual ::DDS::ReturnCode_t + get_datareaders ( + ::DDS::DataReaderSeq & readers, + ::DDS::SampleStateMask sample_states, + ::DDS::ViewStateMask view_states, + ::DDS::InstanceStateMask instance_states); + + virtual ::DDS::ReturnCode_t + notify_datareaders (void); + + virtual ::DDS::ReturnCode_t + set_qos ( + const ::DDS::SubscriberQos & qos); + + virtual ::DDS::ReturnCode_t + get_qos ( + ::DDS::SubscriberQos & qos); + + virtual ::DDS::ReturnCode_t + set_listener ( + ::DDS::SubscriberListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual ::DDS::SubscriberListener_ptr + get_listener (void); + + virtual ::DDS::ReturnCode_t + begin_access (void); + + virtual ::DDS::ReturnCode_t + end_access (void); + + virtual ::DDS::DomainParticipant_ptr + get_participant (void); + + virtual ::DDS::ReturnCode_t + set_default_datareader_qos ( + const ::DDS::DataReaderQos & qos); + + virtual ::DDS::ReturnCode_t + get_default_datareader_qos ( + ::DDS::DataReaderQos & qos); + + virtual ::DDS::ReturnCode_t + copy_from_topic_qos ( + ::DDS::DataReaderQos & a_datareader_qos, + const ::DDS::TopicQos & a_impl_qos); + + DDSSubscriber * get_impl (void); + + void set_impl (DDSSubscriber *p); + + private: + DDSSubscriber *impl_; + + DDSSubscriber *impl (void); + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp new file mode 100644 index 00000000000..a40db67d2e4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp @@ -0,0 +1,158 @@ +// $Id$ + +#include "SubscriberListener.h" +#include "Subscriber.h" +#include "DataReader.h" +#include "SampleLostStatus.h" +#include "SubscriptionMatchedStatus.h" +#include "RequestedDeadlineMissedStatus.h" +#include "SampleRejectedStatus.h" +#include "LivelinessChangedStatus.h" +#include "RequestedIncompatibleQosStatus.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_SubscriberListener_i::RTI_SubscriberListener_i (::DDS::SubscriberListener_ptr p) + : impl_ ( ::DDS::SubscriberListener::_duplicate (p)) + { + CIAO_TRACE ("RTI_SubscriberListener_i::RTI_SubscriberListener_i"); + } + + // Implementation skeleton destructor + RTI_SubscriberListener_i::~RTI_SubscriberListener_i (void) + { + CIAO_TRACE ("RTI_SubscriberListener_i::~RTI_SubscriberListener_i"); + } + + void + RTI_SubscriberListener_i::on_data_on_readers ( + ::DDSSubscriber* the_subscriber) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_data_on_readers"); + + ::DDS::Subscriber_var sub = new RTI_Subscriber_i (); + RTI_Subscriber_i *s = dynamic_cast < RTI_Subscriber_i *> (sub.in ()); + s->set_impl (the_subscriber); + this->impl_->on_data_on_readers (sub.in ()); + the_subscriber->notify_datareaders (); + } + + void + RTI_SubscriberListener_i::on_requested_deadline_missed ( + ::DDSDataReader* the_reader, + const ::DDS_RequestedDeadlineMissedStatus & status) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_requested_deadline_missed"); + + ::DDS::RequestedDeadlineMissedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + + this->impl_->on_requested_deadline_missed (dds_reader.in (), ddsstatus); + } + + void + RTI_SubscriberListener_i::on_requested_incompatible_qos ( + ::DDSDataReader* the_reader, + const ::DDS_RequestedIncompatibleQosStatus & status) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_requested_incompatible_qos"); + + ::DDS::RequestedIncompatibleQosStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_requested_incompatible_qos (dds_reader.in (), ddsstatus); + } + + void + RTI_SubscriberListener_i::on_sample_rejected ( + ::DDSDataReader* the_reader, + const ::DDS_SampleRejectedStatus & status) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_sample_rejected"); + + ::DDS::SampleRejectedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_sample_rejected (dds_reader.in (), ddsstatus); + } + + void + RTI_SubscriberListener_i::on_liveliness_changed ( + ::DDSDataReader* the_reader, + const ::DDS_LivelinessChangedStatus & status) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_liveliness_changed"); + + ::DDS::LivelinessChangedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_liveliness_changed (dds_reader.in (), ddsstatus); + } + + void + RTI_SubscriberListener_i::on_data_available ( + ::DDSDataReader* the_reader) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_data_available"); + + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_data_available (dds_reader.in ()); + } + + void + RTI_SubscriberListener_i::on_subscription_matched ( + ::DDSDataReader* the_reader, + const ::DDS_SubscriptionMatchedStatus & status) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_subscription_matched"); + + ::DDS::SubscriptionMatchedStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_subscription_matched (dds_reader.in (), ddsstatus); + } + + void + RTI_SubscriberListener_i::on_sample_lost ( + ::DDSDataReader* the_reader, + const ::DDS_SampleLostStatus & status) + { + CIAO_TRACE ("RTI_SubscriberListener_i::on_sample_lost"); + + ::DDS::SampleLostStatus ddsstatus; + ddsstatus <<= status; + ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (); + RTI_DataReader_i *rti_dr = dynamic_cast < RTI_DataReader_i *>(dds_reader.in ()); + rti_dr->set_impl (the_reader); + this->impl_->on_sample_lost (dds_reader.in (), ddsstatus); + } + + ::DDS::SubscriberListener_ptr + RTI_SubscriberListener_i::get_subscriber_listener (void) + { + return ::DDS::SubscriberListener::_duplicate (this->impl_.in ()); + } + } + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h new file mode 100644 index 00000000000..d645deb217e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h @@ -0,0 +1,83 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_SUBSCRIBERLISTENER_H +#define CIAO_RTI_SUBSCRIBERLISTENER_H + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_SubscriberListener_i : + public virtual ::DDSSubscriberListener + { + public: + // Constructor + RTI_SubscriberListener_i ( ::DDS::SubscriberListener_ptr s); + + // Destructor + virtual ~RTI_SubscriberListener_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDSDataReader* the_reader, + const ::DDS_RequestedDeadlineMissedStatus & status); + + virtual void + on_requested_incompatible_qos ( + ::DDSDataReader* the_reader, + const ::DDS_RequestedIncompatibleQosStatus & status); + + virtual void + on_sample_rejected ( + ::DDSDataReader* the_reader, + const ::DDS_SampleRejectedStatus & status); + + virtual void + on_liveliness_changed ( + ::DDSDataReader* the_reader, + const ::DDS_LivelinessChangedStatus & status); + + virtual void + on_data_available ( + ::DDSDataReader* the_reader); + + virtual void + on_subscription_matched ( + ::DDSDataReader* the_reader, + const ::DDS_SubscriptionMatchedStatus & status); + + virtual void + on_sample_lost ( + ::DDSDataReader* the_reader, + const ::DDS_SampleLostStatus & status); + + virtual void + on_data_on_readers ( + ::DDSSubscriber* the_subscriber); + + ::DDS::SubscriberListener_ptr get_subscriber_listener (void); + private: + ::DDS::SubscriberListener_var impl_; + }; + } + } +} + +#endif + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp new file mode 100644 index 00000000000..cb4480cea37 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp @@ -0,0 +1,174 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +template +CIAO::DDS4CCM::SubscriberListener_T::SubscriberListener_T ( + typename CCM_TYPE::context_type::_ptr_type context, + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) + : context_ (CCM_TYPE::context_type::_duplicate (context)), + error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::SubscriberListener_T"); +} + +template +CIAO::DDS4CCM::SubscriberListener_T::~SubscriberListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::~SubscriberListener_T"); +} + +template +void +CIAO::DDS4CCM::SubscriberListener_T::on_requested_incompatible_qos ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedIncompatibleQosStatus & status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_requested_incompatible_qos"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_requested_incompatible_qos (the_reader, status); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::SubscriberListener_T::on_liveliness_changed( + ::DDS::DataReader* reader, + const ::DDS::LivelinessChangedStatus& /*status*/) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_liveliness_changed"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_unexpected_status (reader, ::DDS::LIVELINESS_CHANGED_STATUS); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("SubscriberListener_T::on_liveliness_changed: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_liveliness_changed: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::SubscriberListener_T::on_sample_rejected( + ::DDS::DataReader* reader, + const ::DDS::SampleRejectedStatus& status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_sample_rejected"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_sample_rejected (reader, status); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("SubscriberListener_T::on_sample_rejected: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_sample_rejected: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::SubscriberListener_T::on_subscription_matched( + ::DDS::DataReader* reader, + const ::DDS::SubscriptionMatchedStatus& /*status*/) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_subscription_matched"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_unexpected_status (reader, ::DDS::SUBSCRIPTION_MATCHED_STATUS); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("SubscriberListener_T::on_subscription_matched: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_subscription_matched: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +void +CIAO::DDS4CCM::SubscriberListener_T::on_data_on_readers( + ::DDS::Subscriber* sub) +{ + CIAO_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_data_on_readers"); + + try + { + if (!CORBA::is_nil (this->error_listener_)) + { + this->error_listener_->on_unexpected_status (sub, ::DDS::DATA_ON_READERS_STATUS); + } + else + { + CIAO_DEBUG (6, (LM_DEBUG, + ACE_TEXT ("SubscriberListener_T::on_data_on_readers: ") + ACE_TEXT ("No error listener connected\n"))); + } + } + catch (...) + { + CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_data_on_readers: ") + ACE_TEXT ("DDS Exception caught\n"))); + } +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::SubscriberListener_T::get_mask (void) +{ + return DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS | + DDS_SAMPLE_REJECTED_STATUS | + DDS_LIVELINESS_CHANGED_STATUS | + DDS_SUBSCRIPTION_MATCHED_STATUS | + DDS_DATA_ON_READERS_STATUS; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h new file mode 100644 index 00000000000..eed5184414e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h @@ -0,0 +1,76 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS_SUBSCRIBERLISTENER_T_H_ +#define DDS_SUBSCRIBERLISTENER_T_H_ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + template + class SubscriberListener_T : + public ::DDS::CCM_SubscriberListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + SubscriberListener_T ( + typename CCM_TYPE::context_type::_ptr_type context, + ::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + /// Destructor + virtual ~SubscriberListener_T (void); + + virtual void on_requested_incompatible_qos ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedIncompatibleQosStatus & status); + + virtual void on_liveliness_changed( + ::DDS::DataReader* reader, + const ::DDS::LivelinessChangedStatus& status); + + virtual void on_sample_rejected( + ::DDS::DataReader* reader, + const ::DDS::SampleRejectedStatus& status); + + virtual void on_subscription_matched( + ::DDS::DataReader* reader, + const ::DDS::SubscriptionMatchedStatus& status); + + virtual void on_data_on_readers( + ::DDS::Subscriber* subscriber); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr , + const ::DDS::RequestedDeadlineMissedStatus & ) {} + virtual void + on_data_available ( + ::DDS::DataReader_ptr ) {} + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr , + const ::DDS::SampleLostStatus & ) {} + + static ::DDS::StatusMask get_mask (void); + + private: + typename CCM_TYPE::context_type::_var_type context_; + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } +} + +#include "dds4ccm/impl/ndds/SubscriberListener_T.cpp" + +#endif /* DDS_SUBSCRIBERLISTENER_T_H_ */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberQos.h new file mode 100644 index 00000000000..866e0e2d3ab --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberQos.h @@ -0,0 +1,50 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_SUBSCRIBERQOS_H +#define CIAO_RTI_SUBSCRIBERQOS_H + +#include "EntityFactoryQosPolicy.h" + +inline void +operator<<= (::DDS::SubscriberQos &ddsqos, const ::DDS_SubscriberQos & qos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator<<= (::DDS_SubscriberQos &ddsqos, const ::DDS::SubscriberQos & qos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS_SubscriberQos &qos, ::DDS::SubscriberQos & ddsqos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +inline void +operator>>= (const ::DDS::SubscriberQos &qos, ::DDS_SubscriberQos & ddsqos) +{ + ddsqos.presentation <<= qos.presentation; + ddsqos.partition <<= qos.partition; + ddsqos.group_data <<= qos.group_data; + ddsqos.entity_factory <<= qos.entity_factory; +} + +#endif /* CIAO_RTI_SUBSCRIBERQOS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h new file mode 100644 index 00000000000..0bfbfdbab4f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h @@ -0,0 +1,56 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_SUBSCRIPTIONMATCHEDSTATUS_H +#define CIAO_RTI_SUBSCRIPTIONMATCHEDSTATUS_H + +#include "InstanceHandle_t.h" + +inline void +operator<<= (::DDS::SubscriptionMatchedStatus &ddsstatus, const ::DDS_SubscriptionMatchedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +inline void +operator<<= (::DDS_SubscriptionMatchedStatus &ddsstatus, const ::DDS::SubscriptionMatchedStatus & status) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +inline void +operator>>= (const ::DDS_SubscriptionMatchedStatus &status, ::DDS::SubscriptionMatchedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +inline void +operator>>= (const ::DDS::SubscriptionMatchedStatus &status, ::DDS_SubscriptionMatchedStatus & ddsstatus) +{ + ddsstatus.total_count = status.total_count; + ddsstatus.total_count_change = status.total_count_change; + ddsstatus.current_count = status.current_count; + ddsstatus.current_count_change = status.current_count_change; + ddsstatus.last_publication_handle <<= status.last_publication_handle; +} + +#endif /* CIAO_RTI_SUBSCRIPTIONMATCHEDSTATUS_H */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TimeBasedFilterQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TimeBasedFilterQosPolicy.h new file mode 100644 index 00000000000..0e4bac3fb77 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TimeBasedFilterQosPolicy.h @@ -0,0 +1,38 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TIMEBASEDFILTERQOSPOLICY_H +#define CIAO_RTI_TIMEBASEDFILTERQOSPOLICY_H + +#include "Duration_t.h" + +inline void +operator<<= (::DDS::TimeBasedFilterQosPolicy &ddsqos, const ::DDS_TimeBasedFilterQosPolicy & qos) +{ + ddsqos.minimum_separation <<= qos.minimum_separation; +} + +inline void +operator<<= (::DDS_TimeBasedFilterQosPolicy &ddsqos, const ::DDS::TimeBasedFilterQosPolicy & qos) +{ + ddsqos.minimum_separation <<= qos.minimum_separation; +} + +inline void +operator>>= (const ::DDS_TimeBasedFilterQosPolicy &qos, ::DDS::TimeBasedFilterQosPolicy & ddsqos) +{ + ddsqos.minimum_separation <<= qos.minimum_separation; +} + +inline void +operator>>= (const ::DDS::TimeBasedFilterQosPolicy &qos, ::DDS_TimeBasedFilterQosPolicy & ddsqos) +{ + ddsqos.minimum_separation <<= qos.minimum_separation; +} + +#endif /* CIAO_RTI_TIMEBASEDFILTERQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h new file mode 100644 index 00000000000..e1e7145c016 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h @@ -0,0 +1,35 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TIME_T_H +#define CIAO_RTI_TIME_T_H + +inline void +operator<<= (::DDS::Time_t &ddstime, const ::DDS_Time_t & time) +{ + ddstime.sec = time.sec; + ddstime.nanosec = time.nanosec; +} + +inline void +operator<<= (::DDS_Time_t &ddstime, const ::DDS::Time_t & time) +{ + ddstime.sec = time.sec; + ddstime.nanosec = time.nanosec; +} + +inline void +operator>>= (const ::DDS_Time_t &time, ::DDS::Time_t & ddstime) +{ + ddstime.sec = time.sec; + ddstime.nanosec = time.nanosec; +} + +#endif /* CIAO_RTI_TIME_T_H */ + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp new file mode 100644 index 00000000000..28e2a268c8c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp @@ -0,0 +1,144 @@ +// $Id$ + +#include "Topic.h" +#include "StatusCondition.h" +#include "InstanceHandle_t.h" +#include "InconsistentTopicStatus.h" +#include "TopicQos.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_Topic_i::RTI_Topic_i (void) + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_Topic_i::~RTI_Topic_i (void) + { + } + + ::DDS::ReturnCode_t + RTI_Topic_i::set_qos (const ::DDS::TopicQos &qos) + { + ::DDS_TopicQos ddsqos; + ddsqos <<= qos; + return this->impl ()->set_qos (ddsqos); + } + + ::DDS::ReturnCode_t + RTI_Topic_i::get_qos (::DDS::TopicQos &qos) + { + ::DDS_TopicQos ddsqos; + ::DDS_ReturnCode_t const retval = this->impl ()->get_qos (ddsqos); + qos <<= ddsqos; + return retval; + } + + ::DDS::ReturnCode_t + RTI_Topic_i::set_listener (::DDS::TopicListener_ptr /*a_listener*/, + ::DDS::StatusMask /*mask*/) + { + //RTI_TopicListener_i* rti_impl_list = new RTI_TopicListener_i (a_listener); + //return this->impl ()->set_listener (rti_impl_list, mask); + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::TopicListener_ptr + RTI_Topic_i::get_listener (void) + { + throw CORBA::NO_IMPLEMENT (); + } + + ::DDS::ReturnCode_t + RTI_Topic_i::get_inconsistent_topic_status (::DDS::InconsistentTopicStatus & a_status) + { + DDS_InconsistentTopicStatus ddsstatus; + ddsstatus <<= a_status; + return this->impl ()->get_inconsistent_topic_status (ddsstatus); + } + + ::DDS::ReturnCode_t + RTI_Topic_i::enable (void) + { + return this->impl ()->enable (); + } + + ::DDS::StatusCondition_ptr + RTI_Topic_i::get_statuscondition (void) + { + DDSStatusCondition* sc = this->impl ()->get_statuscondition (); + ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (); + RTI_StatusCondition_i *rti_sc = dynamic_cast < RTI_StatusCondition_i *> (retval.in ()); + rti_sc->set_impl (sc); + return retval._retn (); + } + + ::DDS::StatusMask + RTI_Topic_i::get_status_changes (void) + { + return this->impl ()->get_status_changes (); + } + + ::DDS::InstanceHandle_t + RTI_Topic_i::get_instance_handle (void) + { + ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle (); + ::DDS::InstanceHandle_t handle; + handle <<= rtihandle; + return handle; + } + + char * + RTI_Topic_i::get_type_name (void) + { + return CORBA::string_dup (this->impl ()->get_type_name ()); + } + + char * + RTI_Topic_i::get_name (void) + { + return CORBA::string_dup (this->impl ()->get_name ()); + } + + ::DDS::DomainParticipant_ptr + RTI_Topic_i::get_participant (void) + { + DDSDomainParticipant* p = this->impl ()->get_participant (); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (p); + return retval._retn (); + } + + DDSTopic * + RTI_Topic_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_Topic_i::set_impl (DDSTopic * dw) + { + this->impl_ = dw; + } + + DDSTopic * + RTI_Topic_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h new file mode 100644 index 00000000000..1c8555e2834 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h @@ -0,0 +1,85 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_NDDS_TOPIC_H +#define CIAO_NDDS_TOPIC_H + +#include "DomainParticipant.h" + +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_Topic_i : + public virtual ::DDS::CCM_Topic, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_Topic_i (void); + + // Destructor + virtual ~RTI_Topic_i (void); + + virtual + ::DDS::ReturnCode_t set_qos (const ::DDS::TopicQos & qos); + + virtual + ::DDS::ReturnCode_t get_qos (::DDS::TopicQos & qos); + + virtual + ::DDS::ReturnCode_t set_listener (::DDS::TopicListener_ptr a_listener, + ::DDS::StatusMask mask); + + virtual + ::DDS::TopicListener_ptr get_listener (void); + + virtual + ::DDS::ReturnCode_t get_inconsistent_topic_status (::DDS::InconsistentTopicStatus & a_status); + + virtual + ::DDS::ReturnCode_t enable (void); + + virtual + ::DDS::StatusCondition_ptr get_statuscondition (void); + + virtual + ::DDS::StatusMask get_status_changes (void); + + virtual + ::DDS::InstanceHandle_t get_instance_handle (void); + + virtual + char * get_type_name (void); + + virtual + char * get_name (void); + + virtual + ::DDS::DomainParticipant_ptr get_participant (void); + + DDSTopic * get_impl (void); + + void set_impl (DDSTopic * dw); + + private: + DDSTopic * impl_; + + DDSTopic * impl (void); + }; + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDataQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDataQosPolicy.h new file mode 100644 index 00000000000..8d71f724e71 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDataQosPolicy.h @@ -0,0 +1,45 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TOPICDATAQOSPOLICY_H +#define CIAO_RTI_TOPICDATAQOSPOLICY_H + +inline void +operator<<= (::DDS::TopicDataQosPolicy &ddsqos, const ::DDS_TopicDataQosPolicy & qos) +{ + // @todo + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value = qos.value; +} + +inline void +operator<<= (::DDS_TopicDataQosPolicy &ddsqos, const ::DDS::TopicDataQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value = qos.value; +} + +inline void +operator>>= (const ::DDS_TopicDataQosPolicy &qos, ::DDS::TopicDataQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value = qos.value; +} + +inline void +operator>>= (const ::DDS::TopicDataQosPolicy &qos, ::DDS_TopicDataQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value = qos.value; +} + +#endif /* CIAO_RTI_TOPICDATAQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp new file mode 100644 index 00000000000..136fbd65ab4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp @@ -0,0 +1,74 @@ +// $Id$ + +#include "TopicDescription.h" +#include "DomainParticipant.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + // Implementation skeleton constructor + RTI_TopicDescription_i::RTI_TopicDescription_i (void) + : impl_ (0) + { + } + + // Implementation skeleton destructor + RTI_TopicDescription_i::~RTI_TopicDescription_i (void) + { + } + + char * + RTI_TopicDescription_i::get_type_name (void) + { + return CORBA::string_dup (this->impl ()->get_type_name ()); + } + + char * + RTI_TopicDescription_i::get_name (void) + { + return CORBA::string_dup (this->impl ()->get_name ()); + } + + ::DDS::DomainParticipant_ptr + RTI_TopicDescription_i::get_participant (void) + { + DDSDomainParticipant* p = this->impl ()->get_participant (); + ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (); + RTI_DomainParticipant_i *rti_dp = dynamic_cast < RTI_DomainParticipant_i *> (retval.in ()); + rti_dp->set_impl (p); + return retval._retn (); + } + + DDSTopicDescription * + RTI_TopicDescription_i::get_impl (void) + { + return this->impl_; + } + + void + RTI_TopicDescription_i::set_impl (DDSTopicDescription * rc) + { + this->impl_ = rc; + } + + DDSTopicDescription * + RTI_TopicDescription_i::impl (void) + { + if (!this->impl_) + { + throw ::CORBA::BAD_INV_ORDER (); + } + return this->impl_; + } + + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h new file mode 100644 index 00000000000..314b59416fa --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h @@ -0,0 +1,62 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TOPICDESCRIPTION_H +#define CIAO_RTI_TOPICDESCRIPTION_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsEC.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" +#include "tao/LocalObject.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_TopicDescription_i : + public virtual ::DDS::CCM_TopicDescription, + public virtual ::CORBA::LocalObject + { + public: + // Constructor + RTI_TopicDescription_i (void); + + // Destructor + virtual ~RTI_TopicDescription_i (void); + + virtual char * + get_type_name (void); + + virtual char * + get_name (void); + + virtual ::DDS::DomainParticipant_ptr + get_participant (void); + + DDSTopicDescription * get_impl (void); + + void set_impl (DDSTopicDescription * rc); + + private: + DDSTopicDescription * impl_; + + DDSTopicDescription * impl (void); + }; + } + } +} + +#endif /* CIAO_RTI_TOPICDESCRIPTION_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp new file mode 100644 index 00000000000..6e9af8c839b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.cpp @@ -0,0 +1,47 @@ +// $Id$ + +#include "TopicListener.h" +#include "Topic.h" +#include "InconsistentTopicStatus.h" + +#include "dds4ccm/idl/dds4ccm_BaseC.h" + +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + RTI_TopicListener_i::RTI_TopicListener_i (::DDS::TopicListener_ptr p) + : impl_ (::DDS::TopicListener::_duplicate (p)) + { + } + + RTI_TopicListener_i::~RTI_TopicListener_i (void) + { + } + + void + RTI_TopicListener_i::on_inconsistent_topic ( + ::DDSTopic* the_topic, + const ::DDS_InconsistentTopicStatus & status) + { + ::DDS::InconsistentTopicStatus ddsstatus; + ddsstatus <<= status; + ::DDS::Topic_var dds_topic = new RTI_Topic_i (); + RTI_Topic_i *tp = dynamic_cast < RTI_Topic_i *> (dds_topic.in ()); + tp->set_impl (the_topic); + this->impl_->on_inconsistent_topic (dds_topic.in (), ddsstatus); + } + + ::DDS::TopicListener_ptr + RTI_TopicListener_i::get_topiclistener (void) + { + return ::DDS::TopicListener::_duplicate (this->impl_.in ()); + } + } + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.h new file mode 100644 index 00000000000..bcad3854c4f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener.h @@ -0,0 +1,46 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TOPICLISTENER_H +#define CIAO_RTI_TOPICLISTENER_H + +#include "tao/LocalObject.h" + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "dds4ccm_ndds_impl_export.h" + +#include "ndds/ndds_cpp.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + class DDS4CCM_NDDS_IMPL_Export RTI_TopicListener_i : + public virtual ::DDSTopicListener + { + public: + // Constructor + RTI_TopicListener_i (::DDS::TopicListener_ptr p); + + // Destructor + virtual ~RTI_TopicListener_i (void); + + virtual void on_inconsistent_topic(::DDSTopic* topic, + const ::DDS_InconsistentTopicStatus& status); + + ::DDS::TopicListener_ptr get_topiclistener (void); + private: + ::DDS::TopicListener_var impl_; + }; + } + } +} + +#endif /* CIAO_RTI_TOPICLISTENER_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp new file mode 100644 index 00000000000..f8728c70457 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp @@ -0,0 +1,43 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/Topic.h" +#include "ciao/Logger/Log_Macros.h" + +template +CIAO::DDS4CCM::TopicListener_T::TopicListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) : + error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::TopicListener_T::TopicListener_T"); +} + +template +CIAO::DDS4CCM::TopicListener_T::~TopicListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::TopicListener_T::~TopicListener_T"); +} + +template +void +CIAO::DDS4CCM::TopicListener_T::on_inconsistent_topic ( + ::DDS::Topic_ptr the_topic, + const ::DDS::InconsistentTopicStatus & status) +{ + CIAO_TRACE ("CIAO::DDS4CCM::TopicListener_T::on_inconsistent_topic"); + + if (!CORBA::is_nil (this->error_listener_.in ())) + { + this->error_listener_->on_inconsistent_topic (the_topic, status); + } +} + +template +::DDS::StatusMask +CIAO::DDS4CCM::TopicListener_T::get_mask (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::TopicListener_T::get_mask"); + + return DDS_INCONSISTENT_TOPIC_STATUS; +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h new file mode 100644 index 00000000000..32b15f44b9c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h @@ -0,0 +1,40 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + template + class TopicListener_T : + public ::DDS::TopicListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + TopicListener_T (::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + /// Destructor + virtual ~TopicListener_T (void); + + virtual void on_inconsistent_topic ( + ::DDS::Topic_ptr the_topic, + const ::DDS::InconsistentTopicStatus & status); + + static ::DDS::StatusMask get_mask (void); + + private: + CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } +} + +#include "dds4ccm/impl/ndds/TopicListener_T.cpp" diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicQos.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicQos.h new file mode 100644 index 00000000000..661fd33da86 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicQos.h @@ -0,0 +1,98 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TOPICQOS_H +#define CIAO_RTI_TOPICQOS_H + +#include "TopicDataQosPolicy.h" +#include "DurabilityQosPolicy.h" +#include "DurabilityServiceQosPolicy.h" +#include "DeadlineQosPolicy.h" +#include "LatencyBudgetQosPolicy.h" +#include "LivelinessQosPolicy.h" +#include "ReliabilityQosPolicy.h" +#include "DestinationOrderQosPolicy.h" +#include "HistoryQosPolicy.h" +#include "ResourceLimitsQosPolicy.h" +#include "TransportPriorityQosPolicy.h" +#include "LifespanQosPolicy.h" +#include "OwnershipQosPolicy.h" + +inline void +operator<<= (::DDS::TopicQos &ddsqos, const ::DDS_TopicQos & qos) +{ + ddsqos.topic_data <<= qos.topic_data; + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.ownership <<= qos.ownership; +} + +inline void +operator<<= (::DDS_TopicQos &ddsqos, const ::DDS::TopicQos & qos) +{ + ddsqos.topic_data <<= qos.topic_data; + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.ownership <<= qos.ownership; +} + +inline void +operator>>= (const ::DDS_TopicQos &qos, ::DDS::TopicQos & ddsqos) +{ + ddsqos.topic_data <<= qos.topic_data; + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.ownership <<= qos.ownership; +} + +inline void +operator>>= (const ::DDS::TopicQos &qos, ::DDS_TopicQos & ddsqos) +{ + ddsqos.topic_data <<= qos.topic_data; + ddsqos.durability <<= qos.durability; + ddsqos.durability_service <<= qos.durability_service; + ddsqos.deadline <<= qos.deadline; + ddsqos.latency_budget <<= qos.latency_budget; + ddsqos.liveliness <<= qos.liveliness; + ddsqos.reliability <<= qos.reliability; + ddsqos.destination_order <<= qos.destination_order; + ddsqos.history <<= qos.history; + ddsqos.resource_limits <<= qos.resource_limits; + ddsqos.transport_priority <<= qos.transport_priority; + ddsqos.lifespan <<= qos.lifespan; + ddsqos.ownership <<= qos.ownership; +} + +#endif /* CIAO_RTI_TOPICQOS_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TransportPriorityQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TransportPriorityQosPolicy.h new file mode 100644 index 00000000000..a3c25147030 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TransportPriorityQosPolicy.h @@ -0,0 +1,36 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_TRANSPORTPRIOTITYQOSPOLICY_H +#define CIAO_RTI_TRANSPORTPRIOTITYQOSPOLICY_H + +inline void +operator<<= (::DDS::TransportPriorityQosPolicy &ddsqos, const ::DDS_TransportPriorityQosPolicy & qos) +{ + ddsqos.value <<= qos.value; +} + +inline void +operator<<= (::DDS_TransportPriorityQosPolicy &ddsqos, const ::DDS::TransportPriorityQosPolicy & qos) +{ + ddsqos.value <<= qos.value; +} + +inline void +operator>>= (const ::DDS_TransportPriorityQosPolicy &qos, ::DDS::TransportPriorityQosPolicy & ddsqos) +{ + ddsqos.value <<= qos.value; +} + +inline void +operator>>= (const ::DDS::TransportPriorityQosPolicy &qos, ::DDS_TransportPriorityQosPolicy & ddsqos) +{ + ddsqos.value <<= qos.value; +} + +#endif /* CIAO_RTI_TRANSPORTPRIOTITYQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp new file mode 100644 index 00000000000..8788aadc312 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp @@ -0,0 +1,304 @@ +// $Id$ + +#include "dds4ccm/impl/ndds/DataWriter.h" +#include "dds4ccm/impl/ndds/Utils.h" +#include "dds4ccm/impl/ndds/Coherent_Changes_Guard.h" +#include "ciao/Logger/Log_Macros.h" + +template +CIAO::DDS4CCM::RTI::Updater_T::Updater_T (void) + : InstanceHandleManager_T (), + is_global_scope_ (false), + is_coherent_write_ (false) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::Updater_T"); +} + +template +CIAO::DDS4CCM::RTI::Updater_T::~Updater_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::~Updater_T"); +} + +template +bool +CIAO::DDS4CCM::RTI::Updater_T::is_global_scope () +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::is_global_scope"); + return this->is_global_scope_; +} + +template +bool +CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write () +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write"); + return this->is_coherent_write_; +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write (bool value) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write"); + this->is_coherent_write_ = value; +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::create_i ( + const typename DDS_TYPE::value_type & an_instance, + ::CCM_DDS::DataNumber_t index) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::create_i"); + DDS_InstanceHandle_t const hnd = this->impl ()->register_instance (an_instance); + if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::DDS4CCM::RTI::Updater_T::create_i: ") + ACE_TEXT ("Unable to unregister instance, nil handle.\n"))); + throw CCM_DDS::InternalError (::DDS_RETCODE_ERROR, index); + } + ::DDS_ReturnCode_t const result = this->impl ()->write (an_instance, hnd); + if (result != DDS_RETCODE_OK) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::DDS4CCM::RTI::Updater_T::create_i: ") + ACE_TEXT ("Unable to update data, error %C.\n"), + translate_retcode (result))); + throw CCM_DDS::InternalError (result, index); + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::create_one ( + const typename DDS_TYPE::value_type & an_instance) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::create_one"); + DDS_InstanceHandle_t const hnd = this->impl ()->lookup_instance (an_instance); + if (!DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + throw CCM_DDS::AlreadyCreated (0); + } + + this->create_i (an_instance, 0); +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::update_i ( + const typename DDS_TYPE::value_type & an_instance, + const ::DDS::InstanceHandle_t & instance_handle, + ::CCM_DDS::DataNumber_t index) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::update_i"); + DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL; + hnd <<= instance_handle; + ::DDS_ReturnCode_t const result = this->impl ()->write (an_instance, hnd); + if (result != DDS_RETCODE_OK) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::DDS4CCM::RTI::Updater_T::update_i: ") + ACE_TEXT ("Unable to update data, error %C.\n"), + translate_retcode (result))); + throw CCM_DDS::InternalError (result, index); + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::update_one ( + const typename DDS_TYPE::value_type & an_instance, + const ::DDS::InstanceHandle_t & instance_handle) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::update_one"); + DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL; + hnd <<= instance_handle; + if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + hnd = this->impl ()->lookup_instance (an_instance); + } + else + { + // Check explicitly if the instance handle matches the instance, this + // is not checked by RTI DDS + DDS_InstanceHandle_t const instance_handle = + this->impl ()->lookup_instance (an_instance); + + if (!DDS_InstanceHandle_equals (&hnd, &instance_handle)) + { + throw CCM_DDS::InternalError (::DDS_RETCODE_BAD_PARAMETER, 0); + } + } + if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + throw CCM_DDS::NonExistent (0); + } + this->update_i (an_instance, instance_handle, 0); +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::delete_i ( + const typename DDS_TYPE::value_type & an_instance, + const ::DDS::InstanceHandle_t & instance_handle, + ::CCM_DDS::DataNumber_t index) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::delete_i"); + DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL; + hnd <<= instance_handle; + ::DDS_ReturnCode_t result = this->impl ()->dispose (an_instance, hnd); + if (result != DDS_RETCODE_OK) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::DDS4CCM::RTI::Updater_T::delete_i: ") + ACE_TEXT ("Unable to dispose instance, error %C.\n"), + translate_retcode (result))); + throw CCM_DDS::InternalError (result, index); + } + result = + this->impl ()->unregister_instance (an_instance, hnd); + if (result != DDS_RETCODE_OK) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::DDS4CCM::RTI::Updater_T::delete_i: ") + ACE_TEXT ("Unable to unregister instance, error %C.\n"), + translate_retcode (result))); + throw CCM_DDS::InternalError (result, index); + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::delete_one ( + const typename DDS_TYPE::value_type & an_instance, + const ::DDS::InstanceHandle_t & instance_handle) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::delete_one"); + DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL; + hnd <<= instance_handle; + if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + hnd = this->impl ()->lookup_instance (an_instance); + } + else + { + // Check explicitly if the instance handle matches the instance, this + // is not checked by RTI DDS + DDS_InstanceHandle_t const instance_handle = + this->impl ()->lookup_instance (an_instance); + + if (!DDS_InstanceHandle_equals (&hnd, &instance_handle)) + { + throw CCM_DDS::InternalError (::DDS_RETCODE_BAD_PARAMETER, 0); + } + } + if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + throw CCM_DDS::NonExistent (0); + } + this->delete_i (an_instance, instance_handle, 0); +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::create_many ( + const typename CCM_TYPE::seq_type& data) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::create_many"); + + // Check for existance of instances + this->check_already_created (data); + + Coherent_Changes_Guard guard (this->impl ()->get_publisher(), + this->is_coherent_write_); + + for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++) + { + this->create_i (data[index], index); + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::check_existent ( + const typename CCM_TYPE::seq_type& data) +{ + ::CCM_DDS::NonExistent exception; + for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++) + { + DDS_InstanceHandle_t const hnd = this->impl ()->lookup_instance (data[index]); + if (::DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + CORBA::ULong const length = exception.indexes.length (); + exception.indexes.length (length + 1); + exception.indexes[length] = index; + } + } + + if (exception.indexes.length () > 0) + { + throw exception; + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::check_already_created ( + const typename CCM_TYPE::seq_type& data) +{ + ::CCM_DDS::AlreadyCreated exception; + for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++) + { + DDS_InstanceHandle_t const hnd = this->impl ()->lookup_instance (data[index]); + if (!::DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL)) + { + CORBA::ULong const length = exception.indexes.length (); + exception.indexes.length (length + 1); + exception.indexes[length] = index; + } + } + + if (exception.indexes.length () > 0) + { + throw exception; + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::update_many ( + const typename CCM_TYPE::seq_type& data) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::update_many"); + + // Check for existance of instances + this->check_existent (data); + + Coherent_Changes_Guard guard (this->impl ()->get_publisher(), this->is_coherent_write_); + + for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++) + { + this->update_i (data[index], ::DDS::HANDLE_NIL, index); + } +} + +template +void +CIAO::DDS4CCM::RTI::Updater_T::delete_many ( + const typename CCM_TYPE::seq_type& data) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::delete_many"); + + // Check for existance of instances + this->check_existent (data); + + Coherent_Changes_Guard guard (this->impl ()->get_publisher(), this->is_coherent_write_); + + for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++) + { + this->delete_i (data[index], ::DDS::HANDLE_NIL, index); + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h new file mode 100644 index 00000000000..130f642dd3c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h @@ -0,0 +1,89 @@ +/** + * @author Marcel Smit + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef DDS4CCM_UPDATER_H +#define DDS4CCM_UPDATER_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" +#include "InstanceHandleManager_T.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class Updater_T : + public InstanceHandleManager_T + { + public: + /// Constructor + Updater_T (void); + + /// Destructor + virtual ~Updater_T (void); + + virtual void create_one ( + const typename DDS_TYPE::value_type& an_instance); + + virtual void update_one ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle); + + virtual void delete_one ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle); + + virtual void create_many ( + const typename CCM_TYPE::seq_type& data); + + virtual void update_many ( + const typename CCM_TYPE::seq_type& data); + + virtual void delete_many ( + const typename CCM_TYPE::seq_type& data); + + virtual bool is_global_scope (); + + virtual bool is_coherent_write (); + + virtual void is_coherent_write (bool value_); + + private: + void create_i ( + const typename DDS_TYPE::value_type& an_instance, + ::CCM_DDS::DataNumber_t index); + + void update_i ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle, + ::CCM_DDS::DataNumber_t index); + + void delete_i ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle, + ::CCM_DDS::DataNumber_t index); + + void check_existent ( + const typename CCM_TYPE::seq_type& data); + + void check_already_created ( + const typename CCM_TYPE::seq_type& data); + + bool is_global_scope_; + bool is_coherent_write_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/Updater_T.cpp" + +#endif /* DDS4CCM_UPDATER_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/UserDataQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/UserDataQosPolicy.h new file mode 100644 index 00000000000..bc34253a6bf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/UserDataQosPolicy.h @@ -0,0 +1,46 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_USERDATAQOSPOLICY_H +#define CIAO_RTI_USERDATAQOSPOLICY_H + +/// @todo + +inline void +operator<<= (::DDS::UserDataQosPolicy &ddsqos, const ::DDS_UserDataQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +inline void +operator<<= (::DDS_UserDataQosPolicy &ddsqos, const ::DDS::UserDataQosPolicy & qos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +inline void +operator>>= (const ::DDS_UserDataQosPolicy &qos, ::DDS::UserDataQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +inline void +operator>>= (const ::DDS::UserDataQosPolicy &qos, ::DDS_UserDataQosPolicy & ddsqos) +{ + ACE_UNUSED_ARG (ddsqos); + ACE_UNUSED_ARG (qos); +// ddsqos.value <<= qos.value; +} + +#endif /* CIAO_RTI_USERDATAQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp new file mode 100644 index 00000000000..0f270083afb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp @@ -0,0 +1,10 @@ +// $Id$ + +#include "Utils.h" + +namespace CIAO +{ + namespace DDS4CCM + { + } +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h new file mode 100644 index 00000000000..cafec4f8dda --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h @@ -0,0 +1,74 @@ +/** + * @file Utils.h + * @author William R. Otte + * + * $Id$ + * + * Misc utility classes for NDDS. + */ + +#ifndef NDDS_UTILS_H +#define NDDS_UTILS_H + +#include "dds4ccm_ndds_impl_export.h" +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" + +namespace CIAO +{ + namespace DDS4CCM + { + inline const char * translate_retcode (::DDS::ReturnCode_t ret) + { +#define RTI_DDS_RETCODE(X) case X: return #X + switch (ret) + { + RTI_DDS_RETCODE (DDS::RETCODE_OK); + RTI_DDS_RETCODE (DDS::RETCODE_ERROR); + RTI_DDS_RETCODE (DDS::RETCODE_UNSUPPORTED); + RTI_DDS_RETCODE (DDS::RETCODE_BAD_PARAMETER); + RTI_DDS_RETCODE (DDS::RETCODE_PRECONDITION_NOT_MET); + RTI_DDS_RETCODE (DDS::RETCODE_OUT_OF_RESOURCES); + RTI_DDS_RETCODE (DDS::RETCODE_NOT_ENABLED); + RTI_DDS_RETCODE (DDS::RETCODE_IMMUTABLE_POLICY); + RTI_DDS_RETCODE (DDS::RETCODE_INCONSISTENT_POLICY); + RTI_DDS_RETCODE (DDS::RETCODE_ALREADY_DELETED); + RTI_DDS_RETCODE (DDS::RETCODE_TIMEOUT); + RTI_DDS_RETCODE (DDS::RETCODE_NO_DATA); + RTI_DDS_RETCODE (DDS::RETCODE_ILLEGAL_OPERATION); + } + return "***Unknown enum value, update RTI::translate_retcode()"; +#undef RTI_DDS_RETCODE + } + + inline const char * translate_statuskind (DDS::StatusKind ret) + { +#define RTI_DDS_RETCODE(X) case X: return #X + switch (ret) + { + RTI_DDS_RETCODE (DDS::INCONSISTENT_TOPIC_STATUS); + RTI_DDS_RETCODE (DDS::OFFERED_DEADLINE_MISSED_STATUS); + RTI_DDS_RETCODE (DDS::REQUESTED_DEADLINE_MISSED_STATUS); + RTI_DDS_RETCODE (DDS::OFFERED_INCOMPATIBLE_QOS_STATUS); + RTI_DDS_RETCODE (DDS::REQUESTED_INCOMPATIBLE_QOS_STATUS); + RTI_DDS_RETCODE (DDS::SAMPLE_LOST_STATUS); + RTI_DDS_RETCODE (DDS::SAMPLE_REJECTED_STATUS); + RTI_DDS_RETCODE (DDS::DATA_ON_READERS_STATUS); + RTI_DDS_RETCODE (DDS::DATA_AVAILABLE_STATUS); + RTI_DDS_RETCODE (DDS::LIVELINESS_LOST_STATUS); + RTI_DDS_RETCODE (DDS::LIVELINESS_CHANGED_STATUS); + RTI_DDS_RETCODE (DDS::PUBLICATION_MATCHED_STATUS); + RTI_DDS_RETCODE (DDS::SUBSCRIPTION_MATCHED_STATUS); + //RTI_DDS_RETCODE (DDS::RELIABLE_WRITER_CACHE_CHANGED_STATUS); + //RTI_DDS_RETCODE (DDS::RELIABLE_READER_ACTIVITY_CHANGED_STATUS); + //RTI_DDS_RETCODE (DDS::DATA_WRITER_CACHE_STATUS); + //RTI_DDS_RETCODE (DDS::DATA_WRITER_PROTOCOL_STATUS); + //RTI_DDS_RETCODE (DDS::DATA_READER_CACHE_STATUS); + //RTI_DDS_RETCODE (DDS::DATA_READER_PROTOCOL_STATUS); + } + return "***Unknown enum value, update RTI::translate_statuskind()"; +#undef RTI_DDS_RETCODE + } + } +} + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/WriterDataLifecycleQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/WriterDataLifecycleQosPolicy.h new file mode 100644 index 00000000000..8bf3954347d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/WriterDataLifecycleQosPolicy.h @@ -0,0 +1,36 @@ +/** + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_WRITERDATALIFECYCLEQOSPOLICY_H +#define CIAO_RTI_WRITERDATALIFECYCLEQOSPOLICY_H + +inline void +operator<<= (::DDS::WriterDataLifecycleQosPolicy &ddsqos, const ::DDS_WriterDataLifecycleQosPolicy & qos) +{ + ddsqos.autodispose_unregistered_instances = qos.autodispose_unregistered_instances; +} + +inline void +operator<<= (::DDS_WriterDataLifecycleQosPolicy &ddsqos, const ::DDS::WriterDataLifecycleQosPolicy & qos) +{ + ddsqos.autodispose_unregistered_instances = qos.autodispose_unregistered_instances; +} + +inline void +operator>>= (const ::DDS_WriterDataLifecycleQosPolicy &qos, ::DDS::WriterDataLifecycleQosPolicy & ddsqos) +{ + ddsqos.autodispose_unregistered_instances = qos.autodispose_unregistered_instances; +} + +inline void +operator>>= (const ::DDS::WriterDataLifecycleQosPolicy &qos, ::DDS_WriterDataLifecycleQosPolicy & ddsqos) +{ + ddsqos.autodispose_unregistered_instances = qos.autodispose_unregistered_instances; +} + +#endif /* CIAO_RTI_WRITERDATALIFECYCLEQOSPOLICY_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.cpp new file mode 100644 index 00000000000..419748a4ac2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.cpp @@ -0,0 +1,98 @@ +// $Id$ + +#include "dds4ccm/impl/ndds/DataWriter.h" +#include "dds4ccm/impl/ndds/Utils.h" +#include "dds4ccm/impl/ndds/Coherent_Changes_Guard.h" +#include "dds4ccm/impl/ndds/InstanceHandle_t.h" +#include "ciao/Logger/Log_Macros.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::Writer_T::Writer_T (void) + : InstanceHandleManager_T (), + is_coherent_write_ (false) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::Writer_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::Writer_T::~Writer_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::~Writer_T"); +} + +template +void +CIAO::DDS4CCM::RTI::Writer_T::write_i ( + const typename DDS_TYPE::value_type& datum, + const ::DDS::InstanceHandle_t& instance_handle, + ::CCM_DDS::DataNumber_t index) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::write_i"); + + ::DDS_InstanceHandle_t handle = ::DDS_HANDLE_NIL; + handle <<= instance_handle; + DDS_ReturnCode_t const retval = this->impl ()->write (datum, handle); + + if (retval != DDS_RETCODE_OK) + { + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write_i - " + "Write unsuccessful, received error code %C\n", + translate_retcode (retval))); + throw CCM_DDS::InternalError (retval, index); + } +} + +template +void +CIAO::DDS4CCM::RTI::Writer_T::write_one ( + const typename DDS_TYPE::value_type & an_instance, + const ::DDS::InstanceHandle_t & instance_handle) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::write_one"); + + this->write_i (an_instance, instance_handle, 0); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write_one - " + "Write successful\n")); +} + +template +void +CIAO::DDS4CCM::RTI::Writer_T::write_many ( + const typename CCM_TYPE::seq_type& instances) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::write_many"); + + Coherent_Changes_Guard guard (this->impl ()->get_publisher(), + this->is_coherent_write_); + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write_many - " + "Preparing to write to DDS\n")); + + for (typename CCM_TYPE::seq_type::size_type index = 0; + index < instances.length(); + index++) + { + this->write_i (instances[index], ::DDS::HANDLE_NIL, index); + } + + CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write_many - " + "Write successful\n")); +} + +template +::CORBA::Boolean +CIAO::DDS4CCM::RTI::Writer_T::is_coherent_write (void) +{ + return this->is_coherent_write_; +} + +template +void +CIAO::DDS4CCM::RTI::Writer_T::is_coherent_write ( + ::CORBA::Boolean value) +{ + this->is_coherent_write_ = value; +} diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.h new file mode 100644 index 00000000000..4d94259cca1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer_T.h @@ -0,0 +1,58 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef WRITER_T_H +#define WRITER_T_H + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" +#include "InstanceHandleManager_T.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class Writer_T : + public InstanceHandleManager_T + { + public: + /// Constructor + Writer_T (void); + + /// Destructor + virtual ~Writer_T (void); + + virtual void write_one ( + const typename DDS_TYPE::value_type& an_instance, + const ::DDS::InstanceHandle_t & instance_handle); + + virtual void write_many ( + const typename CCM_TYPE::seq_type& instances); + + virtual ::CORBA::Boolean is_coherent_write (void); + + virtual void is_coherent_write ( ::CORBA::Boolean value); + + private: + void write_i (const typename DDS_TYPE::value_type& datum, + const ::DDS::InstanceHandle_t& instance_handle, + ::CCM_DDS::DataNumber_t index); + + bool is_coherent_write_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/Writer_T.cpp" + +#endif /* WRITER_T_H */ diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h new file mode 100644 index 00000000000..7ca68d771eb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl DDS4CCM_NDDS_IMPL +// ------------------------------ +#ifndef DDS4CCM_NDDS_IMPL_EXPORT_H +#define DDS4CCM_NDDS_IMPL_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (DDS4CCM_NDDS_IMPL_HAS_DLL) +# define DDS4CCM_NDDS_IMPL_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && DDS4CCM_NDDS_IMPL_HAS_DLL */ + +#if !defined (DDS4CCM_NDDS_IMPL_HAS_DLL) +# define DDS4CCM_NDDS_IMPL_HAS_DLL 1 +#endif /* ! DDS4CCM_NDDS_IMPL_HAS_DLL */ + +#if defined (DDS4CCM_NDDS_IMPL_HAS_DLL) && (DDS4CCM_NDDS_IMPL_HAS_DLL == 1) +# if defined (DDS4CCM_NDDS_IMPL_BUILD_DLL) +# define DDS4CCM_NDDS_IMPL_Export ACE_Proper_Export_Flag +# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* DDS4CCM_NDDS_IMPL_BUILD_DLL */ +# define DDS4CCM_NDDS_IMPL_Export ACE_Proper_Import_Flag +# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* DDS4CCM_NDDS_IMPL_BUILD_DLL */ +#else /* DDS4CCM_NDDS_IMPL_HAS_DLL == 1 */ +# define DDS4CCM_NDDS_IMPL_Export +# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARATION(T) +# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* DDS4CCM_NDDS_IMPL_HAS_DLL == 1 */ + +// Set DDS4CCM_NDDS_IMPL_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (DDS4CCM_NDDS_IMPL_NTRACE) +# if (ACE_NTRACE == 1) +# define DDS4CCM_NDDS_IMPL_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define DDS4CCM_NDDS_IMPL_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !DDS4CCM_NDDS_IMPL_NTRACE */ + +#if (DDS4CCM_NDDS_IMPL_NTRACE == 1) +# define DDS4CCM_NDDS_IMPL_TRACE(X) +#else /* (DDS4CCM_NDDS_IMPL_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define DDS4CCM_NDDS_IMPL_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (DDS4CCM_NDDS_IMPL_NTRACE == 1) */ + +#endif /* DDS4CCM_NDDS_IMPL_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc b/modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc new file mode 100644 index 00000000000..132b0e41225 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc @@ -0,0 +1,39 @@ +// $Id$ + +project(CIAO_DDS4CCM_NDDS_Impl) : dds4ccm_skel, taolib, ciao_output, nddslib, ccm_stub, ciao_logger { + + after += DDS4CCM_lem_stub + libs += DDS4CCM_lem_stub + + dynamicflags = DDS4CCM_NDDS_IMPL_BUILD_DLL + macros += BUILDING_NDDS_LIB + Header_Files { + *.h + } + + Template_Files { + *_T.cpp + } + + Source_Files { + Coherent_Changes_Guard.cpp + DataWriter.cpp + DataWriterListener.cpp + DataReader.cpp + DataReaderListener.cpp + DomainParticipant.cpp + DomainParticipantListener.cpp + DomainParticipantFactory.cpp + Topic.cpp + TopicDescription.cpp + Publisher.cpp + PublisherListener.cpp + Subscriber.cpp + SubscriberListener.cpp + StatusCondition.cpp + ReadCondition.cpp + QueryCondition.cpp + Utils.cpp + TopicListener.cpp + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl new file mode 100644 index 00000000000..9bf58ce75b3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file CSL_DeadlineTest_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef CSL_DEADLINETEST_BASE_IDL +#define CSL_DEADLINETEST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc new file mode 100644 index 00000000000..2f4a549d1ae --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n CSL_DeadlineTest_Base" + +project(DDS_CSL_DeadlineTest_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=CSL_DEADLINETEST_BASE_STUB_Export \ + -Wb,stub_export_include=CSL_DeadlineTest_Base_stub_export.h + + IDL_Files { + CSL_DeadlineTest_Base.idl + } +} + +project(DDS_CSL_DeadlineTest_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_CSL_DeadlineTest_Base_idl_gen + ndds_ts_flags += -corba CSL_DeadlineTest_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + CSL_DeadlineTest_Base.idl + } +} + +project(DDS_CSL_DeadlineTest_Base_NDDS_TS) : nddslib, taolib { + after += DDS_CSL_DeadlineTest_Base_ndds_ts_gen DDS_CSL_DeadlineTest_Base_stub + libs += DDS_CSL_DeadlineTest_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_DeadlineTest_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + CSL_DeadlineTest_Base.cxx + CSL_DeadlineTest_BasePlugin.cxx + CSL_DeadlineTest_BaseSupport.cxx + } + + Header_Files { + CSL_DeadlineTest_Base.h + CSL_DeadlineTest_BasePlugin.h + CSL_DeadlineTest_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_CSL_DeadlineTest_Base_stub) : ccm_stub { + after += DDS_CSL_DeadlineTest_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_DeadlineTest_Base_stub + dynamicflags = CSL_DEADLINETEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_BaseC.cpp + } + + Header_Files { + CSL_DeadlineTest_BaseC.h + CSL_DeadlineTest_Base_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl new file mode 100644 index 00000000000..d82e794b7f0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file CSL_DeadlineTest_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef CSL_DeadlineTest_CONNECTOR_IDL_ +#define CSL_DeadlineTest_CONNECTOR_IDL_ + +#include +#include "Base/CSL_DeadlineTest_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module CSL_DeadlineTest +{ + connector CSL_DeadlineTest_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* CSL_DeadlineTest_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc new file mode 100644 index 00000000000..468605ee180 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_DeadlineTest_Base -l .. -o ../lib -u DDS CSL_DeadlineTest_Connector" + +project(DDS_CSL_DT_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CSL_DEADLINETEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=CSL_DeadlineTest_Connector_stub_export.h \ + -Wb,skel_export_macro=CSL_DEADLINETEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=CSL_DeadlineTest_Connector_svnt_export.h \ + -Wb,svnt_export_macro=CSL_DEADLINETEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=CSL_DeadlineTest_Connector_svnt_export.h \ + -Wb,exec_export_macro=CSL_DEADLINETEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=CSL_DeadlineTest_Connector_exec_export.h \ + -I .. + + IDL_Files { + CSL_DeadlineTest_Connector.idl + } +} + +project(DDS_CSL_DT_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_CSL_DT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=CSL_DEADLINETEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=CSL_DeadlineTest_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + CSL_DeadlineTest_ConnectorE.idl + } +} + +project(DDS_CSL_DT_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_DT_Connector_lem_gen DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub DDS4CCM_lem_stub + libs += DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_DT_Connector_lem_stub + dynamicflags = CSL_DEADLINETEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_ConnectorEC.cpp + } + + Header_Files { + CSL_DeadlineTest_ConnectorEC.h + CSL_DeadlineTest_Connector_lem_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_ConnectorEC.inl + } +} + +project(DDS_CSL_DeadlineTest_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_DT_Connector_idl_gen DDS_CSL_DeadlineTest_Base_stub + libs += DDS_CSL_DeadlineTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_DeadlineTest_Connector_stub + dynamicflags = CSL_DEADLINETEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_ConnectorC.cpp + } + + Header_Files { + CSL_DeadlineTest_ConnectorC.h + CSL_DeadlineTest_Connector_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_ConnectorC.inl + } +} + +project(DDS_CSL_DeadlineTest_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub DDS_CSL_DeadlineTest_Base_NDDS_TS + sharedname = DDS_CSL_DeadlineTest_Connector_exec + libs += DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS_CSL_DeadlineTest_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_DEADLINETEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_Connector_exec.cpp + } + + Header_Files { + CSL_DeadlineTest_Connector_exec.h + CSL_DeadlineTest_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_DeadlineTest_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_exec DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_CSL_DeadlineTest_Connector_svnt + libs += DDS_CSL_DeadlineTest_Connector_stub \ + DDS_CSL_DT_Connector_lem_stub \ + DDS_CSL_DeadlineTest_Base_stub \ + DDS_CSL_DeadlineTest_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_DEADLINETEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_ConnectorS.cpp + CSL_DeadlineTest_Connector_svnt.cpp + } + + Header_Files { + CSL_DeadlineTest_ConnectorS.h + CSL_DeadlineTest_Connector_svnt.h + CSL_DeadlineTest_Connector_svnt_export.h + } + + Inline_Files { + CSL_DeadlineTest_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp new file mode 100644 index 00000000000..7125686ea74 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "CSL_DeadlineTest_Connector_exec.h" + +namespace CIAO_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl +{ + CSL_DeadlineTest_Connector_exec_i::CSL_DeadlineTest_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + CSL_DeadlineTest_Connector_exec_i::~CSL_DeadlineTest_Connector_exec_i (void) + { + } + + extern "C" CSL_DEADLINETEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + CSL_DeadlineTest_Connector_exec_i ()); //should be set by dep. plan. + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.h new file mode 100644 index 00000000000..9273a38827f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CSL_DEADLINETEST_CONNECTOR_EXEC_H_ +#define CSL_DEADLINETEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "CSL_DeadlineTest_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "CSL_DeadlineTest_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + + +#include "Base/CSL_DeadlineTest_BaseSupport.h" + +namespace CIAO_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl +{ + + // @from use of CSL_DeadlineTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl::CSL_DeadlineTest_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::CSL_DeadlineTest::CCM_CSL_DeadlineTest_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class CSL_DEADLINETEST_CONNECTOR_EXEC_Export CSL_DeadlineTest_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + CSL_DeadlineTest_Connector_exec_i (void); + virtual ~CSL_DeadlineTest_Connector_exec_i (void); + }; + + extern "C" CSL_DEADLINETEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl new file mode 100644 index 00000000000..3ebb428bb02 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/CSL_DeadlineTest_Connector.idl" +#include "Connector/CSL_DeadlineTest_ConnectorE.idl" + + +module CSL_DeadlineTest +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc new file mode 100644 index 00000000000..9924ed4a847 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_CSL_DeadlineTest_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_CSL_DT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + CSL_DeadlineTest_Receiver.idl + } +} + +project(DDS_CSL_DeadlineTest_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_CSL_DeadlineTest_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + CSL_DeadlineTest_ReceiverE.idl + } +} + +project(DDS_CSL_DT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_DeadlineTest_Receiver_lem_gen DDS_CSL_DeadlineTest_Receiver_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub + libs += Receiver_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_ReceiverEC.cpp + } + + Header_Files { + CSL_DeadlineTest_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_ReceiverEC.inl + } +} + +project(DDS_CSL_DeadlineTest_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_DeadlineTest_Receiver_idl_gen DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DT_Connector_lem_gen + libs += DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_ReceiverC.cpp + } + + Header_Files { + CSL_DeadlineTest_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_ReceiverC.inl + } +} + +project(DDS_CSL_DeadlineTest_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_DT_Receiver_lem_stub DDS_CSL_DeadlineTest_Receiver_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_Receiver_exec.cpp + } + + Header_Files { + CSL_DeadlineTest_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_DeadlineTest_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_DT_Receiver_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt DDS_CSL_DeadlineTest_Receiver_exec DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt Receiver_exec DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_ReceiverS.cpp + CSL_DeadlineTest_Receiver_svnt.cpp + } + + Header_Files { + CSL_DeadlineTest_ReceiverS.h + CSL_DeadlineTest_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + CSL_DeadlineTest_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp new file mode 100644 index 00000000000..252a809898c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp @@ -0,0 +1,220 @@ +// -*- C++ -*- +// $Id$ + +#include "CSL_DeadlineTest_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_CSL_DeadlineTest_Receiver_Impl +{ + +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &incompatible) + : incompatible_ (incompatible) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + this->incompatible_ = true; + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + //============================================================ + // Facet Executor Implementation Class: TestTopic_RawListener_exec_i + //============================================================ + + TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (Atomic_ULong &received) + : received_ (received) + { + } + + TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_RawListener + + void + TestTopic_RawListener_exec_i::on_one_data ( + const TestTopic & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ++this->received_; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ") + ACE_TEXT ("received test_topic_info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.x)); + } + + void + TestTopic_RawListener_exec_i::on_many_data ( + const TestTopic_Seq & /*an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : incompatible_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + // Component attributes. + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_RawListener_exec_i (this->received_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->incompatible_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CSL_DeadlineTest::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(this->incompatible_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive the unexpected ") + ACE_TEXT (" error 'on_offered_deadline_missed' in Receiver") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Haven't received the un-expected ") + ACE_TEXT ("'on_offered_deadline_missed' in Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_DeadlineTest_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h new file mode 100644 index 00000000000..8915db73972 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h @@ -0,0 +1,147 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "CSL_DeadlineTest_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_CSL_DeadlineTest_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Boolean; + + + class Receiver_exec_i; + + class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_RawListener_exec_i (Atomic_ULong &); + virtual ~TestTopic_RawListener_exec_i (void); + + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + + + virtual void + on_many_data ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & info ); + + private: + Atomic_ULong &received_; + }; + + +class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &incompatible_; + + }; + +class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // virtual ::CORBA::Boolean raw_listen (void); + + // virtual void raw_listen (::CORBA::Boolean raw_listen); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::CSL_DeadlineTest::CCM_Receiver_Context_var context_; + Atomic_ULong received_; + Atomic_Boolean incompatible_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_DeadlineTest_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl new file mode 100644 index 00000000000..bee179643c0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_CSL_DEADLINETEST_SENDER_IDL +#define DDS_CSL_DEADLINETEST_SENDER_IDL + +#include "Connector/CSL_DeadlineTest_Connector.idl" +#include "Connector/CSL_DeadlineTest_ConnectorE.idl" + + + +module CSL_DeadlineTest +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Write test_topic_write; + provides CCM_DDS::ConnectorStatusListener test_topic_connector_status; + + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc new file mode 100644 index 00000000000..0dea2090d30 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_DeadlineTest_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_CSL_DeadlineTest_Sender_idl_gen) : componentidldefaults { + after += DDS_CSL_DT_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + CSL_DeadlineTest_Sender.idl + } +} + +project(DDS_CSL_DeadlineTest_Sender_lem_gen) : ciaoidldefaults { + after += DDS_CSL_DeadlineTest_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + CSL_DeadlineTest_SenderE.idl + } +} + +project(DDS_CSL_DeadlineTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_DeadlineTest_Sender_lem_gen DDS_CSL_DeadlineTest_Sender_stub DDS_CSL_DeadlineTest_Base_stub + libs += DDS_CSL_DeadlineTest_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_SenderEC.cpp + } + + Header_Files { + CSL_DeadlineTest_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_SenderEC.inl + } +} + +project(DDS_CSL_DeadlineTest_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_DeadlineTest_Sender_idl_gen DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub + libs += DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_SenderC.cpp + } + + Header_Files { + CSL_DeadlineTest_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + CSL_DeadlineTest_SenderC.inl + } +} + +project(DDS_CSL_DeadlineTest_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_DeadlineTest_Sender_lem_stub DDS_CSL_DeadlineTest_Sender_stub DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_Sender_exec.cpp + } + + Header_Files { + CSL_DeadlineTest_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_DeadlineTest_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt DDS_CSL_DT_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_CSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt DDS_CSL_DT_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_DeadlineTest_SenderS.cpp + CSL_DeadlineTest_Sender_svnt.cpp + } + + Header_Files { + CSL_DeadlineTest_SenderS.h + CSL_DeadlineTest_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + CSL_DeadlineTest_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp new file mode 100644 index 00000000000..9b3b77829f4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp @@ -0,0 +1,181 @@ +// -*- C++ -*- +// $Id$ + +// Test for OFFERED_DEADLINE_MISSED status : Writer failed to write data within the deadline time period set in the profile. + +#include "CSL_DeadlineTest_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_CSL_DeadlineTest_Sender_Impl +{ + + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &deadline_missed) + : deadline_missed_ (deadline_missed) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status) { + if(status.last_instance_handle.isValid && (!CORBA::is_nil (the_writer))) + { + this->deadline_missed_ = true; + } + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : deadline_missed_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_topic_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->deadline_missed_); + } + + // Supported operations and attributes. + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::CSL_DeadlineTest::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_test_topic_write_data (); + } + + void + Sender_exec_i::write (void) + { + //to force an 'offered_deadline_missed' write the topics with a pause of 2 sec in between and + //in the profile the deadline is set to 1 sec. + for (CSL_QoSTest_Table::iterator i = this->_ktests_.begin (); + i != this->_ktests_.end (); + ++i) + { + try + { + if (!CORBA::is_nil (this->writer_) ) { + ACE_OS::sleep (2); + ::DDS::InstanceHandle_t hnd = this->writer_->register_instance (i->second); + this->writer_->write_one(i->second,hnd); + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while writing topic for <%C>.\n"), + i->first.c_str ())); + } + } + } + + void + Sender_exec_i::add_instance_of_topic (const char * key, int x) + { + TestTopic *new_key = new TestTopic; + new_key->key = CORBA::string_dup(key); + new_key->x = x; + this->_ktests_[key] = new_key; + } + void + Sender_exec_i::ccm_activate (void) + { + //add 2 different instances of topic + this->add_instance_of_topic ("EEN",1); + this->add_instance_of_topic ("TWEE",2); + + //write the instances once for the test + this->write(); + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + + if(!this->deadline_missed_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("warning 'on_offered_deadline_missed' in Sender\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'on_offered_deadline_missed' in Sender\n") + )); + } + + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_DeadlineTest_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h new file mode 100644 index 00000000000..75558a74b47 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h @@ -0,0 +1,93 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "CSL_DeadlineTest_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_CSL_DeadlineTest_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &deadline_missed_; + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void add_instance_of_topic (const char *, int x ); + virtual void write (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_topic_connector_status(void); + + private: + ::CSL_DeadlineTest::CCM_Sender_Context_var context_; + Atomic_Boolean deadline_missed_; + CCM_DDS::TestTopic::Writer_var writer_; + TAO_SYNCH_MUTEX mutex_; + typedef std::map CSL_QoSTest_Table; + CSL_QoSTest_Table _ktests_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_DeadlineTest_Sender_Impl (void); + + + +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp new file mode 100644 index 00000000000..f5943bb1d47 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp @@ -0,0 +1,411 @@ + + + CSL_DeadlineTest_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_DeadlineTest_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_DeadlineTest_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + CSL_DeadlineTest_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + CSL_DeadlineTest_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + CSL_DeadlineTest_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_DeadlineTest_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_DeadlineTest_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + CSL_DeadlineTest_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + CSL_DeadlineTest_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + test_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + CSL_DeadlineTest_Connector_exec + + + DDS_CSL_DeadlineTest_Connector_exec + + + CSL_DeadlineTest_Connector_svnt + + + DDS_CSL_DeadlineTest_Connector_svnt + + + CSL_DeadlineTest_Connector_stub + + + DDS_CSL_DeadlineTest_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..0ce3f46ffdf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + 2 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 20 + + + + 10 + + + + + 1 + 0 + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 20 + + + TRANSIENT_LOCAL_DURABILITY_QOS + + + + 1 + 0 + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl new file mode 100644 index 00000000000..2eaeedd842a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file CSL_QoSTest_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef CSL_QOSTEST_BASE_IDL +#define CSL_QOSTEST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc new file mode 100644 index 00000000000..d8ea59a4431 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n CSL_QoSTest_Base" + +project(DDS_CSL_QoSTest_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=CSL_QOSTEST_BASE_STUB_Export \ + -Wb,stub_export_include=CSL_QoSTest_Base_stub_export.h + + IDL_Files { + CSL_QoSTest_Base.idl + } +} + +project(DDS_CSL_QoSTest_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_CSL_QoSTest_Base_idl_gen + ndds_ts_flags += -corba CSL_QoSTest_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + CSL_QoSTest_Base.idl + } +} + +project(DDS_CSL_QoSTest_Base_NDDS_TS) : nddslib, taolib { + after += DDS_CSL_QoSTest_Base_ndds_ts_gen DDS_CSL_QoSTest_Base_stub + libs += DDS_CSL_QoSTest_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_QoSTest_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + CSL_QoSTest_Base.cxx + CSL_QoSTest_BasePlugin.cxx + CSL_QoSTest_BaseSupport.cxx + } + + Header_Files { + CSL_QoSTest_Base.h + CSL_QoSTest_BasePlugin.h + CSL_QoSTest_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_CSL_QoSTest_Base_stub) : ccm_stub { + after += DDS_CSL_QoSTest_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_QoSTest_Base_stub + dynamicflags = CSL_QOSTEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_BaseC.cpp + } + + Header_Files { + CSL_QoSTest_BaseC.h + CSL_QoSTest_Base_stub_export.h + } + + Inline_Files { + CSL_QoSTest_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl new file mode 100644 index 00000000000..77273cf6131 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file CSL_QoSTest_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef CSL_QOSTEST_CONNECTOR_IDL_ +#define CSL_QOSTEST_CONNECTOR_IDL_ + +#include +#include "Base/CSL_QoSTest_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module CSL_QoSTest +{ + connector CSL_QoSTest_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* CSL_QoSTest_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc new file mode 100644 index 00000000000..0bfcd26909b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_QoSTest_Base -l .. -o ../lib -u DDS CSL_QoSTest_Connector" + +project(DDS_CSL_QoSTest_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CSL_QOSTEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=CSL_QoSTest_Connector_stub_export.h \ + -Wb,skel_export_macro=CSL_QOSTEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=CSL_QoSTest_Connector_svnt_export.h \ + -Wb,svnt_export_macro=CSL_QOSTEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=CSL_QoSTest_Connector_svnt_export.h \ + -Wb,exec_export_macro=CSL_QOSTEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=CSL_QoSTest_Connector_exec_export.h \ + -I .. + + IDL_Files { + CSL_QoSTest_Connector.idl + } +} + +project(DDS_CSL_QoSTest_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_CSL_QoSTest_Connector_idl_gen + idlflags += -Wb,stub_export_macro=CSL_QOSTEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=CSL_QoSTest_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + CSL_QoSTest_ConnectorE.idl + } +} + +project(DDS_CSL_QoSTest_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_QoSTest_Connector_lem_gen DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub DDS4CCM_lem_stub + libs += DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_QoSTest_Connector_lem_stub + dynamicflags = CSL_QOSTEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_ConnectorEC.cpp + } + + Header_Files { + CSL_QoSTest_ConnectorEC.h + CSL_QoSTest_Connector_lem_stub_export.h + } + + Inline_Files { + CSL_QoSTest_ConnectorEC.inl + } +} + +project(DDS_CSL_QoSTest_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_QoSTest_Connector_idl_gen DDS_CSL_QoSTest_Base_stub + libs += DDS_CSL_QoSTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_QoSTest_Connector_stub + dynamicflags = CSL_QOSTEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_ConnectorC.cpp + } + + Header_Files { + CSL_QoSTest_ConnectorC.h + CSL_QoSTest_Connector_stub_export.h + } + + Inline_Files { + CSL_QoSTest_ConnectorC.inl + } +} + +project(DDS_CSL_QoSTest_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub DDS_CSL_QoSTest_Base_NDDS_TS + sharedname = DDS_CSL_QoSTest_Connector_exec + libs += DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Base_stub DDS4CCM_lem_stub DDS_CSL_QoSTest_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_QOSTEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_Connector_exec.cpp + } + + Header_Files { + CSL_QoSTest_Connector_exec.h + CSL_QoSTest_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_QoSTest_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_exec DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_CSL_QoSTest_Connector_svnt + libs += DDS_CSL_QoSTest_Connector_stub \ + DDS_CSL_QoSTest_Connector_lem_stub \ + DDS_CSL_QoSTest_Base_stub \ + DDS_CSL_QoSTest_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_QOSTEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_ConnectorS.cpp + CSL_QoSTest_Connector_svnt.cpp + } + + Header_Files { + CSL_QoSTest_ConnectorS.h + CSL_QoSTest_Connector_svnt.h + CSL_QoSTest_Connector_svnt_export.h + } + + Inline_Files { + CSL_QoSTest_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp new file mode 100644 index 00000000000..0a8052b7019 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp @@ -0,0 +1,27 @@ +// -*- C++ -*- +// $Id$ + +#include "CSL_QoSTest_Connector_exec.h" + +namespace CIAO_CSL_QoSTest_CSL_QoSTest_Connector_Impl +{ + CSL_QoSTest_Connector_exec_i::CSL_QoSTest_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + CSL_QoSTest_Connector_exec_i::~CSL_QoSTest_Connector_exec_i (void) + { + } + + extern "C" CSL_QOSTEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_QoSTest_CSL_QoSTest_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + ACE_NEW_NORETURN ( + retval, + CSL_QoSTest_Connector_exec_i ()); + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.h new file mode 100644 index 00000000000..695c9bdebc4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CSL_QOSTEST_CONNECTOR_EXEC_H_ +#define CSL_QOSTEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "CSL_QoSTest_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "CSL_QoSTest_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + + +#include "Base/CSL_QoSTest_BaseSupport.h" + +namespace CIAO_CSL_QoSTest_CSL_QoSTest_Connector_Impl +{ + + // @from use of CSL_QoSTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_CSL_QoSTest_CSL_QoSTest_Connector_Impl::CSL_QoSTest_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::CSL_QoSTest::CCM_CSL_QoSTest_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class CSL_QOSTEST_CONNECTOR_EXEC_Export CSL_QoSTest_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + CSL_QoSTest_Connector_exec_i (void); + virtual ~CSL_QoSTest_Connector_exec_i (void); + }; + + extern "C" CSL_QOSTEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_QoSTest_CSL_QoSTest_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl new file mode 100644 index 00000000000..08fa9e7516f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/CSL_QoSTest_Connector.idl" +#include "Connector/CSL_QoSTest_ConnectorE.idl" + + +module CSL_QoSTest +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc new file mode 100644 index 00000000000..0b224669db0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_CSL_QoSTest_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_CSL_QoSTest_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + CSL_QoSTest_Receiver.idl + } +} + +project(DDS_CSL_QoSTest_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_CSL_QoSTest_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + CSL_QoSTest_ReceiverE.idl + } +} + +project(DDS_CSL_QoSTest_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_QoSTest_Receiver_lem_gen DDS_CSL_QoSTest_Receiver_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub + libs += Receiver_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_ReceiverEC.cpp + } + + Header_Files { + CSL_QoSTest_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + CSL_QoSTest_ReceiverEC.inl + } +} + +project(DDS_CSL_QoSTest_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_QoSTest_Receiver_idl_gen DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_lem_gen + libs += DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_ReceiverC.cpp + } + + Header_Files { + CSL_QoSTest_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + CSL_QoSTest_ReceiverC.inl + } +} + +project(DDS_CSL_QoSTest_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_QoSTest_Receiver_lem_stub DDS_CSL_QoSTest_Receiver_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_Receiver_exec.cpp + } + + Header_Files { + CSL_QoSTest_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_QoSTest_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_QoSTest_Receiver_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt DDS_CSL_QoSTest_Receiver_exec DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt Receiver_exec DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_ReceiverS.cpp + CSL_QoSTest_Receiver_svnt.cpp + } + + Header_Files { + CSL_QoSTest_ReceiverS.h + CSL_QoSTest_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + CSL_QoSTest_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp new file mode 100644 index 00000000000..84415f26e19 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp @@ -0,0 +1,221 @@ +// -*- C++ -*- +// +// $Id$ + +//Test for ConnectorStatusListener: on_requested_incompatible_qos + +#include "CSL_QoSTest_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_CSL_QoSTest_Receiver_Impl +{ + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &incompatible) + : incompatible_ (incompatible) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + if(!CORBA::is_nil(the_reader)) + { + this->incompatible_ = true; + } + } + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind */) { + } + + //============================================================ + // Facet Executor Implementation Class: TestTopic_RawListener_exec_i + //============================================================ + TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (Atomic_ULong &received) + : received_ (received) + { + } + + TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_RawListener + void + TestTopic_RawListener_exec_i::on_one_data ( + const TestTopic & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ++this->received_; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ") + ACE_TEXT ("received test_topic_info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.x)); + } + + void + TestTopic_RawListener_exec_i::on_many_data ( + const TestTopic_Seq & /*an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : incompatible_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + // Component attributes. + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_RawListener_exec_i (this->received_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->incompatible_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CSL_QoSTest::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(!this->incompatible_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("error 'on_requested_incompatible_Qos' in Receiver\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'on_requested_incompatible_Qos' in Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_QoSTest_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h new file mode 100644 index 00000000000..d99f0b3df24 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h @@ -0,0 +1,135 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "CSL_QoSTest_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_CSL_QoSTest_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + + class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_RawListener_exec_i (Atomic_ULong &); + virtual ~TestTopic_RawListener_exec_i (void); + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_many_data ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & info ); + + private: + Atomic_ULong &received_; + }; + +class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &incompatible_; + }; + +class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::CSL_QoSTest::CCM_Receiver_Context_var context_; + Atomic_ULong received_; + Atomic_Boolean incompatible_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_QoSTest_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl new file mode 100644 index 00000000000..e2f117ecb7b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_CSL_QOSTEST_SENDER_IDL +#define DDS_CSL_QOSTEST_SENDER_IDL + +#include "Connector/CSL_QoSTest_Connector.idl" +#include "Connector/CSL_QoSTest_ConnectorE.idl" + + + +module CSL_QoSTest +{ + component Sender + { + provides CCM_DDS::ConnectorStatusListener test_topic_connector_status; + + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc new file mode 100644 index 00000000000..f68f5f5c551 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_QoSTest_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_CSL_QoSTest_Sender_idl_gen) : componentidldefaults { + after += DDS_CSL_QoSTest_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + CSL_QoSTest_Sender.idl + } +} + +project(DDS_CSL_QoSTest_Sender_lem_gen) : ciaoidldefaults { + after += DDS_CSL_QoSTest_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + CSL_QoSTest_SenderE.idl + } +} + +project(DDS_CSL_QoSTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_QoSTest_Sender_lem_gen DDS_CSL_QoSTest_Sender_stub DDS_CSL_QoSTest_Base_stub + libs += DDS_CSL_QoSTest_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_SenderEC.cpp + } + + Header_Files { + CSL_QoSTest_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + CSL_QoSTest_SenderEC.inl + } +} + +project(DDS_CSL_QoSTest_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_QoSTest_Sender_idl_gen DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub + libs += DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_SenderC.cpp + } + + Header_Files { + CSL_QoSTest_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + CSL_QoSTest_SenderC.inl + } +} + +project(DDS_CSL_QoSTest_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_QoSTest_Sender_lem_stub DDS_CSL_QoSTest_Sender_stub DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_Sender_exec.cpp + } + + Header_Files { + CSL_QoSTest_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_QoSTest_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt DDS_CSL_QoSTest_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_CSL_QoSTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt DDS_CSL_QoSTest_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_QoSTest_SenderS.cpp + CSL_QoSTest_Sender_svnt.cpp + } + + Header_Files { + CSL_QoSTest_SenderS.h + CSL_QoSTest_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + CSL_QoSTest_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp new file mode 100644 index 00000000000..5acba0e3d00 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp @@ -0,0 +1,142 @@ +// -*- C++ -*- +// $Id$ + +//Test for ConnectorStatusListener: on_offered_incompatible_qos + +#include "CSL_QoSTest_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_CSL_QoSTest_Sender_Impl +{ + + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &incompatible) + : incompatible_ (incompatible) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + if(!CORBA::is_nil(the_writer)) + { + this->incompatible_ = true; + } + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : incompatible_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_topic_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->incompatible_); + } + + // Supported operations and attributes. + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CSL_QoSTest::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + if(!this->incompatible_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("error 'on_offered_incompatible_Qos' in Sender\n") + )); + } + + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'on_offered_incompatible_qos' in Sender\n") + )); + } + + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_QoSTest_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h new file mode 100644 index 00000000000..7a955200ce1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h @@ -0,0 +1,83 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "CSL_QoSTest_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_CSL_QoSTest_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &incompatible_; + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_topic_connector_status(void); + + private: + ::CSL_QoSTest::CCM_Sender_Context_var context_; + Atomic_Boolean incompatible_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_QoSTest_Sender_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp new file mode 100644 index 00000000000..1d9d9427658 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp @@ -0,0 +1,392 @@ + + + CSL_QoSTest_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_QoSTest_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_QoSTest_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + CSL_QoSTest_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_QoSTest_CSL_QoSTest_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_QoSTest_CSL_QoSTest_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + CSL_QoSTest_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + CSL_QoSTest_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_QoSTest_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_QoSTest_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + CSL_QoSTest_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + CSL_QoSTest_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + test_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + CSL_QoSTest_Connector_exec + + + DDS_CSL_QoSTest_Connector_exec + + + CSL_QoSTest_Connector_svnt + + + DDS_CSL_QoSTest_Connector_svnt + + + CSL_QoSTest_Connector_stub + + + DDS_CSL_QoSTest_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..46125fa0b73 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + 2 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 20 + + + + 10 + + + + + + + RELIABLE_RELIABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 20 + + + TRANSIENT_LOCAL_DURABILITY_QOS + + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl new file mode 100644 index 00000000000..1ef1b99d9ee --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file CSL_SRTest_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef CSL_SRTEST_BASE_IDL +#define CSL_SRTEST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc new file mode 100644 index 00000000000..168a6c708e2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n CSL_SRTest_Base" + +project(DDS_CSL_SRTest_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=CSL_SRTEST_BASE_STUB_Export \ + -Wb,stub_export_include=CSL_SRTest_Base_stub_export.h + + IDL_Files { + CSL_SRTest_Base.idl + } +} + +project(DDS_CSL_SRTest_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_CSL_SRTest_Base_idl_gen + ndds_ts_flags += -corba CSL_SRTest_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + CSL_SRTest_Base.idl + } +} + +project(DDS_CSL_SRTest_Base_NDDS_TS) : nddslib, taolib { + after += DDS_CSL_SRTest_Base_ndds_ts_gen DDS_CSL_SRTest_Base_stub + libs += DDS_CSL_SRTest_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_SRTest_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + CSL_SRTest_Base.cxx + CSL_SRTest_BasePlugin.cxx + CSL_SRTest_BaseSupport.cxx + } + + Header_Files { + CSL_SRTest_Base.h + CSL_SRTest_BasePlugin.h + CSL_SRTest_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_CSL_SRTest_Base_stub) : ccm_stub { + after += DDS_CSL_SRTest_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_SRTest_Base_stub + dynamicflags = CSL_SRTEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_BaseC.cpp + } + + Header_Files { + CSL_SRTest_BaseC.h + CSL_SRTest_Base_stub_export.h + } + + Inline_Files { + CSL_SRTest_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl new file mode 100644 index 00000000000..41008e2c582 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file CSL_SRTest_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef CSL_SRTEST_CONNECTOR_IDL_ +#define CSL_SRTEST_CONNECTOR_IDL_ + +#include +#include "Base/CSL_SRTest_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module CSL_SRTest +{ + connector CSL_SRTest_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* CSL_SRTEST_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc new file mode 100644 index 00000000000..a2604c0e5cf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_SRTest_Base -l .. -o ../lib -u DDS CSL_SRTest_Connector" + +project(DDS_CSL_SRTest_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CSL_SRTEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=CSL_SRTest_Connector_stub_export.h \ + -Wb,skel_export_macro=CSL_SRTEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=CSL_SRTest_Connector_svnt_export.h \ + -Wb,svnt_export_macro=CSL_SRTEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=CSL_SRTest_Connector_svnt_export.h \ + -Wb,exec_export_macro=CSL_SRTEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=CSL_SRTest_Connector_exec_export.h \ + -I .. + + IDL_Files { + CSL_SRTest_Connector.idl + } +} + +project(DDS_CSL_SRTest_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_CSL_SRTest_Connector_idl_gen + idlflags += -Wb,stub_export_macro=CSL_SRTEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=CSL_SRTest_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + CSL_SRTest_ConnectorE.idl + } +} + +project(DDS_CSL_SRTest_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_SRTest_Connector_lem_gen DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub DDS4CCM_lem_stub + libs += DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_SRTest_Connector_lem_stub + dynamicflags = CSL_SRTEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_ConnectorEC.cpp + } + + Header_Files { + CSL_SRTest_ConnectorEC.h + CSL_SRTest_Connector_lem_stub_export.h + } + + Inline_Files { + CSL_SRTest_ConnectorEC.inl + } +} + +project(DDS_CSL_SRTest_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_SRTest_Connector_idl_gen DDS_CSL_SRTest_Base_stub + libs += DDS_CSL_SRTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_SRTest_Connector_stub + dynamicflags = CSL_SRTEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_ConnectorC.cpp + } + + Header_Files { + CSL_SRTest_ConnectorC.h + CSL_SRTest_Connector_stub_export.h + } + + Inline_Files { + CSL_SRTest_ConnectorC.inl + } +} + +project(DDS_CSL_SRTest_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub DDS_CSL_SRTest_Base_NDDS_TS + sharedname = DDS_CSL_SRTest_Connector_exec + libs += DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Base_stub DDS4CCM_lem_stub DDS_CSL_SRTest_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_SRTEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_Connector_exec.cpp + } + + Header_Files { + CSL_SRTest_Connector_exec.h + CSL_SRTest_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_SRTest_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_exec DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_CSL_SRTest_Connector_svnt + libs += DDS_CSL_SRTest_Connector_stub \ + DDS_CSL_SRTest_Connector_lem_stub \ + DDS_CSL_SRTest_Base_stub \ + DDS_CSL_SRTest_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_SRTEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_ConnectorS.cpp + CSL_SRTest_Connector_svnt.cpp + } + + Header_Files { + CSL_SRTest_ConnectorS.h + CSL_SRTest_Connector_svnt.h + CSL_SRTest_Connector_svnt_export.h + } + + Inline_Files { + CSL_SRTest_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.cpp new file mode 100644 index 00000000000..b7606e6ee90 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.cpp @@ -0,0 +1,29 @@ +// -*- C++ -*- +// $Id$ + +#include "CSL_SRTest_Connector_exec.h" + +namespace CIAO_CSL_SRTest_CSL_SRTest_Connector_Impl +{ + CSL_SRTest_Connector_exec_i::CSL_SRTest_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + CSL_SRTest_Connector_exec_i::~CSL_SRTest_Connector_exec_i (void) + { + } + + extern "C" CSL_SRTEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_SRTest_CSL_SRTest_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + CSL_SRTest_Connector_exec_i ()); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.h new file mode 100644 index 00000000000..f3be2d1e32f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CSL_SRTEST_CONNECTOR_EXEC_H_ +#define CSL_SRTEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "CSL_SRTest_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "CSL_SRTest_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + + +#include "Base/CSL_SRTest_BaseSupport.h" + +namespace CIAO_CSL_SRTest_CSL_SRTest_Connector_Impl +{ + + // @from use of CSL_SRTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_CSL_SRTest_CSL_SRTest_Connector_Impl::CSL_SRTest_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::CSL_SRTest::CCM_CSL_SRTest_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class CSL_SRTEST_CONNECTOR_EXEC_Export CSL_SRTest_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + CSL_SRTest_Connector_exec_i (void); + virtual ~CSL_SRTest_Connector_exec_i (void); + }; + + extern "C" CSL_SRTEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_SRTest_CSL_SRTest_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl new file mode 100644 index 00000000000..047500e6f03 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl @@ -0,0 +1,28 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/CSL_SRTest_Connector.idl" +#include "Connector/CSL_SRTest_ConnectorE.idl" + + +module CSL_SRTest +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + attribute unsigned long rate; + attribute boolean read_data;//if true, read_all is invoked. + attribute boolean raw_listen; //if true, raw listen port is enabled. + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc new file mode 100644 index 00000000000..8799cf3e86f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_CSL_SRTest_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_CSL_SRTest_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + CSL_SRTest_Receiver.idl + } +} + +project(DDS_CSL_SRTest_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_CSL_SRTest_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + CSL_SRTest_ReceiverE.idl + } +} + +project(DDS_CSL_SRTest_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_SRTest_Receiver_lem_gen DDS_CSL_SRTest_Receiver_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub + libs += Receiver_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_ReceiverEC.cpp + } + + Header_Files { + CSL_SRTest_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + CSL_SRTest_ReceiverEC.inl + } +} + +project(DDS_CSL_SRTest_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_SRTest_Receiver_idl_gen DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_lem_gen + libs += DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_ReceiverC.cpp + } + + Header_Files { + CSL_SRTest_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + CSL_SRTest_ReceiverC.inl + } +} + +project(DDS_CSL_SRTest_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_SRTest_Receiver_lem_stub DDS_CSL_SRTest_Receiver_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_Receiver_exec.cpp + } + + Header_Files { + CSL_SRTest_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_SRTest_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_SRTest_Receiver_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt DDS_CSL_SRTest_Receiver_exec DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt Receiver_exec DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_ReceiverS.cpp + CSL_SRTest_Receiver_svnt.cpp + } + + Header_Files { + CSL_SRTest_ReceiverS.h + CSL_SRTest_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + CSL_SRTest_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp new file mode 100644 index 00000000000..7069242a6f8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp @@ -0,0 +1,357 @@ +// -*- C++ -*- +// +// $Id$ + +// Test for ConnectorStatusListener:REJECTED_SAMPLE status through too much instances +// in Sender 2, in Receiver 1 + +#include "CSL_SRTest_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_CSL_SRTest_Receiver_Impl +{ + +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &rejected) + : rejected_ (rejected) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status) { + if((status.last_reason == DDS::REJECTED_BY_INSTANCES_LIMIT) && + (!CORBA::is_nil(the_reader))) + { + this->rejected_ = true; + } + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + if (pulse_callback_.read_data ()) + { + this->pulse_callback_.read_all(); + } + } + catch (...) + { + // @todo + } + return 0; + } + + //============================================================ + // Facet Executor Implementation Class: TestTopic_Listener_exec_i + //============================================================ + + TestTopic_Listener_exec_i::TestTopic_Listener_exec_i (Atomic_ULong &received) + : received_ (received) + { + } + + TestTopic_Listener_exec_i::~TestTopic_Listener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_Listener + void + TestTopic_Listener_exec_i::on_many_data ( + const TestTopic_Seq & /* an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + + void + TestTopic_Listener_exec_i::on_one_data ( + const TestTopic & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ++this->received_; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_Listener: ") + ACE_TEXT ("received testtopic_info for <%C> at %dl\n"), + an_instance.key.in (), + an_instance.x)); + } + + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_Listener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (0), + read_data_ (true), + raw_listen_ (false), + received_ (0), + rejected_(0) + + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + } + + // Component attributes. + ::CORBA::ULong + Receiver_exec_i::rate (void) + { + return this->rate_; + } + + void + Receiver_exec_i::rate (::CORBA::ULong rate) + { + this->rate_ = rate; + } + + ::CORBA::Boolean + Receiver_exec_i::read_data (void) + { + return this->read_data_; + } + + void + Receiver_exec_i::read_data ( + ::CORBA::Boolean read_data) + { + this->read_data_ = read_data; + } + + ::CORBA::Boolean + Receiver_exec_i::raw_listen (void) + { + return this->raw_listen_; + } + + void + Receiver_exec_i::raw_listen ( + ::CORBA::Boolean raw_listen) + { + this->raw_listen_ = raw_listen; + } + + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_Listener_exec_i (this->received_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->rejected_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CSL_SRTest::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + if (this->read_data ()) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (this->raw_listen_ ? ::CCM_DDS::ONE_BY_ONE : ::CCM_DDS::NOT_ENABLED); + + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(0, usec), + ACE_Time_Value(0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(!this->rejected_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("warning 'on_sample_rejected' in the Receiver\n") + )); + } + + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ") + ACE_TEXT ("'on_sample_rejected' in the Receiver\n") + )); + } + } + + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_SRTest_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h new file mode 100644 index 00000000000..a67189955b4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h @@ -0,0 +1,177 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "CSL_SRTest_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_CSL_SRTest_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Boolean; + + + class Receiver_exec_i; + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &rejected_; + + }; + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + + class RECEIVER_EXEC_Export TestTopic_Listener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_Listener_exec_i (Atomic_ULong &); + virtual ~TestTopic_Listener_exec_i (void); + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const TestTopic_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_; + }; + + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported operations and attributes. + void read_all (void); + + // Component attributes. + virtual ::CORBA::ULong rate (void); + + virtual void rate (::CORBA::ULong rate); + + virtual ::CORBA::Boolean read_data (void); + + virtual void read_data (::CORBA::Boolean read_data); + + virtual ::CORBA::Boolean raw_listen (void); + + virtual void raw_listen (::CORBA::Boolean raw_listen); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::CSL_SRTest::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + + read_action_Generator * ticker_; + CORBA::ULong rate_; + CORBA::Boolean read_data_, raw_listen_; + Atomic_ULong received_; + Atomic_Boolean rejected_; + }; + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_SRTest_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl new file mode 100644 index 00000000000..8158616e1be --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_CSL_SRTEST_SENDER_IDL +#define DDS_CSL_SRTEST_SENDER_IDL + +#include "Connector/CSL_SRTest_Connector.idl" +#include "Connector/CSL_SRTest_ConnectorE.idl" + + + +module CSL_SRTest +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Write test_topic_write; + provides CCM_DDS::ConnectorStatusListener test_topic_connector_status; + + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc new file mode 100644 index 00000000000..c6ef30c3f44 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_SRTest_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_CSL_SRTest_Sender_idl_gen) : componentidldefaults { + after += DDS_CSL_SRTest_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + CSL_SRTest_Sender.idl + } +} + +project(DDS_CSL_SRTest_Sender_lem_gen) : ciaoidldefaults { + after += DDS_CSL_SRTest_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + CSL_SRTest_SenderE.idl + } +} + +project(DDS_CSL_SRTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_SRTest_Sender_lem_gen DDS_CSL_SRTest_Sender_stub DDS_CSL_SRTest_Base_stub + libs += DDS_CSL_SRTest_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_SenderEC.cpp + } + + Header_Files { + CSL_SRTest_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + CSL_SRTest_SenderEC.inl + } +} + +project(DDS_CSL_SRTest_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_SRTest_Sender_idl_gen DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub + libs += DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_SenderC.cpp + } + + Header_Files { + CSL_SRTest_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + CSL_SRTest_SenderC.inl + } +} + +project(DDS_CSL_SRTest_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_SRTest_Sender_lem_stub DDS_CSL_SRTest_Sender_stub DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_Sender_exec.cpp + } + + Header_Files { + CSL_SRTest_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_SRTest_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt DDS_CSL_SRTest_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_CSL_SRTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt DDS_CSL_SRTest_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_SRTest_SenderS.cpp + CSL_SRTest_Sender_svnt.cpp + } + + Header_Files { + CSL_SRTest_SenderS.h + CSL_SRTest_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + CSL_SRTest_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp new file mode 100644 index 00000000000..858668e8006 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp @@ -0,0 +1,218 @@ +// -*- C++ -*- +// $Id$ + + +// Test for ConnectorStatusListener:REJECTED_SAMPLE status through too much instances +// in Sender 2, in Receiver 1 + +#include "CSL_SRTest_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_CSL_SRTest_Sender_Impl +{ + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &rejected) + : rejected_ (rejected) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status) { + if((status.last_reason == DDS::REJECTED_BY_INSTANCES_LIMIT) && + (!CORBA::is_nil(the_reader))) + { + this->rejected_ = true; + } + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : rejected_ (false), + rate_ (100) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_topic_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->rejected_); + } + + // Supported operations and attributes. + void + Sender_exec_i::tick () + { + for (CSL_SRTest_Table::iterator i = this->_ktests_.begin (); + i != this->_ktests_.end (); + ++i) + { + try + { + if (!CORBA::is_nil (this->writer_) ) { + this->writer_->write_one(i->second,::DDS::HANDLE_NIL); + i->second->x++; + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"), + i->first.c_str ())); + } + } + } + + void + Sender_exec_i::start (void) + { + // calculate the interval time + long usec = 10000000 / this->rate_; + + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::CSL_SRTest::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_test_topic_write_data (); + } + + void + Sender_exec_i::add_instance_of_topic (const char * key, int x) + { + TestTopic *new_key = new TestTopic; + new_key->key = CORBA::string_dup(key); + new_key->x = x; + this->_ktests_[key] = new_key; + } + void + Sender_exec_i::ccm_activate (void) + { + //add 2 different instances of topic + this->add_instance_of_topic ("EEN",1); + this->add_instance_of_topic ("TWEE",2); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + if(!this->rejected_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("warning 'on_sample_rejected' in Sender\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'on_sample_rejected' in Sender\n") + )); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_SRTest_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h new file mode 100644 index 00000000000..e79beb1145e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h @@ -0,0 +1,114 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "CSL_SRTest_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_CSL_SRTest_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &rejected_; + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void add_instance_of_topic (const char *, int x ); + void tick (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_topic_connector_status(void); + + private: + void start (void); + void stop (void); + + CCM_DDS::TestTopic::Writer_var writer_; + ::CSL_SRTest::CCM_Sender_Context_var context_; + pulse_Generator * ticker_; + + Atomic_Boolean rejected_; + CORBA::ULong rate_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map CSL_SRTest_Table; + CSL_SRTest_Table _ktests_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_SRTest_Sender_Impl (void); + + + +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp new file mode 100644 index 00000000000..302f070eb52 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp @@ -0,0 +1,510 @@ + + + CSL_SRTest_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_SRTest_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_SRTest_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + CSL_SRTest_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_SRTest_CSL_SRTest_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_SRTest_CSL_SRTest_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + CSL_SRTest_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + CSL_SRTest_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_SRTest_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_SRTest_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + rate + + + tk_long + + + 1 + + + + + + + + read_data + + + tk_boolean + + + true + + + + + raw_listen + + + tk_boolean + + + false + + + + + + + CSL_SRTest_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + CSL_SRTest_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + test_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + CSL_SRTest_Connector_exec + + + DDS_CSL_SRTest_Connector_exec + + + CSL_SRTest_Connector_svnt + + + DDS_CSL_SRTest_Connector_svnt + + + CSL_SRTest_Connector_stub + + + DDS_CSL_SRTest_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..2ebc1749f3f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + 0 + 100000000 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 10 + 10 + 5 + 2 + + + + 10 + + + + + + + VOLATILE_DURABILITY_QOS + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + 0 + 0 + + + + AUTOMATIC_LIVELINESS_QOS + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + BEST_EFFORT_RELIABILITY_QOS + + 0 + 100000000 + + + + BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS + + + KEEP_LAST_HISTORY_QOS + 10 + + + 1 + 1 + 10 + 1 + 10 + + + + + + SHARED_OWNERSHIP_QOS + + + + 0 + 0 + + + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + DURATION_INFINITE_SEC + DURATION_INFINITE_NSEC + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl new file mode 100644 index 00000000000..2c65c635cc1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file CSL_USTest_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef CSL_USTEST_BASE_IDL +#define CSL_USTEST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc new file mode 100644 index 00000000000..104b8cb3825 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n CSL_USTest_Base" + +project(DDS_CSL_USTest_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=CSL_USTEST_BASE_STUB_Export \ + -Wb,stub_export_include=CSL_USTest_Base_stub_export.h + + IDL_Files { + CSL_USTest_Base.idl + } +} + +project(DDS_CSL_USTest_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_CSL_USTest_Base_idl_gen + ndds_ts_flags += -corba CSL_USTest_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + CSL_USTest_Base.idl + } +} + +project(DDS_CSL_USTest_Base_NDDS_TS) : nddslib, taolib { + after += DDS_CSL_USTest_Base_ndds_ts_gen DDS_CSL_USTest_Base_stub + libs += DDS_CSL_USTest_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_USTest_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + CSL_USTest_Base.cxx + CSL_USTest_BasePlugin.cxx + CSL_USTest_BaseSupport.cxx + } + + Header_Files { + CSL_USTest_Base.h + CSL_USTest_BasePlugin.h + CSL_USTest_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_CSL_USTest_Base_stub) : ccm_stub { + after += DDS_CSL_USTest_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_CSL_USTest_Base_stub + dynamicflags = CSL_USTEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_BaseC.cpp + } + + Header_Files { + CSL_USTest_BaseC.h + CSL_USTest_Base_stub_export.h + } + + Inline_Files { + CSL_USTest_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl new file mode 100644 index 00000000000..553f7ecbd40 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file CSL_USTest_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef CSL_USTEST_CONNECTOR_IDL_ +#define CSL_USTEST_CONNECTOR_IDL_ + +#include +#include "Base/CSL_USTest_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module CSL_USTest +{ + connector CSL_USTest_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* CSL_USTest_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc new file mode 100644 index 00000000000..8dd7df7bafe --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_USTest_Base -l .. -o ../lib -u DDS CSL_USTest_Connector" + +project(DDS_CSL_USTest_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CSL_USTEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=CSL_USTest_Connector_stub_export.h \ + -Wb,skel_export_macro=CSL_USTEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=CSL_USTest_Connector_svnt_export.h \ + -Wb,svnt_export_macro=CSL_USTEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=CSL_USTest_Connector_svnt_export.h \ + -Wb,exec_export_macro=CSL_USTEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=CSL_USTest_Connector_exec_export.h \ + -I .. + + IDL_Files { + CSL_USTest_Connector.idl + } +} + +project(DDS_CSL_USTest_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_CSL_USTest_Connector_idl_gen + idlflags += -Wb,stub_export_macro=CSL_USTEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=CSL_USTest_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + CSL_USTest_ConnectorE.idl + } +} + +project(DDS_CSL_USTest_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_USTest_Connector_lem_gen DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub DDS4CCM_lem_stub + libs += DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_USTest_Connector_lem_stub + dynamicflags = CSL_USTEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_ConnectorEC.cpp + } + + Header_Files { + CSL_USTest_ConnectorEC.h + CSL_USTest_Connector_lem_stub_export.h + } + + Inline_Files { + CSL_USTest_ConnectorEC.inl + } +} + +project(DDS_CSL_USTest_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_USTest_Connector_idl_gen DDS_CSL_USTest_Base_stub + libs += DDS_CSL_USTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_USTest_Connector_stub + dynamicflags = CSL_USTEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_ConnectorC.cpp + } + + Header_Files { + CSL_USTest_ConnectorC.h + CSL_USTest_Connector_stub_export.h + } + + Inline_Files { + CSL_USTest_ConnectorC.inl + } +} + +project(DDS_CSL_USTest_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub DDS_CSL_USTest_Base_NDDS_TS + sharedname = DDS_CSL_USTest_Connector_exec + libs += DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Base_stub DDS4CCM_lem_stub DDS_CSL_USTest_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_USTEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_Connector_exec.cpp + } + + Header_Files { + CSL_USTest_Connector_exec.h + CSL_USTest_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_USTest_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_exec DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_CSL_USTest_Connector_svnt + libs += DDS_CSL_USTest_Connector_stub \ + DDS_CSL_USTest_Connector_lem_stub \ + DDS_CSL_USTest_Base_stub \ + DDS_CSL_USTest_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CSL_USTEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_ConnectorS.cpp + CSL_USTest_Connector_svnt.cpp + } + + Header_Files { + CSL_USTest_ConnectorS.h + CSL_USTest_Connector_svnt.h + CSL_USTest_Connector_svnt_export.h + } + + Inline_Files { + CSL_USTest_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp new file mode 100644 index 00000000000..d6dc5a06317 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.cpp @@ -0,0 +1,29 @@ +// -*- C++ -*- +// $Id$ + +#include "CSL_USTest_Connector_exec.h" + +namespace CIAO_CSL_USTest_CSL_USTest_Connector_Impl +{ + CSL_USTest_Connector_exec_i::CSL_USTest_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + CSL_USTest_Connector_exec_i::~CSL_USTest_Connector_exec_i (void) + { + } + + extern "C" CSL_USTEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_USTest_CSL_USTest_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + CSL_USTest_Connector_exec_i ()); + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.h new file mode 100644 index 00000000000..81072dacadc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CSL_USTEST_CONNECTOR_EXEC_H_ +#define CSL_USTEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "CSL_USTest_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "CSL_USTest_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + + +#include "Base/CSL_USTest_BaseSupport.h" + +namespace CIAO_CSL_USTest_CSL_USTest_Connector_Impl +{ + + // @from use of CSL_USTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_CSL_USTest_CSL_USTest_Connector_Impl::CSL_USTest_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::CSL_USTest::CCM_CSL_USTest_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class CSL_USTEST_CONNECTOR_EXEC_Export CSL_USTest_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + CSL_USTest_Connector_exec_i (void); + virtual ~CSL_USTest_Connector_exec_i (void); + }; + + extern "C" CSL_USTEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_USTest_CSL_USTest_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl new file mode 100644 index 00000000000..fe3da449160 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/CSL_USTest_Connector.idl" +#include "Connector/CSL_USTest_ConnectorE.idl" + + +module CSL_USTest +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc new file mode 100644 index 00000000000..1e7f140a816 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_CSL_USTest_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_CSL_USTest_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + CSL_USTest_Receiver.idl + } +} + +project(DDS_CSL_USTest_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_CSL_USTest_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + CSL_USTest_ReceiverE.idl + } +} + +project(DDS_CSL_USTest_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_USTest_Receiver_lem_gen DDS_CSL_USTest_Receiver_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub + libs += Receiver_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_ReceiverEC.cpp + } + + Header_Files { + CSL_USTest_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + CSL_USTest_ReceiverEC.inl + } +} + +project(DDS_CSL_USTest_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_USTest_Receiver_idl_gen DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_lem_gen + libs += DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_ReceiverC.cpp + } + + Header_Files { + CSL_USTest_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + CSL_USTest_ReceiverC.inl + } +} + +project(DDS_CSL_USTest_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_USTest_Receiver_lem_stub DDS_CSL_USTest_Receiver_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_Receiver_exec.cpp + } + + Header_Files { + CSL_USTest_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_USTest_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_USTest_Receiver_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt DDS_CSL_USTest_Receiver_exec DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt Receiver_exec DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_ReceiverS.cpp + CSL_USTest_Receiver_svnt.cpp + } + + Header_Files { + CSL_USTest_ReceiverS.h + CSL_USTest_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + CSL_USTest_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp new file mode 100644 index 00000000000..67717356932 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp @@ -0,0 +1,234 @@ +// -*- C++ -*- +// +// $Id$ + +//Test for on_unexpected_status with status LIVELINESS_CHANGED_STATUS' and 'SUBSCRIPTION_MATCHED_STATUS + +#include "CSL_USTest_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + + +namespace CIAO_CSL_USTest_Receiver_Impl +{ +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &unexpected_matched,Atomic_Boolean &unexpected_liveliness) + : unexpected_matched_ (unexpected_matched), + unexpected_liveliness_ (unexpected_liveliness) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind) { + CORBA::ULong kind = status_kind; + if((!CORBA::is_nil(the_entity)) && (kind==DDS::SUBSCRIPTION_MATCHED_STATUS)) + { + this->unexpected_matched_ = true; + } + if((!CORBA::is_nil(the_entity)) &&(kind==DDS::LIVELINESS_CHANGED_STATUS)) + { + this->unexpected_liveliness_ = true; + } + } + + //============================================================ + // Facet Executor Implementation Class: TestTopic_RawListener_exec_i + //============================================================ + TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (Atomic_ULong &received) + : received_ (received) + { + } + + TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_RawListener + void + TestTopic_RawListener_exec_i::on_one_data ( + const TestTopic & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ++this->received_; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ") + ACE_TEXT ("received test_topic_info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.x)); + } + + void + TestTopic_RawListener_exec_i::on_many_data ( + const TestTopic_Seq & /*an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : unexpected_matched_ (false), + unexpected_liveliness_ (false), + received_(0) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_RawListener_exec_i (this->received_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->unexpected_matched_,this->unexpected_liveliness_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CSL_USTest::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data (); + if (CORBA::is_nil (this->reader_)) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Reader is null!\n"))); + throw CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::NOT_ENABLED); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(!this->unexpected_matched_.value () || !this->unexpected_liveliness_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("states 'PUBLICATION_MATCHED_STATUS and/or LIVELINESS_CHANGED_STATUS' in Receiver\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'PUBLICATION_MATCHED_STATUS and LIVELINESS_CHANGED_STATUS' in Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_USTest_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h new file mode 100644 index 00000000000..34f2f251151 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h @@ -0,0 +1,141 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "CSL_USTest_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_CSL_USTest_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Boolean; + class Receiver_exec_i; + + class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_RawListener_exec_i (Atomic_ULong &); + virtual ~TestTopic_RawListener_exec_i (void); + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_many_data ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & info ); + + private: + Atomic_ULong &received_; + }; + +class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &,Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + + private: + Atomic_Boolean &unexpected_matched_; + Atomic_Boolean &unexpected_liveliness_; + + }; + +class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported operations and attributes. + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::CSL_USTest::CCM_Receiver_Context_var context_; + Atomic_Boolean unexpected_matched_; + Atomic_Boolean unexpected_liveliness_; + Atomic_ULong received_; + ::CCM_DDS::TestTopic::Reader_var reader_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_USTest_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl new file mode 100644 index 00000000000..00d2aa9548c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_CSL_USTEST_SENDER_IDL +#define DDS_CSL_USTEST_SENDER_IDL + +#include "Connector/CSL_USTest_Connector.idl" +#include "Connector/CSL_USTest_ConnectorE.idl" + + + +module CSL_USTest +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Write test_topic_write; + provides CCM_DDS::ConnectorStatusListener test_topic_connector_status; + + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc new file mode 100644 index 00000000000..980ed211809 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_CSL_USTest_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_CSL_USTest_Sender_idl_gen) : componentidldefaults { + after += DDS_CSL_USTest_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + CSL_USTest_Sender.idl + } +} + +project(DDS_CSL_USTest_Sender_lem_gen) : ciaoidldefaults { + after += DDS_CSL_USTest_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + CSL_USTest_SenderE.idl + } +} + +project(DDS_CSL_USTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_CSL_USTest_Sender_lem_gen DDS_CSL_USTest_Sender_stub DDS_CSL_USTest_Base_stub + libs += DDS_CSL_USTest_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_SenderEC.cpp + } + + Header_Files { + CSL_USTest_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + CSL_USTest_SenderEC.inl + } +} + +project(DDS_CSL_USTest_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_CSL_USTest_Sender_idl_gen DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub + libs += DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_SenderC.cpp + } + + Header_Files { + CSL_USTest_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + CSL_USTest_SenderC.inl + } +} + +project(DDS_CSL_USTest_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_CSL_USTest_Sender_lem_stub DDS_CSL_USTest_Sender_stub DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_Sender_exec.cpp + } + + Header_Files { + CSL_USTest_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_CSL_USTest_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt DDS_CSL_USTest_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_CSL_USTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt DDS_CSL_USTest_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_USTest_SenderS.cpp + CSL_USTest_Sender_svnt.cpp + } + + Header_Files { + CSL_USTest_SenderS.h + CSL_USTest_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + CSL_USTest_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp new file mode 100644 index 00000000000..0e7c1746640 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp @@ -0,0 +1,156 @@ +// -*- C++ -*- +// $Id$ + + +//Test for on_unexpected_status with status LIVELINESS_CHANGED_STATUS' and 'PUBLICATION_MATCHED_STATUS +#include "CSL_USTest_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_CSL_USTest_Sender_Impl +{ + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &unexpected_matched, Atomic_Boolean &unexpected_liveliness) + : unexpected_matched_ (unexpected_matched), + unexpected_liveliness_ (unexpected_liveliness) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind) { + CORBA::ULong kind = status_kind; + if((!CORBA::is_nil(the_entity)) && (kind==DDS::PUBLICATION_MATCHED_STATUS)) + { + this->unexpected_matched_ = true; + } + if((!CORBA::is_nil(the_entity)) && (kind==DDS::LIVELINESS_CHANGED_STATUS)) + { + this->unexpected_liveliness_ = true; + } + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : unexpected_matched_ (false), + unexpected_liveliness_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_topic_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->unexpected_matched_,this->unexpected_liveliness_); + } + + // Supported operations and attributes. + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::CSL_USTest::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_test_topic_write_data (); + } + + void + Sender_exec_i::add_instance_of_topic (const char * key, int x) + { + TestTopic *new_key = new TestTopic; + new_key->key = CORBA::string_dup(key); + new_key->x = x; + this->_ktests_[key] = new_key; + } + void + Sender_exec_i::ccm_activate (void) + { + //add 2 different instances of topic + this->add_instance_of_topic ("EEN",1); + this->add_instance_of_topic ("TWEE",2); + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + if(!this->unexpected_matched_.value () || !this->unexpected_liveliness_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("states 'PUBLICATION_MATCHED_STATUS and/or LIVELINESS_CHANGED_STATUS' in Sender\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'LIVELINESS_CHANGED_STATUS' and 'PUBLICATION_MATCHED_STATUS' in Sender\n") + )); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_USTest_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h new file mode 100644 index 00000000000..7f239db4006 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h @@ -0,0 +1,97 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "CSL_USTest_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_CSL_USTest_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &,Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &unexpected_matched_; + Atomic_Boolean &unexpected_liveliness_; + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void add_instance_of_topic (const char *, int x ); + void tick (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_topic_connector_status(void); + + private: + CCM_DDS::TestTopic::Writer_var writer_; + + ::CSL_USTest::CCM_Sender_Context_var context_; + + Atomic_Boolean unexpected_matched_; + Atomic_Boolean unexpected_liveliness_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map CSL_USTest_Table; + CSL_USTest_Table _ktests_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_CSL_USTest_Sender_Impl (void); + +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp new file mode 100644 index 00000000000..48b2aa22d5e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp @@ -0,0 +1,408 @@ + + + CSL_USTest_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_USTest_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_USTest_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + CSL_USTest_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_USTest_CSL_USTest_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_USTest_CSL_USTest_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + CSL_USTest_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + CSL_USTest_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_CSL_USTest_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_CSL_USTest_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + CSL_USTest_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestUS + + + + + + CSL_USTest_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestUS + + + + + + SenderComponent + SenderNode + + + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + test_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + CSL_USTest_Connector_exec + + + DDS_CSL_USTest_Connector_exec + + + CSL_USTest_Connector_svnt + + + DDS_CSL_USTest_Connector_svnt + + + CSL_USTest_Connector_stub + + + DDS_CSL_USTest_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl new file mode 100644 index 00000000000..93f149290e6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Event_Connection_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef EVENT_CONNECTION_TEST_BASE_IDL +#define EVENT_CONNECTION_TEST_BASE_IDL + +struct Event_ConnectionTest { + string key; //@key + long iteration; +}; + +typedef sequence Event_ConnectionTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc new file mode 100644 index 00000000000..2d6d9957852 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ + +project(DDS_ECT_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=EVENT_CONNECTION_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=Event_Connection_Test_Base_stub_export.h + + IDL_Files { + Event_Connection_Test_Base.idl + } +} + +project(DDS_ECT_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_ECT_Base_idl_gen + ndds_ts_flags += -corba Event_Connection_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Event_Connection_Test_Base.idl + } +} + +project(DDS_ECT_Base_NDDS_TS) : nddslib, taolib { + after += DDS_ECT_Base_ndds_ts_gen DDS_ECT_Base_stub + libs += DDS_ECT_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_ECT_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Event_Connection_Test_Base.cxx + Event_Connection_Test_BasePlugin.cxx + Event_Connection_Test_BaseSupport.cxx + } + + Header_Files { + Event_Connection_Test_Base.h + Event_Connection_Test_BasePlugin.h + Event_Connection_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_ECT_Base_stub) : ccm_stub { + after += DDS_ECT_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_ECT_Base_stub + dynamicflags = EVENT_CONNECTION_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_BaseC.cpp + } + + Header_Files { + Event_Connection_Test_BaseC.h + Event_Connection_Test_Base_stub_export.h + } + + Inline_Files { + Event_Connection_Test_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl new file mode 100644 index 00000000000..3b2080b2a36 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Event_Connection_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef KEYED_TEST_CONNECTOR_IDL_ +#define KEYED_TEST_CONNECTOR_IDL_ + +#include +#include "Base/Event_Connection_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::Event_ConnectionTest, ::Event_ConnectionTest_Seq, Event_ConnectionTest) + +module Event_Connection_Test +{ + connector Event_Connection_Test_Connector : ::CCM_DDS::Event_ConnectionTest::DDS_Event + { + }; +}; + +#endif /* Event_Connection_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc new file mode 100644 index 00000000000..0b50d50242d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_ECT_Base -l .. -o ../lib -u DDS Event_Connection_Test_Connector" + +project(DDS_ECT_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=EVENT_CONNECTION_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Event_Connection_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=EVENT_CONNECTION_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Event_Connection_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=EVENT_CONNECTION_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Event_Connection_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=EVENT_CONNECTION_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Event_Connection_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + Event_Connection_Test_Connector.idl + } +} + +project(DDS_ECT_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_ECT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=EVENT_CONNECTION_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Event_Connection_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Event_Connection_Test_ConnectorE.idl + } +} + +project(DDS_ECT_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_ECT_Connector_lem_gen DDS_ECT_Connector_stub DDS_ECT_Base_stub DDS4CCM_lem_stub + libs += DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_ECT_Connector_lem_stub + dynamicflags = EVENT_CONNECTION_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_ConnectorEC.cpp + } + + Header_Files { + Event_Connection_Test_ConnectorEC.h + Event_Connection_Test_Connector_lem_stub_export.h + } + + Inline_Files { + Event_Connection_Test_ConnectorEC.inl + } +} + +project(DDS_ECT_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_ECT_Connector_idl_gen DDS_ECT_Base_stub + libs += DDS_ECT_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_ECT_Connector_stub + dynamicflags = EVENT_CONNECTION_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_ConnectorC.cpp + } + + Header_Files { + Event_Connection_Test_ConnectorC.h + Event_Connection_Test_Connector_stub_export.h + } + + Inline_Files { + Event_Connection_Test_ConnectorC.inl + } +} + +project(DDS_ECT_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_ECT_Connector_lem_stub DDS_ECT_Connector_stub DDS4CCM_lem_stub DDS_ECT_Base_NDDS_TS + sharedname = DDS_ECT_Connector_exec + libs += DDS_ECT_Connector_stub DDS_ECT_Connector_lem_stub DDS_ECT_Base_stub DDS4CCM_lem_stub DDS_ECT_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = EVENT_CONNECTION_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_Connector_exec.cpp + } + + Header_Files { + Event_Connection_Test_Connector_exec.h + Event_Connection_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_ECT_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_ECT_Connector_lem_stub DDS_ECT_Connector_exec DDS_ECT_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_ECT_Connector_svnt + libs += DDS_ECT_Connector_stub \ + DDS_ECT_Connector_lem_stub \ + DDS_ECT_Base_stub \ + DDS_ECT_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = EVENT_CONNECTION_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_ConnectorS.cpp + Event_Connection_Test_Connector_svnt.cpp + } + + Header_Files { + Event_Connection_Test_ConnectorS.h + Event_Connection_Test_Connector_svnt.h + Event_Connection_Test_Connector_svnt_export.h + } + + Inline_Files { + Event_Connection_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.cpp new file mode 100644 index 00000000000..0e17da08cd4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Event_Connection_Test_Connector_exec.h" + +namespace CIAO_Event_Connection_Test_Event_Connection_Test_Connector_Impl +{ + Event_Connection_Test_Connector_exec_i::Event_Connection_Test_Connector_exec_i () + : DDS_Event_Connector_T () + { + } + + Event_Connection_Test_Connector_exec_i::~Event_Connection_Test_Connector_exec_i (void) + { + } + + extern "C" EVENT_CONNECTION_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Event_Connection_Test_Event_Connection_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Event_Connection_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.h new file mode 100644 index 00000000000..8a5081c039a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef EVENT_CONNECTION_TEST_CONNECTOR_EXEC_H_ +#define EVENT_CONNECTION_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Event_Connection_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Event_Connection_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Event_Connection_Test_BaseSupport.h" + +namespace CIAO_Event_Connection_Test_Event_Connection_Test_Connector_Impl +{ + + // @from use of Event_ConnectionTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + Event_ConnectionTest, + Event_ConnectionTestSeq, + Event_ConnectionTestTypeSupport, + Event_ConnectionTestDataWriter, + Event_ConnectionTestDataReader > Event_ConnectionTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Event_Connection_Test_Event_Connection_Test_Connector_Impl::Event_Connection_Test_Connector_Exec, + Event_ConnectionTest_Seq, + ::CCM_DDS::Event_ConnectionTest::CCM_Writer, + ::CCM_DDS::Event_ConnectionTest::CCM_Updater, + ::CCM_DDS::Event_ConnectionTest::CCM_Getter, + ::CCM_DDS::Event_ConnectionTest::CCM_Reader, + ::Event_Connection_Test::CCM_Event_Connection_Test_Connector_Context, + ::CCM_DDS::Event_ConnectionTest::Listener, + ::CCM_DDS::Event_ConnectionTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> Event_ConnectionTest_Connector_Traits; + + class EVENT_CONNECTION_CONNECTOR_EXEC_Export Event_Connection_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Event_Connection_Test_Connector_exec_i (); + virtual ~Event_Connection_Test_Connector_exec_i (void); + }; + + extern "C" EVENT_CONNECTION_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Event_Connection_Test_Event_Connection_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README new file mode 100644 index 00000000000..02691d71506 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README @@ -0,0 +1,25 @@ +# $Id$ + +This test tests all possible connections between +a Sender and a DDS Event connector and a Receiver and a +DDS Event connector. +The Sender requests the following connections: + * A writer + * A DDS writer + +The Receiver expects the following listeners to be created: + * A ConnectorStatusListener + * A PortStatusListener for the DDS_Listen port + * A PortStatusListener for the DDS_Get port + * A 'normal' listener + +The Receiver requests the following connections: + * A reader + * A getter + * A DDS reader + * A DataControlListener + +This test tests every single connection and reports an error when +a connections couldn't be esthablished. + +No actual read/write/listen operations are performed. diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl new file mode 100644 index 00000000000..447e2d7c28e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Event_Connection_Test_Connector.idl" +#include "Connector/Event_Connection_Test_ConnectorE.idl" + +module Event_Connection_Test +{ + component Receiver + { + port CCM_DDS::Event_ConnectionTest::DDS_Listen info_listen; + port CCM_DDS::Event_ConnectionTest::DDS_Get info_get; + provides CCM_DDS::ConnectorStatusListener status_listener; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc new file mode 100644 index 00000000000..9c3d59f3b04 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_ECT_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_ECT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Event_Connection_Test_Receiver.idl + } +} + +project(DDS_ECT_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_ECT_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Event_Connection_Test_ReceiverE.idl + } +} + +project(DDS_ECT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_ECT_Receiver_lem_gen DDS_ECT_Receiver_stub DDS_ECT_Connector_stub DDS_ECT_Base_stub + libs += Receiver_stub DDS_ECT_Connector_stub DDS_ECT_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_ReceiverEC.cpp + } + + Header_Files { + Event_Connection_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Event_Connection_Test_ReceiverEC.inl + } +} + +project(DDS_ECT_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_ECT_Receiver_idl_gen DDS_ECT_Connector_stub DDS_ECT_Base_stub DDS_ECT_Connector_lem_gen + libs += DDS_ECT_Connector_stub DDS_ECT_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_ReceiverC.cpp + } + + Header_Files { + Event_Connection_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Event_Connection_Test_ReceiverC.inl + } +} + +project(DDS_ECT_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_ECT_Receiver_lem_stub DDS_ECT_Receiver_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_Receiver_exec.cpp + } + + Header_Files { + Event_Connection_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_ECT_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_ECT_Receiver_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_svnt DDS_ECT_Receiver_exec DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_svnt Receiver_exec DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_ReceiverS.cpp + Event_Connection_Test_Receiver_svnt.cpp + } + + Header_Files { + Event_Connection_Test_ReceiverS.h + Event_Connection_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Event_Connection_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..9996e14b039 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp @@ -0,0 +1,233 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Event_Connection_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_Event_Connection_Test_Receiver_Impl +{ + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : //DDS_Get + getter_ok_ (false), + getter_dds_data_reader_ok_ (false), + getter_reader_ok_ (false), + //DDS_Listen + listen_data_control_ok_ (false), + listen_reader_ok_ (false), + listen_dds_data_reader_ok_ (false), + //Provides + listen_port_status_created_ (false), + get_port_status_created_ (false), + get_status_listener_created_ (false), + raw_listener_created_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Port operations. + ::CCM_DDS::Event_ConnectionTest::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new Event_ConnectionTest RAW listener\n"))); + this->raw_listener_created_ = true; + return ::CCM_DDS::Event_ConnectionTest::CCM_Listener::_nil (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener for DDS_Listen\n"))); + this->listen_port_status_created_ = true; + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + this->get_port_status_created_ = true; + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_status_listener(void) + { + this->get_status_listener_created_ = true; + return ::CCM_DDS::CCM_ConnectorStatusListener::_nil (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Event_Connection_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + //DDS_Get + this->getter_getter_ = + this->context_->get_connection_info_get_fresh_data (); + if (!CORBA::is_nil (this->getter_getter_)) + { + this->getter_ok_ = true; + } + this->getter_dds_data_reader_ = + this->context_->get_connection_info_get_dds_entity (); + if (!CORBA::is_nil (this->getter_dds_data_reader_)) + { + this->getter_dds_data_reader_ok_ = true; + } + this->getter_reader_ = + this->context_->get_connection_info_get_data (); + if (!CORBA::is_nil (this->getter_reader_)) + { + this->getter_reader_ok_ = true; + } + //DDS_Listen + this->listen_data_control_ = + this->context_->get_connection_info_listen_data_control (); + + if (!CORBA::is_nil (this->listen_data_control_)) + { + this->listen_data_control_ok_ = true; + } + this->listen_reader_ = + this->context_->get_connection_info_listen_data (); + if (!CORBA::is_nil (this->listen_reader_)) + { + this->listen_reader_ok_ = true; + } + this->listen_dds_data_reader_ = + this->context_->get_connection_info_listen_dds_entity (); + if (!CORBA::is_nil (this->listen_dds_data_reader_)) + { + this->listen_dds_data_reader_ok_ = true; + } + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + //DDS_Get + if (!this->getter_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get getter failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get getter passed\n"))); + } + if (!this->getter_dds_data_reader_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Get failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Get passed\n"))); + } + if (!this->getter_reader_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Get failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Get passed\n"))); + } + //DDS_Listen + if (!this->listen_data_control_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get data listen control of DDS_Listen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get data listen control of DDS_Listen passed\n"))); + } + if (!this->listen_reader_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Listen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Listen passed\n"))); + } + if (!this->listen_dds_data_reader_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get dds reader of DDS_Listen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get dds reader of DDS_Listen passed\n"))); + } + //Provides + if (!this->raw_listener_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : listener not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Listener was created\n"))); + } + if (!this->listen_port_status_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Listen not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Listen was created\n"))); + } + if (!this->get_port_status_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Get not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Get was created\n"))); + } + if (!this->get_status_listener_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : ConnectorStatusListener not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : ConnectorStatusListener was created\n"))); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Event_Connection_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h new file mode 100644 index 00000000000..7536df834d0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h @@ -0,0 +1,87 @@ +// -*- C++ -*- +// $Id$ + +#ifndef EVENT_CONNECTION_RECEIVER_EXEC_H_ +#define EVENT_CONNECTION_RECEIVER_EXEC_H_ + +#include "Event_Connection_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Event_Connection_Test_Receiver_Impl +{ + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::Event_ConnectionTest::CCM_Listener_ptr + get_info_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + + //DDS_Get + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + + virtual CCM_DDS::CCM_ConnectorStatusListener_ptr + get_status_listener(void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Event_Connection_Test::CCM_Receiver_Context_var context_; + //DDS_Get + ::CCM_DDS::Event_ConnectionTest::Getter_var getter_getter_; + ::DDS::DataReader_var getter_dds_data_reader_; + ::CCM_DDS::Event_ConnectionTest::Reader_var getter_reader_; + + bool getter_ok_; + bool getter_dds_data_reader_ok_; + bool getter_reader_ok_; + + //DDS_Listen + ::CCM_DDS::DataListenerControl_var listen_data_control_; + ::CCM_DDS::Event_ConnectionTest::Reader_var listen_reader_; + ::DDS::DataReader_var listen_dds_data_reader_; + + bool listen_data_control_ok_; + bool listen_reader_ok_; + bool listen_dds_data_reader_ok_; + + //Provide checks + bool listen_port_status_created_; + bool get_port_status_created_; + bool get_status_listener_created_; + bool raw_listener_created_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Event_Connection_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl new file mode 100644 index 00000000000..7df049631bf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_EVENT_CONNECTION_TEST_SENDER_IDL +#define DDS_EVENT_CONNECTION_TEST_SENDER_IDL + +#include "Connector/Event_Connection_Test_Connector.idl" +#include "Connector/Event_Connection_Test_ConnectorE.idl" + +module Event_Connection_Test +{ + component Sender + { + port CCM_DDS::Event_ConnectionTest::DDS_Write info_write; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc new file mode 100644 index 00000000000..42cbfebce79 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_ECT_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_ECT_Sender_idl_gen) : componentidldefaults { + after += DDS_ECT_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Event_Connection_Test_Sender.idl + } +} + +project(DDS_ECT_Sender_lem_gen) : ciaoidldefaults { + after += DDS_ECT_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Event_Connection_Test_SenderE.idl + } +} + +project(DDS_ECT_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_ECT_Sender_lem_gen DDS_ECT_Sender_stub DDS_ECT_Base_stub + libs += DDS_ECT_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_SenderEC.cpp + } + + Header_Files { + Event_Connection_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Event_Connection_Test_SenderEC.inl + } +} + +project(DDS_ECT_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_ECT_Sender_idl_gen DDS_ECT_Base_stub DDS_ECT_Connector_stub + libs += DDS_ECT_Base_stub DDS_ECT_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_SenderC.cpp + } + + Header_Files { + Event_Connection_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Event_Connection_Test_SenderC.inl + } +} + +project(DDS_ECT_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_ECT_Sender_lem_stub DDS_ECT_Sender_stub DDS_ECT_Connector_lem_stub DDS_ECT_Connector_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_lem_stub DDS_ECT_Connector_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_Sender_exec.cpp + } + + Header_Files { + Event_Connection_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_ECT_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_ECT_Base_stub DDS_ECT_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_ECT_Connector_stub DDS_ECT_Connector_svnt DDS_ECT_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_ECT_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_ECT_Connector_stub DDS_ECT_Connector_svnt DDS_ECT_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Event_Connection_Test_SenderS.cpp + Event_Connection_Test_Sender_svnt.cpp + } + + Header_Files { + Event_Connection_Test_SenderS.h + Event_Connection_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Event_Connection_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp new file mode 100644 index 00000000000..65f40898cec --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp @@ -0,0 +1,94 @@ +// -*- C++ -*- +// $Id$ + +#include "Event_Connection_Test_Sender_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_Event_Connection_Test_Sender_Impl +{ + //============================================================ + // Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : writer_ok_ (false), + writer_dds_datawriter_ok_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Event_Connection_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = + this->context_->get_connection_info_write_data (); + if (!CORBA::is_nil (this->writer_)) + { + this->writer_ok_ = true; + } + this->writer_dds_datawriter_ = + this->context_->get_connection_info_write_dds_entity (); + if (!CORBA::is_nil (this->writer_dds_datawriter_)) + { + this->writer_dds_datawriter_ok_ = true; + } + } + + void + Sender_exec_i::ccm_activate (void) + { + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + if (!this->writer_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : get writer failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender : Get writer passed\n"))); + } + if (!this->writer_dds_datawriter_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : get dds writer failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender : Get dds writer passed\n"))); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Event_Connection_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h new file mode 100644 index 00000000000..6a6e8f31f46 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +// $Id$ + +#ifndef EVENT_CONNECTION_SENDER_EXEC_H_ +#define EVENT_CONNECTION_SENDER_EXEC_H_ + + +#include "Event_Connection_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Event_Connection_Test_Sender_Impl +{ + //============================================================ + // Sender_exec_i + //============================================================ + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Event_Connection_Test::CCM_Sender_Context_var context_; + CCM_DDS::Event_ConnectionTest::Writer_var writer_; + DDS::DataWriter_var writer_dds_datawriter_; + + bool writer_ok_; + bool writer_dds_datawriter_ok_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Event_Connection_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp new file mode 100644 index 00000000000..5d3530866a5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp @@ -0,0 +1,508 @@ + + + Event_Connection_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Event_Connection_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Event_Connection_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Event_Connection_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Event_Connection_Test_Event_Connection_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Event_Connection_Test_Event_Connection_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Event_Connection_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Event_Connection_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Event_Connection_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Event_Connection_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + Event_Connection_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + Event_Connection_Test + + + + + + Event_Connection_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + Event_Connection_Test + + + + + + SenderComponent + SenderNode + + + + + + + listen_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + + listen_portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + + listen_rawlistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + listen_datacontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + listen_dds_reader + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_dds_entity + false + SimplexReceptacle + + + + push_consumer_dds_entity + true + Facet + + + + + + getter_portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_status + true + Facet + + + + pull_consumer_status + false + SimplexReceptacle + + + + + + getter_fresh_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_fresh_data + false + SimplexReceptacle + + + + pull_consumer_fresh_data + true + Facet + + + + + + getter_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_data + false + SimplexReceptacle + + + + pull_consumer_data + true + Facet + + + + + + getter_dds_reader + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_dds_entity + false + SimplexReceptacle + + + + pull_consumer_dds_entity + true + Facet + + + + + + connector_status_listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + status_listener + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + writer_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + writer_dds_writer + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_dds_entity + false + SimplexReceptacle + + + + supplier_dds_entity + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Event_Connection_Test_Connector_exec + + + DDS_ECT_Connector_exec + + + Event_Connection_Test_Connector_svnt + + + DDS_ECT_Connector_svnt + + + Event_Connection_Test_Connector_stub + + + DDS_ECT_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl new file mode 100644 index 00000000000..c3c330a2c7d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl @@ -0,0 +1,19 @@ +// $Id$ + +/** + * @file Get_Invoker.idl + * @author Marcel Smit + */ + +#ifndef GETTER_INVOKER_IDL +#define GETTER_INVOKER_IDL + +interface GetInvoker +{ + void start_timeout_get_one (); + void start_timeout_get_many (); + void start_get_one (in string key, in long iteration); + void start_get_many (in short keys, in long iterations); +}; + +#endif /* SAMPLE_INFO_IDL */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc new file mode 100755 index 00000000000..04eafadc615 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc @@ -0,0 +1,115 @@ +// $Id$ + +project(DDS_Get_Invoker_idl_gen) : componentidldefaults { + custom_only = 1 + after += + idlflags += -Wb,stub_export_macro=GET_INVOKER_STUB_Export \ + -Wb,stub_export_include=Get_Invoker_stub_export.h \ + -Wb,skel_export_macro=GET_INVOKER_SVNT_Export \ + -Wb,skel_export_include=Get_Invoker_svnt_export.h \ + -Wb,svnt_export_macro=GET_INVOKER_SVNT_Export \ + -Wb,svnt_export_include=Get_Invoker_svnt_export.h \ + -Wb,exec_export_macro=GET_INVOKER_EXEC_Export \ + -Wb,exec_export_include=Get_Invoker_exec_export.h -I.. + + IDL_Files { + Get_Invoker.idl + } +} + +project(DDS_Get_Invoker_lem_gen) : ciaoidldefaults { + after += DDS_Get_Invoker_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=GET_INVOKER_LEM_STUB_Export \ + -Wb,stub_export_include=Get_Invoker_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Get_InvokerE.idl + } +} + +project(DDS_Get_Invoker_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Get_Invoker_lem_gen DDS_Get_Invoker_stub + libs += Get_Invoker_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Get_Invoker_lem_stub + dynamicflags = GET_INVOKER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Get_InvokerEC.cpp + } + + Header_Files { + Get_InvokerEC.h + Get_Invoker_lem_stub_export.h + } + + Inline_Files { + Get_InvokerEC.inl + } +} + +project(DDS_Get_Invoker_stub) : ccm_stub, dds4ccm_base { + after += DDS_Get_Invoker_idl_gen + libs += + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Get_Invoker_stub + dynamicflags = GET_INVOKER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Get_InvokerC.cpp + } + + Header_Files { + Get_InvokerC.h + Get_Invoker_stub_export.h + } + + Inline_Files { + Get_InvokerC.inl + } +} + + +project(DDS_Get_Invoker_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Get_Invoker_lem_stub DDS_Get_Invoker_stub\ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Get_Invoker_svnt + libs += Get_Invoker_stub Get_Invoker_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = GET_INVOKER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Get_InvokerS.cpp + Get_Invoker_svnt.cpp + } + + Header_Files { + Get_InvokerS.h + Get_Invoker_svnt.h + Get_Invoker_svnt_export.h + } + + Inline_Files { + Get_InvokerS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl new file mode 100644 index 00000000000..e1401e9fc0f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Getter_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef GETTER_TEST_BASE_IDL +#define GETTER_TEST_BASE_IDL + +struct GetterTest { + string key; + long iteration; +}; + +typedef sequence GetterTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc new file mode 100755 index 00000000000..d94b959fb3b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Getter_Test_Base" + +project(DDS_Getter_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=GETTER_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=Getter_Test_Base_stub_export.h + + IDL_Files { + Getter_Test_Base.idl + } +} + +project(DDS_Getter_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Getter_Test_Base_idl_gen + ndds_ts_flags += -corba Getter_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Getter_Test_Base.idl + } +} + +project(DDS_Getter_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Getter_Test_Base_ndds_ts_gen DDS_Getter_Test_Base_stub + libs += DDS_Getter_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Getter_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Getter_Test_Base.cxx + Getter_Test_BasePlugin.cxx + Getter_Test_BaseSupport.cxx + } + + Header_Files { + Getter_Test_Base.h + Getter_Test_BasePlugin.h + Getter_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Getter_Test_Base_stub) : ccm_stub { + after += DDS_Getter_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_Getter_Test_Base_stub + dynamicflags = GETTER_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_BaseC.cpp + } + + Header_Files { + Getter_Test_BaseC.h + Getter_Test_Base_stub_export.h + } + + Inline_Files { + Getter_Test_BaseC.inl + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl new file mode 100644 index 00000000000..0bd2c885d3d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Getter_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef GETTER_TEST_CONNECTOR_IDL_ +#define GETTER_TEST_CONNECTOR_IDL_ + +#include +#include "Base/Getter_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::GetterTest, ::GetterTest_Seq, GetterTest) + +module Getter_Test +{ + connector Getter_Test_Connector : ::CCM_DDS::GetterTest::DDS_Event + { + }; +}; + +#endif /* Getter_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc new file mode 100755 index 00000000000..b1516c45eda --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Getter_Test_Base -l .. -o ../lib -u DDS Getter_Test_Connector" + +project(DDS_Getter_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=GETTER_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Getter_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=GETTER_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Getter_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=GETTER_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Getter_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=GETTER_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Getter_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + Getter_Test_Connector.idl + } +} + +project(DDS_Getter_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_Getter_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=GETTER_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Getter_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Getter_Test_ConnectorE.idl + } +} + +project(DDS_Getter_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Getter_Test_Connector_lem_gen DDS_Getter_Test_Connector_stub DDS_Getter_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Getter_Test_Connector_lem_stub + dynamicflags = GETTER_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_ConnectorEC.cpp + } + + Header_Files { + Getter_Test_ConnectorEC.h + Getter_Test_Connector_lem_stub_export.h + } + + Inline_Files { + Getter_Test_ConnectorEC.inl + } +} + +project(DDS_Getter_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Getter_Test_Connector_idl_gen DDS_Getter_Test_Base_stub + libs += DDS_Getter_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Getter_Test_Connector_stub + dynamicflags = GETTER_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_ConnectorC.cpp + } + + Header_Files { + Getter_Test_ConnectorC.h + Getter_Test_Connector_stub_export.h + } + + Inline_Files { + Getter_Test_ConnectorC.inl + } +} + +project(DDS_Getter_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_stub DDS4CCM_lem_stub DDS_Getter_Test_Base_NDDS_TS + sharedname = DDS_Getter_Test_Connector_exec + libs += DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Base_stub DDS4CCM_lem_stub DDS_Getter_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = GETTER_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_Connector_exec.cpp + } + + Header_Files { + Getter_Test_Connector_exec.h + Getter_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Getter_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_exec DDS_Getter_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Getter_Test_Connector_svnt + libs += DDS_Getter_Test_Connector_stub \ + DDS_Getter_Test_Connector_lem_stub \ + DDS_Getter_Test_Base_stub \ + DDS_Getter_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = GETTER_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_ConnectorS.cpp + Getter_Test_Connector_svnt.cpp + } + + Header_Files { + Getter_Test_ConnectorS.h + Getter_Test_Connector_svnt.h + Getter_Test_Connector_svnt_export.h + } + + Inline_Files { + Getter_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.cpp new file mode 100644 index 00000000000..acd0ff1313c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Getter_Test_Connector_exec.h" + +namespace CIAO_Getter_Test_Getter_Test_Connector_Impl +{ + Getter_Test_Connector_exec_i::Getter_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Getter_Test_Connector_exec_i::~Getter_Test_Connector_exec_i (void) + { + } + + extern "C" GETTER_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Getter_Test_Getter_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Getter_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.h new file mode 100644 index 00000000000..5cecdc7aa5a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef GETTER_TEST_CONNECTOR_EXEC_H_ +#define GETTER_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Getter_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Getter_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Getter_Test_BaseSupport.h" + +namespace CIAO_Getter_Test_Getter_Test_Connector_Impl +{ + + // @from use of GetterTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + GetterTest, + GetterTestSeq, + GetterTestTypeSupport, + GetterTestDataWriter, + GetterTestDataReader > GetterTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Getter_Test_Getter_Test_Connector_Impl::Getter_Test_Connector_Exec, + GetterTest_Seq, + ::CCM_DDS::GetterTest::CCM_Writer, + ::CCM_DDS::GetterTest::CCM_Updater, + ::CCM_DDS::GetterTest::CCM_Getter, + ::CCM_DDS::GetterTest::CCM_Reader, + ::Getter_Test::CCM_Getter_Test_Connector_Context, + ::CCM_DDS::GetterTest::Listener, + ::CCM_DDS::GetterTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> GetterTest_Connector_Traits; + + class GETTER_TEST_CONNECTOR_EXEC_Export Getter_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Getter_Test_Connector_exec_i (void); + virtual ~Getter_Test_Connector_exec_i (void); + }; + + extern "C" GETTER_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Getter_Test_Getter_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/README b/modules/CIAO/connectors/dds4ccm/tests/Getter/README new file mode 100644 index 00000000000..00bcdbee833 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/README @@ -0,0 +1,15 @@ +# $Id$ + +This test tests the Getter. + +Before the Sender starts writing samples to DDS, he informs the +Receiver (via a 'normal' CCM interface) about how many keys and +iterations to get from DDS. The receiver starts waiting on those +samples by calling get_one or get_many, using a timeout. +In the meantime the Sender will sleep for half a second before actual +writing the samples to DDS. +Once the DDS connector on the receiver side receives the written samples, +he should wake up and should return the samples to the user code. + +To prevent deadlocks, both getting and writing takes place on the +ORB reactor thread. \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl new file mode 100644 index 00000000000..70205446f49 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Getter_Test_Connector.idl" +#include "Connector/Getter_Test_ConnectorE.idl" + +#include "Base/Get_Invoker.idl" +#include "Base/Get_InvokerE.idl" + +module Getter_Test +{ + component Receiver + { + port CCM_DDS::GetterTest::DDS_Get info_get; + + provides GetInvoker getter_invoke; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc new file mode 100755 index 00000000000..204d58414f6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc @@ -0,0 +1,157 @@ +// $Id$ + +project(DDS_Getter_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_Getter_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Getter_Test_Receiver.idl + } +} + +project(DDS_Getter_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_Getter_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Getter_Test_ReceiverE.idl + } +} + +project(DDS_Getter_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Getter_Test_Receiver_lem_gen DDS_Getter_Test_Receiver_stub \ + DDS_Getter_Test_Connector_stub DDS_Getter_Test_Base_stub \ + DDS_Get_Invoker_stub + libs += Receiver_stub DDS_Getter_Test_Connector_stub \ + DDS_Getter_Test_Base_stub Get_Invoker_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_ReceiverEC.cpp + } + + Header_Files { + Getter_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Getter_Test_ReceiverEC.inl + } +} + +project(DDS_Getter_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Getter_Test_Receiver_idl_gen DDS_Getter_Test_Connector_stub \ + DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_lem_gen \ + DDS_Get_Invoker_stub DDS_Get_Invoker_lem_stub + libs += DDS_Getter_Test_Connector_stub DDS_Getter_Test_Base_stub \ + Get_Invoker_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_ReceiverC.cpp + } + + Header_Files { + Getter_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Getter_Test_ReceiverC.inl + } +} + +project(DDS_Getter_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_Getter_Test_Receiver_lem_stub DDS_Getter_Test_Receiver_stub \ + DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_stub \ + DDS_Getter_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS_Get_Invoker_lem_stub DDS_Get_Invoker_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Getter_Test_Base_stub \ + DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_lem_stub \ + DDS4CCM_lem_stub Get_Invoker_lem_stub Get_Invoker_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_Receiver_exec.cpp + } + + Header_Files { + Getter_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Getter_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Getter_Test_Receiver_lem_stub DDS_Getter_Test_Base_stub \ + DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_svnt \ + DDS_Getter_Test_Receiver_exec DDS_Getter_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_Get_Invoker_stub \ + DDS_Get_Invoker_svnt DDS_Get_Invoker_lem_stub + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Getter_Test_Base_stub \ + DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_svnt \ + Receiver_exec DDS_Getter_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel Get_Invoker_stub Get_Invoker_svnt \ + Get_Invoker_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_ReceiverS.cpp + Getter_Test_Receiver_svnt.cpp + } + + Header_Files { + Getter_Test_ReceiverS.h + Getter_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Getter_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..55d851da9c5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp @@ -0,0 +1,400 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Getter_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" +#include "ace/OS_NS_sys_time.h" + +namespace CIAO_Getter_Test_Receiver_Impl +{ + //============================================================ + // Invoker_exec_i + //============================================================ + Invoker_exec_i::Invoker_exec_i (Receiver_exec_i & callback) + : callback_ (callback) + { + } + + Invoker_exec_i::~Invoker_exec_i (void) + { + } + + void + Invoker_exec_i::start_timeout_get_one () + { + this->callback_.timeout_get_one (); + } + + void + Invoker_exec_i::start_timeout_get_many () + { + this->callback_.timeout_get_many (); + } + + void + Invoker_exec_i::start_get_one (const char * key, + CORBA::Long iteration) + { + this->callback_.start_get_one (key, iteration); + } + + void + Invoker_exec_i::start_get_many (::CORBA::Short keys, ::CORBA::Long iterations) + { + this->callback_.start_get_many (keys, iterations); + } + + //============================================================ + // GetOneHandler + //============================================================ + GetOneHandler::GetOneHandler (Receiver_exec_i &callback, + const char * key, + CORBA::Long iteration) + : callback_ (callback), + key_ (key), + iteration_ (iteration) + { + } + + GetOneHandler::~GetOneHandler () + { + } + + int + GetOneHandler::handle_exception (ACE_HANDLE) + { + this->callback_.get_one (this->key_, this->iteration_); + return 0; + } + + //============================================================ + // GetManyHandler + //============================================================ + GetManyHandler::GetManyHandler (Receiver_exec_i &callback, + CORBA::UShort keys, + CORBA::Long iterations) + : callback_ (callback), + keys_ (keys), + iterations_ (iterations) + { + } + + GetManyHandler::~GetManyHandler () + { + } + + int + GetManyHandler::handle_exception (ACE_HANDLE) + { + this->callback_.get_many (this->keys_, this->iterations_); + return 0; + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + void + Receiver_exec_i::start_get_one (const char * key, + CORBA::Long iteration) + { + GetOneHandler* rh = new GetOneHandler (*this, CORBA::string_dup (key), iteration); + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh); + } + + void + Receiver_exec_i::start_get_many (CORBA::Short keys, + CORBA::Long iterations) + { + GetManyHandler* rh = new GetManyHandler (*this, keys, iterations); + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh); + } + + void + Receiver_exec_i::get_many (CORBA::Short keys , CORBA::Long iterations) + { + // this is very hard to test in a controlled environment. + // When data arrives in DDS, the waiting ends and the + // Getter starts to read the data. The number of samples + // read wil (almost) always be one. + // On the other hand, when the user want to have all the + // samples in DDS, one shouldn't use the wait method. + // Since the spec is not clear about this, the test will + // pass when at least one sample is returned. + // Also, max_delivered_data cannot be tested since only + // one sample is returned. + DDS::Duration_t to; + to.sec = 10; + to.nanosec = 0; + this->getter_->time_out (to); + this->getter_->max_delivered_data (40); + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::get_many: " + "Start getting data from DDS: " + "#keys <%d> - #iterations <%d> with timeout: " + "sec <%d> - nanosec <%u>\n", + keys, iterations, + this->getter_->time_out ().sec, + this->getter_->time_out ().nanosec)); + + GetterTest_Seq *gettertest_seq = 0; + ::CCM_DDS::ReadInfoSeq *readinfo = 0; + bool result = this->getter_->get_many (gettertest_seq, readinfo); + if (result) + { + if (gettertest_seq->length () == 0) + { + ACE_ERROR ((LM_ERROR, CLINFO "Receiver_exec_i::get_many: " + "No data returned. " + "number of samples: " + "expected at least one - received <0>\n")); + } + for (CORBA::ULong i = 0; i < gettertest_seq->length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::get_many: " + "Returned data : key <%C> - iteration <%d>\n", + (*gettertest_seq)[i].key.in (), + (*gettertest_seq)[i].iteration)); + } + } + else + { + ACE_ERROR ((LM_ERROR, CLINFO "ERROR: GET MANY: " + "Time out occurred\n")); + } + } + + void + Receiver_exec_i::get_one (const char * key, CORBA::Long iteration) + { + DDS::Duration_t to; + to.sec = 5; + to.nanosec = 0; + this->getter_->time_out (to); + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::get_one: " + "Start getting data from DDS: " + "key <%C> - iteration <%d> " + " with timeout: " + "sec <%d> - nanosec <%u>\n", + key, iteration, + this->getter_->time_out ().sec, + this->getter_->time_out ().nanosec)); + GetterTest *gettertest_info = new GetterTest; + ::CCM_DDS::ReadInfo readinfo; + ACE_Time_Value tv = ACE_OS::gettimeofday (); + bool result = this->getter_->get_one (gettertest_info, readinfo); + if (result) + { + ACE_Time_Value dur = ACE_OS::gettimeofday () - tv; + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one: " + "get_one took <%#T>\n", + &dur)); + if (ACE_OS::strcmp (gettertest_info->key, key) != 0) + { + ACE_ERROR ((LM_ERROR, CLINFO "ERROR: GET ONE: " + "Expected key does " + "not match received key: " + "expected <%C> - received <%C>\n", + key, + gettertest_info->key.in ())); + } + if (gettertest_info->iteration != iteration) + { + ACE_ERROR ((LM_ERROR, CLINFO "ERROR: GET ONE: " + "Expected iteration does " + "not match received iteration: " + "expected <%d> - received <%d>\n", + iteration, + gettertest_info->iteration)); + } + // check readinfo struct. + if (readinfo.instance_handle.isValid) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: GET MANY: ") + ACE_TEXT ("received instance handle should be invalid ") + ACE_TEXT ("for unkeyed data: ") + ACE_TEXT ("key <%C> - iteration <%u>\n"), + gettertest_info->key.in (), + gettertest_info->iteration)); + } + if (readinfo.source_timestamp.sec == 0 && + readinfo.source_timestamp.nanosec == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: READ ONE LAST: " + "source timestamp seems to be invalid (nil) " + "key <%C> - iteration <%d>\n", + gettertest_info->key.in (), + gettertest_info->iteration)); + } + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::get_one: " + "Returned data : key <%C> - iteration <%d>\n", + gettertest_info->key.in (), + gettertest_info->iteration)); + } + else + { + ACE_ERROR ((LM_ERROR, CLINFO "ERROR: GET ONE: " + "Time out while waiting for " + "key <%C> - iteration <%d>\n", + key, + iteration)); + } + } + + void + Receiver_exec_i::timeout_get_one () + { + try + { + DDS::Duration_t to; + to.sec = 1; + to.nanosec = 0; + this->getter_->time_out (to); + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::timeout_get_one: " + "Start getting data from DDS: timeout: " + "sec <%d> - nanosec <%u>\n", + this->getter_->time_out ().sec, + this->getter_->time_out ().nanosec)); + GetterTest *gettertest_info = new GetterTest; + ::CCM_DDS::ReadInfo readinfo; + bool result = this->getter_->get_one (gettertest_info, readinfo); + if (result) + { + ACE_ERROR ((LM_ERROR, CLINFO "ERROR: TIMEOUT GET ONE: " + "Returning true when get no data.\n")); + } + else + { + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::timeout_get_one: " + "Expected to return no data.\n")); + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, "ERROR: TIMEOUT GET ONE: " + "Caught unexcepted InternalError " + "exception\n")); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: TIMEOUT GET ONE:"); + ACE_ERROR ((LM_ERROR, + "ERROR: Receiver_exec_i::timeout_get_one : Exception caught\n")); + } + } + + void + Receiver_exec_i::timeout_get_many () + { + try + { + DDS::Duration_t to; + to.sec = 1; + to.nanosec = 0; + this->getter_->time_out (to); + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::timeout_get_many: " + "Start getting data from DDS: timeout: " + "sec <%d> - nanosec <%u>\n", + this->getter_->time_out ().sec, + this->getter_->time_out ().nanosec)); + GetterTest_Seq *gettertest_seq; + ::CCM_DDS::ReadInfoSeq *readinfo; + bool result = this->getter_->get_many (gettertest_seq, readinfo); + if (result) + { + ACE_ERROR ((LM_ERROR, CLINFO "ERROR: TIMEOUT GET MANY: " + "Returning true when get no data.\n")); + } + else + { + ACE_DEBUG ((LM_DEBUG, CLINFO "Receiver_exec_i::timeout_get_many: " + "Expected to return no data.\n")); + } + } + catch (const CCM_DDS::InternalError&) + { + ACE_ERROR ((LM_ERROR, "ERROR: TIMEOUT GET MANY: " + "Caught unexcepted InternalError " + "exception\n")); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: TIMEOUT GET MANY:"); + ACE_ERROR ((LM_ERROR, + "ERROR: Receiver_exec_i::timeout_get_many : Exception caught\n")); + } + } + + ::CCM_DDS::GetterTest::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return 0; + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + return 0; + } + + ::CCM_GetInvoker_ptr + Receiver_exec_i::get_getter_invoke () + { + return new Invoker_exec_i (*this); + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Getter_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->getter_ = this->context_->get_connection_info_get_fresh_data (); + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Getter_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h new file mode 100644 index 00000000000..abb08d9db15 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h @@ -0,0 +1,135 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Getter_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Getter_Test_Receiver_Impl +{ + class Receiver_exec_i; + + //============================================================ + // GetOneHandler + //============================================================ + class GetOneHandler + : public ACE_Event_Handler + { + public: + GetOneHandler (Receiver_exec_i &, + const char * key, + CORBA::Long iteration); + virtual ~GetOneHandler (); + + virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); + + private: + Receiver_exec_i &callback_; + const char * key_; + CORBA::Long iteration_; + }; + + //============================================================ + // GetManyHandler + //============================================================ + class GetManyHandler + : public ACE_Event_Handler + { + public: + GetManyHandler (Receiver_exec_i &, + CORBA::UShort keys, + CORBA::Long iterations); + virtual ~GetManyHandler (); + + virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); + + private: + Receiver_exec_i &callback_; + CORBA::UShort keys_; + CORBA::Long iterations_; + }; + + //============================================================ + // Invoker_exec_i + //============================================================ + class Invoker_exec_i + : public virtual ::CCM_GetInvoker, + public virtual ::CORBA::LocalObject + { + public: + Invoker_exec_i (Receiver_exec_i & callback); + virtual ~Invoker_exec_i (void); + + virtual void start_timeout_get_one (); + virtual void start_timeout_get_many (); + + virtual void start_get_one (const char * key, + ::CORBA::Long iteration); + virtual void start_get_many (::CORBA::Short keys , ::CORBA::Long iterations); + + private: + Receiver_exec_i &callback_; + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + virtual ::CCM_DDS::GetterTest::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + + virtual ::CCM_GetInvoker_ptr + get_getter_invoke (); + + void timeout_get_one (); + void timeout_get_many (); + + void start_get_one (const char * key, + CORBA::Long iteration); + void get_one (const char * key, + CORBA::Long iteration); + + void start_get_many (CORBA::Short keys, + CORBA::Long iterations); + void get_many (CORBA::Short keys, + CORBA::Long iterations); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Getter_Test::CCM_Receiver_Context_var context_; + ::CCM_DDS::GetterTest::Getter_var getter_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Getter_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl new file mode 100644 index 00000000000..ef7a9081cb5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl @@ -0,0 +1,33 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_GETTER_TEST_SENDER_IDL +#define DDS_GETTER_TEST_SENDER_IDL + +#include "Connector/Getter_Test_Connector.idl" +#include "Connector/Getter_Test_ConnectorE.idl" + +#include "Base/Get_Invoker.idl" +#include "Base/Get_InvokerE.idl" + +module Getter_Test +{ + component Sender + { + port CCM_DDS::GetterTest::DDS_Write info_write; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + + uses GetInvoker invoke_getter; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc new file mode 100755 index 00000000000..18ab3080e7e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc @@ -0,0 +1,152 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Getter_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Getter_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_Getter_Test_Connector_idl_gen DDS_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Getter_Test_Sender.idl + } +} + +project(DDS_Getter_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_Getter_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Getter_Test_SenderE.idl + } +} + +project(DDS_Getter_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Getter_Test_Sender_lem_gen DDS_Getter_Test_Sender_stub \ + DDS_Getter_Test_Base_stub DDS_Get_Invoker_stub + libs += DDS_Getter_Test_Base_stub Sender_stub Get_Invoker_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_SenderEC.cpp + } + + Header_Files { + Getter_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Getter_Test_SenderEC.inl + } +} + +project(DDS_Getter_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Getter_Test_Sender_idl_gen DDS_Getter_Test_Base_stub \ + DDS_Getter_Test_Connector_stub DDS_Get_Invoker_stub \ + DDS_Get_Invoker_lem_stub + libs += DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_stub \ + Get_Invoker_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_SenderC.cpp + } + + Header_Files { + Getter_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Getter_Test_SenderC.inl + } +} + +project(DDS_Getter_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Getter_Test_Sender_lem_stub DDS_Getter_Test_Sender_stub \ + DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_stub \ + DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Getter_Test_Base_stub \ + DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_stub \ + Get_Invoker_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_Sender_exec.cpp + } + + Header_Files { + Getter_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Getter_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Getter_Test_Base_stub DDS_Getter_Test_Sender_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_Getter_Test_Connector_stub \ + DDS_Getter_Test_Connector_svnt DDS_Getter_Test_Connector_lem_stub \ + DDS_Get_Invoker_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub DDS_Getter_Test_Base_stub DDS4CCM_lem_stub \ + DDS4CCM_skel DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_svnt \ + DDS_Getter_Test_Connector_lem_stub Get_Invoker_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Getter_Test_SenderS.cpp + Getter_Test_Sender_svnt.cpp + } + + Header_Files { + Getter_Test_SenderS.h + Getter_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Getter_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp new file mode 100644 index 00000000000..a12801101d7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp @@ -0,0 +1,278 @@ +// -*- C++ -*- +// $Id$ + +#include "Getter_Test_Sender_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_Getter_Test_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Sender_exec_i &callback) + : callback_ (callback) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr , + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::PUBLICATION_MATCHED_STATUS) + { + this->callback_.start (); + } + } + + + //============================================================ + // Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : iterations_ (10), + keys_ (5), + done_ (false), + ccm_activated_ (false), + last_iter_ (1) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::start_timeout_tests (void) + { + this->invoker_->start_timeout_get_one (); + this->invoker_->start_timeout_get_many (); + } + + void + Sender_exec_i::write_many (void) + { + GetterTest_Seq write_many; + write_many.length (this->keys_ * this->iterations_); + for (CORBA::UShort key = 1; key < this->keys_ + 1; ++key) + { + GetterTest new_key; + char tmp[7]; + ACE_OS::sprintf (tmp, "KEY_%d", key); + new_key.key = CORBA::string_dup(tmp); + for (CORBA::UShort iter = 1; iter < this->iterations_ + 1; ++iter) + { + new_key.iteration = iter; + write_many[key + iter - 2] = new_key; + } + } + try + { + this->invoker_->start_get_many (this->keys_, this->iterations_); + ACE_Time_Value tv (1, 0); + ACE_OS::sleep (tv); + this->writer_->write_many (write_many); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("write_many : written <%u> samples\n"), + write_many.length ())); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + } + } + + + void + Sender_exec_i::start (void) + { + //start can be called more than once... + if (!this->done_ && this->ccm_activated_) + { + this->done_ = true; + start_timeout_tests (); + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, 500000), + ACE_Time_Value (0, 500000)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + } + + void + Sender_exec_i::tick (void) + { + if (this->last_iter_ <= this->iterations_) + { + GetterTest *new_key = new GetterTest; + new_key->key = CORBA::string_dup("KEY_1"); + this->invoker_->start_get_one ( + CORBA::string_dup("KEY_1"), + last_iter_); + new_key->iteration = last_iter_; + ACE_Time_Value tv (0, 50000); + ACE_OS::sleep (tv); + this->writer_->write_one (*new_key, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, CLINFO "Written key <%C> with <%d>\n", + new_key->key.in (), last_iter_)); + ++last_iter_; + } + else + { + write_many (); + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + } + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (*this); + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Getter_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + try + { + this->writer_ = this->context_->get_connection_info_write_data (); + this->invoker_ = this->context_->get_connection_invoke_getter (); + this->ccm_activated_ = true; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n"))); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Getter_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h new file mode 100644 index 00000000000..834f61bd720 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h @@ -0,0 +1,124 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Getter_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Getter_Test_Sender_Impl +{ + class Sender_exec_i; + + //============================================================ + // pulse_Generator + //============================================================ + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + Sender_exec_i &pulse_callback_; + }; + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Sender_exec_i &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ); + virtual + void on_unexpected_status( ::DDS::Entity_ptr , + ::DDS::StatusKind ); + private: + Sender_exec_i &callback_; + }; + + //============================================================ + // Sender_exec_i + //============================================================ + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void start (void); + void tick (void); + + private: + ::Getter_Test::CCM_Sender_Context_var context_; + CCM_DDS::GetterTest::Writer_var writer_; + GetInvoker_var invoker_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + bool done_; + bool ccm_activated_; + CORBA::ULong last_iter_; + + void start_timeout_tests (void); + void write_many (void); + + pulse_Generator * ticker_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Getter_Test_Sender_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp new file mode 100644 index 00000000000..f097c53dae7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp @@ -0,0 +1,366 @@ + + + Getter_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Getter_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Getter_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Getter_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Getter_Test_Getter_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Getter_Test_Getter_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Getter_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Getter_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Getter_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Getter_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + Getter_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + Getter_Test + + + + + + Getter_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + Getter_Test + + + + + + SenderComponent + SenderNode + + + + + keys + + + tk_ulong + + + 5 + + + + + iterations + + + tk_ulong + + + 10 + + + + + + + info_get_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_fresh_data + false + SimplexReceptacle + + + + pull_consumer_fresh_data + true + Facet + + + + + + info_out_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + reader_starter + + invoke_getter + false + SimplexReceptacle + + + + getter_invoke + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Getter_Test_Connector_exec + + + DDS_Getter_Test_Connector_exec + + + Getter_Test_Connector_svnt + + + DDS_Getter_Test_Connector_svnt + + + Getter_Test_Connector_stub + + + DDS_Getter_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl new file mode 100755 index 00000000000..eb1326705fc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl @@ -0,0 +1,248 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 30 seconds to allow task to complete\n"; +sleep (30); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl new file mode 100644 index 00000000000..2c9c7a55b43 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Keyed_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef KEYED_TEST_BASE_IDL +#define KEYED_TEST_BASE_IDL + +struct KeyedTest { + string key; //@key + long iteration; +}; + +typedef sequence KeyedTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc new file mode 100644 index 00000000000..61ffa1b964b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Keyed_Test_Base" + +project(DDS_Keyed_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=KEYED_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=Keyed_Test_Base_stub_export.h + + IDL_Files { + Keyed_Test_Base.idl + } +} + +project(DDS_Keyed_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Keyed_Test_Base_idl_gen + ndds_ts_flags += -corba Keyed_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Keyed_Test_Base.idl + } +} + +project(DDS_Keyed_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Keyed_Test_Base_ndds_ts_gen DDS_Keyed_Test_Base_stub + libs += DDS_Keyed_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Keyed_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Keyed_Test_Base.cxx + Keyed_Test_BasePlugin.cxx + Keyed_Test_BaseSupport.cxx + } + + Header_Files { + Keyed_Test_Base.h + Keyed_Test_BasePlugin.h + Keyed_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Keyed_Test_Base_stub) : ccm_stub { + after += DDS_Keyed_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_Keyed_Test_Base_stub + dynamicflags = KEYED_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_BaseC.cpp + } + + Header_Files { + Keyed_Test_BaseC.h + Keyed_Test_Base_stub_export.h + } + + Inline_Files { + Keyed_Test_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl new file mode 100644 index 00000000000..a8c9d1c4c6e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Keyed_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef KEYED_TEST_CONNECTOR_IDL_ +#define KEYED_TEST_CONNECTOR_IDL_ + +#include +#include "Base/Keyed_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::KeyedTest, ::KeyedTest_Seq, KeyedTest) + +module Keyed_Test +{ + connector Keyed_Test_Connector : ::CCM_DDS::KeyedTest::DDS_Event + { + }; +}; + +#endif /* Keyed_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc new file mode 100644 index 00000000000..bdcda9f692d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Keyed_Test_Base -l .. -o ../lib -u DDS Keyed_Test_Connector" + +project(DDS_Keyed_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=KEYED_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Keyed_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=KEYED_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Keyed_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=KEYED_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Keyed_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=KEYED_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Keyed_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + Keyed_Test_Connector.idl + } +} + +project(DDS_Keyed_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_Keyed_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=KEYED_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Keyed_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Keyed_Test_ConnectorE.idl + } +} + +project(DDS_Keyed_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Keyed_Test_Connector_lem_gen DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Keyed_Test_Connector_lem_stub + dynamicflags = KEYED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_ConnectorEC.cpp + } + + Header_Files { + Keyed_Test_ConnectorEC.h + Keyed_Test_Connector_lem_stub_export.h + } + + Inline_Files { + Keyed_Test_ConnectorEC.inl + } +} + +project(DDS_Keyed_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Keyed_Test_Connector_idl_gen DDS_Keyed_Test_Base_stub + libs += DDS_Keyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Keyed_Test_Connector_stub + dynamicflags = KEYED_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_ConnectorC.cpp + } + + Header_Files { + Keyed_Test_ConnectorC.h + Keyed_Test_Connector_stub_export.h + } + + Inline_Files { + Keyed_Test_ConnectorC.inl + } +} + +project(DDS_Keyed_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_stub DDS4CCM_lem_stub DDS_Keyed_Test_Base_NDDS_TS + sharedname = DDS_Keyed_Test_Connector_exec + libs += DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Base_stub DDS4CCM_lem_stub DDS_Keyed_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = KEYED_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_Connector_exec.cpp + } + + Header_Files { + Keyed_Test_Connector_exec.h + Keyed_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Keyed_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_exec DDS_Keyed_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Keyed_Test_Connector_svnt + libs += DDS_Keyed_Test_Connector_stub \ + DDS_Keyed_Test_Connector_lem_stub \ + DDS_Keyed_Test_Base_stub \ + DDS_Keyed_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = KEYED_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_ConnectorS.cpp + Keyed_Test_Connector_svnt.cpp + } + + Header_Files { + Keyed_Test_ConnectorS.h + Keyed_Test_Connector_svnt.h + Keyed_Test_Connector_svnt_export.h + } + + Inline_Files { + Keyed_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.cpp new file mode 100644 index 00000000000..052eacaeced --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Keyed_Test_Connector_exec.h" + +namespace CIAO_Keyed_Test_Keyed_Test_Connector_Impl +{ + Keyed_Test_Connector_exec_i::Keyed_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Keyed_Test_Connector_exec_i::~Keyed_Test_Connector_exec_i (void) + { + } + + extern "C" KEYED_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Keyed_Test_Keyed_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Keyed_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.h new file mode 100644 index 00000000000..0c9fcc66731 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef KEYED_TEST_CONNECTOR_EXEC_H_ +#define KEYED_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Keyed_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Keyed_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Keyed_Test_BaseSupport.h" + +namespace CIAO_Keyed_Test_Keyed_Test_Connector_Impl +{ + + // @from use of KeyedTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + KeyedTest, + KeyedTestSeq, + KeyedTestTypeSupport, + KeyedTestDataWriter, + KeyedTestDataReader > KeyedTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Keyed_Test_Keyed_Test_Connector_Impl::Keyed_Test_Connector_Exec, + KeyedTest_Seq, + ::CCM_DDS::KeyedTest::CCM_Writer, + ::CCM_DDS::KeyedTest::CCM_Updater, + ::CCM_DDS::KeyedTest::CCM_Getter, + ::CCM_DDS::KeyedTest::CCM_Reader, + ::Keyed_Test::CCM_Keyed_Test_Connector_Context, + ::CCM_DDS::KeyedTest::Listener, + ::CCM_DDS::KeyedTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> KeyedTest_Connector_Traits; + + class KEYED_TEST_CONNECTOR_EXEC_Export Keyed_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Keyed_Test_Connector_exec_i (void); + virtual ~Keyed_Test_Connector_exec_i (void); + }; + + extern "C" KEYED_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Keyed_Test_Keyed_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README new file mode 100644 index 00000000000..8bc6dae4a7e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README @@ -0,0 +1,16 @@ +# $Id$ + +This test creates instances in DDS by using the +updater port. After that, every instance is updated. +The number of instances (keys) and the number of +updates (iterations) per key can be defined in +the deployment plan. + +The Receiver checks whether the keys were updated +correctly by using the read_one method on the reader. +The Receiver should know the number of instances (keys) and +the number of iterations per key. These should be configured +in the deployment plan. + +An error is reported when the receiver did not receive +the correct number of samples. \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl new file mode 100644 index 00000000000..495c11391c7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Keyed_Test_Connector.idl" +#include "Connector/Keyed_Test_ConnectorE.idl" + +module Keyed_Test +{ + component Receiver + { + port CCM_DDS::KeyedTest::DDS_Listen info_out; + attribute unsigned long rate; + attribute unsigned short iterations; + attribute unsigned short keys; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc new file mode 100644 index 00000000000..f3ee28f4b96 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_Keyed_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_Keyed_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Keyed_Test_Receiver.idl + } +} + +project(DDS_Keyed_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_Keyed_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Keyed_Test_ReceiverE.idl + } +} + +project(DDS_Keyed_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Keyed_Test_Receiver_lem_gen DDS_Keyed_Test_Receiver_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub + libs += Receiver_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_ReceiverEC.cpp + } + + Header_Files { + Keyed_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Keyed_Test_ReceiverEC.inl + } +} + +project(DDS_Keyed_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Keyed_Test_Receiver_idl_gen DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_lem_gen + libs += DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_ReceiverC.cpp + } + + Header_Files { + Keyed_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Keyed_Test_ReceiverC.inl + } +} + +project(DDS_Keyed_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_Keyed_Test_Receiver_lem_stub DDS_Keyed_Test_Receiver_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_Receiver_exec.cpp + } + + Header_Files { + Keyed_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Keyed_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Keyed_Test_Receiver_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt DDS_Keyed_Test_Receiver_exec DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt Receiver_exec DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_ReceiverS.cpp + Keyed_Test_Receiver_svnt.cpp + } + + Header_Files { + Keyed_Test_ReceiverS.h + Keyed_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Keyed_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..e9bd49872d7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp @@ -0,0 +1,233 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Keyed_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" + +namespace CIAO_Keyed_Test_Receiver_Impl +{ + //============================================================ + // read_action_Generator + //============================================================ + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + this->pulse_callback_.read (); + return 0; + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (1), + iterations_ (10), + keys_ (5), + expected_ (50) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + void + Receiver_exec_i::check_received_samples () + { + bool all_received = true; + for (Last_Iteration_Table::iterator iter = this->last_iters_.begin (); + iter != this->last_iters_.end () && all_received; + ++iter) + { + all_received = iter->second == this->iterations_; + } + if (all_received) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("All samples received. Stop the timer\n"))); + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + } + } + + void + Receiver_exec_i::read (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + try + { + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + KeyedTest keyedtest_info; + char key[100]; + ACE_OS::sprintf (key, "KEY_%d", i); + keyedtest_info.key = CORBA::string_dup (key); + ::CCM_DDS::ReadInfo readinfo; + this->reader_->read_one_last (keyedtest_info, readinfo, ::DDS::HANDLE_NIL); + time_t tim = readinfo.source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ONE Read_Info ") + ACE_TEXT (" -> date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfo.source_timestamp.nanosec)); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE keyed test info : ") + ACE_TEXT ("received keyedtest_info for <%C> at %u\n"), + keyedtest_info.key.in (), + keyedtest_info.iteration)); + this->last_iters_[key] = keyedtest_info.iteration; + check_received_samples (); + } + } + catch(const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: KeyedTest_Read: ") + ACE_TEXT ("Unexpected NonExistent exception received\n"))); + } + catch(const CCM_DDS::NonExistent& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("KeyedTest_Read: ") + ACE_TEXT ("Expected NonExistent received\n"))); + } + } + + ::CORBA::ULong + Receiver_exec_i::rate (void) + { + return this->rate_; + } + + void + Receiver_exec_i::rate ( + ::CORBA::ULong rate) + { + this->rate_ = rate; + } + + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + this->expected_ = this->iterations_ * this->keys_; + } + + ::CORBA::UShort + Receiver_exec_i::keys (void) + { + return this->keys_; + } + + void + Receiver_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + this->expected_ = this->iterations_ * this->keys_; + } + + ::CCM_DDS::KeyedTest::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return 0; + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + return 0; + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Keyed_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(0, usec), + ACE_Time_Value(0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + CORBA::UShort received_ = 0; + for (Last_Iteration_Table::iterator iter = this->last_iters_.begin (); + iter != this->last_iters_.end (); + ++iter) + { + ACE_DEBUG ((LM_INFO, "Receiver_exec_i summary for <%C>: last sample <%u> - expected <%u>\n", + iter->first.c_str(), + iter->second, + this->iterations_)); + received_ += iter->second; + } + + if (received_ < this->expected_) + { + ACE_ERROR ((LM_ERROR, "ERROR : Expected to receive %u samples, actually got %u\n", + this->expected_, received_)); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Keyed_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h new file mode 100644 index 00000000000..250f25cc256 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h @@ -0,0 +1,104 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Keyed_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Reactor.h" + +#include + +namespace CIAO_Keyed_Test_Receiver_Impl +{ + class Receiver_exec_i; + + //============================================================ + // read_action_Generator + //============================================================ + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + Receiver_exec_i &pulse_callback_; + + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + void read (void); + + virtual ::CORBA::ULong rate (void); + + virtual void rate (::CORBA::ULong rate); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual ::CCM_DDS::KeyedTest::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Keyed_Test::CCM_Receiver_Context_var context_; + ::CCM_DDS::KeyedTest::Reader_var reader_; + + read_action_Generator * ticker_; + CORBA::ULong rate_; + CORBA::UShort iterations_; + CORBA::UShort keys_; + CORBA::ULong expected_; + + typedef std::map Last_Iteration_Table; + Last_Iteration_Table last_iters_; + + void + check_received_samples (); + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Keyed_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl new file mode 100644 index 00000000000..a6e634275e8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_KEYED_TEST_SENDER_IDL +#define DDS_KEYED_TEST_SENDER_IDL + +#include "Connector/Keyed_Test_Connector.idl" +#include "Connector/Keyed_Test_ConnectorE.idl" + +module Keyed_Test +{ + component Sender + { + port CCM_DDS::KeyedTest::DDS_Write info_write; + attribute unsigned long rate; + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc new file mode 100644 index 00000000000..37a3fb1bd5e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Keyed_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Keyed_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_Keyed_Test_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Keyed_Test_Sender.idl + } +} + +project(DDS_Keyed_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_Keyed_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Keyed_Test_SenderE.idl + } +} + +project(DDS_Keyed_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Keyed_Test_Sender_lem_gen DDS_Keyed_Test_Sender_stub DDS_Keyed_Test_Base_stub + libs += DDS_Keyed_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_SenderEC.cpp + } + + Header_Files { + Keyed_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Keyed_Test_SenderEC.inl + } +} + +project(DDS_Keyed_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Keyed_Test_Sender_idl_gen DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub + libs += DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_SenderC.cpp + } + + Header_Files { + Keyed_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Keyed_Test_SenderC.inl + } +} + +project(DDS_Keyed_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Keyed_Test_Sender_lem_stub DDS_Keyed_Test_Sender_stub DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_Sender_exec.cpp + } + + Header_Files { + Keyed_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Keyed_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt DDS_Keyed_Test_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_Keyed_Test_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt DDS_Keyed_Test_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyed_Test_SenderS.cpp + Keyed_Test_Sender_svnt.cpp + } + + Header_Files { + Keyed_Test_SenderS.h + Keyed_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Keyed_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp new file mode 100644 index 00000000000..ac03ace5fa6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp @@ -0,0 +1,202 @@ +// -*- C++ -*- +// $Id$ + +#include "Keyed_Test_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_Keyed_Test_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : rate_ (1), + iterations_ (10), + keys_ (5) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::tick () + { + if (this->last_key != this->ktests_.end ()) + { + try + { + ++this->last_key->second->iteration; + this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"), + this->last_key->first.c_str (), + this->last_key->second->iteration)); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, "ERROR: Internal Error while writing KeyedTest info for <%C>.\n", + this->last_key->first.c_str ())); + } + ++this->last_key; + } + else + { + //onto the next iteration + this->last_key = this->ktests_.begin (); + while (this->last_key != this->ktests_.end ()) + { + if (this->last_key->second->iteration == this->iterations_) + { + ++this->last_key; + } + else + { + break; + } + } + } + } + + void + Sender_exec_i::start (void) + { + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + ::CORBA::ULong + Sender_exec_i::rate (void) + { + return this->rate_; + } + + void + Sender_exec_i::rate (::CORBA::ULong rate) + { + this->rate_ = rate; + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Keyed_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_write_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + this->start (); + + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + KeyedTest *new_key = new KeyedTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 0; + + this->ktests_[key] = new_key; + } + this->last_key = this->ktests_.begin (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Keyed_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h new file mode 100644 index 00000000000..4c519576bd7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h @@ -0,0 +1,93 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Keyed_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_Keyed_Test_Sender_Impl +{ + class Sender_exec_i; + + //============================================================ + // pulse_Generator + //============================================================ + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + Sender_exec_i &pulse_callback_; + }; + + //============================================================ + // Sender_exec_i + //============================================================ + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::ULong rate (void); + + virtual void rate (::CORBA::ULong rate); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void tick (); + + private: + void start (void); + void stop (void); + + CCM_DDS::KeyedTest::Writer_var writer_; + + pulse_Generator * ticker_; + ::Keyed_Test::CCM_Sender_Context_var context_; + CORBA::ULong rate_; + CORBA::UShort iterations_; + CORBA::UShort keys_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map Keyed_Test_Table; + Keyed_Test_Table ktests_; + Keyed_Test_Table::iterator last_key; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Keyed_Test_Sender_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp new file mode 100644 index 00000000000..1b0f0ce9d95 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp @@ -0,0 +1,431 @@ + + + Keyed_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Keyed_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Keyed_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Keyed_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Keyed_Test_Keyed_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Keyed_Test_Keyed_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Keyed_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Keyed_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Keyed_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Keyed_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + rate + + + tk_long + + + 10 + + + + + keys + + + tk_ulong + + + 5 + + + + + iterations + + + tk_ulong + + + 9 + + + + + + Keyed_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + Keyed_Test + + + + + + Keyed_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + Keyed_Test + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_long + + + 1 + + + + + keys + + + tk_ulong + + + 5 + + + + + iterations + + + tk_ulong + + + 9 + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _rawlistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Keyed_Test_Connector_exec + + + DDS_Keyed_Test_Connector_exec + + + Keyed_Test_Connector_svnt + + + DDS_Keyed_Test_Connector_svnt + + + Keyed_Test_Connector_stub + + + DDS_Keyed_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl new file mode 100755 index 00000000000..6f82b757a0a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl new file mode 100644 index 00000000000..a824bb09c00 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Writer_Base.idl + * @author Marcel Smit + */ + +#ifndef WRITER_BASE_IDL +#define WRITER_BASE_IDL + +struct WriterTest { + string key; //@key + long iteration; +}; + +typedef sequence WriterTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc new file mode 100644 index 00000000000..0fa673ad619 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Writer_Base" + +project(DDS_KeyedWriterBase_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=WRITER_BASE_STUB_Export \ + -Wb,stub_export_include=Writer_Base_stub_export.h + + IDL_Files { + Writer_Base.idl + } +} + +project(DDS_KeyedWriterBase_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_KeyedWriterBase_idl_gen + ndds_ts_flags += -corba Writer_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Writer_Base.idl + } +} + +project(DDS_KeyedWriterBase_NDDS_TS) : nddslib, taolib { + after += DDS_KeyedWriterBase_ndds_ts_gen DDS_KeyedWriterBase_stub + libs += DDS_KeyedWriterBase_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_KeyedWriterBase_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Writer_Base.cxx + Writer_BasePlugin.cxx + Writer_BaseSupport.cxx + } + + Header_Files { + Writer_Base.h + Writer_BasePlugin.h + Writer_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_KeyedWriterBase_stub) : ccm_stub { + after += DDS_KeyedWriterBase_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_KeyedWriterBase_stub + dynamicflags = WRITER_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_BaseC.cpp + } + + Header_Files { + Writer_BaseC.h + Writer_Base_stub_export.h + } + + Inline_Files { + Writer_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl new file mode 100644 index 00000000000..fda63cd838b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Writer_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef WRITER_CONNECTOR_IDL_ +#define WRITER_CONNECTOR_IDL_ + +#include +#include "Base/Writer_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::WriterTest, ::WriterTest_Seq, WriterTest) + +module Writer +{ + connector Writer_Connector : ::CCM_DDS::WriterTest::DDS_Event + { + }; +}; + +#endif /* Writer_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc new file mode 100644 index 00000000000..e568d289da1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_KeyedWriterBase -l .. -o ../lib -u DDS Writer_Connector" + +project(DDS_KeyedWriterConnector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Writer_Connector_stub_export.h \ + -Wb,skel_export_macro=WRITER_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Writer_Connector_svnt_export.h \ + -Wb,svnt_export_macro=WRITER_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Writer_Connector_svnt_export.h \ + -Wb,exec_export_macro=WRITER_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Writer_Connector_exec_export.h \ + -I .. + + IDL_Files { + Writer_Connector.idl + } +} + +project(DDS_KeyedWriterConnector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_KeyedWriterConnector_idl_gen + idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Writer_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Writer_ConnectorE.idl + } +} + +project(DDS_KeyedWriterConnector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_KeyedWriterConnector_lem_gen DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub DDS4CCM_lem_stub + libs += DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_KeyedWriterConnector_lem_stub + dynamicflags = WRITER_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ConnectorEC.cpp + } + + Header_Files { + Writer_ConnectorEC.h + Writer_Connector_lem_stub_export.h + } + + Inline_Files { + Writer_ConnectorEC.inl + } +} + +project(DDS_KeyedWriterConnector_stub) : ccm_stub, dds4ccm_base { + after += DDS_KeyedWriterConnector_idl_gen DDS_KeyedWriterBase_stub + libs += DDS_KeyedWriterBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_KeyedWriterConnector_stub + dynamicflags = WRITER_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ConnectorC.cpp + } + + Header_Files { + Writer_ConnectorC.h + Writer_Connector_stub_export.h + } + + Inline_Files { + Writer_ConnectorC.inl + } +} + +project(DDS_KeyedWriterConnector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub DDS_KeyedWriterBase_NDDS_TS + sharedname = DDS_KeyedWriterConnector_exec + libs += DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterBase_stub DDS4CCM_lem_stub DDS_KeyedWriterBase_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = WRITER_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_Connector_exec.cpp + } + + Header_Files { + Writer_Connector_exec.h + Writer_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_KeyedWriterConnector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_exec DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub + sharedname = DDS_KeyedWriterConnector_svnt + libs += DDS_KeyedWriterConnector_stub \ + DDS_KeyedWriterConnector_lem_stub \ + DDS_KeyedWriterBase_stub \ + DDS_KeyedWriterConnector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = WRITER_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ConnectorS.cpp + Writer_Connector_svnt.cpp + } + + Header_Files { + Writer_ConnectorS.h + Writer_Connector_svnt.h + Writer_Connector_svnt_export.h + } + + Inline_Files { + Writer_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.cpp new file mode 100644 index 00000000000..81585b43a78 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Writer_Connector_exec.h" + +namespace CIAO_Writer_Writer_Connector_Impl +{ + Writer_Connector_exec_i::Writer_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Writer_Connector_exec_i::~Writer_Connector_exec_i (void) + { + } + + extern "C" WRITER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Writer_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Writer_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.h new file mode 100644 index 00000000000..05f2d6bee47 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector_exec.h @@ -0,0 +1,60 @@ +// -*- C++ -*- +// $Id$ + +#ifndef WRITER_CONNECTOR_EXEC_H_ +#define WRITER_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Writer_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Writer_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Writer_BaseSupport.h" + +namespace CIAO_Writer_Writer_Connector_Impl +{ + // @from use of WriterTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + WriterTest, + WriterTestSeq, + WriterTestTypeSupport, + WriterTestDataWriter, + WriterTestDataReader > WriterTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Writer_Writer_Connector_Impl::Writer_Connector_Exec, + WriterTest_Seq, + ::CCM_DDS::WriterTest::CCM_Writer, + ::CCM_DDS::WriterTest::CCM_Updater, + ::CCM_DDS::WriterTest::CCM_Getter, + ::CCM_DDS::WriterTest::CCM_Reader, + ::Writer::CCM_Writer_Connector_Context, + ::CCM_DDS::WriterTest::Listener, + ::CCM_DDS::WriterTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> WriterTest_Connector_Traits; + + class WRITER_CONNECTOR_EXEC_Export Writer_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Writer_Connector_exec_i (void); + virtual ~Writer_Connector_exec_i (void); + }; + + extern "C" WRITER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Writer_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README new file mode 100644 index 00000000000..2e2e55625dd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README @@ -0,0 +1,12 @@ +# $Id$ + +KeyedWriter tests the DDS_Writer. It tests write_one +and write_many, in combination with register_instance. + +In descriptors/USER_QOS_PROFILE.xml, max_instances is +set to one. An exception should be thrown when the second +instance is registered. Every subsequent write of +unregistered keys, should result in an error. + +When invoking write_many, writing the first sample should succeed. +Writing every subsequent sample should fail. diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl new file mode 100644 index 00000000000..534831b4a5c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl @@ -0,0 +1,22 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Writer_Connector.idl" +#include "Connector/Writer_ConnectorE.idl" + +module Writer +{ + component Receiver + { + port CCM_DDS::WriterTest::DDS_Listen info_out; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc new file mode 100644 index 00000000000..0ab377d825c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_KeyedWriterReceiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_KeyedWriterConnector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Writer_Receiver.idl + } +} + +project(DDS_KeyedWriterReceiver_lem_gen) : ciaoidldefaults { + after += DDS_KeyedWriterReceiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Writer_ReceiverE.idl + } +} + +project(DDS_KeyedWriterReceiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_KeyedWriterReceiver_lem_gen DDS_KeyedWriterReceiver_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub + libs += Receiver_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ReceiverEC.cpp + } + + Header_Files { + Writer_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Writer_ReceiverEC.inl + } +} + +project(DDS_KeyedWriterReceiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_KeyedWriterReceiver_idl_gen DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_lem_gen + libs += DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ReceiverC.cpp + } + + Header_Files { + Writer_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Writer_ReceiverC.inl + } +} + +project(DDS_KeyedWriterReceiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_KeyedWriterReceiver_lem_stub DDS_KeyedWriterReceiver_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_Receiver_exec.cpp + } + + Header_Files { + Writer_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_KeyedWriterReceiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_KeyedWriterReceiver_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt DDS_KeyedWriterReceiver_exec DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt Receiver_exec DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ReceiverS.cpp + Writer_Receiver_svnt.cpp + } + + Header_Files { + Writer_ReceiverS.h + Writer_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Writer_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp new file mode 100644 index 00000000000..0dee34f35b5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp @@ -0,0 +1,125 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Writer_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" + +namespace CIAO_Writer_Receiver_Impl +{ + //============================================================ + // WriterTest_Listener_exec_i + //============================================================ + WriterTest_Listener_exec_i::WriterTest_Listener_exec_i () + { + } + + WriterTest_Listener_exec_i::~WriterTest_Listener_exec_i (void) + { + } + + void + WriterTest_Listener_exec_i::on_one_data ( + const WriterTest & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("WriterTest_Listener: ") + ACE_TEXT ("received writer info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.iteration)); + } + + void + WriterTest_Listener_exec_i::on_many_data ( + const WriterTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + for (unsigned int i = 0; i < an_instance.length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("WriterTest_Listener: ") + ACE_TEXT ("received writer info for <%C> at %u\n"), + an_instance[i].key.in (), + an_instance[i].iteration)); + } + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + ::CCM_DDS::WriterTest::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new WriterTest RAW listener\n"))); + return new WriterTest_Listener_exec_i (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + return 0; + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Writer::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h new file mode 100644 index 00000000000..5860ebe5742 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h @@ -0,0 +1,75 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Writer_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Writer_Receiver_Impl +{ + //============================================================ + // WriterTest_Listener_exec_i + //============================================================ + class RECEIVER_EXEC_Export WriterTest_Listener_exec_i + : public virtual ::CCM_DDS::WriterTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + WriterTest_Listener_exec_i (); + virtual ~WriterTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const WriterTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const WriterTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + virtual ::CCM_DDS::WriterTest::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Writer::CCM_Receiver_Context_var context_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl new file mode 100644 index 00000000000..9d5f6e8f19e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_KEYED_TEST_SENDER_IDL +#define DDS_KEYED_TEST_SENDER_IDL + +#include "Connector/Writer_Connector.idl" +#include "Connector/Writer_ConnectorE.idl" + +module Writer +{ + component Sender + { + port CCM_DDS::WriterTest::DDS_Write info_write; + attribute unsigned short rate; + attribute unsigned short iterations; + attribute unsigned short keys; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc new file mode 100644 index 00000000000..de56ee69ac2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_KeyedWriterBase -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_KeyedWriterSender_idl_gen) : componentidldefaults { + after += DDS_KeyedWriterConnector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Writer_Sender.idl + } +} + +project(DDS_KeyedWriterSender_lem_gen) : ciaoidldefaults { + after += DDS_KeyedWriterSender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Writer_SenderE.idl + } +} + +project(DDS_KeyedWriterSender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_KeyedWriterSender_lem_gen DDS_KeyedWriterSender_stub DDS_KeyedWriterBase_stub + libs += DDS_KeyedWriterBase_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_SenderEC.cpp + } + + Header_Files { + Writer_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Writer_SenderEC.inl + } +} + +project(DDS_KeyedWriterSender_stub) : ccm_stub, dds4ccm_base { + after += DDS_KeyedWriterSender_idl_gen DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub + libs += DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_SenderC.cpp + } + + Header_Files { + Writer_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Writer_SenderC.inl + } +} + +project(DDS_KeyedWriterSender_exec) : ciao_executor, dds4ccm_base { + after += DDS_KeyedWriterSender_lem_stub DDS_KeyedWriterSender_stub DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_Sender_exec.cpp + } + + Header_Files { + Writer_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_KeyedWriterSender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_KeyedWriterBase_stub DDS_KeyedWriterSender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt DDS_KeyedWriterConnector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_KeyedWriterBase_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt DDS_KeyedWriterConnector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_SenderS.cpp + Writer_Sender_svnt.cpp + } + + Header_Files { + Writer_SenderS.h + Writer_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Writer_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp new file mode 100644 index 00000000000..4b5801bf31b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp @@ -0,0 +1,368 @@ +// -*- C++ -*- +// $Id$ + +#include "Writer_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_Writer_Sender_Impl +{ + //============================================================ + // pulse_Generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : rate_ (1), + iterations_ (10), + keys_ (5), + assignment_ (WRITE_KEYED), + last_iteration_ (0) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::reset_iterations () + { + for (Writer_Table::iterator i = this->ktests_.begin (); + i != this->ktests_.end (); + ++i) + { + i->second->iteration = 0; + } + } + + void + Sender_exec_i::unregister_handles () + { + for (Writer_Table::iterator i = this->ktests_.begin (); + i != this->ktests_.end (); + ++i) + { + try + { + ::DDS::InstanceHandle_t hnd = this->handles_[i->first.c_str ()]; + this->writer_->unregister_instance (i->second, hnd); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Unregistered <%C> - iteration <%d> - valid handle <%d>\n"), + i->first.c_str (), + i->second->iteration, + hnd.isValid)); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("unknown exception caught during unregister_instance.\n"))); + } + } + } + + void + Sender_exec_i::register_handles() + { + Writer_Table::iterator i = this->ktests_.begin (); + ::DDS::InstanceHandle_t hnd = this->writer_->register_instance (i->second); + if (!hnd.isValid) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to register handle for <%C> - iteration <%d>\n"), + i->first.c_str (), i->second->iteration)); + } + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Registering instance with <%C> - iteration <%d> - valid handle <%d>\n"), + i->second->key.in (), + i->second->iteration, + hnd.isValid)); + this->handles_[i->first.c_str ()] = hnd; + ++i; + //test exception. In Qos, max_instances is set to 1 + //so only one instance may be registered. + hnd = this->writer_->register_instance (i->second); + if (hnd.isValid) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Shouldn't be able to register instance for <%C> - iteration <%d>\n"), + i->first.c_str (), i->second->iteration)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Registering second key not succeeded.\n"), + i->first.c_str (), i->second->iteration)); + } + } + + void + Sender_exec_i::start_new_assignment (WRITER_ASSIGNMENT assignment) + { + this->last_key = this->ktests_.begin (); + this->assignment_ = assignment; + reset_iterations (); + } + + void + Sender_exec_i::write_keyed () + { + if (this->last_key != this->ktests_.end ()) + { + bool exception_caught = false; + try + { + ++this->last_key->second->iteration; + ::DDS::InstanceHandle_t hnd = this->handles_[this->last_key->first.c_str ()]; + this->writer_->write_one (this->last_key->second, hnd); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written keyed <%C> - iteration <%d> - valid handle <%d>\n"), + this->last_key->first.c_str (), + this->last_key->second->iteration, + hnd.isValid)); + } + catch (const CCM_DDS::InternalError& ) + { + exception_caught = true; + if (this->last_key == this->ktests_.begin ()) + { // the first key should throw this exception; all others + // shouldn't + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while updating writer info for <%C>.\n"), + this->last_key->first.c_str ())); + } + } + //only the first iterations are registered. + if (this->last_key != this->ktests_.begin () && !exception_caught) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: No exception caught ") + ACE_TEXT ("while writing unregistered data\n"))); + } + ++this->last_key; + } + else + { + //onto the next iteration + this->last_key = this->ktests_.begin (); + while (this->last_key != this->ktests_.end ()) + { + if (this->last_key->second->iteration == this->iterations_) + { + //next key + ++this->last_key; + } + else + { + break; + } + } + if (this->last_key == this->ktests_.end ()) + { + unregister_handles (); + start_new_assignment (WRITE_MULTI); + } + } + } + + void + Sender_exec_i::write_many () + { + bool expected_exception_thrown = false; + + WriterTest_Seq write_many_seq; + write_many_seq.length (this->keys_ * this->iterations_); + int iter_key = 0; + for (Writer_Table::iterator iter = this->ktests_.begin (); + iter != this->ktests_.end (); + ++iter) + { + ++iter_key; + for (int i = 1; i < this->iterations_ + 1; ++i) + { + char key[7]; + WriterTest new_key; + ACE_OS::sprintf (key, "KEY_%d", iter_key); + new_key.key = CORBA::string_dup(key); + new_key.iteration = i; + write_many_seq[iter_key + i - 2] = new_key; + } + } + try + { + this->writer_->write_many (write_many_seq); + } + catch (const CCM_DDS::InternalError& ex) + { + if (ex.index == 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal excep ") + ACE_TEXT ("while write many for first instance : index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + } + else + { + expected_exception_thrown = true; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected Internal excep ") + ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + } + } + if (!expected_exception_thrown) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Expected Internal excep ") + ACE_TEXT ("was not thrown\n"))); + } + + this->assignment_ = WRITE_NONE; + } + + void + Sender_exec_i::tick () + { + switch (this->assignment_) + { + case WRITE_KEYED: + write_keyed (); + break; + case WRITE_MULTI: + write_many (); + default: + break; + } + } + + void + Sender_exec_i::start (void) + { + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + ::CORBA::UShort + Sender_exec_i::rate (void) + { + return this->rate_; + } + + void + Sender_exec_i::rate (::CORBA::UShort rate) + { + this->rate_ = rate; + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations + 2; //for extra tests. + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys + 1; //for extra tests. + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Writer::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_write_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + this->start (); + + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + WriterTest *new_key = new WriterTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 1; + + this->ktests_[key] = new_key; + } + this->last_key = this->ktests_.begin (); + register_handles (); + reset_iterations (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h new file mode 100644 index 00000000000..274ee32ee32 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h @@ -0,0 +1,116 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Writer_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_Writer_Sender_Impl +{ + class Sender_exec_i; + + enum WRITER_ASSIGNMENT { + WRITE_NONE, + WRITE_KEYED, + WRITE_MULTI + }; + + //============================================================ + // pulse_Generator + //============================================================ + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + //============================================================ + // Sender_exec_i + //============================================================ + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort rate (void); + + virtual void rate (::CORBA::UShort rate); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void tick (); + + private: + void start (void); + void stop (void); + + CCM_DDS::WriterTest::Writer_var writer_; + + pulse_Generator * ticker_; + ::Writer::CCM_Sender_Context_var context_; + CORBA::UShort rate_; + CORBA::UShort iterations_; + CORBA::UShort keys_; + WRITER_ASSIGNMENT assignment_; + CORBA::Long last_iteration_; + + void reset_iterations (); + void register_handles (); + void unregister_handles (); + void start_new_assignment ( + WRITER_ASSIGNMENT assignment); + void write_keyed (); + void write_many (); + + TAO_SYNCH_MUTEX mutex_; + typedef std::map Writer_Table; + Writer_Table ktests_; + + typedef std::map Writer_Table_Handles; + Writer_Table_Handles handles_; + + Writer_Table::iterator last_key; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp new file mode 100644 index 00000000000..f89eafe9e25 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp @@ -0,0 +1,383 @@ + + + KeyedWriter_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Writer_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Writer_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Writer_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Writer_Writer_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Writer_Writer_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Writer_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Writer_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Writer_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Writer_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + Writer_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + KeyedWriter + + + + + qos_profile + + + tk_string + + + KeyedWriter_Library#KeyedWriter_Profile + + + + + + Writer_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + KeyedWriter + + + + + qos_profile + + + tk_string + + + KeyedWriter_Library#KeyedWriter_Profile + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_ushort + + + 1 + + + + + iterations + + + tk_ushort + + + 3 + + + + + keys + + + tk_ushort + + + 2 + + + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + _datacontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Writer_Connector_exec + + + DDS_KeyedWriterConnector_exec + + + Writer_Connector_svnt + + + DDS_KeyedWriterConnector_svnt + + + Writer_Connector_stub + + + DDS_KeyedWriterConnector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..2cf94303049 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + RELIABLE_RELIABILITY_QOS + + 10 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 20 + + + 1 + 1 + + + + 10 + + + + + + + RELIABLE_RELIABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 20 + + + TRANSIENT_LOCAL_DURABILITY_QOS + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl new file mode 100755 index 00000000000..6f82b757a0a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl new file mode 100644 index 00000000000..1c5c8b21163 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file LMBM_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef LISTEN_MANY_BY_MANY_TEST_BASE_IDL +#define LISTEN_MANY_BY_MANY_TEST_BASE_IDL + +struct ListenManyByManyTest { + string key; //@key + long iteration; +}; + +typedef sequence ListenManyByManyTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc new file mode 100755 index 00000000000..76c33873237 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n LMBM_Test_Base" + +project(DDS_LMBM_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=LISTEN_MANY_BY_MANY_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=LMBM_Test_Base_stub_export.h + + IDL_Files { + LMBM_Test_Base.idl + } +} + +project(DDS_LMBM_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_LMBM_Test_Base_idl_gen + ndds_ts_flags += -corba LMBM_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + LMBM_Test_Base.idl + } +} + +project(DDS_LMBM_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_LMBM_Test_Base_ndds_ts_gen DDS_LMBM_Test_Base_stub + libs += DDS_LMBM_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_LMBM_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + LMBM_Test_Base.cxx + LMBM_Test_BasePlugin.cxx + LMBM_Test_BaseSupport.cxx + } + + Header_Files { + LMBM_Test_Base.h + LMBM_Test_BasePlugin.h + LMBM_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_LMBM_Test_Base_stub) : ccm_stub { + after += DDS_LMBM_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_LMBM_Test_Base_stub + dynamicflags = LISTEN_MANY_BY_MANY_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_BaseC.cpp + } + + Header_Files { + LMBM_Test_BaseC.h + LMBM_Test_Base_stub_export.h + } + + Inline_Files { + LMBM_Test_BaseC.inl + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl new file mode 100644 index 00000000000..7c502bfe00e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file LMBM_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef LISTEN_MANY_BY_MANY_TEST_CONNECTOR_IDL_ +#define LISTEN_MANY_BY_MANY_TEST_CONNECTOR_IDL_ + +#include +#include "Base/LMBM_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::ListenManyByManyTest, ::ListenManyByManyTest_Seq, ListenManyByManyTest) + +module LMBM_Test +{ + connector LMBM_Test_Connector : ::CCM_DDS::ListenManyByManyTest::DDS_Event + { + }; +}; + +#endif /* LMBM_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc new file mode 100755 index 00000000000..9da600a743b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_LMBM_Test_Base -l .. -o ../lib -u DDS LMBM_Test_Connector" + +project(DDS_LMBM_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=LMBM_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=LMBM_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=LMBM_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=LMBM_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + LMBM_Test_Connector.idl + } +} + +project(DDS_LMBM_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_LMBM_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=LMBM_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + LMBM_Test_ConnectorE.idl + } +} + +project(DDS_LMBM_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LMBM_Test_Connector_lem_gen DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_LMBM_Test_Connector_lem_stub + dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ConnectorEC.cpp + } + + Header_Files { + LMBM_Test_ConnectorEC.h + LMBM_Test_Connector_lem_stub_export.h + } + + Inline_Files { + LMBM_Test_ConnectorEC.inl + } +} + +project(DDS_LMBM_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_LMBM_Test_Connector_idl_gen DDS_LMBM_Test_Base_stub + libs += DDS_LMBM_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_LMBM_Test_Connector_stub + dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ConnectorC.cpp + } + + Header_Files { + LMBM_Test_ConnectorC.h + LMBM_Test_Connector_stub_export.h + } + + Inline_Files { + LMBM_Test_ConnectorC.inl + } +} + +project(DDS_LMBM_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_stub DDS4CCM_lem_stub DDS_LMBM_Test_Base_NDDS_TS + sharedname = DDS_LMBM_Test_Connector_exec + libs += DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Base_stub DDS4CCM_lem_stub DDS_LMBM_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_Connector_exec.cpp + } + + Header_Files { + LMBM_Test_Connector_exec.h + LMBM_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LMBM_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_exec DDS_LMBM_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_LMBM_Test_Connector_svnt + libs += DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Connector_lem_stub \ + DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ConnectorS.cpp + LMBM_Test_Connector_svnt.cpp + } + + Header_Files { + LMBM_Test_ConnectorS.h + LMBM_Test_Connector_svnt.h + LMBM_Test_Connector_svnt_export.h + } + + Inline_Files { + LMBM_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.cpp new file mode 100644 index 00000000000..4c20f9e9239 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "LMBM_Test_Connector_exec.h" + +namespace CIAO_LMBM_Test_LMBM_Test_Connector_Impl +{ + LMBM_Test_Connector_exec_i::LMBM_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + LMBM_Test_Connector_exec_i::~LMBM_Test_Connector_exec_i (void) + { + } + + extern "C" LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_LMBM_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + LMBM_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.h new file mode 100644 index 00000000000..25e0b3e4351 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_H_ +#define LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "LMBM_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "LMBM_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/LMBM_Test_BaseSupport.h" + +namespace CIAO_LMBM_Test_LMBM_Test_Connector_Impl +{ + + // @from use of ListenManyByManyTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + ListenManyByManyTest, + ListenManyByManyTestSeq, + ListenManyByManyTestTypeSupport, + ListenManyByManyTestDataWriter, + ListenManyByManyTestDataReader > ListenManyByManyTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_LMBM_Test_LMBM_Test_Connector_Impl::LMBM_Test_Connector_Exec, + ListenManyByManyTest_Seq, + ::CCM_DDS::ListenManyByManyTest::CCM_Writer, + ::CCM_DDS::ListenManyByManyTest::CCM_Updater, + ::CCM_DDS::ListenManyByManyTest::CCM_Getter, + ::CCM_DDS::ListenManyByManyTest::CCM_Reader, + ::LMBM_Test::CCM_LMBM_Test_Connector_Context, + ::CCM_DDS::ListenManyByManyTest::Listener, + ::CCM_DDS::ListenManyByManyTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> ListenManyByManyTest_Connector_Traits; + + class LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_Export LMBM_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + LMBM_Test_Connector_exec_i (void); + virtual ~LMBM_Test_Connector_exec_i (void); + }; + + extern "C" LISTEN_MANY_BY_MANY_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_LMBM_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README new file mode 100644 index 00000000000..f622af6a71d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README @@ -0,0 +1,3 @@ +# $Id$ + +This test tests the listener. \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl new file mode 100644 index 00000000000..df19a301b68 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/LMBM_Test_Connector.idl" +#include "Connector/LMBM_Test_ConnectorE.idl" + +module LMBM_Test +{ + component Receiver + { + port CCM_DDS::ListenManyByManyTest::DDS_Listen info_listen; + provides CCM_DDS::ConnectorStatusListener info_listen_connector_status; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc new file mode 100755 index 00000000000..74f1dbaf92a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc @@ -0,0 +1,151 @@ +// $Id$ + +project(DDS_LMBM_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_LMBM_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + LMBM_Test_Receiver.idl + } +} + +project(DDS_LMBM_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_LMBM_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + LMBM_Test_ReceiverE.idl + } +} + +project(DDS_LMBM_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_lem_gen DDS_LMBM_Test_Receiver_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub + libs += Receiver_stub DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ReceiverEC.cpp + } + + Header_Files { + LMBM_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + LMBM_Test_ReceiverEC.inl + } +} + +project(DDS_LMBM_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_idl_gen DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_lem_gen + libs += DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ReceiverC.cpp + } + + Header_Files { + LMBM_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + LMBM_Test_ReceiverC.inl + } +} + +project(DDS_LMBM_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_lem_stub DDS_LMBM_Test_Receiver_stub \ + DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_lem_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_Receiver_exec.cpp + } + + Header_Files { + LMBM_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LMBM_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_LMBM_Test_Receiver_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \ + DDS_LMBM_Test_Receiver_exec DDS_LMBM_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \ + Receiver_exec DDS_LMBM_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ReceiverS.cpp + LMBM_Test_Receiver_svnt.cpp + } + + Header_Files { + LMBM_Test_ReceiverS.h + LMBM_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + LMBM_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..ba9544b75be --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp @@ -0,0 +1,315 @@ +// -*- C++ -*- +// +// $Id$ + +#include "LMBM_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_LMBM_Test_Receiver_Impl +{ + //============================================================ + // ListenManyByManyTest_Listener_exec_i + //============================================================ + ListenManyByManyTest_Listener_exec_i::ListenManyByManyTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many, + Atomic_Bool &many_received) + : received_one_by_one_ (received_one_by_one), + received_many_by_many_ (received_many_by_many), + many_received_ (many_received) + + { + } + + ListenManyByManyTest_Listener_exec_i::~ListenManyByManyTest_Listener_exec_i (void) + { + } + + void + ListenManyByManyTest_Listener_exec_i::on_one_data ( + const ListenManyByManyTest & /*an_instance*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + //just count; this value is checked on ccm_remove. + ++this->received_one_by_one_; + } + + void + ListenManyByManyTest_Listener_exec_i::on_many_data ( + const ListenManyByManyTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info) + { + if (an_instance.length () == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_many_data:" + "instance sequence length is nil\n")); + return; + } + for (CORBA::ULong i = 0 ; i < info.length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, "ListenManyByManyTest_Listener_exec_i::on_many_data:" + "key <%C> - iteration <%d>\n", + an_instance[i].key.in (), + an_instance[i].iteration)); + if (!info[i].instance_handle.isValid) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_many_data:" + "instance handle %d seems to be invalid" + "key <%C> - iteration <%d>\n", + i, + an_instance[i].key.in (), + an_instance[i].iteration)); + } + if (info[i].source_timestamp.sec == 0 && + info[i].source_timestamp.nanosec == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_one_data: " + "source timestamp seems to be invalid (nil) " + "key <%C> - iteration <%d>\n", + an_instance[i].key.in (), + an_instance[i].iteration)); + } + } + this->received_many_by_many_ += an_instance.length (); + if (!this->many_received_.value () && an_instance.length () > 1) + { + this->many_received_ = true; + } + } + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i ( + Receiver_exec_i &callback, + const CORBA::ULong &expected) + : callback_ (callback), + expected_ (expected), + received_ (0) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr , + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::DATA_ON_READERS_STATUS) + ++this->received_; + if (this->received_ >= this->expected_) + { + this->callback_.start (); + } + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : received_one_by_one_ (0), + received_many_by_many_ (0), + started_ (false), + many_received_ (false), + expected_ (50), + iterations_ (10), + keys_ (5) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + void + Receiver_exec_i::start () + { + if (!this->started_.value ()) + { + this->started_ = true; + ::CCM_DDS::DataListenerControl_var dlc = + this->context_->get_connection_info_listen_data_control (); + dlc->mode (::CCM_DDS::MANY_BY_MANY); + } + } + + ::CCM_DDS::ListenManyByManyTest::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener (void) + { + return new ListenManyByManyTest_Listener_exec_i ( + this->received_one_by_one_, + this->received_many_by_many_, + this->many_received_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_listen_connector_status (void) + { + return new ConnectorStatusListener_exec_i ( + *this, + this->expected_); + } + + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + this->expected_ = this->keys_ * this->iterations_; + } + + ::CORBA::UShort + Receiver_exec_i::keys (void) + { + return this->keys_; + } + + void + Receiver_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + this->expected_ = this->keys_ * this->iterations_; + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LMBM_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + this->expected_ = this->keys_ * this->iterations_; + if (this->received_many_by_many_.value () == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Didn't receive samples on many_by_many " + "callback while mode is MANY_BY_MANY " + "expected <%u> - received <%u>\n", + this->expected_, + this->received_many_by_many_.value ())); + } + else if (this->expected_ != this->received_many_by_many_.value ()) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Didn't receive the expected " + "number of samples on many_by_many " + "callback while mode is MANY_BY_MANY " + "expected <%u> - received <%u>\n", + this->expected_, + this->received_many_by_many_.value ())); + } + if (this->received_one_by_one_.value () > 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Received samples on one_by_one " + "callback while mode is MANY_BY_MANY " + "expected <0> - received <%u>\n", + this->received_one_by_one_.value ())); + } + if (!this->started_.value ()) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Didn't received DATA_ON_READERS_STATUS on " + "ConnectorStatusListener\n")); + } + if (this->received_one_by_one_.value () == 0 && + this->received_many_by_many_.value () > 0 && + this->started_.value ()) + { + if (this->many_received_.value ()) + { + ACE_DEBUG ((LM_DEBUG, "MANY_BY_MANY: " + "Received only data on " + "many_by_many callback. " + "Test passed!\n")); + } + else + { + ACE_DEBUG ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Received only data on " + "many_by_many callback but " + "all samples were received " + "one by one.\n")); + } + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h new file mode 100644 index 00000000000..d61d5c5823a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h @@ -0,0 +1,146 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "LMBM_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_LMBM_Test_Receiver_Impl +{ + class Receiver_exec_i; + + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Bool; + + //============================================================ + // ListenManyByManyTest_Listener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ListenManyByManyTest_Listener_exec_i + : public virtual ::CCM_DDS::ListenManyByManyTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + ListenManyByManyTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many, + Atomic_Bool &many_received); + virtual ~ListenManyByManyTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const ListenManyByManyTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const ListenManyByManyTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_one_by_one_; + Atomic_ULong &received_many_by_many_; + Atomic_Bool &many_received_; + }; + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i ( + Receiver_exec_i &callback, + const CORBA::ULong &expected); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ); + virtual + void on_unexpected_status( ::DDS::Entity_ptr , + ::DDS::StatusKind ); + private: + Receiver_exec_i &callback_; + CORBA::ULong expected_; + CORBA::ULong received_; + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + void start (); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual ::CCM_DDS::ListenManyByManyTest::CCM_Listener_ptr + get_info_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_listen_connector_status (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::LMBM_Test::CCM_Receiver_Context_var context_; + + Atomic_ULong received_one_by_one_; + Atomic_ULong received_many_by_many_; + Atomic_Bool started_; + Atomic_Bool many_received_; + CORBA::ULong expected_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl new file mode 100644 index 00000000000..715e58d7494 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_LISTEN_MANY_BY_MANY_TEST_SENDER_IDL +#define DDS_LISTEN_MANY_BY_MANY_TEST_SENDER_IDL + +#include "Connector/LMBM_Test_Connector.idl" +#include "Connector/LMBM_Test_ConnectorE.idl" + +module LMBM_Test +{ + component Sender + { + port CCM_DDS::ListenManyByManyTest::DDS_Write info_write; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc new file mode 100755 index 00000000000..066398af137 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc @@ -0,0 +1,149 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_LMBM_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_LMBM_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_LMBM_Test_Connector_idl_gen DDS_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + LMBM_Test_Sender.idl + } +} + +project(DDS_LMBM_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_LMBM_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + LMBM_Test_SenderE.idl + } +} + +project(DDS_LMBM_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LMBM_Test_Sender_lem_gen DDS_LMBM_Test_Sender_stub \ + DDS_LMBM_Test_Base_stub + libs += DDS_LMBM_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_SenderEC.cpp + } + + Header_Files { + LMBM_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + LMBM_Test_SenderEC.inl + } +} + +project(DDS_LMBM_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_LMBM_Test_Sender_idl_gen DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub + libs += DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_SenderC.cpp + } + + Header_Files { + LMBM_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + LMBM_Test_SenderC.inl + } +} + +project(DDS_LMBM_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_LMBM_Test_Sender_lem_stub DDS_LMBM_Test_Sender_stub \ + DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_stub \ + DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_Sender_exec.cpp + } + + Header_Files { + LMBM_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LMBM_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Sender_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Connector_svnt DDS_LMBM_Test_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub DDS_LMBM_Test_Base_stub DDS4CCM_lem_stub \ + DDS4CCM_skel DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \ + DDS_LMBM_Test_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_SenderS.cpp + LMBM_Test_Sender_svnt.cpp + } + + Header_Files { + LMBM_Test_SenderS.h + LMBM_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + LMBM_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp new file mode 100644 index 00000000000..51a0f195eb9 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp @@ -0,0 +1,216 @@ +// -*- C++ -*- +// $Id$ + +#include "LMBM_Test_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "ace/Date_Time.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_LMBM_Test_Sender_Impl +{ + //============================================================ + // WriteManyHandler + //============================================================ + WriteTicker::WriteTicker (Sender_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteTicker::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->callback_.write_one (); + return 0; + } + + //============================================================ + // WriteManyHandler + //============================================================ + WriteManyHandler::WriteManyHandler (Sender_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteManyHandler::handle_exception (ACE_HANDLE) + { + this->callback_.write_one (); + return 0; + } + + + //============================================================ + // Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : iterations_ (10), + keys_ (5) + { + this->ticker_ = new WriteTicker (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::write_one (void) + { + if (this->last_key_ != this->samples_.end ()) + { + try + { + ++this->last_key_->second->iteration; + this->writer_->write_one (this->last_key_->second, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, "Written key <%C> - <%u>\n", + this->last_key_->first.c_str (), + this->last_key_->second->iteration)); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while updating writer info for <%C>.\n"), + this->last_key_->first.c_str ())); + } + ++this->last_key_; + } + else + { + //onto the next iteration + this->last_key_ = this->samples_.begin (); + while (this->last_key_ != this->samples_.end ()) + { + if (this->last_key_->second->iteration == this->iterations_) + { + //next key + ++this->last_key_; + } + else + { + break; + } + } + if (this->last_key_ == this->samples_.end ()) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + } + } + } + + + void + Sender_exec_i::start (void) + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + ListenManyByManyTest *new_key = new ListenManyByManyTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 0; + + this->samples_[key] = new_key; + } + this->last_key_ = this->samples_.begin (); + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (5, 50000), + ACE_Time_Value (0, 50000)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LMBM_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + try + { + this->writer_ = this->context_->get_connection_info_write_data (); + start (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n"))); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h new file mode 100644 index 00000000000..849b46310a8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h @@ -0,0 +1,98 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "LMBM_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_LMBM_Test_Sender_Impl +{ + class Sender_exec_i; + + //============================================================ + // WriteTicker + //============================================================ + class WriteTicker : + public ACE_Event_Handler + { + public: + WriteTicker (Sender_exec_i &callback); + int handle_timeout (const ACE_Time_Value &, const void *); + private: + Sender_exec_i &callback_; + }; + + //============================================================ + // WriteManyHandler + //============================================================ + class WriteManyHandler : + public ACE_Event_Handler + { + public: + WriteManyHandler (Sender_exec_i &callback); + virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); + private: + Sender_exec_i &callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void start (void); + void write_one (void); + + private: + ::LMBM_Test::CCM_Sender_Context_var context_; + CCM_DDS::ListenManyByManyTest::Writer_var writer_; + + WriteTicker *ticker_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map Writer_Table; + Writer_Table samples_; + + Writer_Table::iterator last_key_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp new file mode 100644 index 00000000000..ab28d77b8e2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp @@ -0,0 +1,414 @@ + + + LMBM_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_LMBM_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LMBM_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + LMBM_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_LMBM_Test_LMBM_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LMBM_Test_LMBM_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + LMBM_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + LMBM_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_LMBM_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LMBM_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + keys + + + tk_ushort + + + 5 + + + + + iterations + + + tk_ushort + + + 10 + + + + + + LMBM_Test_ConnectorComponent + SenderNode + + + + + qos_profile + + + tk_string + + + ListenManyByMany_Library#ListenManyByMany_Profile + + + + + topic_name + + + tk_string + + + LMBM_Test + + + + + + LMBM_Test_ConnectorComponent2 + ReceiverNode + + + + + qos_profile + + + tk_string + + + ListenManyByMany_Library#ListenManyByMany_Profile + + + + + topic_name + + + tk_string + + + LMBM_Test + + + + + + SenderComponent + SenderNode + + + + + keys + + + tk_ushort + + + 5 + + + + + iterations + + + tk_ushort + + + 10 + + + + + + + info_listen_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + info_listen_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + info_listen_data_control + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + LMBM_Test_Connector_exec + + + DDS_LMBM_Test_Connector_exec + + + LMBM_Test_Connector_svnt + + + DDS_LMBM_Test_Connector_svnt + + + LMBM_Test_Connector_stub + + + DDS_LMBM_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..13300496572 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + RELIABLE_RELIABILITY_QOS + + 10 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + + + + 10 + + + + + + + RELIABLE_RELIABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + + + TRANSIENT_LOCAL_DURABILITY_QOS + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl new file mode 100755 index 00000000000..a6cac2e165a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 30 seconds to allow task to complete\n"; +sleep (30); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl new file mode 100644 index 00000000000..114ce51f4f2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file LNE_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef LISTEN_NOT_ENABLED_TEST_BASE_IDL +#define LISTEN_NOT_ENABLED_TEST_BASE_IDL + +struct ListenNotEnabledTest { + string key; //@key + long iteration; +}; + +typedef sequence ListenNotEnabledTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc new file mode 100755 index 00000000000..043d8f8b8b3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n LNE_Test_Base" + +project(DDS_LNE_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=LISTEN_NOT_ENABLED_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=LNE_Test_Base_stub_export.h + + IDL_Files { + LNE_Test_Base.idl + } +} + +project(DDS_LNE_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_LNE_Test_Base_idl_gen + ndds_ts_flags += -corba LNE_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + LNE_Test_Base.idl + } +} + +project(DDS_LNE_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_LNE_Test_Base_ndds_ts_gen DDS_LNE_Test_Base_stub + libs += DDS_LNE_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_LNE_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + LNE_Test_Base.cxx + LNE_Test_BasePlugin.cxx + LNE_Test_BaseSupport.cxx + } + + Header_Files { + LNE_Test_Base.h + LNE_Test_BasePlugin.h + LNE_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_LNE_Test_Base_stub) : ccm_stub { + after += DDS_LNE_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_LNE_Test_Base_stub + dynamicflags = LISTEN_NOT_ENABLED_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_BaseC.cpp + } + + Header_Files { + LNE_Test_BaseC.h + LNE_Test_Base_stub_export.h + } + + Inline_Files { + LNE_Test_BaseC.inl + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl new file mode 100644 index 00000000000..1eebd4fda3a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file LNE_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef LISTEN_NOT_ENABLED_TEST_CONNECTOR_IDL_ +#define LISTEN_NOT_ENABLED_TEST_CONNECTOR_IDL_ + +#include +#include "Base/LNE_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::ListenNotEnabledTest, ::ListenNotEnabledTest_Seq, ListenNotEnabledTest) + +module LNE_Test +{ + connector LNE_Test_Connector : ::CCM_DDS::ListenNotEnabledTest::DDS_Event + { + }; +}; + +#endif /* LNE_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc new file mode 100755 index 00000000000..f422a852dc0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_LNE_Test_Base -l .. -o ../lib -u DDS LNE_Test_Connector" + +project(DDS_LNE_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=LNE_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=LNE_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=LNE_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=LNE_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + LNE_Test_Connector.idl + } +} + +project(DDS_LNE_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_LNE_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=LNE_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + LNE_Test_ConnectorE.idl + } +} + +project(DDS_LNE_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LNE_Test_Connector_lem_gen DDS_LNE_Test_Connector_stub DDS_LNE_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_LNE_Test_Connector_lem_stub + dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_ConnectorEC.cpp + } + + Header_Files { + LNE_Test_ConnectorEC.h + LNE_Test_Connector_lem_stub_export.h + } + + Inline_Files { + LNE_Test_ConnectorEC.inl + } +} + +project(DDS_LNE_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_LNE_Test_Connector_idl_gen DDS_LNE_Test_Base_stub + libs += DDS_LNE_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_LNE_Test_Connector_stub + dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_ConnectorC.cpp + } + + Header_Files { + LNE_Test_ConnectorC.h + LNE_Test_Connector_stub_export.h + } + + Inline_Files { + LNE_Test_ConnectorC.inl + } +} + +project(DDS_LNE_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_stub DDS4CCM_lem_stub DDS_LNE_Test_Base_NDDS_TS + sharedname = DDS_LNE_Test_Connector_exec + libs += DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Base_stub DDS4CCM_lem_stub DDS_LNE_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_Connector_exec.cpp + } + + Header_Files { + LNE_Test_Connector_exec.h + LNE_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LNE_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_exec DDS_LNE_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_LNE_Test_Connector_svnt + libs += DDS_LNE_Test_Connector_stub \ + DDS_LNE_Test_Connector_lem_stub \ + DDS_LNE_Test_Base_stub \ + DDS_LNE_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_ConnectorS.cpp + LNE_Test_Connector_svnt.cpp + } + + Header_Files { + LNE_Test_ConnectorS.h + LNE_Test_Connector_svnt.h + LNE_Test_Connector_svnt_export.h + } + + Inline_Files { + LNE_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.cpp new file mode 100644 index 00000000000..49ca01d82a5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "LNE_Test_Connector_exec.h" + +namespace CIAO_LNE_Test_LNE_Test_Connector_Impl +{ + LNE_Test_Connector_exec_i::LNE_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + LNE_Test_Connector_exec_i::~LNE_Test_Connector_exec_i (void) + { + } + + extern "C" LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LNE_Test_LNE_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + LNE_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.h new file mode 100644 index 00000000000..8a9edb7b207 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_H_ +#define LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "LNE_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "LNE_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/LNE_Test_BaseSupport.h" + +namespace CIAO_LNE_Test_LNE_Test_Connector_Impl +{ + + // @from use of ListenNotEnabledTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + ListenNotEnabledTest, + ListenNotEnabledTestSeq, + ListenNotEnabledTestTypeSupport, + ListenNotEnabledTestDataWriter, + ListenNotEnabledTestDataReader > ListenNotEnabledTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_LNE_Test_LNE_Test_Connector_Impl::LNE_Test_Connector_Exec, + ListenNotEnabledTest_Seq, + ::CCM_DDS::ListenNotEnabledTest::CCM_Writer, + ::CCM_DDS::ListenNotEnabledTest::CCM_Updater, + ::CCM_DDS::ListenNotEnabledTest::CCM_Getter, + ::CCM_DDS::ListenNotEnabledTest::CCM_Reader, + ::LNE_Test::CCM_LNE_Test_Connector_Context, + ::CCM_DDS::ListenNotEnabledTest::Listener, + ::CCM_DDS::ListenNotEnabledTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> ListenNotEnabledTest_Connector_Traits; + + class LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_Export LNE_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + LNE_Test_Connector_exec_i (void); + virtual ~LNE_Test_Connector_exec_i (void); + }; + + extern "C" LISTEN_NOT_ENABLED_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LNE_Test_LNE_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README new file mode 100644 index 00000000000..f622af6a71d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README @@ -0,0 +1,3 @@ +# $Id$ + +This test tests the listener. \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl new file mode 100644 index 00000000000..18fa2507c17 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl @@ -0,0 +1,23 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/LNE_Test_Connector.idl" +#include "Connector/LNE_Test_ConnectorE.idl" + +module LNE_Test +{ + component Receiver + { + port CCM_DDS::ListenNotEnabledTest::DDS_Listen info_listen; + provides CCM_DDS::ConnectorStatusListener info_listen_connector_status; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc new file mode 100755 index 00000000000..cc0ad916dca --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc @@ -0,0 +1,151 @@ +// $Id$ + +project(DDS_LNE_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_LNE_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + LNE_Test_Receiver.idl + } +} + +project(DDS_LNE_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_LNE_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + LNE_Test_ReceiverE.idl + } +} + +project(DDS_LNE_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LNE_Test_Receiver_lem_gen DDS_LNE_Test_Receiver_stub \ + DDS_LNE_Test_Connector_stub DDS_LNE_Test_Base_stub + libs += Receiver_stub DDS_LNE_Test_Connector_stub \ + DDS_LNE_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_ReceiverEC.cpp + } + + Header_Files { + LNE_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + LNE_Test_ReceiverEC.inl + } +} + +project(DDS_LNE_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_LNE_Test_Receiver_idl_gen DDS_LNE_Test_Connector_stub \ + DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_lem_gen + libs += DDS_LNE_Test_Connector_stub DDS_LNE_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_ReceiverC.cpp + } + + Header_Files { + LNE_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + LNE_Test_ReceiverC.inl + } +} + +project(DDS_LNE_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_LNE_Test_Receiver_lem_stub DDS_LNE_Test_Receiver_stub \ + DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_stub \ + DDS_LNE_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_LNE_Test_Base_stub \ + DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_lem_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_Receiver_exec.cpp + } + + Header_Files { + LNE_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LNE_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_LNE_Test_Receiver_lem_stub DDS_LNE_Test_Base_stub \ + DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_svnt \ + DDS_LNE_Test_Receiver_exec DDS_LNE_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_LNE_Test_Base_stub \ + DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_svnt \ + Receiver_exec DDS_LNE_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_ReceiverS.cpp + LNE_Test_Receiver_svnt.cpp + } + + Header_Files { + LNE_Test_ReceiverS.h + LNE_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + LNE_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..bd3ac4c5a15 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp @@ -0,0 +1,207 @@ +// -*- C++ -*- +// +// $Id$ + +#include "LNE_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_LNE_Test_Receiver_Impl +{ + //============================================================ + // ListenNotEnabledTest_Listener_exec_i + //============================================================ + ListenNotEnabledTest_Listener_exec_i::ListenNotEnabledTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many) + : received_one_by_one_ (received_one_by_one), + received_many_by_many_ (received_many_by_many) + { + } + + ListenNotEnabledTest_Listener_exec_i::~ListenNotEnabledTest_Listener_exec_i (void) + { + } + + void + ListenNotEnabledTest_Listener_exec_i::on_one_data ( + const ListenNotEnabledTest & /*an_instance*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + //just count; this value is checked on ccm_remove. + ++this->received_one_by_one_; + } + + void + ListenNotEnabledTest_Listener_exec_i::on_many_data ( + const ListenNotEnabledTest_Seq & /*an_instance*/, + const ::CCM_DDS::ReadInfoSeq & /*info*/) + { + //just count; this value is checked on ccm_remove. + ++this->received_many_by_many_; + } + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i ( + Atomic_Bool &data_received) + : data_received_ (data_received) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr , + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::DATA_ON_READERS_STATUS) + { + this->data_received_ = true; + } + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : received_one_by_one_ (0), + received_many_by_many_ (0), + data_received_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + ::CCM_DDS::ListenNotEnabledTest::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener (void) + { + return new ListenNotEnabledTest_Listener_exec_i ( + this->received_one_by_one_, + this->received_many_by_many_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_listen_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->data_received_); + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LNE_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var dlc = + this->context_->get_connection_info_listen_data_control (); + dlc->mode (::CCM_DDS::NOT_ENABLED); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + if (this->received_one_by_one_.value () > 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: NOT ENABLED: " + "Received samples on one_by_one " + "callback while mode is NOT_ENABLED " + "expected <0> - received <%u>\n", + this->received_one_by_one_.value ())); + } + if (this->received_many_by_many_.value () > 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: NOT ENABLED: " + "Received samples on many_by_many " + "callback while mode is NOT_ENABLED " + "expected <0> - received <%u>\n", + this->received_many_by_many_.value ())); + } + if (this->data_received_.value ()) + { + ACE_ERROR ((LM_ERROR, "ERROR: NOT ENABLED: " + "Received DATA_ON_READERS_STATUS on " + "ConnectorStatusListener\n")); + } + if (this->received_one_by_one_.value () == 0 && + this->received_many_by_many_.value () == 0 && + !this->data_received_.value ()) + { + ACE_DEBUG ((LM_DEBUG, "NOT ENABLED: " + "Received no data at all." + "Test passed!\n")); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LNE_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h new file mode 100644 index 00000000000..e932dcb9955 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h @@ -0,0 +1,125 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "LNE_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_LNE_Test_Receiver_Impl +{ + class Receiver_exec_i; + + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Bool; + + //============================================================ + // ListenNotEnabledTest_Listener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ListenNotEnabledTest_Listener_exec_i + : public virtual ::CCM_DDS::ListenNotEnabledTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + ListenNotEnabledTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many); + virtual ~ListenNotEnabledTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const ListenNotEnabledTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const ListenNotEnabledTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_one_by_one_; + Atomic_ULong &received_many_by_many_; + }; + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Bool &data_received); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ); + virtual + void on_unexpected_status( ::DDS::Entity_ptr , + ::DDS::StatusKind ); + private: + Atomic_Bool &data_received_; + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + virtual ::CCM_DDS::ListenNotEnabledTest::CCM_Listener_ptr + get_info_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_listen_connector_status (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::LNE_Test::CCM_Receiver_Context_var context_; + + Atomic_ULong received_one_by_one_; + Atomic_ULong received_many_by_many_; + Atomic_Bool data_received_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LNE_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl new file mode 100644 index 00000000000..0dca89dbf81 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_LISTEN_NOT_ENABLED_TEST_SENDER_IDL +#define DDS_LISTEN_NOT_ENABLED_TEST_SENDER_IDL + +#include "Connector/LNE_Test_Connector.idl" +#include "Connector/LNE_Test_ConnectorE.idl" + +module LNE_Test +{ + component Sender + { + port CCM_DDS::ListenNotEnabledTest::DDS_Write info_write; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc new file mode 100755 index 00000000000..e5fb16ef57f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc @@ -0,0 +1,149 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_LNE_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_LNE_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_LNE_Test_Connector_idl_gen DDS_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + LNE_Test_Sender.idl + } +} + +project(DDS_LNE_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_LNE_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + LNE_Test_SenderE.idl + } +} + +project(DDS_LNE_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LNE_Test_Sender_lem_gen DDS_LNE_Test_Sender_stub \ + DDS_LNE_Test_Base_stub + libs += DDS_LNE_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_SenderEC.cpp + } + + Header_Files { + LNE_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + LNE_Test_SenderEC.inl + } +} + +project(DDS_LNE_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_LNE_Test_Sender_idl_gen DDS_LNE_Test_Base_stub \ + DDS_LNE_Test_Connector_stub + libs += DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_SenderC.cpp + } + + Header_Files { + LNE_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + LNE_Test_SenderC.inl + } +} + +project(DDS_LNE_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_LNE_Test_Sender_lem_stub DDS_LNE_Test_Sender_stub \ + DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_stub \ + DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_LNE_Test_Base_stub \ + DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_Sender_exec.cpp + } + + Header_Files { + LNE_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LNE_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_LNE_Test_Base_stub DDS_LNE_Test_Sender_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_LNE_Test_Connector_stub \ + DDS_LNE_Test_Connector_svnt DDS_LNE_Test_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub DDS_LNE_Test_Base_stub DDS4CCM_lem_stub \ + DDS4CCM_skel DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_svnt \ + DDS_LNE_Test_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LNE_Test_SenderS.cpp + LNE_Test_Sender_svnt.cpp + } + + Header_Files { + LNE_Test_SenderS.h + LNE_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + LNE_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp new file mode 100644 index 00000000000..2f76fbd17d6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp @@ -0,0 +1,165 @@ +// -*- C++ -*- +// $Id$ + +#include "LNE_Test_Sender_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_LNE_Test_Sender_Impl +{ + //============================================================ + // WriteManyHandler + //============================================================ + WriteManyHandler::WriteManyHandler (Sender_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteManyHandler::handle_exception (ACE_HANDLE) + { + this->callback_.write_many (); + return 0; + } + + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : iterations_ (10), + keys_ (5) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::write_many (void) + { + ListenNotEnabledTest_Seq write_many; + write_many.length (this->keys_ * this->iterations_); + for (CORBA::UShort key = 1; key < this->keys_ + 1; ++key) + { + ListenNotEnabledTest new_key; + char tmp[7]; + ACE_OS::sprintf (tmp, "KEY_%d", key); + new_key.key = CORBA::string_dup(tmp); + for (CORBA::UShort iter = 1; iter < this->iterations_ + 1; ++iter) + { + new_key.iteration = iter; + write_many[key + iter - 2] = new_key; + } + } + try + { + ACE_Time_Value tv (1, 0); + ACE_OS::sleep (tv); + this->writer_->write_many (write_many); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("write_many : written <%u> samples\n"), + write_many.length ())); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + } + } + + + void + Sender_exec_i::start (void) + { + WriteManyHandler *rh = new WriteManyHandler (*this); + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh); + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LNE_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + try + { + this->writer_ = this->context_->get_connection_info_write_data (); + start (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n"))); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LNE_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h new file mode 100644 index 00000000000..360525014a8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h @@ -0,0 +1,75 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "LNE_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_LNE_Test_Sender_Impl +{ + class Sender_exec_i; + + //============================================================ + // WriteManyHandler + //============================================================ + class WriteManyHandler : + public ACE_Event_Handler + { + public: + WriteManyHandler (Sender_exec_i &callback); + virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); + private: + Sender_exec_i &callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void start (void); + void write_many (void); + + private: + ::LNE_Test::CCM_Sender_Context_var context_; + CCM_DDS::ListenNotEnabledTest::Writer_var writer_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LNE_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp new file mode 100644 index 00000000000..6676e2fa543 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp @@ -0,0 +1,350 @@ + + + LNE_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_LNE_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LNE_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + LNE_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_LNE_Test_LNE_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LNE_Test_LNE_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + LNE_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + LNE_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_LNE_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LNE_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + LNE_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + LNE_Test + + + + + + LNE_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + LNE_Test + + + + + + SenderComponent + SenderNode + + + + + keys + + + tk_ulong + + + 5 + + + + + iterations + + + tk_ulong + + + 10 + + + + + + + info_listen_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + info_listen_data_control + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + LNE_Test_Connector_exec + + + DDS_LNE_Test_Connector_exec + + + LNE_Test_Connector_svnt + + + DDS_LNE_Test_Connector_svnt + + + LNE_Test_Connector_stub + + + DDS_LNE_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl new file mode 100644 index 00000000000..3e01accec65 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file LOBO_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef LISTEN_ONE_BY_ONE_TEST_BASE_IDL +#define LISTEN_ONE_BY_ONE_TEST_BASE_IDL + +struct ListenOneByOneTest { + string key; //@key + long iteration; +}; + +typedef sequence ListenOneByOneTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc new file mode 100755 index 00000000000..425d3ea2a21 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n LOBO_Test_Base" + +project(DDS_LOBO_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=LISTEN_ONE_BY_ONE_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=LOBO_Test_Base_stub_export.h + + IDL_Files { + LOBO_Test_Base.idl + } +} + +project(DDS_LOBO_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_LOBO_Test_Base_idl_gen + ndds_ts_flags += -corba LOBO_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + LOBO_Test_Base.idl + } +} + +project(DDS_LOBO_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_LOBO_Test_Base_ndds_ts_gen DDS_LOBO_Test_Base_stub + libs += DDS_LOBO_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_LOBO_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + LOBO_Test_Base.cxx + LOBO_Test_BasePlugin.cxx + LOBO_Test_BaseSupport.cxx + } + + Header_Files { + LOBO_Test_Base.h + LOBO_Test_BasePlugin.h + LOBO_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_LOBO_Test_Base_stub) : ccm_stub { + after += DDS_LOBO_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_LOBO_Test_Base_stub + dynamicflags = LISTEN_ONE_BY_ONE_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_BaseC.cpp + } + + Header_Files { + LOBO_Test_BaseC.h + LOBO_Test_Base_stub_export.h + } + + Inline_Files { + LOBO_Test_BaseC.inl + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl new file mode 100644 index 00000000000..1838f45a244 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file LOBO_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef LISTEN_ONE_BY_ONE_TEST_CONNECTOR_IDL_ +#define LISTEN_ONE_BY_ONE_TEST_CONNECTOR_IDL_ + +#include +#include "Base/LOBO_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::ListenOneByOneTest, ::ListenOneByOneTest_Seq, ListenOneByOneTest) + +module LOBO_Test +{ + connector LOBO_Test_Connector : ::CCM_DDS::ListenOneByOneTest::DDS_Event + { + }; +}; + +#endif /* LOBO_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc new file mode 100755 index 00000000000..5cc617d4eb6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_LOBO_Test_Base -l .. -o ../lib -u DDS LOBO_Test_Connector" + +project(DDS_LOBO_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=LOBO_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=LOBO_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=LOBO_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=LOBO_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + LOBO_Test_Connector.idl + } +} + +project(DDS_LOBO_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_LOBO_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=LOBO_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + LOBO_Test_ConnectorE.idl + } +} + +project(DDS_LOBO_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LOBO_Test_Connector_lem_gen DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_LOBO_Test_Connector_lem_stub + dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_ConnectorEC.cpp + } + + Header_Files { + LOBO_Test_ConnectorEC.h + LOBO_Test_Connector_lem_stub_export.h + } + + Inline_Files { + LOBO_Test_ConnectorEC.inl + } +} + +project(DDS_LOBO_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_LOBO_Test_Connector_idl_gen DDS_LOBO_Test_Base_stub + libs += DDS_LOBO_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_LOBO_Test_Connector_stub + dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_ConnectorC.cpp + } + + Header_Files { + LOBO_Test_ConnectorC.h + LOBO_Test_Connector_stub_export.h + } + + Inline_Files { + LOBO_Test_ConnectorC.inl + } +} + +project(DDS_LOBO_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_stub DDS4CCM_lem_stub DDS_LOBO_Test_Base_NDDS_TS + sharedname = DDS_LOBO_Test_Connector_exec + libs += DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Base_stub DDS4CCM_lem_stub DDS_LOBO_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_Connector_exec.cpp + } + + Header_Files { + LOBO_Test_Connector_exec.h + LOBO_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LOBO_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_exec DDS_LOBO_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_LOBO_Test_Connector_svnt + libs += DDS_LOBO_Test_Connector_stub \ + DDS_LOBO_Test_Connector_lem_stub \ + DDS_LOBO_Test_Base_stub \ + DDS_LOBO_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_ConnectorS.cpp + LOBO_Test_Connector_svnt.cpp + } + + Header_Files { + LOBO_Test_ConnectorS.h + LOBO_Test_Connector_svnt.h + LOBO_Test_Connector_svnt_export.h + } + + Inline_Files { + LOBO_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.cpp new file mode 100644 index 00000000000..91f0a878c83 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "LOBO_Test_Connector_exec.h" + +namespace CIAO_LOBO_Test_LOBO_Test_Connector_Impl +{ + LOBO_Test_Connector_exec_i::LOBO_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + LOBO_Test_Connector_exec_i::~LOBO_Test_Connector_exec_i (void) + { + } + + extern "C" LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LOBO_Test_LOBO_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + LOBO_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.h new file mode 100644 index 00000000000..0400ea51e97 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_H_ +#define LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "LOBO_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "LOBO_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/LOBO_Test_BaseSupport.h" + +namespace CIAO_LOBO_Test_LOBO_Test_Connector_Impl +{ + + // @from use of ListenOneByOneTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + ListenOneByOneTest, + ListenOneByOneTestSeq, + ListenOneByOneTestTypeSupport, + ListenOneByOneTestDataWriter, + ListenOneByOneTestDataReader > ListenOneByOneTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_LOBO_Test_LOBO_Test_Connector_Impl::LOBO_Test_Connector_Exec, + ListenOneByOneTest_Seq, + ::CCM_DDS::ListenOneByOneTest::CCM_Writer, + ::CCM_DDS::ListenOneByOneTest::CCM_Updater, + ::CCM_DDS::ListenOneByOneTest::CCM_Getter, + ::CCM_DDS::ListenOneByOneTest::CCM_Reader, + ::LOBO_Test::CCM_LOBO_Test_Connector_Context, + ::CCM_DDS::ListenOneByOneTest::Listener, + ::CCM_DDS::ListenOneByOneTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> ListenOneByOneTest_Connector_Traits; + + class LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_Export LOBO_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + LOBO_Test_Connector_exec_i (void); + virtual ~LOBO_Test_Connector_exec_i (void); + }; + + extern "C" LISTEN_ONE_BY_ONE_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LOBO_Test_LOBO_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README new file mode 100644 index 00000000000..f622af6a71d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README @@ -0,0 +1,3 @@ +# $Id$ + +This test tests the listener. \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl new file mode 100644 index 00000000000..afb533d44ad --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/LOBO_Test_Connector.idl" +#include "Connector/LOBO_Test_ConnectorE.idl" + +module LOBO_Test +{ + component Receiver + { + port CCM_DDS::ListenOneByOneTest::DDS_Listen info_listen; + provides CCM_DDS::ConnectorStatusListener info_listen_connector_status; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc new file mode 100755 index 00000000000..6a4264165ae --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc @@ -0,0 +1,151 @@ +// $Id$ + +project(DDS_LOBO_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_LOBO_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + LOBO_Test_Receiver.idl + } +} + +project(DDS_LOBO_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_LOBO_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + LOBO_Test_ReceiverE.idl + } +} + +project(DDS_LOBO_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LOBO_Test_Receiver_lem_gen DDS_LOBO_Test_Receiver_stub \ + DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Base_stub + libs += Receiver_stub DDS_LOBO_Test_Connector_stub \ + DDS_LOBO_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_ReceiverEC.cpp + } + + Header_Files { + LOBO_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + LOBO_Test_ReceiverEC.inl + } +} + +project(DDS_LOBO_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_LOBO_Test_Receiver_idl_gen DDS_LOBO_Test_Connector_stub \ + DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_lem_gen + libs += DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_ReceiverC.cpp + } + + Header_Files { + LOBO_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + LOBO_Test_ReceiverC.inl + } +} + +project(DDS_LOBO_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_LOBO_Test_Receiver_lem_stub DDS_LOBO_Test_Receiver_stub \ + DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_stub \ + DDS_LOBO_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_LOBO_Test_Base_stub \ + DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_lem_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_Receiver_exec.cpp + } + + Header_Files { + LOBO_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LOBO_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_LOBO_Test_Receiver_lem_stub DDS_LOBO_Test_Base_stub \ + DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_svnt \ + DDS_LOBO_Test_Receiver_exec DDS_LOBO_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_LOBO_Test_Base_stub \ + DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_svnt \ + Receiver_exec DDS_LOBO_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_ReceiverS.cpp + LOBO_Test_Receiver_svnt.cpp + } + + Header_Files { + LOBO_Test_ReceiverS.h + LOBO_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + LOBO_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..01e2e86b00d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp @@ -0,0 +1,275 @@ +// -*- C++ -*- +// +// $Id$ + +#include "LOBO_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_LOBO_Test_Receiver_Impl +{ + //============================================================ + // ListenOneByOneTest_Listener_exec_i + //============================================================ + ListenOneByOneTest_Listener_exec_i::ListenOneByOneTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many) + : received_one_by_one_ (received_one_by_one), + received_many_by_many_ (received_many_by_many) + { + } + + ListenOneByOneTest_Listener_exec_i::~ListenOneByOneTest_Listener_exec_i (void) + { + } + + void + ListenOneByOneTest_Listener_exec_i::on_one_data ( + const ListenOneByOneTest & an_instance, + const ::CCM_DDS::ReadInfo & info) + { + ACE_DEBUG ((LM_DEBUG, "ListenOneByOneTest_Listener_exec_i::on_one_data: " + "key <%C> - iteration <%d>\n", + an_instance.key.in (), + an_instance.iteration)); + if (!info.instance_handle.isValid) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenOneByOneTest_Listener_exec_i::on_one_data: " + "instance handle seems to be invalid " + "key <%C> - iteration <%d>\n", + an_instance.key.in (), + an_instance.iteration)); + } + if (info.source_timestamp.sec == 0 && + info.source_timestamp.nanosec == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenOneByOneTest_Listener_exec_i::on_one_data: " + "source timestamp seems to be invalid (nil) " + "key <%C> - iteration <%d>\n", + an_instance.key.in (), + an_instance.iteration)); + } + ++this->received_one_by_one_; + } + + void + ListenOneByOneTest_Listener_exec_i::on_many_data ( + const ListenOneByOneTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & /*info*/) + { + //just count. Is checked on ccm_remove. + this->received_many_by_many_ += an_instance.length (); + } + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i ( + Receiver_exec_i &callback) + : callback_ (callback) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr , + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::DATA_ON_READERS_STATUS) + { + this->callback_.start (); + } + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : received_one_by_one_ (0), + received_many_by_many_ (0), + started_ (false), + iterations_ (10), + keys_ (5) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + void + Receiver_exec_i::start () + { + if (!this->started_.value ()) + { + this->started_ = true; + ::CCM_DDS::DataListenerControl_var dlc = + this->context_->get_connection_info_listen_data_control (); + dlc->mode (::CCM_DDS::ONE_BY_ONE); + } + } + + ::CCM_DDS::ListenOneByOneTest::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener (void) + { + return new ListenOneByOneTest_Listener_exec_i ( + this->received_one_by_one_, + this->received_many_by_many_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_listen_connector_status (void) + { + return new ConnectorStatusListener_exec_i (*this); + } + + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Receiver_exec_i::keys (void) + { + return this->keys_; + } + + void + Receiver_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LOBO_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + CORBA::ULong expected = this->keys_ * this->iterations_; + if (this->received_one_by_one_.value () == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: " + "Didn't receive samples on one_by_one " + "callback while mode is ONE_BY_ONE " + "expected <%u> - received <%u>\n", + expected, + this->received_one_by_one_.value ())); + } + else if (expected != this->received_one_by_one_.value ()) + { + ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: " + "Didn't receive the expected " + "number of samples on one_by_one " + "callback while mode is ONE_BY_ONE " + "expected <%u> - received <%u>\n", + expected, + this->received_one_by_one_.value ())); + } + if (this->received_many_by_many_.value () > 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: " + "Received samples on many_by_many " + "callback while mode is ONE_BY_ONE " + "expected <0> - received <%u>\n", + this->received_many_by_many_.value ())); + } + if (!this->started_.value ()) + { + ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: " + "Didn't received DATA_ON_READERS_STATUS on " + "ConnectorStatusListener\n")); + } + if (this->received_one_by_one_.value () > 0 && + this->received_many_by_many_.value () == 0 && + this->started_.value ()) + { + ACE_DEBUG ((LM_DEBUG, "ONE_BY_ONE: " + "Received only data on " + "one_by_one callback. " + "Test passed!\n")); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LOBO_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h new file mode 100644 index 00000000000..6a64f454548 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h @@ -0,0 +1,142 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "LOBO_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Reactor.h" +#include "ace/Task.h" + +#include + +namespace CIAO_LOBO_Test_Receiver_Impl +{ + class Receiver_exec_i; + + typedef ACE_Atomic_Op Atomic_ULong; + typedef ACE_Atomic_Op Atomic_Bool; + + //============================================================ + // ListenOneByOneTest_Listener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ListenOneByOneTest_Listener_exec_i + : public virtual ::CCM_DDS::ListenOneByOneTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + ListenOneByOneTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many); + virtual ~ListenOneByOneTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const ListenOneByOneTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const ListenOneByOneTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_one_by_one_; + Atomic_ULong &received_many_by_many_; + }; + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Receiver_exec_i &callback); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ); + virtual + void on_unexpected_status( ::DDS::Entity_ptr , + ::DDS::StatusKind ); + private: + Receiver_exec_i &callback_; + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + void start (); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual ::CCM_DDS::ListenOneByOneTest::CCM_Listener_ptr + get_info_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_listen_connector_status (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::LOBO_Test::CCM_Receiver_Context_var context_; + + Atomic_ULong received_one_by_one_; + Atomic_ULong received_many_by_many_; + Atomic_Bool started_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LOBO_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl new file mode 100644 index 00000000000..c61f707fd8d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_LISTEN_ONE_BY_ONE_TEST_SENDER_IDL +#define DDS_LISTEN_ONE_BY_ONE_TEST_SENDER_IDL + +#include "Connector/LOBO_Test_Connector.idl" +#include "Connector/LOBO_Test_ConnectorE.idl" + +module LOBO_Test +{ + component Sender + { + port CCM_DDS::ListenOneByOneTest::DDS_Write info_write; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc new file mode 100755 index 00000000000..529ecd38f8a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc @@ -0,0 +1,149 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_LOBO_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_LOBO_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_LOBO_Test_Connector_idl_gen DDS_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + LOBO_Test_Sender.idl + } +} + +project(DDS_LOBO_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_LOBO_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + LOBO_Test_SenderE.idl + } +} + +project(DDS_LOBO_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LOBO_Test_Sender_lem_gen DDS_LOBO_Test_Sender_stub \ + DDS_LOBO_Test_Base_stub + libs += DDS_LOBO_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_SenderEC.cpp + } + + Header_Files { + LOBO_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + LOBO_Test_SenderEC.inl + } +} + +project(DDS_LOBO_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_LOBO_Test_Sender_idl_gen DDS_LOBO_Test_Base_stub \ + DDS_LOBO_Test_Connector_stub + libs += DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_SenderC.cpp + } + + Header_Files { + LOBO_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + LOBO_Test_SenderC.inl + } +} + +project(DDS_LOBO_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_LOBO_Test_Sender_lem_stub DDS_LOBO_Test_Sender_stub \ + DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_stub \ + DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_LOBO_Test_Base_stub \ + DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_Sender_exec.cpp + } + + Header_Files { + LOBO_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LOBO_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Sender_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_LOBO_Test_Connector_stub \ + DDS_LOBO_Test_Connector_svnt DDS_LOBO_Test_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub DDS_LOBO_Test_Base_stub DDS4CCM_lem_stub \ + DDS4CCM_skel DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_svnt \ + DDS_LOBO_Test_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LOBO_Test_SenderS.cpp + LOBO_Test_Sender_svnt.cpp + } + + Header_Files { + LOBO_Test_SenderS.h + LOBO_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + LOBO_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp new file mode 100644 index 00000000000..bdb6d14e5cc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp @@ -0,0 +1,216 @@ +// -*- C++ -*- +// $Id$ + +#include "LOBO_Test_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "ace/Date_Time.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_LOBO_Test_Sender_Impl +{ + //============================================================ + // WriteManyHandler + //============================================================ + WriteTicker::WriteTicker (Sender_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteTicker::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->callback_.write_one (); + return 0; + } + + //============================================================ + // WriteManyHandler + //============================================================ + WriteManyHandler::WriteManyHandler (Sender_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteManyHandler::handle_exception (ACE_HANDLE) + { + this->callback_.write_one (); + return 0; + } + + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : iterations_ (10), + keys_ (5) + { + this->ticker_ = new WriteTicker (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::write_one (void) + { + if (this->last_key_ != this->samples_.end ()) + { + try + { + ++this->last_key_->second->iteration; + this->writer_->write_one (this->last_key_->second, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, "Written key <%C> - <%u>\n", + this->last_key_->first.c_str (), + this->last_key_->second->iteration)); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while updating writer info for <%C>.\n"), + this->last_key_->first.c_str ())); + } + ++this->last_key_; + } + else + { + //onto the next iteration + this->last_key_ = this->samples_.begin (); + while (this->last_key_ != this->samples_.end ()) + { + if (this->last_key_->second->iteration == this->iterations_) + { + //next key + ++this->last_key_; + } + else + { + break; + } + } + if (this->last_key_ == this->samples_.end ()) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + } + } + } + + + void + Sender_exec_i::start (void) + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + ListenOneByOneTest *new_key = new ListenOneByOneTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 0; + + this->samples_[key] = new_key; + } + this->last_key_ = this->samples_.begin (); + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (5, 50000), + ACE_Time_Value (0, 50000)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LOBO_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + try + { + this->writer_ = this->context_->get_connection_info_write_data (); + start (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n"))); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LOBO_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h new file mode 100644 index 00000000000..3245a58ca6f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h @@ -0,0 +1,100 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "LOBO_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_LOBO_Test_Sender_Impl +{ + class Sender_exec_i; + + //============================================================ + // WriteTicker + //============================================================ + class WriteTicker : + public ACE_Event_Handler + { + public: + WriteTicker (Sender_exec_i &callback); + int handle_timeout (const ACE_Time_Value &, const void *); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &callback_; + }; + + //============================================================ + // WriteManyHandler + //============================================================ + class WriteManyHandler : + public ACE_Event_Handler + { + public: + WriteManyHandler (Sender_exec_i &callback); + virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void start (void); + void write_one (void); + + private: + ::LOBO_Test::CCM_Sender_Context_var context_; + CCM_DDS::ListenOneByOneTest::Writer_var writer_; + + WriteTicker *ticker_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map Writer_Table; + Writer_Table samples_; + + Writer_Table::iterator last_key_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LOBO_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp new file mode 100644 index 00000000000..f552f012852 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp @@ -0,0 +1,392 @@ + + + LOBO_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_LOBO_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LOBO_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + LOBO_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_LOBO_Test_LOBO_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LOBO_Test_LOBO_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + LOBO_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + LOBO_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_LOBO_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_LOBO_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + keys + + + tk_ushort + + + 5 + + + + + iterations + + + tk_ushort + + + 10 + + + + + + LOBO_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + LOBO_Test + + + + + + LOBO_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + LOBO_Test + + + + + + SenderComponent + SenderNode + + + + + keys + + + tk_ushort + + + 5 + + + + + iterations + + + tk_ushort + + + 10 + + + + + + + info_listen_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + info_listen_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + info_listen_data_control + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + LOBO_Test_Connector_exec + + + DDS_LOBO_Test_Connector_exec + + + LOBO_Test_Connector_svnt + + + DDS_LOBO_Test_Connector_svnt + + + LOBO_Test_Connector_stub + + + DDS_LOBO_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl new file mode 100755 index 00000000000..a6cac2e165a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 30 seconds to allow task to complete\n"; +sleep (30); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl new file mode 100644 index 00000000000..1bedfe06c99 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file NonChangeable_Base.idl + * @author Marcel Smit + */ + +#ifndef NONCHANGEABLE_BASE_IDL +#define NONCHANGEABLE_BASE_IDL + +struct NonChangeableTest { + string key; + long iteration; +}; + +typedef sequence NonChangeableTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc new file mode 100644 index 00000000000..bb36ef31748 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n NonChangeable_Base" + +project(DDS_NonChangeableBase_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=NONCHANGEABLE_BASE_STUB_Export \ + -Wb,stub_export_include=NonChangeable_Base_stub_export.h + + IDL_Files { + NonChangeable_Base.idl + } +} + +project(DDS_NonChangeableBase_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_NonChangeableBase_idl_gen + ndds_ts_flags += -corba NonChangeable_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + NonChangeable_Base.idl + } +} + +project(DDS_NonChangeableBase_NDDS_TS) : nddslib, taolib { + after += DDS_NonChangeableBase_ndds_ts_gen DDS_NonChangeableBase_stub + libs += DDS_NonChangeableBase_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_NonChangeableBase_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + NonChangeable_Base.cxx + NonChangeable_BasePlugin.cxx + NonChangeable_BaseSupport.cxx + } + + Header_Files { + NonChangeable_Base.h + NonChangeable_BasePlugin.h + NonChangeable_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_NonChangeableBase_stub) : ccm_stub { + after += DDS_NonChangeableBase_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_NonChangeableBase_stub + dynamicflags = NONCHANGEABLE_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NonChangeable_BaseC.cpp + } + + Header_Files { + NonChangeable_BaseC.h + NonChangeable_Base_stub_export.h + } + + Inline_Files { + NonChangeable_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl new file mode 100644 index 00000000000..2f63dcb0787 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file NonChangeable_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef NONCHANGEABLE_CONNECTOR_IDL_ +#define NONCHANGEABLE_CONNECTOR_IDL_ + +#include +#include "Base/NonChangeable_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::NonChangeableTest, ::NonChangeableTest_Seq, NonChangeableTest) + +module NonChangeable +{ + connector NonChangeable_Connector : ::CCM_DDS::NonChangeableTest::DDS_Event + { + }; +}; + +#endif /* NonChangeable_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc new file mode 100644 index 00000000000..d5a5d367cf4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_NonChangeableBase -l .. -o ../lib -u DDS NonChangeable_Connector" + +project(DDS_NonChangeableConnector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=NONCHANGEABLE_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=NonChangeable_Connector_stub_export.h \ + -Wb,skel_export_macro=NONCHANGEABLE_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=NonChangeable_Connector_svnt_export.h \ + -Wb,svnt_export_macro=NONCHANGEABLE_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=NonChangeable_Connector_svnt_export.h \ + -Wb,exec_export_macro=NONCHANGEABLE_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=NonChangeable_Connector_exec_export.h \ + -I .. + + IDL_Files { + NonChangeable_Connector.idl + } +} + +project(DDS_NonChangeableConnector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_NonChangeableConnector_idl_gen + idlflags += -Wb,stub_export_macro=NONCHANGEABLE_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=NonChangeable_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + NonChangeable_ConnectorE.idl + } +} + +project(DDS_NonChangeableConnector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_NonChangeableConnector_lem_gen DDS_NonChangeableConnector_stub DDS_NonChangeableBase_stub DDS4CCM_lem_stub + libs += DDS_NonChangeableBase_stub DDS_NonChangeableConnector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_NonChangeableConnector_lem_stub + dynamicflags = NONCHANGEABLE_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NonChangeable_ConnectorEC.cpp + } + + Header_Files { + NonChangeable_ConnectorEC.h + NonChangeable_Connector_lem_stub_export.h + } + + Inline_Files { + NonChangeable_ConnectorEC.inl + } +} + +project(DDS_NonChangeableConnector_stub) : ccm_stub, dds4ccm_base { + after += DDS_NonChangeableConnector_idl_gen DDS_NonChangeableBase_stub + libs += DDS_NonChangeableBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_NonChangeableConnector_stub + dynamicflags = NONCHANGEABLE_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NonChangeable_ConnectorC.cpp + } + + Header_Files { + NonChangeable_ConnectorC.h + NonChangeable_Connector_stub_export.h + } + + Inline_Files { + NonChangeable_ConnectorC.inl + } +} + +project(DDS_NonChangeableConnector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_NonChangeableConnector_lem_stub DDS_NonChangeableConnector_stub DDS4CCM_lem_stub DDS_NonChangeableBase_NDDS_TS + sharedname = DDS_NonChangeableConnector_exec + libs += DDS_NonChangeableConnector_stub DDS_NonChangeableConnector_lem_stub DDS_NonChangeableBase_stub DDS4CCM_lem_stub DDS_NonChangeableBase_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = NONCHANGEABLE_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NonChangeable_Connector_exec.cpp + } + + Header_Files { + NonChangeable_Connector_exec.h + NonChangeable_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_NonChangeableConnector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_NonChangeableConnector_lem_stub DDS_NonChangeableConnector_exec DDS_NonChangeableConnector_stub DDS4CCM_lem_stub + sharedname = DDS_NonChangeableConnector_svnt + libs += DDS_NonChangeableConnector_stub \ + DDS_NonChangeableConnector_lem_stub \ + DDS_NonChangeableBase_stub \ + DDS_NonChangeableConnector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = NONCHANGEABLE_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NonChangeable_ConnectorS.cpp + NonChangeable_Connector_svnt.cpp + } + + Header_Files { + NonChangeable_ConnectorS.h + NonChangeable_Connector_svnt.h + NonChangeable_Connector_svnt_export.h + } + + Inline_Files { + NonChangeable_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp new file mode 100644 index 00000000000..67dd26afc95 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.cpp @@ -0,0 +1,170 @@ +// -*- C++ -*- +// $Id$ + +#include "NonChangeable_Connector_exec.h" + +namespace CIAO_NonChangeable_NonChangeable_Connector_Impl +{ + NonChangeable_Connector_exec_i::NonChangeable_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + NonChangeable_Connector_exec_i::~NonChangeable_Connector_exec_i (void) + { + } + + void + NonChangeable_Connector_exec_i::test_domain_id () + { + bool nonchangeable_caught = false; + try + { + DDS::DomainId_t id = 0; + this->domain_id (id); + } + catch (const CCM_DDS::NonChangeable) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("test_domain_id : Expected exception caught\n"))); + nonchangeable_caught = true; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_domain_id : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_domain_id : Unknown exception caught\n"))); + } + if (!nonchangeable_caught) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_domain_id : No NonChangeable exception caught\n"))); + } + } + + void + NonChangeable_Connector_exec_i::test_qos_profile () + { + bool nonchangeable_caught = false; + try + { + this->qos_profile ("test"); + } + catch (const CCM_DDS::NonChangeable) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("test_qos_profile : Expected exception caught\n"))); + nonchangeable_caught = true; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_qos_profile : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_qos_profile : Unknown exception caught\n"))); + } + if (!nonchangeable_caught) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_qos_profile : No NonChangeable exception caught\n"))); + } + } + + void + NonChangeable_Connector_exec_i::test_topic_name () + { + bool nonchangeable_caught = false; + try + { + this->topic_name ("test"); + } + catch (const CCM_DDS::NonChangeable) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("test_topic_name : Expected exception caught\n"))); + nonchangeable_caught = true; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_topic_name : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_topic_name : Unknown exception caught\n"))); + } + if (!nonchangeable_caught) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_topic_name : No NonChangeable exception caught\n"))); + } + } + + void + NonChangeable_Connector_exec_i::test_key_fields () + { + bool nonchangeable_caught = false; + try + { + DDS::StringSeq key_fields; + this->key_fields (key_fields); + } + catch (const CCM_DDS::NonChangeable) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("test_key_fields : Expected exception caught\n"))); + nonchangeable_caught = true; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_key_fields : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_key_fields : Unknown exception caught\n"))); + } + if (!nonchangeable_caught) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_key_fields : No NonChangeable exception caught\n"))); + } + } + + + void + NonChangeable_Connector_exec_i::ccm_activate () + { + test_domain_id (); + test_qos_profile (); + test_topic_name (); + test_key_fields (); + } + + extern "C" NONCHANGEABLE_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_NonChangeable_NonChangeable_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + NonChangeable_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.h new file mode 100644 index 00000000000..436fb018deb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector_exec.h @@ -0,0 +1,67 @@ +// -*- C++ -*- +// $Id$ + +#ifndef NONCHANGEABLE_CONNECTOR_EXEC_H_ +#define NONCHANGEABLE_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "NonChangeable_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "NonChangeable_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/NonChangeable_BaseSupport.h" + +namespace CIAO_NonChangeable_NonChangeable_Connector_Impl +{ + // @from use of NonChangeableTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + NonChangeableTest, + NonChangeableTestSeq, + NonChangeableTestTypeSupport, + NonChangeableTestDataWriter, + NonChangeableTestDataReader > NonChangeableTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_NonChangeable_NonChangeable_Connector_Impl::NonChangeable_Connector_Exec, + NonChangeableTest_Seq, + ::CCM_DDS::NonChangeableTest::CCM_Writer, + ::CCM_DDS::NonChangeableTest::CCM_Updater, + ::CCM_DDS::NonChangeableTest::CCM_Getter, + ::CCM_DDS::NonChangeableTest::CCM_Reader, + ::NonChangeable::CCM_NonChangeable_Connector_Context, + ::CCM_DDS::NonChangeableTest::Listener, + ::CCM_DDS::NonChangeableTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> NonChangeableTest_Connector_Traits; + + class NONCHANGEABLE_CONNECTOR_EXEC_Export NonChangeable_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + NonChangeable_Connector_exec_i (void); + virtual ~NonChangeable_Connector_exec_i (void); + + void ccm_activate (void); + private: + void test_domain_id (); + void test_qos_profile (); + void test_topic_name (); + void test_key_fields (); + }; + + extern "C" NONCHANGEABLE_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_NonChangeable_NonChangeable_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README new file mode 100644 index 00000000000..575f11fbb77 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README @@ -0,0 +1,15 @@ +# $Id$ + +This test tests whether the connection attributes +can be set once the configuration is complete. +This shouldn't be allowed and therefore a +NonChangeable exception must be thrown. + +The following attributes are tested: + * key_fields + * domain_id + * qos_profile + * topic_name + +An error is reported for every attribute where +no NonChangeable exception was catched. diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp new file mode 100644 index 00000000000..9a762f94f81 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp @@ -0,0 +1,98 @@ + + + NonChangeableAttribute_Depl_1 + + + + NonChangeableConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_NonChangeable_NonChangeable_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_NonChangeable_NonChangeable_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + NonChangeableConnector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + NonChangeableConnector_exec + + + + + + NonChangeableConnectorComponent + ComponentNode + + + + + topic_name + + + tk_string + + + NonChangeable + + + + + + + NonChangeableConnector_exec + + + DDS_NonChangeableConnector_exec + + + NonChangeableConnector_svnt + + + DDS_NonChangeableConnector_svnt + + + NonChangeableConnector_stub + + + DDS_NonChangeableConnector_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl new file mode 100755 index 00000000000..bbb29e79d89 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "ComponentNode"); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 5 seconds to allow task to complete\n"; +sleep (5); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.idl new file mode 100644 index 00000000000..0d56350babc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.idl @@ -0,0 +1,28 @@ +// $Id$ + +/** + * @file + * @author + */ + +#ifndef CONNECTORSTATUSLISTENER_TEST_BASE_IDL +#define CONNECTORSTATUSLISTENER_TEST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; + + +typedef sequence TestTopic_Seq; + +struct TestSecondTopic { + string key; //@key + long x; + long y; + }; + + +typedef sequence TestSecondTopic_Seq; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.mpc new file mode 100644 index 00000000000..c455e94ce31 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/ConnectorStatusListener_Test_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n ConnectorStatusListener_Test_Base" + +project(DDS_OIT_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=CONNECTORSTATUSLISTENER_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=ConnectorStatusListener_Test_Base_stub_export.h + + IDL_Files { + ConnectorStatusListener_Test_Base.idl + } +} + +project(DDS_OIT_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_OIT_Test_Base_idl_gen + ndds_ts_flags += -corba ConnectorStatusListener_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + ConnectorStatusListener_Test_Base.idl + } +} + +project(DDS_OIT_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_OIT_Test_Base_ndds_ts_gen DDS_OIT_Test_Base_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_ConnectorStatusListener_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + ConnectorStatusListener_Test_Base.cxx + ConnectorStatusListener_Test_BasePlugin.cxx + ConnectorStatusListener_Test_BaseSupport.cxx + } + + Header_Files { + ConnectorStatusListener_Test_Base.h + ConnectorStatusListener_Test_BasePlugin.h + ConnectorStatusListener_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_OIT_Test_Base_stub) : ccm_stub { + after += DDS_OIT_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_ConnectorStatusListener_Test_Base_stub + dynamicflags = CONNECTORSTATUSLISTENER_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_BaseC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_BaseC.h + ConnectorStatusListener_Test_Base_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.idl new file mode 100644 index 00000000000..cfb0fecd37f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file ConnectorStatusListener_Test_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef CONNECTORSTATUSLISTENER_TEST_CONNECTOR_IDL_ +#define CONNECTORSTATUSLISTENER_TEST_CONNECTOR_IDL_ + +#include +#include "Base/ConnectorStatusListener_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module ConnectorStatusListener_Test +{ + connector ConnectorStatusListener_Test_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* ConnectorStatusListener_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.mpc new file mode 100644 index 00000000000..56b493a9cb2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_OIT_Test_Base -l .. -o ../lib -u DDS ConnectorStatusListener_Test_Connector" + +project(DDS_OIT_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CONNECTORSTATUSLISTENER_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=ConnectorStatusListener_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=CONNECTORSTATUSLISTENER_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=ConnectorStatusListener_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=CONNECTORSTATUSLISTENER_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=ConnectorStatusListener_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=ConnectorStatusListener_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + ConnectorStatusListener_Test_Connector.idl + } +} + +project(DDS_OIT_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_OIT_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=CONNECTORSTATUSLISTENER_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=ConnectorStatusListener_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + ConnectorStatusListener_Test_ConnectorE.idl + } +} + +project(DDS_OIT_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_OIT_Test_Connector_lem_gen DDS_OIT_Test_Connector_stub DDS_OIT_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub DDS_ConnectorStatusListener_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_ConnectorStatusListener_Test_Connector_lem_stub + dynamicflags = CONNECTORSTATUSLISTENER_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_ConnectorEC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_ConnectorEC.h + ConnectorStatusListener_Test_Connector_lem_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_ConnectorEC.inl + } +} + +project(DDS_OIT_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_OIT_Test_Connector_idl_gen DDS_OIT_Test_Base_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_ConnectorStatusListener_Test_Connector_stub + dynamicflags = CONNECTORSTATUSLISTENER_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_ConnectorC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_ConnectorC.h + ConnectorStatusListener_Test_Connector_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_ConnectorC.inl + } +} + +project(DDS_OIT_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_OIT_Test_Connector_lem_stub DDS_OIT_Test_Connector_stub DDS4CCM_lem_stub DDS_OIT_Test_Base_NDDS_TS + sharedname = DDS_ConnectorStatusListener_Test_Connector_exec + libs += DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_Test_Connector_lem_stub DDS_ConnectorStatusListener_Test_Base_stub DDS4CCM_lem_stub DDS_ConnectorStatusListener_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_Connector_exec.cpp + } + + Header_Files { + ConnectorStatusListener_Test_Connector_exec.h + ConnectorStatusListener_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_OIT_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_OIT_Test_Connector_lem_stub DDS_OIT_Test_Connector_exec DDS_OIT_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_ConnectorStatusListener_Test_Connector_svnt + libs += DDS_ConnectorStatusListener_Test_Connector_stub \ + DDS_ConnectorStatusListener_Test_Connector_lem_stub \ + DDS_ConnectorStatusListener_Test_Base_stub \ + DDS_ConnectorStatusListener_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CONNECTORSTATUSLISTENER_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_ConnectorS.cpp + ConnectorStatusListener_Test_Connector_svnt.cpp + } + + Header_Files { + ConnectorStatusListener_Test_ConnectorS.h + ConnectorStatusListener_Test_Connector_svnt.h + ConnectorStatusListener_Test_Connector_svnt_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.cpp new file mode 100644 index 00000000000..48290925cd1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "ConnectorStatusListener_Test_Connector_exec.h" + +namespace CIAO_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Impl +{ + ConnectorStatusListener_Test_Connector_exec_i::ConnectorStatusListener_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + ConnectorStatusListener_Test_Connector_exec_i::~ConnectorStatusListener_Test_Connector_exec_i (void) + { + } + + extern "C" CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + ConnectorStatusListener_Test_Connector_exec_i ()); //should be set by dep. plan. + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.h new file mode 100644 index 00000000000..739257a7345 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Connector/ConnectorStatusListener_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_H_ +#define CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "ConnectorStatusListener_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "ConnectorStatusListener_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/ConnectorStatusListener_Test_BaseSupport.h" + +namespace CIAO_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Impl +{ + + // @from use of ConnectorStatusListener_Test as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Impl::ConnectorStatusListener_Test_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::ConnectorStatusListener_Test::CCM_ConnectorStatusListener_Test_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_Export ConnectorStatusListener_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + ConnectorStatusListener_Test_Connector_exec_i (void); + virtual ~ConnectorStatusListener_Test_Connector_exec_i (void); + }; + + extern "C" CONNECTORSTATUSLISTENER_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.idl new file mode 100644 index 00000000000..ac276b21c52 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author > + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/ConnectorStatusListener_Test_Connector.idl" +#include "Connector/ConnectorStatusListener_Test_ConnectorE.idl" + +module ConnectorStatusListener_Test +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.mpc new file mode 100644 index 00000000000..0b5d77ebebb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_OIT_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_OIT_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + ConnectorStatusListener_Test_Receiver.idl + } +} + +project(DDS_OIT_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_OIT_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + ConnectorStatusListener_Test_ReceiverE.idl + } +} + +project(DDS_OIT_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_OIT_Test_Receiver_lem_gen DDS_OIT_Test_Receiver_stub DDS_OIT_Test_Connector_stub DDS_OIT_Test_Base_stub + libs += Receiver_stub DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_ReceiverEC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_ReceiverEC.inl + } +} + +project(DDS_OIT_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_OIT_Test_Receiver_idl_gen DDS_OIT_Test_Connector_stub DDS_OIT_Test_Base_stub DDS_OIT_Test_Connector_lem_gen + libs += DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_ReceiverC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_ReceiverC.inl + } +} + +project(DDS_OIT_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_OIT_Test_Receiver_lem_stub DDS_OIT_Test_Receiver_stub DDS_OIT_Test_Base_stub DDS_OIT_Test_Connector_stub DDS_OIT_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_ConnectorStatusListener_Test_Base_stub DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_Test_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_Receiver_exec.cpp + } + + Header_Files { + ConnectorStatusListener_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_OIT_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_OIT_Test_Receiver_lem_stub DDS_OIT_Test_Base_stub DDS_OIT_Test_Connector_stub DDS_OIT_Test_Connector_svnt DDS_OIT_Test_Receiver_exec DDS_OIT_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_ConnectorStatusListener_Test_Base_stub DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_Test_Connector_svnt Receiver_exec DDS_ConnectorStatusListener_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_ReceiverS.cpp + ConnectorStatusListener_Test_Receiver_svnt.cpp + } + + Header_Files { + ConnectorStatusListener_Test_ReceiverS.h + ConnectorStatusListener_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..13e5cb9fcc5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.cpp @@ -0,0 +1,220 @@ +// -*- C++ -*- +// $Id$ + +#include "ConnectorStatusListener_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_ConnectorStatusListener_Test_Receiver_Impl +{ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &inconsistent) + : inconsistent_ (inconsistent) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /* the_topic */, + const DDS::InconsistentTopicStatus & /* status */) + { + this->inconsistent_ = true; + //ACE_DEBUG ((LM_DEBUG, "Receiver: ConnectorStatusListener_exec_i::on_inconsistent_topic\n")); + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) + { + //ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n")); + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) + { + //ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_sample_rejected\n")); + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) + { + //ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_deadline_missed\n")); + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) + { + //ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n")); + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) + { + //ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_unexpected_status\n")); + } + + TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (void) + { + } + + TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_RawListener + + void + TestTopic_RawListener_exec_i::on_one_data ( + const TestTopic & /*an_instance*/ , + const ::CCM_DDS::ReadInfo & /* info */) + { + //ACE_DEBUG ((LM_DEBUG, " receive data ============= %d\n", this->received_)); + } + + void + TestTopic_RawListener_exec_i::on_many_data ( + const TestTopic_Seq & /*an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + //ACE_DEBUG ((LM_DEBUG, " receive data ============= %d\n", this->received_)); + } + + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + + PortStatusListener_exec_i::PortStatusListener_exec_i (void) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : inconsistent_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_RawListener_exec_i (); + } + + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->inconsistent_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::ConnectorStatusListener_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + ACE_DEBUG ((LM_DEBUG, "*************in remove Receiver********** \n")); + if(!this->inconsistent_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("error 'on_inconsistent_topic' in Receiver\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT ("'on_inconsistent_topic' in Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.h new file mode 100644 index 00000000000..dd5417f4c6e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/ConnectorStatusListener_Test_Receiver_exec.h @@ -0,0 +1,132 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "ConnectorStatusListener_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_ConnectorStatusListener_Test_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + + class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_RawListener_exec_i (void); + virtual ~TestTopic_RawListener_exec_i (void); + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_many_data ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & infos); + }; + + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &inconsistent_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::ConnectorStatusListener_Test::CCM_Receiver_Context_var context_; + Atomic_Boolean inconsistent_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.cpp new file mode 100644 index 00000000000..399f716c2a4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "CSL_TestSec_Connector_exec.h" + +namespace CIAO_ConnectorStatusListener_TestSec_ConnectorStatusListener_TestSec_Connector_Impl +{ + ConnectorStatusListener_TestSec_Connector_exec_i::ConnectorStatusListener_TestSec_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + ConnectorStatusListener_TestSec_Connector_exec_i::~ConnectorStatusListener_TestSec_Connector_exec_i (void) + { + } + + extern "C" CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_TestSec_ConnectorStatusListener_TestSec_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + ConnectorStatusListener_TestSec_Connector_exec_i ()); //should be set by dep. plan. + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.h new file mode 100644 index 00000000000..f50cea99cfe --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/CSL_TestSec_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_H_ +#define CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "ConnectorStatusListener_TestSec_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "ConnectorStatusListener_TestSec_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/ConnectorStatusListener_Test_BaseSupport.h" + +namespace CIAO_ConnectorStatusListener_TestSec_ConnectorStatusListener_TestSec_Connector_Impl +{ + + // @from use of ConnectorStatusListener_Test as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestSecondTopic, + TestSecondTopicSeq, + TestSecondTopicTypeSupport, + TestSecondTopicDataWriter, + TestSecondTopicDataReader > TestSecondTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_ConnectorStatusListener_Test_ConnectorStatusListener_TestSec_Connector_Impl::ConnectorStatusListener_TestSec_Connector_Exec, + TestSecondTopic_Seq, + ::CCM_DDS::TestSecondTopic::CCM_Writer, + ::CCM_DDS::TestSecondTopic::CCM_Updater, + ::CCM_DDS::TestSecondTopic::CCM_Getter, + ::CCM_DDS::TestSecondTopic::CCM_Reader, + ::ConnectorStatusListener_Test::CCM_ConnectorStatusListener_TestSec_Connector_Context, + ::CCM_DDS::TestSecondTopic::Listener, + ::CCM_DDS::TestSecondTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestSecondTopic_Connector_Traits; + + class CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_Export ConnectorStatusListener_TestSec_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + ConnectorStatusListener_TestSec_Connector_exec_i (void); + virtual ~ConnectorStatusListener_TestSec_Connector_exec_i (void); + }; + + extern "C" CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_TestSec_ConnectorStatusListener_TestSec_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.idl new file mode 100644 index 00000000000..4f3e70aa2b1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file ConnectorStatusListener_TestSec_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_IDL_ +#define CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_IDL_ + +#include +#include "Base/ConnectorStatusListener_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestSecondTopic, ::TestSecondTopic_Seq, TestSecondTopic) + +module ConnectorStatusListener_Test +{ + connector ConnectorStatusListener_TestSec_Connector : ::CCM_DDS::TestSecondTopic::DDS_Event + { + }; + +}; + + + +#endif /* ConnectorStatusListener_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc new file mode 100644 index 00000000000..3596be88f93 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SecConnector/ConnectorStatusListener_TestSec_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_OIT_Test_Base -l .. -o ../lib -u DDS ConnectorStatusListener_TestSec_Connector" + +project(DDS_OIT_TestSec_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=ConnectorStatusListener_TestSec_Connector_stub_export.h \ + -Wb,skel_export_macro=CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=ConnectorStatusListener_TestSec_Connector_svnt_export.h \ + -Wb,svnt_export_macro=CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=ConnectorStatusListener_TestSec_Connector_svnt_export.h \ + -Wb,exec_export_macro=CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=ConnectorStatusListener_TestSec_Connector_exec_export.h \ + -I .. + + IDL_Files { + ConnectorStatusListener_TestSec_Connector.idl + } +} + +project(DDS_OIT_TestSec_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_OIT_TestSec_Connector_idl_gen + idlflags += -Wb,stub_export_macro=CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=ConnectorStatusListener_TestSec_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + ConnectorStatusListener_TestSec_ConnectorE.idl + } +} + +project(DDS_OIT_TestSec_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_OIT_TestSec_Connector_lem_gen DDS_OIT_TestSec_Connector_stub DDS_OIT_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub DDS_ConnectorStatusListener_TestSec_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_CSL_TestSec_Connector_lem_stub + dynamicflags = CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_TestSec_ConnectorEC.cpp + } + + Header_Files { + ConnectorStatusListener_TestSec_ConnectorEC.h + ConnectorStatusListener_TestSec_Connector_lem_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_TestSec_ConnectorEC.inl + } +} + +project(DDS_OIT_TestSec_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_OIT_TestSec_Connector_idl_gen DDS_OIT_Test_Base_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_ConnectorStatusListener_TestSec_Connector_stub + dynamicflags = CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_TestSec_ConnectorC.cpp + } + + Header_Files { + ConnectorStatusListener_TestSec_ConnectorC.h + ConnectorStatusListener_TestSec_Connector_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_TestSec_ConnectorC.inl + } +} + +project(DDS_OIT_TestSec_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_OIT_TestSec_Connector_lem_stub DDS_OIT_TestSec_Connector_stub DDS4CCM_lem_stub DDS_OIT_Test_Base_NDDS_TS + sharedname = DDS_ConnectorStatusListener_TestSec_Connector_exec + libs += DDS_ConnectorStatusListener_TestSec_Connector_stub DDS_CSL_TestSec_Connector_lem_stub DDS_ConnectorStatusListener_Test_Base_stub DDS4CCM_lem_stub DDS_ConnectorStatusListener_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CSL_TestSec_Connector_exec.cpp + } + + Header_Files { + CSL_TestSec_Connector_exec.h + ConnectorStatusListener_TestSec_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_OIT_TestSec_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_OIT_TestSec_Connector_lem_stub DDS_OIT_TestSec_Connector_exec DDS_OIT_TestSec_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_ConnectorStatusListener_TestSec_Connector_svnt + libs += DDS_ConnectorStatusListener_TestSec_Connector_stub \ + DDS_CSL_TestSec_Connector_lem_stub \ + DDS_ConnectorStatusListener_Test_Base_stub \ + DDS_ConnectorStatusListener_TestSec_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = CONNECTORSTATUSLISTENER_TESTSEC_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_TestSec_ConnectorS.cpp + ConnectorStatusListener_TestSec_Connector_svnt.cpp + } + + Header_Files { + ConnectorStatusListener_TestSec_ConnectorS.h + ConnectorStatusListener_TestSec_Connector_svnt.h + ConnectorStatusListener_TestSec_Connector_svnt_export.h + } + + Inline_Files { + ConnectorStatusListener_TestSec_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.idl new file mode 100644 index 00000000000..0b5c0e851c1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.idl @@ -0,0 +1,28 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_CONNECTORSTATUSLISTENER_TEST_SENDER_IDL +#define DDS_CONNECTORSTATUSLISTENER_TEST_SENDER_IDL + +#include "Connector/ConnectorStatusListener_Test_Connector.idl" +#include "Connector/ConnectorStatusListener_Test_ConnectorE.idl" + +#include "SecConnector/ConnectorStatusListener_TestSec_Connector.idl" +#include "SecConnector/ConnectorStatusListener_TestSec_ConnectorE.idl" + + +module ConnectorStatusListener_Test +{ + component Sender + { + port CCM_DDS::TestSecondTopic::DDS_Write test_sec_topic_write; + provides CCM_DDS::ConnectorStatusListener test_sec_topic_connector_status; + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc new file mode 100644 index 00000000000..17f8b690ba8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender.mpc @@ -0,0 +1,146 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_OIT_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_OIT_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_OIT_Test_Connector_idl_gen DDS_OIT_TestSec_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + ConnectorStatusListener_Test_Sender.idl + } +} + +project(DDS_OIT_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_OIT_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + ConnectorStatusListener_Test_SenderE.idl + } +} + +project(DDS_OIT_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_OIT_Test_Sender_lem_gen DDS_OIT_Test_Sender_stub DDS_OIT_Test_Base_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_SenderEC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_SenderEC.inl + } +} + +project(DDS_OIT_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_OIT_Test_Sender_idl_gen DDS_OIT_Test_Base_stub DDS_OIT_TestSec_Connector_lem_stub DDS_OIT_Test_Connector_lem_stub DDS_OIT_Test_Connector_stub DDS_OIT_TestSec_Connector_stub + libs += DDS_ConnectorStatusListener_Test_Base_stub DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_TestSec_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_SenderC.cpp + } + + Header_Files { + ConnectorStatusListener_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_SenderC.inl + } +} + +project(DDS_OIT_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_OIT_Test_Sender_lem_stub DDS_OIT_Test_Sender_stub DDS_OIT_Test_Connector_lem_stub DDS_OIT_TestSec_Connector_lem_stub DDS_OIT_Test_Connector_stub DDS_OIT_TestSec_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_ConnectorStatusListener_Test_Base_stub DDS_CSL_TestSec_Connector_lem_stub DDS_ConnectorStatusListener_Test_Connector_stub DDS_ConnectorStatusListener_TestSec_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_Sender_exec.cpp + } + + Header_Files { + ConnectorStatusListener_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_OIT_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_OIT_Test_Base_stub DDS_OIT_Test_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_OIT_Test_Connector_stub DDS_OIT_TestSec_Connector_stub DDS_OIT_Test_Connector_svnt DDS_OIT_TestSec_Connector_svnt DDS_OIT_Test_Connector_lem_stub DDS_OIT_TestSec_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_ConnectorStatusListener_Test_Base_stub \ + DDS4CCM_lem_stub DDS4CCM_skel \ + DDS_ConnectorStatusListener_Test_Connector_stub \ + DDS_ConnectorStatusListener_TestSec_Connector_stub \ + DDS_ConnectorStatusListener_Test_Connector_svnt \ + DDS_ConnectorStatusListener_TestSec_Connector_svnt \ + DDS_CSL_TestSec_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ConnectorStatusListener_Test_SenderS.cpp + ConnectorStatusListener_Test_Sender_svnt.cpp + } + + Header_Files { + ConnectorStatusListener_Test_SenderS.h + ConnectorStatusListener_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + ConnectorStatusListener_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp new file mode 100644 index 00000000000..ec92d40db5f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.cpp @@ -0,0 +1,149 @@ +// -*- C++ -*- +// $Id$ + +#include "ConnectorStatusListener_Test_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_ConnectorStatusListener_Test_Sender_Impl +{ + + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_sec_exec_i + //============================================================ + + ConnectorStatusListener_sec_exec_i::ConnectorStatusListener_sec_exec_i (Atomic_Boolean &inconsistent) + : inconsistent_ (inconsistent) + { + } + + ConnectorStatusListener_sec_exec_i::~ConnectorStatusListener_sec_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_sec_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { +// ACE_DEBUG ((LM_DEBUG, "Sender : ConnectorStatusListener_sec_exec_i::on_inconsistent_topic\n")); + this->inconsistent_ = true; + } + void ConnectorStatusListener_sec_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { +// ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n")); + } + void ConnectorStatusListener_sec_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { +// ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_sample_rejected\n")); + } + void ConnectorStatusListener_sec_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { +// ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_deadline_missed\n")); + } + void ConnectorStatusListener_sec_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { +// ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n")); + } + void ConnectorStatusListener_sec_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { +// ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_unexpected_status\n")); + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : inconsistent_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_sec_topic_connector_status (void) + { + return new ConnectorStatusListener_sec_exec_i (this->inconsistent_); + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::ConnectorStatusListener_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + +void + Sender_exec_i::add_instance_of_sec_topic (const char * key, int x) + { + TestSecondTopic *new_key = new TestSecondTopic; + new_key->key = CORBA::string_dup(key); + new_key->x = x; + new_key->y = x + 10; + this->sec_ktests_[key] = new_key; + } + + void + Sender_exec_i::ccm_activate (void) + { + //add 2 different instances of topic + this->add_instance_of_sec_topic ("EEN",1); + this->add_instance_of_sec_topic ("TWEE",2); + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + if(!this->inconsistent_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("error 'on_inconsistent_topic' in Sender\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ") + ACE_TEXT (" 'on_inconsistent_topic' in Sender\n"))); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.h new file mode 100644 index 00000000000..aeb634f6f79 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/ConnectorStatusListener_Test_Sender_exec.h @@ -0,0 +1,98 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "ConnectorStatusListener_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_ConnectorStatusListener_Test_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + +class SENDER_EXEC_Export ConnectorStatusListener_sec_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_sec_exec_i (Atomic_Boolean &); + virtual ~ConnectorStatusListener_sec_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + private: + Atomic_Boolean &inconsistent_; + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void add_instance_of_sec_topic (const char *, int x ); + + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_sec_topic_connector_status(void); + + private: + ::ConnectorStatusListener_Test::CCM_Sender_Context_var context_; + + Atomic_Boolean inconsistent_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map ConnectorStatusListener_TestSec_Table; + ConnectorStatusListener_TestSec_Table sec_ktests_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ConnectorStatusListener_Test_Sender_Impl (void); + + + +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp new file mode 100644 index 00000000000..1c52fdc2dbb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp @@ -0,0 +1,482 @@ + + + ConnectorStatusListener_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_ConnectorStatusListener_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_ConnectorStatusListener_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + ConnectorStatusListener_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_ConnectorStatusListener_Test_ConnectorStatusListener_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ConnectorStatusListener_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ConnectorStatusListener_Test_Connector_exec + + + + + + + ConnectorStatusListener_TestSec_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_ConnectorStatusListener_TestSec_ConnectorStatusListener_TestSec_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_ConnectorStatusListener_Test_ConnectorStatusListener_TestSec_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ConnectorStatusListener_TestSec_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ConnectorStatusListener_TestSec_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_ConnectorStatusListener_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_ConnectorStatusListener_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + ConnectorStatusListener_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestSquare + + + + + + + ConnectorStatusListener_Test_ConnectorComponentSec + SenderNode + + + + + topic_name + + + tk_string + + + TestSquare + + + + + + + + ConnectorStatusListener_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestSquare + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + test_sec_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_sec_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + + + writer_connection2 + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_sec_topic_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + ConnectorStatusListener_Test_Connector_exec + + + DDS_ConnectorStatusListener_Test_Connector_exec + + + ConnectorStatusListener_Test_Connector_svnt + + + DDS_ConnectorStatusListener_Test_Connector_svnt + + + ConnectorStatusListener_Test_Connector_stub + + + DDS_ConnectorStatusListener_Test_Connector_stub + + + + ConnectorStatusListener_TestSec_Connector_exec + + + DDS_ConnectorStatusListener_TestSec_Connector_exec + + + ConnectorStatusListener_TestSec_Connector_svnt + + + DDS_ConnectorStatusListener_TestSec_Connector_svnt + + + ConnectorStatusListener_TestSec_Connector_stub + + + DDS_ConnectorStatusListener_TestSec_Connector_stub + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl new file mode 100644 index 00000000000..844ab83201f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl @@ -0,0 +1,236 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl new file mode 100644 index 00000000000..a68da731f57 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file PSL_DeadlineTest_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef PSL_DEADLINETEST_BASE_IDL +#define PSL_DEADLINETEST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc new file mode 100644 index 00000000000..5324ce8c4e4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n PSL_DeadlineTest_Base" + +project(DDS_PSL_DeadlineTest_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=PSL_DEADLINETEST_BASE_STUB_Export \ + -Wb,stub_export_include=PSL_DeadlineTest_Base_stub_export.h + + IDL_Files { + PSL_DeadlineTest_Base.idl + } +} + +project(DDS_PSL_DeadlineTest_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_PSL_DeadlineTest_Base_idl_gen + ndds_ts_flags += -corba PSL_DeadlineTest_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + PSL_DeadlineTest_Base.idl + } +} + +project(DDS_PSL_DeadlineTest_Base_NDDS_TS) : nddslib, taolib { + after += DDS_PSL_DeadlineTest_Base_ndds_ts_gen DDS_PSL_DeadlineTest_Base_stub + libs += DDS_PSL_DeadlineTest_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_PSL_DeadlineTest_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + PSL_DeadlineTest_Base.cxx + PSL_DeadlineTest_BasePlugin.cxx + PSL_DeadlineTest_BaseSupport.cxx + } + + Header_Files { + PSL_DeadlineTest_Base.h + PSL_DeadlineTest_BasePlugin.h + PSL_DeadlineTest_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_PSL_DeadlineTest_Base_stub) : ccm_stub { + after += DDS_PSL_DeadlineTest_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_PSL_DeadlineTest_Base_stub + dynamicflags = PSL_DEADLINETEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_BaseC.cpp + } + + Header_Files { + PSL_DeadlineTest_BaseC.h + PSL_DeadlineTest_Base_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl new file mode 100644 index 00000000000..692ecf4095e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file PSL_DeadlineTest_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef PSL_DeadlineTest_CONNECTOR_IDL_ +#define PSL_DeadlineTest_CONNECTOR_IDL_ + +#include +#include "Base/PSL_DeadlineTest_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module PSL_DeadlineTest +{ + connector PSL_DeadlineTest_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* PSL_DeadlineTest_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc new file mode 100644 index 00000000000..4311096d671 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_PSL_DeadlineTest_Base -l .. -o ../lib -u DDS PSL_DeadlineTest_Connector" + +project(DDS_PSL_DT_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=PSL_DEADLINETEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=PSL_DeadlineTest_Connector_stub_export.h \ + -Wb,skel_export_macro=PSL_DEADLINETEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=PSL_DeadlineTest_Connector_svnt_export.h \ + -Wb,svnt_export_macro=PSL_DEADLINETEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=PSL_DeadlineTest_Connector_svnt_export.h \ + -Wb,exec_export_macro=PSL_DEADLINETEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=PSL_DeadlineTest_Connector_exec_export.h \ + -I .. + + IDL_Files { + PSL_DeadlineTest_Connector.idl + } +} + +project(DDS_PSL_DT_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_PSL_DT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=PSL_DEADLINETEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=PSL_DeadlineTest_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + PSL_DeadlineTest_ConnectorE.idl + } +} + +project(DDS_PSL_DT_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_PSL_DT_Connector_lem_gen DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub DDS4CCM_lem_stub + libs += DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_PSL_DT_Connector_lem_stub + dynamicflags = PSL_DEADLINETEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_ConnectorEC.cpp + } + + Header_Files { + PSL_DeadlineTest_ConnectorEC.h + PSL_DeadlineTest_Connector_lem_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_ConnectorEC.inl + } +} + +project(DDS_PSL_DeadlineTest_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_PSL_DT_Connector_idl_gen DDS_PSL_DeadlineTest_Base_stub + libs += DDS_PSL_DeadlineTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_PSL_DeadlineTest_Connector_stub + dynamicflags = PSL_DEADLINETEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_ConnectorC.cpp + } + + Header_Files { + PSL_DeadlineTest_ConnectorC.h + PSL_DeadlineTest_Connector_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_ConnectorC.inl + } +} + +project(DDS_PSL_DeadlineTest_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub DDS_PSL_DeadlineTest_Base_NDDS_TS + sharedname = DDS_PSL_DeadlineTest_Connector_exec + libs += DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS_PSL_DeadlineTest_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = PSL_DEADLINETEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_Connector_exec.cpp + } + + Header_Files { + PSL_DeadlineTest_Connector_exec.h + PSL_DeadlineTest_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_PSL_DeadlineTest_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_exec DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_PSL_DeadlineTest_Connector_svnt + libs += DDS_PSL_DeadlineTest_Connector_stub \ + DDS_PSL_DT_Connector_lem_stub \ + DDS_PSL_DeadlineTest_Base_stub \ + DDS_PSL_DeadlineTest_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = PSL_DEADLINETEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_ConnectorS.cpp + PSL_DeadlineTest_Connector_svnt.cpp + } + + Header_Files { + PSL_DeadlineTest_ConnectorS.h + PSL_DeadlineTest_Connector_svnt.h + PSL_DeadlineTest_Connector_svnt_export.h + } + + Inline_Files { + PSL_DeadlineTest_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.cpp new file mode 100644 index 00000000000..43215b9bb82 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "PSL_DeadlineTest_Connector_exec.h" + +namespace CIAO_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl +{ + PSL_DeadlineTest_Connector_exec_i::PSL_DeadlineTest_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + PSL_DeadlineTest_Connector_exec_i::~PSL_DeadlineTest_Connector_exec_i (void) + { + } + + extern "C" PSL_DEADLINETEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + PSL_DeadlineTest_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.h new file mode 100644 index 00000000000..e72f0e6ec48 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef PSL_DEADLINETEST_CONNECTOR_EXEC_H_ +#define PSL_DEADLINETEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "PSL_DeadlineTest_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "PSL_DeadlineTest_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + + +#include "Base/PSL_DeadlineTest_BaseSupport.h" + +namespace CIAO_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl +{ + + // @from use of PSL_DeadlineTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl::PSL_DeadlineTest_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::PSL_DeadlineTest::CCM_PSL_DeadlineTest_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class PSL_DEADLINETEST_CONNECTOR_EXEC_Export PSL_DeadlineTest_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + PSL_DeadlineTest_Connector_exec_i (void); + virtual ~PSL_DeadlineTest_Connector_exec_i (void); + }; + + extern "C" PSL_DEADLINETEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl new file mode 100644 index 00000000000..ffdc92eacd3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/PSL_DeadlineTest_Connector.idl" +#include "Connector/PSL_DeadlineTest_ConnectorE.idl" + + +module PSL_DeadlineTest +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Get info_get; + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc new file mode 100644 index 00000000000..99438c8e4ce --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_PSL_DeadlineTest_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_PSL_DT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + PSL_DeadlineTest_Receiver.idl + } +} + +project(DDS_PSL_DeadlineTest_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_PSL_DeadlineTest_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + PSL_DeadlineTest_ReceiverE.idl + } +} + +project(DDS_PSL_DT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_PSL_DeadlineTest_Receiver_lem_gen DDS_PSL_DeadlineTest_Receiver_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub + libs += Receiver_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_ReceiverEC.cpp + } + + Header_Files { + PSL_DeadlineTest_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_ReceiverEC.inl + } +} + +project(DDS_PSL_DeadlineTest_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_PSL_DeadlineTest_Receiver_idl_gen DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DT_Connector_lem_gen + libs += DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_ReceiverC.cpp + } + + Header_Files { + PSL_DeadlineTest_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_ReceiverC.inl + } +} + +project(DDS_PSL_DeadlineTest_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_PSL_DT_Receiver_lem_stub DDS_PSL_DeadlineTest_Receiver_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_Receiver_exec.cpp + } + + Header_Files { + PSL_DeadlineTest_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_PSL_DeadlineTest_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_PSL_DT_Receiver_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt DDS_PSL_DeadlineTest_Receiver_exec DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt Receiver_exec DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_ReceiverS.cpp + PSL_DeadlineTest_Receiver_svnt.cpp + } + + Header_Files { + PSL_DeadlineTest_ReceiverS.h + PSL_DeadlineTest_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + PSL_DeadlineTest_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp new file mode 100644 index 00000000000..07a39f72e0e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp @@ -0,0 +1,311 @@ +// -*- C++ -*- +// +// $Id$ + +// Test for PORTSTUSLISTENER in DDS_LISTEN and DDS_Get port: on_requested_deadline_missed. +// Writer writes every sec, Reader starts reading after 2 sec and try to read every 1,1 sec, but has a minimum seperation time of 1.5 sec (QoS) +// and a deadline of 2 sec (QoS), so periodically the deadline will be missed. + +#include "PSL_DeadlineTest_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_PSL_DeadlineTest_Receiver_Impl +{ +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (void) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + this->pulse_callback_.read_all(); + } + catch (...) + { + // @todo + } + return 0; + } + //============================================================ + // Facet Executor Implementation Class: TestTopic_RawListener_exec_i + //============================================================ + + TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (void) + { + } + + TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_RawListener + + void + TestTopic_RawListener_exec_i::on_one_data ( + const TestTopic & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ") + ACE_TEXT ("received test_topic_info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.x)); + } + + void + TestTopic_RawListener_exec_i::on_many_data ( + const TestTopic_Seq & /*an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i (Atomic_Boolean &deadline_port_1, Atomic_Boolean &deadline_port_2,int port_nr) + : deadline_port_1_(deadline_port_1), + deadline_port_2_(deadline_port_2), + port_nr_(port_nr) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status) + { + if((this->port_nr_ == 1) && (!CORBA::is_nil( the_reader)) && (status.total_count!= 0)) + { + this->deadline_port_1_ = true; + } + if((this->port_nr_ == 2)&& (!CORBA::is_nil( the_reader)) && (status.total_count!= 0)) + { + this->deadline_port_2_ = true; + } + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (10), + deadline_port_1_ (false), + deadline_port_2_ (false) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try{ + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + } + catch( const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n"))); + } + } + // Component attributes. + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_RawListener_exec_i (/*this->received_*/); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i ( this->deadline_port_1_,this->deadline_port_2_, 1); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (this->deadline_port_1_,this->deadline_port_2_,2); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::PSL_DeadlineTest::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::NOT_ENABLED); + + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(2, usec), + ACE_Time_Value(1, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(!this->deadline_port_1_.value () || !this->deadline_port_2_.value ()) + { + + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT (" error 'on_requested_deadline_missed' on DDS_Listen and/or DDS_GET port in Receiver") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ") + ACE_TEXT ("'on_requested_deadline_missed' in on DDS_Listen and DDS_GET port Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_DeadlineTest_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h new file mode 100644 index 00000000000..0b7fa8d02d7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h @@ -0,0 +1,158 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "PSL_DeadlineTest_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_PSL_DeadlineTest_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + + class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_RawListener_exec_i (void); + virtual ~TestTopic_RawListener_exec_i (void); + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_many_data ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & info ); + }; + + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (void); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + }; + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (Atomic_Boolean &,Atomic_Boolean &, int port_nr); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + + private: + Atomic_Boolean &deadline_port_1_; + Atomic_Boolean &deadline_port_2_; + int port_nr_; + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void read_all(void); + + private: + ::PSL_DeadlineTest::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + read_action_Generator * ticker_; + CORBA::ULong rate_; + Atomic_Boolean deadline_port_1_; + Atomic_Boolean deadline_port_2_; +}; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_DeadlineTest_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl new file mode 100644 index 00000000000..fbd293524ff --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_PSL_DEADLINETEST_SENDER_IDL +#define DDS_PSL_DEADLINETEST_SENDER_IDL + +#include "Connector/PSL_DeadlineTest_Connector.idl" +#include "Connector/PSL_DeadlineTest_ConnectorE.idl" + + + +module PSL_DeadlineTest +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Write test_topic_write; + provides CCM_DDS::ConnectorStatusListener test_topic_connector_status; + + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc new file mode 100644 index 00000000000..5ad4015a3b9 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_PSL_DeadlineTest_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_PSL_DeadlineTest_Sender_idl_gen) : componentidldefaults { + after += DDS_PSL_DT_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + PSL_DeadlineTest_Sender.idl + } +} + +project(DDS_PSL_DeadlineTest_Sender_lem_gen) : ciaoidldefaults { + after += DDS_PSL_DeadlineTest_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + PSL_DeadlineTest_SenderE.idl + } +} + +project(DDS_PSL_DeadlineTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_PSL_DeadlineTest_Sender_lem_gen DDS_PSL_DeadlineTest_Sender_stub DDS_PSL_DeadlineTest_Base_stub + libs += DDS_PSL_DeadlineTest_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_SenderEC.cpp + } + + Header_Files { + PSL_DeadlineTest_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_SenderEC.inl + } +} + +project(DDS_PSL_DeadlineTest_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_PSL_DeadlineTest_Sender_idl_gen DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub + libs += DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_SenderC.cpp + } + + Header_Files { + PSL_DeadlineTest_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + PSL_DeadlineTest_SenderC.inl + } +} + +project(DDS_PSL_DeadlineTest_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_PSL_DeadlineTest_Sender_lem_stub DDS_PSL_DeadlineTest_Sender_stub DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_Sender_exec.cpp + } + + Header_Files { + PSL_DeadlineTest_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_PSL_DeadlineTest_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt DDS_PSL_DT_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_PSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt DDS_PSL_DT_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_DeadlineTest_SenderS.cpp + PSL_DeadlineTest_Sender_svnt.cpp + } + + Header_Files { + PSL_DeadlineTest_SenderS.h + PSL_DeadlineTest_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + PSL_DeadlineTest_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp new file mode 100644 index 00000000000..a4024121c9e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp @@ -0,0 +1,199 @@ +// -*- C++ -*- +// $Id$ + + +// Test for PORTSTUSLISTENER Subscriber on_requested_deadline_missed : +// Writer writes every sec 2 instances. + +#include "PSL_DeadlineTest_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_PSL_DeadlineTest_Sender_Impl +{ + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i () + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_topic_connector_status (void) + { + return new ConnectorStatusListener_exec_i (); + } + + // Supported operations and attributes. + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::PSL_DeadlineTest::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_test_topic_write_data (); + } + + void + Sender_exec_i::tick () + { + for (PSL_DLTest_Table::iterator i = this->_ktests_.begin (); + i != this->_ktests_.end (); + ++i) + { + try + { + if (!CORBA::is_nil (this->writer_) ) { + this->writer_->write_one(i->second,::DDS::HANDLE_NIL); + i->second->x++; + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"), + i->first.c_str ())); + } + } + } + + void + Sender_exec_i::start (void) + { + long sec = 1L; + long usec = 0L; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (sec, usec), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::add_instance_of_topic (const char * key, int x) + { + TestTopic *new_key = new TestTopic; + new_key->key = CORBA::string_dup(key); + new_key->x = x; + this->_ktests_[key] = new_key; + } + + void + Sender_exec_i::ccm_activate (void) + { + //add 2 different instances of topic + this->add_instance_of_topic ("EEN",1); + this->add_instance_of_topic ("TWEE",2); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_DeadlineTest_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h new file mode 100644 index 00000000000..524d0acb5cd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h @@ -0,0 +1,106 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "PSL_DeadlineTest_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_PSL_DeadlineTest_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (void); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void add_instance_of_topic (const char *, int x ); + void tick (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_topic_connector_status(void); + + private: + void start (void); + void stop (void); + pulse_Generator * ticker_; + ::PSL_DeadlineTest::CCM_Sender_Context_var context_; + CCM_DDS::TestTopic::Writer_var writer_; + TAO_SYNCH_MUTEX mutex_; + typedef std::map PSL_DLTest_Table; + PSL_DLTest_Table _ktests_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_DeadlineTest_Sender_Impl (void); + + + +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp new file mode 100644 index 00000000000..25a2ac83212 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp @@ -0,0 +1,449 @@ + + + PSL_DeadlineTest_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_PSL_DeadlineTest_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_PSL_DeadlineTest_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + PSL_DeadlineTest_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + PSL_DeadlineTest_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + PSL_DeadlineTest_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_PSL_DeadlineTest_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_PSL_DeadlineTest_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + PSL_DeadlineTest_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + PSL_DeadlineTest_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistener2 + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_status + true + Facet + + + + pull_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + test_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + PSL_DeadlineTest_Connector_exec + + + DDS_PSL_DeadlineTest_Connector_exec + + + PSL_DeadlineTest_Connector_svnt + + + DDS_PSL_DeadlineTest_Connector_svnt + + + PSL_DeadlineTest_Connector_stub + + + DDS_PSL_DeadlineTest_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..509d006347f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + 1 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + 2 + + + + 10 + + + + + 2 + 0 + + + + + + + BEST_EFFORT_RELIABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + 1 + + + TRANSIENT_DURABILITY_QOS + + + + 1 + 50000000 + + + + + 2 + 0 + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl new file mode 100755 index 00000000000..fba2b49b0c8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 20 seconds to allow task to complete\n"; +sleep (20); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl new file mode 100644 index 00000000000..d6f9c20a4cd --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file PSL_SampleLost_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef PSL_SAMPLELOST_BASE_IDL +#define PSL_SAMPLELOST_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc new file mode 100644 index 00000000000..1fbe25679eb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n PSL_SampleLost_Base" + +project(DDS_PSL_SampleLost_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=PSL_SAMPLELOST_BASE_STUB_Export \ + -Wb,stub_export_include=PSL_SampleLost_Base_stub_export.h + + IDL_Files { + PSL_SampleLost_Base.idl + } +} + +project(DDS_PSL_SampleLost_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_PSL_SampleLost_Base_idl_gen + ndds_ts_flags += -corba PSL_SampleLost_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + PSL_SampleLost_Base.idl + } +} + +project(DDS_PSL_SampleLost_Base_NDDS_TS) : nddslib, taolib { + after += DDS_PSL_SampleLost_Base_ndds_ts_gen DDS_PSL_SampleLost_Base_stub + libs += DDS_PSL_SampleLost_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_PSL_SampleLost_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + PSL_SampleLost_Base.cxx + PSL_SampleLost_BasePlugin.cxx + PSL_SampleLost_BaseSupport.cxx + } + + Header_Files { + PSL_SampleLost_Base.h + PSL_SampleLost_BasePlugin.h + PSL_SampleLost_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_PSL_SampleLost_Base_stub) : ccm_stub { + after += DDS_PSL_SampleLost_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_PSL_SampleLost_Base_stub + dynamicflags = PSL_SAMPLELOST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_BaseC.cpp + } + + Header_Files { + PSL_SampleLost_BaseC.h + PSL_SampleLost_Base_stub_export.h + } + + Inline_Files { + PSL_SampleLost_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl new file mode 100644 index 00000000000..1f568e2981c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file PSL_SampleLost_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef PSL_SampleLost_CONNECTOR_IDL_ +#define PSL_SampleLost_CONNECTOR_IDL_ + +#include +#include "Base/PSL_SampleLost_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module PSL_SampleLost +{ + connector PSL_SampleLost_Connector : ::CCM_DDS::TestTopic::DDS_Event + { + }; + +}; + + + +#endif /* PSL_SampleLost_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc new file mode 100644 index 00000000000..94653ed3f2b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_PSL_SampleLost_Base -l .. -o ../lib -u DDS PSL_SampleLost_Connector" + +project(DDS_PSL_SL_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=PSL_SAMPLELOST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=PSL_SampleLost_Connector_stub_export.h \ + -Wb,skel_export_macro=PSL_SAMPLELOST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=PSL_SampleLost_Connector_svnt_export.h \ + -Wb,svnt_export_macro=PSL_SAMPLELOST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=PSL_SampleLost_Connector_svnt_export.h \ + -Wb,exec_export_macro=PSL_SAMPLELOST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=PSL_SampleLost_Connector_exec_export.h \ + -I .. + + IDL_Files { + PSL_SampleLost_Connector.idl + } +} + +project(DDS_PSL_SL_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_PSL_SL_Connector_idl_gen + idlflags += -Wb,stub_export_macro=PSL_SAMPLELOST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=PSL_SampleLost_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + PSL_SampleLost_ConnectorE.idl + } +} + +project(DDS_PSL_SL_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_PSL_SL_Connector_lem_gen DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub DDS4CCM_lem_stub + libs += DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_PSL_SL_Connector_lem_stub + dynamicflags = PSL_SAMPLELOST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_ConnectorEC.cpp + } + + Header_Files { + PSL_SampleLost_ConnectorEC.h + PSL_SampleLost_Connector_lem_stub_export.h + } + + Inline_Files { + PSL_SampleLost_ConnectorEC.inl + } +} + +project(DDS_PSL_SampleLost_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_PSL_SL_Connector_idl_gen DDS_PSL_SampleLost_Base_stub + libs += DDS_PSL_SampleLost_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_PSL_SampleLost_Connector_stub + dynamicflags = PSL_SAMPLELOST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_ConnectorC.cpp + } + + Header_Files { + PSL_SampleLost_ConnectorC.h + PSL_SampleLost_Connector_stub_export.h + } + + Inline_Files { + PSL_SampleLost_ConnectorC.inl + } +} + +project(DDS_PSL_SampleLost_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub DDS_PSL_SampleLost_Base_NDDS_TS + sharedname = DDS_PSL_SampleLost_Connector_exec + libs += DDS_PSL_SampleLost_Connector_stub DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Base_stub DDS4CCM_lem_stub DDS_PSL_SampleLost_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = PSL_SAMPLELOST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_Connector_exec.cpp + } + + Header_Files { + PSL_SampleLost_Connector_exec.h + PSL_SampleLost_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_PSL_SampleLost_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_exec DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_PSL_SampleLost_Connector_svnt + libs += DDS_PSL_SampleLost_Connector_stub \ + DDS_PSL_SL_Connector_lem_stub \ + DDS_PSL_SampleLost_Base_stub \ + DDS_PSL_SampleLost_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = PSL_SAMPLELOST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_ConnectorS.cpp + PSL_SampleLost_Connector_svnt.cpp + } + + Header_Files { + PSL_SampleLost_ConnectorS.h + PSL_SampleLost_Connector_svnt.h + PSL_SampleLost_Connector_svnt_export.h + } + + Inline_Files { + PSL_SampleLost_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.cpp new file mode 100644 index 00000000000..8b0760a15f1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.cpp @@ -0,0 +1,29 @@ +// -*- C++ -*- +// $Id$ + +#include "PSL_SampleLost_Connector_exec.h" + +namespace CIAO_PSL_SampleLost_PSL_SampleLost_Connector_Impl +{ + PSL_SampleLost_Connector_exec_i::PSL_SampleLost_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + PSL_SampleLost_Connector_exec_i::~PSL_SampleLost_Connector_exec_i (void) + { + } + + extern "C" PSL_SAMPLELOST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_SampleLost_PSL_SampleLost_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + PSL_SampleLost_Connector_exec_i ()); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.h new file mode 100644 index 00000000000..c602bb4c0c5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef PSL_SAMPLELOST_CONNECTOR_EXEC_H_ +#define PSL_SAMPLELOST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "PSL_SampleLost_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "PSL_SampleLost_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + + +#include "Base/PSL_SampleLost_BaseSupport.h" + +namespace CIAO_PSL_SampleLost_PSL_SampleLost_Connector_Impl +{ + + // @from use of PSL_SampleLost as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_PSL_SampleLost_PSL_SampleLost_Connector_Impl::PSL_SampleLost_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::PSL_SampleLost::CCM_PSL_SampleLost_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class PSL_SAMPLELOST_CONNECTOR_EXEC_Export PSL_SampleLost_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + PSL_SampleLost_Connector_exec_i (void); + virtual ~PSL_SampleLost_Connector_exec_i (void); + }; + + extern "C" PSL_SAMPLELOST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_SampleLost_PSL_SampleLost_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl new file mode 100644 index 00000000000..2fe9ec7cb1a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/PSL_SampleLost_Connector.idl" +#include "Connector/PSL_SampleLost_ConnectorE.idl" + + +module PSL_SampleLost +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_Get info_get; + port CCM_DDS::TestTopic::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc new file mode 100644 index 00000000000..20a91079042 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_PSL_SampleLost_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_PSL_SL_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + PSL_SampleLost_Receiver.idl + } +} + +project(DDS_PSL_SampleLost_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_PSL_SampleLost_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + PSL_SampleLost_ReceiverE.idl + } +} + +project(DDS_PSL_SL_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_PSL_SampleLost_Receiver_lem_gen DDS_PSL_SampleLost_Receiver_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub + libs += Receiver_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_ReceiverEC.cpp + } + + Header_Files { + PSL_SampleLost_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + PSL_SampleLost_ReceiverEC.inl + } +} + +project(DDS_PSL_SampleLost_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_PSL_SampleLost_Receiver_idl_gen DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SL_Connector_lem_gen + libs += DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_ReceiverC.cpp + } + + Header_Files { + PSL_SampleLost_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + PSL_SampleLost_ReceiverC.inl + } +} + +project(DDS_PSL_SampleLost_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_PSL_SL_Receiver_lem_stub DDS_PSL_SampleLost_Receiver_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_Receiver_exec.cpp + } + + Header_Files { + PSL_SampleLost_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_PSL_SampleLost_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_PSL_SL_Receiver_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt DDS_PSL_SampleLost_Receiver_exec DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt Receiver_exec DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_ReceiverS.cpp + PSL_SampleLost_Receiver_svnt.cpp + } + + Header_Files { + PSL_SampleLost_ReceiverS.h + PSL_SampleLost_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + PSL_SampleLost_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp new file mode 100644 index 00000000000..c28bb245c77 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp @@ -0,0 +1,316 @@ +// -*- C++ -*- +// +// $Id$ + +// Test for SAMPLE_LOST status of the subscriber + +#include "PSL_SampleLost_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_PSL_SampleLost_Receiver_Impl +{ +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (void) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + this->pulse_callback_.read_all(); + } + catch (...) + { + // @todo + } + return 0; + } + //============================================================ + // Facet Executor Implementation Class: TestTopic_RawListener_exec_i + //============================================================ + + TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (void) + { + } + + TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::TestTopic_RawListener + void + TestTopic_RawListener_exec_i::on_one_data ( + const TestTopic & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ") + ACE_TEXT ("received test_topic_info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.x)); + } + + void + TestTopic_RawListener_exec_i::on_many_data ( + const TestTopic_Seq & /*an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i (Atomic_Boolean &sample_port_1, Atomic_Boolean &sample_port_2,int port_nr) + : sample_port_1_(sample_port_1), + sample_port_2_(sample_port_2), + port_nr_(port_nr) + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status) + { + if((this->port_nr_ == 1) && (!CORBA::is_nil(the_reader)) && (status.total_count > 0)) + { + this->sample_port_1_ = true; + } + if((this->port_nr_ == 2) && (!CORBA::is_nil(the_reader)) && (status.total_count > 0)) + { + this->sample_port_2_ = true; + } + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (10), + sample_port_1_ (false), + sample_port_2_ (false) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try{ + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n"))); + } + } + + // Component attributes. + // Port operations. + ::CCM_DDS::TestTopic::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n"))); + return new TestTopic_RawListener_exec_i (/*this->received_*/); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener get_info_out_status\n"))); + return new PortStatusListener_exec_i ( this->sample_port_1_,this->sample_port_2_, 1); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener get_info_get_status\n"))); + return new PortStatusListener_exec_i (this->sample_port_1_,this->sample_port_2_, 2); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::PSL_SampleLost::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::NOT_ENABLED); + + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(3, usec), + ACE_Time_Value(3, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(!this->sample_port_1_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("error 'on_sample_lost' on DDS_Listen port in Receiver\n") + )); + } + else if (!this->sample_port_2_.value ()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ") + ACE_TEXT ("error 'on_sample_lost' on DDS_Get port in Receiver\n") + )); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ") + ACE_TEXT ("'on_sample_lost' in on DDS_Listen and DDS_GET port Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_SampleLost_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h new file mode 100644 index 00000000000..ae5251e75db --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h @@ -0,0 +1,162 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "PSL_SampleLost_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_PSL_SampleLost_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + + class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + TestTopic_RawListener_exec_i (void); + virtual ~TestTopic_RawListener_exec_i (void); + + + virtual void + on_one_data ( + const TestTopic & an_instance, + const ::CCM_DDS::ReadInfo & info); + + + virtual void + on_many_data ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & info ); + }; + + + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (void); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + }; + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (Atomic_Boolean &,Atomic_Boolean &, int port_nr); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + + private: + Atomic_Boolean &sample_port_1_; + Atomic_Boolean &sample_port_2_; + int port_nr_; + + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void read_all(void); + + private: + ::PSL_SampleLost::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + read_action_Generator * ticker_; + CORBA::ULong rate_; + Atomic_Boolean sample_port_1_; + Atomic_Boolean sample_port_2_; +}; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_SampleLost_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl new file mode 100644 index 00000000000..c21fe44dd99 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_PSL_SAMPLELOST_SENDER_IDL +#define DDS_PSL_SAMPLELOST_SENDER_IDL + +#include "Connector/PSL_SampleLost_Connector.idl" +#include "Connector/PSL_SampleLost_ConnectorE.idl" + + + +module PSL_SampleLost +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Write test_topic_write; + provides CCM_DDS::ConnectorStatusListener test_topic_connector_status; + + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc new file mode 100644 index 00000000000..e2b44f043e3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_PSL_SampleLost_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_PSL_SampleLost_Sender_idl_gen) : componentidldefaults { + after += DDS_PSL_SL_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + PSL_SampleLost_Sender.idl + } +} + +project(DDS_PSL_SampleLost_Sender_lem_gen) : ciaoidldefaults { + after += DDS_PSL_SampleLost_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + PSL_SampleLost_SenderE.idl + } +} + +project(DDS_PSL_SampleLost_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_PSL_SampleLost_Sender_lem_gen DDS_PSL_SampleLost_Sender_stub DDS_PSL_SampleLost_Base_stub + libs += DDS_PSL_SampleLost_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_SenderEC.cpp + } + + Header_Files { + PSL_SampleLost_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + PSL_SampleLost_SenderEC.inl + } +} + +project(DDS_PSL_SampleLost_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_PSL_SampleLost_Sender_idl_gen DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub + libs += DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_SenderC.cpp + } + + Header_Files { + PSL_SampleLost_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + PSL_SampleLost_SenderC.inl + } +} + +project(DDS_PSL_SampleLost_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_PSL_SampleLost_Sender_lem_stub DDS_PSL_SampleLost_Sender_stub DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_Sender_exec.cpp + } + + Header_Files { + PSL_SampleLost_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_PSL_SampleLost_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt DDS_PSL_SL_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_PSL_SampleLost_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt DDS_PSL_SL_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PSL_SampleLost_SenderS.cpp + PSL_SampleLost_Sender_svnt.cpp + } + + Header_Files { + PSL_SampleLost_SenderS.h + PSL_SampleLost_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + PSL_SampleLost_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp new file mode 100644 index 00000000000..0663943286c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp @@ -0,0 +1,193 @@ +// -*- C++ -*- +// $Id$ + +#include "PSL_SampleLost_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_PSL_SampleLost_Sender_Impl +{ + + ///============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i () + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/){ + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) { + } + + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_test_topic_connector_status (void) + { + return new ConnectorStatusListener_exec_i (); + } + + // Supported operations and attributes. + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::PSL_SampleLost::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_test_topic_write_data (); + } + + void + Sender_exec_i::tick () + { + for (PSL_DLTest_Table::iterator i = this->_ktests_.begin (); + i != this->_ktests_.end (); + ++i) + { + try + { + if (!CORBA::is_nil (this->writer_) ) { + this->writer_->write_one(i->second,::DDS::HANDLE_NIL); + i->second->x++; + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"), + i->first.c_str ())); + } + } + } + + void + Sender_exec_i::start (void) + { + long sec = 1L; + long usec = 0L; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (sec, usec), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::add_instance_of_topic (const char * key, int x) + { + TestTopic *new_key = new TestTopic; + new_key->key = CORBA::string_dup(key); + new_key->x = x; + this->_ktests_[key] = new_key; + } + void + Sender_exec_i::ccm_activate (void) + { + //add 2 different instances of topic + this->add_instance_of_topic ("EEN",1); + this->add_instance_of_topic ("TWEE",2); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_SampleLost_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h new file mode 100644 index 00000000000..2e03384485a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h @@ -0,0 +1,104 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "PSL_SampleLost_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_PSL_SampleLost_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (void); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void add_instance_of_topic (const char *, int x ); + void tick (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + // Port operations. + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_test_topic_connector_status(void); + + private: + void start (void); + void stop (void); + pulse_Generator * ticker_; + + + ::PSL_SampleLost::CCM_Sender_Context_var context_; + CCM_DDS::TestTopic::Writer_var writer_; + TAO_SYNCH_MUTEX mutex_; + typedef std::map PSL_DLTest_Table; + PSL_DLTest_Table _ktests_; + }; + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PSL_SampleLost_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp new file mode 100644 index 00000000000..fc148c02efb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp @@ -0,0 +1,448 @@ + + + PSL_SampleLost_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_PSL_SampleLost_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_PSL_SampleLost_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + PSL_SampleLost_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_PSL_SampleLost_PSL_SampleLost_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_PSL_SampleLost_PSL_SampleLost_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + PSL_SampleLost_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + PSL_SampleLost_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_PSL_SampleLost_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_PSL_SampleLost_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + PSL_SampleLost_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + PSL_SampleLost_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + qos_profile + + + tk_string + + + HelloTest_Library#Hello_Profile + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_consumer_status + false + SimplexReceptacle + + + + + _portstatuslistener2 + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_status + true + Facet + + + + pull_consumer_status + false + SimplexReceptacle + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + test_topic_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + PSL_SampleLost_Connector_exec + + + DDS_PSL_SampleLost_Connector_exec + + + PSL_SampleLost_Connector_svnt + + + DDS_PSL_SampleLost_Connector_svnt + + + PSL_SampleLost_Connector_stub + + + DDS_PSL_SampleLost_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..d263487191a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + RELIABLE_RELIABILITY_QOS + + 2 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 10 + 10 + 5 + 2 + + + + 10 + + + + + 3 + 0 + + + + + + + RELIABLE_RELIABILITY_QOS + + + KEEP_LAST_HISTORY_QOS + 10 + + + 1 + 1 + 10 + 1 + 10 + + + TRANSIENT_DURABILITY_QOS + + + + 3 + 0 + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl new file mode 100644 index 00000000000..c5e5ca2e961 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Reader_Starter.idl + * @author Marcel Smit + */ + +#ifndef READER_STARTER_IDL +#define READER_STARTER_IDL + +interface ReaderStarter +{ + void read_no_data (); + void set_reader_properties (in unsigned short nr_keys, + in unsigned short nr_iterations); +}; + +#endif /* SAMPLE_INFO_IDL */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc new file mode 100755 index 00000000000..04559f02c42 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc @@ -0,0 +1,115 @@ +// $Id$ + +project(DDS_Reader_Starter_idl_gen) : componentidldefaults { + custom_only = 1 + after += + idlflags += -Wb,stub_export_macro=READER_STARTER_STUB_Export \ + -Wb,stub_export_include=Reader_Starter_stub_export.h \ + -Wb,skel_export_macro=READER_STARTER_SVNT_Export \ + -Wb,skel_export_include=Reader_Starter_svnt_export.h \ + -Wb,svnt_export_macro=READER_STARTER_SVNT_Export \ + -Wb,svnt_export_include=Reader_Starter_svnt_export.h \ + -Wb,exec_export_macro=READER_STARTER_EXEC_Export \ + -Wb,exec_export_include=Reader_Starter_exec_export.h -I.. + + IDL_Files { + Reader_Starter.idl + } +} + +project(DDS_Reader_Starter_lem_gen) : ciaoidldefaults { + after += DDS_Reader_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=READER_STARTER_LEM_STUB_Export \ + -Wb,stub_export_include=Reader_Starter_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Reader_StarterE.idl + } +} + +project(DDS_Reader_Starter_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Reader_Starter_lem_gen DDS_Reader_Starter_stub + libs += Reader_Starter_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Reader_Starter_lem_stub + dynamicflags = READER_STARTER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_StarterEC.cpp + } + + Header_Files { + Reader_StarterEC.h + Reader_Starter_lem_stub_export.h + } + + Inline_Files { + Reader_StarterEC.inl + } +} + +project(DDS_Reader_Starter_stub) : ccm_stub, dds4ccm_base { + after += DDS_Reader_Starter_idl_gen + libs += + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Reader_Starter_stub + dynamicflags = READER_STARTER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_StarterC.cpp + } + + Header_Files { + Reader_StarterC.h + Reader_Starter_stub_export.h + } + + Inline_Files { + Reader_StarterC.inl + } +} + + +project(DDS_Reader_Starter_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Reader_Starter_lem_stub DDS_Reader_Starter_stub\ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Reader_Starter_svnt + libs += Reader_Starter_stub Reader_Starter_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = READER_STARTER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_StarterS.cpp + Reader_Starter_svnt.cpp + } + + Header_Files { + Reader_StarterS.h + Reader_Starter_svnt.h + Reader_Starter_svnt_export.h + } + + Inline_Files { + Reader_StarterS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl new file mode 100644 index 00000000000..75bb02f07e6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Reader_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef READER_TEST_BASE_IDL +#define READER_TEST_BASE_IDL + +struct ReaderTest { + string key; //@key + long iteration; +}; + +typedef sequence ReaderTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc new file mode 100755 index 00000000000..971b1954516 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Reader_Test_Base" + +project(DDS_Reader_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=READER_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=Reader_Test_Base_stub_export.h + + IDL_Files { + Reader_Test_Base.idl + } +} + +project(DDS_Reader_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Reader_Test_Base_idl_gen + ndds_ts_flags += -corba Reader_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Reader_Test_Base.idl + } +} + +project(DDS_Reader_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Reader_Test_Base_ndds_ts_gen DDS_Reader_Test_Base_stub + libs += DDS_Reader_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Reader_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Reader_Test_Base.cxx + Reader_Test_BasePlugin.cxx + Reader_Test_BaseSupport.cxx + } + + Header_Files { + Reader_Test_Base.h + Reader_Test_BasePlugin.h + Reader_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Reader_Test_Base_stub) : ccm_stub { + after += DDS_Reader_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_Reader_Test_Base_stub + dynamicflags = READER_TEST_BASE_STUB_BUILD_DLL STARTER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_BaseC.cpp + } + + Header_Files { + Reader_Test_BaseC.h + Reader_Test_Base_stub_export.h + } + + Inline_Files { + Reader_Test_BaseC.inl + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl new file mode 100644 index 00000000000..1383c312791 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Reader_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef READER_TEST_CONNECTOR_IDL_ +#define READER_TEST_CONNECTOR_IDL_ + +#include +#include "Base/Reader_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::ReaderTest, ::ReaderTest_Seq, ReaderTest) + +module Reader_Test +{ + connector Reader_Test_Connector : ::CCM_DDS::ReaderTest::DDS_Event + { + }; +}; + +#endif /* Reader_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc new file mode 100755 index 00000000000..ec301ff7346 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Reader_Test_Base -l .. -o ../lib -u DDS Reader_Test_Connector" + +project(DDS_Reader_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=READER_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Reader_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=READER_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Reader_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=READER_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Reader_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=READER_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Reader_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + Reader_Test_Connector.idl + } +} + +project(DDS_Reader_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_Reader_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=READER_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Reader_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Reader_Test_ConnectorE.idl + } +} + +project(DDS_Reader_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Reader_Test_Connector_lem_gen DDS_Reader_Test_Connector_stub DDS_Reader_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Reader_Test_Connector_lem_stub + dynamicflags = READER_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_ConnectorEC.cpp + } + + Header_Files { + Reader_Test_ConnectorEC.h + Reader_Test_Connector_lem_stub_export.h + } + + Inline_Files { + Reader_Test_ConnectorEC.inl + } +} + +project(DDS_Reader_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Reader_Test_Connector_idl_gen DDS_Reader_Test_Base_stub + libs += DDS_Reader_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Reader_Test_Connector_stub + dynamicflags = READER_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_ConnectorC.cpp + } + + Header_Files { + Reader_Test_ConnectorC.h + Reader_Test_Connector_stub_export.h + } + + Inline_Files { + Reader_Test_ConnectorC.inl + } +} + +project(DDS_Reader_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_stub DDS4CCM_lem_stub DDS_Reader_Test_Base_NDDS_TS + sharedname = DDS_Reader_Test_Connector_exec + libs += DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Base_stub DDS4CCM_lem_stub DDS_Reader_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = READER_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_Connector_exec.cpp + } + + Header_Files { + Reader_Test_Connector_exec.h + Reader_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Reader_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_exec DDS_Reader_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Reader_Test_Connector_svnt + libs += DDS_Reader_Test_Connector_stub \ + DDS_Reader_Test_Connector_lem_stub \ + DDS_Reader_Test_Base_stub \ + DDS_Reader_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = READER_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_ConnectorS.cpp + Reader_Test_Connector_svnt.cpp + } + + Header_Files { + Reader_Test_ConnectorS.h + Reader_Test_Connector_svnt.h + Reader_Test_Connector_svnt_export.h + } + + Inline_Files { + Reader_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.cpp new file mode 100644 index 00000000000..9514cd0ad80 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Reader_Test_Connector_exec.h" + +namespace CIAO_Reader_Test_Reader_Test_Connector_Impl +{ + Reader_Test_Connector_exec_i::Reader_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Reader_Test_Connector_exec_i::~Reader_Test_Connector_exec_i (void) + { + } + + extern "C" READER_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Reader_Test_Reader_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Reader_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.h new file mode 100644 index 00000000000..082b47c5c01 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef READER_TEST_CONNECTOR_EXEC_H_ +#define READER_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Reader_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Reader_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Reader_Test_BaseSupport.h" + +namespace CIAO_Reader_Test_Reader_Test_Connector_Impl +{ + + // @from use of ReaderTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + ReaderTest, + ReaderTestSeq, + ReaderTestTypeSupport, + ReaderTestDataWriter, + ReaderTestDataReader > ReaderTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Reader_Test_Reader_Test_Connector_Impl::Reader_Test_Connector_Exec, + ReaderTest_Seq, + ::CCM_DDS::ReaderTest::CCM_Writer, + ::CCM_DDS::ReaderTest::CCM_Updater, + ::CCM_DDS::ReaderTest::CCM_Getter, + ::CCM_DDS::ReaderTest::CCM_Reader, + ::Reader_Test::CCM_Reader_Test_Connector_Context, + ::CCM_DDS::ReaderTest::Listener, + ::CCM_DDS::ReaderTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> ReaderTest_Connector_Traits; + + class READER_TEST_CONNECTOR_EXEC_Export Reader_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Reader_Test_Connector_exec_i (void); + virtual ~Reader_Test_Connector_exec_i (void); + }; + + extern "C" READER_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Reader_Test_Reader_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/README b/modules/CIAO/connectors/dds4ccm/tests/Reader/README new file mode 100644 index 00000000000..ec69fbb989d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/README @@ -0,0 +1,22 @@ +# $Id$ + +This test tests the reader. + +The following methods of the reader are tested: + +* read_one +* read_all +* read_one_last +* read_one_all + +First of all, the Sender writes a known number of samples to DDS. +After that the Sender informs the Receiver which test is about +to run and how many samples should be read from DDS. Before the +Receiver starts reading, he must find out that all samples resides +in DDS on the receiving side. He does that by calling read_last every +time a DATA_ON_READERS_STATUS comes in on the ConnectorStatusListener. +Once the very last sample is in DDS on the receiving side, the Receiver +starts to read the samples. Afterwards he checks wether all samples are +avaiable (thus are read correctly from DDS). + +The Receiver also test whether the correct exceptions are thrown. diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl new file mode 100644 index 00000000000..961e60a768e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl @@ -0,0 +1,28 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Reader_Test_Connector.idl" +#include "Connector/Reader_Test_ConnectorE.idl" + +#include "Base/Reader_Starter.idl" +#include "Base/Reader_StarterE.idl" + +module Reader_Test +{ + component Receiver + { + port CCM_DDS::ReaderTest::DDS_Listen info_out; + + provides ReaderStarter reader_start; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc new file mode 100755 index 00000000000..e5a9b873ec8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc @@ -0,0 +1,157 @@ +// $Id$ + +project(DDS_Reader_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_Reader_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Reader_Test_Receiver.idl + } +} + +project(DDS_Reader_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_Reader_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Reader_Test_ReceiverE.idl + } +} + +project(DDS_Reader_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Reader_Test_Receiver_lem_gen DDS_Reader_Test_Receiver_stub \ + DDS_Reader_Test_Connector_stub DDS_Reader_Test_Base_stub \ + DDS_Reader_Starter_stub + libs += Receiver_stub DDS_Reader_Test_Connector_stub \ + DDS_Reader_Test_Base_stub Reader_Starter_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_ReceiverEC.cpp + } + + Header_Files { + Reader_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Reader_Test_ReceiverEC.inl + } +} + +project(DDS_Reader_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Reader_Test_Receiver_idl_gen DDS_Reader_Test_Connector_stub \ + DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_lem_gen \ + DDS_Reader_Starter_stub DDS_Reader_Starter_lem_stub + libs += DDS_Reader_Test_Connector_stub DDS_Reader_Test_Base_stub \ + Reader_Starter_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_ReceiverC.cpp + } + + Header_Files { + Reader_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Reader_Test_ReceiverC.inl + } +} + +project(DDS_Reader_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_Reader_Test_Receiver_lem_stub DDS_Reader_Test_Receiver_stub \ + DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_stub \ + DDS_Reader_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS_Reader_Starter_lem_stub DDS_Reader_Starter_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Reader_Test_Base_stub \ + DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_lem_stub \ + DDS4CCM_lem_stub Reader_Starter_lem_stub Reader_Starter_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_Receiver_exec.cpp + } + + Header_Files { + Reader_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Reader_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Reader_Test_Receiver_lem_stub DDS_Reader_Test_Base_stub \ + DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_svnt \ + DDS_Reader_Test_Receiver_exec DDS_Reader_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_Reader_Starter_stub \ + DDS_Reader_Starter_svnt DDS_Reader_Starter_lem_stub + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Reader_Test_Base_stub \ + DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_svnt \ + Receiver_exec DDS_Reader_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel Reader_Starter_stub Reader_Starter_svnt \ + Reader_Starter_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_ReceiverS.cpp + Reader_Test_Receiver_svnt.cpp + } + + Header_Files { + Reader_Test_ReceiverS.h + Reader_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Reader_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..785dd8f902b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp @@ -0,0 +1,638 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Reader_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_Reader_Test_Receiver_Impl +{ + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Receiver_exec_i &callback) + : callback_ (callback), + has_run_ (false) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::DATA_ON_READERS_STATUS && + !this->has_run_ && + this->callback_.check_last ()) + { + this->has_run_ = true; + this->callback_.run (); + } + } + + //============================================================ + // Starter_exec_i + //============================================================ + Starter_exec_i::Starter_exec_i (Receiver_exec_i & callback) + : callback_ (callback) + { + } + + Starter_exec_i::~Starter_exec_i (void) + { + } + + void + Starter_exec_i::set_reader_properties (CORBA::UShort nr_keys, + CORBA::UShort nr_iterations) + { + this->callback_.keys (nr_keys); + this->callback_.iterations (nr_iterations); + } + + void + Starter_exec_i::read_no_data () + { + this->callback_.read_no_data (); + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : iterations_ (10), + keys_ (5), + has_run_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + + bool + Receiver_exec_i::check_last () + { + try + { + ReaderTest readertest_info; + ::CCM_DDS::ReadInfo readinfo; + char key[100]; + ACE_OS::sprintf (key, "KEY_%d", this->keys_); + readertest_info.key = CORBA::string_dup (key); + this->reader_->read_one_last ( + readertest_info, + readinfo, + ::DDS::HANDLE_NIL); + return readertest_info.iteration == this->iterations_; + } + catch (...) + { + // no need to catch. An error is given + // when this example didn't run at all. + } + return false; + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_one_last (bool test_handles) + { + try + { + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + ReaderTest readertest_info; + ::CCM_DDS::ReadInfo readinfo; + char key[100]; + ACE_OS::sprintf (key, "KEY_%d", i); + readertest_info.key = CORBA::string_dup (key); + DDS::InstanceHandle_t hnd = test_handles + ? this->handles_[key] + : ::DDS::HANDLE_NIL; + this->reader_->read_one_last ( + readertest_info, + readinfo, + hnd); + if (readertest_info.iteration == this->iterations_) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE LAST: ") + ACE_TEXT ("last iteration received for <%C>: iteration <%u>\n"), + readertest_info.key.in (), + readertest_info.iteration)); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE LAST: ") + ACE_TEXT ("Didn't receive last iteration for <%C>: ") + ACE_TEXT ("expected <%u> - received <%u>\n"), + readertest_info.key.in (), + this->iterations_, + readertest_info.iteration)); + } + } + } + catch (const CCM_DDS::NonExistent& ex) + { + for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i) + { + ACE_DEBUG ((LM_ERROR, ACE_TEXT ("READ ONE LAST: ") + ACE_TEXT ("caught expected exception: index <%u>\n"), + ex.indexes[i])); + } + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE LAST: ") + ACE_TEXT ("caught InternalError exception: retval <%u>\n"), + ex.error_code)); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: READ ONE LAST:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Receiver_exec_i::read_one_last : Exception caught\n"))); + } + } + + void + Receiver_exec_i::read_one_all (bool test_handles) + { + try + { + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + ReaderTest readertest_info; + ReaderTest_Seq *readertest_info_seq; + ::CCM_DDS::ReadInfoSeq *readinfo_seq; + char key[100]; + ACE_OS::sprintf (key, "KEY_%d", i); + readertest_info.key = CORBA::string_dup (key); + DDS::InstanceHandle_t hnd = test_handles + ? this->handles_[key] + : ::DDS::HANDLE_NIL; + this->reader_->read_one_all ( + readertest_info, + readertest_info_seq, + readinfo_seq, + hnd); + + if (readertest_info_seq->length () != this->iterations_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE ALL: ") + ACE_TEXT ("Didn't receive the expected number of ") + ACE_TEXT ("samples for <%C>: expected <%u> - received <%u>\n"), + key, + this->iterations_, + readertest_info_seq->length ())); + } + else + { + this->handles_[key] = (*readinfo_seq)[0].instance_handle; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE ALL: ") + ACE_TEXT ("All iterations received for <%C>: number of iterations <%u>\n"), + key, + readertest_info_seq->length ())); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE ALL: ") + ACE_TEXT ("Handle created for <%C>: length <%u> - isValid <%d>\n"), + key, + (*readinfo_seq)[0].instance_handle.length, + (*readinfo_seq)[0].instance_handle.isValid)); + } + } + } + catch (const CCM_DDS::NonExistent& ex) + { + for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE ALL: ") + ACE_TEXT ("caught expected exception: index <%u>\n"), + ex.indexes[i])); + } + } + catch (const CCM_DDS::InternalError& ex) + { + if (ex.error_code == 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE ALL: ") + ACE_TEXT ("caught InternalError exception: handles differ\n"))); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE ALL: ") + ACE_TEXT ("caught InternalError exception: retval <%u>\n"), + ex.error_code)); + } + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: READ ONE ALL: "); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Receiver_exec_i::read_one_all : Exception caught\n"))); + } + } + + void + Receiver_exec_i::read_last (void) + { + try + { + ReaderTest_Seq *readertest_info_seq; + ::CCM_DDS::ReadInfoSeq *readinfo_seq; + this->reader_->read_last ( + readertest_info_seq, + readinfo_seq); + + if (readertest_info_seq->length () != this->keys_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ LAST: ") + ACE_TEXT ("Didn't receive the expected number of ") + ACE_TEXT ("instances : expected <%u> - received <%u>\n"), + this->keys_, + readertest_info_seq->length ())); + } + for (CORBA::ULong it = 0; it < readertest_info_seq->length (); ++it) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ LAST : ") + ACE_TEXT ("last iteration received for <%C>: iteration <%u>\n"), + (*readertest_info_seq)[it].key.in (), + (*readertest_info_seq)[it].iteration)); + } + } + catch (const CCM_DDS::NonExistent& ex) + { + for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ LAST: ") + ACE_TEXT ("caught expected exception: index <%u>\n"), + ex.indexes[i])); + } + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ LAST: ") + ACE_TEXT ("caught InternalError exception: retval <%u>\n"), + ex.error_code)); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: READ LAST: "); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Receiver_exec_i::read_last : Exception caught\n"))); + } + } + + void + Receiver_exec_i::read_all (void) + { + try + { + ReaderTest_Seq *readertest_info_seq; + ::CCM_DDS::ReadInfoSeq *readinfo_seq; + this->reader_->read_all ( + readertest_info_seq, + readinfo_seq); + + CORBA::ULong nr_samples = this->keys_ * this->iterations_; + if (readertest_info_seq->length () != nr_samples) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ") + ACE_TEXT ("Didn't receive the expected number of ") + ACE_TEXT ("samples : expected <%u> - received <%u>\n"), + nr_samples, + readertest_info_seq->length ())); + } + if (readertest_info_seq->length () > 0) + { + CORBA::UShort nr_keys_changed = 1; + CORBA::String_var last_key ((*readertest_info_seq)[0].key.in ()); + CORBA::UShort iterations = 0; + for (CORBA::ULong it = 0; it < readertest_info_seq->length (); ++it) + { + if (ACE_OS::strcmp (last_key, (*readertest_info_seq)[it].key.in ()) != 0) + { + ACE_OS::strcpy (last_key, (*readertest_info_seq)[it].key.in ()); + ++nr_keys_changed; + } + // check readinfo struct. + if (!(*readinfo_seq)[it].instance_handle.isValid) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE LAST: ") + ACE_TEXT ("received instance handle should be valid ") + ACE_TEXT ("for keyed data: ") + ACE_TEXT ("key <%C> - iteration <%u>\n"), + (*readertest_info_seq)[it].key.in (), + (*readertest_info_seq)[it].iteration)); + } + if ((*readinfo_seq)[it].source_timestamp.sec == 0 && + (*readinfo_seq)[it].source_timestamp.nanosec == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: READ ONE LAST: " + "source timestamp seems to be invalid (nil) " + "key <%C> - iteration <%d>\n", + (*readertest_info_seq)[it].key.in (), + (*readertest_info_seq)[it].iteration)); + } + ++iterations; + } + if (nr_keys_changed != this->keys_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ") + ACE_TEXT ("Didn't receive the expected number of ") + ACE_TEXT ("instances : expected <%u> - received <%u>\n"), + this->keys_, + nr_keys_changed)); + } + if (iterations != (this->keys_ * this->iterations_)) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ") + ACE_TEXT ("Didn't receive the expected number of ") + ACE_TEXT ("samples : expected <%u> - received <%u>\n"), + nr_samples, + iterations)); + } + } + } + catch (const CCM_DDS::NonExistent& ex) + { + for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ALL: ") + ACE_TEXT ("caught expected exception: index <%u>\n"), + ex.indexes[i])); + } + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ") + ACE_TEXT ("caught InternalError exception: retval <%u>\n"), + ex.error_code)); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: READ ALL: "); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Receiver_exec_i::read_all : Exception caught\n"))); + } + } + + void + Receiver_exec_i::test_exception () + { + // test exception handling + bool except_caught = false; + try + { + ReaderTest readertest_info; + readertest_info.key = CORBA::string_dup ("KEY_0"); + ::CCM_DDS::ReadInfo readinfo; + this->reader_->read_one_last (readertest_info, readinfo, ::DDS::HANDLE_NIL); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception: ") + ACE_TEXT ("Wrong exception caught while reading non existent instance\n"))); + } + catch (const CCM_DDS::NonExistent& ) + { + except_caught = true; + } + if (!except_caught) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception: ") + ACE_TEXT ("no excep caught while reading non existent instance\n"))); + } + } + + void + Receiver_exec_i::test_exception_with_handles () + { + // test exception handling + bool except_caught = false; + try + { + ReaderTest readertest_info; + readertest_info.key = CORBA::string_dup ("KEY_1"); + ::CCM_DDS::ReadInfo readinfo; + DDS::InstanceHandle_t hnd = this->handles_["KEY_2"]; + this->reader_->read_one_last ( + readertest_info, + readinfo, + hnd); + } + catch (const CCM_DDS::InternalError& ) + { + except_caught = true; + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver_exec_i::test_exception_with_handles: ") + ACE_TEXT ("Expected exception caught while reading non existent instance\n"))); + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception_with_handles: ") + ACE_TEXT ("Wrong exception caught while reading non existent instance\n"))); + } + if (!except_caught) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception_with_handles: ") + ACE_TEXT ("no excep caught while reading non existent instance\n"))); + } + } + + void + Receiver_exec_i::read_no_data () + { + try + { + ReaderTest_Seq *readertest_info_seq; + ::CCM_DDS::ReadInfoSeq *readinfo_seq; + this->reader_->read_all ( + readertest_info_seq, + readinfo_seq); + + if (readertest_info_seq->length () > 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ NO DATA: ") + ACE_TEXT ("Didn't receive the expected number of ") + ACE_TEXT ("samples : expected <%u> - received <%u>\n"), + 0, + readertest_info_seq->length ())); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ NO DATA: ") + ACE_TEXT ("No data available.\n"))); + } + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("ERROR: READ NO DATA: ") + ACE_TEXT ("Caught NonExistent exception"))); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ NO DATA: ") + ACE_TEXT ("caught InternalError exception: retval <%u>\n"), + ex.error_code)); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("ERROR: READ NO DATA: "); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Receiver_exec_i::read_no_data : Exception caught\n"))); + } + } + + void + Receiver_exec_i::run () + { + this->has_run_ = true; + read_all (); + read_last (); + read_one_all (); + read_one_last (); + test_exception (); + //now test with collected handles + read_one_all (true); + read_one_last (true); + test_exception_with_handles (); + } + + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Receiver_exec_i::keys (void) + { + return this->keys_; + } + + void + Receiver_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + // Port operations. + ::CCM_DDS::ReaderTest::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return 0; + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + return 0; + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (*this); + } + + ::CCM_ReaderStarter_ptr + Receiver_exec_i::get_reader_start () + { + return new Starter_exec_i (*this); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Reader_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + if (!this->has_run_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("Test did not run: Didn't receive ") + ACE_TEXT ("the expected number of DATA_ON_READERS") + ACE_TEXT ("events.\n"))); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Reader_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h new file mode 100644 index 00000000000..552639b0cd8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h @@ -0,0 +1,151 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Reader_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_Reader_Test_Receiver_Impl +{ + class Receiver_exec_i; + + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Receiver_exec_i &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ); + virtual + void on_unexpected_status( ::DDS::Entity_ptr , + ::DDS::StatusKind ); + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &callback_; + bool has_run_; + }; + + //============================================================ + // Starter_exec_i + //============================================================ + class Starter_exec_i + : public virtual ::CCM_ReaderStarter, + public virtual ::CORBA::LocalObject + { + public: + Starter_exec_i (Receiver_exec_i & callback); + virtual ~Starter_exec_i (void); + + virtual void set_reader_properties (CORBA::UShort nr_keys, + CORBA::UShort nr_iterations); + + virtual void read_no_data (); + + private: + Receiver_exec_i &callback_; + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported operations and attributes. + // Component attributes. + + // Port operations. + virtual ::CCM_DDS::ReaderTest::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_ReaderStarter_ptr + get_reader_start (); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + bool check_last (); + void run (void); + void read_no_data (); + + ::CORBA::UShort iterations (void); + + void iterations (::CORBA::UShort iterations); + + ::CORBA::UShort keys (void); + + void keys (::CORBA::UShort keys); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Reader_Test::CCM_Receiver_Context_var context_; + ::CCM_DDS::ReaderTest::Reader_var reader_; + CORBA::UShort iterations_; + CORBA::UShort keys_; + bool has_run_; + + void read_all (); + void read_last (); + void read_one_all (bool test_handles = false); + void read_one_last (bool test_handles = false); + void test_exception (); + void test_exception_with_handles (); + + typedef std::map Handle_Table; + Handle_Table handles_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Reader_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl new file mode 100644 index 00000000000..abf07f0dea3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl @@ -0,0 +1,33 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_READER_TEST_SENDER_IDL +#define DDS_READER_TEST_SENDER_IDL + +#include "Connector/Reader_Test_Connector.idl" +#include "Connector/Reader_Test_ConnectorE.idl" + +#include "Base/Reader_Starter.idl" +#include "Base/Reader_StarterE.idl" + +module Reader_Test +{ + component Sender + { + port CCM_DDS::ReaderTest::DDS_Write info_write; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + + uses ReaderStarter start_reader; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc new file mode 100755 index 00000000000..8454dd75e52 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc @@ -0,0 +1,152 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Reader_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Reader_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_Reader_Test_Connector_idl_gen DDS_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Reader_Test_Sender.idl + } +} + +project(DDS_Reader_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_Reader_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Reader_Test_SenderE.idl + } +} + +project(DDS_Reader_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Reader_Test_Sender_lem_gen DDS_Reader_Test_Sender_stub \ + DDS_Reader_Test_Base_stub DDS_Reader_Starter_stub + libs += DDS_Reader_Test_Base_stub Sender_stub Reader_Starter_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_SenderEC.cpp + } + + Header_Files { + Reader_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Reader_Test_SenderEC.inl + } +} + +project(DDS_Reader_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Reader_Test_Sender_idl_gen DDS_Reader_Test_Base_stub \ + DDS_Reader_Test_Connector_stub DDS_Reader_Starter_stub \ + DDS_Reader_Starter_lem_stub + libs += DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_stub \ + Reader_Starter_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_SenderC.cpp + } + + Header_Files { + Reader_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Reader_Test_SenderC.inl + } +} + +project(DDS_Reader_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Reader_Test_Sender_lem_stub DDS_Reader_Test_Sender_stub \ + DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_stub \ + DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Reader_Test_Base_stub \ + DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_stub \ + Reader_Starter_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_Sender_exec.cpp + } + + Header_Files { + Reader_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Reader_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Reader_Test_Base_stub DDS_Reader_Test_Sender_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_Reader_Test_Connector_stub \ + DDS_Reader_Test_Connector_svnt DDS_Reader_Test_Connector_lem_stub \ + DDS_Reader_Starter_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub DDS_Reader_Test_Base_stub DDS4CCM_lem_stub \ + DDS4CCM_skel DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_svnt \ + DDS_Reader_Test_Connector_lem_stub Reader_Starter_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Reader_Test_SenderS.cpp + Reader_Test_Sender_svnt.cpp + } + + Header_Files { + Reader_Test_SenderS.h + Reader_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Reader_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp new file mode 100644 index 00000000000..fbc9386f53c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp @@ -0,0 +1,200 @@ +// -*- C++ -*- +// $Id$ + +#include "Reader_Test_Sender_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_Reader_Test_Sender_Impl +{ + //============================================================ + // ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Sender_exec_i &callback) + : callback_ (callback) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind status_kind) + { + if (status_kind == ::DDS::PUBLICATION_MATCHED_STATUS) + this->callback_.start (); + } + + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : iterations_ (10), + keys_ (5), + done_ (false), + ccm_activated_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::start (void) + { + //start can be called more than once... + if (!this->done_ && this->ccm_activated_) + { + this->done_ = true; + if (!CORBA::is_nil (this->starter_)) + { + this->starter_->set_reader_properties (this->keys_, this->iterations_); + this->starter_->read_no_data (); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to start the reader\n"))); + } + for (CORBA::UShort iter_key = 1; iter_key < this->keys_ + 1; ++iter_key) + { + char key[7]; + ReaderTest *new_key = new ReaderTest; + ACE_OS::sprintf (key, "KEY_%d", iter_key); + new_key->key = CORBA::string_dup(key); + for (CORBA::UShort iter = 1; iter < this->iterations_ + 1; ++iter) + { + new_key->iteration = iter; + this->writer_->write_one (*new_key, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"), + key, iter)); + } + } + } + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_info_out_connector_status (void) + { + return new ConnectorStatusListener_exec_i (*this); + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Reader_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + try + { + this->writer_ = this->context_->get_connection_info_write_data (); + this->starter_ = this->context_->get_connection_start_reader (); + this->ccm_activated_ = true; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Unknown exception caught\n"))); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Reader_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h new file mode 100644 index 00000000000..8b1fc86efbe --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h @@ -0,0 +1,98 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Reader_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +namespace CIAO_Reader_Test_Sender_Impl +{ + class Sender_exec_i; + + class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Sender_exec_i &); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr , + const DDS::InconsistentTopicStatus & ); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr , + const DDS::RequestedIncompatibleQosStatus & ); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr , + const DDS::SampleRejectedStatus & ); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr , + const DDS::OfferedDeadlineMissedStatus & ); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr , + const DDS::OfferedIncompatibleQosStatus & ); + virtual + void on_unexpected_status( ::DDS::Entity_ptr , + ::DDS::StatusKind ); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void start (void); + + private: + ::Reader_Test::CCM_Sender_Context_var context_; + CCM_DDS::ReaderTest::Writer_var writer_; + ReaderStarter_var starter_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + bool done_; + bool ccm_activated_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Reader_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp new file mode 100644 index 00000000000..ae1366ef41c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp @@ -0,0 +1,408 @@ + + + Reader_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Reader_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Reader_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Reader_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Reader_Test_Reader_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Reader_Test_Reader_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Reader_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Reader_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Reader_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Reader_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + Reader_Test_ConnectorComponent + SenderNode + + + + + qos_profile + + + tk_string + + + Reader_Library#Reader_Profile + + + + + topic_name + + + tk_string + + + Reader_Test + + + + + + Reader_Test_ConnectorComponent2 + ReceiverNode + + + + + qos_profile + + + tk_string + + + Reader_Library#Reader_Profile + + + + + topic_name + + + tk_string + + + Reader_Test + + + + + + SenderComponent + SenderNode + + + + + keys + + + tk_ulong + + + 5 + + + + + iterations + + + tk_ulong + + + 10 + + + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_consumer_data + true + Facet + + + + + + info_out_connector_status_rec + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + info_out_connector_status_sender + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + reader_starter + + start_reader + false + SimplexReceptacle + + + + reader_start + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Reader_Test_Connector_exec + + + DDS_Reader_Test_Connector_exec + + + Reader_Test_Connector_svnt + + + DDS_Reader_Test_Connector_svnt + + + Reader_Test_Connector_stub + + + DDS_Reader_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..8406e3003a3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + RELIABLE_RELIABILITY_QOS + + 10 + 0 + + + + TRANSIENT_DURABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + + + + 10 + + + + + + + RELIABLE_RELIABILITY_QOS + + + KEEP_ALL_HISTORY_QOS + + + TRANSIENT_LOCAL_DURABILITY_QOS + + + + + \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl new file mode 100755 index 00000000000..7c358cba8bf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 30 seconds to allow task to complete\n"; +sleep (30); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl new file mode 100644 index 00000000000..690d2a1e23e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file SL_Disabled_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef SL_DISABLED_BASE_IDL +#define SL_DISABLED_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc new file mode 100644 index 00000000000..92c77b7602f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n SL_Disabled_Base" + +project(DDS_SL_Disabled_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=SL_DISABLED_BASE_STUB_Export \ + -Wb,stub_export_include=SL_Disabled_Base_stub_export.h + + IDL_Files { + SL_Disabled_Base.idl + } +} + +project(DDS_SL_Disabled_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_SL_Disabled_Base_idl_gen + ndds_ts_flags += -corba SL_Disabled_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + SL_Disabled_Base.idl + } +} + +project(DDS_SL_Disabled_Base_NDDS_TS) : nddslib, taolib { + after += DDS_SL_Disabled_Base_ndds_ts_gen DDS_SL_Disabled_Base_stub + libs += DDS_SL_Disabled_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_SL_Disabled_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + SL_Disabled_Base.cxx + SL_Disabled_BasePlugin.cxx + SL_Disabled_BaseSupport.cxx + } + + Header_Files { + SL_Disabled_Base.h + SL_Disabled_BasePlugin.h + SL_Disabled_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_SL_Disabled_Base_stub) : ccm_stub { + after += DDS_SL_Disabled_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_SL_Disabled_Base_stub + dynamicflags = SL_DISABLED_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_BaseC.cpp + } + + Header_Files { + SL_Disabled_BaseC.h + SL_Disabled_Base_stub_export.h + } + + Inline_Files { + SL_Disabled_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl new file mode 100644 index 00000000000..9dc3438397a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file SL_Disabled_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef SL_DISABLED_CONNECTOR_IDL_ +#define SL_DISABLED_CONNECTOR_IDL_ + +#include +#include "Base/SL_Disabled_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module SL_Disabled +{ + connector SL_Disabled_Connector : ::CCM_DDS::TestTopic::DDS_State + { + }; + +}; + + + +#endif /* SL_Disabled_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc new file mode 100644 index 00000000000..907c7ff5172 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SL_Disabled_Base -l .. -o ../lib -u DDS SL_Disabled_Connector" + +project(DDS_SL_OC_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SL_DISABLED_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=SL_Disabled_Connector_stub_export.h \ + -Wb,skel_export_macro=SL_DISABLED_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=SL_Disabled_Connector_svnt_export.h \ + -Wb,svnt_export_macro=SL_DISABLED_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=SL_Disabled_Connector_svnt_export.h \ + -Wb,exec_export_macro=SL_DISABLED_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=SL_Disabled_Connector_exec_export.h \ + -I .. + + IDL_Files { + SL_Disabled_Connector.idl + } +} + +project(DDS_SL_OC_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_SL_OC_Connector_idl_gen + idlflags += -Wb,stub_export_macro=SL_DISABLED_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=SL_Disabled_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + SL_Disabled_ConnectorE.idl + } +} + +project(DDS_SL_OC_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_OC_Connector_lem_gen DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub DDS4CCM_lem_stub + libs += DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SL_OC_Connector_lem_stub + dynamicflags = SL_DISABLED_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_ConnectorEC.cpp + } + + Header_Files { + SL_Disabled_ConnectorEC.h + SL_Disabled_Connector_lem_stub_export.h + } + + Inline_Files { + SL_Disabled_ConnectorEC.inl + } +} + +project(DDS_SL_Disabled_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_OC_Connector_idl_gen DDS_SL_Disabled_Base_stub + libs += DDS_SL_Disabled_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SL_Disabled_Connector_stub + dynamicflags = SL_DISABLED_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_ConnectorC.cpp + } + + Header_Files { + SL_Disabled_ConnectorC.h + SL_Disabled_Connector_stub_export.h + } + + Inline_Files { + SL_Disabled_ConnectorC.inl + } +} + +project(DDS_SL_Disabled_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub DDS_SL_Disabled_Base_NDDS_TS + sharedname = DDS_SL_Disabled_Connector_exec + libs += DDS_SL_Disabled_Connector_stub DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Base_stub DDS4CCM_lem_stub DDS_SL_Disabled_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SL_DISABLED_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_Connector_exec.cpp + } + + Header_Files { + SL_Disabled_Connector_exec.h + SL_Disabled_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_Disabled_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_exec DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_SL_Disabled_Connector_svnt + libs += DDS_SL_Disabled_Connector_stub \ + DDS_SL_OC_Connector_lem_stub \ + DDS_SL_Disabled_Base_stub \ + DDS_SL_Disabled_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SL_DISABLED_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_ConnectorS.cpp + SL_Disabled_Connector_svnt.cpp + } + + Header_Files { + SL_Disabled_ConnectorS.h + SL_Disabled_Connector_svnt.h + SL_Disabled_Connector_svnt_export.h + } + + Inline_Files { + SL_Disabled_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.cpp new file mode 100644 index 00000000000..af02d5b3b0f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "SL_Disabled_Connector_exec.h" + +namespace CIAO_SL_Disabled_SL_Disabled_Connector_Impl +{ + SL_Disabled_Connector_exec_i::SL_Disabled_Connector_exec_i (void) + : DDS_State_Connector_T () + { + } + + SL_Disabled_Connector_exec_i::~SL_Disabled_Connector_exec_i (void) + { + } + + extern "C" SL_DISABLED_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_Disabled_SL_Disabled_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + SL_Disabled_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.h new file mode 100644 index 00000000000..82af39b1bb6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef SL_DISABLED_CONNECTOR_EXEC_H_ +#define SL_DISABLED_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "SL_Disabled_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "SL_Disabled_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_State_Connector_T.h" + + +#include "Base/SL_Disabled_BaseSupport.h" + +namespace CIAO_SL_Disabled_SL_Disabled_Connector_Impl +{ + + // @from use of SL_Disabled as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_SL_Disabled_SL_Disabled_Connector_Impl::SL_Disabled_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::SL_Disabled::CCM_SL_Disabled_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class SL_DISABLED_CONNECTOR_EXEC_Export SL_Disabled_Connector_exec_i : + public DDS_State_Connector_T + { + public: + SL_Disabled_Connector_exec_i (void); + virtual ~SL_Disabled_Connector_exec_i (void); + }; + + extern "C" SL_DISABLED_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_Disabled_SL_Disabled_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl new file mode 100644 index 00000000000..3f6c551baeb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/SL_Disabled_Connector.idl" +#include "Connector/SL_Disabled_ConnectorE.idl" + + +module SL_Disabled +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_StateListen info_out; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc new file mode 100644 index 00000000000..1b60ea7f442 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_SL_Disabled_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_SL_OC_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + SL_Disabled_Receiver.idl + } +} + +project(DDS_SL_Disabled_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_SL_Disabled_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + SL_Disabled_ReceiverE.idl + } +} + +project(DDS_SL_OC_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_Disabled_Receiver_lem_gen DDS_SL_Disabled_Receiver_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub + libs += Receiver_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_ReceiverEC.cpp + } + + Header_Files { + SL_Disabled_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + SL_Disabled_ReceiverEC.inl + } +} + +project(DDS_SL_Disabled_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_Disabled_Receiver_idl_gen DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub DDS_SL_OC_Connector_lem_gen + libs += DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_ReceiverC.cpp + } + + Header_Files { + SL_Disabled_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + SL_Disabled_ReceiverC.inl + } +} + +project(DDS_SL_Disabled_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_SL_OC_Receiver_lem_stub DDS_SL_Disabled_Receiver_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_Receiver_exec.cpp + } + + Header_Files { + SL_Disabled_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_Disabled_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SL_OC_Receiver_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt DDS_SL_Disabled_Receiver_exec DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt Receiver_exec DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_ReceiverS.cpp + SL_Disabled_Receiver_svnt.cpp + } + + Header_Files { + SL_Disabled_ReceiverS.h + SL_Disabled_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + SL_Disabled_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp new file mode 100644 index 00000000000..c01636a8cd9 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp @@ -0,0 +1,259 @@ +// -*- C++ -*- +// +// $Id$ + +// Test for statelistener: NOT_ENABLED + +#include "SL_Disabled_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_SL_Disabled_Receiver_Impl +{ +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + this->pulse_callback_.read_all(); + } + catch (...) + { + // @todo + } + return 0; + } + //============================================================ + // Facet Executor Implementation Class: StateListener_exec_i + //============================================================ + StateListener_exec_i::StateListener_exec_i (Atomic_Boolean &no_operation) + :no_operation_(no_operation) + { + } + + StateListener_exec_i::~StateListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::StateListener + void + StateListener_exec_i::on_creation (const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + this->no_operation_ = false; + } + + void + StateListener_exec_i::on_one_update (const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + this->no_operation_ = false; + } + + void + StateListener_exec_i::on_many_updates (const ::TestTopic_Seq & /*data*/, + const ::CCM_DDS::ReadInfoSeq & /*infos*/) + { + this->no_operation_ = false; + } + + void + StateListener_exec_i::on_deletion (const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + this->no_operation_ = false; + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i () + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (10), + no_operation_(true), + updater_data_(false) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try + { + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + this->updater_data_ = true; + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + + } + catch (const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n"))); + } + } + // Component attributes. + // Port operations. + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::TestTopic::CCM_StateListener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return new StateListener_exec_i(this->no_operation_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::SL_Disabled::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::StateListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + + lc->mode (::CCM_DDS::NOT_ENABLED); + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(3, usec), + ACE_Time_Value(3, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + if(!this->no_operation_.value ()|| !this->updater_data_.value()) + { + + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive an unexpected ") + ACE_TEXT (" operation from StateListener or Updater doesn't work in Receiver") + )); + } + + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Haven't received tan unexpected ") + ACE_TEXT (" oparation from StateListener in Receiver") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_Disabled_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h new file mode 100644 index 00000000000..010934d80ba --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h @@ -0,0 +1,125 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "SL_Disabled_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_SL_Disabled_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + class RECEIVER_EXEC_Export StateListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_StateListener, + public virtual ::CORBA::LocalObject + { + public: + StateListener_exec_i (Atomic_Boolean &); + virtual ~StateListener_exec_i (void); + + virtual void + on_creation ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_one_update ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_updates ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & infos); + virtual void + on_deletion ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + private: + Atomic_Boolean &no_operation_; + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void read_all(void); + + private: + ::SL_Disabled::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + read_action_Generator * ticker_; + CORBA::ULong rate_; + Atomic_Boolean no_operation_; + Atomic_Boolean updater_data_; +}; + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_Disabled_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl new file mode 100644 index 00000000000..cf53b0f2dd0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_SL_DISABLED_SENDER_IDL +#define DDS_SL_DISABLED_SENDER_IDL + +#include "Connector/SL_Disabled_Connector.idl" +#include "Connector/SL_Disabled_ConnectorE.idl" + + + +module SL_Disabled +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Update test_topic_update; + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc new file mode 100644 index 00000000000..09b25cdae52 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SL_Disabled_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_SL_Disabled_Sender_idl_gen) : componentidldefaults { + after += DDS_SL_OC_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + SL_Disabled_Sender.idl + } +} + +project(DDS_SL_Disabled_Sender_lem_gen) : ciaoidldefaults { + after += DDS_SL_Disabled_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + SL_Disabled_SenderE.idl + } +} + +project(DDS_SL_Disabled_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_Disabled_Sender_lem_gen DDS_SL_Disabled_Sender_stub DDS_SL_Disabled_Base_stub + libs += DDS_SL_Disabled_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_SenderEC.cpp + } + + Header_Files { + SL_Disabled_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + SL_Disabled_SenderEC.inl + } +} + +project(DDS_SL_Disabled_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_Disabled_Sender_idl_gen DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub + libs += DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_SenderC.cpp + } + + Header_Files { + SL_Disabled_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SL_Disabled_SenderC.inl + } +} + +project(DDS_SL_Disabled_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_SL_Disabled_Sender_lem_stub DDS_SL_Disabled_Sender_stub DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_Sender_exec.cpp + } + + Header_Files { + SL_Disabled_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_Disabled_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt DDS_SL_OC_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_SL_Disabled_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt DDS_SL_OC_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_Disabled_SenderS.cpp + SL_Disabled_Sender_svnt.cpp + } + + Header_Files { + SL_Disabled_SenderS.h + SL_Disabled_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + SL_Disabled_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp new file mode 100644 index 00000000000..a0e9bc867a5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp @@ -0,0 +1,358 @@ +// -*- C++ -*- +// $Id$ + +#include "SL_Disabled_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_SL_Disabled_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : test_nr_(UPDATE_CREATE), + test_ok_(true) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + CORBA::Boolean + Sender_exec_i::create_one(void) + { + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + if (!CORBA::is_nil (this->updater_) ) + { + this->updater_->create_one(i); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SL_Disabled: create_one with instance key <%C>\n"), + i.key.in())); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil"))); + result = false; + } + } + catch (const CCM_DDS::AlreadyCreated &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_one() + { + //update already created instance with handle nil + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + this->updater_->update_one(i, DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_one() + { + //delete registerd instance with DDS::HANDLE_NIL + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + this->updater_->delete_one(i, DDS::HANDLE_NIL); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::create_many() + { + //create many with no exception + CORBA::Boolean result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->create_many (this->topic_seq_many_); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n"))); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_many() + { + CORBA::Boolean result = false; + try + { + this->updater_->update_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"), + this->topic_seq_many_.length ())); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("whit update_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_many() + { + CORBA::Boolean result = false; + result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->delete_many (this->topic_seq_many_); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + + return result; + } + + void + Sender_exec_i::add_instances_of_topic () + { + CORBA::UShort total = 3; + this->topic_seq_one_.length (total); + //sequence for tests with .._one + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_one_[i-1] = new_key; + } + //sequence for tests with .._many + this->topic_seq_many_.length (total); + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "many_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_many_[i-1] = new_key; + } + } + + void + Sender_exec_i::tick () + { + if(this->test_ok_.value()) + { + switch (this->test_nr_) + { + case UPDATE_CREATE: + this->test_ok_ = this->create_one(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_ONE; + } + else + { + this->test_nr_ = END_TEST; + } + break; + case UPDATE_ONE: + this->test_ok_ = this->update_one(); + this->test_nr_ = DELETE_ONE; + break; + case DELETE_ONE: + this->test_ok_ = this->delete_one(); + this->test_nr_ = CREATE_MANY; + case CREATE_MANY: + this->test_ok_ = this->create_many(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_MANY; + } + else + { + this->test_nr_ = END_TEST; + } + this->test_nr_ = UPDATE_MANY; + break; + case UPDATE_MANY: + this->test_ok_ = this->update_many(); + this->test_nr_ = DELETE_MANY; + break; + case DELETE_MANY: + this->test_ok_ = this->delete_many(); + this->test_nr_ = END_TEST; + break; + default: + break; + } + } + } + void + Sender_exec_i::start (void) + { + long sec = 1L; + long usec = 0L; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (sec, usec), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::SL_Disabled::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->updater_= this->context_->get_connection_test_topic_update_data (); + } + void + Sender_exec_i::ccm_activate (void) + { + this->add_instances_of_topic (); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_Disabled_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h new file mode 100644 index 00000000000..5a147da00cf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h @@ -0,0 +1,89 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "SL_Disabled_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_SL_Disabled_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + enum UPDATER_TEST { + UPDATE_CREATE, + UPDATE_ONE, + DELETE_ONE, + CREATE_MANY, + UPDATE_MANY, + DELETE_MANY, + END_TEST + }; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void tick (void); + + private: + void start (void); + void stop (void); + void add_instances_of_topic (void); + CORBA::Boolean create_one(void); + CORBA::Boolean update_one(void); + CORBA::Boolean delete_one(void); + CORBA::Boolean create_many(void); + CORBA::Boolean update_many(void); + CORBA::Boolean delete_many(void); + + pulse_Generator * ticker_; + ::SL_Disabled::CCM_Sender_Context_var context_; + CCM_DDS::TestTopic::Updater_var updater_; + UPDATER_TEST test_nr_; + Atomic_Boolean test_ok_; + TestTopic_Seq topic_seq_one_; + TestTopic_Seq topic_seq_many_; + }; + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_Disabled_Sender_Impl (void); + + + +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp new file mode 100644 index 00000000000..9a086079ff7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp @@ -0,0 +1,365 @@ + + + SL_Disabled_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_Disabled_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_Disabled_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + SL_Disabled_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_Disabled_SL_Disabled_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_Disabled_SL_Disabled_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SL_Disabled_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SL_Disabled_Connector_exec + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_Disabled_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_Disabled_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + SL_Disabled_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SL_Disabled_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_state_observer_data_control + true + Facet + + + + + _statelistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_state_observer_data_listener + false + SimplexReceptacle + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_state_observer_status + false + SimplexReceptacle + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_state_observer_data + true + Facet + + + + + updater_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_update_data + false + SimplexReceptacle + + + + observable_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + SL_Disabled_Connector_exec + + + DDS_SL_Disabled_Connector_exec + + + SL_Disabled_Connector_svnt + + + DDS_SL_Disabled_Connector_svnt + + + SL_Disabled_Connector_stub + + + DDS_SL_Disabled_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl new file mode 100755 index 00000000000..fba2b49b0c8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 20 seconds to allow task to complete\n"; +sleep (20); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl new file mode 100644 index 00000000000..30b2bb8b2f0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file SL_ManyByMany_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef SL_MANYBYMANY_BASE_IDL +#define SL_MANYBYMANY_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc new file mode 100644 index 00000000000..5883ea90cd7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n SL_ManyByMany_Base" + +project(DDS_SL_ManyByMany_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=SL_MANYBYMANY_BASE_STUB_Export \ + -Wb,stub_export_include=SL_ManyByMany_Base_stub_export.h + + IDL_Files { + SL_ManyByMany_Base.idl + } +} + +project(DDS_SL_ManyByMany_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_SL_ManyByMany_Base_idl_gen + ndds_ts_flags += -corba SL_ManyByMany_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + SL_ManyByMany_Base.idl + } +} + +project(DDS_SL_ManyByMany_Base_NDDS_TS) : nddslib, taolib { + after += DDS_SL_ManyByMany_Base_ndds_ts_gen DDS_SL_ManyByMany_Base_stub + libs += DDS_SL_ManyByMany_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_SL_ManyByMany_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + SL_ManyByMany_Base.cxx + SL_ManyByMany_BasePlugin.cxx + SL_ManyByMany_BaseSupport.cxx + } + + Header_Files { + SL_ManyByMany_Base.h + SL_ManyByMany_BasePlugin.h + SL_ManyByMany_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_SL_ManyByMany_Base_stub) : ccm_stub { + after += DDS_SL_ManyByMany_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_SL_ManyByMany_Base_stub + dynamicflags = SL_MANYBYMANY_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_BaseC.cpp + } + + Header_Files { + SL_ManyByMany_BaseC.h + SL_ManyByMany_Base_stub_export.h + } + + Inline_Files { + SL_ManyByMany_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl new file mode 100644 index 00000000000..3c75a2864af --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file SL_ManyByMany_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef SL_MANYBYMANY_CONNECTOR_IDL_ +#define SL_MANYBYMANY_CONNECTOR_IDL_ + +#include +#include "Base/SL_ManyByMany_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module SL_ManyByMany +{ + connector SL_ManyByMany_Connector : ::CCM_DDS::TestTopic::DDS_State + { + }; + +}; + + + +#endif /* SL_ManyByMany_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc new file mode 100644 index 00000000000..806d22e501b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SL_ManyByMany_Base -l .. -o ../lib -u DDS SL_ManyByMany_Connector" + +project(DDS_SL_MBM_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SL_MANYBYMANY_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=SL_ManyByMany_Connector_stub_export.h \ + -Wb,skel_export_macro=SL_MANYBYMANY_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=SL_ManyByMany_Connector_svnt_export.h \ + -Wb,svnt_export_macro=SL_MANYBYMANY_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=SL_ManyByMany_Connector_svnt_export.h \ + -Wb,exec_export_macro=SL_MANYBYMANY_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=SL_ManyByMany_Connector_exec_export.h \ + -I .. + + IDL_Files { + SL_ManyByMany_Connector.idl + } +} + +project(DDS_SL_MBM_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_SL_MBM_Connector_idl_gen + idlflags += -Wb,stub_export_macro=SL_MANYBYMANY_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=SL_ManyByMany_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + SL_ManyByMany_ConnectorE.idl + } +} + +project(DDS_SL_MBM_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_MBM_Connector_lem_gen DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub DDS4CCM_lem_stub + libs += DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SL_MBM_Connector_lem_stub + dynamicflags = SL_MANYBYMANY_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_ConnectorEC.cpp + } + + Header_Files { + SL_ManyByMany_ConnectorEC.h + SL_ManyByMany_Connector_lem_stub_export.h + } + + Inline_Files { + SL_ManyByMany_ConnectorEC.inl + } +} + +project(DDS_SL_ManyByMany_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_MBM_Connector_idl_gen DDS_SL_ManyByMany_Base_stub + libs += DDS_SL_ManyByMany_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SL_ManyByMany_Connector_stub + dynamicflags = SL_MANYBYMANY_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_ConnectorC.cpp + } + + Header_Files { + SL_ManyByMany_ConnectorC.h + SL_ManyByMany_Connector_stub_export.h + } + + Inline_Files { + SL_ManyByMany_ConnectorC.inl + } +} + +project(DDS_SL_ManyByMany_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub DDS_SL_ManyByMany_Base_NDDS_TS + sharedname = DDS_SL_ManyByMany_Connector_exec + libs += DDS_SL_ManyByMany_Connector_stub DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Base_stub DDS4CCM_lem_stub DDS_SL_ManyByMany_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SL_MANYBYMANY_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_Connector_exec.cpp + } + + Header_Files { + SL_ManyByMany_Connector_exec.h + SL_ManyByMany_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_ManyByMany_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_exec DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_SL_ManyByMany_Connector_svnt + libs += DDS_SL_ManyByMany_Connector_stub \ + DDS_SL_MBM_Connector_lem_stub \ + DDS_SL_ManyByMany_Base_stub \ + DDS_SL_ManyByMany_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SL_MANYBYMANY_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_ConnectorS.cpp + SL_ManyByMany_Connector_svnt.cpp + } + + Header_Files { + SL_ManyByMany_ConnectorS.h + SL_ManyByMany_Connector_svnt.h + SL_ManyByMany_Connector_svnt_export.h + } + + Inline_Files { + SL_ManyByMany_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.cpp new file mode 100644 index 00000000000..59cf616b22e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "SL_ManyByMany_Connector_exec.h" + +namespace CIAO_SL_ManyByMany_SL_ManyByMany_Connector_Impl +{ + SL_ManyByMany_Connector_exec_i::SL_ManyByMany_Connector_exec_i (void) + : DDS_State_Connector_T () + { + } + + SL_ManyByMany_Connector_exec_i::~SL_ManyByMany_Connector_exec_i (void) + { + } + + extern "C" SL_MANYBYMANY_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_ManyByMany_SL_ManyByMany_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + SL_ManyByMany_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.h new file mode 100644 index 00000000000..a1b6888f2eb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef SL_MANYBYMANY_CONNECTOR_EXEC_H_ +#define SL_MANYBYMANY_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "SL_ManyByMany_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "SL_ManyByMany_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_State_Connector_T.h" + + +#include "Base/SL_ManyByMany_BaseSupport.h" + +namespace CIAO_SL_ManyByMany_SL_ManyByMany_Connector_Impl +{ + + // @from use of SL_ManyByMany as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_SL_ManyByMany_SL_ManyByMany_Connector_Impl::SL_ManyByMany_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::SL_ManyByMany::CCM_SL_ManyByMany_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class SL_MANYBYMANY_CONNECTOR_EXEC_Export SL_ManyByMany_Connector_exec_i : + public DDS_State_Connector_T + { + public: + SL_ManyByMany_Connector_exec_i (void); + virtual ~SL_ManyByMany_Connector_exec_i (void); + }; + + extern "C" SL_MANYBYMANY_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_ManyByMany_SL_ManyByMany_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl new file mode 100644 index 00000000000..d82a7a2fc3e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/SL_ManyByMany_Connector.idl" +#include "Connector/SL_ManyByMany_ConnectorE.idl" + + +module SL_ManyByMany +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_StateListen info_out; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc new file mode 100644 index 00000000000..ab57fdd0a70 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_SL_ManyByMany_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_SL_MBM_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + SL_ManyByMany_Receiver.idl + } +} + +project(DDS_SL_ManyByMany_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_SL_ManyByMany_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + SL_ManyByMany_ReceiverE.idl + } +} + +project(DDS_SL_MBM_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_ManyByMany_Receiver_lem_gen DDS_SL_ManyByMany_Receiver_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub + libs += Receiver_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_ReceiverEC.cpp + } + + Header_Files { + SL_ManyByMany_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + SL_ManyByMany_ReceiverEC.inl + } +} + +project(DDS_SL_ManyByMany_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_ManyByMany_Receiver_idl_gen DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub DDS_SL_MBM_Connector_lem_gen + libs += DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_ReceiverC.cpp + } + + Header_Files { + SL_ManyByMany_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + SL_ManyByMany_ReceiverC.inl + } +} + +project(DDS_SL_ManyByMany_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_SL_MBM_Receiver_lem_stub DDS_SL_ManyByMany_Receiver_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_Receiver_exec.cpp + } + + Header_Files { + SL_ManyByMany_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_ManyByMany_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SL_MBM_Receiver_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt DDS_SL_ManyByMany_Receiver_exec DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt Receiver_exec DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_ReceiverS.cpp + SL_ManyByMany_Receiver_svnt.cpp + } + + Header_Files { + SL_ManyByMany_ReceiverS.h + SL_ManyByMany_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + SL_ManyByMany_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp new file mode 100644 index 00000000000..13912a82d72 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp @@ -0,0 +1,381 @@ +// -*- C++ -*- +// +// $Id$ + +// Test for statelistener: MANY_BY_MANY. Expect the operations on_creation, on_deletion, on_many_updates + +#include "SL_ManyByMany_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_SL_ManyByMany_Receiver_Impl +{ + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + this->pulse_callback_.read_all(); + } + catch (...) + { + // @todo + } + return 0; + } + //============================================================ + // Facet Executor Implementation Class: StateListener_exec_i + //============================================================ + StateListener_exec_i::StateListener_exec_i (Atomic_Boolean &no_operation, + Atomic_Boolean &on_creation, + Atomic_Boolean &on_many_update, + Atomic_Boolean &on_deletion, + Atomic_Boolean &create_data, + Atomic_Boolean &update_data) + :no_operation_(no_operation), + on_creation_(on_creation), + on_many_update_(on_many_update), + on_deletion_(on_deletion), + create_data_(create_data), + update_data_(update_data) + { + } + + StateListener_exec_i::~StateListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::StateListener + void + StateListener_exec_i::on_creation (const ::TestTopic & data, + const ::CCM_DDS::ReadInfo & readinfo) + { + this->on_creation_ = true; + + time_t tim = readinfo.source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfo.source_timestamp.nanosec)); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Statelistener:on_creation : ") + ACE_TEXT ("Received datum for <%C> at %u\n"), + data.key.in (), + data.x)); + //one of the data must have the key 'KEY_1' with x == 1 + if((strcmp(data.key.in() ,"KEY_1")==0) && (data.x == 1L)) + { + this->create_data_ = true; + } + } + + void + StateListener_exec_i::on_one_update (const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + this->no_operation_ = false; + } + + void + StateListener_exec_i::on_many_updates (const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & readinfoseq) + { + this->on_many_update_ = true; + for(CORBA::ULong i = 0; i < readinfoseq.length(); ++i) + { + if( readinfoseq[i].instance_status != CCM_DDS::INSTANCE_UPDATED) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.instance_status ") + ACE_TEXT ("'CCM_DDS::INSTANCE_UPDATED'") + ACE_TEXT (" with operation 'on_many_updates' from StateListener in Receiver\n") + )); + + } + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < data.length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + data[i].key.in (), + data[i].x)); + //one of the data must have the key 'KEY_1' with x == 2 + if((strcmp(data[i].key,"KEY_1")==0 ) && (data[i].x == 2L)) + { + this->update_data_ = true; + } + } + } + + void + StateListener_exec_i::on_deletion (const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info) + { + if(info.instance_status != CCM_DDS::INSTANCE_DELETED) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.instance_status ") + ACE_TEXT ("'CCM_DDS::INSTANCE_DELETED'") + ACE_TEXT (" with operation 'on_deletion' from StateListener in Receiver\n") + )); + + } + if((!datum.key.in()==0) && (info.instance_status == CCM_DDS::INSTANCE_DELETED)) + { + this->on_deletion_ = true; + } + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i () + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (10), + no_operation_(true), + on_creation_(false), + on_many_update_(false), + on_deletion_(false), + create_data_(false), + update_data_(false), + reader_data_(false) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try + { + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + this->reader_data_= true; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n"))); + } + } + + // Component attributes. + // Port operations. + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::TestTopic::CCM_StateListener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return new StateListener_exec_i(this->no_operation_, + this->on_creation_, + this->on_many_update_, + this->on_deletion_, + this->create_data_, + this->update_data_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::SL_ManyByMany::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::StateListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + + lc->mode (::CCM_DDS::MANY_BY_MANY); + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(3, usec), + ACE_Time_Value(3, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + CORBA::Boolean no_error = true; + if(!this->no_operation_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive an unexpected ") + ACE_TEXT (" operation 'on_one_update' from StateListener in Receiver\n") + )); + } + if(!this->on_creation_ .value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ") + ACE_TEXT (" operation 'on_creation' from StateListener in Receiver\n") + )); + } + if(!this->create_data_ .value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ") + ACE_TEXT (" data with 'on_creation' from StateListener in Receiver\n") + )); + } + if(!this->on_many_update_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR:didn't receive the expected ") + ACE_TEXT (" operation 'on_many_updates' from StateListener in Receiver\n") + )); + } + if(!this->update_data_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR:didn't receive the expected ") + ACE_TEXT (" data with 'on_many_updates' from StateListener in Receiver\n") + )); + } + if(!this->on_deletion_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ") + ACE_TEXT (" operation 'on_deletion' from StateListener in Receiver\n") + )); + } + if(this->reader_data_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive unexpected ") + ACE_TEXT (" data on the Reader in combination with StateListener in Receiver\n") + )); + } + if(no_error==true) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ") + ACE_TEXT (" operations for MANY_BY_MANY from StateListener in Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_ManyByMany_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h new file mode 100644 index 00000000000..fa52dfec5a3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h @@ -0,0 +1,138 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "SL_ManyByMany_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_SL_ManyByMany_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + class RECEIVER_EXEC_Export StateListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_StateListener, + public virtual ::CORBA::LocalObject + { + public: + StateListener_exec_i (Atomic_Boolean &, Atomic_Boolean &, Atomic_Boolean &, + Atomic_Boolean &, Atomic_Boolean &, Atomic_Boolean &); + virtual ~StateListener_exec_i (void); + + virtual void + on_creation ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_one_update ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_updates ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & infos); + virtual void + on_deletion ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + private: + Atomic_Boolean &no_operation_; + Atomic_Boolean &on_creation_; + Atomic_Boolean &on_many_update_; + Atomic_Boolean &on_deletion_; + Atomic_Boolean &create_data_; + Atomic_Boolean &update_data_; + + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void read_all(void); + + private: + ::SL_ManyByMany::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + read_action_Generator * ticker_; + CORBA::ULong rate_; + Atomic_Boolean no_operation_; + Atomic_Boolean on_creation_; + Atomic_Boolean on_many_update_; + Atomic_Boolean on_deletion_; + Atomic_Boolean create_data_; + Atomic_Boolean update_data_; + Atomic_Boolean reader_data_; + +}; + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_ManyByMany_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl new file mode 100644 index 00000000000..d5257bbaecb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_SL_MANYBYMANY_SENDER_IDL +#define DDS_SL_MANYBYMANY_SENDER_IDL + +#include "Connector/SL_ManyByMany_Connector.idl" +#include "Connector/SL_ManyByMany_ConnectorE.idl" + + + +module SL_ManyByMany +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Update test_topic_update; + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc new file mode 100644 index 00000000000..b8cb3e32b01 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SL_ManyByMany_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_SL_ManyByMany_Sender_idl_gen) : componentidldefaults { + after += DDS_SL_MBM_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + SL_ManyByMany_Sender.idl + } +} + +project(DDS_SL_ManyByMany_Sender_lem_gen) : ciaoidldefaults { + after += DDS_SL_ManyByMany_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + SL_ManyByMany_SenderE.idl + } +} + +project(DDS_SL_ManyByMany_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_ManyByMany_Sender_lem_gen DDS_SL_ManyByMany_Sender_stub DDS_SL_ManyByMany_Base_stub + libs += DDS_SL_ManyByMany_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_SenderEC.cpp + } + + Header_Files { + SL_ManyByMany_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + SL_ManyByMany_SenderEC.inl + } +} + +project(DDS_SL_ManyByMany_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_ManyByMany_Sender_idl_gen DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub + libs += DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_SenderC.cpp + } + + Header_Files { + SL_ManyByMany_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SL_ManyByMany_SenderC.inl + } +} + +project(DDS_SL_ManyByMany_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_SL_ManyByMany_Sender_lem_stub DDS_SL_ManyByMany_Sender_stub DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_Sender_exec.cpp + } + + Header_Files { + SL_ManyByMany_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_ManyByMany_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt DDS_SL_MBM_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_SL_ManyByMany_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt DDS_SL_MBM_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_ManyByMany_SenderS.cpp + SL_ManyByMany_Sender_svnt.cpp + } + + Header_Files { + SL_ManyByMany_SenderS.h + SL_ManyByMany_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + SL_ManyByMany_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp new file mode 100644 index 00000000000..8707205a892 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp @@ -0,0 +1,363 @@ +// -*- C++ -*- +// $Id$ + +#include "SL_ManyByMany_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_SL_ManyByMany_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : test_nr_(UPDATE_CREATE), + test_ok_(true) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + CORBA::Boolean + Sender_exec_i::create_one(void) + { + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + if (!CORBA::is_nil (this->updater_) ) + { + this->updater_->create_one(i); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SL_ManyByMany: create_one with instance key <%C>\n"), + i.key.in())); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil"))); + result = false; + } + } + catch (const CCM_DDS::AlreadyCreated &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_one() + { + //update already created instance with handle nil + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + i.x++; + this->updater_->update_one(i, DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_one() + { + //delete registerd instance with DDS::HANDLE_NIL + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + this->updater_->delete_one(i, DDS::HANDLE_NIL); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::create_many() + { + //create many with no exception + CORBA::Boolean result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->create_many (this->topic_seq_many_); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n"))); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_many() + { + CORBA::Boolean result = false; + try + { + for(CORBA::ULong i = 0; i < this->topic_seq_many_.length(); i++) + { + this->topic_seq_many_[i].x= i+ 10; + } + this->updater_->update_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"), + this->topic_seq_many_.length ())); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("with update_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_many() + { + CORBA::Boolean result = false; + result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->delete_many (this->topic_seq_many_); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + + return result; + } + + void + Sender_exec_i::add_instances_of_topic () + { + CORBA::UShort total = 3; + this->topic_seq_one_.length (total); + //sequence for tests with .._one + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_one_[i-1] = new_key; + } + //sequence for tests with .._many + this->topic_seq_many_.length (total); + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "many_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_many_[i-1] = new_key; + } + } + + void + Sender_exec_i::tick () + { + if(this->test_ok_.value()) + { + switch (this->test_nr_) + { + case UPDATE_CREATE: + this->test_ok_ = this->create_one(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_ONE; + } + else + { + this->test_nr_ = END_TEST; + } + break; + case UPDATE_ONE: + this->test_ok_ = this->update_one(); + this->test_nr_ = DELETE_ONE; + break; + case DELETE_ONE: + this->test_ok_ = this->delete_one(); + this->test_nr_ = CREATE_MANY; + case CREATE_MANY: + this->test_ok_ = this->create_many(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_MANY; + } + else + { + this->test_nr_ = END_TEST; + } + this->test_nr_ = UPDATE_MANY; + break; + case UPDATE_MANY: + this->test_ok_ = this->update_many(); + this->test_nr_ = DELETE_MANY; + break; + case DELETE_MANY: + this->test_ok_ = this->delete_many(); + this->test_nr_ = END_TEST; + break; + default: + break; + } + } + } + void + Sender_exec_i::start (void) + { + long sec = 3L; + long usec = 0L; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (sec, usec), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::SL_ManyByMany::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->updater_= this->context_->get_connection_test_topic_update_data (); + } + void + Sender_exec_i::ccm_activate (void) + { + this->add_instances_of_topic (); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_ManyByMany_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h new file mode 100644 index 00000000000..d9134fcc29a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h @@ -0,0 +1,89 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "SL_ManyByMany_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_SL_ManyByMany_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + enum UPDATER_TEST { + UPDATE_CREATE, + UPDATE_ONE, + DELETE_ONE, + CREATE_MANY, + UPDATE_MANY, + DELETE_MANY, + END_TEST + }; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void tick (void); + + private: + void start (void); + void stop (void); + void add_instances_of_topic (void); + CORBA::Boolean create_one(void); + CORBA::Boolean update_one(void); + CORBA::Boolean delete_one(void); + CORBA::Boolean create_many(void); + CORBA::Boolean update_many(void); + CORBA::Boolean delete_many(void); + + pulse_Generator * ticker_; + ::SL_ManyByMany::CCM_Sender_Context_var context_; + CCM_DDS::TestTopic::Updater_var updater_; + UPDATER_TEST test_nr_; + Atomic_Boolean test_ok_; + TestTopic_Seq topic_seq_one_; + TestTopic_Seq topic_seq_many_; + }; + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_ManyByMany_Sender_Impl (void); + + + +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp new file mode 100644 index 00000000000..76d9ea2f269 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp @@ -0,0 +1,365 @@ + + + SL_ManyByMany_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_ManyByMany_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_ManyByMany_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + SL_ManyByMany_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_ManyByMany_SL_ManyByMany_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_ManyByMany_SL_ManyByMany_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SL_ManyByMany_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SL_ManyByMany_Connector_exec + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_ManyByMany_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_ManyByMany_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + SL_ManyByMany_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SL_ManyByMany_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_state_observer_data_control + true + Facet + + + + + _statelistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_state_observer_data_listener + false + SimplexReceptacle + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_state_observer_status + false + SimplexReceptacle + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_state_observer_data + true + Facet + + + + + updater_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_update_data + false + SimplexReceptacle + + + + observable_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + SL_ManyByMany_Connector_exec + + + DDS_SL_ManyByMany_Connector_exec + + + SL_ManyByMany_Connector_svnt + + + DDS_SL_ManyByMany_Connector_svnt + + + SL_ManyByMany_Connector_stub + + + DDS_SL_ManyByMany_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl new file mode 100755 index 00000000000..fba2b49b0c8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 20 seconds to allow task to complete\n"; +sleep (20); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl new file mode 100644 index 00000000000..4f607f9eb5f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file SL_OneByOne_Base.idl + * @author Marijke Hengstmengel + */ + +#ifndef SL_ONEBYONE_BASE_IDL +#define SL_ONEBYONE_BASE_IDL + + + struct TestTopic { + string key; //@key + long x; + }; +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc new file mode 100644 index 00000000000..f1c8aca7441 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n SL_OneByOne_Base" + +project(DDS_SL_OneByOne_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=SL_ONEBYONE_BASE_STUB_Export \ + -Wb,stub_export_include=SL_OneByOne_Base_stub_export.h + + IDL_Files { + SL_OneByOne_Base.idl + } +} + +project(DDS_SL_OneByOne_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_SL_OneByOne_Base_idl_gen + ndds_ts_flags += -corba SL_OneByOne_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + SL_OneByOne_Base.idl + } +} + +project(DDS_SL_OneByOne_Base_NDDS_TS) : nddslib, taolib { + after += DDS_SL_OneByOne_Base_ndds_ts_gen DDS_SL_OneByOne_Base_stub + libs += DDS_SL_OneByOne_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_SL_OneByOne_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + SL_OneByOne_Base.cxx + SL_OneByOne_BasePlugin.cxx + SL_OneByOne_BaseSupport.cxx + } + + Header_Files { + SL_OneByOne_Base.h + SL_OneByOne_BasePlugin.h + SL_OneByOne_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_SL_OneByOne_Base_stub) : ccm_stub { + after += DDS_SL_OneByOne_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_SL_OneByOne_Base_stub + dynamicflags = SL_ONEBYONE_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_BaseC.cpp + } + + Header_Files { + SL_OneByOne_BaseC.h + SL_OneByOne_Base_stub_export.h + } + + Inline_Files { + SL_OneByOne_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc new file mode 100644 index 00000000000..2d82c85b948 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SL_OneByOne_Base -l .. -o ../lib -u DDS SL_OneByOne_Connector" + +project(DDS_SL_OBO_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SL_ONEBYONE_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=SL_OneByOne_Connector_stub_export.h \ + -Wb,skel_export_macro=SL_ONEBYONE_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=SL_OneByOne_Connector_svnt_export.h \ + -Wb,svnt_export_macro=SL_ONEBYONE_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=SL_OneByOne_Connector_svnt_export.h \ + -Wb,exec_export_macro=SL_ONEBYONE_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=SL_OneByOne_Connector_exec_export.h \ + -I .. + + IDL_Files { + SL_OneByOne_Connector.idl + } +} + +project(DDS_SL_OBO_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_SL_OBO_Connector_idl_gen + idlflags += -Wb,stub_export_macro=SL_ONEBYONE_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=SL_OneByOne_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + SL_OneByOne_ConnectorE.idl + } +} + +project(DDS_SL_OBO_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_OBO_Connector_lem_gen DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub DDS4CCM_lem_stub + libs += DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SL_OBO_Connector_lem_stub + dynamicflags = SL_ONEBYONE_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_ConnectorEC.cpp + } + + Header_Files { + SL_OneByOne_ConnectorEC.h + SL_OneByOne_Connector_lem_stub_export.h + } + + Inline_Files { + SL_OneByOne_ConnectorEC.inl + } +} + +project(DDS_SL_OneByOne_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_OBO_Connector_idl_gen DDS_SL_OneByOne_Base_stub + libs += DDS_SL_OneByOne_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SL_OneByOne_Connector_stub + dynamicflags = SL_ONEBYONE_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_ConnectorC.cpp + } + + Header_Files { + SL_OneByOne_ConnectorC.h + SL_OneByOne_Connector_stub_export.h + } + + Inline_Files { + SL_OneByOne_ConnectorC.inl + } +} + +project(DDS_SL_OneByOne_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub DDS_SL_OneByOne_Base_NDDS_TS + sharedname = DDS_SL_OneByOne_Connector_exec + libs += DDS_SL_OneByOne_Connector_stub DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Base_stub DDS4CCM_lem_stub DDS_SL_OneByOne_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SL_ONEBYONE_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_Connector_exec.cpp + } + + Header_Files { + SL_OneByOne_Connector_exec.h + SL_OneByOne_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_OneByOne_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_exec DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_SL_OneByOne_Connector_svnt + libs += DDS_SL_OneByOne_Connector_stub \ + DDS_SL_OBO_Connector_lem_stub \ + DDS_SL_OneByOne_Base_stub \ + DDS_SL_OneByOne_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SL_ONEBYONE_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_ConnectorS.cpp + SL_OneByOne_Connector_svnt.cpp + } + + Header_Files { + SL_OneByOne_ConnectorS.h + SL_OneByOne_Connector_svnt.h + SL_OneByOne_Connector_svnt_export.h + } + + Inline_Files { + SL_OneByOne_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl new file mode 100644 index 00000000000..f2bafaf86e8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file SL_OneByOne_Connector.idl + * @author Marijke Hengstmengel + * + * by-hand translation of the idl3p. + */ + +#ifndef SL_ONEBYONE_CONNECTOR_IDL_ +#define SL_ONEBYONE_CONNECTOR_IDL_ + +#include +#include "Base/SL_OneByOne_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module SL_OneByOne +{ + connector SL_OneByOne_Connector : ::CCM_DDS::TestTopic::DDS_State + { + }; + +}; + + + +#endif /* SL_OneByOne_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.cpp new file mode 100644 index 00000000000..a6c71d256e3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "SL_OneByOne_Connector_exec.h" + +namespace CIAO_SL_OneByOne_SL_OneByOne_Connector_Impl +{ + SL_OneByOne_Connector_exec_i::SL_OneByOne_Connector_exec_i (void) + : DDS_State_Connector_T () + { + } + + SL_OneByOne_Connector_exec_i::~SL_OneByOne_Connector_exec_i (void) + { + } + + extern "C" SL_ONEBYONE_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_OneByOne_SL_OneByOne_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + SL_OneByOne_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.h new file mode 100644 index 00000000000..dab43355cd4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector_exec.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// $Id$ + +#ifndef SL_ONEBYONE_CONNECTOR_EXEC_H_ +#define SL_ONEBYONE_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "SL_OneByOne_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "SL_OneByOne_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_State_Connector_T.h" + + +#include "Base/SL_OneByOne_BaseSupport.h" + +namespace CIAO_SL_OneByOne_SL_OneByOne_Connector_Impl +{ + + // @from use of SL_OneByOne as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_SL_OneByOne_SL_OneByOne_Connector_Impl::SL_OneByOne_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::SL_OneByOne::CCM_SL_OneByOne_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class SL_ONEBYONE_CONNECTOR_EXEC_Export SL_OneByOne_Connector_exec_i : + public DDS_State_Connector_T + { + public: + SL_OneByOne_Connector_exec_i (void); + virtual ~SL_OneByOne_Connector_exec_i (void); + }; + + extern "C" SL_ONEBYONE_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_OneByOne_SL_OneByOne_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl new file mode 100644 index 00000000000..7506392ea75 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/SL_OneByOne_Connector.idl" +#include "Connector/SL_OneByOne_ConnectorE.idl" + + +module SL_OneByOne +{ + component Receiver + { + port CCM_DDS::TestTopic::DDS_StateListen info_out; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc new file mode 100644 index 00000000000..6204a41230c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_SL_OneByOne_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_SL_OBO_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + SL_OneByOne_Receiver.idl + } +} + +project(DDS_SL_OneByOne_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_SL_OneByOne_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + SL_OneByOne_ReceiverE.idl + } +} + +project(DDS_SL_OBO_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_OneByOne_Receiver_lem_gen DDS_SL_OneByOne_Receiver_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub + libs += Receiver_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_ReceiverEC.cpp + } + + Header_Files { + SL_OneByOne_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + SL_OneByOne_ReceiverEC.inl + } +} + +project(DDS_SL_OneByOne_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_OneByOne_Receiver_idl_gen DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub DDS_SL_OBO_Connector_lem_gen + libs += DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_ReceiverC.cpp + } + + Header_Files { + SL_OneByOne_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + SL_OneByOne_ReceiverC.inl + } +} + +project(DDS_SL_OneByOne_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_SL_OBO_Receiver_lem_stub DDS_SL_OneByOne_Receiver_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_Receiver_exec.cpp + } + + Header_Files { + SL_OneByOne_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_OneByOne_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SL_OBO_Receiver_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt DDS_SL_OneByOne_Receiver_exec DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt Receiver_exec DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_ReceiverS.cpp + SL_OneByOne_Receiver_svnt.cpp + } + + Header_Files { + SL_OneByOne_ReceiverS.h + SL_OneByOne_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + SL_OneByOne_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp new file mode 100644 index 00000000000..d21eef594c3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp @@ -0,0 +1,319 @@ +// -*- C++ -*- +// +// $Id$ + +// Test for statelistener: ONE_BY_ONE. Expect the operations on_creation, on_deletion, on_one_update + +#include "SL_OneByOne_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_SL_OneByOne_Receiver_Impl +{ +//============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + this->pulse_callback_.read_all(); + } + catch (...) + { + // @todo + } + return 0; + } + //============================================================ + // Facet Executor Implementation Class: StateListener_exec_i + //============================================================ + StateListener_exec_i::StateListener_exec_i (Atomic_Boolean &no_operation, + Atomic_Boolean &on_creation, + Atomic_Boolean &on_one_update, + Atomic_Boolean &on_deletion) + :no_operation_(no_operation), + on_creation_(on_creation), + on_one_update_(on_one_update), + on_deletion_(on_deletion) + { + } + + StateListener_exec_i::~StateListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::StateListener + void + StateListener_exec_i::on_creation (const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info) + { + if((!datum.key.in()==0) && (info.instance_status == CCM_DDS::INSTANCE_CREATED)) + { + this->on_creation_ = true; + } + } + + void + StateListener_exec_i::on_one_update (const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info) + { + if(info.instance_status != CCM_DDS::INSTANCE_UPDATED) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.status ") + ACE_TEXT ("'CCM_DDS::INSTANCE_UPDATED'") + ACE_TEXT (" with operation 'on_one_update' from StateListener in Receiver\n") + )); + + } + if((!datum.key.in()==0) && (info.instance_status == CCM_DDS::INSTANCE_UPDATED)) + { + this->on_one_update_ = true; + } + } + + void + StateListener_exec_i::on_many_updates (const ::TestTopic_Seq & /*data*/, + const ::CCM_DDS::ReadInfoSeq & /*infos*/) + { + this->no_operation_ = false; + } + + void + StateListener_exec_i::on_deletion (const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info) + { + if(info.instance_status != CCM_DDS::INSTANCE_DELETED) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.status ") + ACE_TEXT ("'CCM_DDS::INSTANCE_DELETED'") + ACE_TEXT (" with operation 'on_deletion' from StateListener in Receiver\n") + )); + + } + if((!datum.key.in()==0) && (info.instance_status == CCM_DDS::INSTANCE_DELETED)) + { + this->on_deletion_ = true; + } + } + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i () + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (10), + no_operation_(true), + updater_data_(false), + on_creation_(false), + on_one_update_(false), + on_deletion_(false) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try + { + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + this->updater_data_ = true; + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + + } + catch (const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n"))); + } + } + + // Component attributes. + // Port operations. + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::TestTopic::CCM_StateListener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return new StateListener_exec_i(this->no_operation_, + this->on_creation_, + this->on_one_update_, + this->on_deletion_); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::SL_OneByOne::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::StateListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + + lc->mode (::CCM_DDS::ONE_BY_ONE); + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(3, usec), + ACE_Time_Value(3, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + CORBA::Boolean no_error = true; + if(!this->no_operation_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive an unexpected ") + ACE_TEXT (" operation 'on_many_updates' from StateListener in Receiver\n") + )); + } + if(!this->on_creation_ .value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ") + ACE_TEXT (" operation 'on_creation' from StateListener in Receiver\n") + )); + } + if(!this->on_one_update_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR:didn't receive the expected ") + ACE_TEXT (" operation 'on_one_update' from StateListener in Receiver\n") + )); + } + if(!this->on_deletion_.value ()) + { + no_error = false; + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ") + ACE_TEXT (" operation 'on_deletion' from StateListener in Receiver\n") + )); + } + + if(no_error==true) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ") + ACE_TEXT (" operations for ONE_BY_ONE from StateListener in Receiver\n") + )); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_OneByOne_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h new file mode 100644 index 00000000000..0016ca59dd1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h @@ -0,0 +1,131 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "SL_OneByOne_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_SL_OneByOne_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + class RECEIVER_EXEC_Export StateListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_StateListener, + public virtual ::CORBA::LocalObject + { + public: + StateListener_exec_i (Atomic_Boolean &, Atomic_Boolean &, Atomic_Boolean &, Atomic_Boolean &); + virtual ~StateListener_exec_i (void); + + virtual void + on_creation ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_one_update ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_updates ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & infos); + virtual void + on_deletion ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + private: + Atomic_Boolean &no_operation_; + Atomic_Boolean &on_creation_; + Atomic_Boolean &on_one_update_; + Atomic_Boolean &on_deletion_; + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void read_all(void); + + private: + ::SL_OneByOne::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + read_action_Generator * ticker_; + CORBA::ULong rate_; + Atomic_Boolean no_operation_; + Atomic_Boolean updater_data_; + Atomic_Boolean on_creation_; + Atomic_Boolean on_one_update_; + Atomic_Boolean on_deletion_; +}; + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_OneByOne_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl new file mode 100644 index 00000000000..1272cfa7fbf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_SL_ONEBYONE_SENDER_IDL +#define DDS_SL_ONEBYONE_SENDER_IDL + +#include "Connector/SL_OneByOne_Connector.idl" +#include "Connector/SL_OneByOne_ConnectorE.idl" + + + +module SL_OneByOne +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Update test_topic_update; + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc new file mode 100644 index 00000000000..666bcfce418 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SL_OneByOne_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_SL_OneByOne_Sender_idl_gen) : componentidldefaults { + after += DDS_SL_OBO_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + SL_OneByOne_Sender.idl + } +} + +project(DDS_SL_OneByOne_Sender_lem_gen) : ciaoidldefaults { + after += DDS_SL_OneByOne_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + SL_OneByOne_SenderE.idl + } +} + +project(DDS_SL_OneByOne_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SL_OneByOne_Sender_lem_gen DDS_SL_OneByOne_Sender_stub DDS_SL_OneByOne_Base_stub + libs += DDS_SL_OneByOne_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_SenderEC.cpp + } + + Header_Files { + SL_OneByOne_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + SL_OneByOne_SenderEC.inl + } +} + +project(DDS_SL_OneByOne_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_SL_OneByOne_Sender_idl_gen DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub + libs += DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_SenderC.cpp + } + + Header_Files { + SL_OneByOne_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SL_OneByOne_SenderC.inl + } +} + +project(DDS_SL_OneByOne_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_SL_OneByOne_Sender_lem_stub DDS_SL_OneByOne_Sender_stub DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_Sender_exec.cpp + } + + Header_Files { + SL_OneByOne_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SL_OneByOne_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt DDS_SL_OBO_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_SL_OneByOne_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt DDS_SL_OBO_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SL_OneByOne_SenderS.cpp + SL_OneByOne_Sender_svnt.cpp + } + + Header_Files { + SL_OneByOne_SenderS.h + SL_OneByOne_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + SL_OneByOne_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp new file mode 100644 index 00000000000..f84f87a241d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp @@ -0,0 +1,358 @@ +// -*- C++ -*- +// $Id$ + +#include "SL_OneByOne_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_SL_OneByOne_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : test_nr_(UPDATE_CREATE), + test_ok_(true) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + CORBA::Boolean + Sender_exec_i::create_one(void) + { + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + if (!CORBA::is_nil (this->updater_) ) + { + this->updater_->create_one(i); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SL_OneByOne: create_one with instance key <%C>\n"), + i.key.in())); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil"))); + result = false; + } + } + catch (const CCM_DDS::AlreadyCreated &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_one() + { + //update already created instance with handle nil + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + this->updater_->update_one(i, DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_one() + { + //delete registerd instance with DDS::HANDLE_NIL + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + this->updater_->delete_one(i, DDS::HANDLE_NIL); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::create_many() + { + //create many with no exception + CORBA::Boolean result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->create_many (this->topic_seq_many_); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n"))); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_many() + { + CORBA::Boolean result = false; + try + { + this->updater_->update_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"), + this->topic_seq_many_.length ())); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("whit update_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_many() + { + CORBA::Boolean result = false; + result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->delete_many (this->topic_seq_many_); + result = true; + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + + return result; + } + + void + Sender_exec_i::add_instances_of_topic () + { + CORBA::UShort total = 3; + this->topic_seq_one_.length (total); + //sequence for tests with .._one + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_one_[i-1] = new_key; + } + //sequence for tests with .._many + this->topic_seq_many_.length (total); + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "many_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_many_[i-1] = new_key; + } + } + + void + Sender_exec_i::tick () + { + if(this->test_ok_.value()) + { + switch (this->test_nr_) + { + case UPDATE_CREATE: + this->test_ok_ = this->create_one(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_ONE; + } + else + { + this->test_nr_ = END_TEST; + } + break; + case UPDATE_ONE: + this->test_ok_ = this->update_one(); + this->test_nr_ = DELETE_ONE; + break; + case DELETE_ONE: + this->test_ok_ = this->delete_one(); + this->test_nr_ = CREATE_MANY; + case CREATE_MANY: + this->test_ok_ = this->create_many(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_MANY; + } + else + { + this->test_nr_ = END_TEST; + } + this->test_nr_ = UPDATE_MANY; + break; + case UPDATE_MANY: + this->test_ok_ = this->update_many(); + this->test_nr_ = DELETE_MANY; + break; + case DELETE_MANY: + this->test_ok_ = this->delete_many(); + this->test_nr_ = END_TEST; + break; + default: + break; + } + } + } + void + Sender_exec_i::start (void) + { + long sec = 1L; + long usec = 0L; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (sec, usec), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::SL_OneByOne::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->updater_= this->context_->get_connection_test_topic_update_data (); + } + void + Sender_exec_i::ccm_activate (void) + { + this->add_instances_of_topic (); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_OneByOne_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h new file mode 100644 index 00000000000..81a747c5443 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h @@ -0,0 +1,86 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "SL_OneByOne_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_SL_OneByOne_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + enum UPDATER_TEST { + UPDATE_CREATE, + UPDATE_ONE, + DELETE_ONE, + CREATE_MANY, + UPDATE_MANY, + DELETE_MANY, + END_TEST + }; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void tick (void); + + private: + void start (void); + void stop (void); + void add_instances_of_topic (void); + CORBA::Boolean create_one(void); + CORBA::Boolean update_one(void); + CORBA::Boolean delete_one(void); + CORBA::Boolean create_many(void); + CORBA::Boolean update_many(void); + CORBA::Boolean delete_many(void); + + pulse_Generator * ticker_; + ::SL_OneByOne::CCM_Sender_Context_var context_; + CCM_DDS::TestTopic::Updater_var updater_; + UPDATER_TEST test_nr_; + Atomic_Boolean test_ok_; + TestTopic_Seq topic_seq_one_; + TestTopic_Seq topic_seq_many_; + }; + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SL_OneByOne_Sender_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp new file mode 100644 index 00000000000..a794a8b59a1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp @@ -0,0 +1,365 @@ + + + SL_OneByOne_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_OneByOne_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_OneByOne_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + SL_OneByOne_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_OneByOne_SL_OneByOne_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_OneByOne_SL_OneByOne_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SL_OneByOne_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SL_OneByOne_Connector_exec + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_SL_OneByOne_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SL_OneByOne_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + SL_OneByOne_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SL_OneByOne_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_state_observer_data_control + true + Facet + + + + + _statelistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_state_observer_data_listener + false + SimplexReceptacle + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_state_observer_status + false + SimplexReceptacle + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_state_observer_data + true + Facet + + + + + updater_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_update_data + false + SimplexReceptacle + + + + observable_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + SL_OneByOne_Connector_exec + + + DDS_SL_OneByOne_Connector_exec + + + SL_OneByOne_Connector_svnt + + + DDS_SL_OneByOne_Connector_svnt + + + SL_OneByOne_Connector_stub + + + DDS_SL_OneByOne_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl new file mode 100755 index 00000000000..fba2b49b0c8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 20 seconds to allow task to complete\n"; +sleep (20); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl new file mode 100644 index 00000000000..f94c2877dc2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file SetConnectorAttribute_Base.idl + * @author Marcel Smit + */ + +#ifndef SETCONNECTORATTRIBUTE_BASE_IDL +#define SETCONNECTORATTRIBUTE_BASE_IDL + +struct SetConnectorAttributeTest { + string key; + long iteration; +}; + +typedef sequence SetConnectorAttributeTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc new file mode 100644 index 00000000000..f3ecdc7f56c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n SetConnectorAttribute_Base" + +project(DDS_SCABase_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=SETCONNECTORATTRIBUTE_BASE_STUB_Export \ + -Wb,stub_export_include=SetConnectorAttribute_Base_stub_export.h + + IDL_Files { + SetConnectorAttribute_Base.idl + } +} + +project(DDS_SCABase_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_SCABase_idl_gen + ndds_ts_flags += -corba SetConnectorAttribute_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + SetConnectorAttribute_Base.idl + } +} + +project(DDS_SCABase_NDDS_TS) : nddslib, taolib { + after += DDS_SCABase_ndds_ts_gen DDS_SCABase_stub + libs += DDS_SCABase_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_SCABase_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + SetConnectorAttribute_Base.cxx + SetConnectorAttribute_BasePlugin.cxx + SetConnectorAttribute_BaseSupport.cxx + } + + Header_Files { + SetConnectorAttribute_Base.h + SetConnectorAttribute_BasePlugin.h + SetConnectorAttribute_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_SCABase_stub) : ccm_stub { + after += DDS_SCABase_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_SCABase_stub + dynamicflags = SETCONNECTORATTRIBUTE_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SetConnectorAttribute_BaseC.cpp + } + + Header_Files { + SetConnectorAttribute_BaseC.h + SetConnectorAttribute_Base_stub_export.h + } + + Inline_Files { + SetConnectorAttribute_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl new file mode 100644 index 00000000000..9a80aa471d4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file SetConnectorAttribute_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef SETCONNECTORATTRIBUTE_CONNECTOR_IDL_ +#define SETCONNECTORATTRIBUTE_CONNECTOR_IDL_ + +#include +#include "Base/SetConnectorAttribute_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::SetConnectorAttributeTest, ::SetConnectorAttributeTest_Seq, SetConnectorAttributeTest) + +module SetConnectorAttribute +{ + connector SetConnectorAttribute_Connector : ::CCM_DDS::SetConnectorAttributeTest::DDS_Event + { + }; +}; + +#endif /* SetConnectorAttribute_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc new file mode 100644 index 00000000000..f70f65f8915 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SCABase -l .. -o ../lib -u DDS SetConnectorAttribute_Connector" + +project(DDS_SCAConnector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=SetConnectorAttribute_Connector_stub_export.h \ + -Wb,skel_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=SetConnectorAttribute_Connector_svnt_export.h \ + -Wb,svnt_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=SetConnectorAttribute_Connector_svnt_export.h \ + -Wb,exec_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=SetConnectorAttribute_Connector_exec_export.h \ + -I .. + + IDL_Files { + SetConnectorAttribute_Connector.idl + } +} + +project(DDS_SCAConnector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_SCAConnector_idl_gen + idlflags += -Wb,stub_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=SetConnectorAttribute_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + SetConnectorAttribute_ConnectorE.idl + } +} + +project(DDS_SCAConnector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SCAConnector_lem_gen DDS_SCAConnector_stub DDS_SCABase_stub DDS4CCM_lem_stub + libs += DDS_SCABase_stub DDS_SCAConnector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SCAConnector_lem_stub + dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SetConnectorAttribute_ConnectorEC.cpp + } + + Header_Files { + SetConnectorAttribute_ConnectorEC.h + SetConnectorAttribute_Connector_lem_stub_export.h + } + + Inline_Files { + SetConnectorAttribute_ConnectorEC.inl + } +} + +project(DDS_SCAConnector_stub) : ccm_stub, dds4ccm_base { + after += DDS_SCAConnector_idl_gen DDS_SCABase_stub + libs += DDS_SCABase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SCAConnector_stub + dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SetConnectorAttribute_ConnectorC.cpp + } + + Header_Files { + SetConnectorAttribute_ConnectorC.h + SetConnectorAttribute_Connector_stub_export.h + } + + Inline_Files { + SetConnectorAttribute_ConnectorC.inl + } +} + +project(DDS_SCAConnector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_SCAConnector_lem_stub DDS_SCAConnector_stub DDS4CCM_lem_stub DDS_SCABase_NDDS_TS + sharedname = DDS_SCAConnector_exec + libs += DDS_SCAConnector_stub DDS_SCAConnector_lem_stub DDS_SCABase_stub DDS4CCM_lem_stub DDS_SCABase_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SetConnectorAttribute_Connector_exec.cpp + } + + Header_Files { + SetConnectorAttribute_Connector_exec.h + SetConnectorAttribute_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SCAConnector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_SCAConnector_lem_stub DDS_SCAConnector_exec DDS_SCAConnector_stub DDS4CCM_lem_stub + sharedname = DDS_SCAConnector_svnt + libs += DDS_SCAConnector_stub \ + DDS_SCAConnector_lem_stub \ + DDS_SCABase_stub \ + DDS_SCAConnector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SetConnectorAttribute_ConnectorS.cpp + SetConnectorAttribute_Connector_svnt.cpp + } + + Header_Files { + SetConnectorAttribute_ConnectorS.h + SetConnectorAttribute_Connector_svnt.h + SetConnectorAttribute_Connector_svnt_export.h + } + + Inline_Files { + SetConnectorAttribute_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp new file mode 100644 index 00000000000..d63820cf838 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.cpp @@ -0,0 +1,178 @@ +// -*- C++ -*- +// $Id$ + +#include "SetConnectorAttribute_Connector_exec.h" + +#define DOMAIN_ID_TO_TEST 100 +#define QOS_PROFILE_TO_TEST "'qos profile'" +#define TOPIC_NAME_TO_TEST "SetConnectorAttribute" +#define KEY_FIELDS_PREFIX_TO_TEST "string_%d" +#define NO_OFF_KEY_FIELDS_TO_TEST 5 + +namespace CIAO_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl +{ + SetConnectorAttribute_Connector_exec_i::SetConnectorAttribute_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + SetConnectorAttribute_Connector_exec_i::~SetConnectorAttribute_Connector_exec_i (void) + { + } + + void + SetConnectorAttribute_Connector_exec_i::test_domain_id () + { + try + { + DDS::DomainId_t id = this->domain_id (); + if (id != DOMAIN_ID_TO_TEST) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("Domain ID not set properly; set <%d> - should be <%d>\n"), + id, DOMAIN_ID_TO_TEST)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("domain_id has been properly set\n"))); + } + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_domain_id : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_domain_id : Unknown exception caught\n"))); + } + } + + void + SetConnectorAttribute_Connector_exec_i::test_qos_profile () + { + try + { + char * profile = this->qos_profile (); + if (ACE_OS::strcmp (profile, QOS_PROFILE_TO_TEST) != 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("QOS profile not set properly; set <%C> - should be <%C>\n"), + profile, QOS_PROFILE_TO_TEST)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("qos_profile has been properly set\n"))); + } + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_qos_profile : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_qos_profile : Unknown exception caught\n"))); + } + } + + void + SetConnectorAttribute_Connector_exec_i::test_topic_name () + { + try + { + char * topic_name = this->topic_name (); + if (ACE_OS::strcmp (topic_name, TOPIC_NAME_TO_TEST) != 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("Topic name not set properly; set <%C> - should be <%C>\n"), + topic_name, TOPIC_NAME_TO_TEST)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("topic_name has been properly set\n"))); + } + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_topic_name : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_topic_name : Unknown exception caught\n"))); + } + } + + void + SetConnectorAttribute_Connector_exec_i::test_key_fields () + { + try + { + ::DDS::StringSeq_var key_fields = this->key_fields (); + if (key_fields->length () != NO_OFF_KEY_FIELDS_TO_TEST) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("Incorrect size of key fields; set <%C> - should be <%C>\n"), + key_fields->length (), NO_OFF_KEY_FIELDS_TO_TEST)); + } + for (CORBA::ULong i = 0; i < key_fields->length (); ++i) + { + char tmp[256]; + ACE_OS::sprintf (tmp, KEY_FIELDS_PREFIX_TO_TEST, i+1); + if (ACE_OS::strcmp (tmp, (*key_fields)[i].in ()) != 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ") + ACE_TEXT ("Incorrect string found in key fields; ") + ACE_TEXT ("index <%d> - set <%C> - should be <%C>\n"), + i, (*key_fields)[i].in (), tmp)); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("keyfield %d has been properly set\n"), i)); + } + } + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_key_fields : Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: test_key_fields : Unknown exception caught\n"))); + } + } + + + void + SetConnectorAttribute_Connector_exec_i::ccm_activate () + { + test_key_fields (); + test_domain_id (); + test_qos_profile (); + test_topic_name (); + } + + extern "C" SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + SetConnectorAttribute_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.h new file mode 100644 index 00000000000..c7c4879f886 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector_exec.h @@ -0,0 +1,67 @@ +// -*- C++ -*- +// $Id$ + +#ifndef SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_H_ +#define SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "SetConnectorAttribute_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "SetConnectorAttribute_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/SetConnectorAttribute_BaseSupport.h" + +namespace CIAO_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl +{ + // @from use of SetConnectorAttributeTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + SetConnectorAttributeTest, + SetConnectorAttributeTestSeq, + SetConnectorAttributeTestTypeSupport, + SetConnectorAttributeTestDataWriter, + SetConnectorAttributeTestDataReader > SetConnectorAttributeTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl::SetConnectorAttribute_Connector_Exec, + SetConnectorAttributeTest_Seq, + ::CCM_DDS::SetConnectorAttributeTest::CCM_Writer, + ::CCM_DDS::SetConnectorAttributeTest::CCM_Updater, + ::CCM_DDS::SetConnectorAttributeTest::CCM_Getter, + ::CCM_DDS::SetConnectorAttributeTest::CCM_Reader, + ::SetConnectorAttribute::CCM_SetConnectorAttribute_Connector_Context, + ::CCM_DDS::SetConnectorAttributeTest::Listener, + ::CCM_DDS::SetConnectorAttributeTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> SetConnectorAttributeTest_Connector_Traits; + + class SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_Export SetConnectorAttribute_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + SetConnectorAttribute_Connector_exec_i (void); + virtual ~SetConnectorAttribute_Connector_exec_i (void); + + void ccm_activate (void); + private: + void test_domain_id (); + void test_qos_profile (); + void test_topic_name (); + void test_key_fields (); + }; + + extern "C" SETCONNECTORATTRIBUTE_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README new file mode 100644 index 00000000000..8986a3b67ca --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README @@ -0,0 +1,15 @@ +# $Id$ + +Tests whether the connector attribute are +properly set by the D&C framework. +The following connector attributes are defined in +the deployment plan: + * key_fields + * domain_id + * qos_profile + * topic_name + +On ccm_activate in the connector, these values +are checked. + +An error is reported for every mismatch. diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp new file mode 100644 index 00000000000..f7fe2fc0074 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp @@ -0,0 +1,150 @@ + + + SetConnectorAttributeAttribute_Depl_1 + + + + SetConnectorAttributeConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_SetConnectorAttribute_SetConnectorAttribute_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + SetConnectorAttributeConnector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + SetConnectorAttributeConnector_exec + + + + + + SetConnectorAttributeConnectorComponent + ComponentNode + + + + + topic_name + + + tk_string + + + SetConnectorAttribute + + + + + domain_id + + + tk_long + + + 100 + + + + + qos_profile + + + tk_string + + + 'qos profile' + + + + + key_fields + + + tk_sequence + + + tk_string + + + + + + string_1 + + + string_2 + + + string_3 + + + string_4 + + + string_5 + + + + + + + + SetConnectorAttributeConnector_exec + + + DDS_SCAConnector_exec + + + SetConnectorAttributeConnector_svnt + + + DDS_SCAConnector_svnt + + + SetConnectorAttributeConnector_stub + + + DDS_SCAConnector_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl new file mode 100755 index 00000000000..bbb29e79d89 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "ComponentNode"); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 5 seconds to allow task to complete\n"; +sleep (5); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl new file mode 100644 index 00000000000..7173b6abaa6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file State_Connection_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef STATE_CONNECTION_TEST_BASE_IDL +#define STATE_CONNECTION_TEST_BASE_IDL + +struct State_ConnectionTest { + string key; //@key + long iteration; +}; + +typedef sequence State_ConnectionTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc new file mode 100644 index 00000000000..94f34e28e7f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc @@ -0,0 +1,76 @@ +// $Id$ + +project(DDS_SCT_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=STATE_CONNECTION_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=State_Connection_Test_Base_stub_export.h + + IDL_Files { + State_Connection_Test_Base.idl + } +} + +project(DDS_SCT_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_SCT_Base_idl_gen + ndds_ts_flags += -corba State_Connection_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + State_Connection_Test_Base.idl + } +} + +project(DDS_SCT_Base_NDDS_TS) : nddslib, taolib { + after += DDS_SCT_Base_ndds_ts_gen DDS_SCT_Base_stub + libs += DDS_SCT_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_SCT_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + State_Connection_Test_Base.cxx + State_Connection_Test_BasePlugin.cxx + State_Connection_Test_BaseSupport.cxx + } + + Header_Files { + State_Connection_Test_Base.h + State_Connection_Test_BasePlugin.h + State_Connection_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_SCT_Base_stub) : ccm_stub { + after += DDS_SCT_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_SCT_Base_stub + dynamicflags = STATE_CONNECTION_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_BaseC.cpp + } + + Header_Files { + State_Connection_Test_BaseC.h + State_Connection_Test_Base_stub_export.h + } + + Inline_Files { + State_Connection_Test_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl new file mode 100644 index 00000000000..5ce00c511ab --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file State_Connection_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef KEYED_TEST_CONNECTOR_IDL_ +#define KEYED_TEST_CONNECTOR_IDL_ + +#include +#include "Base/State_Connection_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::State_ConnectionTest, ::State_ConnectionTest_Seq, State_ConnectionTest) + +module State_Connection_Test +{ + connector State_Connection_Test_Connector : ::CCM_DDS::State_ConnectionTest::DDS_State + { + }; +}; + +#endif /* State_Connection_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc new file mode 100644 index 00000000000..69b403ed561 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SCT_Base -l .. -o ../lib -u DDS State_Connection_Test_Connector" + +project(DDS_SCT_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=STATE_CONNECTION_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=State_Connection_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=STATE_CONNECTION_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=State_Connection_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=STATE_CONNECTION_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=State_Connection_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=STATE_CONNECTION_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=State_Connection_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + State_Connection_Test_Connector.idl + } +} + +project(DDS_SCT_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_SCT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=STATE_CONNECTION_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=State_Connection_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + State_Connection_Test_ConnectorE.idl + } +} + +project(DDS_SCT_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SCT_Connector_lem_gen DDS_SCT_Connector_stub DDS_SCT_Base_stub DDS4CCM_lem_stub + libs += DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SCT_Connector_lem_stub + dynamicflags = STATE_CONNECTION_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_ConnectorEC.cpp + } + + Header_Files { + State_Connection_Test_ConnectorEC.h + State_Connection_Test_Connector_lem_stub_export.h + } + + Inline_Files { + State_Connection_Test_ConnectorEC.inl + } +} + +project(DDS_SCT_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_SCT_Connector_idl_gen DDS_SCT_Base_stub + libs += DDS_SCT_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_SCT_Connector_stub + dynamicflags = STATE_CONNECTION_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_ConnectorC.cpp + } + + Header_Files { + State_Connection_Test_ConnectorC.h + State_Connection_Test_Connector_stub_export.h + } + + Inline_Files { + State_Connection_Test_ConnectorC.inl + } +} + +project(DDS_SCT_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_SCT_Connector_lem_stub DDS_SCT_Connector_stub DDS4CCM_lem_stub DDS_SCT_Base_NDDS_TS + sharedname = DDS_SCT_Connector_exec + libs += DDS_SCT_Connector_stub DDS_SCT_Connector_lem_stub DDS_SCT_Base_stub DDS4CCM_lem_stub DDS_SCT_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = STATE_CONNECTION_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_Connector_exec.cpp + } + + Header_Files { + State_Connection_Test_Connector_exec.h + State_Connection_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SCT_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_SCT_Connector_lem_stub DDS_SCT_Connector_exec DDS_SCT_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_SCT_Connector_svnt + libs += DDS_SCT_Connector_stub \ + DDS_SCT_Connector_lem_stub \ + DDS_SCT_Base_stub \ + DDS_SCT_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = STATE_CONNECTION_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_ConnectorS.cpp + State_Connection_Test_Connector_svnt.cpp + } + + Header_Files { + State_Connection_Test_ConnectorS.h + State_Connection_Test_Connector_svnt.h + State_Connection_Test_Connector_svnt_export.h + } + + Inline_Files { + State_Connection_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.cpp new file mode 100644 index 00000000000..59e0fba271c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "State_Connection_Test_Connector_exec.h" + +namespace CIAO_State_Connection_Test_State_Connection_Test_Connector_Impl +{ + State_Connection_Test_Connector_exec_i::State_Connection_Test_Connector_exec_i () + : DDS_State_Connector_T () + { + } + + State_Connection_Test_Connector_exec_i::~State_Connection_Test_Connector_exec_i (void) + { + } + + extern "C" STATE_CONNECTION_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_State_Connection_Test_State_Connection_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + State_Connection_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.h new file mode 100644 index 00000000000..3d95ba70bd3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector_exec.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// $Id$ + +#ifndef STATE_CONNECTION_TEST_CONNECTOR_EXEC_H_ +#define STATE_CONNECTION_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "State_Connection_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "State_Connection_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_State_Connector_T.h" + +#include "Base/State_Connection_Test_BaseSupport.h" + +namespace CIAO_State_Connection_Test_State_Connection_Test_Connector_Impl +{ + + // @from use of State_ConnectionTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + State_ConnectionTest, + State_ConnectionTestSeq, + State_ConnectionTestTypeSupport, + State_ConnectionTestDataWriter, + State_ConnectionTestDataReader > State_ConnectionTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_State_Connection_Test_State_Connection_Test_Connector_Impl::State_Connection_Test_Connector_Exec, + State_ConnectionTest_Seq, + ::CCM_DDS::State_ConnectionTest::CCM_Writer, + ::CCM_DDS::State_ConnectionTest::CCM_Updater, + ::CCM_DDS::State_ConnectionTest::CCM_Getter, + ::CCM_DDS::State_ConnectionTest::CCM_Reader, + ::State_Connection_Test::CCM_State_Connection_Test_Connector_Context, + ::CCM_DDS::State_ConnectionTest::Listener, + ::CCM_DDS::State_ConnectionTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> State_ConnectionTest_Connector_Traits; + + class STATE_CONNECTION_CONNECTOR_EXEC_Export State_Connection_Test_Connector_exec_i : + public DDS_State_Connector_T + { + public: + State_Connection_Test_Connector_exec_i (); + virtual ~State_Connection_Test_Connector_exec_i (void); + }; + + extern "C" STATE_CONNECTION_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_State_Connection_Test_State_Connection_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README new file mode 100644 index 00000000000..9be82d2e260 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README @@ -0,0 +1,35 @@ +# $Id$ + +This test tests all possible connections between +a Sender and a DDS State connector and a Receiver and a +DDS State connector. +The Sender requests the following connections: + * An updater + * A DDS updater + +The Receiver expects the following listeners to be created: + * A DataListenerControl for the DDS_Listen port + * A 'normal' listener for the DDS_Listen port + * A StateListener for the DDS_StateListen port + * A PortStatusListener for the DDS_Get port + * A PortStatusListener for the DDS_Read port + * A PortStatusListener for the DDS_Listen port + * A PortStatusListener for the DDS_StateLisen port + +The Receiver requests the following connections: + * A reader for the DDS_Read port + * A DDS reader for the DDS_Read port + * A reader for the DDS_Get port + * A getter for the DDS_Get port + * A DDS reader for the DDS_Read port + * A reader for the DDS_Listen port + * A DataControlListener for the DDS_Listen port + * A DDS reader for the DDS_Listen port + * A reader for the DDS_StateListen port + * A StateListener for the DDS_StateListen port + * A DDS reader for the DDS_StateListen port + +This test tests every single connection and reports an error when +a connections couldn't be esthablished. + +No actual read/write/listen operations are performed. diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl new file mode 100644 index 00000000000..f2b8f88731c --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/State_Connection_Test_Connector.idl" +#include "Connector/State_Connection_Test_ConnectorE.idl" + +module State_Connection_Test +{ + component Receiver + { + port CCM_DDS::State_ConnectionTest::DDS_Read info_read; + port CCM_DDS::State_ConnectionTest::DDS_Get info_get; + port CCM_DDS::State_ConnectionTest::DDS_Listen info_listen; + port CCM_DDS::State_ConnectionTest::DDS_StateListen info_statelisten; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc new file mode 100644 index 00000000000..b56f86f819b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_SCT_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_SCT_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + State_Connection_Test_Receiver.idl + } +} + +project(DDS_SCT_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_SCT_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + State_Connection_Test_ReceiverE.idl + } +} + +project(DDS_SCT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SCT_Receiver_lem_gen DDS_SCT_Receiver_stub DDS_SCT_Connector_stub DDS_SCT_Base_stub + libs += Receiver_stub DDS_SCT_Connector_stub DDS_SCT_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_ReceiverEC.cpp + } + + Header_Files { + State_Connection_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + State_Connection_Test_ReceiverEC.inl + } +} + +project(DDS_SCT_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_SCT_Receiver_idl_gen DDS_SCT_Connector_stub DDS_SCT_Base_stub DDS_SCT_Connector_lem_gen + libs += DDS_SCT_Connector_stub DDS_SCT_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_ReceiverC.cpp + } + + Header_Files { + State_Connection_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + State_Connection_Test_ReceiverC.inl + } +} + +project(DDS_SCT_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_SCT_Receiver_lem_stub DDS_SCT_Receiver_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_Receiver_exec.cpp + } + + Header_Files { + State_Connection_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SCT_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SCT_Receiver_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_svnt DDS_SCT_Receiver_exec DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_svnt Receiver_exec DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_ReceiverS.cpp + State_Connection_Test_Receiver_svnt.cpp + } + + Header_Files { + State_Connection_Test_ReceiverS.h + State_Connection_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + State_Connection_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..a2de0f623ca --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp @@ -0,0 +1,325 @@ +// -*- C++ -*- +// +// $Id$ + +#include "State_Connection_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_State_Connection_Test_Receiver_Impl +{ + //============================================================ + // Component Executor Implementation Class: Receiver_exec_i + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : //DDS_Read + reader_data_ok_ (false), + reader_dds_entity_ok_ (false), + //DDS_Get + getter_data_ok_ (false), + getter_fresh_data_ok_ (false), + getter_dds_entity_ok_ (false), + //DDS_Listen + listen_data_ok_ (false), + listen_data_control_ok_ (false), + listen_dds_entity_ok_ (false), + //DDS_StateListen + statelisten_data_ok_ (false), + statelisten_data_control_ok_ (false), + statelisten_dds_entity_ok_ (false), + //Provides for DDS_Read + reader_port_status_created_ (false), + //Provides for DDS_Get + getter_port_status_created_ (false), + //Provides for DDS_Listen + listen_data_listener_created_ (false), + listen_port_status_created_ (false), + //Provides for DDS_StateListen + statelisten_data_listener_created_ (false), + statelisten_port_status_created_ (false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_read_status (void) + { + this->reader_port_status_created_ = true; + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + //Provides for DDS_Get + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_get_status (void) + { + this->getter_port_status_created_ = true; + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + //Provides for DDS_Listen + ::CCM_DDS::State_ConnectionTest::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener () + { + this->listen_data_listener_created_ = true; + return ::CCM_DDS::State_ConnectionTest::CCM_Listener::_nil (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + this->listen_port_status_created_ = true; + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + //Provides for DDS_StateListen + ::CCM_DDS::State_ConnectionTest::CCM_StateListener_ptr + Receiver_exec_i::get_info_statelisten_data_listener (void) + { + this->statelisten_data_listener_created_ = true; + return ::CCM_DDS::State_ConnectionTest::CCM_StateListener::_nil (); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_statelisten_status (void) + { + this->statelisten_port_status_created_ = true; + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::State_Connection_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + //DDS_Read + this->reader_data_ = + this->context_->get_connection_info_read_data (); + this->reader_data_ok_ = !CORBA::is_nil (this->reader_data_); + + this->reader_dds_entity_ = + this->context_->get_connection_info_read_dds_entity (); + this->reader_dds_entity_ok_ = !CORBA::is_nil (this->reader_dds_entity_); + + //DDS_Get + this->getter_data_ = + this->context_->get_connection_info_get_data (); + this->getter_data_ok_ = !CORBA::is_nil (this->getter_data_); + this->getter_fresh_data_ = + this->context_->get_connection_info_get_fresh_data (); + this->getter_fresh_data_ok_ = !CORBA::is_nil (this->getter_fresh_data_); + this->getter_dds_entity_ = + this->context_->get_connection_info_get_dds_entity (); + this->getter_dds_entity_ok_ = !CORBA::is_nil (this->getter_dds_entity_); + + //DDS_Listen + this->listen_data_ = + this->context_->get_connection_info_listen_data (); + this->listen_data_ok_ = !CORBA::is_nil (this->listen_data_); + this->listen_data_control_ = + this->context_->get_connection_info_listen_data_control (); + this->listen_data_control_ok_ = !CORBA::is_nil (this->listen_data_control_); + this->listen_dds_entity_ = + this->context_->get_connection_info_listen_dds_entity (); + this->listen_dds_entity_ok_ = !CORBA::is_nil (this->listen_dds_entity_); + + //DDS_StateListen + this->statelisten_data_ = + this->context_->get_connection_info_statelisten_data (); + this->statelisten_data_ok_ = !CORBA::is_nil (this->statelisten_data_); + this->statelisten_data_control_ = + this->context_->get_connection_info_statelisten_data_control (); + this->statelisten_data_control_ok_ = !CORBA::is_nil (this->statelisten_data_control_); + this->statelisten_dds_entity_ = + this->context_->get_connection_info_statelisten_dds_entity (); + this->statelisten_dds_entity_ok_ = !CORBA::is_nil (this->statelisten_dds_entity_); + } + + void + Receiver_exec_i::ccm_activate (void) + { + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + //DDS_Read + if (!this->reader_data_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Read failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Read passed\n"))); + } + if (!this->reader_dds_entity_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Read failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Read passed\n"))); + } + //DDS_Get + if (!this->getter_data_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Get failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Get passed\n"))); + } + + if (!this->getter_fresh_data_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get getter of DDS_Get failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get getter of DDS_Get passed\n"))); + } + if (!this->getter_dds_entity_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Get failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Get passed\n"))); + } + //DDS_Listen + if (!this->listen_data_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Listen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Listen passed\n"))); + } + if (!this->listen_data_control_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get data control of DDS_Listen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get data control of DDS_Listen passed\n"))); + } + if (!this->listen_dds_entity_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Listen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Listen passed\n"))); + } + //DDS_StateListen + if (!this->statelisten_data_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_StateListen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_StateListen passed\n"))); + } + if (!this->statelisten_data_control_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get data control of DDS_StateListen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get data control of DDS_StateListen passed\n"))); + } + if (!this->statelisten_dds_entity_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_StateListen failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_StateListen passed\n"))); + } + //Provides for DDS_Read + if (!this->reader_port_status_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Read not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Read was created\n"))); + } + //Provides for DDS_Get + if (!this->getter_port_status_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Get not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Get was created\n"))); + } + //Provides for DDS_Listen + if (!this->listen_data_listener_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : DataListener of DDS_Listen not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : DataListener of DDS_Listen was created\n"))); + } + if (!this->listen_port_status_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Listen not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Listen was created\n"))); + } + //Provides for DDS_StateListen + if (!this->statelisten_data_listener_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : DataListener of DDS_StateListen not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : DataListener of DDS_StateListen was created\n"))); + } + if (!this->statelisten_port_status_created_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_StateListen not created\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_StateListen was created\n"))); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_State_Connection_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h new file mode 100644 index 00000000000..55c7cc0ec50 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h @@ -0,0 +1,119 @@ +// -*- C++ -*- +// $Id$ + +#ifndef STATE_CONNECTION_RECEIVER_EXEC_H_ +#define STATE_CONNECTION_RECEIVER_EXEC_H_ + +#include "State_Connection_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_State_Connection_Test_Receiver_Impl +{ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + //Provides for DDS_Read + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_read_status (void); + //Provides for DDS_Get + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_get_status (void); + //Provides for DDS_Listen + virtual ::CCM_DDS::State_ConnectionTest::CCM_Listener_ptr + get_info_listen_data_listener (); + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + //Provides for DDS_StateListen + virtual ::CCM_DDS::State_ConnectionTest::CCM_StateListener_ptr + get_info_statelisten_data_listener (void); + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_statelisten_status (void); + + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::State_Connection_Test::CCM_Receiver_Context_var context_; + //DDS_Read + ::CCM_DDS::State_ConnectionTest::Reader_var reader_data_; + ::DDS::DataReader_var reader_dds_entity_; + + //DDS_Get + ::CCM_DDS::State_ConnectionTest::Reader_var getter_data_; + ::CCM_DDS::State_ConnectionTest::Getter_var getter_fresh_data_; + ::DDS::DataReader_var getter_dds_entity_; + + //DDS_Listen + ::CCM_DDS::State_ConnectionTest::Reader_var listen_data_; + ::CCM_DDS::DataListenerControl_var listen_data_control_; + ::DDS::DataReader_var listen_dds_entity_; + + //DDS_StateListen + ::CCM_DDS::State_ConnectionTest::Reader_var statelisten_data_; + ::CCM_DDS::StateListenerControl_var statelisten_data_control_; + ::DDS::DataReader_var statelisten_dds_entity_; + + //DDS_Read + bool reader_data_ok_; + bool reader_dds_entity_ok_; + + //DDS_Get + bool getter_data_ok_; + bool getter_fresh_data_ok_; + bool getter_dds_entity_ok_; + + //DDS_Listen + bool listen_data_ok_; + bool listen_data_control_ok_; + bool listen_dds_entity_ok_; + + //DDS_StateListen + bool statelisten_data_ok_; + bool statelisten_data_control_ok_; + bool statelisten_dds_entity_ok_; + + //Provides for DDS_Read + bool reader_port_status_created_; + + //Provides for DDS_Get + bool getter_port_status_created_; + + //Provides for DDS_Listen + bool listen_data_listener_created_; + bool listen_port_status_created_; + + //Provides for DDS_StateListen + bool statelisten_data_listener_created_; + bool statelisten_port_status_created_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_State_Connection_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl new file mode 100644 index 00000000000..b430505b528 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_STATE_CONNECTION_TEST_SENDER_IDL +#define DDS_STATE_CONNECTION_TEST_SENDER_IDL + +#include "Connector/State_Connection_Test_Connector.idl" +#include "Connector/State_Connection_Test_ConnectorE.idl" + +module State_Connection_Test +{ + component Sender + { + port CCM_DDS::State_ConnectionTest::DDS_Update info_update; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc new file mode 100644 index 00000000000..b09fdec872b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_SCT_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_SCT_Sender_idl_gen) : componentidldefaults { + after += DDS_SCT_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + State_Connection_Test_Sender.idl + } +} + +project(DDS_SCT_Sender_lem_gen) : ciaoidldefaults { + after += DDS_SCT_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + State_Connection_Test_SenderE.idl + } +} + +project(DDS_SCT_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_SCT_Sender_lem_gen DDS_SCT_Sender_stub DDS_SCT_Base_stub + libs += DDS_SCT_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_SenderEC.cpp + } + + Header_Files { + State_Connection_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + State_Connection_Test_SenderEC.inl + } +} + +project(DDS_SCT_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_SCT_Sender_idl_gen DDS_SCT_Base_stub DDS_SCT_Connector_stub + libs += DDS_SCT_Base_stub DDS_SCT_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_SenderC.cpp + } + + Header_Files { + State_Connection_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + State_Connection_Test_SenderC.inl + } +} + +project(DDS_SCT_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_SCT_Sender_lem_stub DDS_SCT_Sender_stub DDS_SCT_Connector_lem_stub DDS_SCT_Connector_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_lem_stub DDS_SCT_Connector_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_Sender_exec.cpp + } + + Header_Files { + State_Connection_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_SCT_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_SCT_Base_stub DDS_SCT_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SCT_Connector_stub DDS_SCT_Connector_svnt DDS_SCT_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_SCT_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SCT_Connector_stub DDS_SCT_Connector_svnt DDS_SCT_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + State_Connection_Test_SenderS.cpp + State_Connection_Test_Sender_svnt.cpp + } + + Header_Files { + State_Connection_Test_SenderS.h + State_Connection_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + State_Connection_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp new file mode 100644 index 00000000000..d2d1d51e16b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp @@ -0,0 +1,100 @@ +// -*- C++ -*- +// $Id$ + +#include "State_Connection_Test_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_State_Connection_Test_Sender_Impl +{ + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : updater_ok_ (false), + updater_dds_datawriter_ok_ (false) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::State_Connection_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->updater_ = + this->context_->get_connection_info_update_data (); + if (!CORBA::is_nil (this->updater_)) + { + this->updater_ok_ = true; + } + this->updater_dds_datawriter_ = + this->context_->get_connection_info_update_dds_entity (); + if (!CORBA::is_nil (this->updater_dds_datawriter_)) + { + this->updater_dds_datawriter_ok_ = true; + } + } + + void + Sender_exec_i::ccm_activate (void) + { + } + + void + Sender_exec_i::ccm_passivate (void) + { + } + + void + Sender_exec_i::ccm_remove (void) + { + if (!this->updater_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : get updater failed\n"))); + } + else + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Sender : Get updater passed\n"))); + } + if (!this->updater_dds_datawriter_ok_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : Get dds writer for DDS_Updater failed\n"))); + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender : Get dds writer for DDS_Updater passed\n"))); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_State_Connection_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h new file mode 100644 index 00000000000..3835b874c21 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +// $Id$ + +#ifndef STATE_CONNECTION_SENDER_EXEC_H_ +#define STATE_CONNECTION_SENDER_EXEC_H_ + + +#include "State_Connection_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_State_Connection_Test_Sender_Impl +{ + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::State_Connection_Test::CCM_Sender_Context_var context_; + CCM_DDS::State_ConnectionTest::Updater_var updater_; + DDS::DataWriter_var updater_dds_datawriter_; + + bool updater_ok_; + bool updater_dds_datawriter_ok_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_State_Connection_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp new file mode 100644 index 00000000000..a601edd7010 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp @@ -0,0 +1,644 @@ + + + State_Connection_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_State_Connection_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_State_Connection_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + State_Connection_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_State_Connection_Test_State_Connection_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_State_Connection_Test_State_Connection_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + State_Connection_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + State_Connection_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_State_Connection_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_State_Connection_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + State_Connection_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + State_Connection_Test + + + + + + State_Connection_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + State_Connection_Test + + + + + + SenderComponent + SenderNode + + + + + + + + update_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_update_data + false + SimplexReceptacle + + + + observable_data + true + Facet + + + + + update_dds_entity + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_update_dds_entity + false + SimplexReceptacle + + + + observable_dds_entity + true + Facet + + + + + + + + get_data_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_data + false + SimplexReceptacle + + + + pull_observer_data + true + Facet + + + + + get_fresh_data_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_fresh_data + false + SimplexReceptacle + + + + pull_observer_fresh_data + true + Facet + + + + + get_dds_entity_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_dds_entity + false + SimplexReceptacle + + + + pull_observer_dds_entity + true + Facet + + + + + + get_status_mirrorport + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_get_status + true + Facet + + + + pull_observer_status + false + SimplexReceptacle + + + + + + + read_data_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_read_data + false + SimplexReceptacle + + + + passive_observer_data + true + Facet + + + + + read_dds_entity_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_read_dds_entity + false + SimplexReceptacle + + + + passive_observer_dds_entity + true + Facet + + + + + + read_status_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_read_status + true + Facet + + + + passive_observer_status + false + SimplexReceptacle + + + + + + + listen_data_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data + false + SimplexReceptacle + + + + push_observer_data + true + Facet + + + + + listen_data_control_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_control + false + SimplexReceptacle + + + + push_observer_data_control + true + Facet + + + + + listen_dds_entity_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_dds_entity + false + SimplexReceptacle + + + + push_observer_dds_entity + true + Facet + + + + + + listen_data_listener_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_data_listener + true + Facet + + + + push_observer_data_listener + false + SimplexReceptacle + + + + + listen_status_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_listen_status + true + Facet + + + + push_observer_status + false + SimplexReceptacle + + + + + + + statelisten_data_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_statelisten_data + false + SimplexReceptacle + + + + push_state_observer_data + true + Facet + + + + + statelisten_data_control_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_statelisten_data_control + false + SimplexReceptacle + + + + push_state_observer_data_control + true + Facet + + + + + statelisten_dds_entity_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_statelisten_dds_entity + false + SimplexReceptacle + + + + push_state_observer_dds_entity + true + Facet + + + + + + statelisten_data_listener_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_statelisten_data_listener + true + Facet + + + + push_state_observer_data_listener + false + SimplexReceptacle + + + + + statelisten_status_port + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_statelisten_status + true + Facet + + + + push_state_observer_status + false + SimplexReceptacle + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + State_Connection_Test_Connector_exec + + + DDS_SCT_Connector_exec + + + State_Connection_Test_Connector_svnt + + + DDS_SCT_Connector_svnt + + + State_Connection_Test_Connector_stub + + + DDS_SCT_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl new file mode 100755 index 00000000000..dc0c34941c6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl new file mode 100644 index 00000000000..bd796050ab3 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Unkeyed_Test_Base.idl + * @author Marcel Smit + */ + +#ifndef UNKEYED_TEST_BASE_IDL +#define UNKEYED_TEST_BASE_IDL + +struct UnkeyedTest { + string key; + long iteration; +}; + +typedef sequence UnkeyedTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc new file mode 100644 index 00000000000..19743beb2d7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Unkeyed_Test_Base" + +project(DDS_Unkeyed_Test_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=UNKEYED_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=Unkeyed_Test_Base_stub_export.h + + IDL_Files { + Unkeyed_Test_Base.idl + } +} + +project(DDS_Unkeyed_Test_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Unkeyed_Test_Base_idl_gen + ndds_ts_flags += -corba Unkeyed_Test_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Unkeyed_Test_Base.idl + } +} + +project(DDS_Unkeyed_Test_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Unkeyed_Test_Base_ndds_ts_gen DDS_Unkeyed_Test_Base_stub + libs += DDS_Unkeyed_Test_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Unkeyed_Test_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Unkeyed_Test_Base.cxx + Unkeyed_Test_BasePlugin.cxx + Unkeyed_Test_BaseSupport.cxx + } + + Header_Files { + Unkeyed_Test_Base.h + Unkeyed_Test_BasePlugin.h + Unkeyed_Test_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Unkeyed_Test_Base_stub) : ccm_stub { + after += DDS_Unkeyed_Test_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_Unkeyed_Test_Base_stub + dynamicflags = UNKEYED_TEST_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_BaseC.cpp + } + + Header_Files { + Unkeyed_Test_BaseC.h + Unkeyed_Test_Base_stub_export.h + } + + Inline_Files { + Unkeyed_Test_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl new file mode 100644 index 00000000000..aaa2650b1ca --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Unkeyed_Test_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef UNKEYED_TEST_CONNECTOR_IDL_ +#define UNKEYED_TEST_CONNECTOR_IDL_ + +#include +#include "Base/Unkeyed_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::UnkeyedTest, ::UnkeyedTest_Seq, UnkeyedTest) + +module Unkeyed_Test +{ + connector Unkeyed_Test_Connector : ::CCM_DDS::UnkeyedTest::DDS_Event + { + }; +}; + +#endif /* Unkeyed_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc new file mode 100644 index 00000000000..fa1404e4d57 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Unkeyed_Test_Base -l .. -o ../lib -u DDS Unkeyed_Test_Connector" + +project(DDS_Unkeyed_Test_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=UNKEYED_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Unkeyed_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=UNKEYED_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Unkeyed_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=UNKEYED_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Unkeyed_Test_Connector_svnt_export.h \ + -Wb,exec_export_macro=UNKEYED_TEST_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Unkeyed_Test_Connector_exec_export.h \ + -I .. + + IDL_Files { + Unkeyed_Test_Connector.idl + } +} + +project(DDS_Unkeyed_Test_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_Unkeyed_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=UNKEYED_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Unkeyed_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Unkeyed_Test_ConnectorE.idl + } +} + +project(DDS_Unkeyed_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Unkeyed_Test_Connector_lem_gen DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Unkeyed_Test_Connector_lem_stub + dynamicflags = UNKEYED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_ConnectorEC.cpp + } + + Header_Files { + Unkeyed_Test_ConnectorEC.h + Unkeyed_Test_Connector_lem_stub_export.h + } + + Inline_Files { + Unkeyed_Test_ConnectorEC.inl + } +} + +project(DDS_Unkeyed_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Unkeyed_Test_Connector_idl_gen DDS_Unkeyed_Test_Base_stub + libs += DDS_Unkeyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Unkeyed_Test_Connector_stub + dynamicflags = UNKEYED_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_ConnectorC.cpp + } + + Header_Files { + Unkeyed_Test_ConnectorC.h + Unkeyed_Test_Connector_stub_export.h + } + + Inline_Files { + Unkeyed_Test_ConnectorC.inl + } +} + +project(DDS_Unkeyed_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub DDS_Unkeyed_Test_Base_NDDS_TS + sharedname = DDS_Unkeyed_Test_Connector_exec + libs += DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Base_stub DDS4CCM_lem_stub DDS_Unkeyed_Test_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = UNKEYED_TEST_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_Connector_exec.cpp + } + + Header_Files { + Unkeyed_Test_Connector_exec.h + Unkeyed_Test_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Unkeyed_Test_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_exec DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Unkeyed_Test_Connector_svnt + libs += DDS_Unkeyed_Test_Connector_stub \ + DDS_Unkeyed_Test_Connector_lem_stub \ + DDS_Unkeyed_Test_Base_stub \ + DDS_Unkeyed_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = UNKEYED_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_ConnectorS.cpp + Unkeyed_Test_Connector_svnt.cpp + } + + Header_Files { + Unkeyed_Test_ConnectorS.h + Unkeyed_Test_Connector_svnt.h + Unkeyed_Test_Connector_svnt_export.h + } + + Inline_Files { + Unkeyed_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.cpp new file mode 100644 index 00000000000..76143802475 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Unkeyed_Test_Connector_exec.h" + +namespace CIAO_Unkeyed_Test_Unkeyed_Test_Connector_Impl +{ + Unkeyed_Test_Connector_exec_i::Unkeyed_Test_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Unkeyed_Test_Connector_exec_i::~Unkeyed_Test_Connector_exec_i (void) + { + } + + extern "C" UNKEYED_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Unkeyed_Test_Unkeyed_Test_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Unkeyed_Test_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.h new file mode 100644 index 00000000000..5357bfb56cc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector_exec.h @@ -0,0 +1,60 @@ +// -*- C++ -*- +// $Id$ + +#ifndef UNKEYED_TEST_CONNECTOR_EXEC_H_ +#define UNKEYED_TEST_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Unkeyed_Test_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Unkeyed_Test_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Unkeyed_Test_BaseSupport.h" + +namespace CIAO_Unkeyed_Test_Unkeyed_Test_Connector_Impl +{ + // @from use of UnkeyedTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + UnkeyedTest, + UnkeyedTestSeq, + UnkeyedTestTypeSupport, + UnkeyedTestDataWriter, + UnkeyedTestDataReader > UnkeyedTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Unkeyed_Test_Unkeyed_Test_Connector_Impl::Unkeyed_Test_Connector_Exec, + UnkeyedTest_Seq, + ::CCM_DDS::UnkeyedTest::CCM_Writer, + ::CCM_DDS::UnkeyedTest::CCM_Updater, + ::CCM_DDS::UnkeyedTest::CCM_Getter, + ::CCM_DDS::UnkeyedTest::CCM_Reader, + ::Unkeyed_Test::CCM_Unkeyed_Test_Connector_Context, + ::CCM_DDS::UnkeyedTest::Listener, + ::CCM_DDS::UnkeyedTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> UnkeyedTest_Connector_Traits; + + class UNKEYED_TEST_CONNECTOR_EXEC_Export Unkeyed_Test_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Unkeyed_Test_Connector_exec_i (void); + virtual ~Unkeyed_Test_Connector_exec_i (void); + }; + + extern "C" UNKEYED_TEST_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Unkeyed_Test_Unkeyed_Test_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README new file mode 100644 index 00000000000..c7b52e154a0 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README @@ -0,0 +1,6 @@ +# $Id$ + +UnkeyedSamples consists of a Sender and a Receiver. +The Sender writes samples unkeyed; the Receiver should +receive the same number of samples. An error is printed +when this isn't the case. \ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl new file mode 100644 index 00000000000..4f426ea139d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Unkeyed_Test_Connector.idl" +#include "Connector/Unkeyed_Test_ConnectorE.idl" + +module Unkeyed_Test +{ + component Receiver + { + port CCM_DDS::UnkeyedTest::DDS_Listen info_out; + provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc new file mode 100644 index 00000000000..31ed67921a2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_Unkeyed_Test_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_Unkeyed_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Unkeyed_Test_Receiver.idl + } +} + +project(DDS_Unkeyed_Test_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_Unkeyed_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Unkeyed_Test_ReceiverE.idl + } +} + +project(DDS_Unkeyed_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Unkeyed_Test_Receiver_lem_gen DDS_Unkeyed_Test_Receiver_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub + libs += Receiver_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_ReceiverEC.cpp + } + + Header_Files { + Unkeyed_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Unkeyed_Test_ReceiverEC.inl + } +} + +project(DDS_Unkeyed_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Unkeyed_Test_Receiver_idl_gen DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_lem_gen + libs += DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_ReceiverC.cpp + } + + Header_Files { + Unkeyed_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Unkeyed_Test_ReceiverC.inl + } +} + +project(DDS_Unkeyed_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_Unkeyed_Test_Receiver_lem_stub DDS_Unkeyed_Test_Receiver_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_Receiver_exec.cpp + } + + Header_Files { + Unkeyed_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Unkeyed_Test_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Unkeyed_Test_Receiver_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt DDS_Unkeyed_Test_Receiver_exec DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt Receiver_exec DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_ReceiverS.cpp + Unkeyed_Test_Receiver_svnt.cpp + } + + Header_Files { + Unkeyed_Test_ReceiverS.h + Unkeyed_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Unkeyed_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..9c61e5d48cf --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp @@ -0,0 +1,224 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Unkeyed_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" + +namespace CIAO_Unkeyed_Test_Receiver_Impl +{ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i () + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /* the_topic */, + const DDS::InconsistentTopicStatus & /* status */) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_inconsistent_topic\n"))); + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n"))); + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_sample_rejected\n"))); + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_deadline_missed\n"))); + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n"))); + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr /*the_entity*/, + ::DDS::StatusKind /*status_kind*/) + { + ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ") + ACE_TEXT ("ConnectorStatusListener_exec_i::on_unexpected_status\n"))); + } + + //============================================================ + // Facet Executor Implementation Class: UnkeyedTest_Listener_exec_i + //============================================================ + + UnkeyedTest_Listener_exec_i::UnkeyedTest_Listener_exec_i (Atomic_ULong &received) + : received_ (received) + { + } + + UnkeyedTest_Listener_exec_i::~UnkeyedTest_Listener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::UnkeyedTest_Listener + + void + UnkeyedTest_Listener_exec_i::on_one_data ( + const UnkeyedTest & an_instance , + const ::CCM_DDS::ReadInfo & info) + { + ++this->received_; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("UnkeyedTest_Listener: ") + ACE_TEXT ("received keyed_test_info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.iteration)); + if (info.instance_handle.isValid) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: UnkeyedTest_Listener::on_one_data: ") + ACE_TEXT ("received instance handle should be invalid ") + ACE_TEXT ("for unkeyed data ") + ACE_TEXT ("key <%C> - iteration <%u>\n"), + an_instance.key.in (), + an_instance.iteration)); + } + if (info.source_timestamp.sec == 0 && + info.source_timestamp.nanosec == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: UnkeyedTest_Listener::on_one_data: " + "source timestamp seems to be invalid (nil) " + "key <%C> - iteration <%d>\n", + an_instance.key.in (), + an_instance.iteration)); + } + } + + void + UnkeyedTest_Listener_exec_i::on_many_data ( + const UnkeyedTest_Seq & /* an_instance */, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iUnkeyedTest_Listener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : iterations_ (10), + received_ (0) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + // Port operations. + ::CCM_DDS::UnkeyedTest::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new UnkeyedTest RAW listener\n"))); + return new UnkeyedTest_Listener_exec_i (this->received_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + return 0; + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_out_connector_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new Connector Status Listener\n"))); + return new ConnectorStatusListener_exec_i (); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Unkeyed_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + ACE_DEBUG ((LM_INFO, "Receiver_exec_i summary: received <%u>\n", + this->received_.value ())); + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Unkeyed_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h new file mode 100644 index 00000000000..6a3154f7491 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h @@ -0,0 +1,118 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Unkeyed_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_Unkeyed_Test_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_ULong; + + class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual void + on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual void + on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual void + on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual void + on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual void + on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + }; + + class RECEIVER_EXEC_Export UnkeyedTest_Listener_exec_i + : public virtual ::CCM_DDS::UnkeyedTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + UnkeyedTest_Listener_exec_i (Atomic_ULong &); + virtual ~UnkeyedTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const UnkeyedTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const UnkeyedTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_; + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Component attributes. + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + // Port operations. + virtual ::CCM_DDS::UnkeyedTest::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_out_connector_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Unkeyed_Test::CCM_Receiver_Context_var context_; + ::CCM_DDS::UnkeyedTest::Reader_var reader_; + ::CCM_DDS::UnkeyedTest::Getter_var getter_; + + CORBA::UShort iterations_; + Atomic_ULong received_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Unkeyed_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl new file mode 100644 index 00000000000..5dd874dbb59 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_KEYED_TEST_SENDER_IDL +#define DDS_KEYED_TEST_SENDER_IDL + +#include "Connector/Unkeyed_Test_Connector.idl" +#include "Connector/Unkeyed_Test_ConnectorE.idl" + +module Unkeyed_Test +{ + component Sender + { + port CCM_DDS::UnkeyedTest::DDS_Write info_write; + attribute unsigned short rate; + attribute unsigned short iterations; + attribute unsigned short keys; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc new file mode 100644 index 00000000000..44239eb56dc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Unkeyed_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Unkeyed_Test_Sender_idl_gen) : componentidldefaults { + after += DDS_Unkeyed_Test_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Unkeyed_Test_Sender.idl + } +} + +project(DDS_Unkeyed_Test_Sender_lem_gen) : ciaoidldefaults { + after += DDS_Unkeyed_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Unkeyed_Test_SenderE.idl + } +} + +project(DDS_Unkeyed_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Unkeyed_Test_Sender_lem_gen DDS_Unkeyed_Test_Sender_stub DDS_Unkeyed_Test_Base_stub + libs += DDS_Unkeyed_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_SenderEC.cpp + } + + Header_Files { + Unkeyed_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Unkeyed_Test_SenderEC.inl + } +} + +project(DDS_Unkeyed_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Unkeyed_Test_Sender_idl_gen DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub + libs += DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_SenderC.cpp + } + + Header_Files { + Unkeyed_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Unkeyed_Test_SenderC.inl + } +} + +project(DDS_Unkeyed_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Unkeyed_Test_Sender_lem_stub DDS_Unkeyed_Test_Sender_stub DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_Sender_exec.cpp + } + + Header_Files { + Unkeyed_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Unkeyed_Test_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt DDS_Unkeyed_Test_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_Unkeyed_Test_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt DDS_Unkeyed_Test_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Unkeyed_Test_SenderS.cpp + Unkeyed_Test_Sender_svnt.cpp + } + + Header_Files { + Unkeyed_Test_SenderS.h + Unkeyed_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Unkeyed_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp new file mode 100644 index 00000000000..925aaf69252 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp @@ -0,0 +1,214 @@ +// -*- C++ -*- +// $Id$ + +#include "Unkeyed_Test_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_Unkeyed_Test_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : rate_ (1), + iterations_ (10), + keys_ (5) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + + void + Sender_exec_i::tick () + { + if (this->last_key != this->ktests_.end ()) + { + try + { + ++this->last_key->second->iteration; + this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"), + this->last_key->first.c_str (), + this->last_key->second->iteration)); + } + catch (const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Key info for <%C> not updated: <%C> didn't exist.\n"), + this->last_key->first.c_str (), this->last_key->first.c_str ())); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error while updating key info for <%C>.\n"), + this->last_key->first.c_str ())); + } + ++this->last_key; + } + else + { + //onto the next iteration + this->last_key = this->ktests_.begin (); + while (this->last_key != this->ktests_.end ()) + { + if (this->last_key->second->iteration == this->iterations_) + { + //next key + ++this->last_key; + } + else + { + break; + } + } + } + } + + void + Sender_exec_i::start (void) + { + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + ::CORBA::UShort + Sender_exec_i::rate (void) + { + return this->rate_; + } + + void + Sender_exec_i::rate (::CORBA::UShort rate) + { + this->rate_ = rate; + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Unkeyed_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_write_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + this->start (); + + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + UnkeyedTest *new_key = new UnkeyedTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 0; + + this->ktests_[key] = new_key; + } + this->last_key = this->ktests_.begin (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Unkeyed_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h new file mode 100644 index 00000000000..fb9d5a9bab8 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h @@ -0,0 +1,90 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Unkeyed_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_Unkeyed_Test_Sender_Impl +{ + class Sender_exec_i; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort rate (void); + + virtual void rate (::CORBA::UShort rate); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void tick (); + + private: + void start (void); + void stop (void); + + CCM_DDS::UnkeyedTest::Writer_var writer_; + + pulse_Generator * ticker_; + ::Unkeyed_Test::CCM_Sender_Context_var context_; + CORBA::UShort rate_; + CORBA::UShort iterations_; + CORBA::UShort keys_; + + TAO_SYNCH_MUTEX mutex_; + typedef std::map Unkeyed_Test_Table; + Unkeyed_Test_Table ktests_; + Unkeyed_Test_Table::iterator last_key; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Unkeyed_Test_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp new file mode 100644 index 00000000000..a8886179aec --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp @@ -0,0 +1,393 @@ + + + Unkeyed_Test_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Unkeyed_Test_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Unkeyed_Test_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Unkeyed_Test_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Unkeyed_Test_Unkeyed_Test_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Unkeyed_Test_Unkeyed_Test_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Unkeyed_Test_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Unkeyed_Test_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Unkeyed_Test_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Unkeyed_Test_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + iterations + + + tk_ushort + + + + 30 + + + + + + Unkeyed_Test_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + Unkeyed_Test + + + + + + Unkeyed_Test_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + Unkeyed_Test + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_ushort + + + 1 + + + + + iterations + + + tk_ushort + + + 10 + + + + + keys + + + tk_ushort + + + 3 + + + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + _datacontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + info_out_connector_status_receiver + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Unkeyed_Test_Connector_exec + + + DDS_Unkeyed_Test_Connector_exec + + + Unkeyed_Test_Connector_svnt + + + DDS_Unkeyed_Test_Connector_svnt + + + Unkeyed_Test_Connector_stub + + + DDS_Unkeyed_Test_Connector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl new file mode 100755 index 00000000000..6f82b757a0a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl new file mode 100644 index 00000000000..e7265724b5b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl @@ -0,0 +1,21 @@ +// $Id$ + +/** + * @file Writer_Base.idl + * @author Marcel Smit + */ + +#ifndef WRITER_BASE_IDL +#define WRITER_BASE_IDL + +typedef sequence Octet_Seq; + +struct WriterTest { + string key; + long iteration; + Octet_Seq data; +}; + +typedef sequence WriterTest_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc new file mode 100644 index 00000000000..8d480bcfd0e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Writer_Base" + +project(DDS_UnkeyedWriterBase_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=WRITER_BASE_STUB_Export \ + -Wb,stub_export_include=Writer_Base_stub_export.h + + IDL_Files { + Writer_Base.idl + } +} + +project(DDS_UnkeyedWriterBase_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_UnkeyedWriterBase_idl_gen + ndds_ts_flags += -corba Writer_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Writer_Base.idl + } +} + +project(DDS_UnkeyedWriterBase_NDDS_TS) : nddslib, taolib { + after += DDS_UnkeyedWriterBase_ndds_ts_gen DDS_UnkeyedWriterBase_stub + libs += DDS_UnkeyedWriterBase_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_UnkeyedWriterBase_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Writer_Base.cxx + Writer_BasePlugin.cxx + Writer_BaseSupport.cxx + } + + Header_Files { + Writer_Base.h + Writer_BasePlugin.h + Writer_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_UnkeyedWriterBase_stub) : ccm_stub { + after += DDS_UnkeyedWriterBase_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_UnkeyedWriterBase_stub + dynamicflags = WRITER_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_BaseC.cpp + } + + Header_Files { + Writer_BaseC.h + Writer_Base_stub_export.h + } + + Inline_Files { + Writer_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl new file mode 100644 index 00000000000..fda63cd838b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Writer_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef WRITER_CONNECTOR_IDL_ +#define WRITER_CONNECTOR_IDL_ + +#include +#include "Base/Writer_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::WriterTest, ::WriterTest_Seq, WriterTest) + +module Writer +{ + connector Writer_Connector : ::CCM_DDS::WriterTest::DDS_Event + { + }; +}; + +#endif /* Writer_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc new file mode 100644 index 00000000000..90a14400171 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_UnkeyedWriterBase -l .. -o ../lib -u DDS Writer_Connector" + +project(DDS_UnkeyedWriterConnector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Writer_Connector_stub_export.h \ + -Wb,skel_export_macro=WRITER_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Writer_Connector_svnt_export.h \ + -Wb,svnt_export_macro=WRITER_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Writer_Connector_svnt_export.h \ + -Wb,exec_export_macro=WRITER_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Writer_Connector_exec_export.h \ + -I .. + + IDL_Files { + Writer_Connector.idl + } +} + +project(DDS_UnkeyedWriterConnector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_UnkeyedWriterConnector_idl_gen + idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Writer_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Writer_ConnectorE.idl + } +} + +project(DDS_UnkeyedWriterConnector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_UnkeyedWriterConnector_lem_gen DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub DDS4CCM_lem_stub + libs += DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_UnkeyedWriterConnector_lem_stub + dynamicflags = WRITER_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ConnectorEC.cpp + } + + Header_Files { + Writer_ConnectorEC.h + Writer_Connector_lem_stub_export.h + } + + Inline_Files { + Writer_ConnectorEC.inl + } +} + +project(DDS_UnkeyedWriterConnector_stub) : ccm_stub, dds4ccm_base { + after += DDS_UnkeyedWriterConnector_idl_gen DDS_UnkeyedWriterBase_stub + libs += DDS_UnkeyedWriterBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_UnkeyedWriterConnector_stub + dynamicflags = WRITER_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ConnectorC.cpp + } + + Header_Files { + Writer_ConnectorC.h + Writer_Connector_stub_export.h + } + + Inline_Files { + Writer_ConnectorC.inl + } +} + +project(DDS_UnkeyedWriterConnector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub DDS_UnkeyedWriterBase_NDDS_TS + sharedname = DDS_UnkeyedWriterConnector_exec + libs += DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterBase_stub DDS4CCM_lem_stub DDS_UnkeyedWriterBase_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = WRITER_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_Connector_exec.cpp + } + + Header_Files { + Writer_Connector_exec.h + Writer_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_UnkeyedWriterConnector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_exec DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub + sharedname = DDS_UnkeyedWriterConnector_svnt + libs += DDS_UnkeyedWriterConnector_stub \ + DDS_UnkeyedWriterConnector_lem_stub \ + DDS_UnkeyedWriterBase_stub \ + DDS_UnkeyedWriterConnector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = WRITER_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ConnectorS.cpp + Writer_Connector_svnt.cpp + } + + Header_Files { + Writer_ConnectorS.h + Writer_Connector_svnt.h + Writer_Connector_svnt_export.h + } + + Inline_Files { + Writer_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.cpp new file mode 100644 index 00000000000..81585b43a78 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Writer_Connector_exec.h" + +namespace CIAO_Writer_Writer_Connector_Impl +{ + Writer_Connector_exec_i::Writer_Connector_exec_i (void) + : DDS_Event_Connector_T () + { + } + + Writer_Connector_exec_i::~Writer_Connector_exec_i (void) + { + } + + extern "C" WRITER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Writer_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Writer_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.h new file mode 100644 index 00000000000..05f2d6bee47 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector_exec.h @@ -0,0 +1,60 @@ +// -*- C++ -*- +// $Id$ + +#ifndef WRITER_CONNECTOR_EXEC_H_ +#define WRITER_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Writer_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Writer_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_Event_Connector_T.h" + +#include "Base/Writer_BaseSupport.h" + +namespace CIAO_Writer_Writer_Connector_Impl +{ + // @from use of WriterTest as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + WriterTest, + WriterTestSeq, + WriterTestTypeSupport, + WriterTestDataWriter, + WriterTestDataReader > WriterTest_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Writer_Writer_Connector_Impl::Writer_Connector_Exec, + WriterTest_Seq, + ::CCM_DDS::WriterTest::CCM_Writer, + ::CCM_DDS::WriterTest::CCM_Updater, + ::CCM_DDS::WriterTest::CCM_Getter, + ::CCM_DDS::WriterTest::CCM_Reader, + ::Writer::CCM_Writer_Connector_Context, + ::CCM_DDS::WriterTest::Listener, + ::CCM_DDS::WriterTest::StateListener, + ::CCM_DDS::ConnectorStatusListener> WriterTest_Connector_Traits; + + class WRITER_CONNECTOR_EXEC_Export Writer_Connector_exec_i : + public DDS_Event_Connector_T + { + public: + Writer_Connector_exec_i (void); + virtual ~Writer_Connector_exec_i (void); + }; + + extern "C" WRITER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Writer_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl new file mode 100644 index 00000000000..ab483aef055 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl @@ -0,0 +1,23 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Writer_Connector.idl" +#include "Connector/Writer_ConnectorE.idl" + +module Writer +{ + component Receiver + { + port CCM_DDS::WriterTest::DDS_Listen info_out; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc new file mode 100644 index 00000000000..044252195eb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_UnkeyedWriterReceiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_UnkeyedWriterConnector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Writer_Receiver.idl + } +} + +project(DDS_UnkeyedWriterReceiver_lem_gen) : ciaoidldefaults { + after += DDS_UnkeyedWriterReceiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Writer_ReceiverE.idl + } +} + +project(DDS_UnkeyedWriterReceiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_UnkeyedWriterReceiver_lem_gen DDS_UnkeyedWriterReceiver_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub + libs += Receiver_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ReceiverEC.cpp + } + + Header_Files { + Writer_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Writer_ReceiverEC.inl + } +} + +project(DDS_UnkeyedWriterReceiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_UnkeyedWriterReceiver_idl_gen DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_lem_gen + libs += DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ReceiverC.cpp + } + + Header_Files { + Writer_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Writer_ReceiverC.inl + } +} + +project(DDS_UnkeyedWriterReceiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_UnkeyedWriterReceiver_lem_stub DDS_UnkeyedWriterReceiver_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_Receiver_exec.cpp + } + + Header_Files { + Writer_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_UnkeyedWriterReceiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_UnkeyedWriterReceiver_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt DDS_UnkeyedWriterReceiver_exec DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt Receiver_exec DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_ReceiverS.cpp + Writer_Receiver_svnt.cpp + } + + Header_Files { + Writer_ReceiverS.h + Writer_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Writer_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp new file mode 100644 index 00000000000..2419b9cc3a7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp @@ -0,0 +1,157 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Writer_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" + +namespace CIAO_Writer_Receiver_Impl +{ + //============================================================ + // Facet Executor Implementation Class: WriterTest_Listener_exec_i + //============================================================ + + WriterTest_Listener_exec_i::WriterTest_Listener_exec_i (CORBA::UShort iterations) + : iterations_ (iterations) + { + } + + WriterTest_Listener_exec_i::~WriterTest_Listener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::WriterTest_Listener + + void + WriterTest_Listener_exec_i::on_one_data ( + const WriterTest & an_instance , + const ::CCM_DDS::ReadInfo & /* info */) + { + ACE_DEBUG ((LM_ERROR, ACE_TEXT ("WriterTest_Listener::on_one_data ") + ACE_TEXT ("received writer info for <%C> at %u\n"), + an_instance.key.in (), + an_instance.iteration)); + if (an_instance.iteration > this->iterations_) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: received iteration ") + ACE_TEXT ("greater than expected : ") + ACE_TEXT ("expected <%u> - received <%u>\n"), + an_instance.iteration, this->iterations_)); + } + if (an_instance.iteration == 0) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: received iteration ") + ACE_TEXT ("is zero\n"))); + } + } + + void + WriterTest_Listener_exec_i::on_many_data ( + const WriterTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & /* info */) + { + for (unsigned int i = 0; i < an_instance.length (); ++i) + { + ACE_DEBUG ((LM_ERROR, ACE_TEXT ("WriterTest_Listener::on_many_data ") + ACE_TEXT ("received writer info for <%C> at %u\n"), + an_instance[i].key.in (), + an_instance[i].iteration)); + } + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iKeyedTest_Listener_exec_i (); + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : iterations_ (15) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Port operations. + ::CCM_DDS::WriterTest::CCM_Listener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new WriterTest RAW listener\n"))); + return new WriterTest_Listener_exec_i (this->iterations_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + return 0; + } + + // Operations from Components::SessionComponent. + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Writer::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::DataListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + lc->mode (::CCM_DDS::NOT_ENABLED); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h new file mode 100644 index 00000000000..8f501552a98 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h @@ -0,0 +1,82 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Writer_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_Writer_Receiver_Impl +{ + class RECEIVER_EXEC_Export WriterTest_Listener_exec_i + : public virtual ::CCM_DDS::WriterTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + WriterTest_Listener_exec_i (CORBA::UShort iterations); + virtual ~WriterTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const WriterTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const WriterTest_Seq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + CORBA::UShort iterations_; + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Component attributes. + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + // Port operations. + virtual ::CCM_DDS::WriterTest::CCM_Listener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::Writer::CCM_Receiver_Context_var context_; + CORBA::UShort iterations_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Receiver_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl new file mode 100644 index 00000000000..9d5f6e8f19e --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl @@ -0,0 +1,27 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_KEYED_TEST_SENDER_IDL +#define DDS_KEYED_TEST_SENDER_IDL + +#include "Connector/Writer_Connector.idl" +#include "Connector/Writer_ConnectorE.idl" + +module Writer +{ + component Sender + { + port CCM_DDS::WriterTest::DDS_Write info_write; + attribute unsigned short rate; + attribute unsigned short iterations; + attribute unsigned short keys; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc new file mode 100644 index 00000000000..5795a7a0281 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_UnkeyedWriterBase -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_UnkeyedWriterSender_idl_gen) : componentidldefaults { + after += DDS_UnkeyedWriterConnector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Writer_Sender.idl + } +} + +project(DDS_UnkeyedWriterSender_lem_gen) : ciaoidldefaults { + after += DDS_UnkeyedWriterSender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Writer_SenderE.idl + } +} + +project(DDS_UnkeyedWriterSender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_UnkeyedWriterSender_lem_gen DDS_UnkeyedWriterSender_stub DDS_UnkeyedWriterBase_stub + libs += DDS_UnkeyedWriterBase_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_SenderEC.cpp + } + + Header_Files { + Writer_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Writer_SenderEC.inl + } +} + +project(DDS_UnkeyedWriterSender_stub) : ccm_stub, dds4ccm_base { + after += DDS_UnkeyedWriterSender_idl_gen DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub + libs += DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_SenderC.cpp + } + + Header_Files { + Writer_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Writer_SenderC.inl + } +} + +project(DDS_UnkeyedWriterSender_exec) : ciao_executor, dds4ccm_base { + after += DDS_UnkeyedWriterSender_lem_stub DDS_UnkeyedWriterSender_stub DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_Sender_exec.cpp + } + + Header_Files { + Writer_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_UnkeyedWriterSender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterSender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt DDS_UnkeyedWriterConnector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_UnkeyedWriterBase_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt DDS_UnkeyedWriterConnector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Writer_SenderS.cpp + Writer_Sender_svnt.cpp + } + + Header_Files { + Writer_SenderS.h + Writer_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Writer_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp new file mode 100644 index 00000000000..8a10218545a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp @@ -0,0 +1,334 @@ +// -*- C++ -*- +// $Id$ + +#include "Writer_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_Writer_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + + Sender_exec_i::Sender_exec_i (void) + : rate_ (1), + iterations_ (15), + keys_ (5), + assignment_ (WRITE_UNKEYED) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + void + Sender_exec_i::reset_iterations () + { + for (Writer_Table::iterator i = this->ktests_.begin (); + i != this->ktests_.end (); + ++i) + { + i->second->iteration = 0; + } + } + + void + Sender_exec_i::start_new_assignment (WRITER_ASSIGNMENT assignment) + { + this->last_key = this->ktests_.begin (); + this->assignment_ = assignment; + reset_iterations (); + } + + void + Sender_exec_i::write_unkeyed () + { + if (this->last_key != this->ktests_.end ()) + { + try + { + ++this->last_key->second->iteration; + Octet_Seq_var reply_mesg = new Octet_Seq (1); + reply_mesg->length (1); + this->last_key->second->data = *reply_mesg._retn (); + this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written keyed <%C> - iteration <%d>\n"), + this->last_key->first.c_str (), + this->last_key->second->iteration)); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while updating writer info for <%C>.\n"), + this->last_key->first.c_str ())); + } + ++this->last_key; + } + else + { + //onto the next iteration + this->last_key = this->ktests_.begin (); + while (this->last_key != this->ktests_.end ()) + { + if (this->last_key->second->iteration == this->iterations_) + { + //next key + ++this->last_key; + } + else + { + break; + } + } + if (this->last_key == this->ktests_.end ()) + { + start_new_assignment (WRITE_MULTI); + } + } + } + + void + Sender_exec_i::write_many () + { + CORBA::ULong nr_samples = this->keys_ * this->iterations_; + WriterTest_Seq write_many_no_excep; + write_many_no_excep.length (nr_samples); + //write with no exception + for (CORBA::ULong i = 1; i < nr_samples - 1; ++i) + { + WriterTest new_key; + new_key.key = CORBA::string_dup("KEY_1"); + new_key.iteration = i; + Octet_Seq_var reply_mesg = new Octet_Seq (1); + reply_mesg->length (1); + new_key.data = *reply_mesg._retn (); + write_many_no_excep[i-1] = new_key; + } + try + { + this->writer_->write_many (write_many_no_excep); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("write_many : written <%u> samples\n"), + write_many_no_excep.length ())); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + } + start_new_assignment (TEST_EXCEPTION); + } + + void + Sender_exec_i::test_exception () + { + if (this->last_key != this->ktests_.end ()) + { + try + { + ++this->last_key->second->iteration; + const long length = 100000; + Octet_Seq_var reply_mesg = + new Octet_Seq (length); + reply_mesg->length (length); + this->last_key->second->data = *reply_mesg._retn (); + this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL); + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: No InternalError ") + ACE_TEXT ("caught while writing a large amount of data.\n"))); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::test_exception: ") + ACE_TEXT ("OK: Expected InternalErr received"))); + } + ++this->last_key; + } + else + { + //onto the next iteration + this->last_key = this->ktests_.begin (); + while (this->last_key != this->ktests_.end ()) + { + if (this->last_key->second->iteration == this->iterations_) + { + //next key + ++this->last_key; + } + else + { + break; + } + } + if (this->last_key == this->ktests_.end ()) + { + start_new_assignment (WRITE_NONE); + } + } + } + + void + Sender_exec_i::tick () + { + switch (this->assignment_) + { + case WRITE_UNKEYED: + write_unkeyed (); + break; + case WRITE_MULTI: + write_many (); + break; + case TEST_EXCEPTION: + test_exception (); + break; + default: + break; + } + } + + void + Sender_exec_i::start (void) + { + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (0, usec), + ACE_Time_Value (0, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + ::CORBA::UShort + Sender_exec_i::rate (void) + { + return this->rate_; + } + + void + Sender_exec_i::rate (::CORBA::UShort rate) + { + this->rate_ = rate; + } + + ::CORBA::UShort + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Writer::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->writer_ = this->context_->get_connection_info_write_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + WriterTest *new_key = new WriterTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->iteration = 1; + + this->ktests_[key] = new_key; + } + this->start (); + this->last_key = this->ktests_.begin (); + reset_iterations (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h new file mode 100644 index 00000000000..ead020fedfe --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h @@ -0,0 +1,106 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Writer_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_Writer_Sender_Impl +{ + class Sender_exec_i; + + enum WRITER_ASSIGNMENT { + WRITE_NONE, + WRITE_UNKEYED, + WRITE_MULTI, + TEST_EXCEPTION + }; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CORBA::UShort rate (void); + + virtual void rate (::CORBA::UShort rate); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void tick (); + + private: + void start (void); + void stop (void); + + CCM_DDS::WriterTest::Writer_var writer_; + + pulse_Generator * ticker_; + ::Writer::CCM_Sender_Context_var context_; + CORBA::UShort rate_; + CORBA::UShort iterations_; + CORBA::UShort keys_; + WRITER_ASSIGNMENT assignment_; + + void reset_iterations (); + void start_new_assignment ( + WRITER_ASSIGNMENT assignment); + void write_unkeyed (); + void write_many (); + void test_exception (); + + TAO_SYNCH_MUTEX mutex_; + typedef std::map Writer_Table; + Writer_Table ktests_; + + Writer_Table::iterator last_key; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Writer_Sender_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp new file mode 100644 index 00000000000..88c24d90338 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp @@ -0,0 +1,396 @@ + + + UnkeyedWriter_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Writer_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Writer_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Writer_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Writer_Writer_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Writer_Writer_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Writer_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Writer_Connector_exec + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Writer_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Writer_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + iterations + + + tk_ushort + + + + 10 + + + + + + Writer_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + UnkeyedWriter + + + + + + + Writer_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + UnkeyedWriter + + + + + + + SenderComponent + SenderNode + + + + + rate + + + tk_ushort + + + 15 + + + + + keys + + + tk_ushort + + + 5 + + + + + iterations + + + tk_ushort + + + 10 + + + + + + + _listener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_consumer_data_listener + false + SimplexReceptacle + + + + + + _datacontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_consumer_data_control + true + Facet + + + + + + writer_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_write_data + false + SimplexReceptacle + + + + supplier_data + true + Facet + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Writer_Connector_exec + + + DDS_UnkeyedWriterConnector_exec + + + Writer_Connector_svnt + + + DDS_UnkeyedWriterConnector_svnt + + + Writer_Connector_stub + + + DDS_UnkeyedWriterConnector_stub + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl new file mode 100755 index 00000000000..e8e74b5f9e1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (70); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl new file mode 100644 index 00000000000..907f7b4a885 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl @@ -0,0 +1,18 @@ +// $Id$ + +/** + * @file Updater_Base.idl + * @author Marcel Smit + */ + +#ifndef UPDATER_BASE_IDL +#define UPDATER_BASE_IDL + +struct TestTopic { + string key; //@key + long x; +}; + +typedef sequence TestTopic_Seq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc new file mode 100644 index 00000000000..8b7964b050b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc @@ -0,0 +1,77 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -o ../lib -u DDS -n Updater_Base" + +project(DDS_Updater_Base_idl_gen) : taoidldefaults, anytypecode { + custom_only = 1 + idlflags -= -St -Sa + idlflags += -SS -Gxhst \ + -Wb,stub_export_macro=UPDATER_BASE_STUB_Export \ + -Wb,stub_export_include=Updater_Base_stub_export.h + + IDL_Files { + Updater_Base.idl + } +} + +project(DDS_Updater_Base_ndds_ts_gen) : ndds_ts_defaults { + custom_only = 1 + after += DDS_Updater_Base_idl_gen + ndds_ts_flags += -corba Updater_BaseC.h -orb ACE_TAO1.7 + + NDDSTypeSupport_Files { + Updater_Base.idl + } +} + +project(DDS_Updater_Base_NDDS_TS) : nddslib, taolib { + after += DDS_Updater_Base_ndds_ts_gen DDS_Updater_Base_stub + libs += DDS_Updater_Base_stub + libout = ../lib + libpaths += ../lib + sharedname = DDS_Updater_Base_NDDS_TS + dynamicflags = NDDS_USER_DLL_EXPORT + + verbatim(gnuace, macros) { + override no_hidden_visibility = 1 + } + + Source_Files { + Updater_Base.cxx + Updater_BasePlugin.cxx + Updater_BaseSupport.cxx + } + + Header_Files { + Updater_Base.h + Updater_BasePlugin.h + Updater_BaseSupport.h + } + + Inline_Files { + } +} + +project(DDS_Updater_Base_stub) : ccm_stub { + after += DDS_Updater_Base_idl_gen + libout = ../lib + libpaths += ../lib + sharedname = DDS_Updater_Base_stub + dynamicflags = UPDATER_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_BaseC.cpp + } + + Header_Files { + Updater_BaseC.h + Updater_Base_stub_export.h + } + + Inline_Files { + Updater_BaseC.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl new file mode 100644 index 00000000000..bf55d68a218 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file Updater_Connector.idl + * @author Marcel Smit + * + * by-hand translation of the idl3p. + */ + +#ifndef UPDATER_CONNECTOR_IDL_ +#define UPDATER_CONNECTOR_IDL_ + +#include +#include "Base/Updater_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +TYPED_MODULE( ::TestTopic, ::TestTopic_Seq, TestTopic) + +module Updater +{ + connector Updater_Connector : ::CCM_DDS::TestTopic::DDS_State + { + }; +}; + +#endif /* UPDATER_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc new file mode 100644 index 00000000000..f8b441f5734 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Updater_Base -l .. -o ../lib -u DDS Updater_Connector" + +project(DDS_UPDATER_Connector_idl_gen) : connectoridldefaults { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=UPDATER_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Updater_Connector_stub_export.h \ + -Wb,skel_export_macro=UPDATER_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Updater_Connector_svnt_export.h \ + -Wb,svnt_export_macro=UPDATER_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Updater_Connector_svnt_export.h \ + -Wb,exec_export_macro=UPDATER_CONNECTOR_EXEC_Export \ + -Wb,exec_export_include=Updater_Connector_exec_export.h \ + -I .. + + IDL_Files { + Updater_Connector.idl + } +} + +project(DDS_UPDATER_Connector_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += DDS_UPDATER_Connector_idl_gen + idlflags += -Wb,stub_export_macro=UPDATER_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Updater_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl + + IDL_Files { + Updater_ConnectorE.idl + } +} + +project(DDS_UPDATER_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_UPDATER_Connector_lem_gen DDS_Updater_Connector_stub DDS_Updater_Base_stub DDS4CCM_lem_stub + libs += DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_UPDATER_Connector_lem_stub + dynamicflags = UPDATER_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_ConnectorEC.cpp + } + + Header_Files { + Updater_ConnectorEC.h + Updater_Connector_lem_stub_export.h + } + + Inline_Files { + Updater_ConnectorEC.inl + } +} + +project(DDS_Updater_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_UPDATER_Connector_idl_gen DDS_Updater_Base_stub + libs += DDS_Updater_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Updater_Connector_stub + dynamicflags = UPDATER_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_ConnectorC.cpp + } + + Header_Files { + Updater_ConnectorC.h + Updater_Connector_stub_export.h + } + + Inline_Files { + Updater_ConnectorC.inl + } +} + +project(DDS_Updater_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub DDS_Updater_Base_NDDS_TS + sharedname = DDS_Updater_Connector_exec + libs += DDS_Updater_Connector_stub DDS_UPDATER_Connector_lem_stub DDS_Updater_Base_stub DDS4CCM_lem_stub DDS_Updater_Base_NDDS_TS + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = UPDATER_CONNECTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_Connector_exec.cpp + } + + Header_Files { + Updater_Connector_exec.h + Updater_Connector_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Updater_Connector_svnt) : ciao_servant, dds4ccm_impl { + after += DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_exec DDS_Updater_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Updater_Connector_svnt + libs += DDS_Updater_Connector_stub \ + DDS_UPDATER_Connector_lem_stub \ + DDS_Updater_Base_stub \ + DDS_Updater_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = UPDATER_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_ConnectorS.cpp + Updater_Connector_svnt.cpp + } + + Header_Files { + Updater_ConnectorS.h + Updater_Connector_svnt.h + Updater_Connector_svnt_export.h + } + + Inline_Files { + Updater_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.cpp new file mode 100644 index 00000000000..1c366b91ea1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.cpp @@ -0,0 +1,30 @@ +// -*- C++ -*- +// $Id$ + +#include "Updater_Connector_exec.h" + +namespace CIAO_Updater_Updater_Connector_Impl +{ + Updater_Connector_exec_i::Updater_Connector_exec_i (void) + : DDS_State_Connector_T () + { + } + + Updater_Connector_exec_i::~Updater_Connector_exec_i (void) + { + } + + extern "C" UPDATER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Updater_Updater_Connector_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Updater_Connector_exec_i ()); + + return retval; + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.h new file mode 100644 index 00000000000..6f01473e5a6 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector_exec.h @@ -0,0 +1,60 @@ +// -*- C++ -*- +// $Id$ + +#ifndef UPDATER_CONNECTOR_EXEC_H_ +#define UPDATER_CONNECTOR_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Updater_ConnectorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Updater_Connector_exec_export.h" +#include "tao/LocalObject.h" + +#include "dds4ccm/impl/ndds/DDS4CCM_Traits.h" +#include "dds4ccm/impl/ndds/DDS_State_Connector_T.h" + +#include "Base/Updater_BaseSupport.h" + +namespace CIAO_Updater_Updater_Connector_Impl +{ + // @from use of TestTopic as a parameter + typedef CIAO::DDS4CCM::RTI::Type_Traits < + TestTopic, + TestTopicSeq, + TestTopicTypeSupport, + TestTopicDataWriter, + TestTopicDataReader > TestTopic_DDS_Traits; + + typedef CIAO::DDS4CCM::Connector_Traits < + ::CIAO_Updater_Updater_Connector_Impl::Updater_Connector_Exec, + TestTopic_Seq, + ::CCM_DDS::TestTopic::CCM_Writer, + ::CCM_DDS::TestTopic::CCM_Updater, + ::CCM_DDS::TestTopic::CCM_Getter, + ::CCM_DDS::TestTopic::CCM_Reader, + ::Updater::CCM_Updater_Connector_Context, + ::CCM_DDS::TestTopic::Listener, + ::CCM_DDS::TestTopic::StateListener, + ::CCM_DDS::ConnectorStatusListener> TestTopic_Connector_Traits; + + class UPDATER_CONNECTOR_EXEC_Export Updater_Connector_exec_i : + public DDS_State_Connector_T + { + public: + Updater_Connector_exec_i (void); + virtual ~Updater_Connector_exec_i (void); + }; + + extern "C" UPDATER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Updater_Updater_Connector_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl new file mode 100644 index 00000000000..0ad7a721583 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl @@ -0,0 +1,26 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Updater_Connector.idl" +#include "Connector/Updater_ConnectorE.idl" + + +module Updater +{ + component Receiver + { + //port CCM_DDS::TestTopic::DDS_Get info_get; + port CCM_DDS::TestTopic::DDS_StateListen info_out; + //provides CCM_DDS::ConnectorStatusListener info_out_connector_status; + }; +}; + + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc new file mode 100644 index 00000000000..9e092ef2551 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc @@ -0,0 +1,138 @@ +// $Id$ + +project(DDS_Updater_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += DDS_UPDATER_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Updater_Receiver.idl + } +} + +project(DDS_Updater_Receiver_lem_gen) : ciaoidldefaults { + after += DDS_Updater_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Updater_ReceiverE.idl + } +} + +project(DDS_UPDATER_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Updater_Receiver_lem_gen DDS_Updater_Receiver_stub DDS_Updater_Connector_stub DDS_Updater_Base_stub + libs += Receiver_stub DDS_Updater_Connector_stub DDS_Updater_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_ReceiverEC.cpp + } + + Header_Files { + Updater_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Updater_ReceiverEC.inl + } +} + +project(DDS_Updater_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Updater_Receiver_idl_gen DDS_Updater_Connector_stub DDS_Updater_Base_stub DDS_UPDATER_Connector_lem_gen + libs += DDS_Updater_Connector_stub DDS_Updater_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_ReceiverC.cpp + } + + Header_Files { + Updater_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Updater_ReceiverC.inl + } +} + +project(DDS_Updater_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_UPDATER_Receiver_lem_stub DDS_Updater_Receiver_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_Receiver_exec.cpp + } + + Header_Files { + Updater_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Updater_Receiver_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_UPDATER_Receiver_lem_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_Updater_Connector_svnt DDS_Updater_Receiver_exec DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_Updater_Connector_svnt Receiver_exec DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_ReceiverS.cpp + Updater_Receiver_svnt.cpp + } + + Header_Files { + Updater_ReceiverS.h + Updater_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Updater_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp new file mode 100644 index 00000000000..e7adf9cb5d2 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp @@ -0,0 +1,231 @@ +// -*- C++ -*- +// $Id$ + +// Test for UPDATER + +#include "Updater_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/OS_NS_time.h" +#include "dds4ccm/impl/ndds/Utils.h" + +namespace CIAO_Updater_Receiver_Impl +{ + + read_action_Generator::read_action_Generator (Receiver_exec_i &callback) + : pulse_callback_ (callback) + { + } + + read_action_Generator::~read_action_Generator () + { + } + + int + read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + try + { + // this->pulse_callback_.read_all(); + } + catch (...) + { + // @todo + } + return 0; + } + //============================================================ + // Facet Executor Implementation Class: StateListener_exec_i + //============================================================ + StateListener_exec_i::StateListener_exec_i (void) + { + } + + StateListener_exec_i::~StateListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::StateListener + void + StateListener_exec_i::on_creation (const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + {} + + void + StateListener_exec_i::on_one_update ( + const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + {} + + void + StateListener_exec_i::on_many_updates ( + const ::TestTopic_Seq & /*data*/, + const ::CCM_DDS::ReadInfoSeq & /*infos*/) + {} + void + StateListener_exec_i::on_deletion ( + const ::TestTopic & /*datum*/, + const ::CCM_DDS::ReadInfo & /*info*/) + {} + //============================================================ + // Facet Executor Implementation Class: PortStatusListener_exec_i + //============================================================ + PortStatusListener_exec_i::PortStatusListener_exec_i () + { + } + + PortStatusListener_exec_i::~PortStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::PortStatusListener + void + PortStatusListener_exec_i::on_requested_deadline_missed ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::RequestedDeadlineMissedStatus & /* status */) + { + } + + void + PortStatusListener_exec_i::on_sample_lost ( + ::DDS::DataReader_ptr /* the_reader */, + const ::DDS::SampleLostStatus & /* status */) + { + } + + //============================================================ + // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i (); + //============================================================ + + Receiver_exec_i::Receiver_exec_i (void) + : rate_ (10) + { + this->ticker_ = new read_action_Generator (*this); + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + void + Receiver_exec_i::read_all (void) + { + if (CORBA::is_nil (this->reader_.in ())) + { + return; + } + TestTopic_Seq_var TestTopic_infos; + ::CCM_DDS::ReadInfoSeq_var readinfoseq; + try{ + this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out()); + for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i) + { + time_t tim = readinfoseq[i].source_timestamp.sec; + tm* time = ACE_OS::localtime(&tim); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ") + ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"), + time ? time->tm_hour : 0, + time ? time->tm_min : 0, + time ? time->tm_sec : 0, + readinfoseq[i].source_timestamp.nanosec)); + } + for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ") + ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"), + i, + TestTopic_infos[i].key.in (), + TestTopic_infos[i].x)); + } + } + catch( const CCM_DDS::InternalError& ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n"))); + } + } + // Component attributes. + // Port operations. + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_out_status (void) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n"))); + return new PortStatusListener_exec_i (); + } + + ::CCM_DDS::TestTopic::CCM_StateListener_ptr + Receiver_exec_i::get_info_out_data_listener (void) + { + return new StateListener_exec_i(); + } + + // Operations from Components::SessionComponent. + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Updater::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + this->reader_ = this->context_->get_connection_info_out_data(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + ::CCM_DDS::StateListenerControl_var lc = + this->context_->get_connection_info_out_data_control (); + + if (CORBA::is_nil (lc.in ())) + { + ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n"))); + throw CORBA::INTERNAL (); + } + + lc->mode (::CCM_DDS::NOT_ENABLED); + // calculate the interval time + long usec = 1000000 / this->rate_; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value(3, usec), + ACE_Time_Value(3, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n")); + } + } + + void + Receiver_exec_i::ccm_passivate (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + delete this->ticker_; + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Updater_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h new file mode 100644 index 00000000000..deb3efc0e75 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h @@ -0,0 +1,127 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Updater_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Task.h" +#include "ace/Reactor.h" + +namespace CIAO_Updater_Receiver_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Receiver_exec_i; + + class read_action_Generator + : public ACE_Event_Handler + { + public: + read_action_Generator (Receiver_exec_i &callback); + + ~read_action_Generator (); + + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + + private: + /// Maintains a handle that actually process the event + Receiver_exec_i &pulse_callback_; + + }; + class RECEIVER_EXEC_Export PortStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_PortStatusListener, + public virtual ::CORBA::LocalObject + { + public: + PortStatusListener_exec_i (void); + virtual ~PortStatusListener_exec_i (void); + + virtual void + on_requested_deadline_missed ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::RequestedDeadlineMissedStatus & status); + + virtual void + on_sample_lost ( + ::DDS::DataReader_ptr the_reader, + const ::DDS::SampleLostStatus & status); + }; + class RECEIVER_EXEC_Export StateListener_exec_i + : public virtual ::CCM_DDS::TestTopic::CCM_StateListener, + public virtual ::CORBA::LocalObject + { + public: + StateListener_exec_i (void); + virtual ~StateListener_exec_i (void); + + virtual void + on_creation ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_one_update ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + + virtual void + on_many_updates ( + const ::TestTopic_Seq & data, + const ::CCM_DDS::ReadInfoSeq & infos); + + virtual void + on_deletion ( + const ::TestTopic & datum, + const ::CCM_DDS::ReadInfo & info); + }; + + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Port operations. + virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr + get_info_out_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_out_status (void); + + // Operations from Components::SessionComponent. + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void read_all(void); + + private: + ::Updater::CCM_Receiver_Context_var context_; + ::CCM_DDS::TestTopic::Reader_var reader_; + read_action_Generator * ticker_; + CORBA::ULong rate_; +}; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Updater_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl new file mode 100644 index 00000000000..bbf82a9b074 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl @@ -0,0 +1,25 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_UPDATER_SENDER_IDL +#define DDS_UPDATER_SENDER_IDL + +#include "Connector/Updater_Connector.idl" +#include "Connector/Updater_ConnectorE.idl" + + + +module Updater +{ + component Sender + { + port CCM_DDS::TestTopic::DDS_Update test_topic_update; + }; +}; +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc new file mode 100644 index 00000000000..dec9d5f4608 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Updater_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Updater_Sender_idl_gen) : componentidldefaults { + after += DDS_UPDATER_Connector_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Updater_Sender.idl + } +} + +project(DDS_Updater_Sender_lem_gen) : ciaoidldefaults { + after += DDS_Updater_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Updater_SenderE.idl + } +} + +project(DDS_Updater_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Updater_Sender_lem_gen DDS_Updater_Sender_stub DDS_Updater_Base_stub + libs += DDS_Updater_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_SenderEC.cpp + } + + Header_Files { + Updater_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Updater_SenderEC.inl + } +} + +project(DDS_Updater_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Updater_Sender_idl_gen DDS_Updater_Base_stub DDS_Updater_Connector_stub + libs += DDS_Updater_Base_stub DDS_Updater_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_SenderC.cpp + } + + Header_Files { + Updater_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Updater_SenderC.inl + } +} + +project(DDS_Updater_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Updater_Sender_lem_stub DDS_Updater_Sender_stub DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Updater_Base_stub DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_Sender_exec.cpp + } + + Header_Files { + Updater_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Updater_Sender_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += DDS_Updater_Base_stub DDS_Updater_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Updater_Connector_stub DDS_Updater_Connector_svnt DDS_UPDATER_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + DDS_Updater_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Updater_Connector_stub DDS_Updater_Connector_svnt DDS_UPDATER_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Updater_SenderS.cpp + Updater_Sender_svnt.cpp + } + + Header_Files { + Updater_SenderS.h + Updater_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Updater_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp new file mode 100644 index 00000000000..12476d5ef05 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp @@ -0,0 +1,672 @@ +// -*- C++ -*- +// $Id$ + +//Test Updater functions +#include "Updater_Sender_exec.h" +#include "ace/Guard_T.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_Updater_Sender_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + pulse_Generator::pulse_Generator (Sender_exec_i &callback) + : pulse_callback_ (callback) + { + } + + int + pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->pulse_callback_.tick (); + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : test_nr_(UPDATE_CREATE), + test_ok_(true) + { + this->ticker_ = new pulse_Generator (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + CORBA::Boolean + Sender_exec_i::create_one() + { + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + if (!CORBA::is_nil (this->updater_) ) { + this->updater_->create_one(i); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: create_one with instance key <%C>\n"), + i.key.in())); + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil"))); + result= false; + } + } + catch(const CCM_DDS::AlreadyCreated &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"), + i.key.in())); + result= false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"), + i.key.in())); + result = false;; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::create_one_already_exist() + { + CORBA::Boolean result = false; + TestTopic i = this->topic_seq_one_[0]; + //try to create same instance again, this should erase an AlreadyCreated exception + try + { + this->updater_->create_one(i); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: create_one with already existing instance key <%Cs>\n"), + i.key.in())); + } + catch(const CCM_DDS::AlreadyCreated &) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception AlreadyCreated test updater create_one.\n"))); + result = true; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_one() + { + //update already created instance with handle nil + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + this->updater_->update_one(i, DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + } + catch(const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_one_not_registered() + { + //update a not yet registered instance,expext a NonExistent exception + CORBA::Boolean result = false; + //use second instance of table + TestTopic i = this->topic_seq_one_[1]; + try + { + this->updater_->update_one(i, DDS::HANDLE_NIL); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with not registerd instance, key <%C>\n"), + i.key.in())); + } + catch (const CCM_DDS::NonExistent &) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater updater_one.\n"))); + result = true; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_one() + { + //delete registerd instance with DDS::HANDLE_NIL + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[0]; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"), + i.key.in())); + this->updater_->delete_one(i, DDS::HANDLE_NIL); + } + catch(const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_one_not_registered() + { + //delete non-existing instance, expect NonExistent exception + CORBA::Boolean result = false; + TestTopic i = this->topic_seq_one_[1]; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with not registerd instance, key <%C>\n"), + i.key.in())); + this->updater_->delete_one(i, DDS::HANDLE_NIL); + } + catch(const CCM_DDS::NonExistent &) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater delete_one.\n"))); + result = true; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"), + i.key.in())); + result = false; + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_and_delete_one_after_register() + { + //update an instance after registering first, using a handle + CORBA::Boolean result = true; + TestTopic i = this->topic_seq_one_[2]; + //take third instance of table + DDS::InstanceHandle_t hnd = this->updater_->register_instance(i); + try + { + if(hnd.isValid) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update a new instance after registrating instance, key <%C>\n"), + i.key.in())); + this->updater_->update_one(i, hnd); + + } + else + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error, invalid handle for <%C>.\n"), + i.key.in())); + result = false; + } + } + catch(const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one using handle <%C>.\n"), + i.key.in())); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"), + i.key.in())); + result = false; + } + //update an instance with an instance_handler belonging to an other instance + if(result == true) + { + try + { + result = false; + TestTopic y = this->topic_seq_one_[0]; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update an instance with an instance_handler belonging to an other instance\n"))); + this->updater_->update_one(y, hnd); + } + catch(const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one with incompatible datum and handle.\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK: Expected : Exception InternalE. test updater update_one with incompatible datum and handle. ex %d\n"),ex.error_code)); + result = true; + } + } + if(result==true) + { + try + { + i = this->topic_seq_one_[2]; + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete a instance with handle, key <%C>\n"), + i.key.in())); + this->updater_->delete_one(i, hnd); + } + + catch (const CCM_DDS::NonExistent &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delett_one with valid handler.\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"), + i.key.in())); + result = false; + } + } + return result; + } + + CORBA::Boolean + Sender_exec_i::create_many() + { + //create many with no exception + CORBA::Boolean result = false; + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"), + this->topic_seq_many_.length ())); + this->updater_->create_many (this->topic_seq_many_); + result = true; + } + catch(const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n"))); + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + + } + if(result==true) + { + result = false; + //test create_many with AlreadyCreated exception + + try + { + this->updater_->create_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many which are already created : <%u> samples\n"), + this->topic_seq_many_.length ())); + + } + catch (const CCM_DDS::NonExistent & ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unexpected Error ") + ACE_TEXT ("in create_many , already created.\n"))); + result = false; + } + catch (const CCM_DDS::AlreadyCreated & ) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception AlreadyCreated test updater create_many.\n"))); + result = true; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("in test create_many,already created: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + } + return result; + } + + CORBA::Boolean + Sender_exec_i::update_many() + { + CORBA::Boolean result = false; + try + { + this->updater_->update_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"), + this->topic_seq_many_.length ())); + result = true; + } + catch(const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("whit update_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + if(result==true) + { + result = false; + //update with exception + // make from the second and third instances a unregistered instance , see above + char key[7]; + TestTopic test_key; + ACE_OS::sprintf (key, "XXX_%d",2); + test_key.key = CORBA::string_dup(key); + test_key.x = 2; + this->topic_seq_many_[1] = test_key; + ACE_OS::sprintf (key, "YYY_%d",3); + test_key.key = CORBA::string_dup(key); + test_key.x = 3; + this->topic_seq_many_[2] = test_key; + try + { + this->updater_->update_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"), + this->topic_seq_many_.length ())); + } + catch (const CCM_DDS::NonExistent & ex) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater update_many.\n"), + ACE_TEXT ("index length expected = 2 and value = %d, expected index[0] = 1 and value = %d.\n"), + ex.indexes.length(),ex.indexes[0])); + + if((ex.indexes.length() != 2) || (ex.indexes[0] != 1) ||(ex.indexes[1] != 2)) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Create_maney:expected exception: NonExistent gives wrong indexes.\n"))); + result = false; + } + else + { + result = true; + } + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("test update_many with not registerd instances\n"))); + } + catch (const CCM_DDS::AlreadyCreated & ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test update_many with not registerd instances.\n"))); + result = false; + } + } + return result; + } + + CORBA::Boolean + Sender_exec_i::delete_many() + { + CORBA::Boolean result = false; + result = false; + //delete_many with exception + // make from the second and third instances a unregistered instance + try + { + this->updater_->delete_many (this->topic_seq_many_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"), + this->topic_seq_many_.length ())); + } + catch (const CCM_DDS::NonExistent & ex) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater delete_many.\n"), + ACE_TEXT ("index length expected = 2 and value = %d, expected index[0] = 1 and value = %d.\n"), + ex.indexes.length(),ex.indexes[0])); + + if((ex.indexes.length() != 2) || (ex.indexes[0] != 1) ||(ex.indexes[1] != 2)) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Create_many:expected exception: NonExistent gives wrong indices.\n"))); + result = false; + } + else + { + result = true; + } + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("test updater delete_many with inregisterd instances, info: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + catch (const CCM_DDS::AlreadyCreated &) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater delete_many.\n"))); + result = false; + } + if(result==true) + { + //delete many with no exception + //reset instances to original values + for (int i = 1; i < 4; i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "many_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_many_[i-1] = new_key; + } + try + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"), + this->topic_seq_many_.length ())); + + this->updater_->delete_many (this->topic_seq_many_); + result = true; + } + catch(const CCM_DDS::NonExistent& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n"))); + result = false; + } + catch (const CCM_DDS::InternalError& ex) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"), + ex.index, ex.error_code)); + result = false; + } + } + return result; + } + + void + Sender_exec_i::add_instances_of_topic () + { + //make 2 sequences of instances as testdata + CORBA::UShort total = 3; + this->topic_seq_one_.length (total); + //sequence for tests with .._one + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_one_[i-1] = new_key; + } + //sequence for tests with .._many + this->topic_seq_many_.length (total); + for (int i = 1; i < (total + 1); i++) + { + char key[7]; + TestTopic new_key; + ACE_OS::sprintf (key, "many_%d", i); + new_key.key = CORBA::string_dup(key); + new_key.x = i; + this->topic_seq_many_[i-1] = new_key; + } + } + + void + Sender_exec_i::tick () + { + if(this->test_ok_.value()) + { + switch (this->test_nr_) + { + case UPDATE_CREATE: + this->test_ok_ = this->create_one(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_CREATE_ALREADY_EXIST; + } + else + { + this->test_nr_ = END_TEST; + } + break; + case UPDATE_CREATE_ALREADY_EXIST: + this->test_ok_ = this->create_one_already_exist(); + this->test_nr_ = UPDATE_ONE; + break; + case UPDATE_ONE: + this->test_ok_ = this->update_one(); + this->test_nr_ = UPDATE_ONE_NOT_REGISTERED; + break; + case UPDATE_ONE_NOT_REGISTERED: + this->test_ok_ = this->update_one_not_registered(); + this->test_nr_ = DELETE_ONE; + break; + case DELETE_ONE: + this->test_ok_ = this->delete_one(); + this->test_nr_ = DELETE_ONE_NOT_REGISTERED; + break; + case DELETE_ONE_NOT_REGISTERED: + this->test_ok_ = this->delete_one_not_registered(); + this->test_nr_ = UPDATE_DELETE_REGISTER; + break; + case UPDATE_DELETE_REGISTER: + this->test_ok_ = this->update_and_delete_one_after_register(); + this->test_nr_ = CREATE_MANY; + break; + case CREATE_MANY: + this->test_ok_ = this->create_many(); + if(this->test_ok_.value()) + { + this->test_nr_ = UPDATE_MANY; + } + else + { + this->test_nr_ = END_TEST; + } + this->test_nr_ = UPDATE_MANY; + break; + case UPDATE_MANY: + this->test_ok_ = this->update_many(); + this->test_nr_ = DELETE_MANY; + break; + case DELETE_MANY: + this->test_ok_ = this->delete_many(); + this->test_nr_ = END_TEST; + break; + default: + break; + } + } + } + void + Sender_exec_i::start (void) + { + long sec = 3L; + long usec = 0L; + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer ( + this->ticker_, + 0, + ACE_Time_Value (sec, usec), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + } + + void + Sender_exec_i::stop (void) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = ::Updater::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + this->updater_ = this->context_->get_connection_test_topic_update_data (); + } + + void + Sender_exec_i::ccm_activate (void) + { + this->add_instances_of_topic (); + this->start (); + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop (); + } + + void + Sender_exec_i::ccm_remove (void) + { + if(!this->test_ok_.value()) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Error in Updater in Sender"))); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Updater_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h new file mode 100644 index 00000000000..c7d81300309 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h @@ -0,0 +1,93 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + +#include "Updater_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_Updater_Sender_Impl +{ + typedef ACE_Atomic_Op Atomic_Boolean; + + class Sender_exec_i; + + enum UPDATER_TEST { + UPDATE_CREATE, + UPDATE_CREATE_ALREADY_EXIST, + UPDATE_ONE, + UPDATE_ONE_NOT_REGISTERED, + DELETE_ONE, + DELETE_ONE_NOT_REGISTERED, + UPDATE_DELETE_REGISTER, + CREATE_MANY, + UPDATE_MANY, + DELETE_MANY, + END_TEST + }; + + class pulse_Generator : + public ACE_Event_Handler + { + public: + pulse_Generator (Sender_exec_i &callback); + /// Handle the timeout. + virtual int handle_timeout (const ACE_Time_Value &tv, + const void *arg); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &pulse_callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + void tick (void); + + private: + void start (void); + void stop (void); + void add_instances_of_topic (void); + CORBA::Boolean create_one(void); + CORBA::Boolean create_one_already_exist(void); + CORBA::Boolean update_one(void); + CORBA::Boolean update_one_not_registered(void); + CORBA::Boolean delete_one(void); + CORBA::Boolean delete_one_not_registered(void); + CORBA::Boolean update_and_delete_one_after_register(void); + CORBA::Boolean create_many(void); + CORBA::Boolean update_many(void); + CORBA::Boolean delete_many(void); + + pulse_Generator * ticker_; + ::Updater::CCM_Sender_Context_var context_; + CCM_DDS::TestTopic::Updater_var updater_; + UPDATER_TEST test_nr_; + Atomic_Boolean test_ok_; + TestTopic_Seq topic_seq_one_; + TestTopic_Seq topic_seq_many_; + }; + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Updater_Sender_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp new file mode 100644 index 00000000000..d00075d94c4 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp @@ -0,0 +1,415 @@ + + + Updater_Depl_1 + + + ReceiverComponentImplementation + + + + + + component factory + + + tk_string + + + create_Updater_Receiver_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Updater_Receiver_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Receiver_exec + + + + + + + Updater_ConnectorComponentImplementation + + + + + + component factory + + + tk_string + + + create_Updater_Updater_Connector_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Updater_Updater_Connector_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Updater_Connector_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Updater_Connector_exec + + + + + + + + SenderComponentImplementation + + + + + + component factory + + + tk_string + + + create_Updater_Sender_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Updater_Sender_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Sender_exec + + + + + + ReceiverComponent + ReceiverNode + + + + + + + Updater_ConnectorComponent + SenderNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + Updater_ConnectorComponent2 + ReceiverNode + + + + + topic_name + + + tk_string + + + TestQoS + + + + + + SenderComponent + SenderNode + + + + + + + _listenercontrol + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_control + false + SimplexReceptacle + + + + push_state_observer_data_control + true + Facet + + + + + _statelistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data_listener + true + Facet + + + + push_state_observer_data_listener + false + SimplexReceptacle + + + + + _portstatuslistener + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_status + true + Facet + + + + push_state_observer_status + false + SimplexReceptacle + + + + + + info_out_data + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + info_out_data + false + SimplexReceptacle + + + + push_state_observer_data + true + Facet + + + + connection> + info_out_connector_status_receiver + + info_out_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + connection> + test_topic_connector_status_sender + + test_topic_connector_status + true + Facet + + + + error_listener + false + SimplexReceptacle + + + + + updater_connection + + edu.dre.vanderbilt.DAnCE.ConnectionType + Local_Interface + + + test_topic_update_data + false + SimplexReceptacle + + + + observable_data + true + Facet + + + + + + + Sender_exec + + + Sender_exec + + + Sender_svnt + + + Sender_svnt + + + Sender_stub + + + Sender_stub + + + Updater_Connector_exec + + + DDS_Updater_Connector_exec + + + Updater_Connector_svnt + + + DDS_Updater_Connector_svnt + + + Updater_Connector_stub + + + DDS_Updater_Connector_stub + + + + + Receiver_exec + + + Receiver_exec + + + Receiver_svnt + + + Receiver_svnt + + + Receiver_stub + + + Receiver_stub + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl new file mode 100755 index 00000000000..66131f97fdb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl @@ -0,0 +1,242 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$em_status = $EM->Spawn (); + +if ($em_status != 0) { + print STDERR "ERROR: dance_execution_manager returned $em_status"; + exit 1; +} + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 60 seconds to allow task to complete\n"; +sleep (60); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/docs/CIAO.pdf b/modules/CIAO/docs/CIAO.pdf new file mode 100644 index 00000000000..2e9eef24411 Binary files /dev/null and b/modules/CIAO/docs/CIAO.pdf differ diff --git a/modules/CIAO/docs/CIAO_Style_Guide.txt b/modules/CIAO/docs/CIAO_Style_Guide.txt new file mode 100644 index 00000000000..28c3245bc76 --- /dev/null +++ b/modules/CIAO/docs/CIAO_Style_Guide.txt @@ -0,0 +1,60 @@ +Error/Debug messages +======================== +ciao_debug_level () and associated environment are no longer used. +Instead, there are error message levels, in order from least to most +severe: + +LM_TRACE +LM_DEBUG +LM_INFO +LM_NOTICE +LM_WARNING +LM_ERROR +LM_CRITICAL +LM_ALERT +LM_EMERGENCY + +Please use the full range. Severity LM_TRACE through LM_NOTICE should +use ACE_DEBUG. LM_WARNING through LM_EMERGENCY should use ACE_ERROR. + +The verbosity of the logging output, i.e. which severity of logging +messages are output, is configured at runtime from the command line of +any CIAO executable with --log-level. + +Examples of usage: +LM_TRACE should be used for gratuitous tracing flow of execution +messages, and insignificant debug values. Feel free to be as detailed +as possible here, the purpose is to make our lives easier when users +are having problems. LM_DEBUG should be used to report significant +debugging values and configuration parameters. LM_INFO should be used +to report subactions (e.g. activiation of ports, establishment of +connections), and LM_NOTICE should be used to report significant +actions (e.g., component installation complete, container creation). + +Debug messages should begin with "ClassName::MethodName - ". +There is a macro in CIAO_common.h called CLINFO. This macro expands +to a set of default log message decorators, and should be prepended to +any and all debug messages and error messages, e.g.: + +ACE_DEBUG((LM_INFO, CLINFO + "Servant_Activator::etherialize - Your message here")); + +It is VERY IMPORTANT to follow this format for EVERY MESSAGE to make +it easier to filter and make sense of logging output. + +All methods (no exceptions!) must have a CIAO_TRACE statement at the +beginning. + +Memory Allocation +======================= +All calls to allocate memory should use ACE_NEW_THROW_EX with +CORBA::NO_MEMORY, e.g.: + +ACE_NEW_THROW_EX(pointer_var, constructor, CORBA::NO_MEMORY); + +Locking +======================= +Use gards as much as possible, using the _THROW_EX versions of the +acquisition macros throwing CORBA::NO_RESOURCES. + + diff --git a/modules/CIAO/docs/ConfigValues.html b/modules/CIAO/docs/ConfigValues.html new file mode 100644 index 00000000000..70ade5ca68d --- /dev/null +++ b/modules/CIAO/docs/ConfigValues.html @@ -0,0 +1,270 @@ + + + +ConfigValues Index + + + + +

Index of ConfigValues

+ +This page is currently a placeholder for +all the configuration values we will support when creating various CCM +deployment mechanisms, such as ComponentServers and Containers. The +ConfigValues listed here are currently only partially supported in +CIAO.

+ +Note from self: There are discrepancy in this document. Most +significantly, (RT)ComponentServer's don't get their ConfigValues +directly from that passed in thru +ServerActivator::create_component_server but rather, using some sort +of pre-defined command line flags. + + +

ComponentServer

+The ConfigValues for a ComponentServer are +passed in via ServerActivator::create_component_server +operation. CIAO accepts the following feature names:

+ + + + + + + + + + + + + + + + + + + + +
FeatureNametypeRequirementRemarks
CIAO-svcconf-idstring + Optional + + Specify the canonical svc.conf id. This id should only serve + as a hint for the deployment framework in determining the + actual svc.conf file used to start up the component server. + Currently, CIAO's ServerActivator maintains a set of svc.conf + files and use this id value to map to the exact svc.conf file + name. +
CIAO-ORB[option]string + Optional + + Specify an ORB option that you want to pass to the + ComponentServer ORB. +
+ +

RTComponentServer (Real-time ComponentServer)

+ +Like a regular ComponentServer, the +ConfigValues for a RTComponentServer are +passed in via ServerActivator::create_component_server +operation. On top of the ConfigValues accepted by the +regular ComponentServer, a real-time ComponentServer also +accepts the following feature names:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureNametypeRequirementRemarks
CIAO-rtcad-filenamestring + Optional + + Specify the filename of RTCAD extension XML file. + The component server will invoke the XML parser and translate + the content of the file into the following two ConfigValues + (CIAO-RTresources and CIAO-RTPolicySets) to + RTComponentServer implementation. +
CIAO-RTresourcesCIAO::RTConfiguration::RTORB_Resources_Info + Optional + + CIAO::RTConfiguration::RTORB_Resources_Info as + defined in + $CIAO_ROOT/tools/XML_Helpers/RTConfiguration.idl + defines the system wise resources an RT ORB should allocate. + These resources then can be used to define the RT policies in + the RTPolicySet described subsequently. +
CIAO-RTPolicySetsCIAO::RTConfiguration::Policy_Sets + Optional + + CIAO::RTConfiguration::Policy_Sets, also + defined in + $CIAO_ROOT/tools/XML_Helpers/RTConfiguration.idl, + defines a list of policy sets, which are named sequences of + policies. These policies often refer to the global resources + defined in the previous CIAO-RTresource via names. Likewise, + an RT-container also specifies the RTPolicySet its POA + uses via the name defined here. +
+ +

Container

+The ConfigValues for a Container are +passed in via ComponentServer::create_container +operation. CIAO accepts the following feature names:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureNametypeRequirementRemarks
+ CIAO-Container-Type + + string + + currently not supported. + + Possible value: session, rt-session, + unclassified, rt-unclassified. +
+ CIAO-POAPolicies + + CORBA::PolicyList + + Currently not supported. + + Must not conflict with CIAO-Container-Type setting. + (Certain containers assume several POA policies.) +
+ CIAO-RTPolicySet + + string + + Optional + + Name, as defined in RTCompoenentServer's CIAO-RTPolicySets, of + the PolicySet this container uses. +
+ + +

CCMHome

+The ConfigValues for a CCMHome are +passed in via Container::install_home +operation. CIAO accepts the following feature names:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureNametypeRequirementRemarks
CIAO-executor-pathstring + REQUIRED + + This string value specifies the location of the executor DLL. + In the future, we should use UUIDs to identify the component + executors and query the ComponentInstallation interface for + the actual location of the DLL. +
CIAO-executor-entryptstring + REQUIRED + + This string value specifies the entry point of the executor + DLL. It points to a factory function for the component executor. +
CIAO-servant-pathstring + REQUIRED + + This string value specifies the location of the servant DLL. + In the future, we should use UUIDs to identify the component + servants and query the ComponentInstallation interface for + the actual location of the DLL.

+ + Servant are part of the Container framework and we can use + type checking to ensure servant and container match with each + other. +

CIAO-executor-entryptstring + REQUIRED + + This string value specifies the entry point of the servant + DLL. It points to a factory function for the compnent servant. +
+ + + + diff --git a/modules/CIAO/docs/Connectors.graffle b/modules/CIAO/docs/Connectors.graffle new file mode 100644 index 00000000000..7051803af0a --- /dev/null +++ b/modules/CIAO/docs/Connectors.graffle @@ -0,0 +1,10989 @@ + + + + + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 138.9.0.117994 + + CreationDate + 2009-09-10 13:37:03 -0500 + Creator + William Otte + GraphDocumentVersion + 6 + GuidesLocked + NO + GuidesVisible + YES + ImageCounter + 1 + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2009-09-15 17:17:06 -0500 + Modifier + William Otte + NotesVisible + NO + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {612, 792} + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + QuickLookPreview + + JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtWMtuHccR3c9X9JJasNXvx8pIJAew + FkZkEsgiyMJgrmAppBVTsr8/53R31QzvpWQtAoKYnr79qDpd51T1/Gbemt+Mw1+uxdQY + zePJ/MP8al6++uTN3Sfjx9+nO3PtbDb8Pwx8Z17+/fR4d/rv599/vt8e32MpH8JYDqv5 + lkzu2dw9mJc/PHjz+uPY7GxE7PVihGvTpIY1qskub3ONIGtg9WEzBsBkDFhLRBmArdeA + UI8D0jasePnT6f7nz+//OL36eP/x8f3D6fPj+zsDB5xtoThsetkABsE5U0oyDyZ0t7F1 + j1awtfg0fghwtxQ/O8ZL7gbz2O3zGM1WsCG2olO34h1XxC+Oo7kLWvfG9zpH8tWPRdbU + +QK3V3eW53b2C/bnOgez9kVhv3h0Z37R9oN5h0N/s3nzYYbBq5sBpjM3r3jC4+WaD8YL + TmYs0icqpnDDHZRO57fq6QdsIRI1LUi8bwsSH5xgttD0IQ5I+JyQsHUP9xYkfKVfOnW8 + YMUJCdeWHnnOX7D9QGQ3SteE7csXxYNu3SBuwYdAPjiDODiAEBKgjZUB+tdbGLPACeYa + LsXkWjDJ3IIBf/MWZ2hu35l/mqub0wsSKpirX18g1PD893qeXmzzh8cX5l/m9o35/nbu + Pth4GZXas8IzlbIOAq3tcBL8geinEgVqvmDZ2e3rOovk09PwNMmHjeGJ5zoLtg7hyVeC + rFPnC4i9uuvxuSXstX7B/jM81Sw9jGEwqMCnHAfbDM/DAYwoJPw8uVDq8p6tg/d8pfeh + dHEOL3X4g+7oy/I++jbggcMrEmPwIxL5nJHI1sF7vtJhmbpeaPXsLoOU3GO9r1+4//Re + zVLvh8HLI/EefdufR2OKkJwRjc4654K5hR3HuMzWwY5o0vY0Lq9+Ot2doImIvNsP53FX + va9DFmvN2YF65EFwQJNMy7FYBz2EeVjaRh+QJ2LjmdiWczA5I6gqqBdCtA4t9HgkE6wR + YE9LWCMX230C2BmTSssbe1yEpewpvfd9UikYUj06qo3O4XBbtXmsm7KtMWFSjbYUZJcc + u+0xlo2RDrJ1SG+O1foAWDgq5Y7tg7e9NChA7rYNB0KaFmaERIDPGZQOzcPCmGwMccsI + luZge4jB+oYDzjIHv8RSgAIaiHdmsm4zB1TEFyPxArt5zGeIPhvuU3TXSN+BG9zDSMF+ + xJtij91hfwD9BXuY+hR7X4H00OeFvWFPL6luir1OEux9zTwVIC3YI1vbUDJOQ7D3HcfN + RLljT+Nsqw2oCfaIIRw0gRXsg2tPscdZ2QoMBXsTIFNYCcok2OscwZ5DckNBsrAPLoP8 + KBYUe8XuiD0MVES/Lv2IPwT5M9IPp32oFwyj8n9cQn8nGeA/0tCc8PnTM9qPdAw+txBz + 6CxuLtNQwlGcEz/MOugaz2sfkZAqFBTQTuoHSUlX3323k/4grsxuuf1/lkWGr7mBe3Sk + ppwgJ3DCQwccCsWlIIziFIaCbATXk849UB6WgnjESMUsFQOPgsu5clAQX8HuTvYtBdnY + 4zp0QmRnhGqCcu8KAq0KY11REN9BEx8pZVNBGMUOMpGhTSIgHBQbNVAExLfwVEDY4Sno + KiCeHHKQQ1GQzZdsU6GfS0E8TAdJoDqqIBE8dsRKNOQcO0bx7IN9U5G/qB9r7iHWBfeR + pRR3UY9NcRchUNxVPRR3UQ/IyMJdJ1EigDtORNRDcFf1UNyP6jFxHxI3xENxF/HYFHcR + AsVdxUNxF/UwirtOWrhvu3oI7qof59jtuMO+C+3YnikbPXOXasfziRqKV0pFAtsLSIgA + Csir169vdrruNzXSqnRo5MiWxdehEixkoBtInntIBESkK4FhDBluCJXMy5pQLDr8nCLT + 9kwU0UVk14JgBDojSceAmEaQjB4m6Q1lkGU20DkR+TcxgCVHxwTlGcsKwyKgRXnAfKwM + i0hBObm+U4yjkvNYSSgWA+bBfmVLJCUqRUFydPQOKZkmgz9M0ltETinpMAmVgC2NnBOK + oYCAe6g4lGKX6OGwR3F4jullVTrStKB/CAxBn8G8KfpCNKPoC2cUfSWaoq9EW+iDBOvE + BH3lmaKvPFP0DzwT9JVom6IvRDOKvnBG0VeiKfpKNEF/k0mKvhJN0VeiKfqK3kjUC9Nv + TdQRV++dbMda2BcbY3T+uUx9uxL19z9Kgv7LMS0fsuR+EUZS6C6lDd8QkG5KYDZrGUmE + ly8UfD6gML2XC+W80o0bI4vpBL5E3hcLalqEKa40ZAXy2JYgli6Pzw0RxRPvvqmC7qA0 + lsPV/XLuO6z7Bv8fnr8syQSUa7bU42YowuBFGhci2SwUfHdI43vHYbM1d91J8MkAqf1y + u8EC6Eh3q8BDo9G53qkPAAZMrfxqcLO9hSc4kpDSRKHAUYyELjlwHz4z04+LXUIRkHlw + QAblHb+t0LKzyTDtyzgMw2TG8CXiXnLYLqCwoKLhHrm2QzVcAT9KyCfbHSazYPwqEpBM + LuJhGqurAFmbAcE3Hv34kII7BT0b31ISQmK16eI+arm2fQFzro7T9XSJdxTuOnzBrWe1 + 53oyivj/me0MPV40kA+q78jvKHVR/iwfKC2Nr0wlsUV6yXKfNwCmAVyeeHrM3anyPoe4 + 8riHoQ+Vy/lkbHQ4PRbA+Dt+eNIZ1M7i8flm346651k/HbZDRrSt1Y7vIoftDpO/5fQm + AijCbe4hoI5BcLrOmzxn4zJqPa+ROUeLwJ2fxVDKjbzHShUMnx8mEj+bMKE2cByftn55 + dvIBAVbOZwjodr6CEAkJEIeNEoTbwTTEL7h22I75wrOGJALPTf4aAuMrC6JqIcAW4lXO + ftwVcMYSvxmxJ/Er7RlvjIT+DdTE+jxEuoT4lb1QPWp7rDdKSY6i7W//B46qmM4KZW5k + c3RyZWFtCmVuZG9iago2IDAgb2JqCjIxNjIKZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUg + L1BhZ2UgL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBSIC9Db250ZW50cyA1IDAg + UiAvTWVkaWFCb3ggWzAgMCA1NzYgNzMzXQo+PgplbmRvYmoKNyAwIG9iago8PCAvUHJv + Y1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXSAvQ29sb3JT + cGFjZSA8PCAvQ3MyIDE3IDAgUgovQ3MxIDggMCBSID4+IC9Gb250IDw8IC9GMi4wIDE5 + IDAgUiAvRjEuMCAxOCAwIFIgPj4gL1hPYmplY3QgPDwgL0ltMiAxMSAwIFIKL0ltMyAx + MyAwIFIgL0ltNCAxNSAwIFIgL0ltMSA5IDAgUiA+PiA+PgplbmRvYmoKMTEgMCBvYmoK + PDwgL0xlbmd0aCAxMiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9X + aWR0aCAyMTYgL0hlaWdodCAxMTYgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2Ug + MjAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDIxIDAgUiAvQml0c1BlckNv + bXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADC + oPVPbQo/iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwMBrYCWvAAEKZW5kc3RyZWFtCmVuZG9i + agoxMiAwIG9iagozNTEKZW5kb2JqCjEzIDAgb2JqCjw8IC9MZW5ndGggMTQgMCBSIC9U + eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMTUyIC9IZWlnaHQgMTE2 + IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIwIDAgUiAvSW50ZW50IC9QZXJj + ZXB0dWFsIC9TTWFzayAyMyAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9G + bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD3T+3sAREoDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYOADA86gAAEKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iagoyNTQK + ZW5kb2JqCjE1IDAgb2JqCjw8IC9MZW5ndGggMTYgMCBSIC9UeXBlIC9YT2JqZWN0IC9T + dWJ0eXBlIC9JbWFnZSAvV2lkdGggMTY4IC9IZWlnaHQgMTE2IC9JbnRlcnBvbGF0ZQp0 + cnVlIC9Db2xvclNwYWNlIDIwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAy + NSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz + dHJlYW0KeAHt0DEBAAAAwqD1T20ND4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYOB3YORgAAEKZW5kc3RyZWFtCmVuZG9iagoxNiAw + IG9iagoyNzgKZW5kb2JqCjkgMCBvYmoKPDwgL0xlbmd0aCAxMCAwIFIgL1R5cGUgL1hP + YmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyNDQgL0hlaWdodCAxNTIgL0ludGVy + cG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMjAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwg + L1NNYXNrIDI3IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVj + b2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQhfiEBhwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMvAMDsq8AAQplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjUwOQplbmRvYmoK + MjEgMCBvYmoKPDwgL0xlbmd0aCAyMiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUg + L0ltYWdlIC9XaWR0aCAyMTYgL0hlaWdodCAxMTYgL0NvbG9yU3BhY2UKL0RldmljZUdy + YXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9G + bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtXAdXFNnWnfDe6KioIEgOShAEJEhQgiRFUBAE + UZQgCCIgkpGMIigKAoqSg6AoCuYwTnizvr/27X1uVdOgD1sf47y3lmct6epqoWvXOWfX + rbp73++++xbfzsC3M/DtDHw7A9/OwLczoJ+B71X8YAhth/75/9orD1/D8qPEPxhq80ft + A/yX/ylYGqIff/zHP/4p8ZNxqF0CUvD9b4BTaQIkHP5PP61ZsxbxM2KdFtjkrrVr1vxE + gMggwf23Y5NMKUxABDTr16/fsMHMbONimJmZbdiA3esIUMApbCxcQ1XyjQrDrr9vwwDq + J2ICIMDZtGmzOcLCwmILA68WfL95E4CaAd5SbFrfffBCiH8LLnwvD4aZAiikCZiAyGKL + paXV1q3WCBsV3LTeamVlabnFguiIbR3zpqpSyEU1oP5TsY1A/VrgpFK0k6t1lCQKmMzN + twCRtY2tnZ29gyPCSQU3HRzs7exsbQDPcou5OTJHbNJ1a1RIA+o/0IhfrRMJSOEhceOM + 4uSCJNauRT+ZbUSeLK2sbezsHBydnF22bXd1dXVzc1fh5oZ327dvc3F2cnSwswM4SZwq + SnTdYmyQLsT7dYJZ0OFCga/Fl/8FRalBMpA4KFxYjxyxYSNAbbHcam1r5+hERO4eOzy9 + vHZ6e/sYwtt7p5eX5w4Pd1egc3K017GhKjex69CSmzYzzPlDdoFpVEZJMxq01UWmqEEn + cZYKGZwnmSQhDYVE2Ts6b3N18/D08vbx9fMLCAgM3B2kx+7dgQEB/n5+vj7eXp4Ap7DZ + Wluj5YzCSgvsQiMKz5gJtr8AmsZ3ihtIDgYOF9azsJREOTi5bCcmQAoIDAoODd0bFhYe + HhGpIiIiPDwsbE9oaHBQYIDfLp+dXkyci7Mje87OloFXhL0ENtCI0omgGXYiihLQ5NKw + OuXIhtL4TiM8Mh4pHKRHjkDxIVEuSJSXNzAB0t7wyH3R0bFxcfsPxOtx4MD+uLiY6Kh9 + keF7AS7An9h2uLsicS4uzgi8uLhsQ2znD+xzAtPY29miEy0twDJm5E+tHr//jxtNRyXc + YEzipHCN9Jxd0FA7vHx2+QcGh4ZF7IuO3R9/MPFQUlLykZSUlFQJbBxJTjp8KPFg/P7Y + 6H0RYXtCggL9/VCU7DktduzwRFciPLnPHVQDngHN2KJYCW0DLntrVKf9Z8g0VLw0sZHI + DSRxjcNBeuQIN48dXjt9/AJ2h+wJj4yOO3AwMelIalp6xvETmSdPnsrS4tTJzMwTGRnp + aSlHkg4lxMfFREUS22723K5dvr6+u3b5IfxVYGuXj9aJrFZ7QkNBasiEHb+YQdhXqECg + WicsrggPJC5wXN3cPch6O9FQ/oFBoXsj9sXsB6aUtGPHM7NycvPyzxQUnj1bpMXZwoKC + M3mnc7OzMo8fS0tJPqywhbPnQoIRISEhoaGhe1RwX5DqRG9W6zZnR/CnpYVCxj778rGl + MapNuDRttcGFiYQHEieH+/j47vLzF47YExYZHXsg4fCRo8dOnMzOzSs4e66ktKysvKKi + orKyClFZic0LZedLS86dLcjLzT51IoPYEuP3s+ei9jGioqKjo2NiYmLxL5qNGBEWFopq + DfDz2enp4eri5GCrIRMG+UJgWrIkV5vMt1hZA5QiPG8fwgkAhQeHhO7ZGxYRGR0TF89E + ZWRmAVNRyfkLFVU1dXX1DQ2NjU1NzYimpsbGhoaLdbXVVRUXzpcUFeafFmypR5IOJyYm + JBw8mJCQkJiYeOiwikPYGQ/Q0VGkmSBC2+G23dnBTpCBQbSUfXYtEhZKEH1lthGobOwc + ncHiQni7gwAHHB4RuS8qOiaWDXU4WYHKLzxXeqGyuq6+sbml7dLl9vYrHR2djI6OK1fa + 2y+3tbU0N9bXVVeWA1sBsWUezziWpkV6+rEMPY6lpx1lJyKjsehEgebpDmS2Wy3N0Wbg + D6nFzwQGWOwsNNbGzRbIlaOLK0Dt8t+tkXgMODwepJd4OCk55WhaBqrv9JmzxefLq2qB + qe3ylc6rXV03uru7e26q6Onp7r5xvavraueVy20tTQ0atkK2XG5OdnZ2Tk5ubu7pvLy8 + /Hz8wN6crFMgmjRkNDE+LjoyLGS3n4+X+3Ynexsri01m638GMbLJPguYgrVmLQZI5pYa + Kh+/wGASHkg8QeCkpKalHcs4nnmSJIHqK6uormtobgUmILrZ299/6/bAwMAdLbB5+1Z/ + f+/N7htdVzvagY15qyg7X1JSfI5RXFxSUlJ6voyBPiw5V3QWGc3NysxITyW0qPBQIPN0 + c3G027rFfCMon8A+i+8NsMw2WVjZODgjV74BQaHhivBA4scywOGnsrJzc/PyzpAkzl+o + rAGotvbOa9e7e/tvDdwdHBoeGRkdHRsblxgbGx0dGRkeGrw7cKu/t0fHJi1XrUVNTW2d + HrU1AH2hTGgm59SJ9JSkhLhoItvp4eqELlPAUIqfkzApwjU/owa3bLVz3Obu5RMQtCcy + ev9BEt5xyQ85vOhcMVjvQkVlNTA1tVxqR6Ju9gHT0Mjo+MTk1NS96ekZQ0xP35uamhwf + Hx0ZGhy4rWO73Nba0kJmaW5uaW1ta2u7xMBrS3NTYwN4pqKs9FxhXs7JjKPJifujwkIC + fJEyewUMPfY5lSiUQVisQSfXHd5+QBVzIDH5qEZ4yA/gVFRVV+ME1zc0Nbe2tXdc7UKi + bt8ZBKbJqemZ+w9mZx8+ejSnx6NHDx/Ozj64PzMNcGMatpvd17uuXRVm6ey8evVaF+L6 + dbSh7L3Sfqm1ueFibVV5aVHB6azjachZ5J4gPy93FwcBBvL4jITxuvVP9BZh2bu4oQRD + w6MPJKakncjKJTdcqEB+LtY3NPIUk/U6Oq91dff09jNRYxPA9GD20dzjJ/Pz8wsLC0+1 + wOb8/JPHc3OPZh8YsN1BUfb16tHX128I7GUnXuu8cqm1qb62sqyk8HRWRurh+OiwYP+d + HgS22Ww96N50YKhCMOF6s82W1g4u7l5+QXv3xSUeSc/MzissJjeA8AAHHI5TfK3r+g1A + 6uu/PTA4PIJEzdyffTj3eH7h6bNnz1+8eLkkXrx4/uzZ04X5J0bYkLjBwbsMvA4ODQ2r + GEIj3kG19vV2X7/Wcbm1sa76QklB7sn05ITYiBB/b3eU4pZNG9atRSWa2GFShWvXmW3e + gmy57/QLDo+OT0o7kZ1XVFpOwiOJKzg3ewEIiEASwyNj41P3JFFP5p8+e/7y5avXbxhv + DcF3r1+/evnyObE9Fmwz96YmJyYUs4yPT0xMoiklJiexd3RkmDTT13Pj2pW25otVZUX5 + WRkpiXEAttPN2W4ruOMzEsZ0rfl5wyYLazvA8g+JiE04cuxU3tmSipp6Eh5IvBeMBzh3 + cI7BeqNj4xNTU9NaopCml6+A590vjPdGwffv3r0FOg0b8vZw9gFaTuL+/fsP0JNacC+I + ZmJ8dHhw4FZvd1dHW1NdRUlBzolUAAv283J1tLE0N1tncocxXajCjeZWds5uhBWXmHI8 + +0zxher65sud5AYhcXA4GBxnGKw3g+JDRz2ZX2CiXgum97/++pvE71qod7/++h7ggE3P + m7Scxi2PHz95wq5EHz55zE58OEuamRgbGRzo677W3lJfdb4w90RKYkzYbh8PVKIFE2Zi + IUq6UIWWNo6uXn7BgHU0M7ewtLIOqK739N++S8IDnHukcJIeWI8kgY5CogTUe0L6/fc/ + /vjjX0sCO37/HR9p2FiT7Dj0HIKviOcquMlOfDwHbNNT40DWe6OzraEawI6nxEeF+nu5 + Otlabt6AYYdpDfa9SpcFmsvDNygsNjE1M/dsWXVDW0fXzf6BQXKDkLjicMV6JAl0FKoP + lQdQwKQD+tMQ+h6AAzQ9b+g4wEO8QrxGsA3Rh7IbqJ8Ky8wA2d3+bgIrLcg6lhQXEeSL + hKHDwBw//mDKWIrdtc7M3NLWyW1nwN7ohJQTuUVlNY2Xrnb3DwyNTkwZSBwULieYrEeS + YEcZgzIAWrIh6ASawoaOeyfUgtd3qifZhyxWduIrZnThydzszNTY4C0CqyzJO5maEM2E + OYIS15uIi2WI7rKwdtjm6RccGZ+cgWzVNLV33bw9ODoJcjCQuDrJcoLfCqZPg1IIdWgs + SYBD6hjc0FpS249OZCu+fvni2dMncw/ujRNYa115UW5GUhw6zN3ZDoVoYoOxDH/esJnp + 8g4Iiz2UllVwvrqxvat3YHj83v2Hc8YkDjg668khsaXkoJdk6CNvtJJEv6HhjIN7VGCv + wAO4tyCZZwtzswDWf6O9qbr0zMnUg/tCdu1gIZr9bBpxfP+DlOFWe5cdu5CulMy84sqG + S9d6B0YmZmbn5tFHBhKXc8wvRxizxFIg/6fF0r1//qlhW+lF0Qw68d2bVy8WHs/eG73T + e62tvrwoJ/1QzJ4AFqLFRjC9KcQBXFKGIMOAPdGH0rMLL9S1dvYMDE/MPHzy9DlYXNpI + KoZnWp1dw9EtOXodkv665EPtjf6bH/lMPpJWfP/L29cvFubuT47c7r7SXF2SdyIZhejt + 5mSzBUxvGi621yaWoc/u8Ljk43klVY3tN/oHx2cezj97+ZqEp6VHPyLt9cMD0+EYv374 + v1bco6D9/tuvv7x99Xz+0cz4XSSsrqzgVGp8JBnRztJU4iBtoL3sSPKR8aknC8qQrpsD + o1Ozj5+9RK7I4jqJr3hIf/5pjEff/sSvfORjQiOwNy+fPX4wNXzrRntDRVF2WmJ0qJ/n + Nnsr8w2mEaLCZWWH9gqJSkjLOltef6mrD+maW3jxmrAUquUHoB/3arwu/9sC7P2718/n + H06PDvR0NlcX52YcjtmLBnOwNpU4SIdm5lb2YPnQ6MT0nKKKhvYbt4YnHzBdOqwl37wa + UD7yN4y+41//wqUcCXs6NzM+2Hu1tbZUGizQ+zOIQ+HaquE6lnuusrG9+/bI1OyTZ6/e + /vLbb6xBo6/E5keOaTV2GX2JJOyXtyzEyaH+LjbYyRQ0GK5gtpYkjh8/favyebhWA8BK + f0MDh4T99v7tq2dPZqdGbt243FBemHWUVzASx2YZcXwS2L+pwynW4Yf5WumYVuMzY1xs + sNl7IwPd7Y1GxLHVfINJV+YffvwJfEje8FO8UdFw+Xr/0OT9uaeqv5bU4Woc+0p/wwjX + rwbi6GiuInHE7g3YaWiwTw59jXgew43UU+D5Np0P37x7r+jQUPsrHdNqfGaM65c3Lxbk + CtbZUlOSdzx5f/huH/3K/OmHHDLs5XXZ3Sco4kBKZv752pbOm3fGph/OP8dVeRlxrMax + r/Q3luJ6uUBC7OOV+UwmiCNYNZhJQ9/vZTi/xdrRdWdAWFzS8dPFVU1XNEL8sBBXOqbV + +GwR1+/alXlyuP/65frys1m8Mvt7befQl0PETxWijHs3mls7bPfy5/iQF7DLXf1DE6rB + VCF+/TrEkANDqWeKOK40scFwryJXMBkifrIQ5T4FF2YZcOw7eFQa7Grv3fGZR6oQZbyh + A1uNnKz0Nwz5Ai6MOF6oIeLVltrz+SxENUQ06R5MPQZAgzlLgx05kVdS3dzRPaCuzBxx + GF+ZVzqm1fhMP3+8gLEQn87dn8CV+dJFXMH0ISLvwUy4VxHi2GhosIxcjqSu92MkJUyP + QjRi+tU49pX+xlJc2pX5Nq5gledQiLFh2j2YKQ8DgGvNOmkwGSGmZRVeuGhg+tca0+vf + t9IxrcZn+vfICFEb+o4N3MTQtyQv88gBML27k41p9yokDo58caeyK3jfwdSTZ8j0vYtM + zwbTv281jn2lv6F/j4wQ37/DFUyGvnIPdtJwD6aGUp94KCUNxgccSxqsZ2Dknhr6SoPp + 37fSMa3GZ/r3ANdigw2iwerZYAlRfMhhh3swDqU+jUvumG3UHfNHrmB/T74ULg7peQXj + vWW6dm9p2sMb7UHbFjzu9Q7ElTkjtxhPAoyvzH8fLt6qzOr3zDnHDuGe2WubqQ+lPiBE + 4NJHHLwF+5v6S8+XAVcucO3BiMPBtHx9txyXGkmxv+bl1vLr4dK7iw/lcMesLmC8tbzO + Zxw5Uoem52v5CFEuzD0Do/c48v1aPL8IiVtCGxhwaHzYR944a3h2o+XrE7zxnXqCyAsz + +ytZBhyGET1xfY3rsjEufB/T9f6XNxggPpweu4NHHHzWJrfMJvOhjsvG0c07MHw/cJXW + yJ0KBogv5A7sL8dlDEqeC3MGxvBsdFh7NooBYkSQj4d6SI/p2E/mS92pABeejO4/kplP + XDLwXfgAF45Au0wtOZaPvTHtcrb8NyVX0lvI1ouneJY9drcXZVihJh8C+czXtPHGd1p/ + qeuXARfGG8jX8v5afhgrv/84tH/3O4SEAmSu8Ij+7ZuXz/GIfppzD1eaa86jDHn5Ah3K + rKUJk2CCa9MWAy7UYTOf+JI3wPNLB/T/7qA+vv9DYB/5fwqPhkmB4pTKi2fzc4A1ZJgr + St4vk3sYbsiN5aefSMkTeuLyRh0q3lA3KvJoFI/neadiGCJ+5MiwSw7uw4+WAVv2H+SX + +AOTGWqeSKY11RTYwuNH96cwBdbT2VZfUZyXibk9mVJBGZr0IEC/fglvaE8COPMwNDEz + h4S94ZykPs+1DJzhuJZuLDn6JciMP9F+R80NyUQtZ9g5r/cKyoj5x49mpydHBmUutrLk + TFba4bhwfS7WxCeIxk84Yg/zBgyP6Hvvjt2bfbzw4hXmHrSJyeXT4upEy6nmDJLxlNiy + EyBk8yEoDRPmL5fNw87PPXyAidihgb4bHW31lSWcYj4Qie6i2EHmzk2YY1a8YYHrF59w + JOIGrKyupbP71tD4DIBxBoyTRcTG6Tzt+OWVexAyo6pPqpoyhympAij+LpOkzSyLWEDN + m1MSMHy3v6ervfliBbKVkRwftSfAGzOxIk4xSXRjeHKDqYeQqIOpmfklVXh0gxnLSc5Y + Ym5PnyUnOgkFBZPEnPBm9ehz4ErFoZWtcYIWtxdBGSQCSv8AmQO0ANQ5zExNjA7fvdV7 + vfNSU215cX7WseT46L2BkHA4UEyEpwCffGyDi5vgUjeWvkER+zFxXnShrvnK9b47IxPT + Dx7NUX1CpQYlAJxhljlmvvA0i0QBGgVqFvBG1wgsduRiRWoNxbGExnrvRIrzQlduABJU + N9DcUJfSD/kGhCnVZUV5p9KTAGu3747trEIz0UiZMBW7ZOZ8b0xi2qn8koqLrR03+gaG + xyhzgCIAs+cEJ7ILii4ot6AMA8qu56I0EYUJ/sNS/cOyjuQcrkGoIhocYKIsDNopiN4o + nhofh0bqzu2+nutA1VBTDu1XZtrhA1GA5enqaEt5pakSKe2JFAaI21GIkQeSM7ILSqvq + Wzu6em/dhSzlnkjWoBqCCk9XyVDIAdUMKkdpgB5TEqTQL8HG9lM9yWZiCEnorCfNxMKb + noIyaowKzDsD/dR9dVxuaaitKC3KE+FX5J5AgWVF1aip4krtxpJPONx9AqlMOU4d0cXm + 9mvdvbchMYTKC9geaKpJQJCgxkmkk1ByMSgwmhPNlNIXaUow0WqoH6oXUb2a+gQaN2IS + sReVbBQnQoQInV57W1N9TcX5ovzsE2lJB2MiQgN8UIR2VhYbN0Dla6pmlE+kKOGwQcJ2 + BYXHJaaeyCkoqahtbLsCZFBPUiEFOZFSSEGExrhPVdr0PUhdpyYhvZuk4g56I10PBmxC + N9KTSrrHZiQk0p5iPeot0UwU51F52AMx6dVO0YzWVZWXFOXnZKanUAsb5Oftsc3RlrAg + pDdZ46sKUQnavPxDIiFoy8jKLyqrqmuiTK+bEt47mkBPiQaJZHwchSPSZColqZCkPoyZ + NeRtudBSdJZoKD1RkxTl3YH0VylFO6C3b1E62POQ+GZnHks5FB8dERq4i0JYGxQhYZEL + PzmGkrG+KNogQBRdpXdAaCQFiCdzC4qBrKFFSa4pI9cUiETBuIvCESl5fx8CgtbbQK/p + LYFNKWMXhbGiixWVHmhPJWqIIsqb3RS/tre1NjdBrA17BHXL+blQ9wJVDOW9PjtcnUW4 + rMEygQt1XFQgQvsFHayHt38IBaOpGVmngUwk8m2X2yH7pwAWitFeokBAj6tJ/7uuIaA/ + hoge+ljBxryBSdmSupIZW0rHrBpKJQrNJIUHT0StEtcXwTkAnfkxSOgPxETuDQ7w9XLf + 5qgLzZktU2HxCsYOo27ZxnGbx04R+CYkpWWcyj0j6v/ai1CVU+ELjwZE1Cqgqu6gVYMa + cSUYhwAYemZkVmGjqNRYeK5056A9Te2KRFGk3NxQVyMelmJCgkOHvoDkQ7A8ROwJAioP + JAuOB4iWwYSfBQu4YE2BM4XAqFz2DYQge39CEmXmdGuUlkFiXguBORXZonpvbW2FCB6C + 9/qLEPbXMuou4uPWS6I/V9hQlItGgUWfAGhP1Mmd7W3NjRdrqmhdKYTnKCfrJCAp1xF9 + HLCo+MIUALuD9Zc6VJgweFNo4rCxd6aAfjeQxcEWoCxDZwqLxBBABX1NDVHU1FRXV1VW + lF9QHgwxZIipSPkFoK2naNvY2DGgmlFoT9TkSBRMALTjMEnwiKXSSHVQOeBCgwPhTtFQ + wQX2ZY4iUdBrwOBOoeEByMJg44DFKzU9I/MUPF75muMBrhJG8bkinGZY1+CZQWj+jrJy + GKZgWkHeKOKmEUc5cXrQjDTiXOvsaL/ERNWCIQCKzSRmG3j6DsAbRsdiaFCgn+9OT3fJ + lRW8KWInkho0jQkNjz40YMrJYevgvN0DyGi7AbR4cUXBZgjDTVY2XUAqcrKy4DU8cVxz + Ookf5/SZwnPw4xBbE0T3i8apDhinpBmF9uDWuADWO6NMNsruBucXIcE+CxcmfW207FkD + Fb1EoPcvcUmROqQU4f7aJIYi5+3unrRJhdCZBxcbbaHJ8ITCuZUugY2jqbSGwhvKEP8U + MpuVk3cGvpyy8kp05EWD0U353Orr6mivKSstRqIIKi2FziFYL8Pp1KP30le5Zre5iMVS + UK2jd/RLfYgCDG4ONJkYwByct7khabC8BsHUBs8rDG10gNFkJ5FwMD6eVl64CMVOGKcZ + SIktNw8dWaxMLTAmVsKWSF9ieVlZaYmiPZgu01OPHE44QIZA4e2mx5mQNJezvR3svugr + mn3FxvwZ9G6oQu0q9oM425Rhz9La1l5siLCS0yUaTAMiTdew7EnAIxkZGQHr9d49MILC + /hlGfyK8YjTHqo48DUvVopH0bGFhwZl80h6Z/CgTtT8mKgK0p+y/nh4ebjRu03FPD7Py + +S6i+szOWgSHjKEWmTJaEZVtFJZyV3H1wgKrOSxpYkWE0L9Kqzx9u7Trip8UBm3BBp/i + UTGN0TWmQny/NCEeVf7RWCYqhE5KMcByhQRHQuIKCbove3Xcy3C3ScqIDNUI77JaAgDY + YFn21Byx4joWCzJWOODSBjBVI2CYVYZ6ms+jYliU7DmDUVv5tOGfVLQn7tBAeNBRecpe + zzUfuHYAVrQQHz0t2avlNteQIWdYBUXZsrlkg72+DAUdzB47JOgYp0EcizVIYJEK+rVp + rFcdGQmPaRyM9bqzXnz1sdHRtPOqhvL19kLp0YTNwsMaHWrdA21NBx2UqaPcxcL72JaO + 7Ke1TJpaYgOrHMBBz1VDnOg418OZhn5HB3uuY4DVC2QNDqladiRcwcpEqy+EoNZB2IsC + VrSH4mOinGiaV0tzYO0KfZkKLVPgwNVBRaRExnJE0lTWUJEoSVnwwMZGX4WBSzLYoHCs + t2KtF8ZWAQ8ft6EjxfS8uHCFrFsRIHZ50p6buOVRe1ZoJhQeF6fguiJrmKd/qnVFVg+U + pFBDppapkFVEuC4P0HFNHqOlM7A6D5Z5kFVBsDgI17jBWgK29KhLR2IJiyULjRjWGRHa + k9UNkCitmbB0gyRJIDFPwPTFDPixQlT7FDRmTdZIUUtwAB0Cq5yo4BsscKJWcZE1lriA + j8Jm7whwQIem01aGwas0owuWTtEbiolC6clyPipJguivgaSDFWg/aKv0qAVguOYVl0zR + AnXDpaG0kDWk1OJEXHdEX9OCTcngOj5oRm35EDI5FylaD9bDGAlZ+gqIdGRar6HbmDgE + F7hBCBBuYMUb2a9+cDkfJlbWiUHiLNF0aEBt5SXZQjNqy70IR6glUTRMf0XZLSL5cAt1 + znInOi5IJEsSAYhscpEiow9ZtQobF8GRRVb0hbIW18kyor3VpfIPD92EPUCn41NAtJ+y + 3/ChrD9HbJK4ZQubGdY1M9CevpqSCd//N/4XDbhaW+/DhejQi9qSWFK9Bib/C1hv9U+C + jk1bQostaRSqD4Hoq5LEqqHUwKmW1LqSnYgwqt5V+7qv/Yek64yaUnv/tQ/j2/d9OwPf + zsC3M/DtDHw7A//NZ+D/AbrYKzEKZW5kc3RyZWFtCmVuZG9iagoyMiAwIG9iago3NzUx + CmVuZG9iagoyNSAwIG9iago8PCAvTGVuZ3RoIDI2IDAgUiAvVHlwZSAvWE9iamVjdCAv + U3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE2OCAvSGVpZ2h0IDExNiAvQ29sb3JTcGFjZQov + RGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9G + aWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2b51+UydKGd9dIzjlnhoyAZBhJ + ApKT5CgICIJkiRKUJIIISBIEERREkGDafX/nX3vv6n6eYVBkQDlnv1gfkBmRuayuqu6n + 664//vhtvz3w2wO/PfDbA/+eB/781v49lKM/GXx/cTsnM+EN/NXR/+Z//a7AeO7c+fMX + vrHz50FNvP86K/cjQ7x48dKlyzAlZvTd5UsXL4IcsAz13/MrozwHN14EoZKSsoqKiqqq + GjdVVbxSViJYxsrCgMfv/3jFiVKAJERVdXUNDU0tmWlqaqirq4FWxsody4CFL8T9X6Xm + QQlKeBKQYAShjq6unr6+ATN9fT1dXR1tLS3ACqzMsUIEnycTghfR+9+A5YjwJNYby02Q + GlraOrr6BoZGxsYmpmbMTE1NjI0NDQz0dHWIlfyqrATPCnYJxoJXiN6zzTQBkTNSTAqQ + unoGhsYmZuYWllbWNoJZW1lampuB1lBkVVdTY0GLuCVTZtyM9jxPtDOJACGzefVheXMA + aQRGS2sbW3sHR4nEycnZ2clJIpE42NvZ2lgBVmBFEGhpaSJsydRh4AYuz7SzQRXLD6KL + VR8KSTVabngSkBZWNnb2EicXV3d3D0/PK2Senh7ubi7OEkd7O4HVyMAAQauHsGWmQ8GL + VAMrqgJi99dJD5cfSm1iRNroGxgZE6S9o5OLm4ent4+vr39AQEBgIL74+/le9fbyBKwT + Z7UwQxQgaLkZGSF4kWsseoF6+bJI+rOrf7j8ABGpjbThIckhXd09va/6BQQFh0rDwsPD + IyIiwsPDrklDggMDACuw2tva2FhbIWqZWViYg5tSTU9XW1Nd7YD055JfRikkDRh1KbUp + bSy5J92vePsGBIVeC4+8HhMbFxefAIuPi7sREx0VES4NCQrw9WGsLhS0jo4OMHsYghe5 + BlYjAz0dlASQCqv/E1WKYSIoLyvx8kOMRgIjC0l40jcgWBoeFX0jPjE5NT3jZiazmxnp + aSlJCXGx0ZGcFUHAgtadzM3N1dUF3I5wsqW5qbGBvq6WBvn0EgvTU4PyHYdTamrp0Fqb + mlkgte14SJInCTImLjElPTM7N7+wsLiEWXFRYX5eTtbNtJREzhoaHERB6+dLdvWqjw9x + u7u6SBzsrC3NjA31dbSwIShdunABReqUoIRJxVxZBTGpqw9IKj/2DkhtShuEJIdMSs3I + yi0ovlVWXnmnqvouWXVVZcXt0pLC/FyRNSqSgvaalCw0NCQY3P6+Psg0F4m9DUgN9BCn + 2GSRT6cEZZjkTDUNojQxs7S2tZc4u7h7XGFpE8I9mZqRnVdYUlZRdbe2rqGxqbmFrLmx + sf5eTfWdijKw5mRlIAgSKWhjY2PIoqOvgztMGhLof9XLw9WJk+rCpcqnBgUm9m/mTB09 + QxNzSxt7CfyItYYfQ6XhkdGxWO6MLIKsrK6ta2xpbevofNDN7EFXZ3sbaOvAWk6sudmZ + mRkZ6elpaWmpqakpKcnEHXM9Iiw00M/b0xU+tTAx1NPWODWoiKmqrqVrYGxmaePg5Orh + 5UOM15A2YExOw3KTJ6tr65vut3d29/Y96h8YHCIbHOh/2Nf9oLPtfnMDWCvLy26VIGYL + CwsKCvJhebk52ZnwcmJcdIQ02N/b00Via2lmpK+NdIJHTx6jMkwNbT1DUwsbeyc3T2+/ + wBAwxiC1U8CYk8+Wu4Ygu3r6+geHR56Mjj0dhz0dGx0deTw00N/Xw1gb62prqquq7lRW + VlaQld8uAzgiIjM9JSE26lqwn7e7s721mbG+jgh6sjqKgnSOFl1NQ1vfyMzKTuLq6eMf + LI24HhufJKR2CdKGe7Kr52H/0Mjo0/GJyefT09MzM/jyfGry2fjYkxGBtb21paWpEdbQ + 0FBfX19Xd6+2pooioiAnMzUxNlIaeNXTxdHGnEDZ0p87WdLLYRqbW9s7u3v7B4dFxSYk + p2eSG0tvs7RpbG7tAOQAIMcnpqZn5+YXFhYXF18uLi4svJibm5menBBZe7u7EbNkHR0d + 7e1tba3grqupqigtzMtMTYgJD/bzcpPYWBhj6VVRnk6W9GzVLyurwpvG5jaOLp6+gdKo + 2MRUQBaX3q6sqrlXT2mDkOSQk89n5l4svFx6tbLymtnKyqvlpcWFeYGVgmBwYKCf7NGj + Rw8f9vX1UvS2ALWyrDAnI/lGpDTAG6Dmxnpa6ioo+CdyKLnzkpKKOsOUuHn5hYTHJKRm + 5hWWVlTV1DU0tbR1dCFtKCRHxwlyYRGMq2tv3q7DNujL27W11yuvll4yVgoCilnYE9jI + yMjjYYqIbqDW11TcKshKjY8iUEcbMyOUJ5XL5FCFRxK+6irqWnpGZjYSN+8AaVRc8s3c + orLKuyg/bZ0PepDZQ2Ac45Avl1Zer71Z33i3+f791tb29vbW1vvNzXfr628E1hdzswja + 58+nYJNkE8/GWUT09z1oa66rul2Uk55wXRrg5epgZWqAEMXKn8Chf6JyIoc0dQ3NrB0Z + ZnxqVkFpRU19M9a679HA0OMnlDYUklhtQL5dB+P29oedXcF2dj5sA1bGukQxu/CCbH5+ + fm5ubnaaonf08UBfV2tjTUVJLoH6X3G2szTWFxyqcPukXFdS0dAxMLWyd/EKkF5PSM8p + ul1d19z2oK8fjGMss2dZSAqQW9sfdnf39j/KbH9/b1eOdfX1CtkrZsvLS0uI3hdz05Pj + o8P93e1NtQQaHxXi6y6xMTPU1VRVunhB4cLTsl+mVTe2sHP29JNGJaTnllTUNLZ29fUP + P3n6bHJ6Bpm9SGmzyjzJIMH46fMXmX3+/Onjx/1dkZVi9i3ZG7K1tTWAv1panJ+ZGh8Z + 7Otsrq0ozkm9ER7o7WLPHKp8GQuvIECx7Bcvq2pg1W0k7r4hUfGEWdvc0dM/jKyZnp3H + Wi+vUNqsY7llkED8+jfsn3/o69evX74w1D3GSiH7HkEr2juAv1lbWX45Pz0xOgTQmvLC + zKRoqa8HOVRHA5mkMEDJncrqWvrGlvYu3oHhN1JzSirutXT2DT4Zn5qZXwAjsuYtSxsZ + JDz5FYTyBlagM1bEAGyH2wcY5RpF79rr5YXZSYB2NN4ty0+PiyCHWhjramHhzyso9XzZ + NXTInR5+0pjkrEJ4s7NvaHRien5xeYW7EX6ktKGQpOWGJ4nx/w6MXnK3ghUxINg+sz3u + 5feb62uvFgE62NNWf6c4Ozk61Nfd0coUmaR86YJCzvMXldQQneTOoIj4jPyymiZgjk3O + Liy/Xlvf2HwPNyKz9/ZFyO8piZdIZawscD+L9onI93d3tt9vrK0szkyM9He11JBDw/w9 + nWzMDHSohCrkvHAJJd7A1Fri4SuNSckpqWpo6x0anZxbXFlbR/lhbiREljdfBUh5X4pe + 5aQ8YBGxckbYnz9+3P2wtbH2amF6fLivrb6yKDMxMsjbxc7CSJcF6PGF6U/KdmSRua3z + lYDwuIyC8tqW7gGG+Wbj/fbOrgzxi4zx0IqLlPxPkfXbPyl6P3/c29laX1uamxzt72q+ + W5qTEh1y1c3B0lhPU1VhwlMaqWrqYtldfYKjkrJLqho7Hj4en1lYefNua2cPfoQviJCH + JH3+YbL//Ofw66NeMeq/v3z5uPdh8+0KHDrU23qvPD89VurnIbE20ddSU7qooDD9dY7C + U9/EytEdy56aV1bT0j04OvVieW1ja2f/40HSfE/IiP4DOwrt2/fwz/+GR3e3N8ihIw87 + GioLb8aFB7AA1VZXRsIfW0BRPcFpYGoj8fQPi0svqKhr6xsen1l8vf5+Zw++5OXn20+V + vSbMU4B+gkPfvHrxHAvfVFWShQD1crFFBUXCKyhM4FRGGpnZOCE84zOL7jR2PBqZnFta + 29je/fiZVUkZFH3Dwb77euhnjn4Bh379/HHn/frK4vTToe6WmtKcpKhgb1d7JJK6iqLC + 9Nf5S4zT1tkrMCIhE+HZ2Y9lf/Vmcxvu/Ho4HL/DU/yGHPM//3z9Qgu/+nJ2fLi3tbYs + LyU69Kobtk6W8McXJhmni1dgZGJWSXVTV//o8xev3m5+ACetutwnKcY64idk/54iFJzv + EKATI31tdeX5aTFSqvRCwh9bmI7mXCDOfcYp+5gjEE74lvAriPPT3vbm2vL85MijjvqK + wvQbYf484RUWJhknrXsi1p38ydZd8OcZcOK/Q7+Fc7JEQgXtbLxTmCEmPBWm4xP+mzwq + pvh8Mjm/zONTft1P6Lyjf0zGuc8qKCV8Y1VxZkJEoJezrZkBCpOChBfqEk4hntiObhZW + NnQ8ZPn+DvnOTkWiQ48GOOG77JdQBd3fYZV+bPBBczUKExLexc7cCDu8goQX6zy2d79r + N3j9fPxsdmlVVpfOmlO+MCXTzikm/LE7Et83cVxy4PvR7dr7PUNCncduhIU/Q85/UEB3 + t9aFwnTvdl4qT3gTPS2WSMdkPHHiHIL93c0n5HpKTintm2PTCys84eUK6AlX+Ogf4+su + FFBemNrrKgrS48L9PSU2pgY8kY7h/PMvejrSMTK3w/EzCgVUvtAfCtCjAU747gEnCtMb + FCZK+KoiWSLRznnsERScfEOyoXNd/DGJdEKio39M4EQBFRJ+bIASKZt2Tjx7KD6C0mPc + dwcRJNLL1fUtbPByAXo0wAnflXGyHf71Io523fdrynJTYkKvuuMIqqvJnuV+fGRinKpa + egcHO5ZI0+zAdGhHOiHR0T8mcrJEoh3+2XAv2zlj2c7JEun4IyhLJHZQdrsaGn1UIrHP + +OFJ6Wiub98VOHkiCTt8O3bODHpGkliLifRjf/4hJLyRhb2rNzvQs5OIbOdEwp8xp7DD + P3nU2XCn6Gb8oaPyMQnPONV1WcIHH5HwZ81JJxEk/BRLeLZzXnHGM6fCnVMoTIYoTF5B + kYmZbIcfneQnUBSms+WkExM7iXDOksxE7PA40p+IEw/GOnjglOeUPyn/8roLv4Ae8b/+ + gNPwJP48xClX6Olkdxb+PMT5Ub7QFzN/nujERIWe+VO2IbETvbhxHmzw36bwiV+LmHQA + ZU8elO90Um68gw0pPODE8SnjRB5ll1Q3PxgYe342nDJE+kZ8NGYHkWePcSdCdUnId7pj + OvaRU/CnkO9J2bfuNj8QDiI7+7+6H8lzCpjCVcPToZ77927np/GrBtyFKTrR83zXRf10 + ofqZc+uucGDCA/whzlNXenlIciaOydjed3DHJH91w/dNHOwUXIkwTo1DnAf+PPwkd+iD + j3jBI/aIvyBIis3PuLXbfveGbm7Eq7AoXIXJziHHXYl8w8nWfWCUx+f3T/BHQMi9RaBy + L+lbhkiQoPyEi7BtPHa8nJ14gpswulrEA+fB1eK5Y7ajP2ScyHeeR+yJc355TfaEJO6c + 3yAc8fIwpsgoXjXv4WIR3nyJC7vBnta6yuKspOshOC5Z4SZM0fmTc1Kdp7ok7EePRibm + lnCw28GBSbzglnOO8PnsjyNg+Vv8h4Sre7gSt+EftnCjDMypsaG+9sbq0rw0ZPsVdgNK + PY9j013GacYuQOmgXE83YezJY3t3H7ezcvee+HC6YeQmwz2Clf2d3J092jbbW5sbb1eX + F+YmgdnZVHO74GZiFNzpiNOSNt0oH99KwLqjfrKbMM8A3Njll9feZxe1cOjm9u6e2H+h + 62F2nX3whV2LctrDqPTeASRu59EGQx/hzerKyxdCx6O2vDArOeYairwddRLUWE/umGMd + +ZM9eAgX36m5pdVNnbipnV5Yxr03Glqsn4UrdsHEFgHuwamBJHP2AamMkq829b8A+Xbt + 9aulhdmp8SeDvR3oIBXlpNwID/J2Q3Rydx6/7OA8f4nf1Dq4Xw25npRVVFnX2j3wZGJm + YXn17QZ1jKg/uMdNaBSyN3Ajzp0t3tlz1wqupBYNa9JRR+bt2urK0uKL2efPRh9TR66G + Gl1xkcEHHTmFLU7+4MEO9Liyi8DCl91tbKdOwszC0grvZVK39cC2WPeV9zdlnRp2M87i + Vux5CZAbrD+LVvLczNSzsRHqcDbcLS/KSYtD49CTVp31tpFFx1XPP+BPoZNAVzesgVQk + ayDNLS7xRtzGxjtmG2TUyMYbm7KOjdgM4ZHLeohykNQxBORzdDcfD/Z1t6NjXFaYnRoX + Fernib6hCTrGJGU6PosQufxAr21gYuXgig5SXFpuSSVryI2gbUgd4lcrr1dX0aQkW4VB + G4Cva7wDJusuiXH7UejJvt8kTxLkCwY5NjKEFnx7SwM68PmZKXGRoX5XXOzR2NbVVEN/ + U5E7yaFQCahp4cnD1gkOvZ6YkQfQ5nahwUnaBXRhBXsJg9biJd5YBj91FNHjphgWm9xC + j/sAcnoKHe2R4YGHPV1toLxDioak2Ihg3ysuDtZoF1Nfm0Q3x21GVAgoQHElAoeiJecV + cC2GQIWG8ZDQ1Z6ZnZ2Dzc7OznDD63nSXgjdTxYEiFsY0wy8RQlingTk01F48mHPg47W + pjpQFkMhEh8dFuyLRbcW9AwnWHUhQJXhULQ4Hd19AsNiEtNzi1kDvqv3EdP/QP7zjBtk + QNyeTUxO8Y43YxVEGBS66GO/XlleooY7QT6m5e5qb22ur62uKCvKy0wjxU2Aj4ezvZWZ + EeXQCYUsMt2FvrGFrcTdJygsOiEtu+BWxd26ptYOqC5ITjX8mGx4eJgJq4aGhodHSIgx + IXTnKQi4qEXUtMzy5SZIyEKaAFkJpVguKG9EhUFu4y6xs+SLfkJMtvAo9apQNJhY2jm5 + +3CBSA5kLNX3GpohtOnq7u7t7YP19vb09JBUraent+9h/+DQCI+LmTkEMYmERI3Q88ln + bLkZJFMEATIvi+mswoIDfEi+hEyn2FRCDikOTh6gpLJSgUKEg3r7k+AmJRMytdukpYPi + puV+axtUSK2t9+8z5R+9hrwOChfImcD6bHKKRFdkTHM1+oQtN9MC3b1TXlpckAsxmKBb + 8/F0k9hbmxuLmJRDipKIOFkJvUTaCwK1lbhe8Q2SRoI0I5uJ1Sqr7tbU1N67d6+2trZG + tNq6+sbm+1yNA6XLyChEbE/Hn4oatkeiJ++U3ypiirXEuJhIrgN0c3KAttJIX4eklafR + gDKhFSmYCNTCxsHFw9sv+FpkTFxS6s0s6FGLS26VlnErLb3FrLTsdsWdaqibGGs3gqB/ + kESBg4P9pAns6mCqKgjACDItOeFGNCCDuK7SASJAciaJ606nqUUqnWdSK6ZWZAI7b78g + QTubln4zMztHsOzs7KysrOzsnNy8giImuuNKrPbOLi6y5BrLJugWqyrKiiGoSwckKSqD + /H2hXGY6VXMTrqg9tfSXhIAcVFNH38iUxJ+ughYZeukbcQmJiUlJyUlJSYmiJaekpt/k + IsZy+BXKtsZmEq02NzU21N2rqaoUY5Igr5FClUE62EL3C0rmTFFOe6LYZAGKCGWgSCao + aZkAFDJVru0OkV4Lj4iMEi2SDC+iueCSxQUpBSurmAgYekpBA0wqSiROJINkil8HuwMd + NVN8c3nyKTAplTioMpSqENSSVBXqaWjlvXygqIVaXrAgWGAQXhI+E7CmpMGvefmFRVxU + zTXVmRmp8jHpRgpqQEJCbQC1vwaJqEnye3KFKncny3kCFQTKjFSYPXDFeMQVL2/RvMjw + 4irwg0i0DLFtQlJKmihSh0Y9lTTqMVER11jieALSHssNRTp0/jpaTOcvozyVMxmsoJ5n + gm8NkqXzWQ7Mm0ggp5YzZ3rl6sYE1tD8gzWCogCi//iEeMinY0nzHyYNDvRDTAqQUPhz + SHIlm5tA0Tyl0vs7l0JNjTDVJpU/BhFIQW9jayeYLTc7ey5Yh/LfxzcgkKKAhijIwqSY + oYAK3fuKBy03JQ4g9bHcmjRFdRZzKMyltPhESpMdNNiBiQSMQ5kLxgejzEEvGwBADFMU + 0FAKGWZSfLxJ1e8swfgMW24OScMyZzXXg3RiYYoBMxWgskEZzJcZGBgKxgfNDNk0Fxv6 + wLACwgJR4MmGfPAVkxKY8XEQY1KAVGGjc+KU3y9Pn5FLiZScClQa6qFxPW1tHW7a3Nh0 + nGxAxdaOghhDUzBMn2Bmysba0oLFJFtuDHOwqSMkOIvKk+3msnj8wTeMlKHSACSbQMJ8 + z7cGfHHgxxSOPRhCE2bQMBkj50ka6xNmo06f4T/gRDGVobJhTZomVZYZf4GZN5qNpAEq + PUQFzfSxoT420oexKExFaVMJokIpB/nDj/zZv2Cof4nzuRdhbGiQviFj07DkasYKx8qG + JMUZSZoyYzF54MmfZVH07zgrwhXGZjCFOUz6g0Yz+RAixTCC+GDoVJw5RUxizxGXW9GH + /erfIzNFXmSYnIFdYKUYxgwvH+LlI7zEyJb71wf2fuk/ILCLrEg4GM1Es2+AyOeMeXb/ + 0iedwT8+HMMUCaLRmC5z/dlUoDNhpdpARlFMxl/RGPwZVqAzIKVfQTEsb2f0a3//mt8e + +O2B3x747YGf8sD/AwDX6mcKZW5kc3RyZWFtCmVuZG9iagoyNiAwIG9iago2MzEyCmVu + ZG9iagoyMyAwIG9iago8PCAvTGVuZ3RoIDI0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3Vi + dHlwZSAvSW1hZ2UgL1dpZHRoIDE1MiAvSGVpZ2h0IDExNiAvQ29sb3JTcGFjZQovRGV2 + aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2b91dU2dKGZ9RRCZJzzjkLNDlnkNBK + ECQJkgUJrSQREMlJkKAggoAEAVExjHNn3X/te2vvc5rGwW4MM3PX+qwfsOmeWf1Q9e7a + +1TV/uWXn/bTAz898NMD/z898OsR+x/wAXhOiXYaJr4mzn8NjzOdPn3mzG+KdubMGQ74 + r6AxKDCB6Oy5c+cV7Ny5s3iTs/3TbiMqBnUWSGrqGhoamtzwSkNd7fx5BbZTFNR/JKqk + KfLUWcakeUFLS1tHR5eZjo62ltYFTcCJbEJQBeX9fYiiq+ApNQ2NC0DS1dM3MDA0IjM0 + NDDQ19PVBRzYyG/nzlJUKbBMd3xl/Gj/CUqHqwClDigwgcjYxMzM3NwCZm5mZmZibGxI + cNrcb2qgg50jQob4Y5WHP5FCwRYfNKWuoamlratvYGRsamZhaWVjY2tnZ29vZ2drY2Nl + CTwTYtPV1dGiqMJ1JDt1hsgceIb89v2iU2AioXMoPUCZmVta29jZOzo5u7gyc3F2cnSw + twUcsRnxqOpCdYisIDxhVRDad5ExKMXFR55C+AgKTE7Oru4eXt7ePr4wH29vLw93Vxcn + R4HNFFFlqiNCCA/LAquCFgWlku8g41S0+JiksPg4lClBOTi5unt6+/r5B0gkwcEhIcFB + EkmA/0VfwLlxNmsrSworzNSEEA0M9BBcoKnJyb5lXyAqlhE4lBaEzjSF8NnaA8rLx89f + EhwaHhEVFRMTGxsTExUVER4aIgn09/UBmyuiKqjOxtqKCc8UbPpAE8i+zWUkdZan2OKD + owBlQpoClIubp49fQFBIeFRMXEJSckoaWWpKclJCXGxURBhn8/b0cHdzdXVxdnYi3dnb + 2VhbWpiZGBnocbKzPJhf5zLBWWeRp0RJmWDxkaZc3Dy8ARUaER2XkJyWnim9nJ2Tk5ub + k519WZqZnpaSlMDYggL9/f2Y6ry9PD0I0dkJbJbmpsZEBp2d+3owwjpDslJnKcEQGQEJ + QdSUvyQkPDouMSU963JOXkFhUUlJ6fXrpSUlRYUFV3OvSDMuEVt0ZHhYKFOdJDCAEH28 + sSqc7G2tLECmq31BQw36p1ie3GPAgrLIWRe0dSl8gLJ3dHb1YJpC+GITUi5lXckrKCop + u1FZXVNbB6utqa68UVZSdI2xpaUkJyKqsdFRUVGREYQYJPH38/F0c3awtTI3MdSHy9TO + n/0qMC545ixdfaLiUN6+F5mmYhG+zCu5BUWl5ZU1dQ2NTS2y2zBZS1Njw83a6gqwwW/Z + 0qyM9EukuuSkxAQgwoEhEn9fb3cXBxtLM7hMS1P9q8C4t86Rs/QMjInKydXD29c/MBia + IqgMaU5+YUl5ZW19Y/Pt1o7Orq573d33uro6O1rvyJrAVkVs1wqu5pHqrlyWSjMz0tNS + kyG88JBAP293J3trc5OvBmNBBJaWjr6RqQVRefpcDAwOi4yJT0y5lCnNvnqtpKyi5mZj + y532u/d67j/oHxiEDfQ/6Ovp7upou9NCbNUVN8rKSHXFRUDMhwMvZ14CWkRIoK+nq6ON + pamh3GMnkhiTPGHpwllWdqDy9ZeERsTEJ6WmZ13JhafKKqrrbjUDqvv+g4HhkbHxiUnY + xPjY6PBgf18vY5MhqPU3meqqqyrBWFpSWJB7OSMtMTY82B8us+Vgaud/O3Mi7XOs8wzL + 3Nre2cPHPygsKi4pNUOaDaGXElRD8+02QPUPjoxNPJyemZmbm5+fm5uZmZ6aHB8bHhwg + ts6OttY7t2UyWUtzU9Othpt11ZXlJYVXszNTE6JCA309nOwYGK3K0ydZk4giViLHsnFw + 9fKThEXFJ18SolddV9/Ycrutk0GNT07NzM0/WVhcYra48OTx/MwjxjY08KCvt6eHVHf3 + bmdHO4TX3FhfU3G96OqV9OTYcImfh7OdJWlMg2lfZSTJXWfPq1/QMTA2t3F08/YPiYxL + TpfmFhQzRzXJWjvudvc+gKcABaalZysrq2vMVldWni0tLnC2CQR1eAiqG+iH7u739HTd + bb/T3FBbUXotNys1PiLIz8PJ1sLYQOeCOkXyBFynfzunpqmtz7B8AkKjE9JAVVJOkoKj + unr6+geHxybgqSeLS8sra+svNja3tmFbmxsb62urK8uMbRZBnXo4OTExMT4+NjYyDAfe + 7+5sbWmoKS/Ok6YlRAYhlDbmxnraGmqUxVSAiVHUMzKzdnDzCQyLTc7Izi8ur65vkrV1 + 3uvtGxgeZeF7vLC0/HztxcbW9svd3T1mu7svt7c3BbanC3AcqW52Zmbm0fTUw4mxkcG+ + ns7WprqKkvzLafEREl83B2szLEqNEziMuBBFXQNTK3tXb8LKzCm8XnWz6XZHF6IHR0Hn + cwS1wqB2dl/t779+8xb25vX+/qu93R1yHPltZfkZye7p08UFEt7szNTE2GDfvfaW+qpS + gMWFB3i72Fka62trqp1VGchTp347q6aBKFrYOXv5hwIrr6i85pasvev+AEXv0ey8ED54 + iqCAdPDuPbN3BwyOscFvGy/WSXarq8+fg3Hp6cLjuemJkYGeDllDVclVaUpMyEVEkhym + TktS6S7J3IW1aGhm4+ThFxJNWDfqmlrv9g4Mj0NSjxeeLq08X1uXQxHTh4+/M/v44cP7 + 9+/kbC8RVahuaxOIPLhPn8xOjQ32dsrqK4vzMhIjJd6u9uQw1YH8lRajhraBiaW9q48k + MjEjB1jNbff6iGqeorcqD99rchRj+vQH2adPoPtIaNxviOor6G4XtgPErY311eXF+enx + wd6OlrobhdlpsaEXPRytzQx0VAfy11O/nYO6jOAuT/+wuLTswvK65vbu/pHJmfnFZ1h8 + G5uk81f7r9++hafgqE+f/viP3AAnsDE4Eh3sNYS3T8LbXF9Zmn80PtDT3lRz/WpmYmSg + t4utuRELpPIFSarX0NI3hrt8g6KSpfnXa5raugdGp2YXlp6vsejt7ZOmhPDBUwT1JzOG + J/qNHCfI7t27A3jw9f6r3e2N50vzU2P9XXcaKoqyU2OCfd0okLQilXJRGNU0dQzMrJ08 + /MPiL+UWVza03usfnZpbXF7bYDqHo0RNia7iVPSTO06MqaC6jx+58A7e7hPY07mHw/c7 + mmtK8zLiw/w9nKxNDUhgp5UlMHCxMFrYunhL4K6C8jrZ3b6Rh3OLK+tbO3uIHmfi8eMB + PKRirzgafjLNMcRPovLevt7bfrGyMDM+cO9O/Y0CaRIC6UwrUhNcyhYkyYuH0c0vJDYt + p7iqsa1naGJ2YWV9exfhI53T4oOnBFV9RsV/lbMdvqBV8fE9PLa1hkjCYU1VCGR0kI+r + nYWR7gXKYEoSBbhoNZpSGMMTMq6W1cm6HoxNP3m2trW7DyrGBB8I33cs1HFvsv/+Dwb2 + cgMOg8JktaW5l2JD/EhgelrqKrgge00dJC9n78DIJOm1iobWnqHJuaermzv7b99/gKO+ + GknEBNofv384eE0Om5sY7L5zs+wqE5ijlYk+MqtSf9Fy1NQ1Mrd18QmKSskuqm7q6BuZ + ery8vr335t0HgUr8pqP//vfor3/9DWCfEMlX2+vPEMjetoaKgqzE8ABPUfjKFuSp02fV + kL0skCWCY9JySmpa7j4Ym1lY2SB3MSzF7/vvZ6b42TGvyWFQGAVyerSvo6my8HIyUj6E + zxakai5kLzdfyD63FPIamJhZfL65+/rgw++I4eHXfcb05V/l/wsP5P4OE9iDzubq4uyU + KAkyq5mhjooExv0lcF3Ku864ZiGv3dcIowLXlzGO+0RAI4G9e727ubqITNHVUlOSnYbM + yhYkJQolCexv5oLAwLW1+nR2YqBLVleamxYbwjI+JQplCewzLh7Hv/rrOJ8ofY87jIT/ + 7s0eLcjJwe7bddfz0uNC/dxZolCewAQu0j3pq6RW1tU/Dn1t7O4r6kspw7EfMjC2IN/s + bSOzPhzqaa1HokjATiRPFF8OJPKEGuUJO1efoOjU7JLq5k5xPR68P9TXsV+t4k2QHUkU + Pa0NNwoyE8P9WaLQ0jinbOf+VcirbHtMuVJUhfw1Or2w8uIlyxNIQewPV4Fw7MecC4ni + 1faL5cdTI/fbb1VckyZHBnrhzKoqURCXBo4TNk5egZHJ0sKKW+29wyyvvnr7/iMl++/n + Ygns0RgSWFXRFZ4ozA11lO/ch/ujZ0B4YlbBDdqHHs4vrVG+/ygP5LEOUfEm8xcS6wES + 2HPaIe82V5fkpMUiUdir3LmF84SJlQMdv2jfvn1vYGJuaXXrSAJTgXDsxwIX7ZCbYqJQ + XJC0Q35R+Oz8paVHiRXnnEt5pYoLEhvR98YRRwokClqQk0Pdd+rL8jMTwoUFqVz4dF6l + DdKObZBYkE2dfWOP5Bvkd3OJO/djvnNfkyZFBJxE+PxAYYgDBc6rWJCVjR33R6efLL94 + qSj8YwOl4k1aMEgUbOd+sfyEdu7GyqLLydgh6chKO6SSnYg9d9CCpANYMh3A2mhBPlvf + Ji5R+CoQjv1YgYt2brYgsXOzI6utuaqjNEsU2vTc4RkQISzI4b8syGO/WMWbnIuOhrQg + F2lBYufOke/cyndIlii06CDtiYN0Zn55/Z3uoUkkii3FRKEC4diPD7mwIMGFEwUdpWnn + RqIwVrFzC4nC1MqRDviZ+WU3fxAXYUFf/CgtJora0jwc8eUnCiVHaXkC+6FcDOoYrrpv + 5iqvpwePzxP+sYFS8uZRrn3FOH6dv8Q4FhCXqPtvXI8iFHsaZ3lCOElz3fONiOlLZRxF + 3fMNElxCnviGfH9IxeTF8urLFyssfzWJeUJ4tFVyYuX6ErjEPCHPXyLXn38qCZrCR4pQ + grs+CPsQ5ftbQl6lJw8VpQCFPMEOFHiwVcir38NFj9y8FEDpCwd8lCjK8QQp7EMs33+5 + FMC4WCGA8qq0gB64h6cU4qjwpHbUG4e/HfeES1SojX18j+PE9tqzx9iGOluQJvDEjdqc + FS/pfPk88Ysil3gAE3WvcAA7hDjBK2JiVL9/ABZVdBZnJgZxjq7kJTCqZaJCofwgLS+c + sHzP1iPP9+IB7AQOU2QVoVBH/IDa6/4eVcDmH46Qu3DMSYwI9MK2LVR0vnj+4v7CPsTz + fQbyPR0MZ/FERJUAtnHzb/rspyLK4WsFKJQP3719wwpzChVD7EJ+7g5CGJWcC4mLCmB0 + YL0YGpeRd71WhgrFowVWOTkAGFW+xJoOL70dEh4CsVfsA1YNpprmAQqZey+3qMI6PTbQ + 3dZYXZqHCivqAHYWCCMdc74se5ELB1Z3VpjDwbDjPglsdWPn1ZsDeUmclyj5T5QD5aiH + aETFysAcCk0HFH431lCRnhqjwm9tWcHlVLhLXpFW9pzGuNTZQRp132gcDLEg7w2Mz6Ay + t7nzipcxUbA/YlSsO6wgcjJFKlT04ardl1sbaytLC6jgo7XQTIXyS/HhVJAW3KUsjODi + B2l2YI1Mysovq2uBwyZnF5bXNl/y9gb1XA6owkw/Dw7eUWlaLOOz2B2BOoCqXlGN/AVR + zT+aGOnvbm+uqyjKzUiMCkKLCOrSuaCqCckL0qzdgfp9fHpucVVDaxcVpAG2sfVyZ3fv + FRpCikbNIVYN5mykPwVRvUHlHh0j9BSIaubh2FBfF7WuinIzk6NZI8bciKlLqbt++YUd + pNHvsHJw8w2OTpEWlNU2tfUMjFEBn3eqtrdfym1nZwfdDN65EthYVFEZZx0ZIX7rayvP + noJqany4v6fzTmNtOWHFhPp7iY0rlT1bxgWBUaU8IDwhPaeoApHsGRhFw4M6e6tr6+sv + REPfZ4Oaj8yNrKtGcDB0Eqi9BlFR/J4vw1Wz05NjwwO9XW0tDdVlhTkZybFhAWgPIYq6 + F7AYVbiLCx9tPjNrR3c4DH2r4oqbLe3dD1iD6AnaVs+eLS8vr8iNSNEZ3UbTYY85DmFF + 64V3/DY30O9bWnw8hx7f6FB/b1e7rBHtx4LsjOQYwkL/EV2Yk3SSSWAolaPPZ4s+X1hs + qvRqSQUaal3UUJucnpmdn3/8+IloCzCQ8m4W2NA6Yj1SdKpYh3QV8XuC+E3AVX09d9tA + VVVWhHZtYnQoYdmYoV+rqUr0VNg/0hf1kYTHpUrzim/U3pJ1dN3vH0L7f/LhlGjT09OP + Hs3MUuf9Keu0rbOoUm8PzUd4ikQ1O/1wfGTwQW9XR2vLLVAV52dnpMRHhvgTljl1RVl/ + W8mezfsNEBgao1AYuu7uvpKIuNSsvKIyati2d2GEY2BwaHh4eESw0dGxsQnq4M7OU2dS + 3oJffc663POzj1j87t/rbMMcSm1lWVF+dlZaYgzGAbwQRGBR2/0E7W1y2BlqJGMcwMLW + ycNXEk4Nbmq732yUtbZ3dnX39PT29t7n1tfXB1JMdkxMTqGT+xgjC09Z71iYCuDx62q/ + 3dxQV32jFNMTWWlJmDgJ8PVwtrc2IyxBXF/esoX2jNh410Vv1I7AwmIS+UBAFY3jyG63 + tra2kbWTdWA4hyZhBliIpzDiMTsHm2VTFKMkKh6/agxO0LRJamJsJCZ0vFwxbmJmJGCd + dN7kDAYVqJdsamnr5O4TIA5Q0PhSdW3dzfoGwW7dutXY1Nxym7kRkwKDw6MYiZmg2QQM + TwxxKFkTpjnKigvysrMwnROD6RzMDTnb21iYGuphBoyG0040BoNAUiTVNAUwN++LfOAk + C1MwhcUl18vKy2+QVZBVVlXX1NXfapLdaetAiPswQoQZogEaNsGUTitEVVfFpl+kcFVc + VHgwqDxcMAFGc1YkeQzznQyLL0lMnBCYiYWNgwsf0Inlo0w5eXlX8/MLBLtWWFRUcr28 + orqWsfGRq3ts4qqNJq7qED+46kpGGrkqFNNfXpj+ook5I31hmOnEWOQwmtAhMIWBppAI + DMklpaRdSs/glpmZmZVFs4V5+YXFNE1Ue5ONqMloVqiZT1qVlVzLy5amp9DgV3DgRWFa + Tj7H9zXeYjmMg9HskJGpMJbGxi8jo2Ji4+Li4xO4JSbSLCYmH7M5mzjSRxN9FWWlmOjL + lmakJcVFs0E5Lw9MF8rnHhHDrx8v5B7DwJyOfGCOjasGSjBAGxoGC2cWERkVHYupzFSa + Vsu9ykcgS8UJSIJC/CJDgwKgKldnBztry++bE2WhxNw4ZkR19Q1pwJCNYmLk2NfX7+JF + f9ECAiVBIaHhkZjuQ4gzaGQUM6M5OdlXMFyIidH4mMgwHj8XR3KVmbHh0blalWleyF7i + PwQmH8jUxzi0BaZE7R2dXFzd3N09RPP09MJo9EV/wBFbPI3YprIRW0zYxtMUazBJneJn + K7gKE/CKc8gq06kIJP4LMJr2xUymBptpx5i9BcbHbTHQbu8AcyRzcsLgNia3vTGRHEiO + w0hydAwsOiqSJpIDMC3N4sdVpc+gMLeNUfxvntuWD/yCjO4A8HF7MwsLSzIrZtbWmL23 + d+BT5eS4QIkkKBgWhCFpNsHt6oz4WVkgfgY0sk3XP3D7A5dmkLS+2leCz8hlFEzymSZN + bevRjQljZibMTE1xV4HcSCFGhMWRdx8fDJXTVLkDoLjUxfgJrvp2KsCRywQyzG7zKya4 + YKLHTJ/MAKTGwq0FOE5+RQA3BMCEGwKY0yapk6gO4weob/WV6DKBjJx2nq7kaGpewA0Y + uWnj4gm5kW55mFvCcRAgGW5UWFuyWwsK8eOi+i5PiepXcBpdDgDceTWYumB0c4PcyG7F + IMIIK91BMTfHZQBTdgOFLnmw9ceH2n8UFOOD1yme4pUv3GzhhlsuDBRuZGz8yo4hu7KD + ALMbO/zehFxUCn/vj3nJ2YiOGd0HIqO7QfIQK1xx+uyGEy2/H+qqo38U4Jjr8CVy424k + NqY/8U4YXc2hu0N0JexvpjrKyH4TOXmIj16hw1UmdtGKu+o7198x363yLcGHcv1RbMkO + bxz+C1AC9ZH48guQLNJ4X+Xf9Q/8BxRXuf0D3/fzK3564KcHfnrgf9ID/wdx3oFfCmVu + ZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKNTkzOAplbmRvYmoKMjcgMCBvYmoKPDwgL0xl + bmd0aCAyOCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAy + NDQgL0hlaWdodCAxNTIgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRl + IHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz + dHJlYW0KeAHtnf9TUukXx60MBAER+SICBhISCgFmgmIuha35hUp3MUaLUtycCL9kpjS2 + ai4Taaum5oRjUTrKGI7Z5q7m1k7/2uc8F2wT1D47+8tl73N+aGQcmPN63uc5b+61+5yU + FBx4BfAK4BXAK/DfWoFDSRb/YvUR6eEvcSQp4ku6h1H2/ww+hgucqalHky5SUyFxhP8P + uAl9ARdgaTQ6PS0WDJLHTp50Oo0GqQM4gf3/qI2ICWAa0DIYzHQIFovFToKANFG2TAYj + LY0O3AT2t2ucIAaFARjhstgcTgaXm5k0weVmcDhsQGcyYtioxA/UGnUtKGpaWhozncXh + ACwvi88XCIRCURKEUCgQ8PlZvMxMLofDSmempdFAa1ThB0CjsgZiOhCzATiLLxCJsnNy + ciRSqVRG+oAkJZBstkgk4GcBNhuoocQR9f7QMeQ0BhBn8vhCkThHKsuVyxV5ecqkiLw8 + hVyeK5PmiEVCPi8TqBkxqfeDhr0MKoPILA6XxxeJJbJjcqVSla8+odFoClAUkjaI9CDN + E+p8lVIpPyaTiEV8HpfDAqmR0vvt6RgyEhmIpblypUqtKdTq9HqD0WgsIn1Akga9Xqct + 1KhVSnmuFKiR1DHoPbc0VDZSOZ2dwRNkS3IVx9Uard5QVHzaZDKXlu2EhYSxk1tZqdlk + Ol1cZNBrNerjilxJtoCXEYXeZ0uDzNCwCWSxTK5UF5w0nioxl5VXWK3nbCgqSR1Eiues + 1oryMnPJKePJArVSLhNHoWlHobr3EBrJTEtjgspCsUyh0uiMxWZLxVnb91XVNbV1dXb7 + RZKH3V5XV1tTXfW97WyFxVxs1GlUCplYCEoz02ipewqNZKYzWByeQCzLyy/UF5vLrbaq + Gvul+h8cjsYrziSIK40Oxw/1l+w1VTZrublYX5ifh5TmsBj0vYUmZE6H9gXIaq3RZLGe + r7bXO5xNV103WlrdEG2kDpRha8sN19Ump6PeXn3eajEZtWqAhkaWTgidUNyEzEw2ly+S + KvIB+Yztgr2hsdnV0nbzlsfr7ejs7CJ5dHZ2eL2eWzfbWlzNjQ32C7YzAJ2vkIr4XDZz + T6EPod2czuGJJHJVodFUUVlz2dF83d3u6eju6b3X1+9Lgujvu9fb093haXdfb3Zcrqms + MBkLVXKJiBcVOqGLHTp8lM5kQ2XnKjX6kjOVtfXOa63t3u67/fcHBoeGHyZFDA8NDtzv + v9vtbW+95qyvrTxTotcoc6G6kdCJnRs6GCGzVKHWFVtsNfVOV5unq9f3YGjE/yjweHQs + CWL0ceCRf2Toga+3y9PmctbX2CzFOjVUNxIauljchiZKm8UFmY8XGM3WC5edrp9u3+kf + GPYHxsYnJp9OTU2TPqamnk5OjI8F/MMD/Xdu/+RyXr5gNRsLjoPQXBbqYnHFDcyotIUS + eb6uuPy83XGt7XaPb/CXwJPJqWezz4PB4BzpA5J8PvtsavJJ4JdBX8/ttmsO+/nyYl2+ + XCJExb0HMyrtLJFMqTGYrNUNza2eO75B/+j49Gxw/kUo9OrVq9ckD0gxFHoxH5ydHh/1 + D/rueFqbG6qtJoNGKRNloeJO0Blt5wy++JhKe8piszdeb+/qG/SPTc4E50MLi0tLy8vL + YZIHpLi0tLgQmg/OTI75B/u62q832m2WU1rVMTE/A23ouNpGLYyVKciRq0+WVFTVN7m9 + vQMjo5PP5l4uLIVX3kQikVXSByT5ZiW8tPBy7tnk6MhAr9fdVF9VUXJSLc8RZLISm9jh + IzQGbGdpnsZgttb86Grv8g0HxmfmQovhldW1t+vr6+9IH5Dk27XVlfBiaG5mPDDs62p3 + /VhjNRs0eVLY0AxafOOGbyRM+EIiUxYUldnqrrR47j7wP5kOvlwMR9bWf3u/kSTx/rf1 + tUh48WVw+on/wV1Py5U6W1lRAWxoHocJjXu3WaG2zcnKzlVpoWtfanJ39A0FJmbnF5Yj + a+82/thEsUXyIJL8Y+PdWmR5YX52IjDU1+FuugSdW6vKzc7ioMadwJzOgRaWrzsN2/nq + ze77I2NTwdDSCiBvbm0nTWxtAvTKUig4NTZyv/vmVdjQp3X50MQ46Xswo7YNLUxv+q66 + wXWrZ8D/68z8Qnh1fWPzw/bHjx8/JUFAmtsfNjfWV8ML8zO/+gd6brkaqr8z6aGJocad + oDNYFReYT+hN0MJueHp/fjQx+2IRZP59a5sA/ov0gVT5uL31Owi9+GJ24tHPvZ4b0MRM + +hPAzEUGHVfbiFkgUWgMpWdrHS3ee4OByeehpTdv329++PPTV7ifSRhfpffpzw+b79++ + WQo9nwwM3vO2OGrPlho0Colgb2YWMOdpjKXn6hpbvX1Dj5/Cdo4AM8gc+1AS4n5JKZYi + CA3MEdjQTx8P9XlbG+vOlRo1ecAMBp2oM4uwZyOyKndH//AowQzbeYf5y8eT9AeCGjFv + rBPMo8P9HW5kVsAMBr0vs7IAmO2I+SG07VfLkb+ZSUr6VVoIOsa8/Aoa90PEbAfmAuW3 + mZ3uTl8881efTdof45l9nW7nv2AmLeeuxOJ0xsz79bDofk6s7V2rSeIXu/fzwTrDHUC4 + lBRK/+PMuy6gKckMtwzYmbFLSXu0tqfnXi+vwhXGNnwlIXE570oNmhj487vV5ddz02MP + Y7VNXExmsuNvlBw6chRuGQBzYZGl8qKzrQu8CpjDwLwFzLs+l9QvgHkLmMNR5q4258VK + S1EhXEDDTYO4m0OYGeuMa5vUu/nzZ7yfcQ/DfTsFexX2KuxV2KtItwLYn7E/Y3/G/ozv + GeD7JKQzp7iEsFdhr8Jehb0KexX2qjhrIN1L7FXYq7BXYa/CXoW9inTmFJcQ9irsVdir + sFdhr8JeFWcNpHuJvQp7FfYq7FXYq7BXkc6c4hLCXoW9CnsV9irsVdir4qyBdC+xV33L + q6j3TBl+XjLhmW/S7dt9EvrGc7G7nhFNoYbOCWd1HPQscJI8MYmfc995Lhaf4fB3fe/a + z9Q6qwPOoaHWmSwUPHuHimcsUe8srVQKnpmWSqfg2XhUPAORgmddUvFMUwqeXQsPulPu + jGJ0yBLlzqKm5JnjMDaBYmfLp1BwhkAKFWdFUHMmCIz4odjslxQKzviBDU29WU5UnNlF + CE2x2WzATL0ZfEjo6OBB6sxaTKHiTE1U3cSAXArNTk3ZgabSjFwCOio1dWYhA3S0vqk0 + 8xr+UElQw7ZG2NSYbY7+OouooyPdqTLDPkqNsIH7SCoInmyRCrPr0URzGPq8+z/NILQD + A95AgKM3E/jwQWSPaK7oX5T9gXgH/xK9PZniYBr8W7wCeAXwCuAVSL4V+B8rHBE5CmVu + ZHN0cmVhbQplbmRvYmoKMjggMCBvYmoKMjQ5MAplbmRvYmoKMjkgMCBvYmoKPDwgL0xl + bmd0aCAzMCAwIFIgL04gMSAvQWx0ZXJuYXRlIC9EZXZpY2VHcmF5IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZ + lW1bldKiGGffuqOzM9Ob2TXFkwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiE + b3k73/v9/X7fe0RtnabvOylBVHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX + 1mfS2LLex7V2+/Y9tZVlYCHqLba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMP + mrkw09GcdKWyLZFT5qIoKq9iO0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65E + Gc9fVPZsNRSnDeOcSEMaKfKu1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+ + yWCoibXpspkdhX0AdirL7BDwBejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9 + NeDOFK7F8dqKH14tAUP3VCNojHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapm + CrFd+67qJe57AnfT4zvRmzkLXKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnc + zSj3HtURG2ejUoFWeo1Xxk/jufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0b + VWFWcWUL3f/HMoSP2Sc5psHToVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+ + LGwluktUbinU6j2DSqwcK9gAdnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5t + yqgpKBPNs0RmlLFbo+TdeNv9ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+ + G7Z+XD+l5/VB/TwJPa2f0a/ooxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHy + tFtkkf0PQBn9ZgplbmRzdHJlYW0KZW5kb2JqCjMwIDAgb2JqCjcwNAplbmRvYmoKMTcg + MCBvYmoKWyAvSUNDQmFzZWQgMjkgMCBSIF0KZW5kb2JqCjMxIDAgb2JqCjw8IC9MZW5n + dGggMzIgMCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRl + RGVjb2RlID4+CnN0cmVhbQp4Ae1aZVRVXbde+zRw6K7Dobu7OwQEpKS7W0pAQkrKQEJS + KRMlRAQEfOlGBREsBERQQUVRkJa70dfvvXd84/t177/rHmPv9ey55ppzsiew5ljPBECw + 0DUkJAABAAgMCg8119ci2tjaEbHPAQ6wAXrADDhc3cNCNM3MjGGV/3B9nwLQwdSE6IGt + /6D0n8TUobBDACAzWIHO+xf2OMBuv3DUAT4eHhIO65w+wO4+rvA8VA5jkVBLc20YjwKA + w3v/xCTPDrDbT0y9cIBdXUO9AWD+AusTXV29YcxC9Qu7HWCJAxzp7g3bZ4FjwNAEefgG + wSLYB0bNwzPMHQC+y7COh0eYeyAA/DgAEFqBgcHwvODBNxFwDwmF1wrCN+A5+HbwCF9O + rwGQPQQAauEfWXAyALczACCU/CMTOAbHJgZAXe0/sm/mP78nxPAozEta6qc5CK8FAHpm + f/8bHwDYHAD2zu/v71Tu7+9VAYCcBqAzwD0iNPKnLkAdDGhACigBHZxBAuAGAkAUSAF5 + oAw0gC4wBKbAEtgCJ+AOfEAgCAXHQSxIBKdAFsgG+aAYlIHL4AaoBQ2gGbSDLtAPRsAY + mAQvwBxYBMvgC1gHOxAEYSE8RAMxQQSIFxKGJCEFSA3ShYwgc8gWcoG8oEAoAoqFkqFM + KAcqgiqg61A91AJ1QoPQGPQMmoOWoFVoG4FAkCHoEGwIXoQYQh6hgTBEWCAcEF6IEEQ0 + IhlxBlGAqEDcRNxFdCCGEU8Qs4hlxBpiH0mKpEcSkcJIeaQW8jDSFumJDEHGItORechy + 5C3kPWQf8jFyBvkBuYlCoahRBJQIShGlh7JEuaKCUbGoTFQh6iqqEdWNGkfNolZQu2gy + NAtaAC2P1kdboz3R4egUdC66Cn0H3YOeQL9Bf8MgMXQYHowsRhdjjfHGRGEyMMWYm5j7 + mIeYOcxXLBJLj+XHKmKNsU7YEGwy9gL2OrYN+xD7GruGw+FYceI4LZw1zg8Xj8vBXcW1 + 4h7i3uA2SPAknCRyJEYkLiQRJJkk5SR3SUZI5ki+k+JJuUgVSU1JPUljSXNIb5B2kj4l + XSFDk7GTyZAZkbmTnSDLJbtJ1kP2kuwbHo/nwavirfFB+DR8Bb4VP4H/RI4hJ5IrkVuS + B5Gnk1eSt5M/JV+lwFPwU2hROFJEUeRS1FEMU7ylRFASKJUorSlDKc9S3qQcpFyggqgI + VMpUNlSRVLlUt6keUn2kJqUWoNaj9qBOpq6g7qSepf5Bw06jQmNPE0NTTHOP5jnNFi0z + rSKtLW0MbTFtG+1L2l06djo1Ome6RLpKul66RXosvSC9EX0gfTZ9A/0k/QYDC4MqgwtD + MsM1hmGGFUYaRllGW8Y4xkrGfsZlJkomGSZbpjimKqZBpk/MtMwKzE7MKczVzGPM31nY + WbRZ/FiyWZpZZlgxrKKslqyxrFWsI6zf2FjZtNkC2PLY7rO9Zadgl2d3Yc9kv8P+ioAh + SBDsCCmEWsIzDiSHKIcNRzJHLcdzIoooQbQnphHvEGc4STnlOd05z3G2cy5x0XNpcYVw + XeQa5trk5uW24E7kruN+xYPnUeLx5Sng6edZ5+XhteRN5r3DO89Hw6fFF8pXxTfBj+SX + 4ffkv8A/wL8pICRgL3BG4C+BL4JcglaCaYL3BD8KcQiZC6UKtQh9ECYImwufEm4VXhHh + ErEWyRTpEFkTFRR1Es0VHRTdE5MW8xW7JPZEnExcU/y4eK34ggSrhLlEhkSXxKakhKS3 + ZJnkUylKKQOpk1ItUqvSQtLu0qXSkzKUMgYySTLtMt9lJWT9ZK/IzsqxyFnJZcuNyGPk + teTj5e/JrytIKgQqVCu8VeRWdFG8qPhCiVHJUilH6ZEyubKRcobygApGRUclWaVbFVLV + UE1Q7VD9oaamFq/2l9oPdXX1BPVODaChqZGk0auJ1tTXTNcc1sJrmWid15rQZtC20S7R + ntHh1PHUua7zUVdCN1y3RXdXT0MvVW9Yn0LfQr9If8aA28DXoM5g/ZDyocRDA4YUhlaG + JYbzRkJGx4xajIGxgXG28bPDxMM+h28f3jbRMjltMmlKMPU2vW26Y6Zrds7s+RGeI0FH + 7pmjzE3Ni80XLSQtYi0GLeksXSxrLLes9KxyrGatRaxjrAeO0h11O1p/9IeNsU2xzZKt + gu0p20k7Hrtwux57Wnt3+wYHpIOFQ5XDmqOOY77jWyd5pwynF84izvHOYy5cLuEuA67M + rgGuHW40bp5u99zx7i7ujR44DweP255oTzvPOi+Ul61XnTfK28673gfj4+DT4Evi6+zb + 5Efu5+HX7k/r7+/fE8AaEBYwEsgdGBs4GSQWlBY0F6wUnBv8KUQ/pCJk55j1sfpQslCv + 0K4wtrCosIlw8fCs8HcR2hHlEbuRtpFNx2mPhxx/GCUclRH1Llo3uioGEeMS03GCcCLu + xHSsSmxJ7E6cfVxbPGt8bPx0gmrCpYT9ky4nuxO5E1MT3yUdSrqZTJEckjyRIpdSlLKb + 6pLac4r/VNapz2mWaS3p7OmJ6W8zjDNuZzJkxmbOZxlk1Z6mO33i9PwZgzN1ZxnPxp9d + PHf43N1s9uzU7JXz1uc7cgRyzuds53rkPsiTz6vIJ8uPyJ+7YHjhbgGxIKtgo9Ct8GGR + UtHVYpri+OIPJUdLekslS8su4i9GX3x3yepST5lkWXk5ZXlc+ccK+4qRSqXK6iqWqsyq + 7ct+l19eMb7SflXsatk1qmtJ19aue15/dsPwRnu1eHXlTfqb6Td3bgXfelNjXTNSq157 + p06g7mI9dX1a/e7tY7ffNTg2TNw5dKejUa6x5i7P3ZImmqaMZqg5unm1xbfl9T27e49b + jVp729Tamtsl2qvv89y/9BfzX7kdFB0ZnajOhM7trsiu1e7A7qUer575Xufe6T7bvql+ + i/7xAZOB0UHDwaEh/aH+Yd3h3hHtke5RrdGuB5oPuh5qPex+pP2oZ0xnrH9cf3zwseHj + 0QmTibEnFk+mJm0mX045Tc0/9Xy69Czw2erziOfbLxJeIl+mT1NM575ifnVphmemelZy + tnlOba7vtfHriXm7+fk3fm++LsQsIhaz3tK+LX3H+67uvcL77iXjpalll+XlDxEf9j9m + fmL4VLEistLyWefz2BeHL0urEV8RX899Y/tWvSa/1rdusf76e/D3HxunN1k3q7cUt4a2 + bbff70Tt4naL9gT3Wn8Y/ZjeD/pTC/ypBf7UAn9qgT+1wJ9a4E8t8KcW+HMu8Odc4M+5 + wJ9zgT/nAn/OBf6cC/z/PRcIcQ11/VkLIOEnwssLgK/XACC3BYB2DAAy5P92/heP8qva + AEiYFDoglhAwl0QHeIEKsAPxMKvwEmKDwqBJhD5iCOmGokKNoMswWdh8XCPJezJx/Eny + BUo7qhEaOdpr9JQMgYytTFss4qymbM7sTgQLDgOiCqcYF5GbnoeMF8sH+Lb4vwqsCL4V + WhR+LfJMdEJsTHxEok+yQ6pZul7mpuxVuXL5IoU8xTNKCcqeKuqqzKpf1YbUqzQSNV20 + lLXZtHd1ZnQ79Cr0TxkEHrI0VDbiMsYZfz08bdJnWmtWeCTFPNTCw9LGytza6KiOjYqt + jJ2oPb8D0ZHFidGZ3oXGlcqNxp3Og9GT1YvLW8hHzlfDz9jfNsA20DBILpg7hCZk/9jH + 0OdhA+GNEWWRZ49HR3lEH4lRPsEXSxG7Gfc6fjih8WRpYkpSVHJ+SkfquzSadPWMwMyL + WSOnd89KnfPMLjs/lUuep5efdKGjYKdIsTi6pLV045JU2dHygIqUyktVdy6PXlm4unOd + 7oZ4tfFN31spNZW1XXVvbiMb+O8YNgbcPdd0p3my5dO9/Taadu778n8Zdth3+nfFdmf2 + 5PVW9t3srx+4O9g81DzcNNI42vCg5mHVowtjp8bDHjtNGDyRnGSY3Jmae9r1rPJ58gv3 + lzrTPK9Qr97PDM/Wz+W/jp33fHN4QWKRZvHr2yfvmt+XL+Usn/6Q//HWpxefCV8Sv5J/ + 61/v2NjZrtwb3t//mX8SmEnkh5knF5hhagTLkCCc/z4ENyIPSYW8jDJEY9EzmHHsFG6P + VIEsmxyiiKHcpk6jpaJLpd9itGEqYp5gWWPDspOybxOWOV4RRznbuGq4y3kKeXP40vjj + BEIFvYVchG1FDovqiqmLy0jwS3JIUUsjpTdlPsm+lnsiP6DQqnhVKVX5qIqwyp7qI7Uq + 9RgNc00BLaTWjHarToFuuJ61vrwBi8HeoVnDbqNrxucOh5vYmWqaCRyhPbJn/tHileWY + VZf1naOXbQpsM+3i7Y85+Di6O9k7W7pYuFq4HXG39LD1dPby9Q7zifPN9Mv0jw7wCDQN + Ug0WCGE4hji2EvoyrD+8IeJSZPrx41HO0UYxMicIsdjY1bjp+L6EupNViY1J48krqRSn + JNIs0qMyLmb2ZX09w3HW7Fxi9t3zS7mcefb5Fy5MFNIUWRSfKxkr3b1EKNOFfweyK5ur + Zq4grwpfs7qeeKO2+vktbI18rV9dcf14A/aOUmPI3WtNsy3U99Rb/dsK2nvvf+lg6dTq + CuzO62npfd2PHhAYNBoKGs4eaRidfLD9iH1Mdlz1sdqE2hOVSZUp5afyz2SeS7wQesk1 + zfqKegY9sz27PPfq9ch8+5vqhYLFq3De95Z4ls0+nPhY9enRyu4XiVXfr1XfFtelvqdu + zGzpbNfvcu5d2Mf/zD8EMDATyQbEYObRFSSB6+AJhIFMoEvQOsIFMYl0ghm6G+hAjB5W + EadBYkUaS1aDX6bgobSmSqeupRmkfUQ3RN/MkMvozMTDtMB8jcWXVYD1A1sdeyRBDeZ1 + BohZnKZcDFwvuEt5nHm5eRf4LvO7CRAEXggWCFkKUwoPiiSKKomuihWKK4q/kIiRZJFs + lbKX2pO+JKMpMy+bIscvNyQfoECpcFvRSnFDqUhZVXlWJUmVV3VQLVCdTr1LI0xTWHNe + q1jbXIdEp0v3hJ6c3qp+nUHwIdFDnwxvGx03VjqMODxqUmDqYSZ5BBx5ZF5i4W4pZPnZ + qsk6/qieDd7miW2pnZu9iP2aw33HdCdzZw7nZZcm11Q3S3ce9zWPPs98L1dvce9dnyHf + Qj9vf7kAZMDjwKqgsGDdEIaQxWNNoelhduEiESDiSeT14zFR5tFSMYwnkCdWY2fiHsV3 + J9w9WZN4I+l6cnXKrdSGU21p/enjGa8zv54GZ6jOcp6TyTY475ATknsqrzK/68J8IbpI + vNi+JKO08+JWmXR5WMXdyq3Lmleyrj6/zn8jonr0Fm9NXO1kvfjtrIbFRs275U0/Wpzu + dbZxtafcX+ow6mzsZu5J6n3fbzrQPiQ4fGrkzQOFh1mPFse1H9c/EZ5sfGrznP0l6hVx + Nmaeb1F1Cflpa738IP+/+PSDPQEjB0BJAwA28wBYlAJwpgCmzxMAYCQFwIwcAEtFAL31 + AtCbpwCS7f7X/iEJrEAkyAX1MAe9CPYgBkgM0oOcoeNQNswnd0PT0CbMHksizGC+OAfR + jJhBYpEyMBtcgpxC0aLMUXmoZ2h2tAf6Jnodo4k5h5nBSmKTsM9wkrhM3CKJNkkVKZrU + n3ScTJGsCk+NT8B/Ifckf0MRSLFFmUHFTlVPrUM9QxNJS0NbR2dGt0qfy6DAMMuYwSTH + NM+cw6LLss1az+bNTmCfJGRyaHHsEVs5Y7hUuPa5+3jO8FrysfMt8zcLJAuaC3ELrQn3 + iRSK+olpiDOIf5KYkByWGpAekOmTHZEbl38J83NbyjgVoqqSmqV6hEaBZpfWkg6Trp7e + Cf0Gg1eHZgynjCaMHx0eNhkw7TPrOdJjPmDRa9lnNWQ9eHTUZtz2qd2M/YLDB8c1px8u + OFdaN4K7uIe6p43XOe9xXwp4X8oJmAxiDfYKqT+2FaYTfjZi+rhoVGz0gxNsscfiuhNo + T/on9iYTUqJSJ9M00lszxbPqzwifvZEtfP5OrmrewAW7grWizBLh0slLJ8ulKz5U3bji + d038+m711K2W2qr6wob8xvNNZS23W/vb33eQdcn2uPedHxga2hgVe+gwlvt44Mm3p/LP + E19OzPDNRc63LCy+Q7/fW176eGvF8fPaatDX4TXadePv3htRm7Fb3tv6O4w7M7ulezp7 + H2Em42D/EIM7FRJABegEr8AmRAuJwB0GTnBfwRnoCvQX9BT6giCFOwe04P8lCYhyRB/i + E5IBqYs8jqxFfkAJofxQtahvaCV0EnoYw4DxwDRisVg7bB3Mybvh7pOwkcSTzJHqk9aT + sZCdIlvHe+NfkB8hH6NwpvhMmUzFStVAbUS9RJNKy0vbT+dPT0l/l8GREcfYxOTFTM88 + xJLAKs+6ynaT3YfATZjluEh05uSGeeTb3DE8+ry0vDN8tfwJAiaCBMGvQr3CBSL+ompi + dGIfxLskqiSLpQqli2QKZcvkLsvXK7QpPlCaVV5XpVITUDfU8NPM1WrVXtKl09PXjzO4 + dajdsMOo33j08LjJU9MZs7dHPptvWexbYa2pjjLYEG0F7GTsVR30HM3gHcnL5ZhrrFu6 + e4nHNc8+rw0fAV8Lv1T/toCVIJ5g55CiY+NhZOG6EScjO47vRivFRJ24G7sZL5MQerI5 + cTdZMyU1dSSNMT0woyuLcDrmzNQ5uezCHESuX97EBZ2Ce0VCxRWlhIulZWzlZZW8Vbeu + yFy9f13vxsubWTXmdYT6lYbexrym0BaLVpl29r8oOva6Nno2+7YHSYcZRiUe6o75PD79 + xGoK+bTzefJL9ekfMx1zWfNGC1SLD9+lLKkvr32sWNH5/GY14RvDWsV3wY36Lent27uy + ezd/5l8DHAOloBsswrsGL6QNuUIJUCnUBj2HthCsCDWEOyIL0YR4i2RBWiDzkbMoUVQc + agIthE6Gqwo1TAUWhz2GncGZ4XpJVEnaSNVJ+8nMyObwEeQU5DUU3pS8lB+oGqmTaCxp + RehwdMv0YwxtjDVMVcyXWMpZr7BVs18jXOQoJBZwFnOVc1/jaeBt5RvifyawILghjBVh + FhWCKw5LiSDJfKlu6TVZPjlH+WKFKSU2ZUeV66qf1dU0MjVntcV1UnRf6EsbnD303cjJ + +IGJsmnNEW7zcksmq4Kj9DYldrz2tY7KTiMuDq6f3bM8CV5VPty+hf70AdlBuODkkO3Q + wLDZiMORnVFi0aUnsLGRca8TDE+2JYkml6VSn0pK+w5XjQun7c88OKeWXZPDkZuRtwr/ + vXYXcRUnlSxc1L5UVrZTcbSy4TL+iiecMbobYdUjtzhqwmqH6jlvxzRMNgrdTW1606Jx + r7R1o936fnMHTWdo1+Memd4LfesDToMdw8SRtNGVh0cetY/zPc6eWJu0nRp5Zvx84KXJ + 9JMZj9l3rwPmlxbsFnvf8b9PXHrwgeyj8ifXlfjPp76kraZ89fmmu8awNr9e8d1yA7dx + ZVNzc3rLcWtm23n70Y7UTv7O5q79btnu7B7Hnste+d7cD84fNj/O/Oj+sbEvsu+yn7// + s3781YN1sH8AUu3ggOBQorG2zs/X/7tHYECE+9/WaOARHxRgctDbxQDf7z1cdYzgkQ2+ + f4QE/OyDg3UgFs8gKwtYdoBFgtxMTP/Gal6heuYwhtdCZiHhWgeYCcZeIeFmln/L42N8 + tE1gjIfleZ5hur/tlPu5GsI9aIACljeERphbwZgHxp1hkRa6MKaC8UKMj+XRv3XWPDx1 + /pYjEF6+enC/2YEOgsY3/NCBLzoYc/kHGx3EAPtCyAEjEAA8QQTc8eUJguCeMGOgDXT+ + fooCL7g+C4X3Wk8QBvzBWxgHwiuC4TXBMCb+raf9bxK9n+u84XX/0yIR7i8Lhr399vnL + GxH2+dumL/CA8W+5K+zjYO4gujBn36R/fP7WOLD3MxqJmxJLEru/Y0LxoaRQsigtlCpK + DaUIiCgGFAsQRcmgFFCaKHWUMjynCPTAAmzZ+3eMB/YDG7wiC4Ojlax94NmDn93t9yyw + /qnt+6/3f4sA+D782PzxdwRw/+TPnkD4SwMMnIPSpAPUXfPl5MH4369wz6jwg3ft4JDo + UF9vn3CiJtw16SlCPBTkLiZClJKQUAT/BY1sEFMKZW5kc3RyZWFtCmVuZG9iagozMiAw + IG9iago2MDMwCmVuZG9iagoyMCAwIG9iagpbIC9JQ0NCYXNlZCAzMSAwIFIgXQplbmRv + YmoKMzMgMCBvYmoKPDwgL0xlbmd0aCAzNCAwIFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZp + Y2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQ + Ighaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBkM0nWbjbr7ia1pYjk4tEq3kXtoQf/gB56 + 8GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPeN+99b3bfAA1y0jT1gATkDcdSohFpbHxC + avyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4FbVsN7+3eyd62a0raaB4T9QOBHmtkqsO8X + cQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8rPcRZInxANS3Of024U80l00CDSDiU9XFS + PpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzV + P+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0nolRx2S4N8Ziu/VbySoJwkDjKZGGAc1pI + T9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwa + MTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdRpN08/igicZRDtQiS/EH+Kq/JT+V5+ctc + sNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8Rz + sPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT + 5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLYS6sL4mBtxwidlYYp0m2R+iTVYGCavPUv + XT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6j9vH/Bfk94rnnygCL2zgyJm6bVNx7xCh + ZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWfILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunK + YlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyhOUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a + 1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKNzM3CmVuZG9iago4IDAg + b2JqClsgL0lDQ0Jhc2VkIDMzIDAgUiBdCmVuZG9iagozNiAwIG9iago8PCAvTGVuZ3Ro + IDM3IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGdmkuvHjdyhvf9 + K3ppL9xustm3ZaJckAESZGIBWQRZOGfkjAbSKJY8AfLv87xkVZHnJgWBIZ+P1WSxbqwb + +ev8+/nXeeW//Tzmc9vmz+/mf53/PP/45kuaH77Mqf735WH+YV32Wf+Gib/MP/7zu88P + 7/7rt7/8/GH6/B5UOQnZOqejzGlLy7WVebvz/PBx/vEfPu7z33yqO+5XnVWOmFTuazmO + 0yYek03Md50IlpT3pdzHvK9l2aCtIjwd4da25U/KednXlJl4LGW/89SmXj71hb3Xc9ng + vU08fOLzvUvKy32ehvFrm5e0LykfzvgLm+dzq9LZ131Z82Y4X9h8W+82Ma2DhG6nsnO+ + pbRs+wbnkHml8yuc5+tYEtIuu0vypY2RZJt0LEdxCl/aOG/LccFs2a/lvKHgVZE719t9 + DJJ8aXPjuqx5CTG+tLczXbCL81yfMY3xVYNM15xPBIQpleK6xlrN0K5mkenY57Re2OwB + ExM2m9KTKYgtXzDM323bkUwxdrG5iuzHf3n34eff3v/3uzefPnz6/P7ju98+v3/Q8ViX + 87pWNn/+gxOGqJe8H8dcznXZTqT4kdMhMd0XsGtO5V7WfSvTXvKS+TWnG8PdE4eCo5b3 + +WHOq85cBrIjN83J+7nc93HPO8uTzqIgRwZpWzWx6sZgCqzve2HOusPZuVx7Kpyii+N0 + bvPGITkOTmy5YDofF7ttBRu++FjOsuzbdk2alddzn0tCHTCTz3MpJ9IsGUAl8eRorOxR + QJ3We845LffODFSdL37kBJI7lSnWpOtc0n1hYSuy22/cEuhK4UeBUshCbc/k9zD/MaDT + INVfcGq/49+fmpt781O1kHX+6Q0eLNXBD/ojf4glB2LOc+V8GhSTd3Y2xaAPqLvL2RUj + fTSuXTHpQrua44qZEtZ0HRhdKKavcsWk82LOPSgmSwB3xghdMblgDdgNCg3FZE5kOThA + oZgtXUvmEIRiNtTQbMcVs4H6QrSmmGnbYCth564YsNmaUMy2obyCNkMx+d7ljgbFhPxG + xcwOxdx/IjgQefAfXxA/Z2JQR+Yo7NVsOApo5a/fspXpKs8/EB22whn/Ia3TW2LD36WF + WDC//WX+t/m7v/pe8SvP3332H//xPYcQwHv7+1t8+dmnGGT67n++n/99fvu7+W/f1tgV + BvINigoUbZvO7uwETU7QG9/kk+3/0QHx4y/25c9PKH1oM6fvgtDfnAlHxpL/D8G4++M4 + blR4PRfhP75zCv/whCAnFMr7rp4/rMuV12PPk/9A7A0i9aa9ZQi7zvBxJnm8w6Kdgz7M + CeeC25SXa9OmehqwYVzOcmxkLgHINYsgqA0gsQVuIeIQaRn+5biVoRjmaU/VoeNWfHsH + DEQ6CETl4DRWTL4OlzyinpIDqlTZHkRPQd8GxKJpd860u+0V3Ac5LrRngq0nrkl7cjEi + 7V/GE9Ydnqkl6QTjA7tWHNKVMjnIhZvue9mOLOE2aWclbPKkHUImI0jXSCZd2tbtQLOm + 65xAwxxXiI+7PhwyqMNBJqHJ0YbISE+dFhOiQ1yor4zxqTHD+OmK6Cy7IkIoTySJGibX + jc9pbg+vstzbXnBx/FrXbb8Idzoj+L2a92bA2bKCG5PesQkDiRQSgEJ8CJiTuxNdC64x + 6N9xlZxz8psBxKG7SZU7GhIKsmzyBe1UMwUl3Z2a9v2DIuxzAjErXJ3Srkdx1CbmmkWT + QCiMNvwBGjhxWBylTKq3Hzv+yXXX8nbyrwG0KblQsmQCUSwl+7GdJht2TgwwcuI7Q6Ai + UistqioKqQYBX4dxK1e2RCCdaQOGDIl57IQPUmLdIWVd0glRvq4SLLLQwp7lS467yt4g + RHZ8JjzEOuqOa7urAgI70ljJ9CR/o6BBprQFncM6BEMKxX6OHfdhkEYBmGKd8ffwmofw + mTrcx07cbSlRpSOvID5J8EISDoFH4yjWSXUmCQIFyaesrkNIPhF0l4SO55qOpPPocpZd + lPvE47gkBohx5OuqBI3vrNQW7MgrIE7BM/4emil48IooFj96OJsKbuCx33QI5u0OzkHu + JgtGLRcYXlKJLVjEqXnSokP3yG8WjAdni6gDLfFm9JvFxmAx9+8QHTULYw7yg9XR2knz + naWtFnwMEofTZzz5PhxN40de33EEy0ZISM59pAtpCF9Uby7dr0avSTWuirQevRwyaMFB + LuJMBm+pgUUvYiBYBi1scijgFZY2Z8NwSUMGLWxWq3v08nHXgkMGLTjIxdPRmrx8564F + g4QWfEZH0WjtK5SVG/WGtbPsWgihWPTy8agFh309enG0WvQqSl/utdW0zecHSCIwZx0w + Z6BQeqQ1gtdEJJN5j8Gr4Acom5vbqDGwEFVo0+APbCcbIwUnp0Gm0evH3q+mRbZ4UwKw + 4kp7/HIQCIMXh4W5b9S3RNkYU4KjCtLQUTs4Z4qGwDLle1PYD1583HlxyMhL7D1EsGmM + YDqMayLGDH5bgiTTUESxGNMh7rd9Xc2HzG8XuiBk4o3oGsFgAU+ehwgm93DslIeiO7Cj + W2raaiQ1clRtq8qNSPRonXnpjt39tlPQI5/TyX6veInw8ByI+yLGDJLIN+2MlU5L0OoQ + FOMRzNdJeyaJTD+GanuMYGTD13ESY3ydjuimxsUgiWoZartEBBsgFsF8XY18Hq8MO+sC + 4hQ84++VCNYrM+xDLcRaxrTMEpnIukbIB5pfeL2Dut5STQDk7CqGyCxW/ofndQANK2yX + BtMTyLfGsYJipbZH8baxRmeXVHkgpLAx+wStNlZjy6hvkHqaKqmvrggJ2IwPyIQoWctP + A20IBySQZoQYgCy50Yoc2xRE0iQAloA0IQ1om6yn2LmNkdofX9DHy9bsa1vmepKXOucG + qfIzvTnIBao8iIYUfTfTktI1+c+uBYc8nfF0HCtqB0w4ut6SPBm9AMzDCEn80Byn1cdd + bw55OsPGtM4ahm65Dhn05iBXgRMSOlEbFTo4WT7F+e16CyGFObgYn8heegtd+pyvR0m2 + pb150rj3+v0jIOxk3XqxLlLyQotL1Zi1S5zcnchE65gun1sZ3ThOhMJkgNjjvFOaOhol + jxcx2fbCWg2gVUaRgxRdAmj7Y2avmKOt7iWub+GQgRsDQVc9VljOsZxEnqA80/O9zxon + fQ7db9rM180ck4mKh0P1jQsuAJ2ZAI3MOEVDpFTZvdWTm1Uv0Ygo6YZZ8U+hocqO7jjd + dSD1xKv6C8imOarr2rqqAhrcJ0XSTjZzUcPDa0C2hU6uGPF1OO5z1ZXHgB390mnVfk6B + QcAkDyM6h3Vss5dLDTPH3iGNAjD5OufvtUgZM3Uojv1Sly7okCJIswZJOATKjKNYJ46M + 70wulE56AAFRE+U8KZtjHdrkGoBLhUESMo6Lq8BOwQAxjnydJOh8O/bay66yGSiwdQOd + tez/aq0nM+NiYCLcSx4qXakJNMK0CfGQxUUTQ+UE9RO3OitpxACotyHxGcfYf782C+nj + UX0eNzE3tjJseK9Oy1T4jQScsv5l1pcRLvlWbuoXHU3dFGFudaJSCzEamzUA90DKYUjG + jb1dnMfImO2oEMUosxrdfNcqw9dcSaMs10rOqdaoy3nS0IWi64QqlABw4auI0tTAhcir + v2PWlMmMu5x1sVJVF4rNXOIFLbpNfDQavnAh1ixDK7qcNRrkXNGZ6PpmDoCWkDOUXYOc + g9mQs0Th2tTvUc4aP4tE5H9Dt5E0nswXzeuGEyIxbTyNCi6HSMm6yUt9kmkdE+EOiAM9 + mIHuHnWVOoA27gXxoR3LSceiBi/fyQA6906Oz6me24FB4yumY/Nwr2ygpMh5MUgVpPHi + ILfgvHPndZw45lADrn5dVa05v3m/xa/mOJaD9kGNXcZLdkDnJUADL5Nv/zQKUVlsOyov + 3M1tCXLEhG5IgCi1pTerq1rk1yH4uJ1P0qKv0u4qWrl2JNEjD+AaeIDAxkpt1tdxR3lc + ud4kBnaUm5T2+/4xDhptlSSk3sLFxTRXvxX3NEB8/1jXqXxFkT6zXpBeOVVVVilIBUaV + SWGAmBR8VdWcSYFsSXRxYe1yyTuGeVOXhRRwApJ5veh2KcgsTOq2v4+NRrmOWOVS6Lg7 + pO2PpEzDA5Vj9OnlmQK3rtJqdmJ1WuGvMuie7ztEebel2QaKsqxQ0JCIE4ks3y9kXsLS + s3eHPJ1hYy7mn6+oDzrkNR0rJT9lxVCnqUwf830bc849v39lxrPvWJhLwHDilqxOo0fU + tvFkUT2ESkgASGobvx3S+JFPlkIJ3SYkUnkr/1yysbPJfqzTfM5LibFe+PhaZT2qWLve + HDLozUEuUFFC4Rt1GqTVLH/Qm0P6kjbj6bhrWvEJSmhcxRyyF8r4QW+KnWN97eOuN4d4 + XfZkXCOuMHS9+Yyut5jkKlC0FSFRGRitwmJacn673kJIoTcXo8m+5t6Nll5f+5xn0fHx + XZwXQIUE6dDtjyIt0ZPHLQLUkG71iEGcUDUX8yrv4vZFdkyZMFRoE0UGhQ/v5bymodhT + s7MXaAGQBFqBFqChpuF4VnJeskI9nfC1XDdQACqkGBsGkDQbG6QvdYpTrb7ieStUuAJ4 + poUwa1R0EPfkuNfAgdHTwjoOfK1vY4CqyMaGz0GEvc4M+h7dwinVUcUDl3SNb2qnxlGt + zCTDKylKeWU2QKweiXWSYqtHwJWpPmoF3SColMrmVALgdYxuRbh+fFSZSa+09sRtq8zA + FBCrK8Z1Xo907B0SFDzl75uVmUybC7dHldmGGtKl/MAkgbsIiEki1nVJoC0exuRafpsk + 9HSIZEC229bVpHbj+VZVoFXAMo1rp75xSZASB8QkoQPs64zv+mKsYXdJDBT4OufPe5j3 + Qd+CRjXH8yQrwv6+PEw//v2XNP/nF/wIkizEN16zyTYUYfVIRENMW8n8xcM4DXk8p+dZ + PJpU5zuG66Hcs31TBsOb076OR44dpwZyg7ajhvKkctS8KNQwkyeRZPD+rOGxsZ6namX7 + GhTEUlEXaDV4yQgUUmKSZYfOrYYDtxoaR+qnVI4ag5k3ZA+TfyMLqpJwKWV1HRynBgO3 + Gg7caujcKuMRHuevbtJHRkFwK+oeMdIUnThL9yTuac7rdZrpUG/o9oOevT7VjhjHF2Pn + opj2mMoQpC9S65BHivgsLiNsFY5Wls39UEXpI2ZrOyJ/+8pVjux9I+NyENflejxq6OgJ + jVvxbQ8yfGUlsKJ9TYf1hWHlsymwEdW05xRDKbcrcKRrbNybeGFALrom6rDGZ76UatMB + 81UR6RpKj3HOp48HPh0kPjs6+By30rcgw/msBFY+9atpT+d/VzmqK0fiGkexFVWTQ7BP + 5eE8SYxJmwomLaLdwLMKzp0DqHcKDSKQB+jQtWE6MF7Hgknj1HyjavEas8aJsRnYLQ2n + RCCJSbrj0VXvZmiZUQEzjyp96wA5eR2LcRkbtTGO5JWixglqpUWXDgVILWV0eoOvBoI0 + kw7Hk8ODx3IAdRDW90g6vHY+90tOzqVzcU+lpqmrwcaDdAwySsdAwbmjDYBtXdN4E5iT + 16VjPIV0bNws5dGbT9x4nnDjv/anuLqoVP+hFmP16aeaFhzptzLm4RFo7WWQZT19cvnd + P336w7s5fT+//dOzZ5ybnupjcdUh/5+QP3kd2ZDnl5HrzlflBH/tpTgPV4P66RvUtxes + bYOtb/D7/wXbk9hFCmVuZHN0cmVhbQplbmRvYmoKMzcgMCBvYmoKNDI1NwplbmRvYmoK + MzUgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDM4 + IDAgUiAvQ29udGVudHMgMzYgMCBSIC9NZWRpYUJveApbMCAwIDU3NiA3MzNdID4+CmVu + ZG9iagozOCAwIG9iago8PCAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1h + Z2VDIC9JbWFnZUkgXSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDE3IDAgUgovQ3MxIDggMCBS + ID4+IC9FeHRHU3RhdGUgPDwgL0dzMiA1NSAwIFIgL0dzMSA1NiAwIFIgPj4gL0ZvbnQg + PDwgL0YxLjAgMTggMCBSCj4+IC9YT2JqZWN0IDw8IC9JbTkgNDcgMCBSIC9JbTUgMzkg + MCBSIC9JbTEyIDUzIDAgUiAvSW0xMSA1MSAwIFIgL0ltNiA0MSAwIFIKL0ltMTAgNDkg + MCBSIC9JbTggNDUgMCBSIC9JbTcgNDMgMCBSID4+ID4+CmVuZG9iago0NyAwIG9iago8 + PCAvTGVuZ3RoIDQ4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDU4IC9IZWlnaHQgNjggL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMjAg + MCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDU3IDAgUiAvQml0c1BlckNvbXBv + bmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0AAADCoPdP + bQ8HESgMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBg4HlgLjgAAQplbmRzdHJlYW0KZW5kb2JqCjQ4IDAgb2JqCjc0CmVuZG9iagozOSAw + IG9iago8PCAvTGVuZ3RoIDQwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1h + Z2UgL1dpZHRoIDQyMCAvSGVpZ2h0IDMyOCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JT + cGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNTkgMCBSIC9CaXRz + UGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAB + DQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBp4HBk66AAEKZW5kc3RyZWFtCmVuZG9i + ago0MCAwIG9iagoxODI1CmVuZG9iago1MyAwIG9iago8PCAvTGVuZ3RoIDU0IDAgUiAv + VHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE3NiAvSGVpZ2h0IDEz + NCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVy + Y2VwdHVhbCAvU01hc2sgNjEgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAv + RmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tB2+IQGHAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDgHxgUbwABCmVu + ZHN0cmVhbQplbmRvYmoKNTQgMCBvYmoKMzMyCmVuZG9iago1MSAwIG9iago8PCAvTGVu + Z3RoIDUyIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE3 + NiAvSGVpZ2h0IDMzMCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIg + L0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNjMgMCBSIC9CaXRzUGVyQ29tcG9uZW50 + CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tCj+I + QGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAwGtgqL4A + AQplbmRzdHJlYW0KZW5kb2JqCjUyIDAgb2JqCjc4MwplbmRvYmoKNDEgMCBvYmoKPDwg + L0xlbmd0aCA0MiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0 + aCAxMTYgL0hlaWdodCA5MiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAw + IFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNjUgMCBSIC9CaXRzUGVyQ29tcG9u + ZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dCBAAAAAMOg+VNf + 4AiFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgIE/MH0QAAEKZW5k + c3RyZWFtCmVuZG9iago0MiAwIG9iagoxNjMKZW5kb2JqCjQ5IDAgb2JqCjw8IC9MZW5n + dGggNTAgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMTg0 + IC9IZWlnaHQgMjM2IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIwIDAgUiAv + SW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA2NyAwIFIgL0JpdHNQZXJDb21wb25lbnQK + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/khVBh + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGPgaGPzvAAEKZW5kc3RyZWFtCmVuZG9iago1MCAwIG9iago1OTAKZW5kb2JqCjQ1 + IDAgb2JqCjw8IC9MZW5ndGggNDYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9J + bWFnZSAvV2lkdGggNjAgL0hlaWdodCA2MCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JT + cGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNjkgMCBSIC9CaXRz + UGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAB + DQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBp4HBiowAAEKZW5kc3RyZWFtCmVuZG9iago0NiAwIG9iago3MAplbmRvYmoK + NDMgMCBvYmoKPDwgL0xlbmd0aCA0NCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUg + L0ltYWdlIC9XaWR0aCA1OCAvSGVpZ2h0IDY4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xv + clNwYWNlIDIwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA3MSAwIFIgL0Jp + dHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt + 0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYOB5YC44AAEKZW5kc3RyZWFtCmVuZG9iago0NCAwIG9iago3NApl + bmRvYmoKNjEgMCBvYmoKPDwgL0xlbmd0aCA2MiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1 + YnR5cGUgL0ltYWdlIC9XaWR0aCAxNzYgL0hlaWdodCAxMzQgL0NvbG9yU3BhY2UKL0Rl + dmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtXGlTG0sShGebQwgk0H3fo/tCSIDB + xuD9/79pM6u7Z0ajC0yPsCOoD4BiN0r5ytlZfVTVwcGnfUbgMwKfEXh3BA5Ds3dDW3ZA + nP+FbPyO5W/9s08u1C9fvnzV9s2SGX9wraLxbswqrkSqIR5ZN+3461cF+j1RFrQAS5dH + x8fHJyEZXB/xOxTkP0Ws0DKywAqkp6eRyFkIFomcnsK9YEaUwYw/QswVxtAeCVYijUbP + z88vLBtcRqNwHhHMEmQifuti08H99g1oTwE2SqCxWDwev7RqcBiLwfU5MBPyMVnx9hAT + rgQXaM/OgDVGnFeJRCJp2eDyCq7jAH1+dgbEYDIRv4kTGi6oIGgB9gpAU6l0OmPd0ulU + KpkEaEAWxFh7bwRs4J6cRBDbGMGm0plsNpc3VrBgxlc+l81m0ilCJuIIQ/w2wIoMRwhu + lGiTqUwGUAvFUqlUplUsmTiD02Ihn89lMqkkEUdBCg34lYvOg3t+ESfabL4ApNVqtVav + 1xtWDQ5rcFwulQr5LBHHEeK3AfbBjV0mkkBbLFWqwNlsOWJta6b8tZqNRr1aKRWBOJm4 + jL0NMMn79RvJcB67TKaBtlytNZpOu9Pt9nr9fn9g0eCu1+t2O22n2ahVy0CcTrqAXycS + DK8LN5MrlKr1ptPp9gfD0Xg8nkwmU4sGd3A6Gg763Y7TrFdLhVzGBUxV20lhgfvtWEU3 + ky9Wag2n0xsMx8B5PZvdWLfZ7Ho6nYyHg17HadQqxbwGjMzxGsCHzBPHJ0KGTL5UqTfb + 3T7RAup8vlgsbq0aHM7nNzczIu532816paQBI9VB1XYFWLMhEr24TAJutd5q9waCdg6c + d3d395YNLuF4LogHvXYLnCDgi2gEqrY7wAivkPfiMpHOFSv1Vqc3HCO2i9u7+++0B8sm + Tu/vbhdAPB72Oq16pZhLJy4vRNV2BVi0QdhwlcoWCBdcmN7Mb++A9PHxRyj2+Pjw/fsd + YgzAfQIuZFNXUDUyYseSU+HVbCjXmoA7ub5ZAC2x/oQ9WTb6hOtHIF7cXE8AuFkr+xmx + jcEqvKdnF/FEGuRttnuEi+A+AOzT06+Q7OkJkB8QYgLutZugcDoRByN2BdiENwY2FCsN + pzsYA+49gvuTUJ9DMvr+iRDfA/B40HUalSIZoZfclgAzs0F6RRvKtRbgTgkXsQXWF2W/ + rZp2+vz8CzEm4CkAtzQjdIA35gwd3nOEN1esNtr90fRmQbgI7YtVmCvOXp4Z4u/3i5vp + qN9uVIs5LjmlaRsDTLxueOtOdziZYak9Am7IaAn/BYAfsehmk2HXqaslxwBvljSutqOT + SFTYW212hLzgroL7v1BNAQaHhcKdZtVl8GZJk/CeQByQ2coML8n78OOJ0Q0VrDhnhJ9+ + PJDCJsCQCGjwxgAfYrWdnDITZ4sqvPM7kvcZ//H7wPv7mRS+m0MjJMDMyqcnyBkbCCx0 + ODsX7a2tDS95Zt90LJYDXBMNRpI7AiHWKoRvtRUqEIfx9fyWi43SQJf2gXoelX+IBJbc + LQIMiagUuO3ZsuKEDrLacqUqtHcCLSN7SQdjWi6t/jK+8RsqDAYvbibQ4GqJkoacsYkQ + Lh2wj6w7PWgvwqtWm3JpFeWSMwOZK44SMR31nDr2lYn4FkJQfKEO2PeCDhQzaC9Xm6u9 + S19h9YOLV624BVecIYRsg9cQWNE3esGtQ7XpiZlLB6sIA84MYEUIkTQlwVCIDYqm6GvU + Ya90ePH+CX2E0AqxicDAe6TokC832qCDFl/jKxARyx91gKkQWoLbDZ2TqWhrFNjdO2QL + VdB3onObS1/LAAPuPLwqx01A4Goh6yraKoEFL/cOombMxaIOH4BXFGLoKpoQeAWvpm+M + B4ua0zPJwt2ZBeJh/aMJsOzSmDJ6jhCYm8p1Cqzoi+Ume53+mDtJv5pZBxhwaPBqRZuN + +7KpNAq8QuDD/3CON+rb9pLbfpabqxBYcCbFuSkZCry64A7NVh3q2+i4W8k90TeIlwqM + BVd0F9xKfNVyu7jkSajZdZOxwRv41wvhoyKExFel5C4yRi7FPSUzRnDBAa8cLdK5Eg6a + arnpkwU9hQAw4NIQ+NcvbiGw4HDsLOXSasuzgjeQ3cYzZAv/wS3gPISPHl4e4+YzIxDx + tQIheLlX/yB58BOYGW6xJBCrgqbkTF08IBurva9vcxZCQAMuTXwpaGoPvC0je3h5thiY + k6ZZbnvkr7tFG/gEbWUH4ZNf7h6CeAOxCOWjCrAWYAia7CDkTLRGgIFX3ZTI0Vh2D3IW + YrrAyS0UgAGn8kW/FV6eMYbmkMwzXDBhmN2Z2qwvy+/+8XoCnIUAqzPnsgD7d2dIF3I0 + NmfNveKVM6cI8AgJQ5051yQMP97WMl6e5AP/dKF85K0B2Mf1pvGaM/IGvN5ZXqc3uYkS + L6EADDjVePUZWRKcOdOvJuRAOpb0ps/ye46vwssEty0hr8VrLib3ygfcq4IPr8arThf+ + e9+9x1ffA+sNxPoNj8QXF+v6NPRX4eWGJ7hB+8QbWP27P7r6EOTDxvjiNC986Mpp02x/ + P4y/XTkhb+Ev8arjhdKzf0AfcFvC49CMV9Ufqb+3Rn/1HfCa9Xbs5bel/cOe+bAmH0fW + 5rfjU/c26i/Du2H/wKchvZ/8W/ZneIVbf6D3X5eoy2q8yePt4iP367yA2HRh4j9fqOud + j8frv+AJni985zc+Xvwl5zf9prX2/GZu1+V8rG6rP/A8f4s3re3nY4MXrwGO3D/s9To1 + cF8ib3DOlheBf+1+50Bv0Lzr9Q++P1u+YA+mtwPi9Se4qS8h8yJj9/bqvf8PfgvMHN+m + I/cBY016U3hZueO9FnqCRjehm6D1X5eI/G64fjg48ARYnrOCghY6YAVX42XRxtKDVlB+ + idcVCF74oXJHCo32duHn4ZWyo5nImdTNSQnEyntAUCD2+7wZkDPWmPjeh1avfxnfpQcB + 9wZt3+9D6jkAFQXLtw8r8RWB8HZo+34g8ujg1hzJA/363Rnv/hBf7wEO78cgsLtDo7dw + BWIZL4rQdhZAqAV3rou5WL0jD5x7epA1eKXKz6NvUheYrNKBAqFftHDFgytKKJp68Nau + Qg2w+Q59GNL0zevXrJXXAPLBK4+S+pL9EsKEVz1ekA5Lm/VV+V0icF6Xcy2/eIcYYBNe + PAbocg0WdBn1XbmMYnglY4AQpiDGI4RRtPCWnIFrNg+kg6omWP9YaPDyyducOUUh7kz9 + Gc/0rtlTCtel7279gSWqqiDRPWuuWW6KwF4Fj9NnrbK/vs8P2fdFNv6UikT8+4EO8tSC + 5Obt1TcWfKpyWl6qyiWPu+JACHGoigZt4PP78LnmXhJPm1xt+q0bV30b6yd9CsGKORRQ + BgPsug7jj6Xwukc3uSpZSweXEO6KU+XVeyqoRchNKQzCa1Yb9mYb6YCUrFKGKgDWAfZK + PsMIqvFJgijtxc6X1anqpkRVe67Uaih90CmDBdaoKmCOY9FcoKrLzzyrf8s7rLy7SYOA + FHtuL68mXlXArgPsoFtEHjLkYsqTYas4lbMXDVfK7XuOF16utg30lZShalR1e0tHGhpw + UAaHvQYMe/LrekL7BRIbuwPIBrxz6waXbdXrJAX2EDgVqfahAkvu2TCCQrQHdozQnq33 + uMAlDd0iaMghXCy2ellqq9nfsqMFjiuO7VlxaDDqujTgW2l3YquT+Lb8A27RPoSGJ/SU + CVx2i6SvuJOU/iGzutb9ZoDRI6A6ckoG8Bw9OQ/STMZuKtvGHjV0lN1LQ9mgC21QHXto + gNvZYYgVJ8eMKFpjUXlUQ4cWKMF2PXTrPaADjsYvsGPK3wPa3+5Vwx46DHU7WSyqtHfL + ajMMZqUJGIGGPQLuDkboKZuzwVB1GEpHoM0f92wvnKOXbIToAi7b9cAGpLYd7JUVJwGO + gBFsiARgh+2m02t0m0qrKfotrRq7VwH25prNhV0HcHU7pOp12hFepcE4eIpGpHOIsLTz + jsZTNsiiQ5YtshYNDuF2Np2ORwNp6C0XcmiZVu2mW7XXLD9ZctAI9uUAMBZdy+myAVk6 + kK/Rg2zTrq+l+5jtx12nhaWm4Yo2bOwcMlgVg8EIihoAJ1JZtCBX0Y3e6fbQiD4cscfb + qo3Q3D3o99je3UAPfT6bQm8s1tor26U9CnOYAtv9EeIyuv2bjnTQd2E9a0Zv0j0PsHUM + KWA3usDlhILdzccqzIfSdaqmP8SvkulMTgYU1DihoNlq6SEFarTAe3/CXZPTCWoyniCX + SXOggp4AgY3D5p1DkBGcUMBFx4kKRIxhFeUKBjVUqzWrJi4rZY6sIFpMU+BSQ3RlwoYf + 1Za/mTUA+FjGgcSBWA/YkAkbmIdh14oFM14jcclpFZETM8FkC8Tl/0kBxqIjiS9k2goG + mHCCCcydO2LhD/rD9BI9viR+IVzQM21eRwYFHICx8xFOcPSOHhCjRsSkrVoKw2Hc8TBR + NW0F973bdr3LsfUAK05wWpAM4JEJPFdXHMJjzeBOpu/o8TuYGKS5sDOvBUFTJQBYxjG5 + A44w4QiGmUSWTNxxwJM73uhPpgXpCJMTBjFmMsmsq6jMkMLMJ1sGhxyhhZlXHHml0b5W + yAIxZogFsR7QhQldgG3b4BRQ1XguUbE/RAvwhwoxgwxiHIUzAo3Dz46Wxp+9RRhWQswY + /yez8Ag6LON0OeRfprR3oBXwKsgatQA3Y/ds/IZDGL3D3g/WhBuehBvKr/Wf4t58l/3f + 4t7CD/vIPj1+RuAzAp8R+Hci8H+sBrlXCmVuZHN0cmVhbQplbmRvYmoKNjIgMCBvYmoK + MzU2NwplbmRvYmoKNjUgMCBvYmoKPDwgL0xlbmd0aCA2NiAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxMTYgL0hlaWdodCA5MiAvQ29sb3JTcGFj + ZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4 + IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2a+1dSWRvHTUtF7goqIgrK + CCSC5AXFhaI5mIpaBmPF6IiOpualhcNQCy+85kjqpMbS0lJMpTDvkZdqmvX+a++zz8Es + LuVMs2DWu/r+Amfv7fn4fZ5nbzh7Exb2Td8i8H8cgTNf1D9mHpHCPygigD4MCEfjvwbu + oUVEnD179twpBMMiIjD83+RiQMAhVmRUVPSxCD467omOiopEo3HwX8biQOQuEmgEQgwR + RAKR/Qr1oBExBEJ0NAKDYfD7l7Aog8hhJPAARyJTKFQqjUb/jGg0KpVCIQM6BrgIi1FP + m1pkEojgkEAkAg5YsXEMBpMZHx+f4FfQwWQyGHGxdDoNwEQiAblF1FNaxYnnoqJjiCQK + FeGAxEpKSmKzk5OTOX4EzWw2DGAlJMQjMJVCIsZER+FeT1PFOBJ5JFNosQxmQmISm8NJ + 5XJ5vLT0gErj8bjcVA6HnZSYwGTE0sAseMWtfim+KK4QViCSEBGAnBQuL52fkSEQikSi + 87gyP8jTAF1CQUYGP53HTeEAFlFJQIUAfzm+HmQMESOyklO4wBOeF4slUmm2DHTBj1B7 + tlQqEYvPC4HLTUlmYVQIMA79rNNjJIlCZ8SzklN5/AwR4GQ5uflyeUGh4kRFoJMrRWGB + XJ6fmyMDsCiDz0tNZsUz6BTSKaAYMiqaSKbSGQnsFB5fmCnJzsmTK4qUxSpVadlFpHIv + YY1lpSpVsbJIIc/LyZZkCvm8FHYCg04lE1FSIbwBnQIyAnIJyFgmi8NNF2RKZXkFRcWq + i9+rL1VWVWs0NTU1tT6CRo2muqrykvr7i6riooI8mTRTkM7lsJixCBp5Ds2ZQNAzHiQt + Lj6Jk5YhksjyFcrS8ooqTd3l+qs63Q8N1wKo4Qed7mr95TpNVUV5qVKRL5OIMtI4SfFx + NA80EBOQZyOjY8hUQKakC8TZeYriMnVV7RVdw3V9U1Nzc0tLK9LPnwhramlpbm5q0l9v + 0F2prVKXFSvyssWC9BSAUsmQU1gdAkDRLIkikKixCCnMuiBXlqmr67TX9E2G1vaOzq7u + 7p6e3t7ePi9BU09Pd3dXZ0d7q6FJf01bV60uU8ovZAkRNJZKImAp9RtcFFmoHwqdCUiR + JLewpLwSiI2Gto5bvbeN/SbTr+Y7AWT+1WTqN97uvdXRZmgEamV5SWGuRARQJp2C6iiA + 0TNgEyEZLE66UJKrUKk19UBs7+o1msx3LYNDw1brfwLIah0eGrTcNZuMvV3tQK3XqFWK + XIkwncOCKUOMhtr1F1zMJoFEYyQk8wRZgKyo0d5obuvq6zdbhqwjo2M22/3xiQAav2+z + jY2OWIcs5v6+rrbmG9qaCoBmCXjJCQwaiq5fox6bkExuhvhCoaqiVqdv6egx3rFY742N + TzyYmp6eefjQ7lcPH85MT089mBgfu2e13DH2dLTodbUVqsIL4gwupDSg0fBwKCAyjcGC + ZGbLS9Q1uh9bO/tMluFR2+TUjH127tHjedCCH6H2x4/mZu0zU5O20WGLqa+z9UddjbpE + ng0pZTFoZDAaHu5TRSi0kM1YFFlJrrJco9W3dt42D4zYJqftc/MLTxeXHA7H8vLyMx9B + I3QtLT5dmJ+zT0/aRgbMtztb9VpNuTJXgqKLGfUTXAhtJMomK4WfKVOUVtbfMAByaHR8 + yj63sOh4trK65nQ+B73wEWp1OtdWV545Fhfm7FPjo0MANdyoryxVyDL5yCiJEOmnis5A + aGMo9Hg2TyDNL1bXXWu+2QfIienZ+cXlVecL1/rLDUybPsLbX667XjhXlxfnZ6cnANp3 + s/lanbo4XyrgsePplBgIrk/lYqGlMhI5/PMyRVm1trGtxzQIyLknjpXnro3Nre3tnd3d + 3T2/go6d7e2tzQ3X8xXHkzmADpp62hq11WUK2Xk+J5FBhekS4ZNQLLSwHHAzsvKUYNPQ + ZbSMjANyec21sbWzt/fK/fqzcr/a29vZ2nCtLQN0fMRi7DKAUWVeFpQuk44F16uIIJ0o + tAnJaaLsAlWVtrG9zzxsm5p9sux0be7suV/vHxziOvKRp+Ng/7V7b2fT5Vx+MjtlGzb3 + tTdqq1QF2aK05AQUXJ+EonQSKXGJKXxxTlF5Ldjst4xO2ucda+tbu+79w8OjN2+/oDdH + h4f77t2t9TXHvH1y1NIPRmvLi3LE/JTEOArRN6HAjCZSGRBaSZ6y4oq+rddstU0/Wlxx + be66Dw4B+O4P0PsAQn3v3r59c3jg3t10rSw+mrZZzb1t+isVyjwJBBdLqHcRnYHZSaIz + 2TyhVK6q1DZ1GC33Ju0Ly86NHffBEQCPYX/60XEfYI8O3DsbzuUF++Q9i7GjSVupkkuF + PDYkFIrIq3DDIyIJZEhnukimuKhpMNwyDY1NzS2uurb2Xh++fQd39WL9F+TVBIPevT18 + vbflWl2cmxobMt0yNGguKmSidEgomRDpXbjAjIFFiMPPhHTWXW/tMVvvz8w7nC+33Qdv + vJAId6KPwAj65sC9/dLpmJ+5bzX3tF6vg4Rm8jmwFMX4MlHZQgl9J85Vqi/r2/vujkzY + F54939gFmxDYj+785wkPvfu45/37P8Do7sbzZwv2iZG7fe36y2plrvg7VESocD+dLDBV + iBQGKxVmZ/Gl+sabRsvo77NPVyC0+0fAPL7xp7iTq+N+YB7tQ3BXns7+Pmox3mysv1QM + MzSVxYDC9WXiZSuQyksqrzZ1Ggd+e4DSub13cASh9dzzBOL9zjMAgnt0sLeNEvrgtwFj + Z9PVyhK5VIAXbiAmXrY/df0yCCW0tLa+/Qql84vIDyFGCX21vb62BEU0+EvXT3jhBmDC + 9KQxkmCqwCqka4ayhdm5hEro8APT29un1/j/BcxDVERLMEOhcJt1sBLBZEli0GDF9c4n + YjKTeLDylVZ7mI+hbHfcqISw+32K8L3CBqEicu9A4T72MKtLYfXjJTEDMtkepqEb+QQm + rAjHTF+IdwuC4swND7PboMOZ7H8XMwSxDXYNncXnZ1DniocZ3DUhFGtfCNb4UHyWheAz + OxTfTULyHSwk3zWD/506LATPDmH+npEG/v4z0sBpnpFC8SwYmmfe4D/bh4VgDyMsFHs1 + odiTOjYazL03YAZ/jxGqKOh7qcho0PeMseii7fgg7o0DE1Ia5DMABIWUBvWsIwyHwjlA + EM90TqBBPLsKC8UZHeYUDlyDeRYJuymoeuFcOZhnrgDFqcE8W8atYl6Dd4aOoGAVqMH8 + rQDaI8OxKLNB+k0Egnqw4Ddov/3AsWAXM4z9igTh/cvTDS9ovOdPv/4F3ezz+nrGtzt8 + i8C/OAL/Aw64tQYKZW5kc3RyZWFtCmVuZG9iago2NiAwIG9iagoyNDc4CmVuZG9iago2 + MyAwIG9iago8PCAvTGVuZ3RoIDY0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAv + SW1hZ2UgL1dpZHRoIDE3NiAvSGVpZ2h0IDMzMCAvQ29sb3JTcGFjZQovRGV2aWNlR3Jh + eSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2deVcay9PHE01cQVwQFUQRZBMQRBSXG6Pmyft/ + S8+3qtcZZiPONPg79h8u59zbfKxUV9fSXf3t29f4ksCXBL4kkIIEvmcyUgDzT0GcKxkO + mt//mf/6u0ZdXV39IcbPVIacDNMKSaTCLORKpJJxLdUhJ/3xQ0B/VMqSlmHX1tbXNzIY + 6+tra8AGMon5Q8SMuwrJghWkm5tbW1vbqQ5MuLmJqZmZiT8ATEuMaQG7SaC5XD6f30lx + YLpcDhNvgXkdUhbE/7jSFC5oAZsj0EJhd3d3L7WByQoFTJsH8xaIPwTMuFCF9Y1Nhi0A + dH//4KCY4jg42N/f29sFM5A3WcSkxf9i2wgXmgvare38TgGsID0slY5SHaXSYbF4AObC + Tp60gkT8T8C01ATudg60+8UiSI9Pyjwq5cqHR7ki5jo5PjoqFYv7IGYRM/D8iw64qyRd + Ei5oD4m1clqtVs8wzlMZNBMmPK2UwXwIYhIxSRgqMa9GEO4PgVvYOwBtuVKtntdqF/V6 + vZHawGQXtdp5tVopg/hgryCAyUrMCfxd4UIXiqXj8ilgAdpsYbRTGzRbs9GoA/m0fFwq + QidYwgCej5eVdw2GYWd3v3h0UqnWLhqXrXan273q9fqpjV7vqtvttFuXjYtatXJyVNzf + 3YGZWKM1NxcwxPvzJ3DzBeCWq+cXjVan2+sProfD0egmtTEaDYfXg36v22k1Ls6rZQBD + JTY3SIXn4WXxrm8Ad49wa41mu9sfDEc349vbSarj9nZ8MxoO+t12s1EjYNJhrLn5BEzi + XdvYyu0o3M5V/xq0k8nd/f00xXF/fzeZgPi6f9VRwDu5LWjEPAIW4iXlPSidnJ7Xm53e + YAjau/vpw8NjquPhYQrk8c1w0Os06+enJ6UDUuH5BGyLt3ImcSd30+nj09PTc6oDEz5O + p3cTCXxWgUbMLeDv2NnWhXihvJftq8FwPLkH7fN/v1If/z2D+H4yHg6u2pdQYSPgpCtO + iReL7bhy3mh1+4T7QLQvL79THi8vv0D8QMD9bqtxXjnGkptPg4kXxgHaC9tw0QTuzWT6 + 8ATa368ZjN8gfnqYQiX63eYFbARpMExE4hVH6iCMw3Gl1mj3rm9Iuv/9Au3b29v7O76k + NHiu19ffBHw/ubnutRs1EjBpMExaMoUQ6rCdh3EQ4h3d3k0Z9+39Twbj/Y2Bp3e3IyFg + aDBscGKTxuqA1QbbC+1t90gbnp4h3Wxw//xh4Ocn0ggI+JxNBJm0hAoh1aGwf3hSrUF7 + R7fQhl8vr2+Q7f/RSE/Garq315df0AgWcK16crhPKy6pQqysYG/DasNOfFZvXUF7oQ3A + fQft37/8ESl+oRlJwi//kYCvr1r1M+zKtOLWfq6sJIg8jTrQauv0hxAvaQN0F7hpA/OM + UAmo8DMEPOx35IpLrBBaHUonZMwGSryZ4NK/GETw548S8IBM2klpDoUAL9QB1oHVoTcc + 3yntpblTVV9eD5oXGnw3HvZYIYSFSGTRyDXT1qFDq+1RqQOpbXqLTczES0EqxCOtuI62 + EGTRYhVYqG9uh63DJasD85J1EOM9xaHmhD5AgR+x4gZdOBGwEDu5ZBZNqG++wJuFsg5i + ufHkKcLyVEoIYs9gC4E9uXRQyCezaEJ9hTVrtKC+0viqrS0rXmmCSYEb2qIlUGCyvqy+ + wpqNJlOhDtnzCoUQCkw+xPZmEgtMvtlmrrBHm5tQX+9enJ18wUtbhlRgOJWswDELjpbb + xhbCYvJ1SH2lq5OVeN/1xNLpoS2OFBiBMhQ41oWYsb4Zq6/htRSYtuSEFlguN+mbSevL + zkP6xkyoljIQxPvMFlj7aBtrsQuO1Zd8yePT2mWnP+NKpq2+tnylAvc7l7VTseDIp4xW + YLncpC8pfDNyfZUU0udVCiy9dljgblP6lPELzrdbsPMAX5KcMx4Z4OqpX8mnJBdCLLhE + O4Z/uSlXXU+aAbAShVxwt/O4PP7lNiFnJ9PlZiswL7jJqJ98wX1f4UQJLzf46lhu2e5u + 9M9l5CtdHvLZ9YKLDpLFctvZOzzWuxvF8VkuNwWswmS5wx0fIqqPXXC8u+Wwu3FscT3O + fHezBSx3uDEMhIkxIg2aNA+ceUCoyc5Z1uZByRcxHBuIezIQdc6jxbqUcrlxaNxocajJ + kbzWsQzMg+G1DERCl3LGPNByy9g8eHkpxkhuIBZhHmzeeQ2EMQ/wHmQon7l5UMBeA3Ga + xEAo8yAyUY7Mg+LlmBNZnjsyECYrFWUgOJEqE5NkHpB6yN48aF5pIIwHsStc9lAPjc2Z + lSpx4T3YBtgyENplj8r6GfNQPmu0+xRrOjBnRr7M+3jPBoJiZMSckS47zANlJkVwobyH + zM2Zl5eTJibJQ1nK0DS715xRps/j7WSyWfCk0rk2SZ5kHk+YOZPbmxNeTgNTTJ/AoBHv + FrwdnznL1juzFpwqZNgGLSqEY/Orcw/SnHGmOrNgSPybKRf49bcnJFI5iDCDZpnfOlJn + rsyZWXDw0LiOQSGR5aGF8ApzlpeFi96Qqm7ZezuWPlAZQ/Ny0o/qWqE5CMv8oo7F5teB + d+bn1R5arAEONL+m7CZULZuvfoOWyADPml9PajIbUjGrzctJyiQGeGHmVy24OT3KEPOb + bTBkyzfQoww3wGx+dXAszG+GlQtbv4wBplI9PMokIbJlfpGqZvPrwvslbs0rQuRblUNj + D/hHcI5yUd6vzeszwJy0DvOApfmVwXxvhNyZo+3CyFd7wAmqRGa7oGMPLrcLL6/eMMRB + iNANLma7+GOvj7R/VvqrPeAEG4Z3u5jJTaaN6J3P3jCoLJsgR/mdKm+qdCGSD3wKRv3t + 3g9I+Tf5ISxfVYXTOdXVwIhIbG/CW7/s6uRD9t46/ekWr0xBiLJ3RNVwgdtbEK9OmYRt + cJ7tDdsFJ0tcRBeWfHEuhiMMbBixOWDmNckdii5cbW9avioH7N3gglNStB0vILkjFq5a + 1CEbXEBEJLYLfW4H25uJhugUjJg3q6/4AP4QyTsZxZ7jMdub22RUgHxlzjo6JWV4eTsW + yR0HyahZXpGSiivCxWzHWSmCmlcoMEcYyVJoC92OlYHw8EYXDcO248yTZ7ZCCN5EG7LY + jqm0SbULx9uxkq8dwcWk/ATvTLJP7exKz7L6rgywVeSMPgWhtmORnES0Kc5UL4oXEWd0 + zUXxculYug+/sj2pYf9bafm+coQc70Awb7D7kP32xvrLHyOLyPEOhBXNU6lbJlP5JIxj + XpGi9Ba9Zx0In7vj1n0w8lUOhH0qBhH9DK9yd8SpdYrmXbo7s7zS4Sny1YaAFLBxH2bd + HZf6IDIQokgf5fBYvJR98Lg7rnm1wxORsja8s+7ZwngjMiZR7hl4bVOZzc/aYTeHIORV + l8Aap3HP6NaFt7a5EN6BfRNjtiZreOmgJ9+6sO8MZSNTe1bbARYlAevYZwCvzO4I92xA + 7oO77A5xyw1ZZnjuxromyzddZjI8wj0LdCddLDdtgK2abKRDKXhn3EnKRi2KVzlogaf8 + iNfUuj3upFNeuvnkP8QTlJFi98wUWzgbJYstC+B9uLuNKbloXr4X4Cm2OOb1llzETa3Z + jBTz6ms4y8MrjlkH8NKd2MW569o+BGf8Zh1Kn7vu2p00vNoBjnbYve66c/d3ltfO+M06 + 7Mpdl7cKl4x39syGdCfV2RLwmmKhW/sgHHYcmossGRr3F+FFy1ssdM8rSobiIlzwIT+L + dyHhhVd/4wMMw7uY8CKENzTACOSVZ3dc64MKMKIy1hHhEN/htT3rbH4mRxCS8WSAwwOi + GN5sEL2zzssrisdHfGnePprKf7V36kx+C+Ct6d4K/oDIDt9EuKnPci2CN/ZMl6cagHBT + hW8IqxbDe3cz8Nwz9AVwHl4cJlgGXj4EzBeREWCE8FrhMV/MWox8OSCKDJApfNtEvyh/ + tWWBvNdRh6wl7/7y8apOBd4MsOANDufJijsYYmXbFa2IgJ54TTjvqb65tQ9BvFuzAf0S + 8loVrUBetGBS+oDDMKb65li+KmFCCQhVgYvkRVOYZeHFNU7ZO8gf0EMfWL7ioukS8crW + NnG8dNhIpaPc2gckILhdV3RCiuVrrorYh6Oc668/IRV0C07yyq4w3nSUc/nSETT0ZrLv + /QfqQ0g6asG8gbcMhXxFizbfWfAF6wPOWHMjk5n92E73UfpMHe5bEO9E6UMcL1Xnl4TX + XHqa0V+TTl1KXn9C1ZtO5XSf1AfuyeXAPWNPm5a2PLExGUUlVBUvOk7i6ptKT3JTOZf6 + K3npxAYfoeRulKJNgW+9SX3w8lJHROfyVQlrSgAn4EWPQS3fhfPiBISwZ0H6aw7/Kn1Y + Et5t6u04qw+fiBfpSftw9TLK15OA+OKd32IrU2TbB7HeWH8/u3ztJplLp7/+gpYoBwRe + DljofqH04Yt3/vXl/z+i1lu8fHV5czH6QF1BIq6MyHKWKceaxkYL4eUCp+AVvYt9Jz6/ + eP3aGf+7rb//m/K17e9nWG82rz5dvZD1puKhr/0ifh0l/S/s9fY/KN+v+CKpIsj/Lkof + /D0VvuKhOYWL/3we+X5b/vj4U+cfWL50PFU8crBk8Rt3up+Vr+C185MLz0fF5vvQdn2Z + 8n2hTcVU/pd5r1gfPkW+WvDa9Qvn/pnKr/va6vr0l9vw68a/Vr1lOXhn6i2Gl3oxWbyO + z3OZ+kXSepa/d5TL+gUOUap6i67HxtXfPhGvegXls9S71bMXy8Qb3ITSf75k8fXjBOc1 + 7OtOS3HeKLwNu5IvuhN8lvNG1nm5ZTlvFHmey+ZV3R/4eqHb8yX6QmTc+TOL93OcR8Sz + Q0Gtfx3vb1q+pqt5wAVOrDc6/ytf+TLyXfD5X+vlrxn/7POdV0YzvKU9D+6rz3/W8/bi + naTluB8QeZ/B89CM57q/W/tgdWSK6gFs7rcs130c9S5VwH2c2Vb84j7ZIuQrW2b+8/0s + BxcE5r1PRq9uqjduvc1I4T844qUP4gYQLN/o+3oBvLIbnmteepaKWqgm4y1/svumul2Q + 7hW/GPnSqz4ov4U82jFT8F6G+9LmaWFfef7bN8EbmAB22w8E643fEIg8/gBfLbwgsAS8 + M8cRDa9IAHveZnCvv1TeNOnJgOOTgvdT9asQ75oGXsBwul/4G+LJd0694QXkqy4QfaZ+ + K3aCx7pA5Fa+1H8nUT8bK6Bfgn5BkekH1gd6RzgwoHcp32ThvOJVAacJ6MHq1J5ZvJH9 + rlTA6Q+QwUvjPfMhPoevm+Ld5th+YiYg+iT92nTA+Wn64ZkAQ72lZhqCZK4OlPgivTPh + RacRHr4pB80XEDkMMMAqeZOEFzbvYgKMQN5Qd93DO/MWoAuDZvM+JWjAPhtg6BOJTgyw + h1fezqJwaDfsDUOvw+7cAfbzxvXT1Sdi5ImC5e9X7K3Qe25M44/P2qAp+frd38BqNznD + 2gGmCpx83Wnp+21rB83jUOJvdyFf/hjVftJyJzd++k9rSPkGOZTYd3g40AcPb2R1yPAG + OpQ8UcbAQip2N5BIdxIbBlW0Ap4fkgLOGFd9CrsPid47sB1Kf8Ni/PEueSk7Se2K9YNJ + /uw66QN4Qx20BfDGPqAlN2TxOK+vQXj2CizVl7Nn8dlfIV+VsdYZVWfPv3H3PhaK6OYY + 335dOWjBGUon8tXub9zlAJIuhs/hkQ4EHVHlke2CUx8is6m3se4OeMMdCJrNDW9i90Hy + qoyUerBjce99tcIPG0l9CG955Uy+VrYkohmT4VUZKecP5Ej9tXhj36sL25DlVE70N/l2 + zBucdiAavgyEo/XmyT5Eb8exG3KmBkL9G7J8ubgZnS0hDfZtyCN+fd7RA2WGV2RLqFio + szszxTex3uyInlsWWyVDmi9LBbZ5n+jucV80Kw6N5oV87TtlfKbWzXPjPveBel1Zd6X9 + d7OEdPHVutPgP2PtSr6B25u/d4kC1hEySkToiTemBy0X+V5zOaS3nMVrlVx0ScCFw6P0 + V0XHJtoM6OVo85qepHymS/VQdaMPbH6pd+qN7p2aCzg7qXhnIzjdA9ghL4oXCaI3Yl5g + BCf0wbO9afP7MyjaFLw6InL8wLRSX/LW+ao/bRcRyWqhEfaGgUtlnpRqtgph8/JZgojW + D4KVvyoDLJp0OdwwfLy8XYRe1TPAIiLSl0bcGWDFK1pl3o3lVafgqyIe3iADnP0L05LX + 8tZjowuihnytQ9Z8SNWNARa8yvzCnEW1gjbynTXAj27e0LJ4ObkTmzwTzIEG2IEHrNR3 + Hm+diI3H7jYlZXhx9CxB7U1pBHgX4gF7eJN6vwStDDBqWuQBs0F7yf6NU8UrvF9tzoI7 + DSrhMq88JCVuaTnzKDXv7FNfwbUWxbwggyZ45zZn7KFFpSAyCjmVeG3zEJd8EBI2BoJf + nXEU0hteyzsLfWlG6QJ9tz00hPSOPB6bF97Z7TBBMK/lq18pI49ybF07pVmzSUEoXhkc + jymYtxoTeBoj2tLFzzpE5mucjgyE5jXmIS73q7ClgZDX4IzHo6bMRMBycumdCW8n9OKb + IhXfvR6P9xoGTZsFr5LF/OZBLzhVhHNiIAwvmQfKncXn+pSUhYHIqz5+TgyEzcvmQQVv + +e0Nf19Exam+s8djHQt34UEo3hDvIco8sIGwQyK888Q5tCxDIsmrl1uiXJQSMBsIfaqA + Fpwnx5PBglPi5eVGuZ2+590h371Nxam+e0KMdn90e4+QKNMQw/Dycrv1LLfQ3I7hpRyP + riLzDueOF8uNd7ewtn2K0nz/zjucfgjjmh6myjYJrOQrU6k31+IZCZV7iF5uYsGhargH + l712iYe0slZghavVl2J57G57hahUqhGwWXB88VTsGPIcMM2d9g7n4eVY0363O+ggl2Gl + n4wLTA9b9jLfMQwvX8ui1FnEtTcvq+Qll1J1islcgRWvT33Fs7whlTebmhYcJaUsF00k + eeTE6WqEnlQ7O1J91StfcctNLjh1U7YjLTAfg0AnKbqLnO6Qk9KrTnB2YH11ITaicuEV + sLDARdFqjpMQZIFxvvzv378pE2M6mvQPzvWR+iL1MIezI6iFy6POmQiLhlZoOMdDUxNw + qoPnpGsBeMSHCi3dpoktEqgvGQjrYCLOFYgtWShE+sAC94+tDiaUXw2rtNj68G1FHPST + PvDVkH00IWBIOFXhYjKakdWBxUuXIPWp9Z8rMc6OTyFoi2t2ScAP7PNAg3mkt+DUfFwX + QiQ/6ps31OjNi3jrAGSjEEeUNemxgDlvnR6odya9Fw97OhRi65CYV/holKZkAcvKtz47 + 5/24D/4m82a4UkjivRCZB4RCOFWdiJe2ZHoMDndzjk9rEPD1DbfHQ6n+9e3t/f0txUGz + vfLWhisXN9cQr1htOW6RmQxXKAQ1V0C3TxYwaQSdLXgBcfrj9wtd2IQtGwrxHh3QE9j0 + BOAcvGv02h4EDA1uXQ2GY5LwM4hffqc8XkD7TDXN8XBw1cKhHXQAKUC8ydWBVtwPcTac + biPXLttXgxGAp49EnPoA7eMUuKPBVRueb7lE4sVqS2gdyKaRhZACPqqc1Zud3gAqcTd9 + eHx6enpOdWDCx4fpHZRh0Os062eURp1XvOCVAkb/zJNTaAQDj0E8fXh4THU8PExBO2Zc + aMPpSekAZ6JYvEnV1xIwXd+DRgD4qn89uhlPJnf399MUx/393QS0o+v+VafVgDZQf4o5 + tZd5ScCIk7HkGLjZ7vYHQxDfTlIet6AdDvrddlPiFpCGIu2dQ7xKg3Edo7BPwOf1y1an + 2wPycDS6SXGMRkPA9rqd1mX9nKS7X4A2zGUcaMEJDV7bAPAugE8q1dpFo9lqd7tXvV6v + n9rAZFfdbrvVbFzUqpUT4JLyAndO8bKASSO2ALxXLB2XT6vntXrjstnCaKc2aLbmZaNe + O6+elo9LxT3gbpE2JN4rWLpCwKs/BXBh7+Dw6LhcqZ6d12oX9XojxVGvX9Rq52fVSvn4 + 6PBgD8pAuNja5tJeqRESGItuvwjik3LltFqtnp2dpzbOzjDhaaV8Atri/h6W2r/ifvvO + RhgS3tzO7RBxsXREzDQqKQ2eDKxHpSLR7uSgu5AuKW9C10Gpg9AIGDUG3s6DmJAPDwGd + 7igdHhIsaPPbGndubZAagX0ZGzNWXS6/g4UH5oODYqrj4ACsWGY7+Rx0AZaBdPefcNmo + rayyiEHMyDuFwi5hpzZ2dwuFHYYlWtKFf8c1wGvrGxubQN7O5fJ5SDq9gelyOUy8tQla + CPdDuADGomMRrxHyxubmFlGnOra2NsEKWE07/1Izq46BmRiKvL5O0KkPTAtWKdt/sQwG + l8wEiXhldfUHFJnGWspDzPrjxyop7odp2U4IZDATNQ3xGR//KmajeYkVsB9RBZ+UWcw8 + bSZfUmQ14Jg0k2E+4eunLwl8SeBLAl8SWFYJ/D8JHJ20CmVuZHN0cmVhbQplbmRvYmoK + NjQgMCBvYmoKNjI4NgplbmRvYmoKNjcgMCBvYmoKPDwgL0xlbmd0aCA2OCAwIFIgL1R5 + cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxODQgL0hlaWdodCAyMzYg + L0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJD + b21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtXWlXIjkU + 1V5AZd9EQRRBQWRXcN+me+b//6W5772kKgUUFFpVUOeYDz3OGSfcvty8LS/Jzs73+Gbg + m4FvBjbAwG6AI5C/DuH9Efygj/EPv8b8E+OXjN/+DTUjTc7E+ARdgSbAgjUWxJCpf/0S + 7F+HLuoAaEwci8Xje8GNeDwWw6cI9C8iZ9g/GTRB3t8/ODhIBDEw7/4+PiEu0CGYrwid + liKhjgE0ICcSyWQylUr7PlKpVDIJOgCeoUMvXwGuYDNqYCbAmUw2m835PTBnJpNOA32C + kZNaiPLPmRbAZrL39sA0QGcAOJ8vFIr+j0Ihn8/lsoQ9kdgntXweuIId39sn1BlgBuLS + 4WE5iHF4WCoWC3mCniLO40L5JxgX2NDIAaPOF4tAfHR8XOFR9W3IfJXj46NyuUTQM+kk + UQ7gn9E4WZJftCAPEuA6XywBc6V6UqvVTjHOfBw03ynmPalUjgl6PkeUE3BanOtK3IKd + TGdzhLpSrdXO6vXzRqPR9Hs0Gufn9fpZrVatHJVLBVD+WeCkkt+/43sJwM4XgfoEoAH4 + 8rKF0fZ30JSXF81mA9BPKkeHxXxWgLM5XIdxqASmBCJJpnOFUrlycgrQl632Vadz3e12 + e/4OzHjd6Vy1WxfN8zo4LxPwJEmFJL4Wbha3wD48qtTqjYvWVafb6w+Gw9FoNPZ3YMbh + cNDvdTvtVvP8rFYpl4Tx2LoSJ5XEYADT2cLhUfW03gTqXn84Gt/c3k6CGLc34/Fo2O91 + 2pfNeq1yxMD398iMr0G4qGQ/kcrmSwIbXAM1ME/v7u7u/R6YczqZ3AB57/qqRcAhlUwq + sa5SgBt0HyQzuWIZImm2Or3BEKin9/cPD48BjIcHUDGd3I6H/W5HAc+RxEkpnglnukkl + BuzRDVA/PD49PT0HMDDt0+MDkN+MBj0GfnxYgFHZX2tpEt0wgakMVHLCbBPZhPr55TWo + 8fL89Hh/J8AvG2dVSDyTWotwdjlsS6CS08ZlpwfY03ugfn19e3t7D2Jg3tdXQj69HQ26 + VxfnJPGcJtybKRR1Y1EWDo9r9Yt2d8CwwfXb+0dw4/3t9UWA96/bzfrJ8bqEk+3e24fH + KZarZ1iT/RHYBtmE+p/gxscHkD8/3k9uhpB449Qg3NPKnKEbKrmZ3D8CNlD/+fM3qPHn + zz8fHwJ8PIRS6jUinEyKRxvOq1KMCdF9PRgr2P8EB1rI+EPAnx7ubkd9B+HeTCFkAtsN + Y0LqpkV5O314AtsM+1+MABhX04Lyt5en+ymUAsJPyKSAcEQpHoSijCDb7lNF99PL68cH + 2KbpAxx///75eGeJj4lwmJRCFk7Tm+/ZpVVJrpJs98UV6L4D3e8C+7//goL9H0399y8I + h1KIcJiU6pEyhV6EwjJhI1ipNUTdRDdU8u+/PHlAyGluIfwFNgWEX57Xjg89C8W5Ktsw + JkrdlkoCkLcxNxNOCu+2msoUslBWuR4tk3yJV2V/xMZEyQRUB4KaJuWvUSscJkVWpmeh + AHcMoUm2gEDQkglMt2ED//g/bDZoZcKkKKFUPAuFI1iOBGG8SSa0KpUR5Nn9B80zauRk + w8UUmkJBvrZcKCJv+PjSEUITuHglE8vnBATbcsQw4WQKWSgIUrxaFJE3hVSV2rllTd4/ + /rH4CAq4+gDBrYRi+fqV2YPIWzmddldbE0veQaG2+IbrEaGMh9ccXInrWeUyKWPg2IQS + hqveaHKHiAp062UZHG7rE8T13N2S6zmrchQOS7hc4CxvOEttBRFSwemEjVv5+l6HYhTL + Ei5bmCxv21lCJsBtWMEA6dZ8w9UrSzgwXeZyVz8rb45NDCsYJG4NXAROMUrXFviKmHBO + 3pQwhCMTa2VSMPv6BEs4I/BlsSzj3oy8TdzrCnzWeocpb0hQmXBT4NqCx2HB3RemkneW + 6w+troTeYcnbwm0L/LqFegQKQKijLBX47g+U13RwQtZb8uEwrDeteNtlSprpiGWXeR5z + WSI4kYQ4rGXpxE0FCcSypudxX5iE2/Y6lMiL19FEBGoGLcLNEIWzY1Q4USh0F/jMsuTg + JCyvw5QsWZh7y3FzzrChZWkLhUMr8jzeFqZjWbZDX5Y2biu0Eo9ZREUZZSvXKsqPH45g + cHZZBq1uJ25ZmI6Q0G1hirdMczAo5sQRDAaPW1lClfMgyYRBsUNC11AWuKniQwW288vO + gL2lVHx4wYSG2w4J+whlpb65xKCY5gSpfPjmxBaKhLLTm5lQdrGnN718M3wvT1+ndhRi + UO7IoKBMuMLTK9xSrt+EObFxzxkUKm+6GRSYQTO3nDUnf8PTN4fgcwbFDbcyJ1KI5egE + myN2dBICbEsnUkRRBsUqy7oYcG1OpDJomRNdOgkDt8MQShFldYTCuGmfgUs+Yk6kXh+W + GbQErlKH6RgGZaUhpIK9VdG0koYQSj7GN2kZFMrp7QiFt2BdIqtZMziZqWgaswf3o4Wb + ilbYoZoxhIsM+BaYQUsnktMTbl2LcI+sKBq0tv+uerNmMDiOzZk132TAtSG0th0WG8Jd + ozSooqqwzSD+BgLcEVkZRcJFEaHTfA/GVGIj860pMGkJ7udZ3H1HROiG20gudTS4Edwc + ET47DDj1oixMMReZ75BKmsbXp75dbcApIlxhwHm/VXYaKIqlkmaoSbGA16rUkezQWZSd + N4RiBnkj7bSxmSiWkFu4bQNu16wW6cQ23xVsy3NS7NhIM77LIH80cHNrBBlw2ajnWpsb + 36pZpq3Md3i1Qc2Fxq0i8MlIOx63CNxRhNiU27F14tnx2FlDFTtSc7VBzUfQ/zT5Joc5 + NnenFjnM7XCXmnDvDlO5SxRP0HZiFyFCdjvzuFc5TMK9wF1ahilogej5RSjCN1qW0Ihi + 7gbOO3p2l1bRR3YAwy36CHIlcMNhcqaWd6slKzevNuY35S61Tv6qfg4u/Szd5NkONz+H + +3aVo5/JLs0sjZp8tPwC/yc+iz9PlawoU2NHT02+CwJCHZ6omj0aCux+ma3ArTbVZh39 + svBkU7gpQJlIZkydhAsDFAM39SdJdqnCk43gdglQ3Pnmvqqtw+22V7IsrALfgS9H6wP0 + umS+eROzbTcSzgcoRhWCGn0cVYiN4fYQWNnhIDUoOcPBDeHWXRHG3tQCvmeqJ9xhr4rI + G8a9dLNbhYO6+G1VIRBXUXOpJb/gf1B+x1kCl0MaaA+bDaycuB3F7w3jXh7ICm7dyLYt + uLnyw633qq3Nhe8twU3CZJ3YAXhJDvP8XKQTO23AmQapDlLaEL5ONG5u8JXEQeOe7Vbi + 8NtOG7YI94ATHuBe2IQyi5urbNyuvmm+dYVwCW57U8qsDm5YJxo3jsQsqMgy31b/tCNN + +8btyWmJIdA9EVNK1HSCuSDhMfimKjKlO7qKvBG+HbjtEzFzFdmZtDiauLucXm4N30iM + 9QkkV775+Mv24H6AviWhl5NTS3DTboNO53mTezP6lsLPF3DzISlPlsCfX1L2ZA3c0lQw + y3cUcVMn8tbgXliwsstsJt8bxf3BrRx6XRYWF9q2CzcFsqpJdjlulKt008w28B1l3Cj8 + 6NYZ94LsFvIdVdye9L0TUX1vGW7a4PiIoB1k3NKKp+2gSyveYp1QXLU1/pKuXFgjHowq + 7s3UIaDvWZ2s4BvH5iOYN6Cpd5tw476fYcdLnsa4o5TP01kSu5stOvm8jRvn/Tdfr3LU + T7zVfbYCN9e/uY7spT5oNdtHq65p1L+3r46c8VT/3p79hpV1e6O9KlL7JPF96GTBIZiN + 1KvW2ZfaGtwUxqr9NFyY42EfkO6ZmWsfDJ9vCzffCLW04x51e+hE4+5HZp97ts00Kn0F + ke3jsE/vRK1vxrwaYrbfJ7xGDqxJVNnIntAtKHTZwoo+JbonbHG7Pc/jT1F+9SwO3OjD + Q8M991e5nKGPfh/e/LGMjfCNMpv0PS4/mCF8p/SVLXpjiq8+2RRuRznWpV9zptDGG8b6 + PrmwcUPiumzPJzDdy8jo3qSClZFgmokDz7N6RfnzG/RhGLr/e3UfNSeYmej1rTsuh4jU + OQEjcbAa2qjBioY/IvAwi/o4j21hOzsqIIzcOZjZgBB3EvExXfn7b4ZvPi+1tM10Z2dZ + QBiiTjRNFJ54aEdm3HaAMtNIvUHcK8Iqwu0eWBEJHpaUH79i8k3HGzycY9S45wOUDeBW + 4Qkf/PdwbjR653S3xNFrnXg+F00GXK4rN64RicQ59K04yCh8G1Uf3dW77Ny/UUGJzj0L + bg5TRSh+GDkPc1h8a7ezwl1uiePRy1K7y5VuZ87xhH1JpXwXJm6+b2bV8XkLN2eYdF2Y + eZKRpvPwJX/9VzRuaT7xdE+OkWHS1itvqdEjGaFG4BZu614iXM9Pt64vbMKTw4GLDHgk + 7oFabMBDPUEvfC8w3ws3pSy+DQNOR+uicc+ZnTnQDRHOo4zEw9dX3coZtLxNM2hdSzR/ + GFD4nonAN2EITdyGGSzyMyUrcFuGkEo/umQVMt/KDHq+N9FRsqIXPvRZgbBxkxnEax/Y + m19yRkBksiORrLXXvYkSiuiEzQlw06MZHu4FNUoo/OYEGRTzUv6Vq+rrv2DglmTesQc4 + e6bO4nv5RZVfh7VqBoEteySEm6Iqy5zMn3XVuGEI7VLEJi4GNXE7zIn7bXiEfaZ2ryOU + sK4tN+7i4BbqNe51tmvg1PQTukFRfFNNk5el0eqzoFVTy2SHF6Z96DUy95aLQaHNQG4u + cB7+Jy5Wrasv/ndT3rIsVyZpwrljYUboXn4VoehNtbAXpuZbvLznZckGxfL09GoQd3OE + l/Io3IuW5YITuvaylIVpd/1wCG56zGAFrunmLRIu2TuurnLzloSfN0vUwuRngyLyrood + gqOYjGeaQg1lNd+WvI0axNJnPpTAI/lukCM3DlXgmu5PyHuBwKPxLpaxyyMCV68ahlD8 + UXSrhgJchEcXV+GKYW/vkGFhOiy4lTtY037Rl7v+7w6ZSK7jOO+/a9rruZ+j+s4eWXAz + d4jKu4ZW7hC1dyRF4FZjsvUgoxz4olbZgAaOZXEjLnIG9RyjeT/l3L0+swqP6jupOxF9 + l5YEDksYvXeAWSjSuUkb9fzMNco/W//usggleu9cQyjUwq5bZYVwfg7dqqMEZFHYxfPl + 2Z96V5xww/XQWTU8YXwRmXfcSSi/9+jMQLFMD7njUV26hQsP0L/jBfrgxsfHu+wR43Fu + xzPubvX6RSbcILzdHYwB/PH5hZF/BDWA+gUN31O8Pn+NR8VPjvGKO3b/vL2GTn+HXSb8 + gAmvnDboCXoGDspf397e3oMYmPf19VlgD7pXF9i0lCsH48jQlmXEJunKFOL2MDoVA6UQ + 8Mn9w+MTOA9qvBDqu8nNaNDrXDbOqkfr0k2E/ySFs0mp1Bj4YHQzmRLyp6fnAAamfXp8 + uJ8K7FYTBy7xGFaaek5A9/LQ22BcTAo5TVw7rIAT5dP7+4eHxwDGw8P9PVDfjof9bodg + s0pwgNu7ukXhIBw2PJWFUqqnxHi3NxwB+WR6d3eHz/B3YM7pZHIzHg1711cKNhZlYm89 + upEesw2HUmDEBfhVp9cH8ptbYA9g3N6Mgbrf67QviW2Im1SCt8eWv1tsaIR/ZJMSQ3iV + zgE4pNK4aF2B8/5gOByNRmN/B2YcDgf9XrfTbjXPzyAShi0q8a5uIN/lpRkX4KVy5eS0 + 3mhettpXnc51t9vt+Tsw43Wnc9VuXTTP67UqtA22Ie51VULASSm/43uJZDqbL5aPKie1 + M0BvXl62MNr+Dpry8qLZbNTPaieVo0Mb9s81jIloRpTCjGdzxRKQV2uAXj9vNADf59Fo + nJ/XARpcH5VLhVwmnSC2cfvGWioh5FAKwpQYgCfSmVyekB9Xqie1Wu0U48zHQfOdYt6T + SuW4XC4V87l06tOwRSkKeIqRFw/LwH5c4VH1bch8lePjIwJdyIPsJCwJ2IbHWZtuYhwS + /0Ua308kCHkuXygWS4dAH8A4PCwVCXQ2Q2QL7E+ohJSigcf2oBUgT2eywJ4vAL3vo1DI + 53MEGqiJ7NhvGO5Psa2AE+UQOXGeBPR0JpPNAr7PA3NmCHMqSVyzRr4AmxlnrTDyA7Ce + TCZTBN/nkQLiZCKROGDUIJvY3vUcTrE6HH+QVWHkTPre/v4BoQ9gYN59ME0KwYJksr8A + G4wTcCDHAv0di8WhmMBGPB4T0IL6S7BpdVrQCTvDj/k/ZGrog0BDIl9FzapR0H/8xPgl + Qz7Hlz/VjDQ5YfYLtOgd0FkxPHNwf9DHOBaYT/9C8wY1fIL4Pc03A98MfDOwLgP/A0/0 + sP0KZW5kc3RyZWFtCmVuZG9iago2OCAwIG9iago0NzAzCmVuZG9iago1OSAwIG9iago8 + PCAvTGVuZ3RoIDYwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDQyMCAvSGVpZ2h0IDMyOCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw + b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl + ID4+CnN0cmVhbQp4Ae19519USbf1PM8kc84iUZIkQZCcBMlKFhQEFEWSIFEQJCeRjCRB + VEAx50l37v29/9q79q46p08DotLoBE59gE40p2v1TmuvqvruO33oM6DPgD4D+gzoM6DP + gD4D+gzoM6DPgD4D+gzoM6DPgD4D+gzoM6DPgD4DJs7AfzTDxLfS/3wVZ4Bg+e8yg55f + xX+nv9WXzICKzffff/8Dxo8LBz2I574XAOpYfcnkmv5aCQ9jQ8j89NNPP//887oFAw/h + CUaOwGKodKMyffY//Q7CsxE8BA4js379hg0b5djEQ97ZsGHD+vVAjsDCqxWkdOf36Wle + 8SskPgQPLGfdOoADNDZt3rxly5atW7duw9hOg25s27oVj27ZvHnTpo0bgRVBxUAJi9Jx + WjEKy/whAwT7IesBPEBnE7ABMtu379ixcxeN3ZpB93fu3LGDEANamwkpBSjh+XSYlpnt + FTxlBBDhQ/AAHGCze8/evXv37d9/AOOgMujOgf379+GpPbsBFkEFpCRQP5PjowClw7QC + LJb+E0KILYgMiPCB8QCe3YTNgYNmhw4dMrewxLCysrKmgd9WdN/CHE+ZHTxwAFgBKiC1 + DRYFgxJ+T4dp6en+8keFCZGLW7duA/k34EPGw+iYAxhrG5vDtnZ29vYODg6OcuCmvZ2d + ne1hGxtrwGUBqAipPbt2MU6byO8hPLHT+49eP305Ktq/UBBCDFovANq5i/AxO2RhaWVj + Y2tn7+B4xMnZ2cXVDeMohrs7/cQdV1cXZ2enI46OQOuwjbWlpTmA2g+cYE9b4fbImhSf + p/2X+u0vmgGBkDQhsqCdu/buY3ysbezsHBydnF3dAMoxT0+v494YPj6+NHx8fHDn+HEv + T89jgMzN1dn5iKODnS2AsgBO+/buhjkRTNKYKDJ90XXpL1ZngEie7wkhmBBSBAGQuSXw + sQc8QOeYp5e3j6+ff0BgUHBwSEhIaOgJHqGhuBMcFBgY4O/n6+N93POYhzuQcoJJHbaG + PcGcANM2xCYYE7k8HSV10r/oBmcKP0iEtm2HiztgZm4J9+bo5OIGeI77+PkHBoWEnggL + j4iIjIqOjomJjY2jERsbGxMTHR0VGRERHhYWGhIcGODnC6QAlAtwsrWxsiCYdu2EMVFk + EijpcemL4MGLjRHasWvv/oOHLK0P2zs6ux718PT29Q8MDgU4UdGxcafi4xOSkpJTUlIx + zmDQ75Tk5KTEhPj4U3Gx0VERJ8NOhAQFAig4PzfnIw52gMnsAGITuzzFlnSUvgglhujH + H39et2HTlm2EkJm5lY2do7ObO+zHPzDkRHgE0AE2yaln0s9mZGRmZWXnYFzggRvZWVnn + MzPOnU1PS01JSgRUMVER4SdCAv2BE8Nka2N56OA+oLQNtsTZg+7wvgwiBCJycxs2Ig4R + QhbWtvZHXNyPHfcNCA4FPnGnE5JS085mnM/KuZB76XLelfyCgsKiomI5iooKCwryr+Rd + vpR7ISfrfMa59DMpSQmn46IjCSc/hskRxmR+cD/Z0mZkD9LhfdFlruUXU81KRoRUAXGI + EYIJeXj5BASfOBkVezox+Ux6BqGTd6WgsPhqaWlZeXlFZRVGNQ+6VVlRXl5WWnq1uKgg + P+9Sbk72+Yz0M8mJwCkiTMDkesT+sESJcjwk4sgdPtPffebL/rUgkp8TuQLc3O59B82t + bYHQMW+/wNCTUXHxSamET+7l/MLiktLyiqrq6zW1dXX1NxsaGhqVgdsNN+vr6mpraqqr + KsqvlV4tKrhyOTcnKyM9NTmeYQrw9fJwc3IglPbtRo4Hh8em9LHZR1uDLmzx4Cf+tWAs + /cEwE/BzHIng5g4csjzs4Ozm6e0fHBYZC4DOZmZfBD5XS8srqwHOzYbG5ubWtrb2jk6M + Ljlws6Ojva2ttbm5qeFm3Y2a61UVZaXFhfl5uTnnz6UlJwCmE0F+3oyS5aEDe3dt37KJ + ohKl4YtqJQWcRd1E2UYUuOFVS3+gf9+jCkQbN2+FEZlZ2tg7wYYCQsKj4hJS0zOzc/MK + ioHP9do6oNPa1t7Zdav7dk9vb18/jQEedKuvr7e353b3ra7ODkBFSNVeryoHTldgTufO + JMXHRoYFM0p2NpZmZEqISotAkvDIfhW1RLTNRG4jii7i91Rjfbar/GfDJiFav3HLtp17 + DhyysnV09fD2DwmPPpV05lzWRQB0raK6pq6hqaWto6v7dm9v/8Dg0NDwnZGR0dGxsbFx + HmNjo6MjIyN3hoeGBgf6+3p7um8BqZamhrra6sqyEoIpMz01IS4KKB13d3W0tYIp7dy+ + BamDJigJfAQ83K+ihhV1rDTD0EVkLp2B+tfbk3B0gIj8nIWNvfNRT7+gsKhTSWkZ2bn5 + sKDq2vrG5rbOW92wnMGhOyOj4+MTdycnJ6fu3ZvWjHv3pvDg3Ynx8bGRkeGhwf6+nu6u + zraWxps3rleWXS3Iu5h1LjURKAX5eR51trexOEj+TuR3wiDoJ7Wr1H4VN6zQExHdROoi + ijYidxHRm0K7l/g/wulfDZMGIvi5w2REgSci4xLPZORcKrhaVlVT39jS3gl8BgDP2Phd + QDN9/8HDhw9nZmfntGN2dmYGDz+4Pz0NsCaA1J2hgf7e7q6O1uaGG9crSouv5GZnAKWI + 0EBvD5gS/J0ISpQ50Dxr+4ncTtR0E9FOpCYitxG3c2tKaSKKXu+/GSbO6H5mK9p3yNLu + iJunX3B4THwqIVRSXn2jARbU3dsPfMYnJqcInZnZuUePH8/Pzz95+vTpM3U8ffrkCR58 + /PjR3NwsoCKkJsZHgVPf7VsdrU31NVVlxfm52edS42NOBvt5ujnZWR3av3vH1k0bRU+d + ogyR7dwOkf0qdBP3oWOlGfv3idYUaKW10pvSQLT/kJWds/vxgNDIU0npWbkFV8uv1zW2 + MkAjYxOT96YfPCR0AM2zZ8+fv3hJ4xXG69ev6dcrfuDF8+fPnj0FWI/n5mYA1L3JibGR + YcDU1Q5jYpSy0pNORYYGHHd3trM+dGDPDtSz1LTg1ED0E7eDzEU7EdgcRDNRdBPRTrSk + YUFtRHQR0fFd2JsSKeK/LtUDRN+DXKBYtO+QNSDyDgyLhhFdyCsuq65rbOu83Td4BwBN + 3wc+gAfoAJxXr9+8efP27dt37969VwfuvH2Lx98AsZcvXzwnpB7Doh5MT90dHxka6O3u + bGGU8i5kpMZHh8HfOTvYmHPmQJ1ayg3g4LZSPxHtEDR70a9CN9FW6SZSF1G2EdFFBFQA + StObQtdD6U3902FC6oTBmSh+U+kKckFAZO/s4RMUHptIRlRadaOhtfN2/9DIOAE09wj4 + AB5C5y0B8+HDL7/88uuCgYc+fMCTDNbrVwTUk/lHsCfANHZnsI9Qqq0qLciFKcWeDPY9 + 5urImQO1lmjAwXE/8eAhc7QTD1O/ytBNRA8Rw9XFhbqI6PlSE9G4N4VqS9BL/8QEglBB + TF08KIlSYpE1QRQcEZd0NievuLzmZgshNDoxNU0APX0GfAQ8Hxia3377/fff/zAeeOT3 + 334j3Biqd7Aq4PTsKcxp5sH0JIypr7uj+WZNeXFezrnkUxEhCErIHJCEo7W0g/USe2BA + hyys0A5BOxGdXk03kTqKaCNSF9EDXUQXNBHt7YAT7MnQmyIS8Mcf8EHl1/CfUBUp4Cyq + 1ylAYyBGg+bevmv/IYLINyTiVErGhfySyhtN7d19QOjeg5k5Buj1m7cwHsBD4BA0/4Px + 54JBjzFswIqRev/+LVzfy+fPABOMiVFqa7xRWZp/MSP1dGSovxcyB2v0LEhORAHIDN0Q + GzuHI+j2Ur/KG93EQHQT0T+Ug9qI3EX08vQAUEpvimCi3hQ3eoXL+yegJOExqte16l8h + OAXNDYaOITpGEKVmXCwora5v7uwdHJmYejDzaB4W9PrNO4EPocPY/O8yA8AxVAzULx/g + +WBOsKa5mftAaaCns6W++lpB7vkz8dEnKHNwsCVjMIPYyALtKtFPBDxAJziEu4loJqKb + SAM30EZEayo0JCjAz8ebeoiyN3XoALoeIAEVlMiW/t5WJHybIv8lWfaiep1Kd9b8oHI1 + t7F3IYhOp2bmFpbVNLTd6hsen7zPCL2CBcGAfhP4/PmnROf/PjIU8BSgYFCA6c1rOD2g + ND05NtzX3dZQU150KSstgTKHY6BZEVwwDlNDHv1EL2+/gKCQsJMR0THUTUxUu4kpKclJ + 6ExxFzEyAu1e2ZtyOeKA3hS6HnuhmkA7ntMHLmz/tigxQIZ6UAhMNepfofvl4p0UC/vB + 0DkaICoHRN39IxOIQ/PP2IQEQOTaGICPgGP0sESKDYr83gc4vVeE0sPpiZGB7vbG2vLi + y1npicgc/LxgCyQmQnoAB+dF/cSwiKiYOIAjuonn0U3kdmK2aCNSFzE5Kf5UbDR6iMHU + m/Jwc3ZE14MavXB5jJJsTv0tbUkAROI4qf8lfSmJso3Uv6JkJ9EcFAvWdo6oXEMiyYqK + ymsbO24Pjk7en4WXe/XmHZkQObjPx0cFi4GCPf3xB2D6Bcb06sXT+dn7k6ODPR1NNyqK + 87LTk4h08CXdAwYCkK9/UGh4JPDhdmJWtugmFqCbiHZiYSG1EfPQmkIXMfMceh5GvSkn + MiZKQIASeTyJ0t/OlCh9o2SNANLU61QRKupfTc1ORQhCgIPzUS+G6DxB1NTRMzQ29XDu + yfOXCEO//AofJy1InXzNjf+3YGieopsGmARKL58/mXs4NTbU29lcV3kV6V3K6ehwuCw/ + 6L8oABFApxNT0s5lAp68/AKjbiJ1ESvKy9CaKi4syLt0kXtTSaI3Feh3/BiMCYQ6tT0o + LnE3Hg7v75U7qCYkCJUtir50H+p1RGRV/St1v5aWXIQ4OLl5eAeERsWnCog6e4fG7z18 + 9PTF67cKQotd3AJkjO8a4yRggjERSm9fv3j66OG9cQapqiT/QsaZROr/nYAGDHqWaDR8 + qZ8IfAqKS66VV1YZuonoIYou4g10ESvR8EVvCj1EtTcV7I9+vIuK0t+yG08Ifc/aOLIg + rtelvhTyX636F/W6qNihBSZRlocXaO7o+DPSihiix89gRB/Yy7GTM5p2Y0SWvGf0eg1K + H969efnsMUAaJkvicvZsamJ8HJRfpDbihu+Fy/lFJdcqqmpuoJ3YZOgmUkdRdhEbG+rr + CCilN5WGTm9UeEiAj0DJwow0E3B4RD38fUyJEaKKFOpFSOiZUBH6X2uS/zpCwSjVv9D/ + csXuRlpgd4iy0BCPiE1Iy7rEjk6FiI1IhCHtjC8JyaIHtX9BtwkmBKbfYUoE0gxA6utq + qb9eVpR3AZaQmpICGVja2cwsAIRuCPCpbwA6HWiIGLqJ1EZUuojtbWgiKr2pSznngfSp + 6JOIbYyStQW68TsN3fi/QxquRQjKq+07d6MeBKGCcgOmwvJfD0X9C/mvqNhJC+zrFwhN + Cbp56VmXiyld6CFHR1b0/hdKFciItPO9CIyPP6D9M4ESZQ+//SpAmgZIt5CDV5QUoJkO + 1RdyN4pARQRQHfBBO+Q2+lUDQ0PD6B2OyiHaiIP9/WgidqGHKHpTJYV56HqkJcXHUAbi + 6e4sWogsP1JM6a9OHThTEDYEifaOXWBUUA/a2KLcgL7UAwUhBKaK+hfyX67Zg0kLHBp2 + MjLmVBI6EeB/lHSBIYKfW2xE//dxSJZ+RgOUNCUDSHf6u9ub6qrLS0hGlIcEoYgtCACh + n3i7l9uJY9xNnEI3Ee1E/JhCZwpdxLFRNBEH+mRvqu565bXigkto9CYzSj6ebmghWsLh + kSlxgvdXpw5sREjl4OXYyUFfSgJgECpUbpC+FPJfg/oXnl9U7FS9x0I1l4yOeC7zPyKj + e0RWpECkmeT/+2KE/t//M/pz4e9UkFAogXNA9w8JwLVr18pI0cIAdff0Dw6LduI0+Fzu + Jop2omgjoot4j5qI1EMUvambtVXlMKYL59NT0JwKCUBhfMTOGpy6RtjyV+Z3lCooGm1y + cjAhFgBDX0r4kL6U5L+nNepf6H5J+AsxMIpEpLm5eUXXquqaO5F0TyKjE47OFD+nMSot + ShIkGZOm744SyQp/VXejtvZGXT0ULbAgAHRnFO1eQgfIoGE1/4S6iTxEG/HR3OzMw/vU + QxS9qVvtLQ11aPRScEtPRjZPhbGzw2GYEnqImyl1WFJ99I38nzQiqQAmhCwhAHYigPyA + z8lI1pempKafPcfqX67XoftFxU4jO+ciq34qwXN39QKiB3NPXrx+98uvi0KRZtq/8KYG + JQUkyu6omh2/Q22l9rbWlpaWNmQI3T19g8Oj4+gnPpxR24mGbqKmiziPnofSmxqmN2lD + o7eSUMpMSzoVFRYIhwdTomJJaiYov/tGoBj/G8WImBplaRxLtI8dB0Bh0P/GJ6ZAXwr5 + 78VcVf1bhIGCnUdhEZUh0Cw0t3f3D49T6QqIPqBwNcoWvhCVRS9XYSKQkN1xCk7EELeV + em93Y/QgQ0B+MH73nugnPlX6VbKbiB6i0kYElQ76z9CbAp/e39PVhrZHZWnh5ZyM1ITY + iBB/omulsAUF7U+chBvP3re4pxgRAhFptA+AeLNzdIEJ+QefIIAUfekVhOOS0muK+lfo + fitoVFZVc5rb1kU8N0rXJ89Rui6EaAWByBgmFSNKwikFZ5CePJq5f+8uSVNoQAwGRQva + VbNz1E98CapQthM13URDF5F6Hobe1MTocH/vrfbm+pqK0oJL2WdT0OgN8jnG7SnWTLAk + 9i+wJIJIyui37YQC2ALEGxDyCST1YjxSgfM5lM1CXwr5bw15fFL/ynHzZn39TdxvbG5h + Ucnw2OT0DNiFV4BIpHTKxBpP90rvKe/GddJvBBKxd+hX3GO5F+VvULTAxT1+IvqJ6PZy + O9Gom6h0EdHwpZ6H2psirOE3b7U1118vv3rl4vk0yI9C/LyOoj0FzcROCkrg7745SMLP + kYyejYjEi87unr6QaKPeST1LABVSNgt9KdXrcPhC/Uv1Ogt/2+k+NKeQZQ1TO2/2sSCA + vgZEhhSPvB3KpA/v0a+AuyJlyn0aEBzNQTIBC6JuiKFfZdRNVLqIRr2p50/nH81Soxco + dbU11lVdK2ImEFHJm/wdaSYgiaXM4RuDRBD9+CMSbpKXUn/BHhptH3AGMfGsXswrvHqt + shr63yboSzu7yOH39gn5ryL85fuDCAJjE1PQLFArQnB0mmC0UrtZ9HcGQ4K3Y5Bk74/E + XiJ/QwgSAFG/l/tV6BfCOy4YahNR9qbewOk9eTz7EM2pO/09na0NtZUl6CGmUeeDNBOH + LYXa8puDxBDxciGKROgvHGGNNhBKTs/MuUwC4Os3bgIfoS+lep3VvyT/he6XhL80RrlK + JFXJ/FOV6Ka0W07poqle+QMGkATh8At10imoyEGSljfU8RUAKe0q5UqUPxdc+v+KHqLo + TcFvwiSpHX93bLgfmgkimS5nn00mf4f8DmpLTu++MUhKKIKfYxm9g7O7F8SL0UDo/IW8 + wpLyqtqbTa3QZ0OdLeS/Rurfe6jYeaB8h5fhMI0ZEr2IrwOR6u1gFdxTgjRF6B2QpUGe + J1IE2fFVAFKBWXiDTUvbm3r98vlToHTv7sgQwlJDbQWR6qnxUWjHIygJSey3dXcMEUIR + VjrsIe0ijMgnkDTa6ZlAqLQCBXtLe9ftXuAzSvpSIf+F+lfKf3FjhgbfR5X49Bk7GTDd + v2sro5UbzdJ/KWZaAQmuCqH/PenykFUbQtAnAVLfBmhLuNHoBUrweA+mxu/03wapzpoJ + 0Y6H2tLqEOmWvyVIKkTbdrIYAfJS/xCQ19BoA6HKmvomytUGhhR9KaIx1eus/lUr9ic8 + SA7MXkaoFox51KVneuWPSmsgkGhuqT/7K6XTMruWMYhtZKHhSCbK+GFhTXin37kdT0nI + I2gmwF8QX4t2PDq9seGUOWhA+jbFrIBIrHQ4aAExAmT0YdGnU85mXyqADdU3t3X1kHoR + 1Qb5MSn/NdTrUvfLZbtQnULXqHoZ+uByKlaOxtJ/acBIQQkwiSEVYSJHMEZiwXsZPWmM + EqWKKI3vjY8QX3uj8uqVnLNJcSeDfDyc7a2lJX2bYlYLkZmlLYkRgk/GJqadv5gPjTYQ + utVLyfTkNMRxUl+qyH+5Vhc/oAXmwXpgqkToWyx1C2IaFszNatzVggRbEiIvluRpNGFG + IODOgn+88GmCSfF4yB4QltiURBMRQQmZQ/BCkL42K6SBaB9CkdNRL3/I6JPPZl8mZrSJ + ELozRowKDEijL2X5L4lIxYB7UQY9INyM6EZIK1owNatyV51f/v7T5KpDeUR9ibix5L9d + 8Br6U4ESuvFEBc4hKqE/1Xrz+rWCixkppyKCfT2Eu9u2WdBCXxekBRApMvrMi/klFTXQ + aPcAIZjQLATAqDZUfSkLTKnmkIOEv+qgx1Rt1tdydGK21elVMDH6rT5LN5aEx/Cg9rUK + Slwbw5QekUasn4R8ZYW5mamnI0IYJKTgBNLXrmU1EEFdyisdwmMgo79UeK26rrkDzOjY + XUjjmFEx6EsZHFaYKt9bqtgNA48qc6V+dMNsrOYt9e3FDeW/Kl8Mw9Of/KeGl9ItiRJ1 + 45HhMas+MnC7vbGmnECCJcHd2aGY3bl1E63B/ZqEAyD6Xq50EBptn+CTiowe8tLeoZG7 + 94AQcmkJkOLEVAzUWVnqhvZzf3KSVvYC7b9Y7vZnvLvRn0uQBM3E/m5ybAhCvtryIgmS + u5MtQNqB1uzPIMG/nrfDykjDeiF7Fw9frHRgGT16dB23+++MT4F2gzTu9Zv3EI1o0gB8 + BKOPZLhDH85wz3DrMyZpJS8x/IPlbn3mOxu9hUSJTenViyePHk6RRkwFKcjb/YitxYHd + VCZRcve1QJIQbeYlXUKjrcjoWyCMGyXu+gnTbmBUKE+TPszos3zenc+cpS9+2Wf89y95 + T6O3A0qUO6Ad/+71S0XIxyBlpMSdDPQ+6mhjvn/XdvCrX8/bcTBat2Hztl17D1nZOxvJ + 6LvZiIRGG5wXm5BwcEYf47PvfMlEfclrP+MCvuTt6LWGt2RTYsaWhXwzkB8hB69FTEIK + Hhbo5eZogzJp26YNFJK+iiHJfGHT1p17zbB2ldYLnWZ1aU1j++2BkbvUAHpOGm0NQobr + V24ZfSjlwcW/v3SiPvf1i//Tgkc+9400r9O8gzAlKeSbFyDBkgounkuKCfP3dLG3MkPe + sHH91/J25Olo2d2OvQctkdFh1R0gEtLFHvg5ktG/RO9FarTpO6W5eL6p+Vz/ppvaj7kk + SDVlBTlnE6ND/Si5O7CHQ9JXye3UfGHPAQtbJ3fvYCzpOn+puPwGVnQNsRYBRkRuTpJu + CxH6N6Gy6LMYYBIg/fEb5EevnpElDfV2NFwvvZKTHh8Z4uN+5DCHJHi7r5A2KMEIKyPN + bRyPegeejOPFKAIirYxe0AWGq/5kObjoE//zHtB8WnIg1OuVIGEFQE97Q3VJXhbKpMDj + bo7Wh76at2NPt2HTNqzSt3F08woMj0vOwGIUgmh4fHpmgYxec824+c+b8xVcsfqRFZBY + tzz/8N7YYHdbfVXxpcyUOApJKGXZ261+2qB4uh3IF+xdPP3DYpIyLhaW10qIKBTBz8n2 + j9bNreDT/jP/RMWIWQck4VIS+3BqdKC7pa68EHlDdKivuxN5u21EN6yytxOeDjsp7DmA + fMHDLzQ68eyFgrKaJljRxDRnC4aVDpqrXSM2xN8qzccWQUmA9Ojh5Eh/VzPlDenxEUHe + 8HbI7aiSRdqwmho74elQGSEYHUG+EBmfnpNfWtPYgXSBIBKaK20TVVzxP9MkVnzVKkyG + mPTy6dz9u3c4b0BIIm9Hud3u7ZtXO20gM8KeMVQZWTu4HQ88eSo1K6+kuqEdi1GmZ1SI + uGhVr3Mt2ZCCqvrhBUi04OnFkzkkd7fb6iuLczOSokN83Y9QJbuVDWkVC9n/QO1Ie8aw + p0Mwik3OvFRcVd92e3D8ngoR53PqRa6NREHBRvlt+PgMEkliXz+fn7k3NnCr+UY5e7tA + L1d7ThvQpVjFiMSebj1yuv3mh4+4+4ZEJ55DvlDX0j0wOiWWdC1ejKJc9Rr7vRikt6+w + vHNypK+z8Xpp3vmU2DA/D04biG1YRUZImhFyOvJ0QRHxaTn5ZTXNXf0jWIzykfVCawwb + 9eMagUTicqwcREiaGOqBtyu6eDYhMtjbzcGK8u/VjEgyYdi+m3K6Y/5hcannKRh19N65 + e39uyfVC6hWvwRsqSDK5o5A0P8vervbaFU4bjjnbIv/euolSu1WKSDAjkTCgenX3CYlO + OpdbXIlghHwBi1F47apxLFqDyGg+8gKQEJLY21FuV4W0ITFKa0irlH5rzcjVK/DkafJ0 + tc23BsamZuaf05KuBeuF1ma6YEDJCCTF202PD3a3IG3IPoP8+5jzYXNO7VYra5BmRCTQ + EXe/EzHJmZfh6Tr7EIweozBatKRrrUOk6SjB3Qm+4fk8pw0N1VcvCUOyp4i0ef3Pq+Ts + qCWxYfP2PQet7DlhSL9YWFEnPB0FIyKAcC3Kl8fwdVrDt5TJgBYFpNCvH5Dbzd1HkdRa + JwwJqZ0NqFWQDTCkVeAaRFK3ddc+88NOHn5IGLKulFJON4rKyBCMlKtaw8BoP7oyHQQS + e7sX8zNTI/2dMKTcc4mRQcddiWzYtlpZw3//q5iRg5t3cFQiEoaqm+3I6R7A06HpakQA + aa9zbd+WKAlv9wvShkfIv7tbb5TlZ6XGnvB1R9t8L6ffq5DZUcYAFkhjRkgYWroHKacT + no4YIHlFaxsW40+vgvTn/1CRxIbU10mpHajVQE9nWwuk36vj7P4DM1q/efvug5b2bEYZ + MCORMCCnoy1j9GBkjI1yT3F35O1+I0MCbTfY3Vx7Le98cnQI17G7t8PZmc4HCTPashNJ + nYhG2fnlN1q6qTR6+hI5HXs65XL0jE4BCL+VSRFpAxkSUrve9vqKwpy0uDA/YlahiNyw + CpkdJd7rNzHF4Ho8KJKiEefdKI2QMCyojDRXqN/UggRDegtGaHpsoKvpeknuuQRydnbS + 2ZkckDhjgBRI1EZI6vLLbrTCjO7PUWlk5Ol0WBbOgDAlMiREpNfPHj+4i/T7RtmVLOns + OLMzOftWMoYDFnYunoER8WdlNNKakTTqhReo31csiSPSB5k1dNysLMwB1+CHzM5sL8pY + cHamVUjs6lC/mlk7HvUJjUnJunINSZ0wo3fGCYOOyaIZkN9eNqRf3pGzGydndzX3bPzJ + AE/ig3auQkD6DyXeyBjMDzsfCwg/nX6hqPJmRy9YIBGNiEpVYuOiK9QfUBIHYoQ0zu5a + XmZSVJAXyliRfZsYkKg42rQNTQnQQMFRSRmXQTHcotoISR3MyACRDsjSM8DfYNXZicyu + vCArNYazbwQkVEimYcSubst2ZAyO7r6ggbILyuvaeu+ATH1OSZ3GjJa+Qv1R4WVgSL8j + s3sye28UfFBV0QXOviEQ2oMK6cfvTeohoYAVrs7WWWYM1Y2dYOpmn6A24qRO93TLfw9V + jODsRBl7q5kDUrj/MeJVdyBpMI1W1bg6b/T2zudxxjBx/9Gz17I2khgtf6Fr+FkFoz+B + 0Rtk3+DsWmpLL2dwhWTLSYNpiZ3M6vaawdWB8T6TU1gJNlXJGIgF0iH61PdPggQ+iLLv + h5N3etrqyq6cT4oM8nKhKnbLRjANJiTfxNVxVgdXF0DF0dXrTV0DY3rG8ClgNM8rhvQ/ + v314+3J+hukgJA1cxdpbHgCt+vOPJmEkKG9kda7Hg9nV3Wi9PTTxgF2dwYw0V6TfXDwD + hJIhaaAmEqpYkdgBI07sTLAjDkdowKKA9T0Rm5pTUKG6OmQMSuK9+Kr0R7QzwJaExO5X + rmLHOLHLSY0N9TnqaHVQJN+mYPTDTxuYq3Py8EcBCzq1saufXd27X0hnIuxYez367cUz + IDBC0sD9CdCqjdXFF87EUZ/PGqIGJN8mFEgiHO3aL7i6RCpgwQPJrE51dYsvSn/EaAZU + jETyPXCr6XrxRaMCyTSM1m3ctotIBmTeyVn5soBlHkh3dUZALHPHgNFr7vNxgZR+SrCq + JtsREUEcjtx9T8SlIvOmBuwUFbDMA/E/X+bi9KfkDGCi0Iwlxu7R/fHBVcXov9//hC45 + iCB0YEU4QuYNrg5SE/BAsjjSgfjUDGjt6BH65auLEaUM4LyZCEpgPtUQjvSs7lPYKM9r + MSJNA+LR1dx02UEy1df99wdUsJQyuHoFRSWdv1JW19YzLNoSlHnz/9YlDAoUH/stpol9 + HRN26CBVr1rOwITqViVlSMkS1RE6sMynKjzQxy5Nf1zOgMSI6qNXJGno72ysMuTeJA0y + IfcmjNA7ogrWhyrYImi2iPN++hLVkQxHOhKfmgEJETUnUMPK5gR4BqphHaxkA2nFNSz1 + YJHWCUL1VPrF4molZXgPyZZwdZ+6Qv15FSOSBj2BoLiv42ZFQXYKSewEXwc7MgEjJa07 + 5h8OQrWkppmUDIKsk+FIx+ATMyAgotRb4b172+rK87OSooJJ803NclN4b6TeYIJIykD9 + PaR1tSBUofKmFqySMnziCvWnDRihf/Rcqreu5WUkspxYEZ2s2I6gfqTU28IOGEUmZuZR + Woc2OVgGEKp6dfR53z/V1al92O7mGqggIQzCQjFWqprS45Opt6UdBKpIvfPL69vQ30Na + B4xEyvB5l7mWX6WakdAzzAk9Q/EFLo+OSIGdCb1ywohSbzvB1iH17gATNENMkEzr1vLs + f85nlwjxIiQZjljxXZCN9hGldQc59TZBc/LfH2hNi2RUU7KJrRNyE0696f9/znWu5dco + VqTo6x4JOYPQ1/EyMV7dYgLtTZogsN5WWBoWEqOWR1DWMVunY/Tpb5+KEa1uEaL8fqlT + jYBOlSUn1CpfuXaLMdp90IpUxChhi6sg26IGHxhVmdZ9+irX9CsMEJFMVShOxOKWVdN7 + S4y4UR535gI1YUlv8uyVmnqvaQQ++eFViDSLxIbEIjFs7cQVLK2INWndBFFBWL9nDYnq + CcZIQzOIEvaTl7mWXyAh4qXlCxZbnhWLLWmvE1psuXJX950xRsZUEGO0lhH45GfXQiTX + WmLRMq3+x6JlFjOsxjo+xohEQWxHF4uvN93iDh8kqiIeffI61/ALDBDxqcFyzTI4b95F + w7D438S9t3Q7Wul3TAFI7KyK/Rkgf6TFR1j7j000eIUY9kc7hNVHpq4rN8YIOcPCeLTS + j/Bv/ztjiJDT/fIOCy1pXQvtoXGJNoOU26PRhp0mZN7fUTzaiPYRcm+ZMyzM6/7tc73S + z6dihI0raH9idXc0JHVl+dlnTmHNhNgdDWZk2oZBBow+Uh+t9DP82/9OwUhChNKIdxkc + 7mm7iR00ziVGkRlhc2K5y+CKSW/8IWOk8wxf/o3SYEQbQdKOTuTp+jubakrF3sQwIyyZ + wCbfpm4ySBhp+LoCVtfx8jDiVOlCvvzy18RfSIyMPB3tcYKEofBCutysk8yIMwYTqiPY + kcJ7u3oHQ6WqSE503vtTXzQVIwQj3k/12aMHvMV3dcnlTMOmt8KMVt4nJx+pSrdcWLql + URKrPb5PXe3afF6LEeV0YvPobnXz6ONuvMPgKpgRMNJIIBMzuA8r5HU6Rst++QRGcHUL + zKgKeXdyzAk/9cgJRCPTzOg7oWfYewh6BiziOwc9A62aMNYz6CFpCbQUjAx5N0Uj2kyV + TpzA+TqrZkbfQbsl5N5HhNz7qtyagdYrK5oTHaPlMVKTOuxch2ik2YJ9dU5uUfR1RNiF + xaVd0DaQFA2kntsth5HIGJQd2CtoB3bURkfp4BacE7sau3uzlhh7nCiN2AJsQ6MIGqTo + BFa9xDWu9YfY13E4otN1XjyZxZ5ogmJIO30Sx02IM/lW5bgJVe8NYRBWLGuXiPFqWOF2 + 1zogS3x+DUac1T2k3W7V+nV1z9ZB8m1Y20JLLUXSYLyqfIlrXOsPSYyUXaPFiSBgUy9n + JuNEEOIYDuAk39U5bYK2gNQuWebdGcQaMUW9hctZ64gs/vwqRtyUUApYnMiXkRx7Ahjx + GVVUHa3C+aNy6T/2ruMuH621VAISOzu5AklHaQFMCkYGkmG4t70B1RHZkTg1kXMGPpHP + JCrou+9E0qAo7JKzrmDNcs/wXbHplrquXLekBRCJ7R9pP7QFRFDe+VQcW66ciL15AxI7 + kzclBka0FQ0W8pEqPyHjkrJ5nVgQq6y21O1oAUhaO3r78hkdmogTqmpKr2Sn8Tm+TrY4 + bHnHVjra0mRvR1s6iT00UMWGncImkLyzN63kI1m+ipEOkjFICkZYukd9iXlx+ugNOlo+ + KTYsgAzJHKcmbtm4GiCJgIRWLEtVUzj7vj1MhxjQ1mj6DoPG0Kj3VIxID/QaB1RByUBn + LZfmwZCiQvyOudhb49TE1QGJd1PdyhudeGF5S8alEsO+W0aGpMckFSDckBjJY3VePn30 + AA2+W811FcW5mTgQO9gHR8tbrRZIFJCUDYPg7NKQ2dXjNBCsQVq4VacOkgYkBSNOGt6+ + QmuCT5ZvxDG+FzOS404GeburIK0zNSYpO0cLZxedfD4PWQMfB0LnGBhtwK6DZACJMeIF + LZAEkZgBWQPOw267WV2af+FckgKSGbu7dT/RWWImZOAUkNAv328h9lPFuuUqHJVIG0Gy + IVHaoBRJeuKggqRixGeIkSHNTt+Ft2utryrNz9GAtBd0A6hVAmnlwhODs6MyNhbHU12r + NRiS8dFHOkgKSApG3OMjQ3r2GN5uuK+rxRgkS7O9u7ahTDItA2dnh7N7sZgPpyVGJPBR + BjhzlE7iw2GJ8HZaS9L9nUBJxYiafL++f/v6BbzdPRWkC+eUmGR5cO9OpUxauSGxs9uy + UxwJwue8wZBwouW9Wd4gTYAkrol+Kt+ktf1bi9HviEjwdk8ESHB3FJNk4iBqWZRJpnk7 + GBKfUMVbqgZFJpy9WISTYXuw0SAf3kvnJRpbkg6TcoABkgZSqRJIbyRIdxCTkDgUMEiB + 3kePHLbgWpa6fSsPSfLcFj6iCueOxqZQatdodO7oQpB0lKRfERjB2xFI5O6mJ0b6u9sa + rl9jkMIhbMChfPsoJDG7umJvB2cnDh7F3sSISPHpOQV0jhi8HZ/fS4fDLgJpraMkMZKG + xJZEMQmJw90RpOAM0rmkGFDgrvZWZghJlNuZZEjiHGw+wNc3NDqJzuO7yafDztIhyypI + ag6uhyUFIwZJurt3yO7m5+5Pjg7eBkilBTlnE6ND/UA44AhSUwWr5OzIkOg8eRfPgHCc + JJZXeh1F0vAEDrZkkH77448/FwSltW1JKkYEEsUk+LsPHJTmHiggXclOj48M9qYjSOHt + IPyGIa3Y2VH6jTqWUjvHo97BkeTtymqaOvvu3L0/N//81dv3dF45+zutKa1llAwYqSBx + esc5+NQYLOlmVQnE+adIgAKtHTf8TClkFUPadQBkg4cfvN25i4XlN3DQMkCanX/26s37 + D7/ClBaitIbTbw1GvJJPMSX4O2QOU6CFWusri3NZs4r1fFi6LAxp5WQDDAmEEHQNOK/c + 1TMgLC4l81JxRV0LgTQNkF6+QVD6jUyJHJ5qSzpGClTS4XESLjp+IMEhWlWWUEi1ncmG + tB5kA9IGRzfvoIhTqVmXiysBUt+diemZx09fvBb+ztiU1jBG/NEVhOi3iEq/04I+0ano + M0i5lKVIpiki2ZA2bEHaYGHr5O4TEhl/JivvKoM0PH7v4aMnz438nbw4HSMNSmxKSB0Y + pDnsAdDTTkv65MpYZUmfSVnD9z8ibSBvZ2mHkBQSFZ/GIDV39g6NTz1E5oCDyw1BSVzb + WsdIpRvEdAhTkktjp8eERH/B0lhT6G9OG9ZvQm5nZmXv4om8IcEA0tjkgzkKSgIkQw6u + Y2SMkgKSXGJOGn1aYh4VjE1prHA0CB8Ua0rWQGkDiiQKSQ6unv4nohPSs/IQk8iSGCRy + d2oOzt8cHSOaAWN/9+cffxhv1ZDNmzuJk8uhiVw5Z0dCO+Httu/eb468QQWp4oYA6SGq + WRRKlIKrhqRjJGdAhYksiSV3L+axPTGOQaq+yieX48w3eVaVCRtCCpB+Xr+R8gYCyUux + JAESJQ5POQUXxaxuR9ovqIoRpXe0WwMdg3Qfe5600MnlKTF0VhWdg2Tqqdj/+S+8HYG0 + Y88Bi8MGkJDdNXf1gRaa4ZCkbfppL3Nt39aCBGKId7LDuXx9HXRQbPrpcH8PPoTU5FOx + GaR1GzZtVUAKCItOTM/OK6mqb+3uH0He8OSFIFgVZ7e2cVnw6RWYyNsJQ+LzW2pwCGli + ZKA44JK2STMlILG3A28HkHbuPWB5+Ijb8cCw2KSzOfngV9tvD42jU/GMIhKcHSyaLmnB + Va7xuxIk9nYwpOePH97Ftie0T1qKeiq2yScuy7xhw+ZtO1EmoZb1DjoZl5KRW8TUHRkS + ItJ76ex0jBZ9JVWQaMN8caiB9lRs03eRJtIc3o6Tu83bdqFMQi3rKwiHEuNuEhNCOkaL + MFKycDqEVByeSIdVYTf2s6u0Gzs3NhSQtmzftR9lkptXALxdRi5x4Lf6R6egFHr1ljp+ + CEg6RstgxKdiG041yFQDkqknLktLUpM78na+IIXSEZGEvgEH+8LZ6RgtRkc8Ip2d5nSQ + EXE6iObEZVOTBnZ331PeAL4BhgQKPJAo8LySanRlqeFHAUnH6GMYKZwDOTs6ZWeWy1g6 + cVmchCRP8105G8TOjkISGRITd9ZwdoHonJ/XMfo4KsbPCEuSAYlPFOuiE8VwUiyd5mtm + 6sl8AiPO7VDJMrkqMVLsaFL3dcaILL4nvR1KJDqFlE9PbKbTE3FSrAdRdmAaTNpHWjEk + CFDYjg7Bjo4HRpw+k3WF4hGqWD1nWIzKwkcYJYnRI3SRcMxO6SUkdv7HiGkgNsiUvb4Z + I0k2IPumlqy7IkAhcfGolNsZxMULr0+/jxkgkBgjeVxVSy2Yhng6e4KPQloVjChnALO6 + B0Iu52N+J2JIbQdtMYgGCLleiBpW5xk+/nWUGOGcnefzxDS03sCRYgnySLEdWzaYbkcy + ZZDKBuHqILZr7MRCCm040uujj6HEGP2vejQf2KAyA0Y7CaOVi+ykq5M9c8WMSMZVBIWQ + VBa/YtGqLGF1vm4pnBZghAKpLI+KWHnOjskYyWhENIP54SOQQ0bEp2VfgRkZqiMNXadj + 9HkYlV+RGFlg13xTMRLF0QbWcMniiIR2lehNDJJAXzJBCu2tY7QURpQ0/K/B12ntaHUw + orxbqoMgPEHCcO5iQXktBKsa1lvvlS8JjfqgMUYiHmmOITUtHpEZKTmd4OoSBFcHdf44 + 5KrPXzOhSopicrp6/0iFxegGJsZgR+ggrWpeJ4SQRNVB0EDBCOUr0UCUd99D/UpcndHy + WKNL0+/IGSCMJPGN3Ps25958YNUq1EcGiR0xDF6BJ8HUXS6mRvkA2hJMebN0SxZHuh0t + +a3EtBgw4jMuwTPwcb44aWfvDtN4BsXT7dgDqaqLp39YbDJasEi7b1EwMhIFSVen5wxL + oGTA6PWzRyQNoiYfq05Wga/TLnChxlF04tkLmnzhBS2dkIuQ+DrwY4lLXPMPaTECpzpw + q+l68UU+ctnRxlTeG2ZEim+xUMyNK6Oc/GvgUrlvpCiCjNfFrnlAlpgAgRE3y7k30Um9 + iTN8OJ+1OHJ55cIgMiPm6djTiQWXyBfaecHlvBRt6RAtgYrxQ4SRpscHzXdlIR2LTaeK + Hdi1zRTxlkwYthHB4OROS/kMVKrxwmX+ovAP44vT72EGxOQgrQOl+nKejn5rr4d4Kzka + snxSE7PATnbqvviXupLPDDmddxAviSWlCaV0Kr+gaB/FleigLJ4BFSMS2Km0t6o5ARX0 + 8w8rplQRjWizE6yIxcaq/rQjjbqRBrJuoXzUQrT48vRHMAOMESlVqQ0r0zqResv20QZs + d/LFBiT+QEajHbyy3CdE2aLBsCGNUe2qZ3Qf+0JKjNSUYaCrsRppHVrl7jL1Xnn7CK5O + 7hmE0ijw5Ok0dasT3thJK8Sny/jYJa75xwVGJPgWsiCI8hVZEBZO7N5ugpZYa0buvqEx + yZmXS9DX6xMSBhRGmkVHOkQf/SYyQsjqmAl6gZThjiKvo5V8SsqwQukWzOgnWlbOG53Q + jkEXCivqQNPx1lscjPRY9FFkDE8oGNHiFgpHQnGCdRPUKbejzsRGpAwrxIg3o+FjJxzd + fWBGtPNWU1c/qUygYCAi1UDS6Y7OAIrxLQEREaq///KODsYe66dwJJgguf5oxSmDcHW8 + gTR2yz9JZkQ72GGX70fYLl/bedUdnTEsRvcUM+LqCIstqTq6WVGQkxp3wgcKSKzjo3C0 + wrROZgx7lL2JM2lvYt4J8omqHdZ5VCM8lrqjYCRc3eMHd4e4MXE+KToY5/OZGo6YBsIm + g4edjvmH0x7fFfVtvXQyCDbLJzMyeLqlrk1/TMwAY8SLloWrGx/oaoJI9Rw3j2zNORyt + eBkfUXVy19vjQVFJYq/8fmyoCjNCTmdovOpZ9zLfR40ZfXjDrq6v4yYyb3XtvylLljmr + 27x9rzwEKTW7QBywI8+cUFYb8TUsc41r/SnFjFDAUlaH/p5wdbywxQH7DG4zKRzx+Tr7 + zA87HwtAxoBdIBs6sSRsRpqRwdPpOd3Hv4iKGYmFlkpWp7o6nC9Px4qtNPPmY0HEBt/H + g6OSkDFgE/ah8ftzlNSpi/ZwDR+/wDX/jEAI9Su2ZxB8KgrY9npkdQZXZ8rKfxy2vH7T + 9j0HrR2P+oTGkqtDxkCnglBtpEkY1jwQy0yAihHxQLSDBh27jCUTeZlJ0egdIaszydWJ + Q8uJTnXiw5Zx4ARWsoxSxvAWSZ2q1NLN6JMYKWbEO9GgvVcFPhXrlaWMGK5upetaqDrC + cW/7zPlQkAScP4qDW+Dq+PxRw2HLuqtbBiKluUfdPTIjkTHUleVnpcae4CV8WHpEfYkV + EkF8bOJWPm8C5/gqxybKc1sMZrTcFa7559SEAdEIHdgns/dG+zsbeUOnyCA+dZnb5Cve + vY4w2rSNTnvjcJSjOQ+bDxKTrnbN47DMBGii0e+/IPEGx8BbnIiMgfcKAp+KrG6FRNB3 + yrnyWLbnZ3Su/EtkdaAYdIyWQYeekhNETQlO6siMQKc21ZRcljt1WmETdpM2GARG6JJz + yuAffvpsbgm4ukEZjlRX94nLXNNPq1YkopFiRvUVhTlp2HILO96a72O1yYpd3XdIvflA + vsPOngER8eqR5Y/pGDFgxFewpjH41IdXMfqTKAaORmxGMvGWW9fhUJCVZgzfidRbSesS + M/LKbrT2DIvqiDJvHaPlMZIIifJVJnUUjciM0k9z4g2OgURbK87qCCN50rKLV1Bk0nk6 + DVtWsEgZ9I2BlkfIKBrJXTopqUM0ghmBqqMdIM1wkgGfrbNCRZDEaNd+HPVGTBAO8cXZ + oyOTOGgZx1rKlOFT17mWn9d4OtrtFrUR7e3dVgcaCGbETXLoUzeZtv862ZGmPCqouAmM + iFB9q6Z1axmDT3x2FSJ5nK/c7LbxesllooEUMyKOYeXhiH0dYWTv6k0lLDDq6NMx+gQ0 + 8mklGLEYiBMGEN5Y0NJaV16ApI6ikZ0FmdH6lXMM5CAVO9Ix+jxcNK/SQiS3I35MIm9s + dUubr4NNldHIRDNSMaJ4JOxI93UaHJa5uQAi5N10uPzYwK3m2rL87NRT4f5gU5HUmWxG + Iq8TOQMa5XrOsAwoC55SMALdLc4tf4ldvSeQd9/E0UfnEugMA4dVOFVH+rotO/db2Om5 + 9wIMPnVXYsQQIafDMRO0nAVkKvLurJQ47Iemnk6Fg0dXnHgzRuAZFtawd7nDp9ewy8Fk + MCPwdHxcy5NZau21UMKQDjUQFFt0FMgWHIVtSlJHGH0GF6Q3jxaDZYCIDy2ns6nm7t8d + hu5RHHsU6ktrJfbxsaMmmhHx3ktxqnPQ1hFfJ3nvxde4xh/RQETBiKpXyun66fiwK1mp + ceEBnnQQCAhvE4/vJR+p9yZW8m0zgoiD0fP5mXtjA+zpLvCho26O1of2Ut/ItNqIMTLu + 8WXrPb7PwEwLkRKMqHpFTseeLuaEIWEw7RRsggi73GJBOZNBblQgManKxLdsTujObjFm + CyCijsTTuQd37/R2Nl5HTgdPF0iejhIG0whvRogwWkJzwk2+V9jLW2/ELkZI03ml1utv + BJEIRl2oXimnw/HKR3G8sunnlEuMUMSKJp9Bu0UyVdZusaBBGpKe2yloGVuRyBfmH97D + KYmtdRVFueeS6JhyJ1sQdauSMBBOLMk30kDKDhI7O33RhAKN+K0ARFtlkBUBonevn4MD + Gh+iA7CvXs5E9co53cE9O4SnM4HwVuyIEruNUksMNohXH3UPYhtiXUtsDA/dWxIioukm + hkGlUjA6c5qqV+HpNq1fhYSBcELSIESQUpMPoWoD1itPoc3HYmK1RtKVqhqMNFb04gmK + V+QLTTXX8ikYhfi4H6EjylfN03HS8BNVsWJtS2wqaNW6VixYxkrL11KUr4Skxd+rNfaI + akYGiN4QRCheu+iA8oscjI45o3rlnA6l0Sp4OiUgCWcHSUMirRFTFN8LDGltW5IKkDYW + vXmBrBsQ3WqhfCEjOTbM39PV3sqMcrr1P5lK1CnxiJkGUnxjraWHXxjWWiqLxJQly/jS + KNe3xuxG+3GVKcBvjRVRYQSIkNJVFl/KTI07KYLRPnSNVoEEMmBE2zNsRmZnhf2csBFN + 5uXS65ql/7wESQdpyXSBrOjh5OhAd1t91VUUr6cjgryPIhhx2k1yrdXxdBSQKLOjtf9Y + OhFw8nR6TiEEXLyFBvZzkiti1zhIxkYkSlck3ezoCKKbVSV5WWmcLzjZKsFo1TydCEg/ + k1YVWcNR2tHJsBUNNoxWTrJc2yAZMIKfQ9uV2IW3r5EuPGArulldeiU7PSEqxM8D+cJB + COo2rlbaLd0dr1qmleW0MxoMiSNSC9VItLR8wY7Ra5JvMIKIKlf09N6+eq5A1ACIctIT + wC94uoh8gSqj1fN0wMmwp5M0JGwCWUX7dNJOJ2IbDeNtOtdUfmfAh5MFQS788v7Nq+fz + lHTD0QEiFEaJ0SeQ0jlYH0K+sBm911WFSJZIqiHhDL6sK9doxyDN2WFrFSQtQpzPsZ/7 + QDQq2IW7yOja4Ojyc84mxYQFeBG/gOKVmkarGYzI36mGxFt1BkcmnL2AtEEeBfJcnFJu + DJI2Kf0X316IEBsRQtE7Yrpnpico6aZYZIDIHK3XrwEReFXsHE27o9GWtx5+J2KTMy9d + xenKPXR62NrdldgIIWFERKJSKHrx9NHDe+PDfV0t9VUKRGDpDlsIiIimW620WyYNqiGh + RrJ3xTkGp3DUhDg+DKfC4oi3xRuw4/r/xfYjPpoWI07nKFkAz01+bu7B1PhQb2dzHZJu + xKKYMKpdARGR3audLwiUeAt2HGcpj0oMicKRLQVltc10nCXOkl8apH85RksghIwbRvT6 + xbPHs9OTo4M9Hc03Kq/mZRNEAcfdjjBEW1c9pTMypA1btu+msxLh7eisxKJyedrEx0Ba + FVPSTsWSt7/aV2HJ/7bUg9KG2M3BiJByP+RQ1N5YW158OSstIZrThcOWB/buAERI6UzU + 0ymoGP9WjwTZa0beDhvl8xFiyBsGhCVR4iB3J1arWfo8ps3gUjOy8DHT/sPH/nrhf/no + fQKIUgUgRG4Okejx7P3J8aG+W60NNWWFuefPxCPpRkYHKwKRuomy7q8CkUjtcHivONHy + qHdQxGns8X21qr4NR+vA3eHECWys+tsfvFOaFqSPzcHnPf7RmdE88Xnv9KWv0vyD5W4y + QApC79+8pkj0ECn3YA+FotKC3MzU+CiUrlqIVjvrNlgTHTtKJ07sPmCB4wx8QiLj03BE + FZI7CdLzV2/f8wFItP+tBqUvnRzt65ebHfU57R+s3m317T92gz4lxp8MEOIQSiIg9OTR + DIxoGFVRI0LRlZyMlFMRIQSRjWJFXBitcD8TAxpL36IaiY5627EXx4Lg+N6Q6IR0HGpZ + TSCNTN6fmyfGgc7X+eNPQknz0VY4cZp3WPbmCt9++T8z/o+MxqIffwIf8nG/wcmhIiKE + Hs8+mJoYGeztbLlZg1CUnZ4UFxHse8zVwcYcGR05uq8Jkert+Dh5ezoyMToxPUeA1D9y + FwfyAaR38HfyFCQTUTKeJHFPztKCp5af7BU+a/gfCjRAhDBRxh88fhcAvX+LOMQI3bs7 + OtTX3d7Efu58WkJMeKCPh7O9EUSrXRhpbIrShh/XbRBnlTu44tgJARKOe7vVf2di+uGj + py+kvxNRySSUDJOEW8o8aX9rXrBCHJb5M/XNxX8UBiNR+R3jNxq//vrrL3Bx7wDQy+fP + 5h/NPrh3d2y4/7YworycjFRkCwHe7s521of27/4GVgSw4O3EwZZ8aqKbV0BYDFlSSVVd + SxeOtpx6yP6O8jvFlLQo4WMvMykLn1InyQAQf5Hph4qU8qKFf2z6feWd6V9JgIALQCFY + MD5gvH///h3weU0APZmfmxEI9XS2NdygZCGL/FyIn5ebk50VINq+RTq6r2hFZFBKSELe + gKMtJUjZeVcr65o7e4dGJ+/PPn5G+R1l4YtN6XMxUuZH/GZAhJcR7uWP//kfFSflpaaD + suAd5BszRAg5HHNgMgzLu7dv377hAXhevnj2FADNPpyemhgd7u/pamuqqy4rFkYUHoRQ + 5HjY0mwf0aioi74CA6RxdHyTvR2f4rsHyZ2j2/EAcndZecUVtY3ttwdG4O/mniAqUYK3 + NEr47AtmY+FdZdrFb833+A/hYn5HUoIvAHCi5+SrF76JifeVa8A/gBExQsKnvXlNsGC8 + ePHi+fNnz2A/84/mZh7evzc5PjLECNVfL7+aT0Z0KjKU/JyDjcXBvQwRGkaoi75SRmeA + SoK0aesOARLcXXRCWtalovKahrZbfcNjZEqISsgdKA2XtqTMpPLRl4VJfRFuMEKcOlFo + Fm4Gv34jnICSASQTMVn45/IaCCKJ0HvKCgANcHn69AmQmZ9//PjR3Nws8JmemhwfHR7s + u93Z1lRfU1FacCn7XGp8THgwUm4nhKIDe3Zu27xx3TeCiLwd5w2bkNwdsIQlefmfiI5P + zcwtuFZd39zZMzgycY+ikkSJbUkzlZr5Xzgt8r7mFQIhmiQOzsL9v4O3+fALwSS/AMof + fOT9VvaweFMJEVFwQEg4NcYFwNB4cH96+t7k5MTYyPBgf8+tjtbGuusVpYWXczLOJMZF + wIg8yM9xtiAgAtP91a2I7EnkDRsYJHJ3nn6hkadTMy7kl1TeaGzr7h8am5yeeYQ0/DXb + EqEkvvCLjGmx11Pmm3+zDQEhWBAFAooAr2m8gSdFwFN9qfyjlYGx9F/Jt8QV8Bfkg0Do + yWNEHVjN9L2pqcnJybt3JybGx0ZHhocG+nq6O9uaG25Ul5cU5uVkws1FhwX5eh51spd+ + jrOFVW67Gpzbolv/EXmDBMnG0dXTLyQiLulsdl5xec3Nls6egZHxqfszjxCWhMcT33iR + ixmBYMBowcN0lxGClyOEKLl9TX6GAsDzF3hfAb/RabRLz/YKHlUvhsyIbBj8wSviD2aB + D6yGcBkZuTM8PDQ0NNjf39vT3dUBgOpqqsquFlwGQsmno8ND/I+7uzjaWrKfo2yBKtev + nNBpoIK3I76BQNqD7M7B5ZhPUHhsYlpWbkFpFUzpVu8QHN6DWaAEj0c5nnRMS8LEoUmd + FnmDAFIiAX2JXwk/gwjw+PH8/NNnL15S7qjwTvKPVgDHUn+iXou4BNENev70MUg48mp3 + hgYH+vt6e3t7bt/u7r7V1dne1tx4EwCVlxZdyc3JSANCJ0MCvI8hEsGI9u3asVUJRd8O + Ig5JEiQkDuY29s7u3oFhCEoZOTCl6/XNHXB4o3cJJcQl6fKMYFrC66kzI6tV5lgQhqSb + eYrkSQaBh7Nzjxl9kZWs+soa9Ur4WyK73kSTUuI20Nd7u7urs6O9ra2ttbWluamxob6u + prqyrLQ4//KFrHNnkgihQB/Po84OiEQHKJ8Tfu5bWhEZlMGSduzef8jKzumolz/5u3Qy + pcrahtbO2/3DQOn+zNz80+dwTQggMswj0RPmhG+pOhvKDbIeDM52hZNDu+zlcwLo4QNE + AQSBycmp6fsPCSUyJbIkvJ3y90uZxZc9prwTfjNEvHaItCPoqY4M9d2+1dnW2tzUAGDq + 6m7U1tRcr6osBz6FVy5dyMpIT0mIg5djhBxtrcyBEBmR4ue+SbZg8HcqSFu279pnZmmL + zME3KFyYUtG1qrrGts4eoDQxJaZTwqSkY9oaVKCi/ORK1VAwMsXylAr46cm742MIAnfu + jIyMT0yhCoOJEkiiYWWY2i+DZNGrDW+ESyJlAitNoR2ZHB3q57yg7kZNdVVlRXl52bXS + 0pKrxYUFeZcu5gCg1MTTMRFhwf6wIRdHO2sLs/17drIRccr9Lf2cxIlB+nHdenQqdu09 + aIGg5O4dEBoJUzp/MR8ODyh19fQPjYxPTj+AMT15RjAh0Iu0mbIILkNBTwIWGkxU0oPM + UYo87jWiEHIpKuDHRhCeKQr09vYPMvhchXHDSuPtDFnIotn/rAeMIOJNFUgMDO3IxMhA + T2cr5QXl10qKiwoK8q/k5V2+lJt7IScr81x6anLCqZjI8NBAP+9jR50d7WyEm5NGhHzu + L4BIuLsfcKrvxi3bUCiZW9s5IQkPhimlnIXDKwFKTW2dt/uGRsbu4ls/K2BCbOK8mQwK + iQQqUQwChhgEoinpYcLnHdJsShOIpRRxAGGgs7O9va29o7O7t3947C4I3CfUsBLeTnV3 + y1bHy+JkwEcklYoVoe09BXkP2kF1SK2L8vNyL+ZkZ53PzMg4dzY9/UxqclL86djoiLDQ + IH8fLw83FaEd27Zs3CDq1m9UFRn8nMaSANK6jZu3UVCCv3PxgClFxCYgd7jEKDW2Yj4H + hmFM9+5TpEdC9vzly1cEFFeiHz6AmyRYMARLSWwY6iDk2URSUrILHvkOCviujtbmxoab + 9fU3Gxpb2m/1Ir9HqfxECvsowqlTvCwQH31S/XO6gbejuowdHUE0BnkPtYOQWiPsnE1P + TUlOSkxIiI8/fSouNjoS+IQE+vl4HTvqcsTe1tqCUgUgtAnMwk+kRf1LjIhhQp0ExoFy + cOnvyJR8A8Pg8M5k5FwGStU3Gprbu3r6Bu+MjiPUw+k9egy3RxUOIwWs3r5ThmApmaN8 + DgOicpE4sNHhgd7ujtYmZLcUBioqq67jXZE5gmXn/vy7X8Q5ZgaQMMkfheKjT2gwouCo + gejB5NiQbHtfQvGTmhR/Ki4mOioyIiLiZHjYidCQIODj7elx1MWJnJy5mYIQ5Qrg5/4q + IxK2JEGioIRK6RCYIRd3L7/gsOhTSWlkS1fLqmrr4fLgnAZhTXfJnGBPj+bnnzwFUs9f + ACvt4BoVHDLwmXkIkmVi9A6xlO2oD69XlpciPhcWFhWXllfdaGjt6gWfQSC9UfIGI5C+ + BCUNPHSTEBKlK2IRS+qhwGq6UXH1ygWUp/Fx0RHhsJugwMDAAH9/P18fby/g4+YMgA5b + Iwztkzb0t0AIOInMAUFp89YdSB0QlY64enj7h4QzStm5+cWlFdfrGpoBE6xpaGSUcELq + /HBmDiaFanT+yZMnT2ngtyQpAQ/SbKRxBFAvUimwlFUyDlzIuXAxN6/gKhVhaIWMTT6c + e4r2PJI7ysA1/u6LLMkII3obwT+pC1MGb7c3ou2dl3MuJT42Iiwk0B92c9zL09PzmIe7 + +1E3F+cjjvZ2NlaWhw4e2Lt713bycusRiIhY+OvcnAxJSuYg/N3OPYhKNvZObse8Axil + M+eyLuYVlpRX1TBMt27DnAgnADUFpB6AlJyZmVXGDNGUIClRBU2MgwQbZICIYqkQ9SHS + J4yzGVnwo6VVdc0dPYNjU+j8EkhIHLQkuDLrH/Vs8gnldepviZDkf5RVD+0NNeVFl6hj + F0m5tdcxAOPq4uzs7OR0xNHB3s7WxtrSggDas2vH9q0KQhyIvnFNpAKjvaEEJTIlZOEH + DlkddnA+6kkoRcUlpqZn5lzKL4J3Ipha2zu7gdPA0PAdQmriLhWkU/fEECwlc2FgW/p7 + qVpsbmQTKsy7SOVHUiJidHxCUirS+ytXK2qbNCCR0GUpkJazJxUY5QYBJAgokppqVj1I + kVxCNJoN3p7urmw3dra2hw/b2FhbWVqYA5/9AGgnTGgzcjnEIZEq/B0QIrTI31F+h9Rh + 287d+w6aW9k6Ekr+wWGRsfEITFkXLsPnlSPW1wOnts4uANXXPzA4RFhhjNKgG3dAUoIL + A0d5q7O9lUnKcpjQpZzzFKjjkD+dPBkRGR2XkHqOSCc0FaUlvXhNQhfZqjAOSzT/S1iT + AovmNwMELyelpq+eoyyanrgDCVbD9WtCJHci0NsTubW9LfwakDE/hGEGePYBH7agzRvJ + yYlM4a9NFbR2JEDi/A6mhARvz34zC2ugBI/nF3QiIvpUQko6w1R09RrMCTg1AaiOzq5b + 3bd7UJH29fXT6BMspeAoW5oa6m8QSVlcQCaUhkAddTKMw3RgcCgMFKQTNRXR+R0cRUxC + nUT+TkVpMUwLcdJgwzcNJsQsO0l85klSPwypaX11acFFiOQioUxw5+qH7Wb/vn17Mfbs + 3rVr5w4YEFwcAGIT+nvEISOYyN/BlH4C68AOj1FycHbzOO4bGBIWGXMaPg9RBMG+qORa + eWV1zY06VDnNgKqtvb2jo5NGRwfqU1BhKILq62qvUzVfBICykesmnoqOOBEc4Od9HFHa + y9svMORkTMKZ87mF6PwySELYRwwroyTowIUofPw+4wMfxyZEfRBqRDCHOipWPZTmXziX + TOIRT7cjoLIpdSNgdu7csWP79u3btm1lfDawBXGy/bcyIQUqRulHcnigHRCWBEpOru6e + mNLQ8MiYUwnJZ85mZl3IzcsvLAZQFVXVNTW1dXWoSW820LiJ8rSurrbmenVVRVnpVeCT + SyQlfFxsJFhKCgMI0y4urm4eXqjBuPNbWIb2fDcJ+2YeP4UpMUrcnf1cmAQ8Gg6X+yCw + IUhNp8bh59qbaNUDlnfFnQz28XChpipSt53bt28FMBibN2+C+QCedeTiBEB/S4QIKWlK + IiwhD99vZm5lYweX5+Hl4x8UGh4RHReflJpGWdnFS3lXCoqKr5aWlpWXoygVo4JYylKq + gQquXM4lEiwtJfF0bNRJUCwEkPMRJFB2dvaOTsjuwQyi84v2/HUC6Q5RDtydN/SqDOz6 + RwxIhYdCkCL6IaUpyeRmSGo61NsFST1ybkhNY8MDIR4hHSNXP5sJGIz16xkdgufHH6hc + /YsLVsVmPvJb4/CQPOzYtWffQWTitg5OLkcBExxU2MmomLj4xORUpM/ns3Iu5F66nHcl + v6CgAIVpYSF+g6UESUkcZUb6mRQkCSAp4eN8j4MDA8VCcRoDb+kMZjAk4lRKxsWC0up6 + CPugGRNEOPeqZEvx4+S6dG5SNKfgg0yOOVyw7PchwgLL3dFcV32tMBcLU7C8i3SMEMnt + YY4HyPz88080AA7D87fHR8BmhBIS8T3IxC3ImJxcj3rA6QUEAafI6NhT8YlJKalpgCoj + 83xWVlY2DfwmlvJseho4yoTTcTFRKBaD/H2PH3N3dXIAxUL1B8bBQ5SRuHr6ol2VDA0F + F0q3YUqThl7Vu4XkumDW1Z9EsROPKyh2weEKgIjDpW4rELoNlrumoiT/opCaHj/qZCdE + cujYsVv7AYZDg4yHzOfvkmd/xIaUh+HwRPJAcWnr9p1weTAm68OAycXNneJ9QGBIaNjJ + iKjo2LhT8fEJiUlJyckpNJKTk8BSxoMKI44y/ERIEJIEFIuuSKQOWyFOo/5AoN4N4M0s + uT0ffBIaipw8FErQjPUOQkMBW3o8T02Q18zZMrkOva9CrTMsAhoSAjOPSxS7hsOdU2Ry + QKixrupa0eXss8lQyWHt0BFb7HshdIwyt1aw+aegsxAlyh42k8vbvRdffUtrGzsHR2dX + N/djXt4+ACoISIWFR0RERkUbBrGUkqP09wUJ5u4GktKeOLCD+5FIIb/dtm07AS/a86Sh + QA5+uagMmrGObnRBRK8KHVo06DXkukqtM7+uUOzEsDM8kEqoHC6ZEFj2bkKourz4ysXM + tMTYk6SSQ7ZwcK8ikvt7Rx0Fi4//VmzpZ2Tim2BMiEwEk4WlzWHCycXtqPsxz+PePr5+ + /gGBgUHBwSFyBIOlDFA4SiRxSBKIpASNvE9QLEihNm3aQvTt/kPWdkJDQTl4QUlFTUNL + Zzfode5VgV1ncp24dbRBBLcOSOQAz84UO+tNSdFIHC6EpsThopMIBqqjpQEIXYVe+2zK + 6WiEIg8XSE2xAo90jN9W3vPxeTbtGRmXUC+xMQmY9h8wM7e0Ak72jkecYVFH3QGVp5fX + cW9lHPcCS3lMcJROjg4gwUBSAqC9oFiIA0MStW7depjn1h2795GGwv14wImo0yngHNCd + v0Eoca8KLcUHRK6jC0LkuuDWX2FAmUe/WAkMHTDJTSE1hZQFLKGWw2WZ3NWCS1j0kBAb + QRossTDlXwQRACaUODDBmMjnEUy79+47cNAM9mRtc9gWSDkecXJ2dnF1dVOGK7GUKkdp + ZUnFvIEDQ4FIidTPwJ3aVdBQ2B3h9I6781eKy4ASelW3+9BSHJtgXQqAIqSIW38KtJQh + hcBSBkwkLnHsksNtb2kkmVwxIXSGKFToR1C4ckJHEqx/hxUJG1RQ+hGzCpjg9LYhkuze + u3c//N4hc0tLK2sbwgoFjzJw21blKM0OcDFPHAtqEVnBI5P6kdkM7imiW+V6zDcI5Sx1 + 5/OBEnpVrR23evoGhu6MjBG5Ps3kOrj1Oe2YnSWKXcqAScmicrgtjfW11SyTywZCkJoG + E/sDDZbZPmXtEMjsf0gC9znOcCFMMKdtsCcCah9yaDPwkeYWFlTyyGHBLKXkKHfDw8HF + MUkpODBOckE5sYZCCl0QlKAZQ3f+nKFX1drR1Q3OlgjbsXEm10GtT2vGPdKA3Z0YJ7kp + wQPFnORwa6vRBqF2+DkioCA1hV77iJ01Fa6KSu5fBRHBqIWJzWnzFlBF23fs5CQaWO3f + TzWPHPvBHxs4SuBDMUiSlAQQShDhQqGh0AhduDufmHouKxe9qjI0QW42tbQBJybXhwS3 + Pjo2BrxojI0xx04U+wDLgEkH3NJs4HBzs1kmFxUGhCA1tYfCBxosyEcUldznfD//Wa+R + 80pOCrEEbm/jJgC1lbLoHTt2AizNECTlNqLCJAkmODABEH9uoMSNEMocqKUouvNBYVFo + WJw9n3PpSlFJWWV1bd3NRibXb3V3g1sX1PoAD+bYQbf3QAYMnRHgaWwATVhVYeBwk4RM + DgjBzVmx1JQ0WKKv+i9ydNovEsOEqWWcGChCatNmYAW0DENylBs1HOVikpLeTHSrqKUI + YR91549DQ4FeVTIav4CpEM0qSa43Nbe0Qu1F1HqXGMyxE8MuZcCAB0oJ4tgVDjcuimRy + x4GQo621+cF9f7GQUTuTX/W2cFP//Z7CyY/IzoDUuvXrQUoCEMNgkpIYZGOOcsFXl0GS + aiQSulB33kP0quISUtLOnc/JvQycqAsCcr32Rh3kXg0NjRhNTfiB2zdvsg5YyIBLigug + mLtg4HBPUDfc3c3JASIsSE13bTcIGf+z4FK+6pz9JW9uAIqQIqwAFsMFXAAMxiKOcqlJ + IX8nm1Ug2Lk7D5TQsQgJo5YiSFtBrueDXC8pvQZuvbIKo5oHblRCCAwdcElxcWF+3uXc + C9lQzKVpOVyWyYGAMtuPXGHrXy5k/OZgSaAwzRhIpgVcBBndIZaSabBlOUolKFGltBP8 + urnVYXvZqyKY4k4TTiDXs3Mu5gpuvbCoqFiOoiJw7Pl5AIfUpqDY00goYeBwSa7AMjkQ + UCxkZAr1LxUyfnOQ+B8CKRGlBCCan/zMpy5KgKT0fffsB0qiV0UtxeATaFap5Po54taz + czAu8MANcOyg2CEyEjJg6BkjqBGvcrhMETIBJURYfwMh46cm5O/4PAH8vez7UheEe1V2 + DkeIXff29YfoQZLr0BElJoFZT8U4g0G/oQMmiv10HNABxR4WEgzBnMrh2gqlqSqT0xFa + 8RdAmhL3fRkl0atyOOLs5o5mFZHrwSDXwyEkArceExMbG8cjNjYGTDsodpIBh4DHhZ7x + OGjCJThcqs4Uic+Kr3NN/yGbEgldiMBDr2o39arQUrRFN91ZIdf9ABW4dTDroaEneISG + 4o5CsZPY1IPgkRyuhcLhqjI57n8vlbis6bn//A8PU2LiFigpvSrAZE7NKpVc9zjm6XWc + uHUfH18aPj4+uEM6YMiAj7pBBkzw2B0Gxw4O16Bj1MrkPv+K9FcungEFJeooil4VsetE + rlMXBO0qmJTk1o8eRTfEHT8BDAmMQLE7Ejq2NoCH7MeYwxUUIb4Eug0tnvYvfESiBNWY + YNeJC9wjyHXQtSq37uAAvMRwcLAnfZGGYmcd8GIOlwDSEfpCPJZ+uYxLahMEpC1wMpDr + 5kytW1lZWfPADdDsoNhZBcwyYMCDHshSHO7S/1F/9MtngFCiwMSsLdgl4mwN5Lrk1g8q + g0l2ptj3KDJgcLiSY1/E4X751eh/8ZEZMMCEPM9ArkPpK7n13ZpBTDsodpIBEzqsZyTB + HOlM//46xo/MwD/iYQETm5PognAbRHLrUBShGUKo0BA6YAaHO1QMj47PN4GZYTKQ68TU + ErkuiXVSFZE4mwfJgOl5weISTwh/uSxJ+E0+wdr4J5IHJL6WiFrBrRMa2sEMO8uAFXR0 + eL7110MlbAW3TmAZjYUMu55if2uElP/HFDq5sKXHZzHsynvpv7/+DDAg8sfX/2/6f9Bn + QJ8BfQb0GdBnQJ8BfQb0GdBnQJ8BfQb0GdBnQJ8BfQb0GdBnQJ+BNTAD/x+w9nU8CmVu + ZHN0cmVhbQplbmRvYmoKNjAgMCBvYmoKMjMxNDAKZW5kb2JqCjY5IDAgb2JqCjw8IC9M + ZW5ndGggNzAgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGgg + NjAgL0hlaWdodCA2MCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUg + dHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0 + cmVhbQp4Ae2W2VbiWhCGFZEpE4FAIJAQCFMQRAQEI2MziaRFoHFC+/0fo6t2RHsdIva5 + POt0XUhg+eWv2sNfdXDwN/7DK3BI4l8WgIzjt4Cvf/aGN+7o6MhJAh7wNX+AE0HAjiFc + GPjgdCL+FY0ogi632wPh9eJfN7zAiep76XfS4/VRFEVDwIeP4Ki9B7ZQl8fjo2iG5Tg/ + BMeyDEV5PW7Q3gNbqNvjpWjWzweCAokAz3MsDbQLEnd8tuCHWKrb40NSCIXFSBQiIoaF + IM8xFgzKtrsFsoiCKB8MiVJMlhVFkeW4FBWFgJ+Fsl3HWLMNjBkjynC8IEpxRU1pWjqt + aUlVjkXDQZ6lLdiePTp2QcKARmJKUsvmdb1Q0PVcRlNlSRR4lvK6cb1sdSFjLyQsROKq + ltWLp+WzSuWsXDrJZ1KKBZOsbYShWpeHAlSMq+l8sVypXTQg6tXKaSGrARzkIGsQ3mVh + kVGWC4qxRFovVerNq3an2223jEbtrJhLyVIIsva47FnnMcqGJEXLl84bV93+YDQejwa9 + tlE/O8km46LgZ3xuWOqdgg9JyiAbV7PFSqPVG06mM9OcTceDrlEr6+mEFEZhYHeSPnRA + ygwvRGVNL9eM3mhqzu8Wi7vb2fWg0zwvonCQs08ayvX4WD4sqZmTSqMznH5frNYQy7k5 + +daql3VNjgp+2mtXMLIUGxDjyWypavQm5t2Ph8enp8f75fxm1GlUTjIJWC0seDdniw2K + cipfrrcG0/nq/mnzstk8rpfmuHcJSatY8OcsF4xguRft4c18/bh5/fn68vywvL3uG9VS + Vo3tZ4UtO7sj7M/XzcNqPv1m1JAVAyz1ac7cO3vzxoLuCnUJu1/393ofnjcvL6TeSc/4 + ul6yzrlSzehPzMX64en5+fF+NZ+Nus0v19naXzhWze5werv4sb6/X6/uzOtB6wL2V/l0 + f/Fc+fBcKbDQ9av++Ob7fLFcLubmdNi9rJZye84VnmdyjeBwwHlu90fXcJxNczoZ9Ix6 + ubD/PH/cI/20CpcBr9F4POx3jIsKHGc5sucewf310X5BjKlp/fT8wmh1er1et33VrFeK + ebj8YdhdMA4703E4wK7QN8ByMnrxrFpvNC+bjUbtvFzMaQnwDbi+9r5xAAXDTaK5QCgK + ppMrlNCuwLBOi3pWS8SI2UF3sLm+B8CiT4LFBkKReCKVyeqFEwg9n9WSlk/SXpTdvUbI + WtYOMPiznEhq6Uwmk9ZSqhInLrnHn1EYXZaYezgixWUlAaHIMUkMba3dXpYIHx1bTcUf + ELAdSRBRUQwJ0M2gpYCz21aL3ke6CjYzioFuhm0wFBKEYID3f/RBu2qJbyLshAWDxs2w + LOfneZ40YBpFSQv9FLWUYWKAeQHaPk0zDION3weTA4wNZObY8eaPH0D5bd4g04YX4n3g + gN3ZceYPEp6sOceJcw4Zc6xJh0wqX6Fb2vE+XsF8hMl+KbrN4B9jHXL7s92C20/4/7fY + /vL383+2Ar8A99SnXQplbmRzdHJlYW0KZW5kb2JqCjcwIDAgb2JqCjExMzAKZW5kb2Jq + CjU3IDAgb2JqCjw8IC9MZW5ndGggNTggMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBl + IC9JbWFnZSAvV2lkdGggNTggL0hlaWdodCA2OCAvQ29sb3JTcGFjZQovRGV2aWNlR3Jh + eSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2W7VcpbRTGK+VtGIZhmPEyGm8jmohETZGOKEWi + hCOlxMmp5///9Oz71jrnLEad8+151jr7Q1nl57rube69r6Wlv/X/6cDyr/W7toFZmSn4 + 0+f0FFOpVldX16Dgl0qFPuczFnMqxKjVag2UWo1wDH/IIpuIU2u0Wq0OF7zQAL0Kwh+g + ACIOMD1BEAaD0WgwEIReh1iMLjrsFFRrdXrCQJImMyoTSRoR+yGKQCSoJ4ykmbJYaVRW + C2UGFmQ/UF1GVjVa0DNbaBvDOJxOp4Ox26yUiST0CIWjKvkFSQwaTRRtZ1jO5UblYp0M + bTGTBj0YVimTP0ALzbAuD+8ToNZ9vJtz2K0UCYbVyqLgdU2t1RtNFpuD8/iEYCgsimI4 + 6Bd4t3OKapRFl8GrVm8A0OnihaAYjUlQm9FIyM+7WbvVbCSQqMJBsSRBUrTDzQfEqBRP + JlM7qWRiKyYGfKBqIQ06JDrXImQWvJpph4sPRKREaje7L8vyXia9LUWCgNJwVK2SXTCr + 1hImC8MhMLm7f5gvHB8XjnJyJilFAjzHWE3KdpdX1jR6I0U7PYIoJTMHR8VS+ezstFQs + HGS2N0XBA6JGnUbhoMgsQVoYly8YTWQOCqXKRe3ysnZRKRXkdDwa5Fk4qV6zNtcibNZg + xpJbablQPr9sXN/cXDcuz0tHe0kpLLix3TXVbHOB1OiMlJ3lg9FkNl+6qN+0O91u5/a6 + Xike7sY3/GDXjFs001x8TDDrXheltFys1FudXv/+vt/rXNfKIBoDuzbKgJo7T0JnrQ6P + fyOeyZdr153+4Gk4fHzotRvnX+QdKezjGGiRegFJs14wu1eoXLXvBsPxeDwaPny9qZVy + u1siHNRC6uApmtWE1kKD4JibKbl40ezeD8eTyeRl9Nhv18v5bHxDcDuguQtIysbyIWnn + oFi96Q1Gk9e3t8m34X2ncVbIJqJ+t8MKX4uyJmXjfGEpfViqte4ex5O3t7fXyfNDt1kp + 7G1H/Z6PSDsmc4h8AvIfIEeDH6Tzc82TWqs31fz+ApqN39D8ec6vg+eX76+vk/Gw37k6 + PcomUIdAU7lDBO5tLCl/OW92+k+jb5OX8fOg17os5zPxCP5WlMgVeOBNtNMbiG5nC6f1 + Vu/h6Xk0Gj72u9fV4mF6S1x34SdhvreIJK2MWxDju7mTarPdux88Dgb9r6165VhObYZ4 + zr7gGVrV6EkKLllYSsmF01rzttu7u+t1W41qKQ9fZ9DL2szKz+2qGu6KjQW7iUyuWKk1 + W7ft9u1No3p6LINZaBANQ2H+li3hm22C8QUjIbWXL55V61fN5lW9elbMZZOxkM/FWNEg + mrvZU5JEFzSwEU/v54vlyvlF9bxSLub3d7YiATBLKc6EJXRBdfDMO9zroWg8vZcrfDkp + lU6Khdw+DJPQOpg1G9BVmZ0JQMKghnFrYz1COBZPZfYPcvl87lDO7iRiYcGLxhCYVSRV + SNRkZVivEI5K26l0JpvN7O4kt6JhAYYmbTbqFUYC3FZYSDBwYVQznBctBymeSGwn4lJs + IyTwLgce1Oq1ldmLDSQa8hodWg8M6/H5g2IkCrUhhgPrXs5hg+UAkgpmEYlO+o66vT4h + EIQKoFXGMjaLCS0kpeXwLgpr0EBSVrsDFqiXR+V1c2j1Agj7SHl/TkUBJdCytzNOluNc + HAsrG617lBQWSb77hWQCAYOy0LTNzjCQEmgrRAwDBhdIAokjBg41KJxQFlQUjiZ67TTW + zD0GcEpUKLrhIIUCkZGcltGAo9R7Cpu+cf4nQiHZoOwG8LQgReH4hmLjIsl31ffgh5If + LpT6cIr6CPzJorT5o34jamL/OKiCayiUbafp9qOc+eupZ1I1Cua//vvz14j4Q+TzD/37 + jv9oB/4FrsTo5QplbmRzdHJlYW0KZW5kb2JqCjU4IDAgb2JqCjE0MTgKZW5kb2JqCjcx + IDAgb2JqCjw8IC9MZW5ndGggNzIgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9J + bWFnZSAvV2lkdGggNTggL0hlaWdodCA2OCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAv + SW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRl + RGVjb2RlID4+CnN0cmVhbQp4Ae2WWVfqWBCFVWYS5kAYZAxEApExiqK5FwRREEFQEEER + RVGUK/3/n7rOAVd3S1D7rXutWy8Y9WNX1anU2Ssrv+P/0YHVv8e3UwZo7Z8Bv/kGPcNk + MrlcroCAD5kMfc9XMOaAUiiUSqUKQqnEOII/ZREoQ5hKrVZrcMAPKqDlwH6CYhBzGi1B + kKROR5IEodWo1cBi2WXlIkWFQqXWEIRObzAYURj0OpLQIl0sK41iEBLVAmc0WSgcFrPJ + oCcJDcgCuiThVVSjSk2QwFFWmrY7HHY7baMswIIsoFCrlChIzkGTxUo7XetuFOtOB221 + mPTkJyhIKpRqLak3UbRj3ePzMxABv8/tctDUHIV8JURXQXIOOt0+JrQR5jguzIYYn9uJ + UY0a5btIziQJpOj0BFguysfi8XiMj4bZgNeFUEKjgrNZFEWkWqszWgBk2GgsmRa2treE + dDIW3WAQatQRSFSKlCvVhN5sA3CDTwiZ7L4oivvZjJDc5Bivk7YYSCy6kO7qmkKl0Rkp + u9vP8ontrJgrFIqFQu5HNpPaDDMepxXyVUuli5KFKm1ObygS39rLFUrlykmlfFTMi5kU + v+F30xSIKiXSxaTBQrsD4c30bu6wXK2fNRr105PSgZhJRkNeENVpVYrFQtdkSg1ppBze + YCSZEYvlerPVvrxsnZ9Vj/J7QiwcWKcts3Q/FromV2p0kKyP3Uxn8+Xa+WW3d33d67Qa + 1dLPnWQ06HFQRhIVukiqtHozvR4Ix7fFYrXZ6fUHd3eDfq99VinsCZusD6WLCpUgCT2U + yUSSO7mjers3GD6ORg/3/W6rVvqRiXOQrkmvVUmR0FrK4Qnx6exBpXl1OxyNx+Pn0X2/ + 0yjnd5MRxk2bMflxFtbgUAzQIJYX9ovVVu9uNJ5MJq/jx0H3/KSQTfNBjx1aJNHcGYka + tCUenrb7w+fXX9Ppr5fR/XWrWtwX+JDXQRlgFhaOBZFGyunbiG2Lpdpl/2E8mU6nb5Pn + 4U2rdihCi75F1juY/GM6RWT7a9KANbew5nA8eQPN1yfQPAVN/lNNRLKbAtTZuhk+vUze + 3ibj0V3vogoHyodgFJbWOe/tXuHkojd4fH6ZvL48DW+vmpWDbCoadC/rrRzO02L3BKMp + GL5mp3//+PT8PHoYXLfrx7mdJLf8POV4+twMl8j8LNVa3f7d8GE4HNx0mtVDcTse9rts + S6dPCxPv8m/EhP1CpdHq3vRvb/u9zkW9nIdBwHOLX9DFuUXvitXpC/Gp3Vyp2mh1rrrd + Tvu8XimKmQQka8cNknhXZEo1CS3yMByshIPjar150bo4b9Qqh7ldJOmCsUXr5OPYrsy2 + CbxmPpaHV7tQqlRr9drpyXExlxXiHANnAmVKjO3KGowfFGqF1cfF0rtivlg6Oj4uFQ9+ + ZLcS0XdJqT2Edx8Ji8jlC3FxIbMn5nL5XE7c2xEA9EOVsIakVsIKXA5o35pgbQIaSwqZ + nWw2uwPrNh5hA24HXpogubASgJTBwiUNZqvD7QtyfCyRTKVTyUSM50J+t9NmNsB1Jrnj + oUVIFK4HG6AMy0V4iGgkzKIryWZBl4NSalGvoHRBlNAj1OXxM0EWRZDxeVwOAOFEVNKS + KF0QxShcvOserw+FF+5emjIDCCeC7vuPE4Sekb+AqxdUTZSNdjhdEE50ZVMmgw47hSUg + FgWfgAyGyUxZbTSEzQo2wTi3GMgTSUkCiSwGSpjUG4wmkxmFCeyFDtka7IikQdQjjM4N + kX4W2A7NrdQy8B1F5g2ZMBzauQX7hn1DssAi54cDm0bELanxvfC/zCbyqLOY+dTV5anO + 4LkvlkFgbztzt8ts27vg/BM5cUjuPdDjh//44hER/xL54ht///m/3YE/AaAs6M0KZW5k + c3RyZWFtCmVuZG9iago3MiAwIG9iagoxNDA3CmVuZG9iago1NSAwIG9iago8PCAvVHlw + ZSAvRXh0R1N0YXRlIC9jYSAxID4+CmVuZG9iago1NiAwIG9iago8PCAvVHlwZSAvRXh0 + R1N0YXRlIC9jYSAwLjM1ID4+CmVuZG9iago3NCAwIG9iago8PCAvTGVuZ3RoIDc1IDAg + UiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGdmsuOJTdyhvf5FOldC3Cn + Msm8bi3ZsLXyTDcwi4EXg5oSLKF62tOS/fz+4kqeOqdLttBoVDIOGYz4GYwIBvn38Q/j + 38eZf9uxj0et45fn8U/j38Zvv/tlGZ9+GRf998vT+H6etlH+dx1/HL/99+cvT8//9et/ + /+Vl+PITrK5dua1lLOs6lnpM+3HW8enT+O2/fVrq+P1nnfGSKedxh/28jmvdYex9VvoM + IhXCSJ91GcsyT+uyH+O67lMtyxF9t+BXbdq60bdO83oW+l5T2fc6ON89+ra5y77dz30n + X0G2Wubp2IKViPiqW9lrdgvpshvQKsTnuJynditTCW4PMBE4lmu7xlKOW2B01gbMsgAO + GAsmIdwDTBYw2esMv3UGky3xa5j4stVxqfRdd1m77YbvEUp32lyiTSmXa/xIlbVOy846 + l3JOC6YQYiY4TZtaBOpSzwDwgSq1bNNSYYcm11qvYOeaLOMPGOzP47d/fH75y68//c/z + d59fPn/56dPzr19+ehqxULXr7z7oeszjh++ws0Ub7+UPG0AY1qVMtTLLul/TKfYGbVun + /USRpL2MH1iOmQ7zvpX7j4FdUwTIo9gmgEmZW/OF5jpdx7w3WgXLsp+swHnyszRYDoXN + m4vxksH8uu3TMR9Hx2nzyXSqaLgg3hxeGHhNc7kQLrqUDeiDnTZ2n4rB8ls0+8bQN8bo + aBKPMouMc23alIFHD87wNP4nfW/Q+vFuccQwpNO6z+YHDNJsNkiHpAlO2PNUt6UoaLKA + 5kSseSzWNEjXY5/KVWpCOqynTyaQZsMgzWYHadJE/WRHY1hjKkMqm9bRxbhpeMeQ2CAN + bUDfVzGVvQEnIM1fP6nFsgWKuPZ5xEA780drwDXzkV3wTx9HEBPH9Z6/7yvKjx/x4/+y + TDOb5uOP45/Hd999I5GhjO8+f8MO4O/fXv19/mawDk/R89fo+uWb8T/Gjz+M//xR3drt + PpSlxhcBoAQdvnHnOBIwlLbtvQhSX9+DouJSMJjLuRzx/TLgjWz32Y8LYWo994kJdvy0 + NBZmYrx8Y3Ayq35v27TJ3gkGw7pJz0V465fPqd+MWWKVrNuCVSQLaShvxixYiH7z5dT2 + pb+7TMKTHilsTqBapr66p7IFho83lPQoq7heUEYH+2aOwEcJg6heiL+mujRCV/lmTwc+ + 5TgcxGSgSCpv+UIunVOpHT7FuqFaY6EN4W362zyivX4N+RW/J+b0SGEDH9Os6SsbJFvD + 27sD+8MWyYnuNgapQV1nyThyewyxPT48h9XHvvir74/84WYXhEWzF6aLkLPN8zBP81y3 + kwkkoFRC07URhsIr4RHLPl0z6ULS8BOElmUn4UpaKYsmUeygY7oufgqK6dU18ZbzfB4d + k3T+OZVTWMsmUvR6EV/+QNDH9hc9cWcZKFOlpHUqJS0VwGeGxK4kjkzikeusUch1dlxK + +OI2VVA6laIXIbNTKQUwkxEXqc5UUqZ9Jidbd/bJMVd2lGh3bWIdoLrQY5BMaD9qoyDm + Ps1VEuEYJ6LXqZ6HOALcx3Lgm5PCZrvOtcIpxh3btFYmlnHBnWU+j7MTIAkhZY4aSLom + SdhXZ80oJ+Tsd7o9PfYn8HL+ZN/TWi7JnhIFSQfOg7w75ework2ME9sKnSUPus6COo3C + xljIZROFspEt7yfZaMcdy1hKQShfBjEVCEgUUnajXOmCFzbWSYjZfdQQMjLX21mgbtqT + ZfQIVDmj2Df5Rr00Ag1GqLIA4dStYRFIvz0C6XeEj2DgcQfeHotAQOZ0b1jwFZrtGaGQ + wWcE0oZHoPbNl8eiRoOnDHSvbd8eLtsEqqXOrV+agpxI5dp/xQMga0QgwSciUKpnBFE9 + nPqgDY9A+u0RyL49AjUGKrXy1i/DRwOOZMOBj0UgUS0jkDUsArXvR19Pg1IDc2ESEahN + oHFW8DGVHB9vtQg0PMjP6kIGlhFIosJcxo8SS1uSxulo5uSI238Vi9798fnpmfMQ0ebj + z29kXKccYyXXvy7buGy3TY7TTqvAJQbf5Y16bNLMvIpvlb3NeMkmwEMOsgChhLuR+IBx + m3dPNh9rxFn4vGa8edPIks93//r88vL5H8c/dRoRdy1fFQcgrD1ck4E+QIuqQsHrUlZI + sJz15y8vf/2Hb4ZAKqLyb+WZYiX1WKkUaCrVmoC2RFbkHRazSLLZg/MjiaVAVvdNBrOm + 1lyVF4Otibs4jmslc0371v5EBxmMb7LBeo72puRXuEXJV50i1QDpHcysaVNJlqW/WvPr + jexoEsssjBtq6pOTGh643AaO5V0d4VFqKlbhozZiUQepNXtIjRIYUlwBpQBtP7TWEk0K + MPBKSK86FcU/Ib2kP8ul4llD9lhrymKmdt7bQEtm1rSpEilrOqTaIH1VsF91VIlFRPuV + I5npk5O6uiaTNjzVVyHt1+ZLHp31llUKS5U4gq5vpbTD3Ynv96a0sXnIZ19XTCSvVceT + m4fqSzMXCZSnHSm8Q1U3GsZGLFDFY/N4MzaPN93eO162X3wqbUjGYYLYb4QGzjD95imY + c9s8/KzN2Dx9k2jQ/XbTkEiqv8Xm8WZsnjYp3Sg73oBjIaOD59HmUXdsmoQ5qJ4DBwmz + /wapUQJDN7Zo6mZ4Gr1phsp6COBDDXtvvGw7OKSxeVx8a/aQGkWVb8wci9gTN82vNxqk + ut1lFkPY9WmQmroukzU6SI3QNs/DQDxrEbffPA/jy/ubaDx0hZO3o7EktNgYKVNuzsf8 + W2x8tU0fxcZW53zAvwXIoUsnfitAZirRAuQBsHI85Z/WP2dUIfJsHGYWCne4dBb9XFDM + nU+ZF6m3Ue3k+LWxalTw8UoLPCpnBQ1oZYHLvJ+EF8kw6EI2v19kGvXAf5/kO0LZrplK + aA7CRo+1wEYsYeMnSf0PYxwHKNzgvJBxVg4BFDjIF+hFcKVyJwVfZCLzIYs7zwUJcSGF + Cj6TnagjOqyLSygXHWU/hsrHxm8kIBzUZ9SprNJMCgWFM/0umuYo6szlpHwikXmnzAs6 + 61RmToJ1tUxuIDjdIKi2+or2VQ/g/Y6L0nXdqXA09Il3YNvQJ0Pj8Eeq1tBHFMlFAn0Q + 4ewGRoE+zoQcglDSox+DEn0GcRUj5aJAHzdnp6tEn4PoybqK+w308btgBWqJPt7mwHI6 + 9C9MRyV09NkznIN3GeXo41aojayU5xv6OSrRxyQrlw8d+iclknMWfAz9QLBH32nYtCTE + bIHHVVXbzPfOYniVuiMNJkDSfZeNfv/9hy7Hbfs4Em9Kc1S2bUFlict0UkgIyqtSadYq + ZuKwdjPR2sAWIxorKjMgrUWQu3E/wvIH/v98dyiQFA5rvhGnzaMbExsk0UmROYgphWLL + 7TivzsX9zsPjx8ZMGHgoztxScomm4SBlwwUNNfHJHub1CRo2oNNWuoerkm32pqrWORYi + Zvcc3pudhrfd+zLC4xyJ2xm/FtTjAEiKder5SgmSMbKLL46FWUrV30lFoiTL7rYRTK4H + jSS0yqn3iMNrY6pRv00qTfxDE0sJL6NwQgq2vBIk1bTbzOAYFCp+cup54lgbXZTwdrPv + rlq85PimaJNBoWkyalO28SuSLO7XrEvsOLtbDaUDP6osiZMRKE0bkFlqCYpXVuRgEF1y + /ZIQFxGxolZBSfCt+TQ0sbTC0oFvPRLKLCx1lFvwuegSwqvfXzU78ONOpPVgV2muHOB7 + MarJ6MvdgR9ovuVCRSwMCK++F68VdEnK+wf1d1bSrqfeOqz4vdRv1d+pxHf190XqiIfU + b6JajCVwS7+eF0XGoLETqb8fPFdo/bToSHKiZWhrSIlavwCOgjvh30e1UnjwJjB6cZwh + KUPQxDE3akihaUEriUS4aD1Xgr4+z2g6UG7OG+aQJmnkhla11tsBbUg9SnXwWwWCaGie + Nw+pQ1KehpQ2aTc6pBQWXLPCvpBMkafJzTcuY7+u8ROsOAzJKxFQpMCOAKRpG8hne5+4 + CZEOPkYkpqB7iKPUUi9PS4JCZVdqvTxCWIjcNk7q2FWKSY23lrHJ7nLyRggJfRRJzUK+ + eFLnZrbg3SiSDMn8d5o9qq9rUSR6rlq/nxfJqh0DWYWT9wCBQWu7LjmGJQgMrOjPXWuj + aNWfoltioDcTO1WVhoFdaJAy+uS4NbnhUIJj0I8Kje0+Q3gnBS8O4vL2xMZxRSX3GWj2 + f6muLxwu7MVKM/wyk/IiT78ly8ILDt5y5C4ll/eBUnG55FKgUcje9aFR0jAMfwdAnpD9 + sDEeFmBbwRwXpwNDAqzOKSDnkmrc0144ilXua+StT/RbqCaYPsG8UUIEeHmvJlZQ1KaV + +z2ljRNnGu8eoh+8HIgmVWAasjf4JIjeUx+dRdRqY5W6rZ0YJU2gtVVKUmK9SrVkPs6h + UThJ2POytiJizErrVkl2AS9qwDiYE1KkE6crsxO91nBWqZPEQ2eVeCQtMCNeGvOhozRX + HWuZYt33uqOIx2jjXEWxFLeLAKLZToLVZHc3Dq9ulbLf22cWKaSaBcLFtoHcevelgd// + HETfiwzvfs9zEMoA3G5wB8W6cz9xiuOTe26etum7EKW9Ou9QXpeKhBQk9CpOSgkUEMTt + 71qQKLMXJOTKuJBuSTUCv0Gd7JBqBEUcrUYUfJIeNuVARzFCb42uhR5kuVqM0FseSh2W + 90oxQsfoqdZrEZKX11l+EWOWWkTB1R51lfOx1yI0SFA1wPnJfpRahNyfLGUhwyCX0lpE + oT5w6UkX/6G1iMKHykc+JqUIpOAsbgdmL0WIpCePIzlCWyliyEGcl7USIV1WXn5w/vJK + hPilYwdBrQN00OlZ+BZOTmlfueGzfhppRDU5FzrscqUVsHMtSdokISRgJ4UkaAsUATuH + +Wk+6RGwC+HapQoBRWtAOYZftAQkWSbJAvs9YF+JxPoSMmHXuCQm0WCXB1pcoQNGwL5S + GJi1vOOwkzRLnZExATsv91hZGUSaphUgycTJX7Euhx1v44MCdk3WT7mnDtjF0dA/YU/o + OtiT9mg7t8SvEFbFhkg39fGKJLT3V4dv1x/+n3dhFXjt2efJAVpeAH/iIa/RKGc7jYMb + gZSoz2oGbQUSG8kOxO2eY0eBgfDiEOK9NFFWGrxyJEuBeVFJSe7yClVGhgwsV/IKWdkM + TqPATUWAJQO1oEk50OQK7o2CmblcQWtyBQUb8l73FOrryZ2CpusTNPVFikSTKtAK2Rt+ + Yh731Ef7UqJy9uSlUbx0TYyS1q1T0hJt2bInbyuHjuKvZts6YfHOv1un9cQHylPLXCdi + tEoxNBmcwpo3WYPWrVOMbEgGd4o9vnIpQ4d30u573VFw5I1G6VNfBosMwd+RgOLWk2g1 + 2R1njct3VHbJWwfhimsxG/Rnmrah9YXY/Ya+uX3on20+uH3wAr74jHh3dnvu5VkF9WE9 + 9xaklBuf65SqLg+TgAAPQ7hhG9O0iyaJazth0ZrifSJVs9shOZ3tvDFrQ+WOYJO6ZfJ2 + iuCe00cvOS42KtM+MnHBJzuR/BCfkjvNXnJpmmQSGqq8xvImyYblQEmgXLxUSv2u9CqV + 4LXKAEclKZ3kSbuRXKb9NGjtLyqzVSKJnXHJQYgDgrdcB/gZ95ypfvDikEopgAOjEZib + C+MFz+OjmJtrBXIlO+VyeLt6CskkEUFElmGaaixSgxCRlTfB8uLihBdWOXsjhIgkKDEK + y652yHXWjUAOy+zc08awJuPjfCF7rnoDunDOTykk4V6uk9sgxyAITZkc1WEgwZJ4Kqvs + qHBTwELLvY5DJ4n1eYFuYkDpo3J9QXoWGHQEV6Yf5SpzFHbWgUGbPTDoZJTl/8P/AtTC + TaoKZW5kc3RyZWFtCmVuZG9iago3NSAwIG9iago0MzU1CmVuZG9iago3MyAwIG9iago8 + PCAvVHlwZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgNzYgMCBSIC9Db250 + ZW50cyA3NCAwIFIgL01lZGlhQm94ClswIDAgNTc2IDczM10gPj4KZW5kb2JqCjc2IDAg + b2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdl + SSBdIC9Db2xvclNwYWNlIDw8IC9DczIgMTcgMCBSCi9DczEgOCAwIFIgPj4gL0ZvbnQg + PDwgL0YxLjAgMTggMCBSID4+IC9YT2JqZWN0IDw8IC9JbTE1IDgxIDAgUiAvSW0xNCA3 + OSAwIFIKL0ltMyAxMyAwIFIgL0ltMTcgODUgMCBSIC9JbTEzIDc3IDAgUiAvSW0xNiA4 + MyAwIFIgPj4gPj4KZW5kb2JqCjgxIDAgb2JqCjw8IC9MZW5ndGggODIgMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNjYgL0hlaWdodCA4MiAvSW50 + ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVh + bCAvU01hc2sgODcgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVE + ZWNvZGUgPj4Kc3RyZWFtCngB7dCBAAAAAMOg+VMf5IVQYcCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + vgYGP2wAAQplbmRzdHJlYW0KZW5kb2JqCjgyIDAgb2JqCjkzCmVuZG9iago3OSAwIG9i + ago8PCAvTGVuZ3RoIDgwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug + L1dpZHRoIDE4MCAvSGVpZ2h0IDEyMiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFj + ZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgODkgMCBSIC9CaXRzUGVy + Q29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAA + AMKg9U9tCj+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgy8BgYBZwABCmVu + ZHN0cmVhbQplbmRvYmoKODAgMCBvYmoKMzExCmVuZG9iago4NSAwIG9iago8PCAvTGVu + Z3RoIDg2IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE5 + MiAvSGVpZ2h0IDg2IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIwIDAgUiAv + SW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA5MSAwIFIgL0JpdHNQZXJDb21wb25lbnQK + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/khVBh + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMvA8MwYAAAQplbmRzdHJlYW0KZW5kb2JqCjg2IDAgb2JqCjIzOAplbmRv + YmoKNzcgMCBvYmoKPDwgL0xlbmd0aCA3OCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5 + cGUgL0ltYWdlIC9XaWR0aCAxOTIgL0hlaWdodCA4NCAvSW50ZXJwb2xhdGUKdHJ1ZSAv + Q29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgOTMgMCBS + IC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt + CngB7dAxAQAAAMKg9U9tDQ+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAwMvAAL0AAAEKZW5kc3RyZWFtCmVuZG9iago3 + OCAwIG9iagoyMzUKZW5kb2JqCjgzIDAgb2JqCjw8IC9MZW5ndGggODQgMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNzIgL0hlaWdodCA3MCAvSW50 + ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVh + bCAvU01hc2sgOTUgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVE + ZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tDQ+IQGHAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDgd2A7 + EAABCmVuZHN0cmVhbQplbmRvYmoKODQgMCBvYmoKODkKZW5kb2JqCjk1IDAgb2JqCjw8 + IC9MZW5ndGggOTYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lk + dGggNzIgL0hlaWdodCA3MCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xh + dGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+ + CnN0cmVhbQp4Ae2X6VNaSRTFTVzYBH0CPsAniywqi8gEMAgkiKKQiCgZNIrigtFgVBwd + 1Eii0SxUHJdsVKmxTJn4h87tfqhjBEKq5qP9SVR+dfr07XtPFxXdrBsHfnLg1n/XT38r + 8CMQbv+84HcFfjvzbzSjuLikpPR8lZQUFyPub6AwpRghyhgMJr0YjDL4XIJQBZIQBZQA + g8lksdkcerHZLCYTsRCqEBJyhaawOJxyLo9XgRaPxyvncAAFJKzpVz4hMVgLm8PlVRBE + FV+AFr+KICp4XA4bkbCk/CCEKS1lMBGFqBIIq0mRWCwRi0UkKRRUEZjEwJLynhzGlDFZ + nHJEIUUSqlYqQ0taS0lEpICPSCwkCUzKregCw6sEipiqlSuUKrVGo1GrlHVyKSUhBVWV + PAxCbucCZTBsDo/gV4spqUKpadDq9AaDQa/XNmhUChklrhYQvHI2KMoDugXelDHZsCcB + KalVqOq1eqPpjhmtOyajQVuvUkhB0gUohyCQU1IK3iBMjUyp0TaZzC02u8PpdDrsthaz + qUlXr5RTIhqETi07CMlhYIyIkqsaDSaLzXHf3e7phNXuvu+wWUyGRjUN4rAY4HVWDmBK + yphYDSVXa43mu842j/ehP9Db1xvwP/R62pw2s1GrUWBFHGxRNhCWwy6v5JM1crWu2dLq + 8vj8wdDA4FA4PDgQCvb4PC67tVmnkVOkoJLLZuYQBO4gOVXVEplK22x1uLu6g/3hyFh0 + cnIyOhYJDwT9XrfD2qxVyyXVVTwQBEV0/ehpOVxCIK5VNhotDrcvEBqKRKdis3Pzc7Mz + U9HRoVDA1+6wGhuVUrGAQIKyOX0rI4esUWgM5laEGR6fehZfTCyvLCcW47PTE8P9AZ/b + bjbUKyiSX4EFXTcIOAxWeaVALFVpTXddXYCJxuaXVpIv1zfW15OrS/FYdKQ/4HXZTDqV + TIIEMUqznNjt26VMNo8Ak+ubzM6O7j/D0Vg8sba+9TaVSr3d2kgmFmaiwyG/x2lpQoKQ + Q7CxawZB8TA5FXwRuANyfH2D40/jy8nNt+93dvd2d7bfbb5YXoiNDwV9bTaTVlkrEsDG + cnFgWxKZWn/H3t4dikzNJZKbqZ39T1/SXz7t76S2XiTmpyL9/g6HWa+RSwSV5ejErusp + KWNxCSHalsXZ1Ts4PrP4/FVq52P64PDo8CD9cTe1ubY4MzHU13XPaqxX1FQTXFYODptL + VFN1jc0tLl9w+Mlc4uWb7Q/pw+OTk5Pjw/SHf96sL89PjTx64Lrb3KikSILHZly/Gui4 + 2LwqEtlja3sYikwvrL5K7X4+OP52+v302/HB573U5urC00io292KDAKj83O0plawZzT2 + 1/PN9/vpo5PTH2c/Tk+O0vvvt9YWY2P93e2tf+iAwwfO9YO/1IM5/WOxxbUt4Hw9+X52 + dvb929f0h+2tJHAG/IijqhUVxhmNLWbXM1Convz+jF7x5/q+iuB6wXmRmfN6NPxk/hfn + ld1nxDmvH+s9qJ8JqB8oQ6ifo69H5/XzLDrU571vNTbkqR+4F7ieNXqzvcMP9TyfSG5d + rec4qmcPXc/CXPV89X4Fh8Zj8eUXm++2d/f293bR/VpZiE2c3y9p3vuFCrFGge67pxu1 + jYVEcuM1vu+vN5LLcN9H8H2HbeW+73T/gXZI9x9voH8EGsfSanJ949UG9J+/of9EBuj+ + o87Tf4CD2zNJKeoNZrvb19s/PDE9G19KrKyuJJYWoB+ODPT62u1m3H7y9EOYXnDy5/25 + HRpreDQ6PTM7H5+fnZmOjoVRf3bS/VmYsz8XXc4LmF5oXnj9wYFwZDw6+WQyOo7mRY+3 + 3dli0qnlNbgbZp8XRbAx6KxcmF+UXKNrttpdngc9wdBjGF/hocehYOBBJ8wvE/Sw/PML + DR56nooohQbmqQ3mqa+7J9DX1xfo6fZ1utE81WkU0FMJNL6yjh3oj3iCnc93NZ7vTpe7 + o7Ozq7Ozw+1y2qymJpjvNCb3fAcOzhsotkBQUNbrjJA3Wu1O5z2n094KecNI5w0hDi65 + 8wYWdJF/pApVg86A8o/FYsH5R9egrpPW/Dr/IEEXQQrymEyh0jRq9XpDE8pjjRpVnQwl + u4sYlWUIZqZHBgQeoXwooaTyOiWKhxAQM/lQiPIhinUFBk1IvXwhKcZ5VS6X47wqJoV8 + oqKQvIrODLZG5+cKlJ9JyM8SCQRoOj8Dhc0sID/TIMjzTJzEIc/TcR4H+kqUwnF4zpNV + L+YrKEKSMAlCPXpeVOIHBpdDvwqQNbktvuAU4fcOPJro907muQOM33zvoMLGmq69vzKP + poJeTecFgEiQX6+8B/Ej7ncoGHb5Pi2mH5TIlUIecJcOXf4EX7xcl7+++enGgf/bgX8B + Qse7wwplbmRzdHJlYW0KZW5kb2JqCjk2IDAgb2JqCjE3ODEKZW5kb2JqCjg5IDAgb2Jq + Cjw8IC9MZW5ndGggOTAgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAv + V2lkdGggMTgwIC9IZWlnaHQgMTIyIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRl + cnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNv + ZGUgPj4Kc3RyZWFtCngB7Zz5N1tbG8eVXkQiAwkioonkIoYQs1jRGG4UQasxtC7LUIqK + dHGJriipumK4NWShtCo116ypoe3tXf3X3mefJKWGos25veddeX5xVtWzP+u7vs+zzz5n + 7+Pk5AiHAg4FHArgpMAV3MNu4IjU+Uu44BRfBnBG4/0IvJXWxeXq1au//AsBw7i4YPjf + yY0BAy5idXVzc7cFye5hy+zu5uaKRrOAXxrbAozUdQVaEsmDDEGB8MQlUGY0ggeJ5O6O + wEFw0PtS2MjBSGFX4AVciieVSqPR6Qwcg06n0ahUT0D3AG6EjVFf1NpIZCAGhUlkMuAC + q5c3k8li+fj4+OISkJjFYjK9vRgMOoCTySSkNqK+oNQW4l/c3D3IFCoN4QIp29/fn8MJ + CAjg4hCQlsOBAdi+vj4InEalkD3c3SxaX6SLWJCRxp5UuheT5evnz+Fyr/F4fH6QALcI + 4vN5vGtcLsffz5fF9KKD2KC1Rerz/IF8AbYAYgoiBmBuII8vEAYHh4SKRKIwS4TbLawJ + IXVoSHCwUMDnBXIBG1FTgBoMcr4/rMgeZIyYHRDIA97QsIgIcVRUtAQiBodAeaOjosQR + EWGhwM0LDGBj1GAQC/Q3lbYhU6gMpg874BpfGCwCXElsXEJiYlKy9DBS7BCH2aTJSYmJ + CXGxEgAXBQv51wLYPkwGlXIBaAzZzZ3sSWMwfTmBfGFouDg6Nj5RmiJLlcvT0jNQZNo5 + sKTpaXJ5qixFmhgfGy0ODxXyAzm+TAbNk4xMDfY4U2lAdgEvA7IXi83lCULCoyTxSSmp + 8ozfFDeyc3KVyry8vHy7ByRVKnNzsm8ofsuQp6YkxUuiwkMEPC6b5YWgXX9BPe8s6CtW + ZLq3jz83KFgkliRIZWmZWTnKgpuFt4uKiktKcYqS4qKi24U3C5Q5WZlpMmmCRCwKDuL6 + +3jTrdBnMQPyVVd3D08aIAcKQiKi46Wp6Yqc/FtFJXfKKioqK6ura1Dcs2tgKaurKysr + KsrulBTdys9RpKdK46MjQgSBAE3zBE/D7HIGNOpybiQKzQshh0bGJMrSFbkFqtKyiqqa + uvqGxqYmtbq5uVlj54CUanVTU2NDfV1NVUVZqaogV5EuS4yJDEXQXjQKCbP0qeZAzoD6 + ozJYgCwSxyVfz8wG4vKq2voHzQ9bWtva2rUdOIW2va2tteVh84P62qpyoM7OvJ4cJxYB + NItBRXV4htBXQGaEzGRzBaHiOKlcoSwE4rrG5pY27SPd465uvf4JTqHXd3c91j3StrU0 + N9YBdaFSIZfGiUMFXDa0PLI79I7TzIHJTKLQmb4B/JBIQM7KU92trG3UtGp1Xfqe3j6D + oX9gEKcY6DcY+np79F06baumsbbyriovC6AjQ/gBvkw6csepQltlBjPzgiNikuVZ+UVl + 1fXqlg6d/mnfwOCz4ZGR0bExIy4xNjY6MjL8bHCg76le19Girq8uK8rPkifHRATzwNJn + Cu3sDAXoSWeywczRidcVeUW/1zRo2nTdvYah4VHj+MTk8ymIaRwC5X0+OTFuHB0eMvR2 + 69o0DTW/F+UpridGg6XZTLonCO3sfKIKkTXAzV7IGeI4WaZSVVbT8FDb2WMYGjFOTE2/ + nHk1OztrMple2z0gKaR+NfNyemrCODJk6OnUPmyoKVMpM2VxYuQOTOhTzAHWcEVuZgcK + wyXStOzCu1WA3NU7MGycmJ6ZfT03v7C4uASxbPdAWRcXF+bnXs/OTE8Yhwd6uwC66m5h + dppUEi5EQlNIrqdU4RWwhgeV4cPhh0QlpCoKSivvawB5cGR8asY0v7i88mZ1DYt1u4cl + 7+qbleXFedPM1PjIIEBr7leWFihSE6JC+BwfBtUDzHGic2DWoDH9uMIwiTQ9V1Veq257 + DMgTL2bnllbW1jc2N7e2t7d3cAlIvLW5ubG+trI0N/tiAqAft6lry1W56VJJmJDrx6RB + u3M5YWjMGjCd8IIj42Ugc1Vji65nAJBNCytrG1s7O2/N73AN89udna2NtZUFE0AP9Oha + GqtAaFl8JLQOFgMzx7EiBDsja/gGBImik+Q5qvI6jbbbMDz+wrS4sr61Y363u7dviQO7 + hzXx3u47887W+sqi6cX4sKFbq6krV+XIk6JFQQG+yBwnDI3sTKZ6+wUKI2JTMvNB5lZd + 75Bxanbhzca2eXd//+D9B5zj/cH+/q55e+PNwuyUcahX1wpC52emxEYIA/28qeSThgZm + dzKNCdYQx8uybpXVNmv1hpHJmbmV9W3z3j4Af/wb4hNOgXJ//PDh/f6eeXt9ZW5mcsSg + 1zbXlt3KksWLwRyYoY8X4RXozhQGi8MPjUqUZ6sq6lt0T4eM06bFtS3z3gEA22D/wSFs + uQH7YM+8tbZomjYOPdW11FeosuWJUaF8DhgaivBY43B2cSV5gp0FIok0Q1lS9aCtq294 + YmZ+ZWPn3f6Hj5D1GOtnO8SxlDDIxw/773Y2VuZnJob7utoeVJUoM6QSkQAM7UlyPd44 + gNkDJkGuMBzsXHCnRq3V949OzS6ubpr33h9DtgPtkRRHwBH0+z3z5uri7NRov16rrrlT + AIYOF3JhKvQ4yYzaBpTgrxFxMsXNsjrNo55B4/Tr5bVtkBmMcSTzP0cGtMPl0cyfPv0N + Qm+vLb+eNg72PNLUld1UyOIifkVFiBrH180OWh2ZymRDd05IvVFYfr9F1/vX+Ms5sMbu + ATDbEtuB8dQUtvzAfLAL5ph7Of5Xr67lfnnhjdQE6NBsJjSOk8yWthGCSvB2RUNr55/P + kJ033+4dgDWsOU8dzy7/aB0AzHGw93YTGfrZn52tDRW3URGGWBrHCWZodXRodaht5Kgq + G//oMgxPvlpYBWawM+7Inz/boMHQbzdXF15NDhu6/mishFkFGgcw02H2Pu4NxMzy58Ms + mJZbVAltwzDyHEpwy7z/hdkugp6ZxAINRbhv3oIifD5igMZRWZSbBjMh3591JjMHZu7k + dGVxVVN7dz9ihu6MShDLd+ZodvoFNggqQtShgbm/u72pqliZngyzN+cMZgrciAZh7bm4 + ukmrH0Ctzto2UDo7kX0jDRrF2jhQsxvQa5uqi7EGHQS3ozCpnPQGMNumFNSegdm0dMj8 + jbHs9qtD5iUTxqyusU0q32KGm+eMvNIadceTwbGfyzw2+KRDXVOaBxNhmCDgAszN/w3m + Zgez3Ux8JNFXfkbe+CGdjyTG9dLWN6AGz2VGt/xY37DW4HE/4wp6JPk5zF/dQDuYjwh3 + yctL6QxLK1imcAVhMVh/Rt6A2+eldbRKgan7kkN/93+HiRCtVNaX0A20rQZjwgRcWKgc + X1zBchAtrbiC8Bi06r6nsTAvA/MBMH83w6X/EJgPgBm76X/SobmHVt4x4Rgz6diC0MF8 + aXUP/8Ch86EWeF45dMZT3cPcDp0PtcDz6v9f51PmbtPPm7vhyei5c7fjXvS7HX+p+zoC + 6uxEDOZjz3K/vbb6d+6g7buGdTCfVaI/pjOhnn1ZXlsR6Rnj4bPc9v/Cs9z2c5/lwnN+ + wj0zJ+a7CaK9A7pKwHdthHynScB3x0R8R0/AvRBE3HNCyL09hNxDRby9ak4E3BPodNre + y86ft/ey8yJ7L6EICbfHlZh7iYm3Z9uJgHvjnYh4BoGIZz1sQhPpTA0wE+/sElQh4c6I + IaEJdxYPcwc6pkmgM4/ADJYm2NlSBA2WJtQZXicLNJwvJdBZ6UNoAp1JdyLi2X9MafiQ + BZG+sQBvhlD3gO+FEOlbFgBtoSbSN0MsUmNaE+fbLAgapAZqIn0DB73vtGAjZxPkW0MI + 2ooNehPmm04WbJAbExz7OhTCxyes6eEHGs869I//QMnwjR9ndGRwKOBQwKHAGQr8D2Xh + +WEKZW5kc3RyZWFtCmVuZG9iago5MCAwIG9iagoyODk2CmVuZG9iago4NyAwIG9iago8 + PCAvTGVuZ3RoIDg4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDY2IC9IZWlnaHQgODIgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9s + YXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+ + PgpzdHJlYW0KeAHtWOlfUlsX1sqBeR48gEwCgiiiKKLihBMOoZiKoVwSxVByyjEKUzGH + nLK4mRZlWdb9K+/aB+g1PXR778d77/rCgd9vPzzrWXuv/ayTlvZf/CsUSE9Pv3E54Hv6 + ryeeWHzz5s1b8YAnHO3XQPDlsDYDIjMZ8HzrFkL5a4z4eliemZWdnU1KBDxmZQLIL2Cg + 3OHv0XIyhUKl0vCgUikUMoDEMX5GAxGIrydRqDQ6g8mKB5NJp9MQRiZOIzUEDpCRkZUN + 6+kMFpvL5fFR8LhcDosJGCREAzJJWRRgAAng65ksLk8gxDCRSCwSYZhQwOeymXQqGcmR + GuI7AI3B4vKFmCRXKpPLFXK5TCoRY0I+h0WnUoAF6ElMIgFAptBZHJ5QJJEp8tRqTX5+ + vkatUsqlEkzAZTFoOESKPEBESIFMpbO4AkwiU6q1BfoiA0RRoV6rUclzRQgCEkF5EJFI + vwQgksJ6vcFoKis3m8vLTCXFhTqNUoog6FRSdsYtQgSkYhYJUuAKxbK8fH2xyVxZba2p + ra2xVleaTUa9VinDISgpSCAKWdkJAJXOUGquqm1obG5pbW1pbmyoqTKXFGmVUkzAYdLI + 2YRppAOFbAoNZ6AuKC6rrLW1tt/u6nY6ux2dbS22GosJIHIxPpsOJAjSwCmQqAyOQCRT + FxjN1fUtHV13+gfcbvddV5/T0dZUV1laqFFIhFwmjZSVcV0IoJCJcuBj0jxdsdlqszt6 + B4a8w74Rn8/rcfd1dzTVmo06lQzjs4AEpHG1V6TfABlpTK5QotQayqpt9q6+wXuj98eD + weBEYPTekMvZbqs2FeUrxAIOgxABdAQKbJSD3lTZYO/q9/gCD6Zn5+bmZqeD932efkdr + XYVRl5ebw2VSSZnXOKAkSFQmNyc3T2esqGt19HtGJqbnlx6FQqHlxYeTAd/gnQ5blUmv + lmE8Fo0EUl7JAiVBBhVEMk2RydrU2Tvkm5hdDK2srq2vPX2yPDd53+vqaqkpN6A02HRy + 1jUEPAkGB1RAFOxO93BgZim8trG1vb31bD28/DA4OtjTVg9pKCUCDp1CjABJYDJ1oam6 + 6Xa/d2xqMRzZer5/cLD/fCsSXpwOePs7bZWleiQEFOM6B5CBxuKLFfkGM6IwEpx/vL69 + 9+Llq1dHh3tba6G5oG/A0Ww1FYIQXFSMKzqAkCADRwBJlFTaOvq8gZnl1a39o+jxm+Pj + 6IvdZ+HFKf+gsxWEQAhMIgSoJYObI4VSWpsdd33B+fDG3tHrk7fv3p0eRw+2Vx/N3vf0 + 2OvMBo0c4zGpBBwAgcnDZBqDudbuHPJPL61uH0ZPYx/OPsROj492I4/nAt7e9rqK4nyF + iMciQID9RIVaKrTFFfXtvd7Aw8eR3ZdvYmefzj+dxU6ie8/C8xP3+joaLEatQswnRgAh + kQxGkME1DElsHvx+enb+5cvn87O3vx9sriwGh/s7bJVGrZIQ4cbNTBJsaUleQWlVk2PA + NwlJvDiOffx88fXi88fY8eH26tIDnwvK+RMEMp0tzFXhQrr9U8trO0dv3p9ffPv29eJT + 7PgFAcKPnRJOBRQzgdDt9s+E1ndfnn44v/jjj29JhEmf67atsgRtSjgYGTeJEKCYhWXW + lu7BsZlQZPfV6dnnrwjhPM7hrxDQhsIRalqcQ2Ozocje30awtjgH/xYCroMUKQlZgA6w + HZI6/GIWl5TscvunH60/PzpBtfifklereUXJ5H7Ql1Y3Oe6OTC2t7sB++PTl69eLL7Af + iKr5Y49COyq+J+Fodrp8wYUV2JNvYU9efIE9+fpg6ynakz/ZUenxcyFWaI2WBjjc43NP + NvZencTOzs/PP74/je5vhueDiXNBvKtxBDibcrzB9HjGZh6t7bx4fRo7Ozt7/xadzSdz + 43A26yuKtQoR4cm6gfcH1OTKrM1d7pEHC+Fney+PT9/FYm/fRA931kLQH+6g/pAvF6Xo + D1kUtK3haIEQ/d7AbGht++Dl6zcnJ8fRo73NlaVkj9Kk6lGoy7EEYiU0iDp7z+Do5EI4 + snNwFI1GXx3tb68/ng/67nb9pE+moWJQWdCk1EWQhsMFjXJpZWNn7+Dw8GBvZ2NlaSbg + dXU2VpXqVdIcok4LCLgQKA1jZUN7z6AvOLu8Etnc2Xm+sxl5Gpp74B/qbYcWBUdTCPfF + 9W4fv7PYAjFUo9zafLvP4w8+XA6vrkcikdVwaH4qMDzQ3VprNmgVEuI7K3lvYlJVgdFS + b+92ef3B2YVHj8PhJ6Gl+enxEU9vZyNcFxoZFJNGcOshAwJ3NwdIwMVZbWt3Dnj9E1Oz + 8wsLC3Ozk4GR31zd9nqLsUAlheuC6O5GQmSRwQPl5CqRAWnqcLo8vrHx4OTUZHB8zOcZ + 6OlospYbtCADLuS12z8t4WHiBsJYUdPU3t3n/m14xO/3j/q8g66ezuY6Swm6/EEGQgeC + +ygybmLkan1JRQ3YoB6wUUMez6Db1dvd0VJfBRZGKcnhIhkIfFQa2EncSPFyJAqNHlmx + 5rbbXc47vb13nI5Oe1NdVZlBlyfF+MgEEXk5SAOUIFHpbB4mUajBj1qs9Y0t9rb29jZ7 + c2O91WIygA8Tg6tFfpLADQICMpRkKoPNxyRyta7IWG6prqmrh6irqbaUlxQhACEPnByY + QUJjjUhAHjQGGxIBW1wAtrrcXGGxWMzlphKDXquSSXJ4bGTNCSmkxUmAL0YQQlGuQpWv + 0xuKjRDFBjD3aqVMDABMfDwgpHAZAo0HYimMFxqtVqfTafM1KqUsVyQEADyHWynmCyQm + 2Ht8wuDwACNXJlcoUSjQkJMTH1BIuLO/4oGSXRcGNTTowZwFYxJgCDGRWIJCLIJBiwdD + EprVYNxLRQHPIz4rwqSERj0eXxAPmPY4LAYa1BAAqPDjZZGkAJ9QUqgIokGmxMdNNofD + YbNZLCasjw+LaO5NCQAQgAE0AAMfeWn0RNBg6IVhEwZnfG6+9KfXH3EaibGbRCLD6AwD + M5lEujx4X1/1wy+IRpwITP5ZyYB/BwFwAj9J4TtQAgS9fICFKOAp/gYitYbfVycerr4B + Qbz+r5cgSUD06iQRyZ/++/wHK/An+CZq0wplbmRzdHJlYW0KZW5kb2JqCjg4IDAgb2Jq + CjIzMTEKZW5kb2JqCjkxIDAgb2JqCjw8IC9MZW5ndGggOTIgMCBSIC9UeXBlIC9YT2Jq + ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMTkyIC9IZWlnaHQgODYgL0NvbG9yU3Bh + Y2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQg + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtW/lTWvcWd0mUfZNFFBSE + cQmIoiiK0eASrIqaqlQj1XGJRq1KqkOxJVFjbag6SmQkxcRIjCak7ivGNJ33r73zvWDj + uLymL8K8+8bPLzj+8D2fzzmfc+7l3kNIyBWuMnCVgasM/I9nIDSouLRkINZhfyE8CPgr + WBiK/SVC/MzDw69du3Y9yICQ4eGYlP9SA0YeqCPeEZGRhGMQA4rjKITIyAgU2SfiH0vw + kUdZjwDmRCKJDKAAqAEHioKikYhEAgGJgEJAHf6RBOR4lPkI4A7UKVQajU5nMJhBAoNB + p9NoVJBBAg1IAqbgc1sBJR/YQ+aJZDJQB96sKDabw+FyubyAA4JwOGx2FIvJZIAIMpmI + qoAUfGYJfOyvRxJIZAqNjqgDa35MTExsrEAgEAYYECI2FoLxeTwuEkGnUcgkQqSvBp8z + jXz0Ue6pNAaLzeFFx8QKhfEikVicIAkKEsRikSheKIyNieZx2CwGFAFq4CvB33kIeQes + A+wpiD2QF8aJxBJpYmJSckpKyg0fZAGB/3AIk5yUmCiViEVxQpCAFFBAAZjo7z3kp08i + Y+z5gjgRcE++IZcr0tLSlYCMAAPFSE9LU8jlN5JBgyhOwMcUgIl8Av5jBY7pU2hMNpcv + iBdLE1OAujJTla1W5+RqPiHvkvHpZE1ujlqdrcpUgoiURKk4XsDnspk0ymcIwOhHEshU + OpPNi40TS5NlivTMLLUmL79Aqy0sKkYoCSCwAEWFWm1Bfp5GnZWZrpAlS8VxsTw2k04l + oyYAC11YAaAfDt4H+iwOXyiSJMnSlFk5eQXa4tu6r8rKK/T6ysrKqoACAuj1FeVlX+lu + F2sL8nKylGmyJIlIyOewkICI62iOXiQg1E+fEcWNESYkpiiU2Zr8wpLScn31nZpag+Gb + +oYgoP4bg6G25k61vry0pDBfk61UpCQmCGO4UQy/gIv4A/1rEQQSlQ704yRJ8vQsTUGR + rrzqa0P9XWNzc0tLW1s7wr2AATu+ra2lpbnZeLfe8HVVua6oQJOVLk+SxIEAOhV6AK5k + FwhAkzOSSKGzEP3k1Ax1fpGuorquwdjc2t7Z1d3T29vX19/fbwog4Pi+vt7enu6uzvbW + ZmNDXXWFrihfnZGajASw6BQi1gLnGgi5B3qXxuQA/RSFKvdWSRmwb2rt6Pqu/8HAoNn8 + g2UoCLD8YDYPDjzo/66ro7UJFJSV3MpVKVJAAIdJQz18QQFCIf2IPpsvlCQrVBqtTl8D + 7Dt7+gfMlh+tj4ZHRkcfBwGjoyPDj6w/WswD/T2doKBGr9NqVIpkiZAPY5RMgBl0noGw + 9BMpDDZPIE5KBfqllXWNLR09pkGLdXh0bPyJzfbrxGQQMPGrzfZkfGx02GoZNPV0tDTW + VZaCgNQksYDHZiAHnVsAf/rB/KJEeUautrTKYGzr6hsYso7+/GRicnrGbn86O+sIOGZn + n9rtM9OTE09+HrUODfR1tRkNVaXa3Ax5ogha4MIChIVB81IZbD6YP119S1dp+La922S2 + jozbpmaeOuacz35zAeYDDBTjt2fOOcfTmSnb+IjVbOpu/9ZQqbulTocW4LMZVChAWNiZ + Dkb2AfezkHsUqvwSfZ2xvfuB5eGYbcrucLrmXyy8XFxcdLvdrwIKCABhXi68mHc5HfYp + 29hDy4PudmOdviRfpUAOwgpwjoHAPhHI/fw4qUypKSyraWwF+sPjEzMO5/zC4qul18sr + K28AbwMKFGFlZfn10qvFhXmnY2ZifBgEtDbWlBVqlDIpKgCFGHFOB4eCfUg0JjcW0p+d + r6tuaLlvAvqT9jnXgvv1ylvPu99XMawFFL4Yv7/zvF157V5wzdknQYDpfktDtS4/GwoQ + y2XSSGCgMxMIsw+dHS2U3FBqiirqmjr6zA+BvvP54tIbz+ra+sbG5tbW1nbAAUE2NzbW + 11Y9b5YWnztBwENzX0dTXUWRRnlDIoxm02GEhp9pAMw+cOkSJaaqUPpbewasYxNA373s + WV3f3N7e2d0LGnZ3trc311c9y24QMDFmHehpRQVQpcII4jAxA51qYLA/sg9PkADDR1te + 29RpsozYpueeu1c8a5vbu3v7B14fDgMKf5CD/b3d7c01z4r7+dy0bcRi6myqLdfCCEoQ + 8JCBzjQAsj+ZFhUtlMoyNMWV9S09g9bxKYdrcdmzvrW77/Uevj8KIt4fer37u1vrnuVF + l2Nq3DrY01JfWazJkEmF0VE08tkGAP4EMp0dE4/Z547xXj+k3+5cWPKsbe0eeIH8hz8A + H4MAFOfD0dF778Hu1ppnacFphwL03zPewQwUH4M1wOkGRvwpDLB/UppaW1bbfP/7n8Ym + HS73yurmzv4hkD8m/meAcRwHJBzu72yurrhdjsmxn76/31xbplWnJUEDMCiEMwMoFK5e + FCYX2T+nsMIA9nn0y7TzxZJnfXvPe/QBTj3F+1+XjFPHQ8APR9697XXP0gvn9C+PwECG + isIc1ABcJvAPPzVAQ8MjiFQmD5uexfqGtl7zsM3+7OXyu42dg8MjyP6J8y+Z+YnjTgT5 + +PGPo8ODnY13yy+f2W3D5t62Bn0xNkF5TCox4jT/MMSfBfxlGXklVXfb+yyPJ2Zdi2Cf + Xe97SP+Jk/88EfCS/zwZBQrw3rsLBlp0zU48tvS1360qycuQSYQ8FuJ/6gKA+MPNj1Aq + z7x5u7rxnmno8aRj3v1mdQvs8yn9l8z33OP8IlABvHtbq2/c847Jx0Ome43Vt29myqXA + n3YufxLwj5PKVTd11cYO0xC07/yrY/7+M8+Nd+n/PBbg5/8K+I8NmTqM1bqbKrk0DviT + zss/3vnj3T+47l+8z0/cX7/wfv+A//s3nN8/4/v7SwjOvz+G4P37O96fn+D/+RW+nx+G + 4Pz5bQjen5/j/f3FcQHw+v4I+OP7/R10MK7fn6IC4Pr9NeYgtP6A0/0B4A8tgOP9DSQA + WgC3+zMhPgGww4HT/aVPAnC6PxaC9/09rAKwvIrX/Ul4rYemEOwO43V/FQT4FOB1f9hX + AqwG+NzfRgKgBKAAr/vz6OW2TwLqBBz+fgEJ8EuAOuDy9yM+CVAGrBDYL1GQlMDDHwo+ + UGw/jS//QIcFD1/O9+qEqwxcZeAqA1cZ+L/OwL8B18g0uAplbmRzdHJlYW0KZW5kb2Jq + CjkyIDAgb2JqCjIzNDcKZW5kb2JqCjkzIDAgb2JqCjw8IC9MZW5ndGggOTQgMCBSIC9U + eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMTkyIC9IZWlnaHQgODQg + L0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJD + b21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtW/lTWmcX + dklU9kUWUVAQxiUgiqIoRoNLsCpqqlKNVMclGrUqqQ7FlkSNtaHqKJGRFBMDMZqQuq8Y + 03T6r33nvWDjuHxNvwjz3RmfX3D84T3Pc85zzr3cewgJucJVBq4ycJWB//MMhAYVl5YM + xDrsb4QHAX8HC0Oxv0SIn3l4+LVr164HGRAyPByT8j9qwMgDdcQ7IjIy6hiEgOI4SlRk + ZASK7BPxryX4yKOsRwBzAoFIApABlIADRUHRiARCVBQSAYWAOvwrCcjxKPMRwB2okylU + Ko1GpzOCBDqdRqNSKSCDCBqQBEzB57YCSj6wh8wTSCSgDryZ0SwWm83hcLgBBwRhs1ms + aCaDQQcRJBIBVQEp+MwS+Nhfj4wikshUGqIOrHmxsbFxcXw+XxBgQIi4OAjG43I5SASN + SiYRoyJ9NficaeSjj3JPodKZLDY3JjZOIEgQCkWiRHFQkCgSCYUJAkFcbAyXzWLSoQhQ + A18J/slDyDtgHWBPRuyBvCBeKBJLkpKSU1JTU2/4IA0I/IdDmJTkpCSJWCSMF4AEpIAM + CsBE/+whP30iCWPP48cLgXvKDZlMnp6eoQBkBhgoRkZ6ulwmu5ECGoTxfB6mAEzkE/Bf + K3BMn0xlsDg8foJIkpQK1BVZyhyVKjdP/Qn5l4xPJ6vzclWqHGWWAkSkJklECXweh8Wg + kj9DAEY/MopEoTFY3Lh4kSRFKs/Iylap8wsKNZqi4hKE0gACC1BcpNEUFuSrVdlZGXJp + ikQUH8dlMWgUEmoCsNCFFQD64eB9oM9k8wRCcbI0XZGdm1+oKbmt/aq8olKnq6qqqg4o + IIBOV1lR/pX2dommMD83W5EuTRYLBTw2EwmIuI7m6EUCQv306dGcWEFiUqpckaMuKCot + q9DV3Kmt0+u/aWgMAhq+0evrau/U6CrKSosK1DkKeWpSoiCWE033C7iIP9C/FhFFpNCA + frw4WZaRrS4s1lZUf61vuGtoaWltbW/vQLgXMGDHt7e3tra0GO426L+urtAWF6qzM2TJ + 4ngQQKNAD8CV7AIBaHJGEsg0JqKfkpapKijWVtbUNxpa2jq6unt6+/r6+wcGBowBBBzf + 39/X19vT3dXR1mJorK+p1BYXqDLTUpAAJo1MwFrgXAMh90DvUhlsoJ8qV+bdKi0H9s1t + nd3fDTwYHDKZfjAPBwHmH0ymocEHA991d7Y1g4Ly0lt5SnkqCGAzqKiHLyhAKKQf0Wfx + BOIUuVKt0epqgX1X78Cgyfyj5dHI6NjY4yBgbGx05JHlR7NpcKC3CxTU6rQatVKeIhbw + YIySomAGnWcgLP0EMp3F5YuS04B+WVV9U2tnr3HIbBkZG594YrX+OjkVBEz+arU+mRgf + G7GYh4y9na1N9VVlICAtWcTnsujIQecWwJ9+ML8wSZaZpymr1hvau/sHhy1jPz+ZnJqZ + tdmezs3ZA465uac22+zM1OSTn8csw4P93e0GfXWZJi9TliSEFriwAGFh0LwUOosH5s9Q + 3dJW6b/t6DGaLKMT1unZp/Z5x7PfnICFAAPF+O2ZY97+dHbaOjFqMRl7Or7VV2lvqTKg + BXgsOgUKEBZ2poORfcD9TOQeubKgVFdv6Oh5YH44bp222R3OhReLL10ul9vtfhVQQAAI + 83LxxYLTYbdNW8cfmh/0dBjqdaUFSjlyEFaAcwwE9olA7ufFS6QKdVF5bVMb0B+ZmJy1 + OxYWXa+WXi+vrLwBvA0oUISVleXXS69ciwsO++zkxAgIaGuqLS9SK6QSVAAyIeKcDg4F + +xCpDE4cpD+nQFvT2HrfCPSnbPPORffrlbeed7+vYlgLKHwxfn/nebvy2r3onLdNgQDj + /dbGGm1BDhQgjsOgEsFAZyYQZh8aK0YgvqFQF1fWN3f2mx4Cfcdz19Ibz+ra+sbG5tbW + 1nbAAUE2NzbW11Y9b5Zczx0g4KGpv7O5vrJYrbghFsSwaDBCw880AGYfuHQJk9KUKP1t + vYOW8Umg7172rK5vbm/v7O4FDbs729ub66ueZTcImBy3DPa2oQIo02AEsRmYgU41MNgf + 2YfLT4Tho6moa+4ymketM/PP3Suetc3t3b39A68PhwGFP8jB/t7u9uaaZ8X9fH7GOmo2 + djXXVWhgBCXyuchAZxoA2Z9EjY4RSKSZ6pKqhtbeIcvEtN3pWvasb+3ue72H74+CiPeH + Xu/+7ta6Z9nltE9PWIZ6WxuqStSZUokgJppKOtsAwD+KRGPFJmD2uWO4NwDptzkWlzxr + W7sHXiD/4Q/AxyAAxflwdPTee7C7teZZWnTYoAAD9wx3MAMlxGINcLqBEX8yHeyfnK7S + lNe13P/+p/Epu9O9srq5s38I5I+J/xlgHMcBCYf7O5urK26nfWr8p+/vt9SVa1TpydAA + dHLUmQEUClcvMoOD7J9bVKkH+zz6ZcbxYsmzvr3nPfoAp57i/dcl49TxEPDDkXdve92z + 9MIx88sjMJC+sigXNQCHAfzDTw3Q0PAIAoXBxaZnia6xvc80YrU9e7n8bmPn4PAIsn/i + /EtmfuK4E0E+fvzj6PBgZ+Pd8stnNuuIqa+9UVeCTVAug0KIOM0/DPFnAn9pZn5p9d2O + fvPjyTmnC+yz630P6T9x8p8nAl7ynyejQAHee3fBQC7n3ORjc3/H3erS/EypWMBlIv6n + LgCIP9z8CCSyrJu3a5ruGYcfT9kX3G9Wt8A+n9J/yXzPPc4vAhXAu7e1+sa9YJ96PGy8 + 11Rz+2aWTAL8qefyJwL/eIlMeVNbY+g0DkP7Lrw65u8/89x4l/7PYwF+/q+A//iwsdNQ + o72plEnigT/xvPzjnT/e/YPr/sX7/MT99Qvv9w/4v3/D+f0zvr+/hOD8+2MI3r+/4/35 + Cf6fX+H7+WEIzp/fhuD9+Tne318cFwCv74+AP77f30EH4/r9KSoArt9fYw5C6w843R8A + /tACON7fQAKgBXC7PxPiEwA7HDjdX/okAKf7YyF439/DKgDLq3jdn4TXemgKwe4wXvdX + QYBPAV73h30lwGqAz/1tJABKAArwuj+PXm77JKBOwOHvF5AAvwSoAy5/P+KTAGXACoH9 + EgVJCTz8oeADxfbT+PIPdFjw8OV8r064ysBVBq4yEOAM/Ae/JzS4CmVuZHN0cmVhbQpl + bmRvYmoKOTQgMCBvYmoKMjM0MwplbmRvYmoKOTggMCBvYmoKPDwgL0xlbmd0aCA5OSAw + IFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBzZxLjyTHccfv9SnquDyw + We+uOtqkLVgny1xAB8EHYbA0KcxyxSXlz+/fPx6ZWd09sytZIIjFbGdk5SNemRkR+fip + /0P/Uz/wb71u/XWe+4/v+j/2P/Zfff3z2D/93I/27+en/svhsvb6awp+13/1n+8+Pr37 + 6y9/+/Nz9/EHmhr32Zob16Ufj8n+nt73X/3H+3Hvv/lg3U3DYmW2rZ+nK01O49BHoYNC + nXC6L7TuFG2K3ba1rPR+U6I7NUSJad4+0ca0X+9KjNPkTNp72ljXvXM8piFpuikxwjyj + +qUSy7aUEl3wZYT9EsVx7adphNjl0P/R0Pioq+Ho13mphYbSVoMxhZZdfL5FaRutv3EW + 51RguU6XqZSbsrGm3Dxt9+USs3W39hbkOq+XZYSOzYXWoQBbFpsOKzYv/Xwdvdh1uYzL + HAhKB0y4s7gx9PzMIHbM29RP1+0yHfMUAig6Vbse9+myooUTbHSCH3Q8qhlEOQ/TZVuW + aO163/F4neHIMFFyuVzpONp80HGheRqivQcdF4qnlY4/i2KGiDr+NMXjkaJ70HFSPA3D + Z1I8wZvXKS6sXraXKS4dr6M6Dv69xuppnR9S3IyxdUO+r44xlVhyWkEiOcbquKDEuB+B + z8NxOh8HGow6tYVsdmpQsUJj0tW2czXt1Sy3rZf9irZNBeUZVaOlr/7r3fOff/nhf999 + /eH5w8cf3r/75eMPTz0zKUK6LsOmKXfftmk+mIeZhadpZhysjAOaPMZh7t8zxV4vxz7u + 3XRF64f9Ms+gM89o9j7vcOG4XGfG3DwZJb3Yu14psUyXeR01CMbLddxV57iM07F0ylmG + +Vrq0ORlPUZIWZDNxsQ+X4fLeB1Gqz2vMHJeFg1NetyHy7Br+FFqvZA/dtMGFterSkHB + MMLYkeIjQpzHnUmADGiD08DbZb4eyA9ahpnZa6KvXTyQSm4oFM1t5KzQG5WmZbwM9E6R + 8TIeu2R7ZYiz1Eyai3bNCHfMe+q/7+5z3/ffwe3f8/cXXwe//tYkOfTffq0lzoAv9aMF + kzkmm+iW7eqUV6n0yzZUqSyMPuhDfimVZdSiimRTKofG576aDFwqx4z2DPA+pZJ1qlT2 + 4zLNw16lsiCwbWEZSql0y8oUKo2pUgE3ZjfWmiqVFWFcd3ieUlmH4yyVdVoux3Yg0pTK + OkPUPsHplEpWKlJZQWcfUMsilQWtXUctESGVyjykUnJBsbD0WxYF7BKm4J/hPaOhkcW0 + Q8mBMjMINBf961tGzjAwcb996kdfvb/kl7/Ltl1RzqV/ywr976gNEn37Xf/mm2++/aJ/ + +5f+3956P7J/OqRs/IAjJNDZ7VDPX/3u57n/n59tZF9ZMVFvRuJyMGMyzgU99+twhWZW + DIErU9C0MryYAUkjfw0PS7F+78xFtTjtlZa0GtdegJ77eUVDjo3xDjjPWmCnaCMgazvS + 0WdWMmQ0HyXWTyj7TyKTf61OZxkZKpUyQQ1lAkXDwippNEDlwthzypZjd3qTESsampQp + XSkTVCmDF6iyKOuyDafG24509FkoEzIt1k+9FCZz5hF96yolBre0eIaomcFXK5VJ51hN + /S2Njs2NpDTh8jEpcqjS5HBDlWeEXKKtgNRLR1WTZvZfKHPUTpTAO+T2YC6KUt0yCvFK + r8Ot7KyASQ9bxOiSJGczFF2qzFEyjopmLihTpdehSq/DDb2eEdKKtgKKXgKK/gu9jmvS + 65BLU6Mcc2xk/CwIE8fhMmnAIa1n5gzosAEHOFkXGhgacgGx+DPT+hfmNalsVuowjGp7 + pJ/62hngc48pOzLsmMzxlrQ6eQPWhtpVwrvrSlG6rq0AvCS1UmhhIa10AXUNXfro2GtY + GPZGC/NooWtlOjWKkxkra1TwqVO6oUtgpUsQNGQDSlq7JLK7pEt4nVC+lQ6WaKViAmqo + EBgy2Ffh2gWE+VKks7Hii6FJxbQi85Q26YYKfSpUMMmOJoloQG1Yu0p4d1WQIFKoEFaP + pKPFpBRasG4qXYIaugSGdBZmfnVo0pEBEHR1crBO0ll21oegS+mGLoGFLjy4SXRlA+vG + eql2lRfdFemAyAnlG+nMOGiVCqBWx/TR8Z7nrRk7M+t7SmceWc1FX0oHNyqpwG45USGw + UiGIitmAktauEtFdUiG8ChXC6pF0ZH3VQnjuDV1AVTrdDBh0HdiOwt6lw8qedC143Wfp + zFXrsKgomJ11AitdgmgyG1DS2hVd0V2hC0SylR6smPa1TsnCxd7HUrlLuL0xyd7AIdho + GPOSNV6p537ErzpkHgJ2Ix1ueKqW4YCURKnV1MlSV0wqzPxadWWIqEX9PqkTEigFY0jl + WAnJVxNZMZoz7VO7AbfZm82Z5CQ6XWlNeAchMvUKTY8XND6P6IiTrNQzVAbJAkXROOEp + OEUANslZts0MnsJdEpNqVUYPJHejjSJ1QqIhWaBaXqOipaUBkTj/KLtTxyywDTqFZCEa + hATJTtNrJu0IuvhcYc22Nqxcu21jKH053xixf+rf/MsXitVN/Zu/foEuNb/PX3QG/xD5 + T1nwz5n4JT99iCI/ftH/d//2924SN9bGGbXHhvaMsTTtoM0icmNpf/3h/V8//Pjux1+K + vd1lvPFe+0sOwwAWrjhPrgtKNeovEFF364o77KKGf7iIof4EuVSaPNyVG/WfkJnUn1/v + hMRzVVjltxUtreUiEucfz6Zj04VEp2kNRIOQ0AWn6WX1v46p/qRa9Qc07cbLruq/54jH + DQ6S5Tef1X8arqb++jWSlWjUXyBklYqk1ZyrP4mAm+xupGNX/0Snqj+ISv35SfUn+d4m + vpc8OtMxD83hzP321L+g9uuqPy5uqD+pVv0BTf0xJqr6M4W4+hMACV1YWHzO6r8QlpH6 + 69d0QYlG/QUi6FLR0qELajfgNnulY1f/QKdRfxCV+vOT6k9SMZdmgimhFUpO7Bw4yUo1 + 6i9Q6k8EIykSIIW2bOK7PuIVbLlRf21PMPtP/Lr6k2jVH1AtZ0VLx4hX3DjgJhtvXANI + OYlOUX8hGoQEyU7Tp2Z/YiS/1dm/ovbPVf/HUc9lQ36sIysBShJm5k0HwUGmhdXcO0zV + HeNJFsoxjjMBQqIq8gVXWdwWRZmIJC3aGeCP6OaimD4xHbYWyCG8eWWFUM5KQLVW6wja + Et0iirvuBCwHvs0L1saqtpEwnWG68ktUCVxkh9AFXrHC3RNRzJUw67gRmSQGe9kP9o5W + xsQ2QAXoX2yJZDBYgJhqfNuvBFrldA872xrT9VB0jYzlIseXnYtt3OGF18F8nNgZu2JV + rgPesaK22j3aFDxeUcVtl+rdcVCKeJeLS/14GJaSI8FIoxBDOyWgKDr7ai4BGUzDjllb + JIAlFcQVCYyMqxVWVAnILlsIalcJlGpVAiPsvR6EMIsERqRLZ1UChLFdQxoJjIRUd4Iq + VQIaovOBnIoEJsJDriZFAvJujhE1SQlMWJnaEUgJRJ1GAmIJkWuFmkMC8u1mbbDdc/Ak + geQrEnhtVpg03SqO8FkRzu7G7noU4Xzgb7QW18LGwYrfrNCZwgGW1jyH9tmU6hkKI2kQ + LTK8DIBJNl/qg+3cUsfShMy0xVAbkC5425Z6wouiT0s/k0brZdl7xtI0wbdoGwmU9MNU + fDec1GaDbO3AqCz02uJUoZcGhkqwkFioTfzxdOVP5xkiXSou0o0PLFCFPyO7n1qqrBCj + 3ZmYDGZH3fmDgeUbJNanpRv++EeRNmYTDtjusNHs/ZDblRSFm++Gk/OnIFv444RUeqW+ + QEHg62oLRUyWFlk0xX3BmrvR19edGXdu0mO5dWa6N5/tzNwi98kF7QbNN/fuTDk+UYbS + fQJ3RuxbLeQbg8vSVXlY7xTdt3FDZLEOLqaZMriIxYTyEKhFqUzDUnnYuXblYXHw3T8J + 0NON8niGjYtoojPA2o7BY+maW1Px3XCKwZXIpvIElda3kRTKEwS+OrgOKajzZ1SauESZ + OyzDxw0B0TK4WAQLf/wkhQ+uicMLp8FF5NGOtDBwPWUyiXTDH/8okksTDoj3Rj/mn9I1 + t6acP45TDK5ENvmDbyUqxR+nMfnj+Z8xuCbbRfyNDq4GuX/m4GK25R/jCGcV7hFx0uEV + GSYaNQ4qtEkkwqQeBTzutxKWm4i48VmVCbTYyZcAF76yr6DK+qqDOGxeK1IdbelAjTYe + rKsAEpEAqawxp/EYOXjQbWMJWlf4LPHVwJeBLBgY4+GoXlfpyU6T3JY5ZnO0GY+GnnwO + Z+lIpAkqk6UBNiyNHOfSiA0oLgXTRrbkr9rV8q+yEG3/MkC+Bv+DpfhVKuAsDSBZ6qCE + mdRFAeeT9pmtsQC9q+RU9Nx+61qAEeygY4zUAyz0ZKdJrnHQAejDkG4y4NYDC842V21/ + Va5fNeFOKyHbbzdrC0vg1xmda4JyFscjOGe/77JAWQN/8aLdm49t/C5DbGXYEFQv4wSs + Z1ugQ2vYxsO0boZNN5v1VNQswRg2DpZhk6APm9qWD4TOuyrDxhEpw2ZGmu2wmU9jEFvf + h6TGCdxvwVeALFiGjder9ESnBCpsGjkxRzI+ZTwaNjLKvVBoRrI0tKZhaeQ4l8qwCRBE + GHPgawx35UXzA0xNL+KJgeAsLcPGEQmQyslSz+mc+DJsAsxhcwJfBoKlWICGMb2YZCo9 + 2WmSa/oWQGVpZDBsdCDqfL6jDpt5lXudns/tsLmJMP+p+38Mm/40bDhBen84Qv4rbqhc + 1IEAA4Nn3PENR0LyOu52PRQ/zmmAmKfOqwydnVlhCxmfH1o47zOOzAXUxT8diIfKTzqI + R2gC0vKyEDRQMc5Paa/pewqe65q7PnBSaeCk0kM8o4Jcgn0niFA7k+E/TLiqtTPcAuxK + HeVqO2vqal7Lg1EPuzMHgnAAiIkhI/+rMasHKpCIBPPbSshRnavculQKs9R3kPV7mPYy + ad5+tjdy8CTb09HjJCJKdZ/E3oUqr/5YJhNMClWHypjjFSKkFRaPkAN2brK1CIy84GGR + qwIlzupGhlH382XIMp8Kk51pnQrtiM44xsD5Olei2pnKRd1PcUHTzEGYCsFAnDwUzpBw + 1OGYtNem8BoLvIuUA77MVAv+BHLfZhJelN1dggDahlkIkmHyEgPhcMHM1gyB2s0i0fiO + D2qbyF/U5lJDY4zTIWOgZv2N2nRYOZ5R+4MEYuGKEUoV7mqDbWFG91jJKjMIe42r7VkU + Zugk7WBxbjWTzePqEC8EOTEjCMfNIVriiKi6M0jbUI5wg1xT+zt0/+Whnf1hexBqCuZn + fzoSGozO/lAM9oBcIE1/TW1Rce+mlhzs7JnzTvTb6bCdrMKZWB8wBysEM/9zMm3RMSzP + 0Brkn1mwZQaXDM7J2QrnBbrJ4PPXM0Tf2ZisXfUVMAd+3EzJzjmAIPsgcXOI+oHro6/n + b5VOL0tfVw7V2gFeb5oT5qKrdh0Zk+FG/QKLTuo7DN+SEdlgMMr5GmyzlfGUI2vjpXlX + xnrIhYMgigtUuTjcyMUzknULBrdZeJHRLYt5kYW3Dtfi+nqGqlwWzXtVLsQPwMWEnkqx + EE+tcnGoyuXR15ALbalmkQt+suBGLlE52F67zgzDrcgl6CxygW/JiJRLMCqk4FArF895 + H2uKZpl1WTnxoBmBw9CstBouLB/XVSFtHSvRUe1ZMUaWqcwRCizDw+jHfVWo6o4d2+Zo + blEmkDzYUCh06Aj8hZi6yngraJAdSps47uI9ZYbVcnRKlmbFexzvNwBMxYIWnSveMcUq + LZlTaeEQoRdK1Be8ZvDkUHEMBDtlOHA2u9LCMhbH1JOWhZPicIRNgqClZFTWZhb2caUl + u/f5XQdbzfKadbJ60I4K082OWWNEsDQrhzmbSZuuWMmGjf2jmqP9jAG/NGupd+Y7mS/o + N6eOdRq+5mD+DRxwEdKqR0usvbudPMzWqcfJyo2rSDPysv4TrjjWWnQ8cmiclrLtyGn6 + r/WCtpdOSyUXbBCAl9apwEIiAKvKBQZGyQkuaEqwWpULHIVCsQYd2U0uLPIkDp3tDy6g + ElgT49XO/AaPyeOIyKxTu86FhLvE8VQraa5t15zsP7mQWOIefnpVs5CC9oKQhyIdzHIB + EW7QTLNKUDP815Rmn+L4UcmwPecKyZYtELcZbAOjNjVONBW9YJwoxsE64btR1NTivel4 + kAwG7Qv5p2imZOguSX7WFlmm2eU6p0spvpjFnU0ySn1XvHQoIhMXXZRjULXwS15vKcPm + aOEgUlRvlWzAZMrCjBhMcZZy1UV8CAYvZrJVSLu/g/gfwuCYHWWdg0pXDgpqOCgwGbYg + iCDXWMoJafG+fq7M1pc2vyll9l75FmTgEKTIRGRykPSJg8Bpcr6wYvjtCBYDbmHg8Ka/ + tug+T2aJPAR3cNWx5CVC88iisbE5XDK0fYaRykCoWTt3RTDMazOwXefd5UJYVwFTB4OF + iIFtnKoEsyy7UJGXCL2kFVmQJmneHaroIbOYtgsWmVcQXUZWDSiqGdwHOuR+VGLYxodg + rP5spuPakh1mT2ISrsRkjpaMBzjahKE1o2MJ51ABG8XGARYGzeLyNlEk3Cy4whytWRwv + V6WaDOg8cLrI8WrGf6zGhfMhM2qM7yC6So5u2tlt2VKPBUlLlFCIxpHtzhqFALL/yGmx + bKpxJUO+lq59eePMzpHjCNDSLXUvrRqlJANViLl3HHhICGC20J6jmhlQGPSUahJdUL1g + TIOYlDVz8F/gjKTp9RijLEBapCofpBZwXQ5q9l9zgp5TNaeaprLx5ENFIPnQoPn6uiHd + SKub+2VoRfoQgjCF0ugVmCYzN9h81isZimd1LfRSmt7S/1l1yq5CcdY3O9Qlo4oLaWqm + l3bzpc1vqKEU7Ych7M2lBbpmZyVDRw3TyvNLGAUqxJamxIr0a0i39rTz8N70tJhqWuGM + p8JnXQxq+SwwmULczGf6kkEUqnJQtyiaL4X/ym9LKTRWykGELVjJZw7LMd6Ds0pT0yHO + +J+/3JRKaiyalHz25oKtS3SGEc/AwNHk5J3aL5BJKKFCbPBZlzUKn5WGzwTvzXO3b59Y + g9IjmAjW6IZytfQjR7HotNGzUOLG7QvmbMZryUBtmbNPXgsHoq6t19IpDs0FJJnR4bVk + hqgOryWzWks/u3+0BJ28FgJBCiBXWpbIaWjJrER94TwLeDZeCxMOi+nJa2Gigl6VCQ9M + W4WwDREELSWj0pJZZ6+l4FhWIHMi6cG9Fq7X2pIgItxrgJFaEYDTa6k56bVkLfWeXgvu + rq0ITQ42wdlrIZRg653qeeucM8OPbb2WAlcca62wzhFuth05HIXK/mu9oO2l9Sc9Am4X + 7r4gFC4sNGLrQcGzyUmvJWtVLtASdszZa0GGtiBVrwWW2WrXcEFqodUupZBw47U0tZLm + pbRdc7L/5ELS9nd5LVw5Q63TGhbU2NyAxWuROW32b9rVmNPMDQXC0Kpeiy5nn70WDrIV + r4W0aoadK6ixuQWmrVmaqRlm0rgH0nH9uyl6TstQcNdHeKr9hPIsb9rcRmTiAv2tze3c + ebyuJP4EVSoHWVecD+lq6MBfuCU6X3nyWvwOa/mMlV45qIvUZ6+Fi3VFTkpXDgpqOCgw + yc1mMoNzc6KwfpbZ7pzRlzbdlMKkqhxMMqrXIppbbrQcdO5oSmIb7HGcK4xoxIltePZa + Spa6D6+l5CWy2nE5eS12gvrstejczdlr4bz1yWtJWJaieyiZ03otpfNHS4asjay8QsyN + 15JZrdeSeQ3nMa5br0WnfW+8Fp3TOnst64Dlim+QXkvClZjMab2W0nkT6Tp5LezZ3Hkt + 4uTJa6kZTETmtWS11mvRNf2z16I5xx2LUg+H5MZrkWzPXkvmVK+FaaBWCx+lNp7WeiJQ + vZZEk/HweIQXr4WB6vN4471JCCevJTNMCMaHUk1DKXwUPW1w9lpWneI+eS0rDsmN16Ij + a2evpckJr+VULbyW2njyoSKQXkuD5qe9lhznXIatsx5xY82xJcAiMKc1veZxXjd4Keqp + Lisc7ayznp4luVk3eDyorE6k66w3AdVZj/PiNWxRmilTBL3U+YyXJ8p4u02XUtzOt/3g + XDeSjBKrMSJz3YDgdtZz7txrlR+N8mjdssgfSdoENRwUmBzUyxundWPBFK0c5BGOhoN6 + 7yLYnUsQcaDSC+nKQS4DtxwUmAwrzdQMuwkX3FCf7Zc2XTkoPOu6UcgoHDQig4NKtxwU + fOdpcAGx2R/JqVbXAm7Xjcxq143MC2TRGFyDNtqlBxYU7TqpCmvBKdo14Se10a6ANdfl + uhEl2qm2wfFeK9p1Y2EEaN3QEQjmRcXTMst4GYtgyaucZyuhXTf0eoKvGyzUvsIveJin + dYPXyDCcm3Uj4UpM5jTEcHPccQwBlR2SMl/ypsL9usHe/3ndiAzQy3Ujq0mFYr6cOGdy + s27w6NfNusFLMlo3TAYeQpJszbcpUZ4mJ+ZLPUBTlptcN6JxVomSkwjkfFmo++S6wQCw + dUPCLNEmhGD2f4l2lYzkQ1YzPczYli7pEO2CW5mz6VBJE+1CUXRd5xzt4h7Ted1gfz1z + nA+Is6kWVC+l8eQDV59i4Uo+NGi26waD9PYqOtEuJlMejEJjRl3bIcXIpF+bqgSOXH/S + +S/LcICHeDyb+30qTQFsIZsJa1VGq7Voo1adWIQdKaocMVbApmJnac3VkTj/eLa/atGg + U1sD0SDkqfs+ky+ZgipJeDJIJtWSrLilOuflFmHKPXLiNOwAO8kLB7uc5IXwa/AkEgu7 + MCJZv8ZXJZ77RJLdbq7201hWVJrmjDYlAj5l22V7chKd2pooCEI0PReaJPGbw3blnJue + ZbJ3GX5758nPqGk54czdzRNP2laMm+c3x2n/8asaenOs6IJSjS4IlPgnTRF289wA211S + iliB64IegAplCV2YOB4gXdCv6YISVRcsX01ERclezZkuKLHZPbtzNocPuMnaoJOaxXax + 6YJ+QheUfKT+snNQlaWMeKUakgWaxhPeiwGNlnLoKdTfHsCyAizJ4gnjI9WfzQNTf9sM + VickGpIFgr2elDJmKk1zrv4kIFnwKdveeVBOolNIFqJBSJDsNKX6dw/eErNXyfQSxmvq + f3viVA8vdC89vOAHtV+6q9Q/uqvUPX54QaetCmqfVP+CJA986Ymzf/imEizUa4o2FRLR + s4BPClSgqb8OuRX1t9dSLJsLsqH+es9PR4JSF9hsBpD6W1BVnZBodEEgYrWHAFVRaZpz + 9ScRsEZByfZ3WSiY6BRdEKJBSKq/0XRv0KX6cwDXZ38dxW3VH9C0mxhUUX8uUYX668KW + k2yP5Z3UnzNRRrJ+bcQr0ZAsELKyoqe1rFjmwE+n5gPybDq2Ea839QydQrLwlvrzk+pP + 0u1yzf4vqr/Oq/xG1b+g9uupv56n5BYvh87ec8mO3Q1Lc6mMsI2pvGcQ6sFgKRc4BehQ + HI9m8EGrg+Z2T/sNBxqLBiaMaW4h2QVvpbg0Rp+eqxOtGY61Ymxl0lxeksi2sbb8g/p5 + lPLvjpOdkq3Ilg6MEPZKk15pTYUeLRXSE5Xgj365qAcNnq78UYMiD1QX4kjoOLdgDdBh + TueP5u7kDyuJn0ws/JHrY/zhHUulnD+ebvjjGSK+NGGAte30ez/kcgIqOeWp+G5Xupw/ + BdnCHyeE/4PG4E8QWAfWozcq7SVQf0/wtaF1Y7P8Wrdgee+IN9DEWkPuk4PrBs1/fG2B + mbjyqTpKVcXB2nG1mbhqYSPNhg8ebwwqNtpiSGH1ae5rhhQzqQ0om2klMgIylC6yFGjj + JKoGIFPbs3cdGmAhwVaP3/hC/64gBa3aKAhbX/zm4IEIPMj7ZaYMHQ6wxMCxA+xV6wFt + nHAXyyZ2APaX5TdYNsf0nXqi9MGenFB4LsKo16+wFi+0thZEAY28UlU0LvYKXqZuf2OA + 0H8Mj0QrG8UyE69gK79JvdKfMTA4TvnqinOjb7/msCio/TMGxU+P7hMR2kJtOBOEuYHh + u2NLcJJJ2hqGKpa1XSLyo6y8/2Fl5KXJBTInNeqRZ1G7Co62z/yozuv3LUqNxQ9egR1X + hBw7kLXoagHtyJ4OVAVmtU69ZfHgKo8sLSwpUc8EVKk3MG4OZZMR3jsRG0HeQENvEsOz + Bo2mzucS63E3u8NUqPNAaAEtYtv0ErE6iU/yeu2svhOrpyIaYgXeEov7fyvZ2AktxLKo + WpEzxbXiZ1LMVKJI44libW1iwibF2ppQkTNzs+JnkD0T9bJ39HX0mylHrOLl9Au2aWbE + pSJOheEH2EqURexehbT8mU121bELI5Yh8+RU43WavawdP2dGTgR4WsFpiwzOOEdGtm41 + /i4yCbIZw0ovmXEik5klC8CdlKahgZsVY1viDSKt/GeRyC2DbJmnQ12+HHZxlnMcwpCr + Letl5VTe11+8RpArd2E4nKTxqlDyoYdzBLIq6DkRvVokUCcjNn0iTqtnNQvMd5aS/Mpp + EJ7j1LGpqMqJytqsHUOW9qhTO6OtIztoo17m0ZFt3dGyT95Owh3XMOilfA0calUQrM0C + KBj82sCthXnaryXcXvqr2AMW0nCR9dJoge3CcoHYbjC2FMI5IFwJt9PDtVPAlnBeBiuk + RTsFLreHjS2BQyUcBGuzAE92i+UUC+R5c3tutFmrdKlGshRX761Xm0BwQ7+c75fpuwvs + z3FxPS+0l3vrtw9Rdm+yyEsPUd5hRQTmUUiQXegD85HA63iD4JvfffzwN57KzIff//B/ + gQ+PogplbmRzdHJlYW0KZW5kb2JqCjk5IDAgb2JqCjgwMjgKZW5kb2JqCjk3IDAgb2Jq + Cjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgNCAwIFIgL1Jlc291cmNlcyAxMDAgMCBSIC9D + b250ZW50cyA5OCAwIFIgL01lZGlhQm94ClswIDAgNTc2IDczM10gPj4KZW5kb2JqCjEw + MCAwIG9iago8PCAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9J + bWFnZUkgXSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDE3IDAgUgovQ3MxIDggMCBSID4+IC9F + eHRHU3RhdGUgPDwgL0dzMiA1NSAwIFIgL0dzMyAxMTMgMCBSID4+IC9Gb250IDw8IC9G + MS4wIDE4IDAgUgo+PiAvWE9iamVjdCA8PCAvSW03IDQzIDAgUiAvSW05IDQ3IDAgUiAv + SW0yMiAxMDkgMCBSIC9JbTE5IDEwMyAwIFIgL0ltMjAgMTA1IDAgUgovSW0yMyAxMTEg + MCBSIC9JbTYgNDEgMCBSIC9JbTIxIDEwNyAwIFIgL0ltOCA0NSAwIFIgL0ltMTggMTAx + IDAgUiA+PiA+PgplbmRvYmoKMTAzIDAgb2JqCjw8IC9MZW5ndGggMTA0IDAgUiAvVHlw + ZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQwOCAvSGVpZ2h0IDEzMiAv + SW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2Vw + dHVhbCAvU01hc2sgMTE0IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQdviEBhwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg4B8Ydz4AAQplbmRzdHJlYW0KZW5kb2Jq + CjEwNCAwIG9iago3MjgKZW5kb2JqCjEwMSAwIG9iago8PCAvTGVuZ3RoIDEwMiAwIFIg + L1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNjYgL0hlaWdodCAz + MDggL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMjAgMCBSIC9JbnRlbnQgL1Bl + cmNlcHR1YWwgL1NNYXNrIDExNiAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVy + IC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20PBxEoDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAz8AAKVMAAQplbmRzdHJl + YW0KZW5kb2JqCjEwMiAwIG9iagoxNDk4CmVuZG9iagoxMTEgMCBvYmoKPDwgL0xlbmd0 + aCAxMTIgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjU0 + IC9IZWlnaHQgMTMyIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIwIDAgUiAv + SW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAxMTggMCBSIC9CaXRzUGVyQ29tcG9uZW50 + CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDwcR + KAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDgeWCI9wABCmVuZHN0cmVhbQplbmRv + YmoKMTEyIDAgb2JqCjQ2MQplbmRvYmoKMTA1IDAgb2JqCjw8IC9MZW5ndGggMTA2IDAg + UiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI0NCAvSGVpZ2h0 + IDExNiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAv + UGVyY2VwdHVhbCAvU01hc2sgMTIwIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QgQAAAADDoPlT3+AEhVBhwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDDwBgZLvwABCmVuZHN0cmVhbQplbmRvYmoKMTA2IDAgb2JqCjM5NAplbmRvYmoK + MTA3IDAgb2JqCjw8IC9MZW5ndGggMTA4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlw + ZSAvSW1hZ2UgL1dpZHRoIDI2NiAvSGVpZ2h0IDE5NCAvSW50ZXJwb2xhdGUKdHJ1ZSAv + Q29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgMTIyIDAg + UiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4Ae3QMQEAAADCoPVP7WkJiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPjAAFzaAAEKZW5kc3RyZWFtCmVu + ZG9iagoxMDggMCBvYmoKNjk5CmVuZG9iagoxMDkgMCBvYmoKPDwgL0xlbmd0aCAxMTAg + MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMTIyIC9IZWln + aHQgMjcwIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIwIDAgUiAvSW50ZW50 + IC9QZXJjZXB0dWFsIC9TTWFzayAxMjQgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0Zp + bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAAAMKg90/t7AERKAwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgIEPDIITAAEKZW5kc3RyZWFtCmVuZG9iagoxMTAgMCBvYmoK + NDU0CmVuZG9iagoxMTYgMCBvYmoKPDwgL0xlbmd0aCAxMTcgMCBSIC9UeXBlIC9YT2Jq + ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzY2IC9IZWlnaHQgMzA4IC9Db2xvclNw + YWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50 + IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7b13X1TZ8j187wRnzBmR + oOQcJEkWJEcRJEqOipIkKIggCEqWoAgYEBQFc574+36et/asqr3POd2ADjY6Vxv2H9A0 + 3U2fRfXaVatqV/3nP+trHYF1BNYRWEdgHYF1BNYRWEdgHYF1BNYRWEdgHYF1BNYRWEfg + W0fgv9r6Qbv532/9bX9n74+Q/UGuH/WXcjc95Du7qm/v7SowA+KffvpZrg3Kkj//9NNP + P/7IsK9DbvC/UCINnAnVDRt++eVXWht1Ft/x6y+/bNiARyiYr0P+uZALpAXQDPPGjZs2 + bd68ecuWLVu3bt3GCze24mfcu2nTRuDOmANysvJ1Wlkx4hJqMukNsOeNgBkYb9u2ffuO + nbR2ycU/7NixHdhvZdCB+S+wcoH4uomvBHDeEIk9GGkCets2oLxr9+49e/buNTHZp7tM + TPbu2bNn966dOwl0YE5WzoiTia9b+KcB14UaNr0FBg2gAbPJPtP9ZmZm5hYWlrrLwtzc + zGy/6b59QB2YA3KB+Drgn8aZfqtgDasG1FsJ6d179hLO5haWBw5aWVnb2Nhi2YlFN22s + raysDlhaWgD0ffsAOSNOJq4Avm7gywJPWDOD/PqrgHoXIW1mbml50Mra1tbewcHRydnZ + xcXV1dWNlquri4uzs7OTo4O9HaF+kCA3BeK7dsLEGXBwOBhlHe8leCtYw6xBINtBHyb7 + 9ptbHgDQdg6Ozs6ubu4enp6HvLy8vX2U5e3l5XXI09PDzc3F2cnBwc7WGmYOGzdhwLds + ZgNfx3sJ1v+hWBE7o8B6x05YNYz6oDUs2tnFzR0oe/v6Hfb3DwgMCgoODg6hFRwcFBQU + GODv7+fr4+0FzF0BORA/aGluRoDvIAMnQlnHWx9vadgbYNdbt8GsyaoBtYOTi5vHIS9f + P/+AoODQ0LDw8KORkZFRUdFiRUVFRkYcDQ8/EhoSFOh/2NeHIAfiDPj+feDw7Yy35BP9 + P7l2fxKETVhvYazNLA4Q1K7unl6+hwOCQo4A5aiY2Lj4hMSk5ORjKco6lpyUlJgQHxcT + HRkRHhYaHATIvTzdXZ0JcAuzfXtVvNfNW7EuNmwikU1btu2AXZtZHrSxd3Rx9/T28w8K + DTsaGR0bn5h0LCU1LT0jIys7Ozsn5yStnJzs7KzMjPQTaakpx5IS4oF5+JGQIH9f70Pu + Lk72tlaWZqbAG3yy8VdJJ8qfXLvfCeyffmYS2b6TsLaydXB2g1UD6vDImLjE5JS0ExlZ + Obl5BQVFRSWlpWVl5WKVlZaWFBcVFuTnnszOzADmSQlxQDw0yN/P29MNBg68Yd87tm0B + fQv2XrswiysXLMKGvXO3yX6Lg4T1IR+GOjYhKSUtI/tkXgFQLq84XXmmqqq6plZdNTXV + VWfPVJ6qKCstLizIzcnKSEtJio9hwH293F0E3nuIvsm8yRlcFm4E+VjYp3mJn5Z/5LJP + /37uVMDevHU7SMT8gI09sPb1Dw6LjElITk3POplfWFJWAZhras/VNzQ1nb/Q3NzcIhZu + XTjf1NhQX1dbXVV5ugKQ5+VkpR9PTgDgIQF+Xh6Et8V+E9AJvBOwyWLfWwNZXzVnZYse + bFyYE9g//4ztcdsOGLallZ0TsA4ICY+KTzqenpVbUAykq2rq6pvON7e0Xmprv9zR2dl5 + 5cqVrq4ufO3s7Ljc3t7WerH5QlNjfV1NVWVFaVFBbnb68aT46KOhgX5e7s4ONgfM9u3Z + qbKJCqC0Zk04V1RzUm+xjE/AZbCJsrcRYx+wcXDx9PEPCY+OP5aWeRJQnz5bc66hqfni + pfbLnVe6r17r6ent6+/vH+CFG/19vT0917q7rnRebmttaW5qqKs+e7qsuOBkZlpKQkxE + aKDvITcnOyvL/Xt3gU0U8maqAGlIQVcI56Sab6KF7ySbQzTXIDcKIwdX/oj9Eb7Izj2m + FjBsd6/DQbDrY2lZuUWlp87W1gPptsudXVd7evsHBoeuDw+PjI7prNHRkeHh60OD/X2E + eWf7pYsXmuprAXhRXnZ6SmLM0VB/H08XBxtLM5PdO0DevwjXm+iZcxRC0CVFV5PNt5Fs + TqI5oS4gZ2JRPxTfD03rv1OA/dPPDPbe/ZbWMGzfwCORcclpWXlF5ZXV55qaW9sJ6f7B + oeGRsbGb4+O3JiYnJ6embos1NYWfJm6N37wxNgrMB/p6rnZ1tLc2N52rrqwozgfeCdHh + QYe93JxsDzKb8F4JiuCkm5TOSdDdvoOEc0U2h3wLacvoBFzwCMDeCMsG2DYObl6Hg8Nj + klIzc4F1Tf35i+2d3T19A0PDYzfGb01O3r5z5+696en792dmZmZpzczcvz89PX3v7p07 + U5MT4zcBOSHe3dneeqGh9mxFSX72ieS4yNAAHw9nOytzSd4wVyyRpADSSFDsIuFcyOam + phBvId+Sam5kAi6D/Qtx9l4zS1tHNy//0Mj4lPSThWWVtQ0XWi93XesbHB69MT4BoO9N + 35+ZffBwbm7u0aPHtObpy6NHuOPhAwB/f/runduAfGzk+mDfta6OS82NwLs4LzM1Eebt + 6+lib2VhCvLexgwBht6sCbpC0WXd/MABiLeQb4VoTpr5TtYThb71PQsuOmDvt7R1cvcJ + OBKVmJqVX3q6uv5Ca0d3z8B1QD15++70fcL50eP5+YUnT7GeqYt+evJkYX7+8aO5hwQ5 + EB+/MXp9oLe7sw14nykrzDmRHHs05PAhVwdrkDdcb6QbQNKUDpKCLpRzKwjntiSb29vb + 2dnhFqnmBzQBl/UtCIqS9b8Lt5BdAeWL2KeEZQuwg8AiaTmF5WfrzgPr3sHhMYZ69sHc + o/l5wPzs+YsXL16+evXqtbZevXr5Evc+f/YUmD+em3swAxufHB8bHuq7Crzrq08V52Wk + xEeG+nu5OdoeMDcl8ZsW2AOCrpkQdO1JOIdszqo5dHOo5iSa27KAa04CLvSWbcjCKYLi + R4Ik/U3pf/QTACYngJcWRFDiUdkgbZ08fIPCY4+l5xafqm5oae/qGRy+cWvq7vTsw7nH + QPoZwfz69Zs3b9/xes9L3H779g3Qf/WSIQfiD2en796euDky1Nfd0dpUd6asIDs1MepI + gLc7yBvKCXJqyG5yloIFXSdnVzcP1s19fHxp+UC+9SLRnARce9IToW+RYs4CrlRcvkm8 + JdB6tTcUOXB5CNzsrTt2mZgdEGDHpWTklVbWNrV2XusfHrt1+97Mg7nHC0AaQDPM7z98 + +I3W7+riH3/78P79u3eE+asXL549XZgnC78zCbx7u9qb66sqinLSkmKYvCmSJ06mvJuV + jRB0Pb18fA8L3TwkJDQ0FLo5q+YQzUnAdYFkbmNlCQsnQRExkqpwfVt8Iixaqb2RpTcU + N9AS+xSrUAdsnWHZR+NSMvNLz5xrbu/qHRq7NXVv5uGjeYKakX4PnH///Y8//lxm/fHH + H78D9g8E+evXLwE4LHx2+s7EjeH+qx0XG2tOFeemJwNuPy8oVXZEyWBpZCmEoOsP5RyK + bkQkVPMYWtHRUaSaH9EVcO1g4WamoH1WuBRF8ZvBm6FWim8kuFx7Q1EEl+DQPrXbhGIa + Z08BdkFZVX3z5e7+4ZuTd2cewqyfM9TvGWiC+a+//sb6fzqLfv7rr7/olwQ5EIeNv3zx + 9Mk88L49PjrU09naVFtZkpuREhdBkQ6l1ByJpZGl8IbKCOkcynkcFF1d2TwJ+m1cTJQQ + cP18DnmQYk4GruBN+yWY8ZuAW0BNIYRInnNJiAwheI9S9ilT8wMc05BlZxWUVzW0dFwb + HB2/Pf3g0cLTF69ev31HUMOiCWcN5P+TS7uHQJeIA3BQyrMnjx/O3J28cb2vq+1CXWVp + fmZKfFQYtG/KY1J6k7IULOhCZjwO4TwTsvnJXCzo5tnQb0+kHYdmHkd6YnAACbgujnbW + B0Ao5NbQfvmNuIOENVk1RxCwZwrVOILg2huKIky4BGc/MjRWdo5uh/yCI+IF2Bc7e4bG + Ju7MzM0T1u/AHwy1grSC8pLvAnZGnEz8/bs3r188W3g0Oz01Ptzf3d58jvfKpJiII8GB + /v6U3oRRH42MiSdBF8p5fkFRMXTz8gqs8vIyUs0hmrOAm5wQG3X0SDD+TR6uTvaEN7mR + 30qCgtwPtUwBfi0DrVN7YyEWQoiDVjZ2ji4e3v4hiGnYslsJ7Ml7s4+egEPIrMmqJdRL + EF58ByOuAA68X714Ov/w/u3xEYK7vqocnjeEqsij4WFhYUi8RcclJENlzMkrLC6tOAVF + l3TzOiyI51DNIZqXk4B7Mis99VhibBRSFIdh4Iw3J4S+hQSFxJoIhIwazAy3FiUherU3 + iB6w7Gif8vAiZST+uAr2jcnpB4+fvgCHfBBYE4iLgf3YzyrgMPD3716/fDY/N3Pn1ujA + 1cstDdUVRbkQBpPi4+PikN+EUZOgW1RaUXm2uhbCOenmLRdptUA1b2pqOEeaOSRzCLgZ + qclIURwJIt53skOUtG8PSYrsnSxWzP89L1vBWlTfAGpRfEMlIUrtDVXf8EIogX3KD1J2 + TGJqNnE2WTaBDRZ5/Ums/z91LYWdACcDB94w7+cLDPfgtY6L2CtLC3KR3ElLTU1LS8/M + Ju0cgm4dBN2WVgjnJJtDNSfdnFTzS0LArTl7urwEzzuRkhQbGRYMvF0dOQGno5j/TzZL + 5mtOMEJB3Q6rhlGDmcnZoghC1t6g3oaXN3m52KeiIPllF1ZUNRBnC7Bfvnn32+/EIQSd + LqAqyro3dB9AtxW8Yd5vBdwTY+SanD9XdQqphjzaCSnzVg6o65suQDon5Zx1cyGbD7Bq + frX7Cgm4zRBwq06XF+fnZKQmxUWGB/t7U0LoIKJSNm84Jx/Nv31FM1ex/pUrnaj6BlCj + zImcLU9RexNAtTfKCoGXGxmNFE1GblFFdaNm2QLsFWLNuC8CnPGGef/24e1rWPfsXcBN + gU5jLagBeyB2w9OVVaSdt7Z3QNCFzDg0PEy6+Q1a+D46PDwkBFzoiQC85kwFPhiZaVAU + w6Dgujvbk+hC+bdPpju/GtxEIuyGUJXCzj0mpkido0zBmd1aGDHX3hyNiEDxjVhR0TGo + WziWmpFdUHK6BgEkb5DgbAL7D2HY+ijqGvSS2/oPJbzhEQJusu5Z8gQR6LQ2N9ZjB6Tt + kBJC0M6FoDsK5ZyEc1U2F6K5joDb3FhXdbq0EHiDT5AQ8oToclCRcJdJd341mMULA2w4 + IkicbwaH7DHZbw6zFmUK5NaGUQQRG0+1Nyi+EQslOKnwvpAOqzhTp4A9SxvkMmAvAXf5 + O3QgB9x/A25BJrP3JsdHBnu6O9qQwMSiFCeghqB7fWQM0vmUEM412ZxF89uTt6AnDg/2 + QzFva2mqr64sK8zNOJ4UczQEdOJsr59/+/cyO8QisiIEKS/C2hq+nfshn8OB7NbGJSi1 + N5lUfCMXFYjAJzhTU9/chmj9Brl+DPbviy17eWyXu1fDm+H+47f32CqfwPG+fWtseKAH + ybSODiSSr3BCSAi6kM6Fcg7dfJ4WZPM5Es1npknAvXUTgPddvdLeeh54lxbkQFJEmOQL + CZfSyyhWofwbSrH+LbhVwwaJ7N5L8aG9k6unF/yNsIhoFN8chw1nA9rCoqJiFN8oqwxu + 7tnqOuQNOq72DzPYT8gbWQL2/y2H60fuWwI3eSaIK+/fZR0WWWOsPkq9Se0c0hdkRhbO + nz17TuvZM1LNhYA7O33vzuStGyND/T1dl4E3+KQgG3QSEeLv5Y78G7PJvwo3gY26Mgh6 + stQJVQqe3oeDQo9Gx3HxTW4+Igil9ga0WU2rpqa27hx8gpZLpGWPjE9NU1Dz+u373/78 + k5wRFbaPwPqRu9WnsXPy15/sCCLOIZkKiYaxEWSNkUim1BvSFNDOWdCFcg7hXJXNoZoL + zZwF3Pv3kKIYuz7Q09V+sakOkiJEl4SoI2BvsImFKVxB7JX/lnWrLMIVIRZWto6uqFII + ouobhMWI1UrKTlVWVaP2ppFqb6j4BuRJXy+CPTuuXO0dGEa0jqDmyfNXAPsPfbA/x7DF + f0AFHNQt4H794unCY+jeIIbJCaxJTr0R1CToQiMQiu47HdlcV8ClZ9Ing/BuaaythGJO + Em6wHyeE9u9Frcq/BLdC2VykICpCEIsD6zhU32TnFSJWq2IPQNbeUPGNXFe6yM3tR5J3 + fAqaH0kj7Gj/pWPZH7HgT96tog3X+28Oc96+fvn86fyjh7NIGt+7R5nkGU5TsKCLsJUE + GV3dnH6AnCgE3Of4T83N3r87Bbz7r1FCSJi3SAiheILh3iSs++s6IwCbfRGqK9u7nypC + 3Lz8GOvUjJMFJQQ1ubVtHEFw7Q0V3/Rh4RsXiOBDPXlnepZ1KAE2eEQB7JOofuKX8vn4 + t3FUiSgeqiDJ3nMPsZBJBlMr2jlL56pyzuItqYlSwIW+BcUcAu4DxnuonxJCCEvzs1LB + JgHecAUtzRDoKNb9NeGWYHNdGYpTqdTJNyA0IpaqFAq5+uZ8C/taPbQxce3NqLIomLhJ + +XTQ59zjJ89IG6EQUgfsz2cR5T+gwi2CeKHCPqfND0vkOF++1gRdoZzjnyMWi+aKZP6O + BEX6aABvdiSvsHkXUkIoLNAHe+UBMxMJ91dVvDWwUVdmftAWhk0VIYnHM04Wlp6uouqb + y1eo+OY6IrUbsvYGBTdiIZggP3cGWHPiAJwNfXW1PCLxFnADPNK9f+c0A+V1xHopcm+L + BV35mdIwZ8mcBFxBRXMPZELosk5CyNfDmeEWjuDXhFuUOnERH+dgPHwCUBFyLD2ngKoU + mrj6hniZSkKmRO0Nim+UNYMaHKpcwIf6+YvXb6CwEtiaaSt2ath3PbhBC8zDlC+mLVFQ + ta52Lj8M2jdp5QCcnqzgTYo5JYQunQeb5GUciz2KWpV/B24NbK4rcz3kx0UKWfklp6rO + odLpyjXeAm9N3kFJiKy9QfGNuiiawMf6GSXE3kH1U5QoccmGgaw9i1+FMEMqjSH77QMh + To4H7YkEtRS+1G1Cw1rc4mfLDwfjTY77HUoIcYaCEkJxCtzwTKiq86tJVBJsra7MPzQi + 7lj6ySJUhMCuu3r6r4/evDV15x6KbyiCkLU3VHEjFkUTXLogsObUAS5QXrOGm2G39ABj + TvidksXAWaaTZZ5iMcR6PxPeChkBbySE4LhTQgiSOTIUBVkp8RFBTCbkmWzmivyvkqxk + P5uqb3aJujJv/9CohOPIm1fWNDS3XwHWqL4hqIkryIJl7Q3Kb+SSH2t2wPhTzbqfcrWG + Yaw9S76OwAuSNwGuLjXPqfw1/q48We9ODW9KCGG7hHnfGh3s6bzYUFVRkHU8Htbt4WRr + uX/PTtQs0wGIrwC3CjaK+FAQ4u4TGBadBKW6/Oy581QRwlij+uYRim+ei9obosvFCx9r + Kl4QH2uKIaVpKxdu+HcFMoYbX0R2Hgl63OA/pP4t5ZE6LpB6F27wC0jfBuZNcendSZbM + G6srCrIZbndHG0vTPTu2ktv9FXbKRWBTqVNMcnpuEZc6dfcNjY5P3oVZM9Si+EapveFP + s/pF/Vgvyj8ajrL2TAUyBe9F35Vfy+/a83Br0e/wzL8hKUIxZ9nlEUTFG9d7r7Q2Ae6s + lLjwIB83B2uLfbvhdkOh+vLGDdJGYRmVp+6XpU6xxzJyS0Sp0wAqQu7cf4CI5RmXKWAH + JPslA15usbkJKNSr1Lt2A39QX4xu6EGt9xv+Ybk/ofMoerbYLt+TeT9+MD11c7hPgTs2 + PNDbzcHK3GTX16FuFew9VDEpSp0yqNTpAomnY7dEdMjOBnu1zBT8GcanmD7KOkvDQefy + lrv6z75P5/U+ffNjr6zzLIKb6ITSy5TNR22QAnfmsZiwAC9X+4NmYqf80lzCPPLrpq07 + 9pha2ji5Lyl1ukeROLCmzLnc/xSq1LDVu6VzXbj5sav/zPv1X/SjP33qVbUn0dtluD+I + bD6KJwjuxqry/IzkmCP+h5xpp1So+wtG8IK0N23ZvmefhbWju09QOIr4KG1+kUqdYNjQ + 856pWIMoGFjtjf/jrU9d/2f87h//Dj3gn15PexEBN4u4L+EK3r/DcDdUlealJ0WF+nk6 + 2VhK6v6ifgnxCHy/7bv2mVs5uHkHhscKsDm5OHGXS50QsGjxiuJpaO/8k7f+CYCV/v6T + f4R/uZJX0l6FzZuEAFE8Qdbd23mx/kxpblpCZJCvRt1fkksorOEd0sTMyt7VKyAshsFG + 2rz3OqdgFkSpkxIbKvGK9rY/cWsl17/ix3zi74hfreSVdF9EmDeKJ7hW5f7tm9d7OprP + VRbDDwwP9HK1O2gGr3sThZRfyulWSHvnHrgjzof8j8QkZ+SXVTHYN6e41OkVyXkycb4E + 65Vc4Tf2GA1wATf2yrevQCbTUzeGei43154qzEoBdUMxIS6hGOeLOd2CR7bQDmnr7Hk4 + NCopPa+MSp16hwE2ZQWohk8xbO2N8q1vDMYVvh2di1DhfvPqGTyTybHBq+1NNdgpk6JC + fN3JDaQI/os53WTaxCNM2u6+wZGJabmlZ+svgkZu3gbY2B7B2MsY9gqv7Bt9mAq4Bjfq + DB/cmxzt74ZjAuqOP0pccgB+CcU4X4hLyLTh/CFgP2jv5h10ND41p7iyvqWzh8CeA9g6 + dWXqW6Qb3yiMK31b6rUocL978/Lp49m7t4b7sFNWFmUzlzjZWOyjGOcLGbfkke3MI4f8 + w2JTsotO1zVfRhEf0cgzmVvUkTzE21zpRX2zj1PRprAUjjc8E4Q5j2bujF/vuXyhtqIg + IykymPwSxDhfbKP8Lx3fZR6xdvTwC41OziioqDnffnVwbFKATVlzPTHvu7dqaQDLwv0E + O+XYYHdbE3NJeIAXb5RfyrjZtMEjewSPRCScyC2tarrUPQCwHxCNGC3YhLkCuLTuD+9e + PZ9/eG9ipP8KcUnWsehQ2ihV4151QAnTpi1y9z74I8Qjx3OKz9S3XukfuXV3dv4jFZPf + LDl8/hvThZvLDIm6BZfUlOedSMBG6UJeIBn36vdJxbT3mlk5uPuGRCVnFpyqbe7oGR6/ + 85Eivs+/om/6GTpwk0QF6n4yd39qbKC7teFMMTbKUD8PYdxwS1Yd4QjT5i3SxSvwaEJa + bll1U/tV7JD356iID262Pmd/09AZ8uY0uOVO+Rxu4C1E8M3YKNMTI4K+nHEL096208Tc + 2tHz8JGYlGzika7+UeyQC8+Xq5g05IK+7efow/3h7Uv4JbdvDl1tazxbkqMaN3zuDatN + K6imfcDO1TsoMgn+iOARkPazV28/LKqY/LZhM/TdSbhppxRcggh+cqSvs6WOjTuQ3ZJd + 21gtWdU+SdrfJjZtJ0/aIk/CH2kDj9yeQeU1uyPkZyv/fUMv51t/ngY3vG74Jc+wUZJx + N1WVEHPDLYE4tWPV+6TwtbdDjbJz8wmGaReePtfS2T8ieYQc7TUAto4fCOqGHIiNchoB + PDF3/omE8IBDzjYWJju3bvxldVTy3x9g2luJtcm041LJ1W6/dh3+yGPiEbFDGrtla163 + qKH9DcY9L4y7EW7JsahgHze7A6bCCVyF7kp75K+bt+82BWuTaWcWVtZf7OpHXAN/BDyi + W1b2vasin2QzxaDwQQaXCOOeAHM315bnpsWFHfZ0RISzYwu53IYTN+2RG0mOsnKUpl19 + vh2u9t0H8/BH9MvcP/luv/9fqtTNGyUx9+0bg92t9ZWFGUkRtE9a7INYsiqvhE2bw0gX + dkhg2q1dA2NwtRFEvgePaKT9/eP5D1egwk3M/frFwkP43D2Xz1eVwgkM8XWzl1RieIDD + 7h+SCAgjPfyOsEOyxLSVz9g/vNfv/9cq2jBunMp8+ggBZf+VltqKvLT4MH+iEumVGEol + QBvu3659FrbOXoERiRkFp88Ra7Np8xapmbZRszabimJWxNyI359jnxwfunqpobJIUInw + SjYYTtxij9yzH0kE31CEkSVwSHquq6xNEbt8D9+/6a7gCsS1Uojz+wd2AieGe4lKslOi + g31c7SyRVNhkuA/Ie+SWnXvZ/QuPP5FfUQtfmxySpy/JtNcY2IrXDeOGOKVDJblpsUf8 + EODs34N0sMHKFDvbIBJLWwrak7OKzjQijISvzQ6Jrve3AsMwgofoMDf2SaKSm0PklRSk + x4f7ezqRD7gKtCWRmB10cPcLjT2eW1ZzoaN3ZIJ9bT3TNn7SFraiTyXCK2lvOluUyT4g + ETd53AbGNz/8uOHXLRRHOh8KCE9ILzhd39o9CIUEYSR8bY21jcBsV3YJqnGDSqAEsjTV + caG6lMJJb1fkFHZt3WjoNql4JEwkUceyi8/KPXLhxWv42muNtfkfwnjTPknE/XhG+IDl + ucehTAmPm+Ibg1xA0DaidngkTCSpueW1zZ2ka/Meyael5f96ZYZhHI8ScMMrkcSNcPLc + qfy0OLlNbtsMp8QgtIm2VY9EJRLskc8QtFMYKcA2DhRXehXSuP8irWT+gfS4C07QNknx + DTslhqHNGgk8Ehcv8kiYSIZv3X24AD1KI5KVvk1jeRzBTT4gPG65TTaeKcqA6urpZL0K + p0TQNuQ/EdqcLKtp7uyTRII9cm2athRfKZx8+xIi9wSkkqaqYnJKoHGb7yWnxCClRNI2 + aSSHw+LT8ivOXSSPBMI2EYmyRxqLya74OgSV0DYpnJLejvNVJVlJkUEkA7ILaBjaCm3D + /zuamFFU2dB2bYiidj2PZMXv0lgeqKFN0eTkKDRuuIDJQNtFom2Qww1vG9K2QtvQSM5f + 7h3m0ObtB5VIjAXDlV/HIrTHkC6rIYc7yJuKeHZuNTC8QSJh0zZB2yExKSfLyP8bm7z/ + 6ClCG9UjWfm7NJpHEtzS4WbRVaItwhvkJg0KJmmTVLztI3FpeRXnOJCU/p+kbaOB8DMu + ZCnatVowaTjaiG0okYAcWXh8ekFlwyVSpFTa5k/UZ7xJY3koX/eyti2YxFDbptjGxNyG + EglJmUUUtg/fuvcQ2d+1TNtCdlXR5jIH4u3I1fH2f3/8WXeTLK2+0NGHMhIK29cybbNp + K7xNRSV9nSRLrdYnIZeEtG1U7YREK5vklNwk/16TUTuRoQ7aS/xtKbka4m/ruCShMam5 + FXUXuwYQ25BIQmH7GqVtAfb/UfbmLRVMIZYkgTsjMQL1UtbmBqcTyCXZRgIgsu1xafmn + oG0P3eS0DUQSGbYby8638uuQpq3oJHfHr19ra0RJSYJI3nDW3TDbJgdQuiQn4JKISBKS + 1FreJFUikYrrOKXKTkMDDDtMNfMGa4AkbpMDiPq/8ISMojOqS8KR5NokEoVH2CV5/ezx + zO0bA10X6yryUmNDOQ28m5PuBiiujDbS7VIlqWq63MNxu3BJ1jjaVFHy6ukcZBIK3MtO + pkSjWkqUOBiUuyEFUHG3I5OyoJIgAcwOIAuAaxltrpmnghKuTWunGm7hAJJMYlheUqJN + VVJIJWTD3ZbiNqkk7JKsfGsxlkfqEolIlIliqcKMxKMBh5zgkhiacye0hQJIpSTZpUgl + aJrUmkRbYk0l3HrVO6BtqinWNkkDKhzUUNLVOxj59lJWAPWCG2Ox2BVehwI2F8xzBTcO + qVJlWrVekathp/g0tH2Co1JyoLdeQbklSklE4gZ/e4Xv0kgepgs2mfZrcTqhm6ouM2Xm + hmnboLMgumhHE9otaxptHbDpcIIoupQnb1BRLDLuhh9OWIR2+dpGWxdscYhPFBRfY4+E + /T9Uy3NsY1CebB1tHQpUweYtUj1UhmL5i+dOFUAkkSdBDC4oXoT22mYSFW3yR8SBSa6V + J9MuPXkc9cTskeCUk4HnbjS04ZPwLgkPcK3ukgrafKKMGwvQYeBRMu3T1BJGZBJkGwcD + 4vb/AG3V3yYPkP3tteoBSrQBtpjNxU0zbg4J006No1M31ujlZfjpVBFL4sQNl6UJtEeV + jPtai25UtJUmDqhJo9OSLdK0cQxE7pEG+X//+Y9e5A6dhBJlXJamRu5ryOHW0KYeumjl + JXs4EGuzaSNqR5s6w7sKCLT3KkngYqrdoWMJT18qOsmaQ5tZmzp5PV94OM2mXcesjXPX + 9tylztA9EkwvFFczaydRlyZT7jhw/ZZKLum/reMiGflNYdvskKDlpS5roycgIhv0FBBN + 6gxudURoq7mb9MLKxjY0E+ByYjV3Y+QYa5enoq10OkLDy/4u2cYLyjb3y1hVMxhRKqVU + uOLMzaVuPk7GxdsiL6m9HSO/xWgLIkErbjQ6QgPGng50BFzUxcvAPZKYhI4B71aOgcjC + NCULvMZy7rpoK0SCPkc44n48Fu4f75Gra7+IehI6dI16El8UXeLQjZSlnqoi4Nphbom2 + 2gmGWqZ14aCk1g9QdHL9wbAjN7Dt/6oFxd5BFN5otVJrr8RVQVs2lUKf4pF+NJWCRILW + oopHQj28VoE2JyYtZB2gPHVDdYBrr3xbD23Zn66DuhylJyJq5y7F2zdvXE0LbnK4N+9A + HxgucYBTslyN6xrxAlW0uYPXPHUpRttctLqkboAC7VX2hAbaXL/NrUmofluUpqnZG1kJ + uCbwlmiT/IcG80B7nNEWto0xQ6KP66qGOgmnBB2leJv82JGytYk2OYDU6ZLby3tAkuLg + ZjUTy/TO3STJ45Lj9xYdl1yLaD9QJKkizE4I47E3q55YRprrFhA39abTegosOQq8FuDW + eFuqJAgl0TT3LM1hiaCJZVYwbjmxzJCaS3IBReyuxDdr+Zi7irZsUUxdXK+1U3f5TIzQ + 8vdywRyWVc721G3hQCUlWpsjHJjUjifQOzHywF2e/kAqQeitNDoB7c5b62HcJxIjQ/xo + DguGTaIFt+HULXoB0skbyIAJaOHF3emogSu1J1FPA68BuBXb5pwkBFf0374xdA1Tb04X + YcgQRqkqwyZXAbfSegddztF6J1W03kGdK++TbNyKF2jsxi3RRiUJUwnNBZnAGJZLNGwy + M0VOP8SwSWVAnAG1aUTc3J9ObSuFAKd76AZauKrGvUbgVtBmKnn7ioybB5a1NlSV5Wfw + 9EPeKVcz2xPETWevRcfc8HgEOCgG7EMCB8YNaYpbHa0NuBltUUuCaJKGTT6YnsQErY4W + UHdeRhJGaHm5YNjkqmZ76rYDxLkydJVvJOMm5uYOdfod/I2YTnTQpnllNPQGk2vHBkHd + 5zCO7wSmHx6mGe9iCraBc4IVKoEyRfsk9QNs7uhFQxjRM1e/HTS9I2P1TRS05YghnsY3 + e2diFAPLMI6v5GQaOyaYgo0gx+AZWkQlCHCojas797osPtPQynNuxHyKJTOFjBVvXbT/ + AJe8odGeM5g6PnC1/UJdZXFOGjsmDkoEb9iwSaYSbr+I49cw7rzymgvUWpQ2ymWnChmp + fQu0Qdxk3DwGW4W7G0EO+4E0bJLnBNPMcYOywXKfFKNuQqOPZRVVoo9/H7iE5wotM8SJ + 35fREYqG9mK4R/q7287X0NBxOSfYlPwSw/IKorW8HOMUALcEjfyxUerMzJLDblTXxKjR + JuNW4SY/EGQCuOF2Lxk2aZBx/wCXW/SWd3DDXEmav0Lz4IbEPDjdSYe6eBurbYsR8SAT + OSf4CeAeH0YIz/oUDZt0oQo1gwffgEqQwQFzwy3xxIDaRbMOPzLF03jRVqwbcMMRfC7g + 7kU9oBg2ifEJqylR40lOG+GWYAKLKzbK+LSTJWfEHE9lQq0YmopePJp1Gx3aSi9o4kmN + TeB3Y2KZIgfmp1NlscxRGjjaUzFuEwwWx0y4yESMOzwrBgLTjFoxEHjxjFrjQ1sXbh3X + hAQqlE0NdF9qPEu1JUekcVNtiSE6tzRuMTcV85cxyjO/HMOur/QNj38UbiNHW5g3ph/S + UCceEEcztLjcIcgLnYrl4BtDqh3YuMUsTzsXL38e5F5R3XSpS4Fbl7ulp2SEaNMlyauT + dEJ18zQgjmdo6R8JobNlhh0Jwbzrn3neNXGJm3dgeFxKdmFFDeDux4TJ+2IGM1qfk9yt + MLfxo81sQrkFom4+E9KiHXcS8xMMohLorpgLt3HL9t37LKwd3X2DIuJTs4tO1Z5v68b0 + 1Dszc0+ev3qrhDnGbdtLrVs5pTrOh0IwII5aOVAtN7UqNuwoH4a503zxHTTy2skDXndC + GgaM112gMcwT9xDDQ37VH3xopLbNl6XSCT7KSOXoDYhTB98YfkyVjZu4ZCfcQFtn7JRR + SSdyyQ/s0EaMs3GrVLIm0AaZcHcB/SPYyslJdM4wsOs5cwnBbWJ20M7lEIKc5Iy8sqoG + dkzkcGC9aXzGjLbOXgm42bjpyJPSXiA6RBnHZ+jgG2yUPzF179pHO6VXQHhsShZGqOqM + dAdz8z4pPmdGjTYuTrIJcQmYWx18w60z5EHVVQy+Ybh/3bRlh7ZTIqasREzZS5Ovwdxv + 9ObxGTvaGtzUhlsOvqEZWrJ3GvWYX8UoFuISUPdWUDeGunv6U5ADfWrx6GuFuI0ebQk3 + rhcD4nRaHhVrXc+pV7Eh8Q3KpoQbSPKUCfI4bj5BUjCRs6/n4QQSca81tLFRUjsv7nlJ + Xc9r0BdGnVhmWIMpAhto67iBzocopMwqOl3XDCqhzMKiobVrxbZlH25uVTc2cAUTsHUH + 3xg6ikUaN4eUFON4+AkqqW1G1zqRNqNtUh3uZPxoKzsleyXaxDIefIMOUzwfblVoU0aY + vUAWA6N4sPsFgfa8VvDA2/UaQvv//UV9eHCkD93T2hrkfLjVDb5RqWQx2qLeQWWStcPb + im1T+9wPb5XBN008+EZnGh+RsCFLEDehbS6Y5Fhm4ek6ZIRHJu5xdcna2iXp08sfY25W + rA2+oWl8q2tWzP8cQpuYBB435czCYlE5RROZebanKFTTVMC1wCQSbhD34sE36Hpkg44O + ho4ZIrilEqiTMkP6vQmzPblOTY1u1kYsKa2JLpbRRkdXajKP2YdyzNAq2p4LsJVN0txK + cUlOoUyNRrtTaYmeS2K0BWqLPrO6aOuNGVrVUKdFpu3iFRgen3qyBOlJJpKHC88hueoE + N2sQbRrqJMYM6Q5QMCQ1KcFWvW1PxduG/0dFao8WyyTraK9mYBmxNiUUtu3ca4ZZ495I + 33DRlBK3UySpE9sYa+nlIh4RTonC21+QSdQtEtkbCtvhkFDYTqwt5e3f9KqLl7wv47xD + l7e/3C6peH+Qt+Fr+yJ3IwvUBmm0+wJJUkLdNvIs8CKbIbCFT6I/imWVHiCZNhKTKo8k + gEd4i+TIRqe0mP8+vix6W0b6I18tMcmisZ6ri25Y3EbSnbLACo9QYTFnErBF4giOrHRd + i2hz5K709Mfgm4SjOiNryXn+zCWL09SYnRIJtfBHhm7evs9nFOD9aXEkIW6kxqx/WcK0 + Fw++SV/lOGZ1i9x/wN4V/kjCidwyRJHdTNqUR9DPt68RrBWZBBqgNvwag2/StME3Bimu + St2lIpAcx9Gy+tYr/aMkR8H5W1S5s8bQVge736DB7pigsMrBN1wwv2UnHXVCoxLyR2TI + rn/4RuHstUEjiuLK7jblbqbQi7ultjw3JSaUBt+Y7tq2yZCCEnZISPujLVIeBuHsryRt + HHjXOzapT27G+5OwLs5LSlFq8cTaDQaUpoFINmzcAu+PT/HxQaf6i+CRSZwIlvqITr3l + WrFsjbYpmaDNdRc5dykBfj7a0rTRFxBjhpRDfDI/puV+lbBmzZC2ijYPrFhAogyz+PTq + SVB2+fmilDDtxQdUB8em7s9BjKIdUtey145pc+aGS9Nk9Q42yXokgXVcEoPQpj4OO8kh + 0Tt8fe/hPHhkEdjGy9JLrkzxtnk63CPeJJuxSR6nTRLTQQycxcengbdjqKc9HBJuLMBd + M27P4DAwV+zAtBV3ZMlbMuI7FLRB25yVHOntOF9Fg8Zx0MkW5fIGTYdjIlncNIO6nsum + GcQjaxhsUeNK9Q00QhUZ96SIwENKVvLzC9O4BSO7fwgjI5Nx8hqmPYjxwNwQhuYDq2gb + sSEvvTTFtKno8tnj2dsc25zKP6HE7TsM2iSZSMQe6XdEa3ZETQG5k5dm2kvfkRHfIz7O + XFCMc0588IaGeurQ9mYDyrdVIuE9MlFp5DW1TCMvI8Z26aVJ01aL5dH6EpOvi7OQlPR2 + AW3TUM/PP5oAtEVnKTtXTOJbrknd2mVtWeAqDoKQ/3e6IJ0nXytDPT+7nli3ASMRSTlN + meQ5LHBI9HrULf3/G/E9qmmTR6IQCfw/ZRazmHz92Y3TiLYRtZvrNReloe48ZVKt115D + QQ3ZkMraOHXz+gUHkkwk8P+Chf9n2HQ4vca5ybJx7q0ljXPXFNoCa+VE2aunNGZcIRJM + B3amJg7oB/P5/p+YVLHLlGcnRKd8tCn0GkVbGeo5gdDmAjwSSSRm4mzqZ9M2Jgz9snkb + Akk0uzwSKxuejyGOVIhE/J+NmKGXuTSFR2hkhZhXy6XbZ4rYI+FAkkZoGSJJUTN/5BEc + 0RM6Pr2gsv7SVZ558/z1e4ps5IdqmbdkxHepaFOjeeyR99EdurMFMxQ4tBFjxsn/++xN + klwS3iRJkUrMKJLTs6iPqzrPCX/ciKFdemkq2GzaNGho/Dr2yKqSHE7b2PMhEGqa9pm5 + dhSksUtiYgFpOygyCS2h1clwPKtM2PbSN2TE98hPM+2RwrQf8egbHuqpO6/WACIhtNHC + C4kEnumewxM99WdMrjHDls4fOyTE2jhwc4/Gg2Cm+8lUnXm16C362UTCA4bEOCcfqK0n + EduIKeNrcZyT+MAqPKKaNpTtAcSRlYU0052dbYPn1YrhWaYHoG2HxhzP5RksY9D/4JKo + m6QR08bSS5NEonRvEHOGaPJNGSYf0sAyK/O9QiP5fNOGu41RZbsl2qm5Fedaobau0cFw + gF4jbepMQg4JJW0osqksykyOwggtZV6tYb0XBdoHUUiC3vJiDB/F7ewASmF7qQEY7T0a + 2tT1XJ18SEOdxFBPdRafAaxNQw/Ztim4IbRP1bd2Dy1C22ihXebCdHjkT0wHfgFfW7I2 + Ipso6nEk3T9D9sh1tPURV8EmHkFbEmWC1vlqYu1wDBmiOhLDRzHr87ZgEpW3BZPovyEj + /kmhEXa1eVYFNUtDPRrNqwVrS9NGisyQOJJCIfZJlF1S+CSUk4TeqgbuRoyv3qXpgi23 + SDQCFL3SMNFJGcUsTdsAj4RiyQ0bF41PHVBFqTU1rFYHbMEj6NuAblIjapNLmukJ1ja4 + 7SJsm8enUlEa8mTRKTlllLlBlRRPF1JEKT0LMNofFLRRYsD+iNgioWujgWuJznDgbYb2 + lWe0ZeTuAp0keS0Pq5VoE9hQo95jyCTxCA2ZXDRA1WDWpmOS+sNqq5raezDLCcc/dIbV + rgWpRDNtgE0Tb54vYDbwKI0q48bboX4ejlbI2QiHxCDWFmjTsFqRlszAsNq2a0PjmL/C + M93Xjr6tgQ3Slv4ITSq72tZURVskNZWn1sRoS2eoQ0JMImYeonTb43BYXFo+hTccunPu + Rq3cMVq2lhemA7Y2hY94RBufqgyr/cWwaSDAGksZVitlKS5wGJuU2yRS7sr7MGq8lYvk + HVKQNoTWCR55WFmcnRILOcrZhhoToxzNsDBSQVu4gELg5nSCJO43OLanGrdRZ290wVZI + m+KawW7BIxie+kWmXlN4w9skTZgMpFSZnDJOutQ73XmeRmzbi8CmFAJmU2BYAvsjYgyz + OybVYotcpWlT8kamgUHc8Wn5FXUtlE8QVKJbK2WkcCtQ82wKckcIbOomPz6sDAIBjxzC + 5NR9vEX+/INB6p8gEtomUeIgYveQmJScUmQme4bV8h2tWMo43cBlwH7z8inGuYO0u2jI + zUn4I+ARDMzas5MmUxika0usySkhzZUykzjiFJEEKmGvhNI3a2FYrYq2iGp4KDDGUvAU + kDYMcMrD0JUQX+YR2iLh/a3GtCVxw+NGRQlRSR55JTTPEwEOjjhp3S3pfRkdmywFGzHk + PMKaMTTuPy8GXvNcSeIRgwcdqqYt0GYqsXNDIvhYdvHZRvRJ47pLxbhVN9C44FahVjib + xnjSbLLpKeyQHc11GLyHicABNCwL465p8N5qvD/GXBRwq0fK0mmeJ4wbTWBg3HBLdI+C + GJd1a2irNCIHAt+83tPZUs9DJY8G+VBcw/7IqnmEiPtHvXmeORjqLowbB28WnykzHrg1 + qBXLprlk2vTli3KSe7Cvh6M1Zl1v37xxtVskGzcfvOF5nmhMF5GYjtYkzNzqeUldv8Ro + 4NbQhmFDYxUz9zAv9T58vz7M3Ksqww4phgHzdNpV+yOCveXJGzrmjj7QmMFXchYDJo38 + LLAe2HCzSfbDcNp5BezGKsyTTKbxnS62B+D8kaq9Wn9EEjcFOHyGDyI3jBvMLftA0/lU + Yzx6rYe1MrzzNYONIe59Xa1N1RUFmTzEnTxtQdqrdLWFacMrQYDDHbwU44bPTT0cJphL + FndL+/65RMMa+V5OHsAZ4RHuD6cZbExKpcG0seGB3tghzUmM+jKkTYiDSmDc23dTCy8e + MMndcolL0JyOpjgtbir1/QKuAzRuSqzF3E6E6w/g+hFnC7DjwuGOiB2SPO0vwiOMNsaU + SeOWvXewUaKn6E2aUaYD9/fvd+uizVhje+QB16+eP3k0e2/yxvVeBrsw+zgCdl93Rxva + IYWnvbogUiESxbiJuZXG28QlGHzNAxOWhftbN29dWJe9TVgzY/NA2hdP5+dm7iKC7Ols + bQSNAOwI+H5OtpYU1iBi/0KkLaiEZvBh1A16uHLPNOrhSu2JRzANRIyEA5nodTsyBO1l + r1r/zi8jDei/5nI/KVgTibx78+r508cP79+5NTp4reNiQxU4W4AN4W//XpJZvyTYqnHL + vqLUxyu/vBot6gawUyoT+BY1l6Jr+Bxslrvmpfd9zit+/LFLX1fvHgE13L4/fsds1DcQ + WBfmZqenMNr66uWW+qpybJBk2Z7O8P0YbAprvhSPKMxNk5hFr0sMvs5EjCOGlH0K7s/A + W+96P/rDxxH8jN8sfnVGV/fL33//BQ+bscaY5WdPyLAnx673dbc3nztTmp+ZEgfOVsH+ + gjukJG92S2Q/aAy+Do87zi2K26+hAaOAG343uSY6/TPERa0IhcXX//GfV/Ry//Ag7dX1 + If6b1l8EtIAaHPL65XMw9uy9qfHRwZ7OS021laV5Gcdiw4N8PciyTYTv96XcEWWn1OlR + zGOz0H4b4zzPNV++NjQ2eXf2EU1PpV6ugrw132SFbKJdv7ili4L+7/4ByBX8Wns9+VdU + hAnlP//4Azb9228f3r97+/rVi2eE9fSdiRvEIhcba04V56Ynx+iA/SV9PwVs1qbksFpL + G0xPxZzxtNwShhvTU+/Ooin0yzcYn7p40Li4tE9joF0+3dIFWr2tPeTTL7WS3yqvxS8u + OIMh/p1ABswf3r9/9+7tG0D94ukTxnpyfGSw50pbc31VRWFOWlJMWKCPu5Ow7C0bEbCv + Ll2jYazdEsNuaPA1j+AT01NLz8C6rw6O0mxgmusu2IR9E13zxvV9HAbl4vm7Aq/8SNM3 + 5S75uI+/0Ep/I1+IXhdYC9JgkN/RegucX79+9fLFc0D9iOx6cnx0qK/7ciuxSH5WakLU + EX9vN0dbS7O9u7Z9JbCFcfPcLLTyp+mpodFJ6bmlsO72q/0jcq77K2HeS+lkZWgzsEyd + /JnmL3/9pSCu/FtWiuryj1NehcEWWyGxBhkzQH718uWLFy+eP3v6dAFQP5ghrMeu91/r + vHQBhl2Um5ESHxnq7+XmYMOunwK2gXVomi0vvSUaFYuJh/auXv5HCO4SGsXc3T98c2p6 + 9tHCM2HeRCdsk8ql0fdPXzweII2NrQ3cyeuPPwA5AU6/lK+2/Aut9F75Ing5NmywBwga + tAGUCeSnTxYW5ucfP5p7OAuopyZujg71X7vS3tIIwy7IBouEB/kdcnWwtjQl10/SyFcA + G2qJHFa7WwyrxWxghrv2/KWu3utjk8wmz1+9fgfnZFm8lwIuL52/MdhkbGKTAnu+f/8B + PIrXIrw1uFeK6/KPU9EmEsGfEpshgH4iUJ57+GB2dub+9D1APT42zFhfbKo7y4YNFgmE + 52dvZWEKjZWUKOLsrwE2cYkcMInRWTwbGNZ94mTx6dqm1s6ewVGwCcwb7P1G4i0gUkxS + XKaEQBdmfawRT/Au9fbNmzdv377DSwm8CW7lWcvjuKJ75UuQaQNsxC7S8WBrJpSn7929 + c2dqcmL8JqAe6O3ubG9pOld1qiQfhh0bEeLvhf3xoPm+rw62Qt001h0TJjGKmcgkLaeo + orqh5fLV/uEbk3fuP3z8BHQi8V6OUBTEdL+T3ZIkgTAZtgYnFx9s4s+Xr16/efsOFs6f + FTxGPmlFuC77ID2wZaD4DLvhw1myZqA8OXFr/OaNsdHh60P9vVe7Ll9qBtanSwty0lPi + o8KCfMEiNgfM9u3eAW3ka1o2iPy/RN3YKeGYmAq4Q6MSUrMLys/WN7d19Q6Njk/dm52b + V/Bm93s5A9dFWnh8kkM/ENTwvJhBQaLPnr949Rp4L4J7WSD/+U7tz/L/llhEBC+0G05N + Auax0ZHh4aGhwf7+3mvdVy63XbzQUFt1qrTgZMbxxJijIf7eHmAR7I+7tguwEa5/HRrh + XRNcwnBvE3BjqwyNjE/JzC+tBJt0kHlP3JkWeBNKbJQU8DDrqqapXbUO1DJMfkWe1wK2 + qUdzc48ezy88fcZ4K468fOo/I7vMI7Q/q4BNUfnC44cz927D8xgdHhoc6O/t6bna3X2l + 83J7a8v5xrrqyooSYJ0KEgkFY8PxEyyyZROEqC8dQS5xTBjuX2h+KqzbysH1kF9wRNyx + jNyiiqr65vYrPYMjNycF3k9fvCRCIcDFNicRZ9bQvojogjZG2q5eUjxB/gAY9P79mdnZ + uUfzT58TMzHcq+MSFW28DBW8vwfYMlK8OXp9sL8H5tzZ0d5+qfViS/P5xvraqjMVpUV5 + 2RnHk2IjjwT5ebmTYYNF2Bkh1e8LClFLkFas+6efBdzYKu1dPH2DwmOS0rILys7AvC93 + 94FOGO/HC4AJvPsOQAnE4VmQ78zus/guJAmCGrsVpDZIEo/n4HmBQW9PTU3dvnN3evYh + bbzSj8c/TIVsqYOzjDlrd2nPo88TF7wz2A8hWo+PDPX3dHdebmsFyk2NDfV1tTVVZ04D + 6vyTmWkpibGRYUGHvT1cHGDYpswicEb+DbClY0JwY6s0t7Jz9vAJOBKVcDwzt/hUVf2F + S51X+wXeMw9B4AJw3ugAOVu5Frews0dIs8P7ElLbPMcTxKA3xrBujN8SH5SnrAroDeb6 + mP+u4at7SwdrPbCR+rpzC9HL1c721ubzDfVA+eyZylMV5aUlRQW52ZknUpLioyOOAGtP + V0dbGLYJfBGwCO+PX92yybyF242tcsfufWYHbB3hmoRExCWfyCkAezc0t3VeA943J27f + vU88QIAL1+Id3Gfyn3UWJAkRxAHqpwsw6/t3b8PJZQYdGBgYHBoewwfl/oNHT55BhKH5 + RRqXEIC6gH7ytg7abNl//vYBlo3UF0TrkYGezraWJhBH5SlCubAgPzc3JzvjRCqgjokM + Dwn08wLWdkQie2h73Cgp+yvujzq8wnCTZ7J9l4mZpQ3IG2wSnXCc2PtsbVNLe+e1vqGR + G2SXDPjCUyAOFn8Ndw4OtLZYkiBFAlDDrFmSuDEyNNCHjaoLq/ta78Dw2C248XMLDPei + JvYrQ1sHaRmv/gmwqeBd5Bn7u+FR11WdLi8pzM/NzspIP5GWmnIsKTE+NioiPDTI39fL + w8XRzvoASASM/a8atsbdG37dtGX7rr37Qd7OHt7+oRGxYO/84oqquqaWts7u3sHhsZsT + U3fu3Z99ABOHjZM79+Lly1fqIpeaXD14IAT1XXIMhgf7rnV1tre1tl682HqpnV/nJhRd + wP1q6cyAFZi3HtbMIrRBSrApz9h7pQ0SyKnSwtzsjLTjKcmJCfFxMTFRkUfDQ4MDAbWn + m7ODrRWwBokohv0v7I/61k2O4KYtcE32mR8EmxzyCwqLik85kV1Qcgp4N1/q6O7pBxHc + nJjEVkeIE+QLCwBdWzJWJkXiLtQfmDVtVmDQpsb6+nPn6hvwOtgHro9NQBSgMX9KndBn + 7JW6aINERCEO1YbAsu9OcFKXtL0C2g6T4mOjIyPCw46EhgQHBfj7+QBqFyd78LWCtcrY + /w6LSMil370Re+VusIk1m3dIeExCSnpOQQn4pOFCKwxTAD4OE797D5DPPng4h/WIF92C + JIFY+S4ii/Eb8MH6rl4hqMGgZytPnz5deba6rpHcyiEJ92vUCS1Nfn6MsHVxptsSa1kb + ooItMgSZacnE0UdCggL9/f18fb29Dnm6uzo72ttaHwRfk11v20xYk5P9r2yPOsZNW+WP + 7AmCvPeaWsC8XT19A0IjYhJTMgjvMzX1MMzLVwD44PUR9i7Iobt3b3p6Gp40Fm6QInGb + FYkRcne7xWZ1Fq5XMfaqwqKSstNV586zBkMCOkbraHDrmPdy9L0Yaom1YBGk0BfmZu5M + jCGD3oIMelHOiWPx0UdDgwL8ALOnp7ubm6uzs6ODna0VoN6/D3wtsEZAQyTyrxq24G4E + 8T+pbMLm7eblF8h4p2fnFQGo2vrzLUS913r74V0A8pvj47cmJtUFRYJiZVYkrjGDNNZV + VZaXFOTlZGdmZGRm5eBlKmsbL3ZcG+B8xRPATWQikp+6eDO4ipEvQVqza9L8REwzg3KF + AZlBJyH1aGjgYZ9DHm4uzk6ODvZ2trY2QNqCoN6za8e2rWTX/zOsATg0EyiCG34lNoF5 + mx+0cXB29/ILAt4JKWlZuTDwSgDe1Nzadrmz+2pPX//A0ND14eGRUbmgSFznWBkhXAcz + SA1iN7FZHUtOSko+dvxEVh4HqZevDowI60aYo2omuqHOMgirdxGFsOZFWL+DDPMUJzlu + j4/0X21vrj9bhtoQCKkIFWk/tLe1sbY6eMDS0sIcSBPUMOst/2usyb6ZvCmupM3SBM6J + rYOLB+F9NCY+OTUjO6+wlAFvPN8M96Kjs6v76rWent6+vn6svj4oEteuSkXiAuLks6fL + ivJzMmiziomOioyMiolLxDZQSJIX8hUj46SfP3upL58vMXAVY3GDkQbUpGWTOPAGWC+Q + m31zGJ6fLFeIjwj1p/DF3sbqgKW5mdl+030ENJDewVBvZL4Gh/zrhM00Ir8I8ibz3rod + zomZpZWtI+EdGBoeGZuYkkaAl5SfOlNVe66h6UIzXLq29ssdHZ28Ojout7ddolgZSFef + OVVeXJCbJWK3cPIJgkPoVZJSswoo+clw377/EMlPmDdrgqrYtQhg9UeJtJJ6lFI2VCiu + DentajtfJ8oVjgb7HXJzgkttYWa6zwQw7961aychvRVWDag3YG/83/C1LtrMJj/+DPOG + Lwg6YbwdXNy9fP2DjhyNjksiwHMLsNtVVJ6tqq2rr29sajp/4UIz1oUL55vg6J1TFAnE + yemp7BeEBMEp8PH28T0cEExeZUZeqczGjSvZOMKbCEXNoQlgdc2Z7oEYA5umBA2pAygN + gV2T4idqQ5DVPa2UK3i6OFD4YrJnN6O8bRsBTUirUP8v9kY9rOkHzbxBJ7v3mpJ9Ozi7 + eXr7BYaERUTHJYJ8M7JP5jHkpyorz1RVVVVX19RUV+PGmcrTHCuzInE8OSE2UsRu7BS4 + uXl6kZdDCmNJZe35tq6+6zcm785wukKI3qrYxRqXQFyirFODIxMUJOUC69np2xMkjKA2 + pPpU0ckTXK6AQhwri/1w87AfAuXNmzZtBNCMNFv1NwE1w63hDTqReNs7uXp4+RwODDly + NDImPjE5JS09MzsnNw9eXVFxSSmvkuIiuHl5uTlZqiLBYTIFFHAK7OwdnPApOQyFMTk9 + V2bjoHdRGA95keRcReziTLGu2EW3KY0MRUYKMayaC80LdTiyNqS8EM5I9JEAKldAOoZD + RTLnX3/5ZQPIA/RB/EEe37/v8i0xa+UOwI0UA9EJ0fdu8InFQWs7GDgBHhAUGgbE4+KT + klOOp6Wlk2OXlU0rC05eeloaKxIxrEgE+Hl7urtQQAGv4MBBK2t24knQPXGy6FQNPEEl + XfHw8TyyDJrYJYQukaUnjLHUGhxKBSHFS6UhpHndHBnq7b58UdSGHE/QyhV2IfclOBoo + //Tjjwz0t4U0I06+IHxvgfe2nbv27NtvbmllY+cIwA95+/oD8SPhEZHRMbHx8QmJSfDt + sPANikR8LCkSYaxIeB9yd3WCJHEQbsF+U9P9ZhYHrO2c3SHoIvmZXcjpCmTjOF0x82Du + McuLUNBfi2yxJnbRLa0Gh5AWeUcSB4ZRhyNqQ4q5NgRZXS5XEEIqedQCZbbob8ikFdOm + 7/p479i1xwQGfsDKFhbu6uYJxP38A4OCQ4+EhYcfjYiUK+JoeHhYaCgpEr5QJBAnO3CY + vB9x8p7de/bsxT+NJBhk4zj5WXamDtk4pCtGoHYhzUBiF3QX0rpY7ILGKJeowXkuqhaQ + TH8we5/qFZBEpxz6peaGGqU2BM6Ii4OVhU4G/Ru0Zl2kxW0N741wv0Eoe/aZEuA2tg6O + zi5uHp5eXj6+fof9/QMCg+QKDPD3PwzvQyoSgBrqD8ducL6w6ENCgi7BjeRnRl7J6Wok + mzuv9rHsfVuKXY8hdj0hseuZskj2EjU4UGJmkUyHuniL6hUgDnRcam6sPVOOoieENGFU + G2KHQ0p7dqDg/csdnFkKzxe/R8Eb7jcIfNsOAbi55UEgbk+Qu7q5e3h6HvJS1yFPTw93 + qUhQnGxO6g/FbuwXbMFrQNC1tObk59FYpCsKkY1rBN7dvQPXR26w2DU9jeQliV1Quh7L + RQlkUYMDKYaFmBvITwh58UJD7ZmK4rwsqg1BSOPuzFldWa7wv41ePvM/QnizePIL4h0C + C4Cb7NtvZm55wAqQw8twcHRyxnLBou9QJBAq06bIioSEmt1ceAa86VKuWSY/E1Mz84oh + LzZCzu261jcACwfik1N3SGCE1DWjLEXxui1qcCgTBKivUGlIfU1lRXF+NkQo1IYgpGFn + RKkN+a7Axv9GwRvyiQCc6ACIY8szt7SEm2FlbW1jK5aNjbW1FUkSrEgggmOrFrEb+V8b + yMlh/VwkP8Emx05k5ws592J7Z5cQu0YBudC6KG18m5LHkL0mbqk1OAP9PVeRn0C9ApRc + iAN52SdSEqLDRW2INTKN3yvY9FnQBxwcDhOHjQNywtzMzNzcQi5zKBIsSSiKxNbN0gUj + B+wnRfECefNeeTgY2biU9OyC4orK6nONFy6S2HUNYteg1LoobyzW6MgIBK+hgf4+FC1Q + Jugii+ZUGpKblXYsAYJfANeGoJyPUuicI/jeLJvAxhJ4k0sI8wSHE6lsB+S7gPmevXtN + TAD8vn34thcwQ5JArMyBsqpISB9M6uecrrBxcPH0CYDcBZ0Kcm7pqbM15xogdrW1d17p + BubQukjq6h/gr6R4QfDq4hocIN1wrqaqEvIiSkMgDkDIDvT1cnO2h2GTM/LvFOIIbL7K + VwacffANQFyBfNu27dt3AHZl7YDrsZwiQU4YvYKEWyQ/7ZzcvHxJPoecm3myoKjsFPRc + KXa1tUNh7Oy8IhZuQfCiGpzmC1Bi6gjpMkheSDtSaUh4SIAv6nAcbKg2ZDecEUqh4x/8 + jTrXK/v/MF4/gBEEBQNyMnMYOtZWLPpOP7MiwZGyiJPxPPEHCG+ddMUBIZ8Hhh6Njk+C + 8H0yvwjyIpJpELsaSOuC0tVCSypeXINTXVVJiaDC/JNZBHVc9NEjyKEfAtZUGyJidVJT + v3ewGTFp4sTBjPkvsHP9pSoSIoRTkJZ4S7ixV+7W5POAkHBoL0JezC8sKi2rOF155mwV + lK5auWqgeJ2tRA1OGYAuICEmLQWSV3REGEpDvEUOnWtDYNhczmcUYEvEyS8ELfDGR6jr + rU8qEsQmnB1S5XMp50L5hth17HhaRmb2ydz8AmhdULrKysrLy8vKcAuKF9XgnETCDbUh + SQlxlOANRirMy8OVc+hmlGtETobTX2CR75pGhG1qXwUPM+oCeEX04btU8tCeIG8p5E3y + uY6cS/q5ELsSko6lpKadIK0rOztHLKF4oQYHxSFJCcgDRUIggGYOqJEKs7M+aCGwlkVP + ZNhGBbaGIsGuu7TfLH9LwM3ZIVU+t4cSC+mb5EUhdsWx1pV87FgKr2MkeSWS4MXFIRBi + /A/7eiHB6+xoZ8PiAFx75HU5/wWsv+/9cXncDLyXfZPFcq4tpG8Wuw5D7AoB5qx1RUVF + 04pCSjMSihfV4KA45DApXkilOzkAakqFIWKlHLqaazRSuzYUb3YFVfmc5dyD1rb2Uuzy + 9vVVtK5guaB6QfEiwQvFIR7QFpGdIMmLso5IhVFiV8N6HWz9/wubN3xBTldAqWIpFtIL + iV1O0BchMLLW5e3tw8vbG7oXFC/U4KA4xAE1ONacSuesI5eGrGOtj7D+TxreQs4lwE1Z + 7ILqYie1LhcXV7lI8mLBy46LQ0iIMUXBwm6RdQTUkGHI4zTWzVEfPAN+kniDT1jOhdhF + 8qKpmZmFJSRdVeuys0ORExYULxa8QB6iBgepdAi5pMMgcPy2ErsGoPH1n6LgLbQXFruA + +F4pdkHqstSWhQUpXlSDA2mRhBiWzCnBy1Cvm/UK/l2Et9BeEJKS2AXdRYpdpHWR1KUs + HcELSoyowZGVIezyrW+NK8BbR84lEUDqi5rWtYuW0LygeEnBS63BEQSyztYrAVo+BqER + WbiO2LWJxC4pdZHcRUsKXqI4hGpDSCCgOGZ9Y/wMrMVDGXBCnPXFDVLr2qgtoXxJxUsC + vY70Z+OsPUHYOFu5UBihdW0QS1G9uAYHBr1u0hpsq7kFyIlXeEHn0pZyJxn0+o64GoiX + eS5humQt87j1u9YRWEdgHYF1BNYRWEdgHYF1BNYRWEdgHYF1BNYRWEdgHYF1BL45BP5/ + SZwOvQplbmRzdHJlYW0KZW5kb2JqCjExNyAwIG9iagoyMDExNQplbmRvYmoKMTE0IDAg + b2JqCjw8IC9MZW5ndGggMTE1IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1h + Z2UgL1dpZHRoIDQwOCAvSGVpZ2h0IDEzMiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAv + SW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRl + RGVjb2RlID4+CnN0cmVhbQp4Ae2d+V+SW9fG63S0VJwHFEFAEBwYxCAURUnCRBEQBQeU + cMihnKdTmkdL6zl13vd/fq617xtQMxOFzvM57PVDCSiy19frWmtvbvZ+8IAHzwDPAM8A + zwDPAM8AzwDPwL8iAw95PHz4P0OSYPx2NR7lVlwd/m+UlH+MUBIIIPyOyOORl0eJQD4E + Ur+ejsiEgDAa+fmPKZ7kdrAc5OezjBAeovPr2CSYMCTgQSwKCgoRRbkelISCAkrI48eE + B3B+FRtWTZhMoBEGBDAkkuLikmSU5l4kx15SXCyRICMMz2PSjsAmu/XmAhRiAoFIiEdp + WVk5ogJRmbtBw6c0lJWVIifFoFMI6ZBusoyG+i5UlLy8fIEJkJQCSEVlVVVVdU1NjTQR + tbkWiYFLkYVqZKMSgIhOscCG0LBqk4UmTZQKoDwmoUjABEgIiFRaWyeTyerr5XK5IpcD + 46+vRybqaqVSwgM4YCMh2TDVUK3JsJ8lqcC+GJQyMAESEKkHjAalSqVSq9WNjY2aXA2M + HRlAHpQNCoW8nugATkV5GUMDQyPRZJgMc7DfmVSKiopLysorq6qltYSkQaUCCm2TTqfT + 65sRLbkaNHi9Hnlo0mo0jSpVA8GplVZXVQINDI2JRiCToSkniQVlhQwM/lUKpdRI62Ry + hRJItDodULS2GQxGo8lkvhrt/+a4OlizyWQ0GgxtrS0tzTqdFnCUCrmsTloD1ZTCz5Jk + MmJmIpU8gQqkQkqRN6jUmiYgaTUYTeZ2i6XjqdVqtdmeIey5GDRwmw05eNphsbSbTUZD + K+A0adSqBjmphkTDyAhudn8yzMLyklTgX7J6BYSi07e0GUCkw2p7Zu/scji6e3qcFL25 + GWzsPT3dDkdXp/2ZzdoBOoa2Fr0OslHUy+BnKTKszNzLzBIWxhysrLyqplamUKo1EIrB + ZLZYbfZOR7fT2edy9bvd7hcej2cgdwOjf4Es9LtcfU5nt6PTbrNazCYDZKNRKxWy2poE + mXzWANxHMgwLiaWwCHVFoNKo1QFKe4fV3uVw9gKIZ+Cl1zs07PON+P2BVARzI1IDDvj9 + Iz7f8JDX+3LAAzy9TkeX3drRDjQ6baNIprSkqJBaM0jm7mDEeg+xFJdQXZHBwJqaW41m + QHH09LqAZHDINxIIjIZCY+PhcDgSmUBM5l7QsCMRZGB8LBQaDQRGfEODgOPq7XEAjdnY + 2twEO4ObVZajNyt4Ikrmbl4mYGFiKauoAhUlqLSZLASl77l7wDvsCwRDY+HIxOTUdDQ6 + MzM7G8vlmJ2dmYlGp6cmJyLhsVAw4Bv2Drif9xEai6kNZKAZaVVFmSAZapnvNP8nLORh + 6I1hYXVyRgVFxe5wugDF5w+GxiOTU9GZ2direHxufn4BsUjxOteCjZqGPz8/F4+/is3O + RKcmI+OhoN8HNC4nkTEzMvI6lBl0ZgkvS1sxVFowZyEPK2ViUWn1pJXO7r5+z+CwPzgW + BpPZWHwOMJaWlpdXVineULzNtWCjZuNfWV5eWlpcWJiLx2bBJjwW9A8Pevr7ujtJM3ot + mVlVRanoZekXmQQWFPyyShKLRtdiBJWePpJKIBSenJ6JxecXXi8tA8ba2tr6xsYmi63c + DGHwGxvryMWb1dXlpdcL8/HYzPRkOBQg0fT1gIyxRadRQjKVzMtQZNIFk8RCHobKotY2 + G8xWezdRGQmOR6YABTJZWX27tr65ubW9s7Ozu7u3t5/bsbe3u4tMbG9tbq6vvV1dgXCA + ZioyHhwhMt12q9nQrFWTZOBlhVT90wQjmlihBN2xtL6hUddqsjxz9PaDyuj4ZHQ2Pr+4 + BJlsbG4BCGAc/PGO4j3FYS4GGznLwR8HyAfwbG1uQDhLi/Px2ejk+CjI9Pc6nllMrbrG + hnqAKU2CuX2NYVjQiKG0VNfKVRo9xNLpdHm8viCoQCpLK4CytbO7t38AGoeHR0dHHz4c + I/7M3aDhf/iATBwevn/37mB/b3dnC2hWliAakAn6vB6XsxOS0WtU8tpqFBmayZBibgtG + VAtV/Oo6hUqLymJz9Lpf+gJjE9HYHKTCoBATEPlAME5OT08/8kAWTpCNY+A5JDYMDUQz + F4tOjAV8L929DhuqDMp/HYEpEq3sdmAuYKmpU6ibWkwd9h6IxR+KTMfii8ura5vbu4Dy + /ugISE6Ix6dPZ2fnPM7Pz84+fUI+iM7x0dF7QrO9uba6vBiPTUdCfkimx95hamlSK+pq + 0gQDLI/QIJOJ1aDi61rJw/oHyMJm4GCgsrO3DygfwAREGI/Pn798+fIfHsjC58/093kG + OmDzAWj293ZABm42Q2Y20E9e1qpD9ScwVPxvN8FEK8awSBiWRl2b2QoPGxwJRaKxeYHK + Aezr+M9TxgRECMdfiK88KA2UDkYHbE6hmsN3BwKZ+Vg0EhoZhJdZzW26RgaGFf9Ht1kr + A5bf854USEqotgBLu83R98IbGINYFlfebmzvHbyDVE4EKGDCeHy7EH/nYlwY/zf8eRKd + LxAO0JxANCCzvfF2ZRGSGQt4X/Q5bO0EBjWmRFLwhJaXf1r7hVasoKikHFjUDIvLMxQI + T5FY1rd294kKpHJ+Tjr56yt7QQKJ/+MhJILl5CsJ58v5OYkGZPZ3t9ZXl+ZjU+HAkMfF + wKDGVJeXFBXcqikTXAxYqmoTWAaGg+Hp2MLy282d/XeHROXsHO4FodALwEthPP6fB2WA + 5QI5odSQbKCaMyJz+G5/Z/Pt8kJsOhwcHkiAqcUEk5qynwqGXIxqflmVVK5qQsl3uAaG + RyNReNja1u7B+yOBiqgUkQknciUDBEdgQ6oRyBy9P9jdWoOXRSOjBAbFv0kll1aVUe3/ + mZOJLoaaL5Vh3pLC8np1fXvv3eEx6sr55yQV+v1XXhK/KWRAQMNEQ2RQZ44P3+1tr6++ + ToHBPEYmrSiV/NzJki5WLWvQNJuedvV5hoNQy+vVDXgYiYU5GBkYt6+b/wQJDEQjkIGb + wcxQZXY2GJjgsKev66mpWdMgoxLzMydjcnlSVEzFpVFv6OjsfTEUDAPLm42dg/cf/kRh + QV3hVG4mknj0MhmUmT8/vD/Y2XgDxYSDQy96OzsM+kYFSgzm/Tevx5BcHhdISiul9Spd + m8XudHsDDMsmYTn5eEblHlhErXAPSyC4/n8GhmkGZebL57OPJwRmk4EJeN1Ou6VNp6qX + VjInu6H0k1zyn1CLDBdDcel+Pugfn361CBM7oNKCyiJQ4R3Y9SC+u1eUDNwMZOBlKDJQ + zOriq+lx/+Dzbqu5JelkNyxgMrkUStCLKdR649Mu14AvNBlbELCcfhI9jIvlu/T/+I7L + kjn/dCqAWYhNhnwDrq6nRr1agZ5MUvj4hl5ZlAuWxZRN5GIvhkYnZhdW1nf23x+fcCw/ + zv4Nj1wFc3L8fn9nfWVhdmJ06AU5WZMSC2VU+iGY69eVBblg6oKi32yydvcPorjMLa1t + 7aO2MCypNoyXlhtYXHooBeYbisz5J9SY/a21pbloODDY3201NVPpxyTmx4J5iAstUF0g + FxXk0tk34BubevX6zeYeGuSPZGKERfg1l34zv3FzBkQyyB6B+Yh2eQ+1/9XUmG+grxOC + UQmCQUt2/SqZ0IwJcjHbetzeIFwMxeUPwoKSz/uwm/P/w0dTkmHF/8+jP1D74WRBr7vH + ZhYEQ5PLR9caGdkYNWOiXFwDI+PR+NLaNooLGmSO5Ydp//kDl8CcfUSJ2V5bikfHRwZc + omBocvmDyg8bQ5OMuQurLj3uodHJ2OIqXIyKi9AgcxP7OYNrvyNpZWiXqcTAyVYXY5Oj + Q+4eVmEwh2GV/zojIxsrxFRfptS2UnUZQdFfXsPMhRUXmk1yLNcm/TZ3psCwEoNZzNoy + Sv8IVZhWrVKGST+r/Nd0ZIKNVdBU34hmzEtyoaL/4RQuxrHcJvs3fM8FMJ/PTkkwb0gw + XrRkRpr0U6t8bYERbQxNMqb6z5weH6suOwdU9C8Ulxt+NX/opgwwMLSOCSdDTwbBUIXx + eZzPMOlHq/wjI3v4G5bGirEEQ3PKLtdgIIJmLCUXvnx8U9Jv81gCzNf/iIJBSxYJDLq6 + 2NyyurwYHdk1nfJDoRsTbcw9FJpizRhVFyYXQYi3eQH8e67NQNLJmGAOWUs2FRpyi0Ym + dGTfF36hvFA3RjZGTfI8VmD+ODr5RNWFL4pdm+t07hS5/P0Ngvl0gjnM+so8tcpkZI0K + aeUPCgx1yViyrGvQtFrsrpeBCBYsYWPHp+dfaEbJ5ZIOg2u/NyWYL+enx9QqL8QigZcu + u6VV01CHxUtaI7vakFHZF8uLocPxHN3Yq6W3W/vMxiAXjuXaVKd3ZwLMV6r8h/tbb5de + oSN77ugwYPGSCgy4XDUyKvuFmOwLXbJ7eGw6jslL0sY4l/QQXPvdKS6Cka0tx6fHhsUC + U1NeghnMtVywZimVq/Umm9ODSeX8ysYuTV5gY1wu1+Y57TsTYP76QlOY3Q0UmPCIx2kz + 6dVymsFczwWLY8my7w8LXfIxFpITXNJ+GfwHrmaAgfn7219YVhYKzGzYf6nwf68XapNL + K2lW2W7vfRmYoMk+LVmeUzfGnu/qL+G3086AyIUKDBYvaco/EXjZa2+nmSUtkeU9+q6+ + MC5VtUI7NhicjL2+UvbTfhH8B77PAIGhTlks/K9jk8FBoSFjM/7rubA2mRYtXawdwxI/ + W4T5+o3L5fsM3+0elkmByxHNLKkhw1p/q1ZolH/MRamlVRivMNvH4hibVdKz3e118J+6 + kgFKJZtZYomM3oSZCnlpJUarZBOY23GhRUvO5Upi73nzIhdauuRc7pnQDP14Jrhsc71k + iEbqaS5yScfHGnjdTyUx818RFqov9BbMret+USnvkzOP4tIzEpa0+2Q+r7yUwyzcICwi + l9vOK3+ji5T4OkwWYFx4SpFLOuswWE/m65YXUpiNLxkW6CW9dUu+zp8NFheeM4El8Ybl + 7db5+ftiF1KYlS9TXG7/vtgD/j5yVlhceNIEFlrmv/X7yA/4dRcXUpiNL0Us6V53wa9T + ygaMC8+Zkouwyi/M9n96nRK/ru9CDrPxJeOCCy7Tva5PuJyfXwebDSZ4zgSWdK+DFQsM + v248O1ySLpaUyy2vGycu/HMW2YEiqgUzSrgYfZQvnc9Z8M8lZQvKRSzpfy6Jf44va1xE + E2MfssC2F+l9jo8ZWQGuvaCPifPPvWYQ0iUs9M5LWp97fQAj458TzyCOxFMlS/4dPyfO + 91VIZDKT/6fEwrDcYV+FB3wfkkwCEZ4rhYX2VMJnkVFc0tyHBEZGrTLftyeDdK5iudO+ + PXyfqwwSYU/FsLCdLu+zz5UgGL4vXKboXBbL3feFAxfWkvF9FDNCRhSLuMPlffZRZIJJ + 7tjH9x29D57LVO6376ggGGGHS75P732osOXjxG6w99+nlwTD97W+FxD6YdJKRve1fpBy + MizHiNvz833g0wAl2heWwjK6D3zCye5wbgJ7Rbn+D1TC3IttAJvJcxOYk/FzRlh+0/iH + 5JGIrJwz8oCfy3OP44WyeC4PORk/x4oOPbpDZPEcKyr97AReOo6Pn/uW5mF2WTz37RIY + HJrEz0m8/fmPWT0nUQTDzxVN74zU7J8rmlQMP4f3tmcK/5pzeKkpYzWmkJ9bncZR3Nk/ + tzoFhp/zfrtz63/NOe9wMlExBdSW0VHvKq2+zWSxdnb39XsGh/3BsfDkVHQ2Fp9bwIHv + S8vLK6sUbyje5lqwUbPxrywvL+F494W5eGw2OjUZHgv6hwc9/X3dnVaLqU2Pg5FxyDsd + wFsgHo18dZ+eq/v1fX+bzWPyHj8pIi+rqZMrG5ua28wWq93hdLkHvD5/MDQeAZuZ2dir + eHxufoFikeJ1rgUbNRv//Fw8/io2OwMmkfFQ0O/zDrhdTofdajG3NTc1KuV1NTgaUVKE + k8SxW/J3u1p9T+GaewjM7wBTCC9jkmFkoBm7o6fvOdAM+wLB0Fg4MjE5NR2NzszMzsZy + OWZnZ2ai0empyYlIeCwUDPiGAeV5Xw9RMTEqTCxlJUXsgPe7YmFdGcDkP4GXlZRXVpOZ + QTOtRnMHoel1uT0D3iHfSCAwGgqNjYfD4UhkAjGZe0HDjkSQgfGxUGg0EBjxDXkHPG5X + L0HpMBtboRWysOrK8hLRw+6ORSgyj/IEyZTCzGplCmWjVtdiMLUDTZfD2evqB5yXXu/Q + sM834vcHUhHMjUgNOOD3j/h8w0Ne70sg6Xf1Oh1dgNJuMrTotI1KhawWFlYqiIV5WPql + JWlqVP1FyUhKykQyao2umdBYrDZ7p6Pb6exzAY/b/cLj8QzkbmD0L5CFfperz+nsdnTa + bVYLQWnWadQilTJUFlbwSSz3wAI+AINlTEimAPUfZOBm9bAzjU7f0mYwt1s6rLZn9s4u + h6O7p8dJ0Zubwcbe09PtcHR12p/ZrB2WdrOhrUWv08DA6uFgVeUCFaHg363iJ/VCYATJ + JMmgztTK5A0qtaYJsmkzGE2gY+l4arVabbZnCHsuBg3cZkMOnnZYQMRkBJNmXZNGrWqQ + y2qpriSp4Czk+4pF4JMwM0EzpeUVVTXSOplcoYRstDrAaWltMxiMRpPJfDXa/81xdbBm + k8loNBjaWluARKeFUJQKuaxOWlNVgbpCDvY4Py9jVIgNMzN0ZkQGvVlZeSX8rFZWL1c0 + qABHo23S6XR6fXMzGOVsYPR6PfLQpNUAiapBIa8npVSRVIqLUlTub2GCXBgYkQzcDNMZ + SQnQVFRV10hr6wiOokGpUqnUanVjIyDlaGDsyADyoGxQEJK6WmlNNZRSVgKpFD6hiSRp + JTMWdg0ZEg1DU1oONgSH6Mhk9fVyORDlcGD89fXIBIgQEjCBfREUZmBZocL4MM2ga8ZM + k6EpLikpLQOcyirCUwNAYtTmWiQGLkUWAKSqEkjKwKSYQcFKGKAwraT+zjP6FXUAmM8Q + GhgaZFMkARzQAR4AQlTmbtDwKQ1lRISQkFCo1Of9ng0DuwL2AhrGhuAUSSTFxEeM0tyL + xNDBo1gCIkDCmPwiKIKdMTSCbKAbCAfSKShE4PXkdlASCAhkQjoRhYJSf7+5/RVp3HAT + vwmO9tsj5ml4Afngg6BXlMPBcpBPQBgSqii/kEkCl8iG6AAPFR0eUAiKCavx/wiTBBus + 0iTx0F+HGHhluRSJYSf/Z1lJ5ugf/oK9mFz/5x9mwH89zwDPAM8AzwDPAM8AzwDPQMYy + 8F/hj+H6CmVuZHN0cmVhbQplbmRvYmoKMTE1IDAgb2JqCjUzOTUKZW5kb2JqCjEyMCAw + IG9iago8PCAvTGVuZ3RoIDEyMSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0lt + YWdlIC9XaWR0aCAyNDQgL0hlaWdodCAxMTYgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkg + L0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0 + ZURlY29kZSA+PgpzdHJlYW0KeAHtnPlXUlsbx01LRZBBQUXEQLgqDijO4sJwuJiKWoZD + eXWppKmJtPQqtjAl84rDDZWlpmWSc85GDtXtrv61++wDZDn39v5w7PD9xVasdXg++/s8 + z95nc852cXHKOQLOEXCOgHMEfskRuIJ7/d+GHZG6fpUbTvU1QFcU78/A22nd3K5evXrt + EgjCdHPD8P9HbgwYcBGru4eHp0Mk3MkRmaeHhzuK1gb+w9g2YOSuO9CSSF5kEAXkjUuh + yFCEXiSSpycCB8PB7x/CRhWMHHYHXsCleFOpNBqdzsCx6HQajUr1BnQv4EbYGPVFSxuZ + DMTgMIlMBlxg9fFlMlksPz8/f1wKAmOxmExfHwaDDuBkMgm5jagvaLWN+JqHpxeZQqUh + XCBlBwYGcjhBQUFcHArC4nAgQLa/vx8Cp1EpZC9PD5vXF+niNmTksTeV7sNk+QcEcrjc + 6zwenx8iwK1C+Hwe7zqXywkM8GcxfehgNnhts/q8/EZ5DWkNxBREDMDcYB5fIAwNDQsX + iUQRNkXiRvaAILTwsNBQoYDPC+YCNqKmADUk+Pn5bUf2ImPE7KBgHvCGR0RFiWNiYiWg + OBwKxRUbEyOOiooIB25ecBAbo4YEt0Gf6bQDmUJlMP3YQdf5wlAR4EriE5KSk1NSpYdK + w4EOo5GmpiQnJyXESwBcFCrkXw9i+zEZVMoFoDFkD0+yN43B9OcE84XhkeLY+MRkaZos + XS7PyMxCysaZsKAyM+TydFmaNDkxPlYcGS7kB3P8mQyaNxkVNaT3qU4DshvUMiD7sNhc + niAsMkaSmJKWLs/6XXEzNy9fqSwoKCjEnSAopTI/L/em4vcseXpaSqIkJjJMwOOyWT4I + 2v0amrNOg75iR6b7+gVyQ0JFYkmSVJaRnZOnLLpVfKekpLSsHKcqKy0puVN8q0iZl5Od + IZMmScSi0BBuoJ8v3Q59GjMgX3X39PKmAXKwICwqNlGanqnIK7xdUna3oqqqurq2Vo10 + H1fCQqqtra6uqqq4W1ZyuzBPkZkuTYyNChMEAzTNG2oaVienQKNZyoNEofkg5PDouGRZ + piK/SFVeUVWjrm9obGpu1mhaWlq0OBOEpNE0Nzc1NtSra6oqylVF+YpMWXJcdDiC9qFR + SFhJn5jcKLOhf1EZLEAWiRNSb2TnAnFlTV3Dw5ZHrW3t7R26TpxK19He3tb6qOVhQ11N + JVDnZt9ITRCLAJrFoKI+dorRV8BmhMxkcwXh4gSpXKEsBuL6ppbWdt1j/ZPuHoPhKU5l + MPR0P9E/1rW3tjTVA3WxUiGXJojDBVw2TFlkT+jdJyU3ZjOJQmf6B/HDogE5p0B1r7qu + Sdum03cbevv6jcaBwSGcanDAaOzv6zV063Vt2qa66nuqghyAjg7jB/kz6Si7TzTabjMU + My80Ki5VnlNYUlHboGnt1Bue9Q8OPTeNjIyOjZlxqbGx0ZER0/Ohwf5nBn1nq6ahtqKk + MEeeGhcVyoOSPtVoV1doYN50JhuKOTb5hqKg5A91o7Zd39NnHDaNmscnJl9MgaZxKBTX + i8mJcfOoadjY16Nv1zaq/ygpUNxIjoWSZjPp3mC0q+uxLoZSG6rZB2W2OEGWrVRVqBsf + 6bp6jcMj5omp6Vczr2dnZy0WyxvcCYKC0F7PvJqemjCPDBt7u3SPGtUVKmW2LEGMshsz + +oTkhtR2R9XMDhZGSqQZucX3agC5u2/QZJ6Ynpl9Mze/sLi4BFrGnVBUi4sL83NvZmem + J8ymwb5ugK65V5ybIZVECpHRFJL7CV3sCqS2F5Xhx+GHxSSlK4rKqx9oAXloZHxqxjK/ + uLzydnUN0zruZItr9e3K8uK8ZWZqfGQIoLUPqsuLFOlJMWF8jh+D6gXJfaxzY6lNYwZw + hRESaWa+qrJO0/4EkCdezs4traytb2xubm1vb+/gUhDY1ubmxvraytLc7MsJgH7Srqmr + VOVnSiURQm4AkwbTlduxgsZSG5YjvNDoRBnYXNPUqu8dBGTLwsraxtbOzjvre1zL+m5n + Z2tjbWXBAtCDvfrWphowWpYYDa2bxcCS+0gTg3JGqe0fFCKKTZHnqSrrtboeo2n8pWVx + ZX1rx/p+d2/fpgPcyR7Y3u57687W+sqi5eW4ydij09ZXqvLkKbGikCB/lNzHChqVM5nq + GxAsjIpPyy4Em9v0fcPmqdmFtxvb1t39/YMPH3GuDwf7+7vW7Y23C7NT5uE+fRsYXZid + Fh8lDA7wpZKPFzQwe5JpTEhtcaIs53ZFXYvOYByZnJlbWd+27u0D8Kd/QJ9xKhTbp48f + P+zvWbfXV+ZmJkeMBl1LXcXtHFmiGJIbK+ijTewKzM4UBovDD49Jlueqqhpa9c+GzdOW + xbUt694BADtg/8WhHLEB9sGedWtt0TJtHn6mb22oUuXKk2PC+RwoaGhiRxq3q5s7yRvK + WSCSSLOUZTUP27v7TRMz8ysbO+/3P36Cqx5h/YIDHQkJgvz0cf/9zsbK/MyEqb+7/WFN + mTJLKhEJoKC9Se5HGzcwe8EijCuMhHIuuqvW6AwDo1Ozi6ub1r0PR5BxQPtNCN+AI+gP + e9bN1cXZqdEBg06jvlsEBR0p5MJSzOs4M2rb0MJ+i0qQKW5V1Gsf9w6Zp98sr22DzZDY + 31z532++EAf//Dayz5//AaO315bfTJuHeh9r6ytuKWQJUb+hJoYa9/eTFUxVZCqTDbNz + UvrN4soHrfq+v8dfzUFq7x4As+PCOGA8MQRHfMB8sAvJPfdq/O8+feuDyuKb6UkwQ7OZ + 0LiPM9vadhhqYXeqGtu6/nqOynnz3d4BpLb9mid+Hy7+0x4gJPfB3rtNVNDP/+pqa6y6 + g5pYmK1xH2OGqYoOUxVq23mq6qY/u42mydcLq8AM5Yx75C9fHNBQ0O82VxdeT5qM3X82 + VcOqBBo3MNNh9Xk0txEzK5APq7CM/JJqaNvGkRfQwras+1+ZcWHoqUHYoKGJ7Vu3oIm9 + GDFC464uyc+AlRg/kHUqMwdWnqmZytKa5o6eAcQMszNqYdj1Tv02nHyABYmaGJqhgXmg + p6O5plSZmQqrT84pzBS4kQzBpufS2madYRBNVfa2jS6HE7IzwkBR2hs3mqwGDbrm2lJs + gg6B20lYlBzPbWB2LEnQ9AzMlqVD5jO+CzcfHTIvWTBmjdqxKDmLGW6eswrK1ZrOp0Nj + l5t5bOhpp0ZdXgALsQhB0AWYW34N5hYn8yn1bM9tp8+fL0HTtjVSR9+GHobq+czcRlsG + WN8+xWfctOZzAjmH+bsbaCdzufpoPZ8zvLj5+Id8hq0h2CbhCiLisPkZMcPt89I62iWB + pSduoM4JBBZiaKdkfQndQDvqOS5CwIWNkqObQ7AdhraGuILIOLTreV9rY14G5gNgPueb + cPQxMB8AM7Zp8LRTex/tfMZFYsykIxtiTmanz79wbp/QwyyXt4fBDve5Pcy5JiHG/ExA + n12IwXxkT//se4zLsRL7bm/o3Puq83x2MuNorfldKD/nM6H2AG0/PxNpr/dwT7/jV9jT + 7zh3Tx9+ryLcbzfE/I2OaL/FXiXgb+6EfLaCgM/QEPFZKQI+E0fEZx8J+YwrIZ9lJt4z + 6y4EfDfB5aR3ULou7zsoXRd5BwWaGOHeNSLmO2XEe3fQhYDviLoQ8V1gIr7z7TCaSO/2 + AzPxznCALka4szqQ0YQ7kwXLbnTcEIHO3gFmKGmCnbGEoKGkCXWWlosNGs5ZItCZaYfQ + BDobz4WIZyBiTsOBpkQ66xKerEHdG86tJdKZpgBtoybS2bU2qzGviXNGMYIGq4GaSGdR + o+flbNiosgly5jiCtmOD34Q5W96GDXZjhmOn1CN8fMoeHvxB8dpD//k/6GL41s8zOq/g + HAHnCDhHwDkCuByB/wDj6ks9CmVuZHN0cmVhbQplbmRvYmoKMTIxIDAgb2JqCjI5MDcK + ZW5kb2JqCjEyNCAwIG9iago8PCAvTGVuZ3RoIDEyNSAwIFIgL1R5cGUgL1hPYmplY3Qg + L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxMjIgL0hlaWdodCAyNzAgL0NvbG9yU3BhY2UK + L0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAv + RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnf8/k+sfx0VhNvuijWamzXYw + NCZfMo9p5EwYSlPK4YFFyKwHR6vHiiWnhRO1B0XJElK+t0J1Oo/+tc/7urdJN/fo1Gf3 + D13vX+y+r8v93PvLdb1ufrjeAQHYcAR+8Qgc2Kf9tDAhXuCWBfm0rWmB6Ld+5Ct4mEFB + Bw8ePLRvg8lBQcSX+I90AgtQRAwOCQn1GoPCvOOhISHB6Hfc+O+Gu7HI02BgMhhhTDAW + WLgPQ+NoXhiDERqK8OA8+P5dcJRZ5G0wUAHKCmezORwul7encbkcDpsdDl8gDOgITrD3 + m3LkMHDBWwaTCVAgRhzm8wWCyMjIKB8GwwIBn384gsfjAp7JZCDPEXufbru5h0JCw5gs + NgdBgSeMjo4WiWJiYsSUBoMiEUwTRkVFIjyHzWKGhYa4/d5PpbvByN9wNjeCL4g6Ei0S + i49KJFJpnGwPi5NKJZKjYrEo+kiUgB/BBcfBb7fbe0UcRRoCDVwW4gJWHCuRyuTx8QmJ + CoUiyW3JJPPchgmJCfHxcplUEisGOGKzgA0h3zviHnAYk+AKY2IlQE1MSklRpqamqcDS + KQ2NpqWmKlNSkhKBLomNERJsCLkb7dNrL5jF5vEjhTFHpfJ4BUBVxzOysrNP5Ki/Wu6W + fb2nzjmRnZ2VcVwFeEW8XHo0RhjJ57FZ+0AT4JBQZjiHx48SxUrlicnKtOOZ2epcTZ5W + m19wClnhrkYMFeRrtXmaXHV25vE0ZXKiXBoriuLzOOFMlGwIOKXXAA6CHAM4QiAUS2QJ + yamqzBO5edpTv+tOF5eU6vVlZWXlFAZDen1pSfFp3e+ntHm5JzJVqckJMolYKIhA6OBD + aHVRoQ94wNzDkdHiuHiFUpWl1uQXFpXoK85UnquqOn+h2qddOF9Vda7yTIW+pKgwX6PO + UikV8XHi6MjDXA+aigzgg8GhYeEcAMfKElLSMtV5BbqS8rNVFy7W1NXV1zc2GpFd3sWI + gcbG+vq6upqLF6rOlpfoCvLUmWkpCbJYQHPCIdewp1Cg0XoKYbA4EQiceCw9W1OgK60w + VNfUNRibW1rb2ttNpo6ODvOuBgMmU3t7W2tLs7GhrqbaUFGqK9Bkpx9LROgIDotBpHrX + cKNYQ3WxeQIAK5QZOScLi4Fb29DUcrXjWmdXd/d1yw2fZrne3d3Vea3jaktTQy2wiwtP + 5mQoFYAW8NioyiicPgAuIzBfKJYlKjPUWp2+ErjNbR2d3Zab1ts9vTbbHZ9ms/X23Lbe + tHR3drQ1A7tSr9OqM5SJMrEQFhczFOp7t3ATLjNYXH5UjDThGICLygyX6pvazF0Wa4+t + r/+e3X5/YNCnDdy32+/199l6rJYuc1tT/SVDWRGgjyVIY6L4XBTvXZ32uAxJlsSnpOdo + i8qrahpbTJ03rLa79wYGHwyPjDx89Mjhwx49ejgyMvxgcODeXZv1RqeppbGmqrxIm5Oe + Ei+BVFM6HRgI5RXO5QshyWnZJ3VlVX8YW83d1t5++9DwQ8fo2OMn42ATlIZGnzweG3U8 + HB6y9/dau82txj+qynQns9Mg1UI+NxycDgzcUWMo2JDlCBRrZYamUG+oMbZes9zqsw+N + OMbGJ55NPp+amnI6nS8oDIZgwvPJZxPjY46RIXvfLcu1VmONQV+oyVCieBNO7xJuCHYw + yrIwVp6sUucXV15qAHBP/8CwY2xicurF9MuZ2dk5sFcUhsZmZ2deTr+YmpwYcwwP9PcA + uuFSZXG+WpUsR06zGMG71NgBCHYYmxcpkiakZuXpKqrrr5gBPDgyOj7pfDn7av71mwXC + FinMPfrm9fyr2ZfOyfHRkUFAm6/UV1fo8rJSE6SiSB47DMK9o7qJYHP4R8TyJJW6oNRQ + 22Tqvg3gsadT03PzC4tLy8srq6uraz4MhleWl5cWF+bnpqeejgH6drepqdZQWqBWJcnF + R/gcWFhBOxJNBBs2EUn8sUwNuNzQ1mntGwCwc2Z+YWllbe2t690+zPV2bW1laWF+xgno + gT5rZ1sDOK3JPAblLeAR4SaVGKQZBTsqJk6RdkJbYqhtNlt67cOjT52z84sra65379c3 + 3LZJYZ7h9ffvXGsri/Ozzqejw/Zei7m51lCiPZGmiIuJQuHekWiUZib78JFYecrx3MJy + cLnL2j/kGJ+aeb206nq/sbH54eO+7MPmxsZ71+rS65mpccdQv7ULnC4vzD2eIo89cpjN + 3JloIIcyOXwItjJTU3S2pqnDYrOPPJ6cnl9cda1vAPbTP2CffRqa8enjxw8b667Vxfnp + yccjdpulo6nmbJEmUwnhJhJNLrEDsJpZPIFImpiarS021LV0Wu8OOSacswsrrvVNwHqR + /1KadwbAN9ddKwuzzgnH0F1rZ0udoVibnZooFUGiocRIxR0YFMwIhzTLFCr1Kf2Fhqvd + PfeGxyZfzi+tvdv4+AmeSiJ+2TLSAEz99HHj3drS/MvJseF7Pd1XGy7oT6lVChkkOpwR + TC5uIIfBBiaWJ0OaKy4aTRbb/YfjU7Nvll3rH0jgLea2D9vwCP1h3bX8ZnZq/OF9m8Vk + vFgBiU6Wi2EbC9tJRqUNBfZbSoZGd6am2Xyzb9Ax8eLVwiq4DKHe9uR/twG3Pm4f//z5 + H3B6deHViwnHYN9Nc3PNGZ0mI+U3VGKouL9dVrComGy+EFZzVt7pytorndb+v0efTUOw + 328C2fvgLdKuH7yzgLz5HsI9/Wz0735r55XaytN5WbCihXwo7p1kd2knoAI7V9fadeuv + ByjNy2/XNyHYnmfuytt20zMNwr25/nYZJfrBX7e6WuvOoRJLcBf3DjIsKi4sKlTaJYb6 + tj977MOPn8+8ATKkeZ/gL1+8aEj02+U3M88fD9t7/myrh70EihvIXNg/ydFGZEG0FHaw + /NKqeiht+8gTKLAV18YWeZtzlB/daCixDdcKlNiTETsUd31VaT7sYtJoASVZBHtnToH+ + fEP79d77iAyrGRUY8TxK2jcDxFRUYmhFA/l+7/X2hvP6ghzYP0UUZBZIZByxnM83tlts + A2hReUobPe6b5/u4QHM9xY2W1YDN0t54nljQcSCUsJXsjDaQvRsJWs5Ads59JftgkYa+ + kuecBNlk9G4lvsggzqfKqo2mG3cGH/0M8qPBOzdMxuoy2MSSZDH7IHf8THIHJlNUmCfP + 5GiTimiPS29tQ4WhPPuMNnoxIGrbH+RvBPqXJMPLELySiGVJ6cR6RnkGeZ5bRG8ksHnu + kVjSMGxi6K1kcQ4JtDfP6UkyMbyUkF+H4DUMvQyJZcnp6M3zstlNfgXkTSCTnrznJZA3 + gUy8Gty5Yb6M3j7Tkwkyg/Qihsk42rjC9lxRaAJeVXgnwbtnAFYMrBhYMbBiUEQAqyRW + SaySWCXxX7H4L3cKiSDdxoqBFQMrBlYMrBhYMUjSQHGJFQMrBlYMrBhYMbBiUEgE6TZW + DKwYWDGwYmDFwIpBkgaKS6wYWDGwYmDFwIqBFYNCIki3sWJgxcCKgRUDKwZWDJI0UFxi + xcCKgRUDKwZWDKwYFBJBuo0VAysGVgysGFgxsGKQpIHiEisGVgysGFgxsGJgxaCQCNJt + rBhYMbBiYMXAioEVgyQNFJdYMbBi7FSMXc7Scv7oWVpwtuieZ2nhM9OM/9cT6r45Jy7A + n9EmnWnq+2y87zmv7ZtzH/c8lW8vn38FMg1nXboPCvb/+Z5fzzS9/vPONL2+55mmcIIs + Tee40nl2LT3n9R6k7YxiGs9lpu0savrO36btzHH6zlmn8Wx5Gs/Tp6uHQABtfRMCdusV + cetHe0Xc2k+vCCgxmvpj0NkThK4+KAG09X4JoK/fDX09frxO+7+vEZDp6uUENUZT/yrk + NE09u4h4owZpfu9TBmRINS292RAaUk1DP7oANxr6s/m9B99XtN/7DgbQ12uR8Boaavq/ + vyT83wZVOPQQ9X9PTUC72f7vI+p2m/Db371TERrcBrb/+8Wi/9K54Sjjfu2Ri9AeOPju + 577Abji4TjhPdBhGX8KXeSbBD/Rbngf8+A/0sP3Yj5PwE3AEcAT+YwT+B80fnkoKZW5k + c3RyZWFtCmVuZG9iagoxMjUgMCBvYmoKMzAyNgplbmRvYmoKMTIyIDAgb2JqCjw8IC9M + ZW5ndGggMTIzIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRo + IDI2NiAvSGVpZ2h0IDE5NCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xh + dGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+ + CnN0cmVhbQp4Ae1991sU2db13AkGFFHJSM4ZyTlLRnJuQHKQDCIgSlCCIEhQTCgK5hxG + nbn3vu/z/Wvf2vtUVVcDzts4jvbM4/nBrm6b7jqrd1j71D61fvjh+/iOwHcEviPwHYHv + CHxH4DsC3xH4jsDfF4F/0fhxy+CX/76z2tmZKwj8hPEzj19++UUc4BUJHLxrZx/7N3u3 + ZAaEAGb/y65du3bz2CMe8Jxe/vlnCZB/KBrCFgACQ7B7z549e/caGRnt0w4jo7178fKe + 3QyIgOOfZxtsDQIFgLCXANhvbHwAw0QadHzA2Hg//scIgOwm8/iZneUfZBoKDLsIBcIA + ABw8dOjwYVNTM+0wNT186NChgyYABHhIaDAY/xAsCAdyCsAAWwAKJsDAzMzcwtLS0sra + 2tpGDGtrKyu8YmFuRoAAjv1kG2QaAoy/WUjcerqMA2LDrj17AAOhYGpmbmmJ+R+xs7Oz + d3BwlIeDg72dne0RGxtrS0vAQWgYS2D8A7CQcYA5MAyHgYIVYeDg6OTs4uLq5k7Dw8OD + H91cXVycnRwdCA8roHEYYMAyyDD+7lgwEL/8InA4eAgwWNvY2Ts6ubi6e3h6efv4+vr5 + +fsH0PD39/P19fXx9vJ0d3d1cXK0tztibWkBMMgwtFhILAMphT5bNfiVrSZpIK9QgEB8 + YHs4eNjMwopgcHFz9/T29QsICAwMDgkJCQ0LC8cICwsLDQkJDgo8GgBIvD3d3VycHAgM + uImJGgtl8lpiRqxM4WRAxEBmrzoNAoIMwmj/AeBgaX2EYPDw8vUPAAZh4ZFR0TGxsXHx + 8fEJCQnx8XFxsbEx0VGR4WEhwYFH/QkNgGFrY2muxYJJFzNTYmAKMQMBYUoGH5LSrkGh + QdYrDMLY5BBwsLV3cnX38g0IBAhRMbHxCUnJx1JT09LTM8RIT0tNTTmWnJQQHxsTFREW + EhgAMNxcHO1srGQs4CSYMgPAxExiZuBngpPJlIzsxlBMg51YNohDphbWtg7Obp4+/oEh + 4ZExcQnJKWkZmdnHc3Lz8gsKCgpp4DE/LzcnOzszIzUlOTEuJiqcwPByV7Cg4IkZ01AR + MyZkxMnUlEzmpyoD/aqHHLTkQEZ8Eo6xD45hbnnE3snN0zcgKCwyJj4pJT0zOze/sLik + rLxCU1lVLY2qKo2moqyspLggPzc7Mz01OSEWYBz18xZYWJgR5zIGCWVqSsTsEIgZMTP8 + exgURKJkRFCZhMBRvr5haAM5xTFRX4FIGe1jx7Cxc3QFDsHhUXFJKRnZuQXFpeWa6hO1 + 9Q2NTc0tLa1itDQ3NTXW19WcqNaUlxYX5GZnpCbHx0SEBPozFkdEWsX8mZsKZmZFzExL + yZBpCC3mp9+AkUkoSPPnOEakWiIQ5BiOLu4+wCE6PjktK7egpLwSIDS1nGzv6Orq7u3t + 7ROjt7enu6uzva21pam+9kRlRUlhXnZGSmJsZCiw8HB1tLclymWBQdQUxMwWxAzMjAYo + mZ2tRMmAhgDj67IQEQ9EZcXzR4GJOEb11YEDIBAWVkfsnd29/APDouKT07Pzi8sqa+qb + Wts7u3tP9Q8MDp0ZHj57jsfZs8PDZ4YGB/pP9XZ3trc21ddUV5QU5GSmJsVGAQsfD1dn + cAw7WwxMG8yUiZlgZu5aSga0LJB4CQwj8pKvw8gEDLTUQCCIMCYXmAfhxJw4nVy9fAND + o+IIh5KK6rqm1o7u3v7BM8Mjo2Pj5ycmJianeExOTkxcOD8+NnJu+Mxgf19358nm+hpN + WWFuFmERFkTB083FxRkD3BS81MsLxAzMjIagZB5EyUBQbayIkZkc0GLx18YLongUESQU + RH3JcQwYUH1lZUOJ08MnICQiNikN9qA5Ud/S3tV3eujsyPiFianpmdlLc/Pz85d54GDu + 0uzszPTUxIXxkbNnBk71dLQ21laVFUlYBINjgIJiEDf1DzgaGARmFkoDBC04MDAgwM8H + DBW2AzDA1Zmqy3bx12EhcKD0QIUV6ks2AlFgCjdmOunpExAUHp2QkplbXFENHHr6h86O + nZ+cnr00f3lhaXn5ytUVZVy9emV5eXHh8vyl2enJC2Pnzpzu7TrZJGGRHBcNjhEUyCMo + BJwkgolZbByGipIRGgwGGQacZL9g6kQw/pI8KuEAc0BhZYyAwPWlFYUx8mJ7dmOik0ic + CBAZOYVl1fXNwOHMyPjkxdl5gLCycv3GzVurq6u3pYHDWzdv3Li+cnV5aWH+0szUhdHh + wT4Fi7TkBHCMqEgMgiA+ITH5WAqYWVp6Who4maBk0VHhobAdgOHiaH/EGliwj+zmcPEX + QEHxgesJSpMMgwUqK1sYgSgwqcJEfQU6icTJjlGiqW1q7wYO56cAw/LKtRu3Vu+srd29 + t76+sbFxn8bGxvr6+r27a2u3V28BjuXF+dnpibGzChZIJGkpyclJGARBekZWNhEzYmZE + yXKPC0qWEAvbCQYL8XB1krAwxqIPQueXZxdqHLDcgLiIgGDngPrSjcKYtw9VmCgtgkLC + IqLjk1Kz4BgnGlq7Tg0SDpeXrl6/uXrn7vr6/QcPHj56/PjxE2ng8PGjhw8e3F9fv7sG + NFaWF+YuTozJdlFeXJAHBpqVlZ0NCPILiopLyyo0YGZVVZWVGk05KFkhKFlG2rFEOBLo + qY8nYUFMnV3ky5sFOYZMH1FPmFsiLjo6u8IIfDiMiThG9VVMXCIRiMKyqrrm9t6Bs+OT + s/PLKzdW1+6tEwZPnj579vzFi5fa8eLF82fPnj4hPDbura3evHZFYDHQ23myqe5EJc0W + o4QgqKquqatvaGpqbm5pJkrWAA4CSlZSlJ+TlX4sUWQbYGFnYwkXgVns/uUXIp1fLljI + jiHoI9XZBIOXj5+oLyPgxPDiOKqvUtIys/OKQCCa2uAYoxMX55cIB8Dw+Omz5y9fvnr9 + BuMtxrt37+gBz16/fvUSeDx9/OjBxt07t64tL1yanhgdHujram9prK+tqTlxoqYG5LSp + ubWtvbOruwfMjClZV0c7UbKaak1ZMbGQ5Lio8OAAHw9ULdYWMAtkVOEhXwgK9gzkzb2I + D0yb7MAfUWYHBoeGR0XHxiUkshOnpmXAjVFblJRX1TS2dvUNnjs/fWnhCuMAGF68BAhv + 3/3666/v33/Qjvfv8co7APL65cvnzx4/3Lh356aMxWB/b1d720kQ85Nt7R2dXT19/acH + wUrEkChZV0dbS2PdCU1ZUV52WnJ8VHgQmLqzPZkFecgXDBYAgiMl1VWm5mQPrh7efkeD + wyKjYxNQY1MYQ4FJFWYh3FhTRXyys3dgGI5xefnaLdjDY4YBILz/8PHjx99++101fvvt + N7z2AXi8e/Pm1QvC4u7tm4gXsIvxkeHB0/2nQMxP9RM5HT47Mjp+/gKYGQ2Jkg0NEF5g + IdXlxfnZ6bCL0EBfT1eYhflheMgeziFfglkIz9i9Z99+WnAADi4eVGdHRMclHktDZZWH + MFZSVlZOcawaNtzY3AoiNTBMjrG4cuP2vfuPnr549eYto/Db7//G+I/OoFf+/TvwABrv + YBkCC46dM1MT46MjIyDmI4KcTk5fnBXMDJQMnIwo2fkx4AUw2prrqyuARVpSbERIAMwC + 0cL04AEKFmDffz5WEBCgUvAMFNpcV3lTPRGbcCw9Kye/qKScwlhtPcexllYqsHpPgU+O + TVycW7hyfXVt4+GT5y/fvPv1w0dC4T//+e9///s/mwde+w+jQWCwXSBe3EbsXLw8N3tx + mnn5tCCnC4tLy1eYmTElWyJKNiOM51R3e0v9iYrivKzUhOgwmIWLwxHykC8EBQNBa5KI + EDAIJzcvP+AQl5SamVNQXKaphidQGIMPd6PCJDceGj43en6ScJAc4+Xrt4QDYJBB+F/d + IYBhNH7/+BF2QT7CsfPGypWlhYXLl8HNFxYWl5evgpMIZgZGxpyMKNniArGQ8XND/T3A + orq8KDcjOS4i2N/L1dH2i0EhAYE1SQBxxMHFw/doSGRsMuhCUZnmRF1jSxtsAPMfQBw7 + gwKT3HhiCnxy8cq1m3fIMZ6/evPuvcCBZ6wLgvKM/4/A+P3jB2Dx8vlTYIGkCr51jZn5 + tes3QMxu32FiBmoGRiZRsps3rl0FC5mZOj9yBlg011WVFmSnJkSFwkOc7Kxkq/hzyZSC + JVapCQhzaztHNy//4PDYxNSsvOLy6tpGxIPe/gHYAObPcWxyavrizOwc+OTV67du3914 + +PiZMIjfYQ80V2Xi2x3QG8hLfvv4/te3wALx4sH6vbW1O0zMBTnduC+IGREymZLdW7uz + euPalSUYxgVg0d3WWFNRlJOeFBMe6PvFoJCBMEGIsHN29zkaGkV1VVE56uw2wDA4PDJ2 + fgJhbEbEMdgw3Bi1xeqdexuUMWSD2BaH/0dDBxOBBVwEWLx++eLZE4BBlJy4uSCnRMye + C2KmUDIQ1LsAY2X58uz0+ZHBvs7W+sqSvMzkWILC2c6arAIZ5M9QLE6fsAiTwxY29vCM + wPDYpPTjBWXVoI/dpwDD+ATi2Pw8hTERx2DDN1eJVt+HPSBSUoSQDEI1ZYZA+kf1Mg4V + s/jwK+ziFQzj6ZMn9PM/EeRUxcyIoL0RlAyA3V9fE1hMjQ+f7mlrrC4ryEqJiwjy9XAW + DgJe8fkJBEHi51/27JWA8PQLjog7lplXjLoK9HHoHGBAYbVIYQw+LCpM2DDqq/sPHj0B + DoiU7z9uBUKNwxY4CAqKFlJOBRjKIHYqETNiZu8VSgaC+uzJowfrd2/fWFman5kYGerr + aKqpKMxOjY8MEg5y0NhoD5djn0U2GQikzwNsEV7+IVEJqdkwCKqrgMPkzBziwTXYAMKY + iGMwYrbhJ8/ApGAPcsrA9JSffhscdFwE7+VoASwQO0E+iY4TO2dy+kHFzLSU7C1YCIfY + u6s3ri5cgln0d7XWaYqOp8bDKtydbC1NTfYTrfjxx89EgqIl0qc5XMMrAECk5RRpapra + ewe5rkJ6QDyADUjzJxt+ygXWS/BqgQNRCIoRfwwE0FHeQA7CZkFsC2DQb4/BEICSqJkZ + KIj0JnIlGMbjB/CRa8vzFy+cG+hurdcUExSIFY5HLA8zrfg8/6AgwUCYWdsxEInpucWV + 9a1d/cNjEzPzS1cBA+LBA1FfUhyjQPaKKyzAAF7NVIo5hHae25qEeFF+E0FBWDDZAvcU + Q8ZAh5nJ76IQK9GQ9Tswi9mJkcGek/WVgCIuPNDb1cHGnKLmLlqu2LFViCBhZHzQzMrO + 2ROuASBKqhpO9gygrppbBA5rFBYRDwDAq9dShfmObFiqLtgedJLGH8CwxSwEGISGGCDo + Cgg6mMm+RDTk1fOnjzbWbq0sXpocHew9Wa8pyk6JDQvwckHURKig/PE5SPwEjr3fxNTS + 1snDL5iAKK1uhGeMTMwyjV6nsPji5SspjKHApDiGYopLLJw+nTr/vvKJ/zEQmz1EMg1M + nwY/o3/kD5Mf6TWKsaAhH8hH4CL3Vq8vz00JKAqzkmNC/D0oVHymUZBJkG8gWjq6+wZF + JsAiAETfmbGpucWVm3dQXz5FdqBwwPUlCkxRYio/oXz28in/7/8FhBoK/BFNcdNQPkr3 + gN4lUzKYxZOH67dvLM8Dip7W2vKCjKSoYIQK8g/kj50bxb8ogRoZHzKztnf1DgyPT80h + IE4Nj0/PL19fvUs0WsoOchiTK8xP/oT/NxKbsNCd7x89k7BAiP31HYrZRwgWDEV3S01Z + blpC+FH2D+QPihQ7CxRMLvfug29QtAyLTTleXNXQ3gcgLl+5AYN48oxwYLYg3EBrvsrv + uPnUvyAS+KhNn05m8V9kEoROeMijDUAxNzlyurOpuvh4SmyIP/KHxWcZBZsEEqjFEUd3 + v5Do5KxCTX1b35nxi5ev3lzbeCSVE0gOCAbS1Ded2pan+gCxeX5bPkR6Qf4s1f/LZoFo + QcFi4871pdmJs/3t9ZqCzKSoQB9Xeyszk/2UPnYWM3/8kcLlQfINn8DIxIz8irrW3iFY + BIC4j7pKr/pSdZ44lM/+Dx91/+QTz7SfoPMGMguOnGwV67evLc6Mn+lthX+kxoUFeDix + UVD62Il7kHNQuLS0dfYMCItLzS2taekeHJ2ev3Jz7cHj569U5cSWYK7vpLXzUR3pTG37 + J6p341D9HsksECxgFQ/XV1cuT48OdME/spOjgnxckUlN9u00ZsIkdpFJ2Di4+QZHJ2cX + VzV1nh6ZnF++AYt4jnpCWXBQnwkd657n13mmPQdhFgzF0wd3by7PTZw91VZfnpcWF+rv + QenDmGLmDtxDZRJeR8MT0vMr6ttODU/MLgkgsPKy/YLD15n41m/ZAgVixYvH9+9ch38M + djdXF2clRQYifYBzg13tDImfJZNw9w2JOXa85ERLz9D4zMK12+uPn716qwChPYNvZA0S + KKrzkKziw7vXyKWrV+cnz/W31yFSxIb4ujlYS+6hf6BAlNhtxFGCTCKjQNPQcXpkav7q + 6r2HnwJi6w/1dV9RwBBQfHz/9uXTB2tsFF1NVYUZCeEBnk5HzA9x9tAbCeEcJkgcbmQS + OaU1rb3DF2YRJB48ffnmV9k1lC//NtFhE9LK2RAU4BW/vn7+aP3WlfmJs32tNSWImbJ7 + 7CRQgEzs2msMLuHkGcAm0dg5MDq9sALfeAEgfuNCW/nmbxIkN8GAp9rzART/+fdvMIon + 9+9cW5gePd1RX56bEgP3sLdC8bGTQPGvHymFEr30CYpKzi4hk5i4tHzzLnzj3QcBhCp5 + bj2rb/SKDAbxCjKKZw/v3liePT/U1VRZgOzhh+KDA4X+IZPJBFKoo7t/aFxaPkUJmMS1 + 2xuPhW8Qq5S/9RtNevuvlU+KjAKk4sVjipkTw72t1UUUKCiPHgSj0BsJ2Tlsnb2ORiRm + FVe39AxfUJmEwQKhuAhFCnaPjdsrl6dGTp2sKc5KjDjq5QyauR/cSl9CASQoc1jZufoE + Rx/LKatr7x+ZvrwCk6Ao8e//aC1i+1/mW74qWQWM4vcP7zh7LEyP9LfXloqQabtTJBAm + TMg5/EJj4RyNXYPjRKoeUJT4/d8wCen7vuWUP/Xd4tQIiY/vXj17sHZj8eLY6fb6suNI + Ht7gVmCZO7AJ1Bz7D5qLzJFZVN2CeDl3ZXX90XODNwnZP0SgYCSWZsYGOurLco5FBe0Y + iR9/ohxqaeviFYjMUVrbBudACr3/5OXb978ZuElIyfQPkdild5wAmyCCaefqGxyTklte + 3zkwNrMonOPj74gSBuwbMqv4Qt7BAdPU2gFLNLGp+Zqm7qHzs8s37z16Rs6hRIlPOeo3 + fF36ifBASFDEZGqlGzGN9c8dzKs4YPqHxWcUcJhAyUH8kp3DcE1CQUJk0TcvH3MWPfe5 + WZSRIF5FVDuz+ERr37kpyqEIEx8M2jlUQAhmhcJj9cocmFWLYFaeO2RWAgmkDsGrajhg + Xrtz/+lL5FA5THxDH/jkV6uQoBKMkiix7XFm2+lYq9kp2yYk9h+yAMMMjETqqGs/PXpx + 4TqzCaJV/H2fPJtv+R8yEttUYBVigWKHFZiMhEiiZfXtSurggPl3QAILu1LZsYKlmlMn + a0tBrJhO0KKV3st3/yJiRXTCG3TieFl9x8D4zNKNuw+evf57IAGTEOsTzx7eu7l86QKF + CW3ZwQuZeq7UEBIgVnYu3ijJCYnBvxsSMAmqv7BmdYMWMqkoT4/HOj8FTCrA9F3m394m + ECf+NjYhOwdyKNdfWKihdUx3eR1T/1JUREyOE7CJ7eKEgaxT6cZnKWJKzvHmOa9OTJ7t + O1lTmnMsmi548PXynSxP6OSOWjl3PH31Tskd+FLdszCEZwoScI4PyKGqMJH9Wav8nDuo + FN3CJ3SYleFBIZBQciiFiaVZChNVhZkJtE6D1QnqJtnBkhWWJ2SOmVFEHHNyfmWVlu7U + bNvwrEJGgsLE+zdYz8Ui/8Wxwa5GTYG0yA8k9uqfRH9gjinXHekFVc09YnniMS9PKBWY + ASNBa/xYxNyQVrYbNEgdfLljhzbxA2pRrGxb0cWO2NQ8sWS1fIMWtnGpQ7V2Z2jBQrEJ + GQlOHVjj1+TrIKF/W428PoE1flrGrG8/jZUaFB7KSo28QmFgZqGLBFKHggR5B8UJ6kXc + ycVysWYlCo+k7OKa1r6zE1SW8+rd77rtlYZkF5uRYDoxOtDZWFmQmRhJq5hWpmgboAYj + PRkFXe6gjgFHjwBaoKhswoou+DZdCqTlu81QGEIC5XPQRYLixPWFi5Q7qIEimpiVjRkn + D73dQwqZ4qpoSi6v8tPlYRjF61+3XgIzmHSqi8TLJ5xFz2u7ajwl99DfKIAEXylHr1lg + ZBKu/DR3D43PLl5fu/9Ee1lUWc40nGChg8RbdNXcwwVi6hpAq1VGInXV2FvvrD+Vr4Ht + R7e2o4d/WFxaXkV9ez8oxZWbd8WlcslBlLhpKO6hIEF8AhwTIfPaAhGK5uqSnFS06nqi + P5Vipv77G/i6qImZFbrN6AoxGcXg+MWFFfgH2ie4s4iuCMpQGBoSdKWcmmrIPZYvob9I + 6r8LQi8JNRjx/gb9YqZwD6lrIB5GUdfWh/6Jpet3NqjJinZ1id5D8SsYIBKgVnAPLGOi + GB0bRH9qKfrvwgO8nFGEmezbq7dRCPegFkQ3XzYK7jeb4sa7Jy9ea9usDBEJrPCjQxXu + 8VoYxdwEIkVDZZFIH9R1RpxCz3UrbcMZWkmoB7GsphV9VuQf9x5SV43ujibDsglCAu7B + nYhsFNyUWVuen5EQQW011J8Ko9CzaZncQ+lLjUrMLNDUo2Vb8g8pVGhphcEhgUCBruV3 + FCnu3rwyPzVCTZkl1LSMZhLqT9WfaMI9uDEV/UUe/qHUtF3d1EX9mNSYqviHHDMNDwlh + FG9fPZealodF0JSI5k6alsk92CisiFNEJKTnldVSs7KUP6izRgRNDhQGhoRwD9qAK3Xq + gmgO9XDTciz3p+6oIpWMgjgFOjLRwF5U2QBSgWYr9KaSUVCkkAt0w0OCIoWAApkU/kFN + /Y2VhVL1Idbw9FzXJaPYJTY1OHsFhMuN22PoHiBS8RKkgpFgSmGASAgokD8k/ziPXqta + 7k/ltjNa4f5ZzxVuNgpsdDHnzu2oJA6a/Wcn5pYpUkjuIQUKQ0MC7sH5A1Hz7SsmFdTJ + TiUpL11Rs5Wxkd5dmWwU3IpI3fySUUgdy0Sv4B5KV6bBIaGFAqGCljP5+k9rDV8J80GL + 0Y66MrVGgUiBdn5Eika0809hRXNdalmmPEoh0/CQkKEgVkGL/djeMIK1q4o89WUPfRcp + RKTYj+pDpA/sdUE/P7uHVIgpIdMAkZA3qP/2AaRbVOdD3dS+jfVM5VKYfqXHDz/wnnLe + 7EI9y4Joyt3bHCgMGwkyC1rkFkaBnn5q39ZeHt1hVyaxK9oJRuyKtv209p45z+2IhokE + bFMUQtK/VICQUYj2bfQY1al7EXfpmUZ/wGI/FvGMgAQtU6iQoI5+g0VCFwt139nM+EAn + ro/SVUHe8bL3M5CATchlGLwD3MpQ44QUr7R2QUahNLJjQbMRDSVo6cf1UbRRII3q2zwg + 1R7YFAduxTug2hEx56/ckra7GFwWVSK3ggUj8eb5I+qjoJZ+DScP3tywAyTEbmoTU+QO + b+yTzCysbMTGH/RvowvvGfiEtvBQzsBgDmQoZCTWb4FRnOn+PCQoTOxGqy61b/NeMLGG + N7N4/c596mQnJAyMY+r8EAzGF0JCFOa8YzQcS3jltITH+13kLVCGVoF9Ggl4B214aVS8 + YydxQt4xSpuIaQWvqKqpC1ugyDmwrIsFPCVMGAzHVCMhTGJTxGyowCaoYBEx9c4dnEOZ + TThJmQMLFLRqxVW5cA7DtQkpTqj62Be3dPTr28eOsmPXHnBtySSyiqqo6phWVR20PCHW + +dW/hWEca5EQ+12ofUC3e1t/jknxkmgVEUxe0609uY1JGDYSzDHRUvJ4Y5XaMvtaTxDb + 5m2jtEChXwUmnIPLL+rKhEmoo4TYRCybhOHFCa1JcN1B20bnLgz3NFcVZMSH7bBnGc5B + KZQW75hpy4mDL5grq5jCJAwNCQkHlGBoUKXOM6pFqS2zQUkdO1if4MvltNtFXCQuwtL2 + 4BjWc7F3VqzSaKOE4axPSDFKiwQ1qEpbGzhMUAEm9yzrS7ap+sKmOOx2oQ4jNA7w0gRd + I8Ya5uYN9oYRJZWzUHxD6ll+hEvml3hrQ3EmbZWkO3Lg2o+epajudupCaiaBSaDDiDdK + brqln3IOBnGgAEEXiuV99rhi3tmoyVdvJNYPCQoTvBWMu9il7dRzovaSKw4pSOCLDQIA + +SS0QAiTkDp1RUO/tlNX365Muhoot9/FpOZW1Ivt1Hew7+eNxC61QBgUEhIQFC6pi0K0 + scv9qaquTH2XtjlgSi2ZcenUaUWb4mhng7x3VgFC/i0M41EHCLQs050X5NtxbGpj1291 + gtv5D5rb8F0XMour6V4DvClu895Zg7IH7YIVrWFyU6Zo1N1yixa+QqzXOo3Y2CD3IZbU + nDw1Im2KEw3LBmkRsj2IdW1qocB1H+61mjh3qr2uHKs0vBUM9yXR/7Y9QEK1i5ia73DX + BWwFkzfFGSISukBQgxFfC5RarZqqi7Jwfy/uydxB08AP/xL7qbXbfgbGLm6zi9iQfGML + ENRKwp1Ws9j/dJIvisp3cqJ+fv3ChBYJLE1Qv3KHsimOt3jIJmEYUVKchYIExQi5p+bB + vVtX0UhyukN7oZzbdPVtLsIKv8omNiOhbBnFdxsKFAoM8rUvVccZunS7W06U5IiOGu69 + 28ENQ7VIiO2Bqm0/2s2z9PUGAoUWCWERBAT6MfkugBeG+07Wleeni1tDUuvdTu4CKCKm + he59F0Q3P1Zy5bUqA0FCC4PWIpA2nj++j4vk1HnXgc67rGS6Xahox9yBScA7eCuYsgEK + 3fy07Yc32fPtBuRI8e2NYhMOUowQQGi7zUSLrrytQc8WRCIchARvgPLANZ+MwurmnjN0 + yx5c8sFOSd7XoDqBb+khqtNggwChogZEAgJtRVfn0ZZKHVZ56ehA9Hahtm267bbevfx0 + TVQuysUtKBo7UYqihV21r0F7DgaCBCIEGQS1V7FF3L119fL0+FDvyboK9a109e9KZQ4q + V2Dy3Ytq206hhV3a1yDd7E0LxTcLnOpTUAFBt0y9vwYgLo6f6Wur1xRmK7dXpnC5E5OA + TeAGLXSrGvmOVryvgTa7SFfJtW2p0tl8fcNQwyD30OCOwmhIpdvowjUAxHBfe0MV3Uf3 + 82+5zWv8KMGku5zRvga6F6J8cXjTUg2f1HZY6Jzt9k+2+7PtXtv+r/lVMgdyDHHH7Vcv + nj7ErZWvEBCn2hurinNS41W3YQep0m9RWyrQpNU7ZV+Dcn9M7jZTlu+UFMJntHkCf3Dy + 6v/a/GfbPlf/geqYQSAYJBzIIHBzfrrd9jRZRGN1CW4yHUm35rex2NnWDgkJChR0ucOW + 6vL4dPRYUccA96XSki6r1Wy64T6fn2oWqvP940PV33zqcMsHSAiQLfD911nlQrkb/eq1 + pblpxAgGIj2BmIQi17CDvCGFTHHTVGv5PrpY3B6Af6BvG/fR5d0u298/Vkswtpz9J1/4 + 1Py1r6v/VAaBIGARAyHpQII4LJS0fufmysLs5OhQb3sDLCI9MSrEj9VMPk/CQ7osKu6t + jCvlvK9hcEy+yfSrN7jpOIs50Xmpz1NGQuc1kerlKWz5E/lvtDPffKR8mvgMBoHuev87 + qYhJomokhsOqFdeXL0PMhKQaqgQQ/p4s6wKNtF2foQvG99uGTgNadFGPcotuW69043Fx + v23e5CHt/dEFQzlvPlABQPep1z7Vvm3zxDc/l9/JfysLVSjKcnAKCJm8gOogVF2gZLII + zyAlE2hW5KQlRIX4e7pIUj87S6BKoJDbJ3hfw7HsYrSw42b0uAf7jbX1h6xtJWPBs5PP + dtOjdPJkyAhqGNuJT2yeuc5z7QfSZylRQVgCqQ1C/4bEF6ETxUo/ULcZHTrV2VxLki4y + ELzRh8jljvKGFCikfQ2kYnJUV6AAAniQdYJchSL8Jv3U2pMWRwIGCQJSCiS9QAGH+Avt + H+hMXueJ8h4GAnCS0gtEBhUQIBD1COpP0A5j9aep8bMDve1NJ8pJEywy2M/TxZ53PAlx + G327USWDoAeQK9GOaeOIzWAkWlFa3cRaDXNL1yBiQlJfAgtwTpKwUdk9I8AnTlmevJlE + PYR6pCLuwX+gTFNn8uonyjvweZQs8VlQ1CNhHzgEQCCZrPV1KILdvH51iVWwhk7BM6pK + 8zOPQfrJz8PF7s8Bwe2YOkImGXkkZNI3NDo5u3D1BsmeQceEhBHhJKxjIxk+I0IRgW2B + QSCdyF+hJkpDyH0I3RtMTpno9pRd+98MhCBPlCVeEgoAYQNKtXcgJHcN2pPzs6wS193W + VKMphmAeyYEha1iTa3y2RchGIcRtXCBuE52UAatoaIOmy4WLEJElKTyW/FLETEjIhExf + HsIUSCyTDPn1K9KzYiErgAHsyI50odiSQ7Q4SL3HKsk04RAAAVp5JC44P3txclxWyysj + z4gOPeoDiTgBBPZz7JRJKA5CiVQoP1mz8hNBUVLFgkfjU7MLy5AFvAsZOEnghn5roe1C + jsADqk2MghAvewaFXRaGIl2od5Lyx2Yo1IahgkHCQdavIRk9CKHBIQgE0k+8NDM9eX70 + rI6CYmRIgJebo62QDRRAfEaQYDgIClIDQxeFgCIxPQeqaM0dfTALaMkCi9ta0SMhW8Z6 + R6R5RN5ApkBxnbyZRJdpsEQSAgypoGxnFpg/RQk1DEp5hXpblpm8B3E8OARMgVQ3J0n0 + feg0afXWn9AU52WnJkIzELES6leyfiIs4nOBQKRA0KRQAakfB6EHlppdWH6iEQJxkFEl + LCAwLAlhkQyY0MAiFajXwhlYWliENBLixoBA932yIynYfoKnbocDDEItPXod6pFsChPj + YyNnzwz293V3tDbVCaXV5DgYhI8Q4NUqrX42EJQ+KH8I1UBA4R8cGZ+SlV9ayZrThAWJ + b0viaJB4lHTR4AY8nkpy0xzSYMhiQLD8LotGwUdUZqGOnGocEEgoZSD/0AIMFHyesDQv + ZIohHMmmQOq8vd2d7a3QZa4qY/Xd+KiwQD9oi0KU+fDBL6O+K0IFoDAlAUVPv6DwWAjT + Q0iygWWGRy+wIDvAIEF2aJGTVtyDhzxwgLgOS7gtefPy0uIiycWuQLccPgUBLVlvU+ap + umgwBhKToswJx4Ag3qP7Qq557iIkitkUerraT7Y2NdRCzbukIDcLiszR4UEQFhV6syZQ + ZGaRvM93DREpJCiMyUHsnKElGRadQOKiGkhPd/aePkNakhBRXFqGFCwUFEk/cO0uDxzc + EbL0HNLmZmdnZi7OCO1RFu0W4lEqbraFj1AiRh6iPCwCBNFpWcIbMvcwhY42gFBXU11Z + UVpcAP321CStSrfNF1Xphn8IoVXWF3Vy9w4IiYhNTs8uKNXUNLR29JC+KAlrXiJJSYgD + k6akPCAVe1UJaRPnx8fHxsZYj/YSfEoId7P8KKURohdMxImUi8G5mAss5pOizFxbvX4F + ktUXRodPkxo1C5VXlLGKfWZ6anJCTGRYUABkqZ1Iopt0qffu+VLK7QoUEN+1snV08YRZ + RMUfyzgOLE7UN0tiq+MXJiAZfWmetIKXoDS6vLy0tLiwME8hDeLSCGnDQ4ODAwMks31u + jHxKiO0JKVaIRG7V7obMGlKxlIchM0r2ADp9dXH+IiTdT/d2tDbWsXh9Qe7xrIy0lOTE + +Jio8JBAfx9PNyf7I1ZkEMIzPqfWUKiE6kCGAskUgsz2zjCLoPDoBMKiuEIR4D1zdmQM + cExNs/jsLMbMxenpSVjC6DkOaT1dXZ0dHZBt7j01ADOanGVhe+IjSDmy3h6r7UmK7op2 + KNjIcyEeirIC4qGTY8MDwKGhphKq9bnZZAqJCbExURFhIYEBvl7usAdbawuzQ2wQLNq+ + 86JLNX/VoQQFeMVBUwtIEUN5NiAkPAYa3dl5EGWuJlHmzu5eaFKfgR7xCDyAxxhUxskS + +vsQ0tpam5sa6jEamvDm3v6hEXAz8FRwdojusQYjK1CSiqg0SE5WULKnXF8p5dW5wb6u + 1sYaTWkhxYXkhLjYqIjw0ODAo/6+3h5uLo52R6zBIZA7KVRy8fknsqcKBxwSFOAVe/YZ + C+F26HRDnzo8Oj5ZJdQNne6ubmhUs0j1IMYAKc/3diG7NTfW15yo0mgqyssrNJXVtQ2t + 7RCsHTmPHEx8ZG19Q9LllNSFhcSsojH88MEG0UlZZHiovwtlRWVpQU4mYAAKYSFBRwP8 + fL293AGDg52NFezhIDsGDOJLeYaEiIBCCFSbWlgdcXAGFgHB4VGxiUK8vbS8ErLlDdAt + Pwnh8o5OjI6O9raTsIT6WoBQVlJcWJCXm5ubl18IifMT9S3tPf1nBE8FFreh1SrJLUNt + mAcJDxMrRZWJPIz66sqiJDzNItxlhTkZKYmxiAtBZApeHu6uLk6O9nY21pbmpodMDuxH + pJRw+GIGwWBAqhsUi9Tb2SysbQUWgaER0XGJx9Iys3MLikrKKkjLvqa2jrygvr6utqam + ukpTjuyWl5OdmZGeSiM9A+8tISw6ek8Pj14gbnZlhWTIkX2hP84a1CRFrWiRQ66c6isW + I6dAKYTZM1MTYyNDgwL8fMgUnGELdkdsrCzNzQ4fOmC8z0jG4UtFCJWTyB5ihGhxGJET + WLh6ePsdDQ6LiI5NSE5Jy8g+nptfUFhcXFJaxqO0pJgNASCkHktOgDvTiE9ITkWsLeEc + 3IvYeWFqZu4yaTpD0voWROlvi4Ej1JgAQeThGQjUo8ykQCnKiqTYSE4T7mwKR2ALQMH0 + MJuD0R7YAwWIvwAHESzILBAt9jMW1rb2Ti7uXr7+R4NDw6Ni4hKSklPwi2dmZWcf55Gd + nUWGcAzZLTaaYloIRmh4BFwqhXOwipuBjlwGOyNCIo+rV68so8i8PH9JkOrhQYjTtzTU + aEoKstOT46JCA/28kSYc2BQszGALCA7wCpjDbuEXf6LgUpnANofkIQic5CKMBeKFnaOz + q7uXj19AINCIjIqJjUtISExKlkZSIhkCQAgLQWAP8Pfz9fX1CzgaFBqBvJORQ9ysUeJm + Y+eRf2dmL83Nz89fpoHHuUuzKDKnJi5wHu7v7WprRplZUnA8I5nKCn/QaU4TFmamDILx + /n0SDBwn/zIcCBpAocLikJk5nITB8PTCFAODgkPCwsMjIqOkERkRDkPg7Obj5enh7u7m + 5u7u4eXjHxgCLFIEFvUtxM0GwLdGiY9MTExOTmFMTk5MXDgPRnZumKrMns62lsZaKjOP + ZxxLkMoKRzsbSwvYgskBCYQ9u2ENfz0MbCWMxS+SXZgcOmxmYQUwHJxcXDFFb19f/4CA + o4GBgUEYeDgagOQGENzdKLA7OjjYOziyFfkdBWVnLEqIm7W0dYBv9RP/HB4+e47G2bPD + gABFZh9Xmc0NtdWasqI8+AVwCA7w8YA9gE6LNAGHECD88jNlTVjDl80X2zgIzELBYo/R + PuMDBw+ZmllYWh8BGo7OLq5u7h6eXl5e3jxwAENgEBzsbI/Y2Fhj2NjY2jtSeAEW5COC + m9XUN7W0tnd0dfX09vb20cBjTze4SFtrC+fhitKi/OPgDygzg7msIBwOH6Q0ARRgCQQC + ofB1YBBmIfvIbgQMBuMw3MTK2uaIHeBwdHJydpGGs5OTo4M9gcCB3YwH3moDmspYgKcS + N8svKinXVJ+orW9obGpuaWnl0dLcBFJaR4yM8nDu8cy0Y6BRYcDBy80ZZYW5KdgTWANo + pITBVwRBthIJCziJAMPkEEwDtkF42ByxtbW1w8AD2YGVlN0OHTQxOXDA5CDeivAiYSG4 + GRIw8m9xSVm5RlNZVS1GVSU4aVlpcVFBvigtiE1SXeHp5uzAZYWKPX0DDBQs1GAY7dtv + zHM8DDzMzS0ACQ0LC3NzM0rxCGkc0/bR2H/gAMKLjEUAEkkU6Mix1IxM8BFQ0IKCgsLC + QvwLBHJzsrOQh1OSE+LBJkODjvp5e7gSDigr5PIKHvE1ooI88W0eRcBAViWKsWevEeZo + jN/c5CB+dWWwHciBfQ8PvBPhhbEAT/X08UNWDY+KBuNKAh6paenpGTTS09NSU1PARQAC + 5+FAZpMuVGZygODy6ktXFdvMU6+XGAxKqwINwAE89u3fv9+YBw7w1Egb2PE+fifxEfYR + WyQdiY4g/0ZGRcfExsbFi0GMNCYKhIzJCEoLT3dXZ1FmIlCqygq9TvWvfxPyFcXrn35m + OHbthnnQ2IshjpDh1YH9J8KNQq0xsDBD0pHoiI+ff0BgYDA4aGiYGKGgpMFBRMh8CQU3 + pGGwSfAHKjP/qvLqTwImofEjZsmA8E8v/4OXRHLj9CZQIywkH9HSEXdPL28fcFA/f3+Q + EvwDRurj7QUyIlWZDIOoK0TCoIz5J0/9r/hzwMHWwXP9SQw6pkH/J38nvUvYBeKsTEeI + nDlS9gUh0Q43UBEUmagykYSoyjSFOXCZyYnzm0dKeUqfeKRZq8fWt2mxUNERS6Jcdnb2 + 9g6gJDxASO2RipGI5TwMUr2P+INEqLXobv2Ov8srMhagI3ICPoz0S8nXimmoDYa1tRUg + sNDmYa4yqdqWCPXfZbZ/fJ6MhXASSsCcf5F9Dx82BSORhqnpYVAREDJBRiRSLaLOP8Ee + ZIQIC5FyZDrCeBwgSsIDRwQBJ2IqsDgDSYWF/CH/lEcBhqAjBAdyrxEzEqKiRESMRCqW + 8jCnIISgf8r0deeBiVFyYZZBrAuERDV2MRX5BkWm7kl+tWcSGoQHERL1wCsElG4e/mon + 9o2+iDOvmLbqX371G53R96/9jsB3BL4j8B2B7wh8R+A7At8R+I7Al0Hg/wOxLUKpCmVu + ZHN0cmVhbQplbmRvYmoKMTIzIDAgb2JqCjEyNjM3CmVuZG9iagoxMTggMCBvYmoKPDwg + L0xlbmd0aCAxMTkgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lk + dGggMjU0IC9IZWlnaHQgMTMyIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBv + bGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUg + Pj4Kc3RyZWFtCngB7Z2JVxVJsodttVVAQBZBNtkEAVlENkVQBEQRFAVZlF0ERUEUQUFF + xK3tnrHbnteLM223M//p+0VEZlbW3airvIHzIM7h3lpv5RcRGRmZVZVs27YlWxrY0sCW + BrY0sKWBEBr4ZuNJiNKu1S6C3u6SHesrrrJs307lWytW1+9obtDu3Lnz240mKNPOHTtY + GWuuAUEnbqLetWs3ZM8GEhRn165dVDbogFSwhi7A3s7k4AZzRERkZGTUhpLIyIgIssZu + UoE4wdoogNhhdZgc5BFEvTc6OkZJ7LqLLkn03r1RUVCCaIA94Ov5mV3QiXxvTExs7L64 + uLj4+PiEjSIoC0oUty82JiZ6bxQrgBzgqyuAYd+zJxImjwF4fEJi4v6kpGQlB9ZZVDGS + kvYnJiYmQAUxMawAVAHi/xrzK/hdxA50Igf2gZTU1LT09PSMDSPp6WlpqakpB5KhgwQo + AB4QsWe32P+L+anC76TqTuz74gg9JRXQmVlZWdnZOTm5G0NycnKys7OyMg9mpKelHkje + nxgfFwsHiNjzNeY3ho8g9nigp6ZlHMzKzs09lJeff7igoKBwg0hBweHD+fl5h3JzsjIz + 0kkBCeCPiqQWYCfVflfi4mmF4b/9Fobfy+wHUoGecyj/cGHhkeLiktLSMluO/tfFvnpZ + aUlx8ZGiwoL8vNzsrIy0FOaPdszvidg6iODh9Xtg+Ni4xCSwE3pBUXFJ2dHyYxWVlVVV + 1dXVNRtAUIyqysrKivLystLiI4WH83KzDqanJifG74vZC/NL8LPIPCxq+MgoMnwysecd + LiouKz9WWV1zvLb2ZF095NRGECpIXd3J2hPHa6oqy8tKjhTm52YfTEtJSoxD7afgR7Hf + A7NziLI8vD4uISklPTMnr+BI6dGKqprauvrTDWeamprPnm3ZKHL2bHNTU+OZhlP1tSdq + oIBi8GdlkPlj4f3h41vwbPhDYC+vrKmtb2hsbjnXeqGt/eKlSx1KLq+b6BJcutje3tZ6 + vuVsU8OpuhPVFUeJPzM9JSlhXwwqf5jWN/Co8gfSMnPzi8B+/OTpxrPnWtsvdVzp7Lra + 3d3T09vb27fugkL09HR3X+3svNwBFbQ0NdTX1lSUFRccgvmTEuI0vud2H/A7EPAio2Pj + 96ekZ+UWFJdV1pw83dTS2t5xpau7t+9af//A4ODQhpHBgf7+69f6eq52Xr7Ydq75TH1t + VXlpYX7OQXg/4XPo81j1Nfxegs/IyissKa+uPdXY0nrxcld33/WBoeGR0RtjY2M3ScbX + WagMKMuN0ZGRocH+a73dnR3t55sb6moqy47A+x18r5HvG2R4sLzAZ+cVllXU1DWcbW2/ + fLX3+sDwyNjN8YlbtycnJ++Q3F1noTKgLJO3b02Mj42ODPX3gb+tpekUzF9ckJuZxtan + hs8bPlf63RFRMXGwfHZ+UVnl8frGlraOrt7+oZGx8VuTd+5OTd+bIbm/EYRLcm96auru + 5O2JsdHhgb7uKxdbmxtOVjN+anLCvugoZL07vDR77PcMn3hA4E+cajp/sbP72uDI2MTk + 3al7Mw9mZx/Ozc1vHJmbezg7++D+zPTU5K3xG8P9fV0w/5m6mvISWB/4sdGRe3ahy7d6 + 1YffI+LB8onJ6Vl5sHzt6ebWS119/cQ+de/+7MP5+UePFxYWFhcXnxh5KmLW/4sLKMci + ivP40fzc7IOZ6Tu3x0eHrndfaW9pBD6c/2BqUnzsXop8q/s++z3C/b6E5DQEPIa/0HH1 + 2uDo+OTUzIOH848XFp88ffrs2dLS840iS0tLz6D9JwsLj+ZmwT8xNtzf09l+rrEe+Idz + MlL2I/Cj6q9ufDI9+X18UmpmbmFp5YnTzRc6uq8PjU3cuQf2hcWnz5aeLy+/WBF5KfJK + i1oP8qVOCv71peetvHix/Pz5EhTweH52ZmpyfGSgt/PiucY61P387IwDiVz1VzW+4/cp + GTkFJceOn2L44bHbUzOz8wtPnj1/DvCXr169JnlD8tZfeHvwDz7X9eF3rPpN93bXKT4r + r16+XFlZhgIWH889mJ6cGB3sg/XPnKw6WpSXlYaqT76/mvG/QccOjd0+VPrs/OLymvqm + Vlh++Obk1P25x4tPny+DHNRv337H8o7ke5IfWHjxe94a9EPO9Pu0jpdfoU9ro98Jrg1v + 37558/r1q5UX4F+A+e9M3CD8lobayrJCVH32/dXivjY9+f2hoqPVdY3nL10l+OkH8wtP + l5ZXXoEcl2VkAf4b5O+20AYS2f2DrJhVtTXolz7c+Q56qNrBunr3DqV6+4b5ny0+ejhz + d2J0oPdK29nTJ46VoOqT70fuQeALFfbF9NFxiSkZuQWllbUN5y52XRsam5yG1z99vvKS + 2GFrui6KR8zvWX50RDaE/LR1JcshDzc7/c5TKtJqgAbegn956cljxu/vuXyhCZHvSF5W + anI8Mt7QxmfTR0TFUryH3x8/dba9s28Idf7B/OKz5zA8sTO5xf2TdzE6ev/eLNoLwX7J + PubHH4021AIrBYpAwb5/B/6XL54/Bf6diZH+7o7zjSfJ9zNSEuNWMz6bPopMfzC3sKyq + rqn1cs/AjVuAX3i2vPL6DbOzzfnCKBSV98OHDz9bgtUgEgzO2c4n+v6Ws9teYo04ioAK + mJ/wX60w/uTN4WtdqPonjhXnZ6Uj8JHxQ7T527d/u4tNTyGvAn5/6Wr/yMTdmTmGh+HJ + 4X3NTuj/sMQqvCzSPrVRqcWmoGW12Tnc+TneprXpex5pwFYA8cP8b4D/5NHs9O2xwd4r + 8P3qoyrwoeYHD/vk+Eh04vanHjxUeLSmvrkNfn9zcuYh1Xl4PZzeXdml5G54ZhVah0GW + 3CrQSPSt9vieoNb9ztNa8KWH/Rn/9asXS4vzD6YmRsn3z9RWlORns/GR727f7oxguZbg + +MhxUeth+pLK2jPnO7rJ72cfPUGdh9treBPq2Gxi+P/R4k9Ae+ytCsb+snbT0b/8Qp8s + 1h5zAuuNNeBje/H+79+h7i8/W5ibuTM+fK2z/Wx9zdHCQwdVzQ9qfErzYHqu9TA9Qt41 + +P39+YWlF8Hgf/pA8CjnL0ZUsdWX2ayALBr3Ih/PR/9qCTbQDveh7FkfPih+4/oq+sH6 + qPtU9cn3B3o6Ws/UVpbkI+VB2CfjB270JObFxHPAr6g909rRMzg2eW/2Mfs9gr24vbI8 + ojaZHvCEbhX4Vw1sb1PLvEvpxf5yUf/miH2a9geliZ9/Fn6r5lv4b9j379+dGEHgY+NT + 2N9HCV9w+l0RSPMOZCDgV8P0XddHJqbuzz9Z0pWef97l9wTP6FLi3/HlQKttv5Pwst6l + 9aO/1XYcQ4d+dERO1KdpvSpnCIH/7jv4/tOFh/cmxwZ7uOYj7KclUWcnWNzjmIcxjVS0 + 9cdONJwX0yPkLb98zZXehn9vLA94LrUuMwEo0Zv0NzaTFgyNXhBqjf1PR+REdZpzIlcH + akjI+y3jv9fWF99/QoFvBDW/ub66rDAngxq9YK7PET8qBjEvp6AUbX0b1/oH8wh5HO/d + fm/oCV7bC8XWoPLNHP+C8ILep5VjvtUOHETH/sFC33KePu2j1gIpDQoIjv/DD2j2tPEH + ujvONRwvP3IoE9l+dGQQ16eIT46PTKeovOZ0yyUE/Nv3Zsn0b7ixc5setudK/wvgqXzE + ZzgZltYUigZya8Fg4WT72E+fPskJSg1yllEsORDxO/gm8DnGR9xfQat3/+74cF/nhaaT + iHvZEvfg+q6WTla+2Y6IHxOXRI5fUdvYegVt/Z3784tU66mxE3gT83TII9Mzu0a1Oaj4 + nz79+acPDyvH0ZDREQ6jo//6668/Rcx59KOWBzE/4/v4vhSSWn3UfA77t0b7r15sOVVD + 6e6BxKCuT9VeOX5ZVX2zxDwJ+P6mtx2f4VE2y15CTSQQwCgaprPtqk+xjqSjHeEfsFxB + dACn+R3m1/h+NZ+Snu/eIuyjzZ8cG+rtON9wAn2dzFQk+xG7A7V5nOqQ4yPiH4XjI9MZ + m6Qcl9p6tHYuv0cvRWyPgC+md8OLDZkbJJ8/axyGgSeQR1giGqKDcOTnz5//jT9eUOfh + ND5aKetfVAkIn3yfje/j+kSPsE/5rsS9NnZ9jvrIdgO0eVztKcvNyis+hsYejj+OTIdi + nhPwnatQtf/AzR3Ta3iFRJSaGDCg0Wv0TSyiB/Wpdiruf5NgmZRgTuMjtQo0Poz/888U + 9p1ySc0H/vcS95Dx3OjvvnhWR31p8/wqvqr2lOqUVJ5sauPGnhwfzZ2/6cn2AegdeCk2 + MQBeYBwWQmEtWCpSB9LB//nPf+gLwufbKqALcFvAxjeub9GrwAfjU9wT1+9B1K8pL8pF + trtvL41x+NOrao/hPKQ6LRcR8SfvPSTHf/udjnnWRVwhn0I2e6XQG7tz4YmGOBjF2NK9 + QAcSLWMDXtP743O1+YOMD9cPTs/GJ9enJn+47wqy3WPFGORAmxcRKNnloBercvyGcx29 + iPgzOuJLrbfgA9vemN6yPKg0DDFy1XajY03YldFD0/9JUTMUvTa+uD6S/Vuj17varYof + qMXn1j4uMTUz70j5Car2wxMY1eBqrx3fh57aex31AtqeaBUX2V6M7/i/pQM2vHb51enR + 9gW3/XvBJ9d/9eIZZ7sDVPGrygpy0rmnEyDsbd+5OyJat/ZI9CjHR7WXVIdtb8PrmP8P + d8wP5PlMJooISE5K0Doi79c1hc5Tp2k9IVxIvaecUnu+T9RDKbl5+ptU/MV5avN6OtDi + Y4xDWnz/fEeCHvp32YdLK+ua26/2I9Hjav/mnWrugtD/Sqmeb8XX4UwZ34fiL71bY6n9 + ipe/qOXz0Za0e8rxFb1fzKdSEj5Ffa74SPeG+i6fR7JbRJ18Cnt+2R7okevEJ1PQq6pH + movOLVr7pReU6Pmbnvu3dqZLqapqjjm7M5GP220nbDOvxHwV+bUGnAN9qXEEHUvwfAnd + 4P2Kjr9ve88mMvRI9x7Nck+n9QyG9zjf2RuxKzB9bAL3bmtOtVhBT7d3LtOb3j31bznR + 51Td4VcZq4NmLbENhUc+rX1mUdwD+wWd65T8vIJ3Qr6rvbfwucVXYa+tqbYCvVwd9H2a + vG+owYvlvj0yvfOXrVxHBT03van4gq86OpSIah/QGY3hcZJ3ouAKLHFCHwlSrRPeIZ5u + cVNLLxGPE30a8qEhDjvTlVKK8SnsUScf+c5VV9D3a/CJnjt4h4rKjzcg5CPoPaABPcp1 + 6Md84I3xeXTD6eCrvotYSTEQkuKU7f6fareV0fsfQ+AQznJNJ8+nl6NKqelfO0G/ua6y + 9DDGNuNjIpHp+9h++w7u3uoGj/r2GM5EpvcGuU4gejG+VH01uoP+N4pGQqXUPsApvYuF + KMiIjji7eRub2NmrerjETUIZvu7gB4bnuKeCPmd7g92XrCbPv8FnepPlX0CDh8FcafA4 + 6Pmanu7GUEeH8GF+5qdBHohWgisSMB8DifkEhLQUUHi3xpVjidsMDdHoDnVxQtMj6KOP + P3OHmzw70/ft51Cyw30c7ty3dfWP3pomenTwgtC78HlQl0xCYhQAMNuWxGlIwljgMSBW + rPy+oIeCpzZPNXlEfxOdXNXFT06gfk5IevRx+kdvT9O4Tgh6g0/mp6FdGdZWClDDXUQM + DdCXg8449gerwt5glhmaXZ1/l8ZB1QC3jOoFCHnspob+CcZ3bg71mXSHxvaC0KuBnSZO + dqYxoIk+Djf3/o6PLbiXIM7v3M2hYWoUkEoKDxD7usnJf9mB6ZMgVWXhb2G1PhmZPnj4 + l36dNU0j+n4D2q4ywvjudOfcaUn2VqNH/1aneqHpFT5VfogUSzsBldiMdjpezja16OxF + OiWgsL01N41lglzYYXm7b2/xh6bf4XNHQ+o92947vcYHv74XJzqQGxxkWwecljQ8QQp4 + QFx7o6Ar1ZKWCR0uRxKUnYN+CNuHoK+o9ej5xvmpJKQACEpHJQU+AYaktxmDLjM8swu3 + IWf2IIZHwULbfi2iHjuaVH7iJxEFaHxN70Q8bfzflOmdOxSB+Q285e10HVwVYnm67+KX + RD2+j4PhbE8tnrogl4NKpITsT/gwvsQ9iXom5KtAZ9d46CIwvEpqqK47RucLhkRX2Q53 + 8ry1eJTrhZXtWNpW5cEXaQD4Nr2T1ukmjx3A+dB6YAXoFe0UfM/GgZcrWZcOssjtPQ3r + esx2ws50/a4rJdP4sD2P9gJe57Hc7EsYBLtZ0HoQcDSBvIHWSB80dkf0pFdcwe+qgTcI + vRnXXC3TDbuXE/iqKgOC8TW9Hu7Uqa6pAUJvfTK0s45V544V+31Y8Mj1MKrrsZcTdg83 + CD3j62EPPeZjd/Ak8ZOOkEQEB9h3CfxifK713uHV4E4YPVwa2wljdCMYvOsuD9HD5rr/ + bvqvnPxbHzouct8QK7RLgoTGJ9t7dnsOerB9GKMbYY5seaTX8DzEIb18HQX8vlkdzlZR + gB67DIsetV46OWGMbOEOrvdRzVXoud7/zqa3x7j0OAcxmgENGawz2J9kD607A9cU9bzb + 3tDT7Qwvo5rbwhzRDknP9f5XDPaS48staff4FpHrQSwz7sPqUFvpXp/C5/G7gIOXwcpA + 8BL0uMHzMKINemrwPd/NCHZlrvcOvYbn4Wk9sutw+y9ZWuI7dv/8+Dvfq6UWL4zmDj28 + 8O5myLAmPaOKYc1V72SFQQ8gwNOtCY3G0HqFvnkAF1vtbX/xADboYXy0+N7plenDupPF + TR6e2vF4F/OL6F34LlL3CnkK3+hG1f/4Ueg9V3yGl6Dn/S5mmHewQ9L/RNkO13vUXbao + y/Nl3NoNbNbkSPYTqvpCL3ctvIU9ZXq5keX5DrYZ2fP09EJoelR85Ho66hEZQwmiqeyG + 2FpQ8FxNHHp4vlfbO6bnp7Y8P72Ah3S9P7nihf63jx8p5n/yqc6gt0K+RU6Lhh7LQh9e + vdfwYT65si28p5ZC0KsHG7iXw02eg89mB7q09sYJXOHus/YTbvR01PMa8w19eE8tbVMV + 3+MTa6vTs+urVFdzcpNOeQwLr3HDrxp/4wdOtVctnlfHN/DhPrEW3tOKwenNHT4Mb6Ab + q3q4bm4ktVoFtiKgJKMA9vs/MP5vsh0vQY/p8ZICPaUe5tOK6skdb0+qBsenMQ4a4YDx + fbr4nMnr+1Ky4qMGlQLq5g7wkuxwc+8h2xF6el4tzCdVueLjYU2PTykHpzfGZ3x7dMu3 + B0vrqn8nulAOQY5C92sJ/stMz0/oh/OUMiq+PKjr7Qn1UPR8k4NHOMj8NFajuHkAg4ct + ZMmtDtW3VZVCP6NgHsxa3fTa7yng64eUvT6hDnp5foNeR1v97QQv+PB+8JMGjNCqErNN + buooVbAzSPcehneeSgsDHklu2G8nkOuH8WZKSHptfX5xgxWgkWmYlsXZwEusCsdL6M4H + DWxpy3vo3xrLf9GbKez6YbyV5AGfBnfN7U0em6dbcXRTSr7VjU/s0boQf+DKgU08oquG + tUJcTnYRvbyT9kVvJYX5RlqI4mAIjsZgZWRfaYChadlXRBEBHEKNZqsRzRCXs+i//I20 + beG9jRiiOJpe39jyBVb3u1ybWQmWDtStajOYHeJymv6r3kYk10fc8/Imqt9jPL5lU/x0 + awuottDNLhF7q6UIVSl4i76Hs2qmo7we0f6L30T1/hayelyfA43vh1GE1gBVgtXE1odo + ArqRu1f4GfWTvldy1ult7K99C1mMzy8krvoGOr/2rV4B9//ichk10J1uh8HZLEuyE5/+ + GtIn4ef8r6G2cEHoA2/gsuG/9A100MuEK6vPPiAzLjizJOglUxZZ0GUOVXwco43oqxg5 + zfWb+kLu7zWZfYCNv9vLzBNq6gnX9A/uFT1rhLuYWFM7/Lar2Sv8WOl490/7r63JzBPG + +DT7wuqzjvjM/GGtWtOF+E5K4uzy3aNn87Dg6BB1gvXrARbXZNYRxvcy44yecmYlhASZ + Pyb4Zj1vDaZ00Yvq4BBX4V1rM+MM6HnWlXWbbWjZJd7mM1q72YYs3199pilrqqm1mVrq + qb+s+sNrOdMUGV9mW8K0ius1y9gjFu+zmM2t2Sxj4vvrOcPcA0e8zGC3pjPMbSPf37yz + C4rvm8kVN9vMkgZ/U84qSr6PZo+tvwlnlLXwaYpFTCO9qWYTduFvvpmkt23uWcQN/qac + QR6+z0nfJv3vAQpf/QOBTfefI/C+Hll/s/7XEMJX/JvyP8YYfGQ+m/C/BTnmp/+as+n+ + UxS9rMvuv0n/S5jmR/yj/xW26f5DnPAj/tH/iYMGNtt/ByR+VABSAKkAOmAlkCI2jPxf + /mdI5hcViA5YEUoZ6/l/QU05ZAEm8nnHVJd8Lb/pKhtM1hJv67e2NLClgS0NbGng/6MG + /hdFjOTjCmVuZHN0cmVhbQplbmRvYmoKMTE5IDAgb2JqCjYyNjkKZW5kb2JqCjExMyAw + IG9iago8PCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjc0ID4+CmVuZG9iagoxMjcgMCBv + YmoKPDwgL0xlbmd0aCAxMjggMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4AY1Yy24cOQy86yt0tA/u6N3d1012gc0pDwM5BHvwTiaIAztObGe/f4sSSalnPE5g + GK2S1BRJlUrs+WHf2h/W4S/Pxc4x2vu9/WC/2RcvH7zdPVhf/x529sJN2dL/MPGzffFm + f7/bf3/8eXVj7q9hKuRUzQW3WF+8jctqd7f2xd+3IdlXd3W5EEqdk1br5zzFEmxyQaZl + TDPk1VPTYh6nVWs+hCNrZZFpxfCiw7Qwr1PwNg2zxLVhlriWHRLRInjG2DjrOWMx/Y6x + YVYz9uLd/ubq8fq//cu7m7v769v94/31ziLjbpqXUNxqpKE9FpvmF2/z6uytjSt2Dq0b + tNZpnV2pMLlk85JbRwPe7LAdySYfMbu23DK5sKb+KvWSRXq2Vah1g+0sbSZBPweT5FWA + ahGzuXX4bCMZHpOd0N0So4b8l4h29ou2b+1nsPQ1/r823r58Xxnh7PuX4JGv4IIeRHDs + JYwYnyKnhVpDWghW99M8xJLBz9odAyWRJsSQat6MZjSGtaaFni0t1BrSQpBik1cZOJpd + u53hp2Ae8Vi/pcWLW5IWSw5TWugpaUHb3Nr3OCDgRXCFjho1V5eWmZgRfJmWDJ6llCgP + eZ18KqVCJAPHcp3npUIc4anExaQ4Tyv8YGxTJDnYdRziBPPDy34eDAP0ZU0CvLHBOeQY + B5igX0rTArajmNfpuPkhLxsKYRPPDoR4at91UoAqDUET7EEbghJkWHMLqiXBRhc2QUeH + 00RJkYxFXzRoQ6AHbQkOQROUoMROx20dxkb8kKAtObmJZ1e3G7oNpj6A69jkIQdhwWZS + Ig34/8el9U00L/C8yNg3h+22yV5C6P7yE86ZvfxsP9qzV+ek/MGe3Z2DP3jeSsfVuWkj + 1zzyjZ9vrmTKvTQeZc5OeqTje33JnOk7YuXx3P5jL1/bPy9BYrmNSOSWgpvKgZ4lFpBm + S+Z5Bu07mRFT31ebAGVf0wwTI5lL3OxrylCytBjd15TdYBhg2FcaG/aVoOwj2xFsEq+j + 4+yH7is5qftK4ASZjU4KuWzIDDgETaMSdChhQ+ZQVgra6Djke0PmsMQeNIEhaIJD0ASV + rGxHguR1ZNyKHxo0ObmJp5PZnCJzS+QRmX2eci4FwnZA5rPLc3P5tfHp8GAMtsBp51CN + XEKShzMCefQ+BhwiNWvqGTm7+34NVotlYSqp7eJCKmtvkOw6PwUw12ZPt3LA7i+AhiCS + icLEu7UOBtzKkGtc0y7WTdGOtJZK1d4BbSLh5ddNwlaIZUtgWJcgLpKVpDpC7vuuod3M + yK7VdVAMCBZH9GVyehPQCarqJBMCXbrqG8EeNSGNKQSOSdIQ4jZqExLnhZMWcOq65XZA + Jds0NkRNUKJiM0Yxr6OYHdGoq5tqGD53rlbhNQfCC3uOdpy37YiwYZ5iXJdjwn40Z29+ + sqb+y88bfop8PoiefuGBvXRAe7f6SQfpBCujy5NHIpiVcU4oGhhCSpYAAs51kJWiGCGD + dEh4ojVErbaD8jpRTS03Vsq6lbEgAoi9rLgUaTSsuG5QpAu3GQr3GxQv9E1Q0ojV6vAp + SuqkRkl1rFGSfa581QiFkr2DqdI7mJISMvFMLBsCKJYk1Y2S6jhBDlmJ3WJU4jNsfERB + wMkij7vVYz4eFALg2rTS5gofDVUDflq4SqbWBQqFBWXZqHZaEbw/5KRycCcVgd77QlOh + 72l21qMzrQWaSbf77Oc1JijsRjPh9aAeGbCrByFVj4ydoYusdyBrKH3GjnYVdsnFDcRq + DOLUsk0OOcFBPQBVLXJoZkQtMq2DbVbMjqh6VDfVMKr0UwRVYfX1+019I9ijJiRBGg9K + 1HtANRNXB3kjM3DHtqpHog4ou9UygX5ToL6g4kkdJyhRiRnFvI5gcURehmfDTUHgQDMP + OEqUr5rJ6TzSTPAzxBTBT3O6YtWS8lFbH0ZRHIuAzYLHJTIdNVcCPnj19tfzcET2x4Hl + ZqvBT7K81bB6hIkhqGFVgyvLRZBoUOVGWN47mH1DhxR8IuEoBtkyag5ieV+3slxlhUZZ + kITkChvHBTaKd0GqPorMEThFcV2aGNFDrmzp1w4NakDCLO0ITL3ewRSXjBFvJWTwnyiu + 6zaKa8gERYPloLDo0iokHw2KF/pm9VFC/jW/VYMrv4/pdhHjFNOCi/CYbvpBpqTu9H4n + AqwM1EmfflkfMDfxQ9YaaqFQlphzpnJGtYh++xsVGLBrEQ2q0mR8WmwVGN8eWwXO7cta + tCjjNwrVIgLjuoCDFmG0KzCbEe3JtA7e7bg5IlpUf78cA/oNBUbxM0TtAXvUhCRq4/Eh + sVFgjytlo8B+5h8vuGr1KPw0agI9aoRYf1OTWp2gRCVmOm7rKGZHJGpT3ZR7h8DvKnBL + 55EC+3lCPYRtOVTgM2isfAw9qbAnDBZ8YKWQn5T0ZyX2oMwdaYz6wU2NxnTD6LlvNFZV + INj1hpCqidBYOozQSzosjkjdcqn5iLndcqVxX7fSWFTDVMY3RREroqlMYoV8mKTmqz6K + 3gCc5LAuTVveJdYS7CETkoCUw9KBXyI3v/PhNyvmsIRMxNSQG4dlXeawhAz+gu4sonIS + BPJJYSgnSUKGj72yJ4efJ3CX2IFv+mlvxk/74CC2kX6VPlDbs3f7q097kE/4/PZ/RnAO + rwplbmRzdHJlYW0KZW5kb2JqCjEyOCAwIG9iagoxOTg4CmVuZG9iagoxMjYgMCBvYmoK + PDwgL1R5cGUgL1BhZ2UgL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDEyOSAwIFIgL0Nv + bnRlbnRzIDEyNyAwIFIgL01lZGlhQm94ClswIDAgNTc2IDczM10gPj4KZW5kb2JqCjEy + OSAwIG9iago8PCAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9J + bWFnZUkgXSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDE3IDAgUgovQ3MxIDggMCBSID4+IC9G + b250IDw8IC9GMS4wIDE4IDAgUiA+PiAvWE9iamVjdCA8PCAvSW0yNSAxMzIgMCBSIC9J + bTI2IDEzNCAwIFIKL0ltMjQgMTMwIDAgUiA+PiA+PgplbmRvYmoKMTMyIDAgb2JqCjw8 + IC9MZW5ndGggMTMzIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDQ1MiAvSGVpZ2h0IDk4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIw + IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAxMzYgMCBSIC9CaXRzUGVyQ29t + cG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg + 9U/tbwaIQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAwA8MBzYAAQplbmRzdHJlYW0KZW5kb2JqCjEz + MyAwIG9iago2MDMKZW5kb2JqCjEzNCAwIG9iago8PCAvTGVuZ3RoIDEzNSAwIFIgL1R5 + cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyNDQgL0hlaWdodCA5OCAv + SW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2Vw + dHVhbCAvU01hc2sgMTM4IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVP7WkJiEBhwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwY+MBhHAAEK + ZW5kc3RyZWFtCmVuZG9iagoxMzUgMCBvYmoKMzM2CmVuZG9iagoxMzAgMCBvYmoKPDwg + L0xlbmd0aCAxMzEgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lk + dGggNTA4IC9IZWlnaHQgNDE2IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDIw + IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAxNDAgMCBSIC9CaXRzUGVyQ29t + cG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg + 9U9tCU+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMPAcGK0HAAEKZW5kc3RyZWFtCmVuZG9iagoxMzEgMCBvYmoK + Mjc4OAplbmRvYmoKMTM4IDAgb2JqCjw8IC9MZW5ndGggMTM5IDAgUiAvVHlwZSAvWE9i + amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI0NCAvSGVpZ2h0IDk4IC9Db2xvclNw + YWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50 + IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7Zz3X5JfG8dtaS5cuEAU + wUzUAicuDMUR7pErC3HkRC0N84lcac4UxdyGC8OFC1Oz7/fVv/Zc5wYU03rsO4LH2+sX + rR841/t8Ptd1jjfn3CYmV3E1A1czcDUDVzNwyWfgmjHFvzrXCPS6XtwwdOjlch0l9w/T + a2mB8ubNm7eMKyAjyAtNwD/HrZEX0QKrqamZ2W1dmBsydEncNjMzNYXMEDnG/fflxhS+ + geEiWHMLC0sIKwhrQwdKAiVjYWEOmZkBOHD/fWxUwAjYFHjNgdbKmkCwsbG1tTOWsLW1 + IRAI1sCOwDFuwP4bta0jBmALhGsDrPYORCLR0dHJycnZ0AE5ODpCNg72dnaAbg3cgA1q + Y2L/JYsjV4PGILG5pRWBYGtnTyQCqIsriUQmu0FQDBuQAZlMJpFcXZydnYhEeztbpLc5 + EhtR/wWtT4gtLK0B2AF4XUlkCsWDSqV60mh0YwgazZNK9XCnUMgkV+B2QNggto76F6VG + toY6NgNTW9sAsLMLyQ1waXQvb++7Pj4MCF9N+P3+0I6MkvDxuet9x4tOo3oAt4sTqK2h + vnXrl6XW2hpcjYgdnUlu7lSal/ddhq+//30mk8UKgAg0aKAMAlgsJvOev78v4643cFPI + rs6ODoja/LbW4BeXGiEjkaGOgdiFRPEAYIbfPSYrMCg4lM0OCw+P0I/I3xf6w0aEh4ex + 2SHBQQEspr8fw9vL04NCwqitwOAaqS8IjUoZeheITLC1B40pVDoA32cFBrPDI6I40Vxu + TGwsD0WcwQIbnhcbG8N9EM2JighjBwey7vn53KFTgZpob6ORGvn7QtCAjNr1bQsQmagl + 9mcFhYRFcrixvPiEh/yk5JSUlNTU1DQDBgwPSaQkJ/EfJsTzYh5wIsJCApn+DG861c3V + iWhHAKnB3xeExpDB19Y29o4uZA/Q+F5AMDsyOiYugZ+cmp6Zlf0oJyc3Ly/f0JGXl5uT + 8yg7KyM9NZmfwONyItjBLKCmuZOdiXY2Vpbg74tBa5Chedk6OIGt7zD8A4LDONy4xOS0 + zOzc/MeFTwVCYXFJKYoygwU2fElJsbBI8LTwcX5OdkZqUiKPGxUG1D5eVIqro72t9UWh + sVoGlTFfu9O9/ZhAHBPPT83MyS8UCEvLyiurqmtEotraurq6esMFjF5bKxLVVFdVlJeV + CAWF+TmZqfx4bhQ7iOnrTYOqdrgotD4ymUoHW7MjufFJ6dl5hYKSZ5XVovrnDY0vxU1N + r5oNH6+amsQvGxue14uqK8qKBYW5WWn8OG5kaIC/D90DWpkG+n81MmyR0qrsBr5mBodH + 8/hp2flPhGWVovqGl03NryUtra1t7R3GEO1tra1vJK+bm16+qKupLBMW5mWlPuRxwoLu + M7yoUNQI2hR2Jz9t3lDM0LGhlonOblRvP1ZIJDchJSvvibC8uq5B3Cxpbe/o7Oru6ent + 6+s3fPT19vb0vOvq7GhrkTSLX9RWPRMW5mYmJ3Ajgpm+dwAa7A3dG3bfP4HGnH3bQocc + EMrh8dMfPRY+q6pvfCVp7ejq7u0fGBySSoeHR0Zkho6RkeFhqXRwcKC/t7uro/V1U0Nd + VVlRQXZaYkxkCEsDbQNL1s+b9zXYi5iZW9k4OJNB5QA2h5eUkfe0tLK2oVnS3tnT/35o + WDb6YWx8YmISYsqwgVKYmBgf+yCTSYfe93V3tkleNYgqip/kpPN5UaEImuRkb2NpbvYz + d2udTbB3IlHvIOS45Kx8wbOa502S9q7egaGR0bGJqemZ2Y9yuXwOYt6QgRKAPD7OzkxP + ToyNDg8N9HS1ScT11WWCvMwkHgegvTxIjnYEVNI/3pogmbFViuROZ7Aw5AJhuaixubWz + 571UNjY5MyufW1hYXFIoFMsQnwwYaPxlyGNpcWFhTj47PTkmkw70vG1tbhCVF+UDdFQI + k0GnuBLtoKTB3T+oaCQzONuW6EKh+TBDonjJWQXCijqxpKO7Xyobn5qVLywqlpXKldXV + NSzWDRmaFFZXV5SflhWLC/LZqXHZUP+79tcva8uF+Zl8XmTw/buebs4O4O4f926QGXo2 + wR4V873giNgkQK6sF7952zMoG5v6OL+oUK6sra2rVKrNza2trW1DB+SwualSbayvrSo/ + KRbnZqfGRt73dEjEdaB0Bj8mItDfG0oauftHQmtktrYjurp7+QWEcx9m5Asr6ptaOvuk + o5Oz80vLSuDdBNSd3V21scTu7s729taman1Nubw4NzMpG+x9i6AFeemJD9gscLcL0dYK + hL5+/bw/sBAzJrMbODs0OiEtV1BeJ27p7JeOTcsXllfWVJuAq1bvfd7XxoEhQ5fE5z21 + GsA3N9aUigX51AdpH0DXPnuakxrPCQF3k53tkdDnr9FgbTNzkJnkccc/KIKX8uhJmUgs + Qcgzc0vKNdXW9q4acA8ODg+/GE8cHh4c7O/vqXcx6iX59BiCbqwpLcxKio0I9PNyd8WE + Pr+LncjMYLK5DzMLSqobJB19gDyvWFnf3FbvATDAHh19RfGH4QOlcXR09OXL4cH+573d + bdW6UjE3PTbU0/GfF1XC/PSE6FCmjycZKtoCrdFnzY11MGjarkjmyLjU3KKK583tPUNj + 0/OK1Y2tXfX+Aeh7pMf6p2HjeM4BHLD3P6t3tjZWFPKp0cHutlf15YKcFB4mtAvR5gfm + vnb9lpkFwc6J7OkDMvOzCktF4pZ3g6NTcsWKahtcfagDPov67ffF2cER+9eviHpvd2tD + uSSflA10vXlZU1qQkRgdev8uFTYm1uam55n7GtbBHFwoXn6BUM25RVUNr9/2j0zIl5Qb + gAyuxjQ+NebvQz0z0qk8EPURknp3a125ODsu7etofl4hyEmODQ/wpVOgi4G5z9mWoHIG + a5NgbQ7hJGY+Lq0Vt4KzZxY+rW3tImTM1XpDnUnjd/+HXi6Y1l++gNKba8vz0x8G37WI + RSUF6QlRwf7eHq5ac58paNiQQNd2ItMYrDBu0iNBxQuQWTYpV6yqdvb2jUtk3eyepgZ/ + 7+9tq1aW5BPDIHR9+dMsPpfN9EHmtkKr1ffMaKWygD0YhY6snZpfXCNu6R4EmZXr22qo + ZaSy3hB/6oY16E/9hJC/wd7qrfVPCzMf3ne9aawS5qaAuRl0N2dNQZ9lRhsSrGsHcxIy + Csvqmjv6hjUyg7O/QzYoqf7getQAffTlYG8HhP44Lu1paxKVFqTHRwb5e1FcHKCgb56j + MzDboHK+H/qAn/UUrN05IJueh2pWg7P1VdYf0wh+P8ZGjexwH1X03KSsH5m7MDORE3IP + FTTB8pwmBkvVbUtbRxK2UiXlFFU1vnmHWXtjew+T+fijjcPWJ5N9khhy9756e125MDP6 + vkvSUCnI5j9gM2G1wprYmcaNliorOyc3GiMgPDYlV1gDXVs6/nFpRbXz+RCtUtqPPhnL + iH7T5oaYD6CLwXI1Ntjd0lhVlJOEmpgnydEWdiXnMUPbdnaj+wagFlYiamrrHZ6QK9Y2 + d/cPwdrGjPzt2zH00eHnHdUqVtCt4hptE6PB9hMa94+YKXRfaNtp+aW1rzr6RqCF6cpZ + 86lGpO3pVDTpQReDglatKuQT0MTEouI82H4GMGhuGPON75+VXLuBlmdsqYqMSysohbbd + PzI5t4wxf9XKfHoco/oXBq1h3lwD5uFeaNwlGmb6FfPxMg09TKMzrryNMeOth+FvrcLj + ngQx43Hvibu/MfD3t6QJDp8ZmJx+NpSh92xo/dI+G8LjM0BcPutF30pe6mf6x/vsk19w + +N2NCfYdnRW+vqPD53ex6GgFvr5zR+bG29kKYMbfGRokNPoyA9oYbs5KYUJj7v7uTNyL + S3wmTufuM2cf69DZx67/h7OPtb969hGYkbvPOeNafXnPuOrcrTvYe3yWufjynmVGQkPv + xvoYHODGx5l1jbu10Di5m2ByChqWLO0dlITLfAcFQcONMjNc3TXSQePqTpkJHu8OImhY + pnF1RxSenGBLlv5dYHT5+VLfBdZCa6TGzZ1vTGnwN67u9gM08jdIjb3RAB/vcED+PqbG + y7s60DNggEZag8Px8k4WfWr8vHsHo9aJjb1zCA/vWNJQY9g4epcWotb0M1TceHlnmoYa + caNOfhIwAYaNk1Tg2iuELtF/5ScawGjiXyG8+tCrGbiagasZuJoBo5qB/wJQn0jECmVu + ZHN0cmVhbQplbmRvYmoKMTM5IDAgb2JqCjMxMjUKZW5kb2JqCjE0MCAwIG9iago8PCAv + TGVuZ3RoIDE0MSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0 + aCA1MDggL0hlaWdodCA0MTYgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9s + YXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+ + PgpzdHJlYW0KeAHt2/s31HvUB/BCbsMMGjTGyBjHvXHJJdMaIWeEQYlSDsvlEHJpcTS1 + poPkNOFEWRQlElLuKVSn1vOvPfsz6ILS6bT2s1vP/vxwbtXsPe/X93P5fn3Pnj08OAFO + gBPgBDgBToAT4AQ4AU7g/20Ce3n8JAn8sEtUfF+bD8OWB+kEPkDZCLf/chFsqNva2tnZ + 7ePx0yQAXLa21svgO/2t8MAuvrG9g4Pj5nDiQTSBTSFHBwd7obZ+Afxr/nV4MdvtQd3J + yVkCwwWGKw/CCQghIeXs5OToKC4AWABg/v8rfrHDixlvD+7A7uIqlcpkbm7uPMgn4OYm + k0mlrnAJOIO/4Lfqf+vWLyY9yMOMd5JIgB3MPfbL5Z6eXl5e3jwIJwBAnp5y+X4Pd3c3 + uAAkEicx+4X+N079dfl9Do7OEhepTLCDuMLHx0ep9PX1VfEgmwDwKJUApfD29hIXgEzq + InF2dFif+99y6l+nF3PeVermIff0PuCjVKkO+vur1QEaHsQTCFCr/f0PqlRKnwPennIP + N5j8MPfXp/5u675Y72G5B3kXIQ/wKj9/tSYwKCg4JDQ0NGx9hPMglsAGDBCFBAcFBWrU + /n4q4Bf6LqAPC//u6/4GvbPEKq/w9fMH95CwiAhtZGRUNIwYHmQTED5RkZHaiIiwEPD3 + 9/NVWPVh4V/H/+rM36R3kbrLvRS+B9WBQaHAHn04Nj4h4Uii7uM4yoNMAh9VdIlHEhLi + Yw9HwwUQGhSoPuir8JK7S12+Ad9K7+AocZW5y72VfurAkHBt1OG4BN1RfVJyckrqcTHS + eJBMwIqTmpKcnKQ/qkuIOxylDQ8JVPspveXuMleJ2PRh2f/izAd6W9jrgd7DU6Hy1wSH + R0bHHTmalHz8V8OJjMwsozE7OzuHB9EEAMdozMrMOGH49Xhy0tEjcdGR4cEaf5XC00Pg + 2+8T93pfwt+7Qe+238tHFRAUqo2O1+lT0tIzjbkn804XFJw5W8iDdAJnzxQUnM47mWvM + TE9L0evio7WhQQEqH6/9bhv4X7IHejt7R2dXGdD7aYIjouJ0SamGzJxTBWfPFZWUlJaW + l1eI8TsPgglYacrLS0tLSorOnS04lZNpSE3SxUVFBGv8AF/mCns+POX5Ar64u3NwcpF5 + CPqQQzEJ+lRDVm5+YVFJWUVVdU1tXV19fUNDQyMPkgkATX19XV1tTXVVRVlJUWF+bpYh + VZ8QcyhE4HvIXJysW/6Oi75Y8eGcJ3X3BPpQbWzisbQMkC8uq6y+2HCpqbml5bLpCg/S + CZgut7Q0N11quFhdWVYM+hlpxxJjtaGA7+kuFee9L0z8vTDtBb1codKEaGN1yQZjHshX + 1TY0tZiumv9sbWtvv86DdALt7W2tf5qvmlqaGmqrQD/PaEjWxWpDNCoF3OpJHOGsv9Oi + b532Ti5ucm9fdfAhoE/Pzj9fWlnb2Gwyt7Z3dN60WG51dfMgnUDXLYvlZmdHe6vZ1NxY + W1l6Pj87HfAPBat9veVuYtXfceJvTHvY7P2DImISk9NzCorKq+ubrpjbb9zs6r7d29d3 + 5+7dfh6EE7h7905fX+/t7q6bN9rNV5rqq8uLCnLSkxNjIoL8Ycv/4sS3sYGDnqubXAGb + fVTCMUN2wW8VNY0t5rZOS0/vnf6BwXv3h2AM8yCbgPC5f29woP9Ob4+ls83c0lhT8VtB + tuFYQhRs+Qq5mytMfBubbac9seTDbu8hVnxtrD7NmF9UUXPJdK3D0tPXPzg0/HDk0ejo + 6NjY2GMeRBMAHCB6NPJweGiwv6/H0nHNdKmmoijfmKaP1YpV3zrxd1j0Ycm3F7u9wi8w + PFqXkpF3vgzoWzu7evsHh0dGH48/mZicnILxlAfRBITO5OTEk/HHoyPDg/29XZ2tgF92 + Pi8jRRcdHigmvouT/Q6nvb2w5DtL3b2U6uDI+CRDbmHphUag7+4bGBoZezL5dPrZ8xnr + mOVBNIF1n+fPpp9OPhkbGRro6wb8xgulhbmGpPjIYLXSy13qDIv+tpO+dcmXyQ+oAsOi + dalZ+cWV9S1/Av3gg9HxqemZ2bn5+YXFxcUlHoQTAKCF+fm52ZnpqfHRB4OA/2dLfWVx + flaqLjosUHVALoPbPNttG751yYfHOv5Bh+L0MO3LapvMHV1APzYxPTO3sLT0Yvklj58g + geUXS0sLczPTE2OA39Vhbqotg4mvjzsER31Pd+uiv+WwB9u9WPK9fQNCo44kZ+YXVzWa + 2iy9Aw/GJqdnF5aWX75aWV0fazyIJrABtPLq5fLSwuz05NiDgV5Lm6mxqjg/M/lIVGiA + r7dY9Ldt+GK7l0j3H/ALjDh8NC0Hpn2zubOnf2h04tnc4vKr1dW11294/BQJvF5bXX21 + vDj3bGJ0qL+n09wMEz8n7ejhiEC/A/ulku0bPtg7SmRyWPK1cfr0U0WVDaZ2S9+9kfHp + 2cXllVWAf/sPjHc8SCcgjN6+efN6dWV5cXZ6fORen6Xd1FBZdCpdH6eFRd+64W897O2F + u3sXd0+lOiQyITkjv6S6yXyjp394bHJmYXllDeA3v/J7HmQT2DQC/rWV5YWZybHh/p4b + 5qbqkvyM5ITIELUSNnw47G056NvY2ju5wnavCY3WHTeeLbvY0nqzd3DkyfTc0svVN2/h + U7d84//hQSaBLTSA9fbN6sulueknI4O9N1tbLpadNR7XRYdqYMN3dbLfetAHe2d4qKcK + DIftPvdcRb2p/dadodHJ5/PLK6+30JP5ztzIJwl8cgEI/Ncry/PPJ0eH7txqN9VXnMuF + DT88UAWP9py324tjPhz1fomI1RtOFlU1Xu3o7h9+/HRmEaY9LPiffPL7TwryP5JJ4FOh + d+/+gYm/OPP08XB/d8fVxqqikwZ9bMQv4rAnDvqf3+TBLZ5EKlfA3X180om84gtN5s6/ + Bx6Ow5L/ag3sNz+YzDflRnZMYNMJ7NdewaI//nDg705z04XivBNJ8XCHr5DDQX+7/fox + P1gc9U6X1DRf++u22O7nX6yswZK/8Zk71uP/SCiBDShY9NdWXsyLDf/2X9eaa0pOi8Ne + 8PpBf5s93OK5wS2eOOZn5pfW/tFq6b33aOI52MN2z/SEeL/eyiY+bPgv5p9PPLrXa2n9 + o7YUnu7AQR/s3eCp7tY1X9h7+qjhqV5KVkEpHPMtfffhqLewvPrB/utF+VdpJLCOD4e9 + 1eUFOOzd77PAQb+0ICsFnuypfTy/aK+EJ7qJqcYzZXWX224Je7i7F0c96+fR+GrcxW4J + WLHEYU/c4YP9rbbLdWVnjKmJ8FRX+QV7F/gBboD19v5MeZ2pvUvc4m0c88XH7VaSf51K + AkJr46AvbvK62k115WesN/gB8GNceLizfc0H+81HO+L2HuzHpj7aU/li3MfuCXy0nxqz + 2tdXbD7c+Zo9/PD+eHZhRf2V69132X73mEn+js/s73Zfv1JfUZgND/bCNL7fYN/A9iRV + v62pbfYNbP9tyf38v4vtf37D7/0GP9b+e7vgP/d/k8DmOR/OemK//+qaL17dsJ7zN856 + W/f7/5tvwFW/N4Fd7D/7AT7bf2/KNP8c29N0wejqX9nDK1vw2o5KExZjvb8Xaz78+H5q + Vry1A490MfrlGj8uAXiwJ97cmZ0SP8Df3O9jwjQqeHFn60tb8LqeeGVLpQmPEW/p/t64 + bv8U7NfA/sc1xZ+EkwDYr4G99eWN61cafxdv6saEW+2dtrywx/Y4JGhV2B4tanKF2J4c + CVpDbI8WNblCbE+OBK0htkeLmlwhtidHgtYQ26NFTa4Q25MjQWuI7dGiJleI7cmRoDXE + 9mhRkyvE9uRI0Bpie7SoyRVie3IkaA2xPVrU5AqxPTkStIbYHi1qcoXYnhwJWkNsjxY1 + uUJsT44ErSG2R4uaXCG2J0eC1hDbo0VNrhDbkyNBa4jt0aImV4jtyZGgNcT2aFGTK8T2 + 5EjQGmJ7tKjJFWJ7ciRoDbE9WtTkCrE9ORK0htgeLWpyhdieHAlaQ2yPFjW5QmxPjgSt + IbZHi5pcIbYnR4LWENujRU2uENuTI0FriO3RoiZXiO3JkaA1xPZoUZMrxPbkSNAaYnu0 + qMkVYntyJGgNsT1a1OQKsT05ErSG2B4tanKF2J4cCVpDbI8WNblCbE+OBK0htkeLmlwh + tidHgtYQ26NFTa4Q25MjQWuI7dGiJleI7cmRoDXE9mhRkyvE9uRI0Bpie7SoyRVie3Ik + aA2xPVrU5AqxPTkStIbYHi1qcoXYnhwJWkNsjxY1uUJsT44ErSG2R4uaXCG2J0eC1hDb + o0VNrhDbkyNBa4jt0aImV4jtyZGgNcT2aFGTK8T25EjQGmJ7tKjJFWJ7ciRoDbE9WtTk + CrE9ORK0htgeLWpyhdieHAlaQ2yPFjW5QmxPjgStIbZHi5pcIbYnR4LWENujRU2uENuT + I0FriO3RoiZXiO3JkaA1xPZoUZMrxPbkSNAaYnu0qMkVYntyJGgNsT1a1OQKsT05ErSG + 2B4tanKF2J4cCVpDbI8WNblCbE+OBK0htkeLmlwhtidHgtYQ26NFTa4Q25MjQWuI7dGi + JleI7cmRoDXE9mhRkyvE9uRI0Bpie7SoyRVie3IkaA2xPVrU5AqxPTkStIbYHi1qcoXY + nhwJWkNsjxY1uUJsT44ErSG2R4uaXCG2J0eC1hDbo0VNrhDbkyNBa4jt0aImV4jtyZGg + NcT2aFGTK8T25EjQGmJ7tKjJFWJ7ciRoDbE9WtTkCrE9ORK0htgeLWpyhdieHAlaQ2yP + FjW5QmxPjgStIbZHi5pcIbYnR4LWENujRU2uENuTI0FriO3RoiZXiO3JkaA1xPZoUZMr + xPbkSNAaYnu0qMkVYntyJGgNsT1a1OQKsT05ErSG2B4tanKF2J4cCVpDbI8WNblCbE+O + BK0htkeLmlwhtidHgtYQ26NFTa4Q25MjQWuI7dGiJleI7cmRoDXE9mhRkyvE9uRI0Bpi + e7SoyRVie3IkaA2xPVrU5AqxPTkStIbYHi1qcoXYnhwJWkNsjxY1uUJsT44ErSG2R4ua + XCG2J0eC1hDbo0VNrhDbkyNBa4jt0aImV4jtyZGgNcT2aFGTK8T25EjQGmJ7tKjJFWJ7 + ciRoDbE9WtTkCrE9ORK0htgeLWpyhdieHAlaQ2yPFjW5QmxPjgStIbZHi5pcIbYnR4LW + ENujRU2uENuTI0FriO3RoiZXiO3JkaA1xPZoUZMrxPbkSNAaYnu0qMkVYntyJGgNsT1a + 1OQKsT05ErSG2B4tanKF2J4cCVpDbI8WNblCbE+OBK0htkeLmlwhtidHgtYQ26NFTa4Q + 25MjQWuI7dGiJleI7cmRoDXE9mhRkyvE9uRI0Bpie7SoyRVie3IkaA2xPVrU5AqxPTkS + tIbYHi1qcoXYnhwJWkNsjxY1uUJsT44ErSG2R4uaXCG2J0eC1hDbo0VNrhDbkyNBa4jt + 0aImV4jtyZGgNcT2aFGTK8T25EjQGmJ7tKjJFWJ7ciRoDbE9WtTkCrE9ORK0htgeLWpy + hdieHAlaQ2yPFjW5QmxPjgStIbZHi5pcIbYnR4LWENujRU2uENuTI0FriO3RoiZXiO3J + kaA1xPZoUZMrxPbkSNAaYnu0qMkVYntyJGgNsT1a1OQKsT05ErSG2B4tanKF2J4cCVpD + bI8WNblCbE+OBK0htkeLmlwhtidHgtYQ26NFTa4Q25MjQWuI7dGiJleI7cmRoDXE9mhR + kyvE9uRI0Bpie7SoyRVie3IkaA2xPVrU5AqxPTkStIbYHi1qcoXYnhwJWkNsjxY1uUJs + T44ErSG2R4uaXCG2J0eC1hDbo0VNrhDbkyNBa4jt0aImV4jtyZGgNcT2aFGTK8T25EjQ + GmJ7tKjJFWJ7ciRoDbE9WtTkCrE9ORK0htgeLWpyhdieHAlaQ2yPFjW5QmxPjgStIbZH + i5pcIbYnR4LWENujRU2uENuTI0FriO3RoiZXiO3JkaA1xPZoUZMrxPbkSNAaYnu0qMkV + YntyJGgNsT1a1OQKsT05ErSG2B4tanKF2J4cCVpDbI8WNblCbE+OBK0htkeLmlwhtidH + gtYQ26NFTa4Q25MjQWuI7dGiJleI7cmRoDXE9mhRkyvE9uRI0Bpie7SoyRVie3IkaA39 + O3tHV3dvlSYsRnc8u7Ci4cr17v7hsanZpZerb969f4/WMxf6IQm8B/vVl0uzU2PD/d3X + rzRUFGYf18WEaVTe7q6O+2z37vlk7LXZ5+ji7uWrCYv+YH93aGxqZhHs/3nH9j9EBO9D + 3r/7B+wXZ6bGhu5+sI8O0/h6ubs47rNhezwK9Epsjx45mYL/xn4Pr/lk3H5EI7vYf7Lb + wz/uYs+nvR8hgvUZ7+Go99X9nu2xKNDrsD165GQK/jf7eri///Qej9d8MrDf0Mg2+3rr + /f3He7yd1/xQuL83nq2oN7V33fnk/p7tvyFyMr/lM/s7Xe2m+oqzxuO66NDN+/ud7JUB + Vvsz5XWXhf3o5OazHfg0Mt+MG9klAcDaPOtNjg6B/eW68jNW+wDl+rOdbfYSN0+wj0pM + NZ4pq7vcdqvvPtgvLFuf64mP26Ui/zKRBISV1X55YWZy9H7frbbLdWVnjKmJUaEBSk83 + CTzX28neRx0adSQlq6D0YkurRdg/B/vXb+GBvhhEvhu38dUE1q3evX29urzwXNhbWlsu + lhZkpRyJClX7fNFe7uMfEpmQnJlfWvtHq6X33qOJ5/MvVj7YM/5XQ6fxi+v078F+5cX8 + 84lH93otrX/UluZnJidEhvj7yHea93aOEhnYB4N9xumSmuZrf90eHHkyDfZrb99tTHzG + p+H7lS426d+9XQP76Scjg7f/utZcU3I6A+yDwV4mcbTbuubbOUikcoV/0KH4pBN5xRea + zJ1/Dzwcn55berUmfpC3Mb5SlX+JQAKbTvBYb+3V0tz0+MOBvzvNTReK804kxR8K8lfI + pRKHHeydpfsP+P0SEas3nCyqarzaAT/Af/x046D/AV98OIHvyC1sS2CTXfz93cYj3aeP + 4cf3HVcbq4pOGvSxEb/4Hdgvdd5ub2vvLPXwVgWGHz6alntO3ODfEjd5z+eXxYb/YdUX + n7ytLP8HAgkImY0BXLDdL8/DUW/ozi1xe38uN+3o4fBAlbeH1Nneduuab2vvBC/u+GrW + H+6UwUH/Zq/Y8OfEmztb8EUJAt+WW9hIYNP8E3rx1s6c2O57b8Ixv2zz0Q68tuO0zX6v + rXhxx1OpFgf9jPyS6ibzjR54a0vc4a+svXn7D1xL1rGlDv8roQQ2jf55+2ZtRdzdwxtb + PTfMTdUl+eKoF6JWeorXdj5/ZWvPHvHSlvWgH6SN06efKqpsMLVb+u6NjE/PLi6vrL5+ + A/wwNj+d/04zAWH09s2b16sry4uz0+Mj9/os7aaGyqJT6fo4bdD6MX/LK1tWezjow2Ev + MAI2/JzCstpmc2dP/9DoxLO5xeVXq6trwM/jZ0jg9drq6qvlxblnE6ND/T2d5ubassIc + 2O4jAsVRT+Kwg72dg7MUNnx4qnsEnu4UVzWa2iy9Aw/GJqdnF5aWX75aWV0fazyIJrAB + tPLq5fLSwuz05NiDgV5Lm6mxqhie7MBTvQBfb3frMf+zVzXh+a6Nnb0TbPg+cIcfpzfk + wsRvMnd09Q0+GJuYnplbWFp6sfySx0+QwPKLpaWFuZnpibEHg31dHeYmmPa5Bn0c3N37 + wHbvZL/19h7s4bAHG/4BVSC8pp2alV9cWd9yrbMb8EfHp6ZnZufm5xcWFxeXeBBOAIAW + 5ufnZmemp8ZHgb6781pLfWVxflaqLjosUHVAPNXbt/UWb33Dh0XfS6kOjoxPgolfeqHR + 1Ar4A0MjY08mn04/ez5jHbM8iCaw7vP82fTTySdjI0MDQN9qarxQCtM+KT4yWA0/wIUl + f9t2L+zFou8mV/gFhkfrUjLyzpfVXAL8rt7+weGR0cfjTyYmJ6dgPOVBNAGhMzk58WT8 + 8ejI8GB/bxfQX6opO5+XkaKLDg/0U8jdrEv+1u0e7MWiD4/2fNXB2lh9mjG/qALwr3VY + evr6B4eGH448Gh0dHRsbe8yDaAKAA0SPRh4ODw329/VYOq4BfUVRvjFNH6sNVvvCQz3r + kr/Nfo+NzT4HJ1cx8TWhUQnHDNkFv1XUNLaY2zotPb13+gcG790fgjHMg2wCwuf+vcGB + /ju9PZbONnNLY03FbwXZhmMJUaEaMe1dnWDJ3/JEV7zHAYu+deJ7wVE/IiYxOT2noKi8 + ur7pirn9xs2u7tu9fX137t7t50E4gbt37/T19d7u7rp5o918pam+uryoICc9OTEmAg75 + XtZpb/f5/4y3/gaPWPQdxI4vVv1Dsbrk9Oz886WVtY3NJnNre0fnTYvlVlc3D9IJdN2y + WG52drS3mk3NjbWVpefzs9OTdbGHxIovdnsHOOVvX/I/THx3uUKlCdECvsGYV1hcVlXb + 0NRiumr+s7Wtvf06D9IJtLe3tf5pvmpqaWqorSorLswzGoBeG6JRKeTuYrffcdoLe5j4 + cNyDBzyw5WtjE4+lZeTmg35l9cWGS03NLS2XTVd4kE7AdLmlpbnpUsPF6kqQz8/NSDuW + GKuFzR4e6wD9l6Y9PN6BHR9WfZmHF+CHHIpJ0KcaskC/qKSsoqq6praurr6+oaGhkQfJ + BICmvr6urramuqqirKQI5LMMqfqEmEMhQO/lIRMrvt1OJ731056tnb2js6tsv8APjoiK + 0yWlGjJzThWcPVdUUlJaWl5eIcbvPAgmYKUpLy8tLSkpOne24FROpiE1SRcXFREs6PfL + XJ0d7e123u038PfZO0pc3QBfFRAUqo2O1+lT0tIzjbkn804XFJw5W8iDdAJnzxQUnM47 + mWvMTE9L0evio7WhQQEqoHdzlTjaf+GgZz3r77WBLV/gyzw8FSp/TXB4ZHTckaNJycd/ + NZzIyMwyGrOzs3N4EE0AcIzGrMyME4ZfjycnHT0SFx0ZHqzxVyk8PWQb9Dse8jfv88SW + L/Dd5d5KP3VgSLg26nBcgu6oPik5OSX1uBhpPEgmYMVJTUlOTtIf1SXEHY7ShocEqv2U + 3nJ3QW/d7He6v1unF2d9wIc930XqLvdS+B5UBwaFRmgjow/HxickHEnUfRxHeZBJ4KOK + LvFIQkJ87OHoSG1EaFCg+qCvwgtu7lxgrxfnvK/Rf8SXSN085N4KXz9/TWBQSFgEXACR + UdEwYniQTUD4REUCe0RYSFCgxt/PV+Et93CTSr6Jfs/ejZnvJHGx6h/wUfn5q8E/KDgk + NDQ0bH2E8yCWwAYMEIUEB4G72t9P5XPAKu8icdqY9V+f9rD2iwOf2PSdJK5C39P7gI9S + pTro769WB2h4EE8gQK329z+oUikB3lPMeVeQh63edrcF/8OBD/BB3xnmvszdY7/cy9tb + 4ePjo1T6+vqqeJBNAHiUSoBSeHt7yfd7uMukLrDcO+z7ZnqY+etT317MfZj8Ujd3cQHI + PT29vOAq4EE3AQDy9JQLdnc3KUx5MefhkCcm/a7r/SfHfbHww4nf0clZInGBC0Amc4Nr + gAf1BNzcZDJgd5FInJ0cYZ+3yu9ywN9k31j3YeqDvuB3AH9xAcAlAMOVB+EEhJCQcnYC + d5jx++zEnP8Xk37jKhArv42tmP3iAoArYGM48SCawKaQo4NgFzP+u+A/mf3WC0CsADx+ + lgTsYLoL9u+Y8Z8t/3thWD/G+hdbHqQT+Cgl3D6D/C//Ij6Mx8+QwH9R5j/LCXACnAAn + wAlwApwAJ8AJcAI/eQL/C5pZEV0KZW5kc3RyZWFtCmVuZG9iagoxNDEgMCBvYmoKNzMw + NAplbmRvYmoKMTM2IDAgb2JqCjw8IC9MZW5ndGggMTM3IDAgUiAvVHlwZSAvWE9iamVj + dCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQ1MiAvSGVpZ2h0IDk4IC9Db2xvclNwYWNl + Ci9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDgg + L0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7Z37P1T7v8erXS7jfr/nFiIM + okHkPjWaEJEiuZSoYYpEuZdyyS3lligRIaLa1f6esx/7Xzuv92cNDWY0BnXO2Z/3D/aa + NZb59Hru1/vzXmvW+rz37ePBFeAKcAW4AlwBrgBXgCvAFfj/pcB+Hroq8L8KPA36wPr4 + g4d2BdZLxZD/Pp5r7Gi8Bw8ePMRjWwpAsoNQTmBKLH8pylV6hI4N28DAwNDQ0EgtjHlo + UEBNICMjKAbdSD9iyVD+IpAqfgI9QodxGRuLRCITFqYszHhoU0AQSBBLJDI2JqyAqUZy + b0EK/OA+fCKjB3YmJqamZmbm5uYWFhaWlpZWPHRRAEpZWEA0czMzU/AUEUq4klmSHLlH + iVWoXFT84D2iB3YAZ2VlbW1jY4uws7OzRzjw0KoA6WMPnUguGxtrALcETIaSSJIjkVoZ + xl2eIBlAlj8NkDwFfBYED+jsiJmjk5MzwsXFxRXhxkOLAqSOK1QisZwcHR0cABQwrQWS + psyRjOMuY1QBpPwJ/8F+5ubAB3qA5whuhOywuwfC09PLy8ubx9YKQCNPT6jl7n7Yzc0V + OJ0cHUBSAIncCj+qYdyNanWNIDMg0qcluc8eznN2ATuAA7UjPr6+fn5Hj/qzCFiLYzyY + AmuCBAQIEh318/P19fU54u3t5ekBlkDp5OAAkGRIMxOT3cRIBGkONKAMygzI+AEf6HkR + Oz9//4BjgYFBwWKxOCQkVIgwHhoVUMkTEgKxgoOCAgOP+fsf9fP18fYGSTdXZ2dHcLS2 + +oFRNTXuwIx0AQYEkUONGUBrWztkT+Ln5U30AgIDg8Xgdjw8POKERCKJjIyKit4cJ//N + sVmOqKioSIh1IiI8/HhYaKhYHASUIHkEIA+7wY/2ZEe4UWRkRCUOpka969QfBEUmlEJt + 7BycnF0ZP8JH9I6Hn5BERkWfjIk9FRcXH5+QkJiYpIpkHhsUWFUmKTExIT4+Pu5UbGxM + dHSURBIRHhYaIiaQxNHdzcUZGMmNppRTd0BRlUVZEjWzQAkDB8KA8J//sUBxSFh4hCQq + OiY2Lj4hMSlZKj19RiZLPXtWjjhHkcZjswIkDCkkP5sqk8nOnJamJCclEsyT0ZEnwo+H + ioMDwdHby4Mw2tnCjDuhqE7QHATtHMiB3j5+/oHB4CeJjI49FZ+YlCI9IzsrP5eenpGZ + mXUhOzs7J+fixYu5PLQrAH1yINSFrMzM8xnpaXJ5quy0NDkpIQ4g4chQcdAxf98jhNHJ + AWZESmVeZOca25oWKY2ikjFEIQOCtvawoIcXARSHhp8Av7iEJNADvPOZF7Iv5l7Ky8sv + KLhaWFhYVFxcIsQ1HhsUUAlTXFxUVFh4taDgSn7e5VwAzcrMSANJaUpS/KkYcAwLCQZG + b8/DrjCjjUDRYNvTolCMGqCSQRa1tXdycfPw9mUAJdExcQnJUtnZc+mgl3s570pBYVHJ + teulN8rKy2/eUigUFRUVlQglj00KkC6VFRUQSXHrZnl5WWnp9ZJi0MzPy72YnXU+XZ56 + BhxjT0ZGHA8JCjjq4+XuJlBERsUZ40G6eqOjFVkeRTFKtaiVjb2jy2HPI34BQSHHJdGx + 8fDf2bSMTODLLygsvlZaVn5LUaFU3qmqqr5bU1Nz715tbR2PrRSorb13r6bm7t3qqju3 + lZUKxc1yoCwqLMi7dPFCZrpcdjo54RQwhokDYUYPULS1tjRHjWooWFEniKsmRBq1tLYT + CB4LDo2IjIlLksrk6eCXd4XwgZ7ydlV1zb26uvv19Q2NTU1NzS0tLa08tlagpaW5uamp + saG+/sH9utqau1V3gPJmWWlJUUE+OJ5POwuMsdGS8JA1ilYWmBZRodJphg4QBYSGRmRC + WwfMg0f8jonDTkTHJqQQwJxL+VeLr9+4qVDeqa6prXtQ39jU3Nr6qK3t8ZP29vaOjs7O + zi4eWygAgTo6INWTx21tjx62tjQ3NdTfrwNJZeWt8tIS+DE3+3xaqjQpPiYyPDTI39fL + 3dXRzgZWNMbZIvLpzyESQhQzmAnJhK7u3r4BRPBUkjQ1LTP70pXCktJyhbLq7r26+oam + FsB70t7R2fW0u6entw/R3//s2bMBHloVgDzP+vuhVG9PT8/Trq7O9vbHbQ9bm5sIZNXt + yltl14uB8UKGXJYSHxtJXvTxpIRqZW4q0g2igBDFjGBCTx//oFAieFqefiE3HwBvVtyu + Br/G5ta2x+2dXd1A1w9oz18MDg4NDQ+PCDHKQ7MCKn2Gh4cGBwdfPB8YAM6e7qddHU/a + HrU2NTyoralSKsqvFxVczslMk0kTQFEc6OftAStaI5/SpPgzJzKEVI8SQhd3b7/AkPAo + IpiRfamgCA68XV37oAH8nnQAX18/sRsaGRl9OTb26tX4+ATFa4o3PDQpwLRhKo2Pvxob + ezk6MgKaLwaewZZPO9sfg2M97Ki8daOkMC83Kz01JT5GEhbs7wsr2ttY6gRxP10eNTKm + qdDR1cPHPzhMEpsgBcHLBSU3bimr7j1obHn0uL2ruxf4QA/wXo1PvH4zOTn5dmpqmuId + ixkeGhQQtGEyTU29fTs5+eb1xARgvhwZZiCJYxvDeKei/Hphfm5Wmiw5LjoiBFY87Oyg + E0TYkBDChXZObp6+x8Th0XHJsnR4sKRMcbumrqH54eOOpz19Ay8Gh0eJHuCB3LuZmdnZ + 9+/n5ubmV2OBhyYFVuWZn5t7/352dnbm3fT01FtCOQ6QQ4MwZHcXYXxQW6W8WVqUfzFT + fjoxVhIW5O/t7uJgS0402LI6ZQhRzjCEXr6BoSdiEk6fy8yFBxV3au43tba1d/X0DwwO + j4y9mngN502/AzuAW1j4sIhYWlr6yGKZhzYFmD4QivT68GEBUOcYyqnJNwLHFwN9PV3t + j5rr66qVN68X5mVnpKbERYeL/Y94qEHUWpwik+KLQpoLndy8/AKRR5NgwrzCUnjwQdPD + J11wIBkQ/Bg+0CN2Sx8x4JWVlU+fPvPQUYFPnz6trEC2jx9Bk1C+n52Znn5LHEeGXjzr + fdrR1tJQV11ZXlKQmymXxp+MEAf4ACLSqchoi7qGbAiEZpgLGcLIUylnyYTlyrv3mx7C + gs9eEMA3b2G/9wzfEsEjcl++/Pnnn1/V4hsPDQqoCfQVgn35AukAEyiXCOQcOE5NvgbG + wYG+blCsr61SlBblZaefSYyJCAFEZ3trC1Oc7P+h7SyRbGgoMrW0cXD19A0Mi4qTyrMu + wYRVdY2tT7p6BwZHxsYBcGZ2DvaD+Yge4NHAvn37/v37Xzy2oQAEA2VoB5YgSSAXFxfg + x3dTkxOvRoef9/d0tDXX1yjLS67kZMiSYk4gnbo721mZC1OixmwKG7JMam3v7IG5MDJO + eu5CXlFZ5d0HzW2dPURwYnLq3ezcwuIi4wfrMXhs3P9B/Jcq/pvHVgqoVCLFmHTEEiQJ + 5PIy/AiMSKrjL4ef93W3P2ysq7p1vSD3PCBGiP293ZxsrYRsqoXhH4eMRMikToe9A0Il + p6TyC3nF5cp7Da3t3f0g+Hpymjnw4/Knz+Q+WA9jYOg2DflvHpoV2KgUgAoov6s4rsCO + C/PMjC+HB/q62prvVytKrwJi4snwID9PVwcbCxNjg0MHDmi6brqfzYYWNg5uXkfFEbHJ + 8iwgvF3b+Kizd2AYHgTBBTiQAWT8CN/qmDSPWLX3n39zbKmMSj4VSMbx8+cVuHH+/czU + m/HRwWfd7a31dysAMUMWHx0WiCkR2RRljeYZkc2GZlZ2lEmPRyemZl4uAsKmtq6+wdFx + EMQkuLxCDvwG//3gp2GM/2ZkP/23a9BLIAmQyGvfkVaRVGFGUHw9NjzQI0AsyEmXxklC + kE0dbS0wIx7UVNXAhoeMTMiG3v4hkvjT6bmFZUpC2D849npqZu7DEiy4BlD42I3j+ek/ + gP+CSoGNyv3NBGUY4UZMjisfF+dnpyfHR573drTWVyuu5V+QJ8WEB/qSEc1EVJpuTqaU + So1VNgw/mSzPLiitrGkEwqGxN9OzC4urBOFA9nkbRsHpbEuBDeqxl2oYv3798nn544f5 + mbcToy9621vvV90svpwpi48kIzrYoDTVwvCQoYm5tYOrl79YEi/LvFxyq7r+YVff0Njk + u7kPH1fIg8ihwhS4fgjbGj3/5TUF1qtIrwSMyKkw45dPy7Di1MTo85725jrljas555LJ + iO7OtpamxhqTKaZDpFJbx8NHjoVFJ8GGN27XtbT3DsKFczDhF4HgZguujYhv6KPAJo6k + MNWq3zEvriwtAOLIwNO2xhpFSV6mLE4iPurpYs+SqYYJkRiaWtqiogmKiJVmXC5RIJN2 + D4xOTL9fXIYJv8OD9PfXfag+o+bHbFBgnaIqM1J9AyuuLM3PTr4a6utsvX+77Gq2PCk6 + NEBIpoaHNDFk06G9i5BKs66UKutaO/qGXr2dXQBClkY3Evz77w2j4S/1VGADRvIKKH4H + xMX5d29ePu953HhXUZybnoJk6uPuRJWpFoYiTIduOL+PSpTnFJZX1bc9HRh9/W5+aeXL + 17/+2mhCPUfLD9OiwHqMqxA/L3+YfTs+1NfRUlt5PS/z9KmIYFSmtpYaixqUpYaMIU2H + yWm5xYqapic9g2OTZEMkUkKo9jFaBsJ370ABNXlZdQMnfvvz09L8NGbErof379woyJLF + 04SIswtTTYWpwNDG8bBP4PGYlPRLJRX3mtv7hsan3i+ufPn213/WI+RJdAestjx0DSQ5 + Edn088f5GSTT7rb6qvKr2akJOLugokYrQxNzxjA8Vpp++VplbUtH3/AEitIVzIbqNtxy + DPzNHSqgBhFG/Pp5eWF2cuxFT1tDdXlh9lli6OWKwtTYYPNJPvmQM9yh/rtx+A4ZigQf + 8ly6Gyz0/BtqCPXKpbym0VP43TlsDR9tCIXp9mqafbhcys8tdgeGXn9lHUEVQpQ02zm3 + IIa45M3P8fUCsNOD1gNkl031Osfn19p2SkLP4zcAXCWoz7U2Pa950wj0HDw/7J9/NgJU + EdTvmvf+A3p/98QZ6vd/4yZ+DCBdKdXzuyf+HbB+IPQ7ajO+1S8PGUG9vwPm92Lox0Of + ozYxxLkELq6pLKjvvRj7+D1R+sDY9jGb6KkMKADc2T1R+yiZCjdF8XsTt01G+wEamP3Y + xdxH/iMD0iSIL+/X7k2c3P69iXSrPr9H+Ie+e7Klgrb2n12/R5jfq7+m7R5u7OW9+kim + 656ZwQMX/JkZ9kTEnvzYk2dmwJDNiPzZNQ1Pne3Orr1/do0ZkT9DquNToDv7tb16hpQZ + kZam2emz3NqeY+b76cFfxB4+yy1A5GsqaFoNYXf26bymAp4A1m9NhX2UTfnaJhoWJdml + Xdtb26RIr7VNyIi0rAJfY0jTAkG7sE/nNYbK9F9jSIAoLFFDC+5pXuurhq/1pXklr5/v + HRFieA/X+qJsCifyNfe0rpm30zfWrbnXvSdr7gkQD2IVaL725RYLWO7grV+w9uUqRANa + ypuvQbv1arL6vbv3a9AColDZ8LWgt1rRWf/3Nq8FfWPX14LGY94EEe1lUJ/yNdk3rayu + /45fuCa7AFH33gg5vDfChi4Iml+qeiOUoDnCL+iNoMqnZEWhwwXvUaK96cg23/llPUrI + iqsJFRR5r6DNfX/02aN7ryBqT7LTXkG09gkgsmmRus3wnl0bGnDp8fInPbvQI2i3e3at + p8h75+nb/+/39s5jFIWMKkyMvIelxsaU29j5G3pYrlKklIpLN8ipvJesXt1xf2sv2XUU + eU9n792IX9/TmSiyIhVmpMbAvLe6lrbpOu3+Xb3VGUUBI0uqQo91EZqsm5mbW1iiz7o1 + OnVT2NnZ2SMceGhVgPSxh04klw3aqVtRI25zM7RUp57qQlN1VSNnjSsFCzD0/7mfzhkP + /EGTIzjCkMYiImlqBpbmFhbACZ48dFAASlkAnQoeowd81MCZ8dO/h7NOcAWOQl49ZMBI + GhkzliYUphRmPLQqwASC6ShEImNYD+ZDg0qGjxrGgt+eGHADXRVHciRZEqYkmPDljzDm + oUGBH/pgC4pBN5IP5mP0fhE+NZqrJIGSYAo0aUg8dFIAkoGdAI/o/Qr3qeFT36RPpxSg + FgSVhxYF1HTCJqn3G+Gpg1RtsxHxH7oooEE9vosrwBXgCnAFuAJcAa4AV4Ar8H9bgf8B + OzHHxAplbmRzdHJlYW0KZW5kb2JqCjEzNyAwIG9iago0NjE0CmVuZG9iagoxNDMgMCBv + YmoKPDwgL0xlbmd0aCAxNDQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4AaVZTW8euQ2+z6/QMT5kMvqeudZpgS566K4N9FD0sHCd1gt73XXS/f19HlKkJo7t + HIogeCWOSJGP+CX5t/Bj+C1s+Fd7Cz3n8HQb/hZ+DR8uP8dw8zlE+ff5Jrzf1hr4/7Tw + U/jw19unm9v/fPnvz/fL0x1ExdhEXMsh9i20LYWbh/Dhzw+ph4+PstuzJbkez5cstiSm + KmJKObDzELQ/F1R3XbRnW3LYEhglxmHFsYWy50WFZFuQD1mQExes27aVUGJfU+1lCMub + ry26tmBtWnuvWHqsvZrM6AtdaEp93dpRQm1c+abQlI51L1jaE/Z/Q6hrCnlrKpA+jEqu + wDNNm+x/9PiGVFe1pAhVAcTrUlVV2t/X0tMzqR9+ur3/+cvd77eXj/ePT3cPt1+e7m4C + 3GNb+75vJb8wgIfxhFrdl4eQWuMo3IfUt/Xom04TEG81K0EmBa6DNSCnJqs5iuuWgImx + Li12lYjfsQtG9yHuVVdyQdzjZNVJ42ohN/tdbD6+YH/KAaupNYXSK9UiyPm3jx/CJ4TU + D0sMv2iQXV6JV23h6pLxI5P3/GE04ggoBBYqKhicQMEMxi/9EDuSILHj3GQQNxpJcGKM + htlAk/FFkPmrkHB0D/MGJJzSLmeVCSSq4ZRtFPvVL9heEJlKuUxqorYYHqA8hCskBWQb + 5InPMBp+cAIhpT203FeJhj9ch5gGPCm8R+jl0mFECdfIMH9K6wb0rj+Fv4d3V7cXTFgp + vPvVBv+0we3Fop+eLsI/wvUP4Y/XqoHku++7aIl2GBgtp9PgB8Jd4kBZJvBdPY+M9KTn + kfv+tYuG3MvC88DvOA+OTi7KKYF2Vpkw4SkZI6Pgd+Fe+qVgf3VRV8sPhArzRPhrR8Ix + XfR0COKJDHGuzXEfrsjRyXpOaXBOOAiNP07oMUKum1lfi3jjYgEaWAHEelYC3QWjs/WY + inmDdUy2YWOumwQmfp9/wf5qvavl1lNhs8isBw3p53semY+i1eiZR6a8tl72k0MiytUh + f5reNxzzxl30zr797qSXXHOBa6bcgQTTZ9zTVhktNKE2hMg4Fh2fDkYJPIPaMrL11oA8 + JnWnEeqxPWOszlka6Of8GUqjuTwgHemeMob7O576kcfkImQisoczynhS5+hGDlB10gMz + ZecGasi092z7pGK06Eo7VJ295NSWXmOrjp+OJ36LEghZRA0f0GCC2mv4pcr2RPFLQIsg + A1hLA0SU+CHEFXNqq+MTfkogJC5CJiJb8dN9QF18FHSk31Unxc+V9QNSQ7i3jgS/Yd6k + zpHhp6s1LMT3drQ+O52wlZibOCFP/dgDym5uC1rIbxOIYI1l8Th0GTvN70VaRWQj8SDO + pDdL4RpKn2pAbmvOGRuPGoDSrzXg3eXjw0P4y+O/7m4uwvUvkuOXU05jYSmIpf9b+DKE + e8PMAnJsuUPjI/WekLeJUNqQ89HbxYJ+sBUEK4BYMxvcymK8oaE80r7UjOavI9un2BDl + NQZ4nDpahISt7aFmJNBY4CcYxKNBAgZbrlko24HiLEwLti3sEBOk5LrmDV/Q2a5J5ea1 + ZzRjqcArY6YifT0yThR8yA5HJamuMcW0cFHekTIL1D7ajmSf0a6K/tBdIgGEmFqnJ6wJ + n0JCRtw3GFOOhgFSY0J1KI12GlOEFjvKFZegnWROrmtnH143DNqB0HmGHR3zGQ1Z+2WX + G+sSwBPTTrgn9oUDdwyYXtFFGu5L2pgUAYXhHmHWtrNWGe6kHK1ADA+AuDuT4R6Pvrbj + yIjYgXvajjW1irWGO45DnWLiDt3WHbjIIsE95YwzJqgD9yVlXsfAY7hTCxQGojxwTwgQ + 4MmTUNyxeDAZ7lxS95QWx50XASxz3B27E+5Oe6laourx0oUmlmFG934rzGJaW+sH3Eb7 + uBnDHz9eXXwTX8xAR66lbtgDAZHrvieNMHDK/a3w/gSvQ8u8GY1N5JYP9muTRt/uAAcn + jYYXGiD45ObDMyoN/u8U+kGFvyNejLbwkI6MVF8QXCppUnQ/8R9bZXrdi/+aZoP6hgeP + lQkX1F7goie7EoIFkRNZfMyuBJfbO2LM7ULg857INDPscsrJLqe5XVOS2eX7kW/Y5Xp9 + ZZdT1UPoEOzuARqaEPhoKXD6jKwDa4BsRwEBEh03fZ/Dr7dccD7GAlftpUp+wpWGFbXA + 5UEBz4Y4axB3ogAatrPlxIaTTnB00Ez2oCxzd6Qd5TMNYatLL31FK0mdRAEo7YSv7ULy + fSUjDWvSDvwasrcDQMhSRcofgKQDd13eiA2AhByZKp4IiL7un5CCasngMRVPlGHIZBOX + EABMNvgGJHN3A8A1PAGQcENsvVOnocAg+CmduFjeX4/XjHSKp5Glop2WpxEAMWihymMM + Hmfg104DYC3BUVLZVnQ1qHLYO/GlIhUksVzq4hSoXNOKwpJPq3h9OBAG1SU5xfYjn66a + eolfuxZT21fO11ZGDFB7Ea9I1WpriPBxaCDxOmkozT3Bh82uCKfqEq/DLvAphSXd7DKa + a4xVJsns8v2mXcH0Qi5EHXUtXFvpyixeIRwFg1gjq9QRr9Cgo3mqSD5oMKC4EoBY5DEg + OoxpR60bEcsGgk3G3tBZMGJRIntm/zMpaCQiCk8dbNLAICb2HTSXDZQGxbYHqMpnOsJa + l45+BeUNLbMpMAhTycn1yokOa9AjoSq0yheqAUFEXekSskYokZUDNdiYChqcEbNDg4hT + xSsYHVkhWE6UYQoKzWQbBqPnG7INgrn9gGAxHZkiDIKI1iHywAyCSTAlh2XgehazuHWe + a6zlfJ4QapHUWKchMsohN3evDZWNX5e2SqsnfIQuwfc5q0VOgcpWiZ3mVW1KGnVO4lP2 + I9+oka6X+LZrNrV98YRnJSfs6B2kxho34wVJRmJ20tBYJWnTR1dATNE74JJndhmFR2F2 + Oc01xg1qSDIbbD96v9NMr6/sOmnLY5sxKxncQquhTsJjmef5ZiDBVdkTOgWv2agz8A/n + Y2SjxxLVWVgxlASA3mdk/pERQBiZf+SDwSUlHdcOF20EhrbsLmXwQMZGPoCK3EpKCtN6 + YY2hPrb3pLCmnSwD27dHyjuj2yKxlbO2gwMDia7C+4hhEBFSaDZYR8cOElul4ulx6iHR + VXEHM1VPBJZ/PM4wIYBLzGFbgxuvi1YMEO1wFdldMcAKJASqODGIzBVIW6e9J8U0HGzQ + kMd/ut764zELI1pkeegFJpjlHS+7vGSiz7h/kU/R483G+eDSmS/Cb/Kxy+d1S/igLG6K + 4neDF+8ieEN5eUthNVVZ6qQrMm3BuW0R5epVK8euCQ808A2qoZuyW3ltz7OZGXGGgnvi + 1NfNVzccuvLNJuMFfkKb6KnQQZV9vfmxAl3gLwk9K7e2xgPdJ5sEaX58HZJ57nhW8PJf + oINeVjBg84NedFDgRvA5tkhoa22VFfrikiZl7Ac+p5leknBcM6O+et02fXlR6BVhPe0K + CSUcxUQSqUlEJQde+Guh25WQEPSyYnY5ZdoVnGYaL1OS2eD7nexyvc52QTPXFke+zEQq + ZVXuEKhtTeuCFF+5QxDahvznFAzQILDQsozjzwNyq6iaDqQc84bCewU+YBVbIlwfnSDl + mHcj3kOVi30FKSoZzwg6551G9jYWXoSoIDEaYhGteFChNmwz5G7kFNNvsn2bRjUqdSUg + QhXMWvHNXrlYlIx0OChLQr5Hl8jWxvnQvcBCUWzoIVcEPPa6qpMwzJHLCLiYfNXiKdnm + dBPu7SxDwYkAb7Q7UrUjsJworp+zfS/axwWZLg3XRCJdkBSZ5ka0//g/qRNB4gplbmRz + dHJlYW0KZW5kb2JqCjE0NCAwIG9iagoyODQ5CmVuZG9iagoxNDIgMCBvYmoKPDwgL1R5 + cGUgL1BhZ2UgL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDE0NSAwIFIgL0NvbnRlbnRz + IDE0MyAwIFIgL01lZGlhQm94ClswIDAgNTc2IDczM10gPj4KZW5kb2JqCjE0NSAwIG9i + ago8PCAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkg + XSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDE3IDAgUgovQ3MxIDggMCBSID4+IC9Gb250IDw8 + IC9GMi4wIDE5IDAgUiAvRjEuMCAxOCAwIFIgPj4gL1hPYmplY3QgPDwgL0ltMjggMTQ4 + IDAgUgovSW0zMSAxNTQgMCBSIC9JbTI3IDE0NiAwIFIgL0ltMzIgMTU2IDAgUiAvSW0z + IDEzIDAgUiAvSW0yOSAxNTAgMCBSIC9JbTMwCjE1MiAwIFIgPj4gPj4KZW5kb2JqCjE1 + NCAwIG9iago8PCAvTGVuZ3RoIDE1NSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUg + L0ltYWdlIC9XaWR0aCA2OCAvSGVpZ2h0IDY4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xv + clNwYWNlIDIwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAxNTggMCBSIC9C + aXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + 7dABDQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDgYWA2MAABCmVuZHN0cmVhbQplbmRvYmoKMTU1 + IDAgb2JqCjgzCmVuZG9iagoxNTIgMCBvYmoKPDwgL0xlbmd0aCAxNTMgMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNzggL0hlaWdodCA2NCAvSW50 + ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVh + bCAvU01hc2sgMTYwIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRl + RGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVP7WkJiEBhwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg4AMD + OoAAAQplbmRzdHJlYW0KZW5kb2JqCjE1MyAwIG9iago4OQplbmRvYmoKMTU2IDAgb2Jq + Cjw8IC9MZW5ndGggMTU3IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug + L1dpZHRoIDc4IC9IZWlnaHQgNjQgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2Ug + MjAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDE2MiAwIFIgL0JpdHNQZXJD + b21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAA + wqD1T+1pCYhAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYOADAzqAAAEKZW5kc3RyZWFtCmVuZG9iagoxNTcg + MCBvYmoKODkKZW5kb2JqCjE0NiAwIG9iago8PCAvTGVuZ3RoIDE0NyAwIFIgL1R5cGUg + L1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMzIgL0hlaWdodCAxMjYgL0lu + dGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMjAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1 + YWwgL1NNYXNrIDE2NCAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0 + ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/khVBhwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwMDLwABWnwABCmVuZHN0cmVhbQplbmRvYmoKMTQ3IDAgb2JqCjQwNQplbmRv + YmoKMTQ4IDAgb2JqCjw8IC9MZW5ndGggMTQ5IDAgUiAvVHlwZSAvWE9iamVjdCAvU3Vi + dHlwZSAvSW1hZ2UgL1dpZHRoIDIzMiAvSGVpZ2h0IDI1MCAvSW50ZXJwb2xhdGUKdHJ1 + ZSAvQ29sb3JTcGFjZSAyMCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgMTY2 + IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0 + cmVhbQp4Ae3QMQEAAADCoPVPbQsviEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBg4Dcwp84AAQplbmRzdHJlYW0KZW5kb2JqCjE0OSAwIG9iago3 + ODIKZW5kb2JqCjE1MCAwIG9iago8PCAvTGVuZ3RoIDE1MSAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMzIgL0hlaWdodCAxMTYgL0ludGVycG9s + YXRlCnRydWUgL0NvbG9yU3BhY2UgMjAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NN + YXNrIDE2OCAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29k + ZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/khVBhwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGPgaGDtvAAEKZW5kc3RyZWFtCmVuZG9iagoxNTEg + MCBvYmoKMzc0CmVuZG9iagoxNjIgMCBvYmoKPDwgL0xlbmd0aCAxNjMgMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNzggL0hlaWdodCA2NCAvQ29s + b3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBv + bmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2XaVtaSROGNVGR + fTtw4CCLgGyCiGJQUMGgKIqDGxGFGAwENyKKcWXGlbig0eiMiYlmfutbfUAzryKZzOfU + B+Rwwe1TXd1dT5WU/IpfK/BfV6AU4sk/A31Q+l9oec7Tp0/L7gIeSPZPEkkUcMohKioq + KGTAG3gsKyOR/xqYQ5UBqoJSWVlJpdJoNDodXqhUeKQA8t8D8yxAAQgoDCbrNphMBlCp + eSDk/MMlRKsOGYIqKp0OIDaXy+PxyeBxuRw2i8XIA8tgDX+QL8ByLBqdASQeHxMIcVwk + EotFIhwXCjA+l8sGIAhECReXl4MhXUwWh4sJcBFBVEmlMrlcLpNJpVUEIcIFfC6H5FX8 + AIdg5eWUStDF4WFCEZAU1UqVukaj0dTUqFVKhRyIIiHGAx4NySuijoRVIGFsLoaLJVKF + Uq3R6Q1Go9FkMhprDXqtBohSiViIcdlMOrUY7g7G4vAFIolModLoa01mS0Oj1drUZLU2 + WurNRoNOo1JICZGAx7nFFa5sKSoAKGNx+TghBZbBZG6w2lrsjjYyHPZmm9ViNuoRTyzk + c1hIXVnhSoC0snIKgmE4IVNq9CaL1WZvc3a4uzye7m6Pp9Pd4Wyz26z1Jr1GKSVwhIO1 + A1yBkwvSYMeSMIlcpTPWW5tbXW6Pt6/fPzA4ODjg9/t6ezzPnQ6b1WzUqmQIx6RXVkAl + CuSKpFXSmBxIU67W1zXYWl2dXp9/KBAcC4XC4VBobDQw5Pf1dLocNotJBzghjw2VBXEP + aUgaypMnJOQqvdna0u729g8Fxl5GXkffxCHeRCdfhccCg74ed3tzYx3CCbiQa0FxpUga + ylMsVenMVrvL4xt8EXoVjc8k5pMLi4sLyfnETPz1xHhgoK/LZbeatEqpCOMyQVyBVEuf + lFdQGWw+XlWtNQGsu394bCI6lUimltfWN9LpjfXV5VRybio6ERzyeVwtDUaNQoLz2SCu + QKqQaCWNxRUQippaS4vL81sgFInPLbxbS2/u7O5lMnu725vptXfJ2TeR8WGfx2mzGNQo + VyaNAuLuVTWXKEiTKnXmprYu33AoMvU2tZre3ts/zB4fH2ezB+93t9KrqUQ8Mj7U5261 + 1mmrq3A+rFxBGiTKwQg5ktbhHQxG4m+X1jZ397MnZx/PLy7Oz05Pjt7v/LEGuFfBgR5X + s8WgkokxDgOl+kBbOQUSFUoU2jpra1d/4GVsLgWwg+Oz8z8vP33+/Onyz/PT7MHOH6uL + s9HwiM/tsMLKoVSpDxcOigAV5UGierPN2TMQjEwnl9M7ALu4vPry9fr669Xny4vT7P5O + enk+/mrU72l7ZtZBqlwWLNz9HZej8UVSlcHS7OodCkVnF9c2M0cfzi+vvl7ffPt2c/3l + 6q/zD4d7m6sLM5Pjg16XrV6vkuI8tHAPaFBSOhsTy9S1DfbnfSPhWGJpfft99uzi05fr + b39D3FxfIXGZrbXUXDQ01EsunFSUK8O904A2CKLJa4yNdrcv8PJNYmlje/87DcSRtPdb + 66lELDzc19GC9ogIgx1X/rQQjSxpnpbXdgrLBpne3FxDppcXH45y2nK0WjUUtQgNaYNM + fSPhKCrp3uEJVOEzlOHrF1SFs+ODXbKokGlOWxFabt1gu/UOjU/OQE23M4CDHYLiL9hy + J4eZrY3l5HRkDKrQbIEqFMmUjUFN9fXkDpmIJ1Krv29nDrInp2cfP348O/twkj3Y20qv + LM7FJkb93e02M6rp41Vg3R4sT/9IaHIqkVqBQ5rZPzjKZrNHhwf7mZ3NjZVFdLSGfZ35 + o0XukPtVuN29EoUGyvDcO/Ai/HoqsfBudeP3ze0dMrY20+srS8m5+GQo4O/J3SKE8LHd + S6Ex4QqRqfX1z9o7++Byi8Rm4EJ6t7y6RsbK8tJiMjEdi4QCA73utiZIFEoKJ6vgWaCg + Uy+qqtYYG1pcXb3+QPBlJBqfnk28nU8mk/PzbxOz0/FoJBwc8fd2tjdb4JjCHcKmFzyn + ZWSLERIyla7Oane6vb6BkeB4eAJu8mgsFotGo68jE+Hx0ZEBdJe3NJq0KqmYvMsfdgay + LdAYZI9R6esaoce4u3v7/UPDgRfBXIy+CAxDm+n1uKFvNdz1GUj0wW1Z8o/+p1ChXtrc + 6uzo9PR4+3z9v6Ho9/n6vD0ed0c79MB6o04lJ3AMtVS4kO7fbyXk5UtlQJsRQTvV1tZB + b25xtDldz93uThRut7vD5WxztEDDrzNoVXIJjkHPItv9vWNaAjTUnGmkoZHIlTU6ZEEa + m2zgHOx2h8MBr+AcnoEbMZsMuppq6M4Ag376SAdExqEy54/AhoA9AndkMpstFksDGRZw + NWaT0aDXqJVycA452CNOBMSRPoQJrgasm1SuUKpqNFqdXm8w1NbWGgwGvV6n1dSA55KB + SRLyQRnpQwq0U5QqyvXOCuKERApE5AbvQlmtIP2gGCcNIb2YISRxkCwNbCpyvEJcJCYI + SRVY1VxUVUkIQiwCFDKrYN+KuUvk7cGogrNHPGTG+RgmEAjBRudCKBQIMIzPQ9acCcKg + AEWMOYmDoQNmjvygwOZwuP8XHOTxybEBsYrBYOlAHaoFOcTACEOH4YPBYN4FPMBHMNTc + jjRoAnmw17536jwPDVgwXcEghIKaj9xTJQUNR2je+gELUUneE3L0g98UDDS4IVRRXXcK + YQZF380F/PB73H4If392UIXvPxJ3//fXm18r8JMr8D969u46CmVuZHN0cmVhbQplbmRv + YmoKMTYzIDAgb2JqCjIwMzgKZW5kb2JqCjE2MCAwIG9iago8PCAvTGVuZ3RoIDE2MSAw + IFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA3OCAvSGVpZ2h0 + IDY0IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRz + UGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7Zfp + X5JpF8c1Fdlk33dB2QQRxRBMxUFxg8ENUyFDcUiTJDVz4RnTdFzIfcY2q791fteNWYlU + z6vnxdN5cQvI58vvnHNdZykq+mX/PxEoLmT/XQhAufPFSr6yL5/ewZd+gpojgVBaWlbA + SkvxbwL+EZBi5UC08nJ6zhg5u3pHLy+n4WdA/AHvilVWRgOIwWSyWCw2m11xbWw2PmEx + mQw6nRBLv8sjsBL4BxRA7AoOh8vj8b8xHo/L4VQAyqTTr3gF3KVg0EVYFRwuny8QikRi + sUQivTKJRCwWiYQCPpAVOR6RdzuOKCPCCIsHkkQqkysUSpVKnTOVSqlUKOQyqUQk5PPA + Y9DLy8oI7pbkUjAEjMUGCyhw1FqdrlJvuDZ9pU6nVasUcgAFPA7kFcQVk5iVMyCML5TI + FCDpDdVGk9lisVqtNTV4WCxmk7HaoNdp1AqZRMjnsFnAwdl8cZAGGJ1VweWLpAq1Tl9l + tFhtdofD6XTWU+Z01jkcdpvVYqzSa9UKqQg4oq70Fl8hDQlgUjClVl9trrE7nA2Nd90e + L6yZPLxN7ruuBqfDbjVXV2o+42gIXZ64YkijM9gcvkim1BpMNbVOl9vT3NLma/f7/R0d + HXj6232tLc0et8tZazUatEqijsUg4vJolDQWYFKlzmCxO11Nza3tHYHunr5g6HdioWCw + r6c74G9vbXa76mxmgxbqkAo6Da7eyCpxlM5k84RShdZgqW1w3/P5u3pD4cGhyMhozu6P + RIYGwsGegL+t2V1vNxs0ComAy4a4knxaKY0OaRKFxmCudXnb/D3B/uH747GJ+FQiMT09 + nUgkJuMTsfH7w/3Bbn+rp8FuMqjlYvhKz3e1+A5OB5snkqkqjbZ6T1tnb3h49EE8kZx5 + nHoyn06n5+dTqcczyUQ8Njoc7u1obXLajDqVVMilXL0ROEJjVvDFCk2Vpe5uS0ffwEg0 + Pj2TSi88W15Zpez58tLC/NzMdDwa6e/1tzQ6LAaNXMSvgKs30wAaHBUgBUZbg/e3nv6R + 2GQy9XRpZf0/G5tbxDZfbGTWni+l55KT0Ui42+ch4hQSPoeZTyNJYHGEUrXe7Ghs6QwN + RycfpRafZza2dnb3DrLZ7MH+3u721sb68kIqGR8fCnbcc9WaKlVSAQlcyQ1PKRpXJFMb + LHXutu7+0YlkanEls7mzlz08Pjk9PT05OTrM7m2/yDxfmJueGAl3tbrhqloq/A5Nrqmq + cXraewfHJ2fTy4DtH56c/X1B7J/zs+PD/Z0X68vpmfjYQI+vyWk1qGUipOF2bTyRXFtt + q/f+FhyOJeYWVze2ATu/ePP23fv3796+uTg/ebX38s+VhdlEdLC33eO0ViEN36EpQGvw + +oORB9OppbXNv7LH5xdv319++PDh8vLd24vzo4OdF2uLc4nYUB9oNd+lcSltOdofqaX1 + zd1XJ+ev311+/PTp08cPl6CdZP8CLTV9Tbvd02KSU9AQt5yn0LYObde0TxTtOJvTBk+v + 4nZrFnLnTYicWp1Nvt7BaOLxwurGzsHRGfH040dIg6dnR/vbGytPZ6fGkQV33XVOC51e + td7ioE5IfAY53dqDqxdIwuXle5KF4+zuVmZ5PvnwfjjQctdhps7bLaeXulm49EqdqdZ1 + rzOENFBJBe7sn4vXb968vvj77DhLpfRxIjYc9De7yF0Q42ahJN04vSiWNHLrkVRy4HoG + RuPJJ0urGy93s0cnp+fn52enx4cHu1t/ri6mkg9H+7tJ2EhKeWxS4PLqG6lI3OurFSRX + 68niamZze3c/++rwVTa7v4ubsAJYfHzw+mLlknCTVkRVS1LfdEScr+v3SDSOa/9sFVf1 + 5c7OzvbLzY3M6jNcetzSUKDNDWla4ijCllctixA4uApxqkqT3eX1dYWGxiYSKEmLy6tr + mUxmfW1leTE99ygxMToYDPg89YiaskB5KwINXYb0BTmKrwO4QBAl7mEiOZuaTy8sLDxN + z6dmk1MT45H+vk6fFwVEj0sKabilN5NAaCWk+nIEEtIYHC4PanlocGTsQXxqOpl89Cj5 + R2LqYWwsMkDqeFNDLUol/CRN5jZaEenO6KdUn6my1Najz3T2BMODkdGxaCwWi0bHRiOD + 4WB3h6/Z7bzuMZCWdz5IgnPtOdcDtQazrc7VhL4V6OkLhfsHYP3hYB8aIPqVy2EzQZlU + yKsoJA00MjowKJxCozeSnur2tqA7dwYCXV2BQKe/va3Fi15qtxj1FAx+UoPDjdNGvYU4 + 0u6BQ1NV6wwmq91Rj4bvvddCWTMmB1e9w2YxGnRquUSIzkw1+vwc5FxFImgExxOKZUpN + pcFoIcNIfYPL1djowgRS57DXUCyFTCyAmww6md9u3KrPQnMTHHDUaCNXUoOSGZOSzW63 + 22yYjkwYj3RqpVwi4nMBKzi9XfkKdWTsogZCqUyh0pBpsKraCKuuwuRGZkEZNQpSwxaU + FZIGIFFHpjgyE2LAFAOICVOt0cI0apAUMqlYhDGVDS9p1FBewM9rdaVkwGdCH5fM0WIM + 0TK5XC6TSaUSMSZePpdiwUtqhP4cplv/Qh2RBx6DBYEcTPgCgZAygYCQgMK+gHWh8Dj+ + FfjLBkIWkNzawLkyalGgUBSrwGz/FQwvr3hYQ8hKQ2dgqQEVDwZ2mNwSQ3T9FIsi54Dw + GEajYeMihhdkv/rxgvWtuC9AxJAsg5/tavX7eVXfcLGDkqx8ZeSTb77y682vCPwPI/Av + EYzuZwplbmRzdHJlYW0KZW5kb2JqCjE2MSAwIG9iagoyMDQ5CmVuZG9iagoxNjQgMCBv + YmoKPDwgL0xlbmd0aCAxNjUgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFn + ZSAvV2lkdGggMjMyIC9IZWlnaHQgMTI2IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9J + bnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVE + ZWNvZGUgPj4Kc3RyZWFtCngB7Z37M1trF8eVFpE7CSKiieQgaIi7mGioE0XQarRah3Ep + RUU6HKKTllQdcTmNyqC0KlVU3TUt2p6e6b/2rmcnKXWLvj0z2c3O+kVGZvazPvu71nou + +9lPvLw85rkDnjvguQOeO4CrO3AGl/af3SJE5/3NfHBk35zyRj7+DLCd0Mfn7Nmz53Bq + 4JqPD4b8f7JikICI+Hz9/PwdRsKFObzx9/PzRR7aYH8Y1QaJVPQFQhIpgAxGAaPixpA3 + yKsAEsnfH8GCsKDrD6GijERK+gIjIFKoNBqdzmAwcWYMBp1Oo1EBNwBYESpGetpURWIC + JShJIpMBEfgCg1gsNjs4ODgENwbOsNksVlAgk8kAWDKZhFRFpKeU1EZ5zs8/gEyh0REi + 0HHCwsK43PDwcB5ODFzhcsEpTkhIMIKl0yjkAH8/m6anqb42TKQllcYIZLFDQsO4PN55 + Pl8giBTiyiIFAj7/PI/HDQsNYbMCGSAqaGqT1FnsopiFkAVKCqIESF4EXyAURUVFx4jF + 4libxbnU7E6AOzHRUVEioYAfwQNUREoBUghe57FrxwwgY5Sc8Ag+MMbExsdLEhISpWBJ + ODHkS2JCgiQ+PjYGWPkR4RyMFILXBnqiog5MCo3JCuaEnxeIosSAKE1OSUtPz8iU7VmW + i2zPA1lmRnp6WkqyFGDFUSLB+XBOMItJo5wCFMP08ydT6UxWCDdCIIqJkyQmp6bLsuTZ + CkVO7iVkeTgwzJHcHIUiW54lS09NTpTExYgEEdwQFpNOJaMkhdA9VlHA9IHcBMxANofH + F0bHJUhTM7KyFZd+V14uKCxSqYqLi0twYeCISlVUWHBZ+fslRXZWRqo0IS5ayOdx2IEI + 1Pcc6l+OAz1jx2QEBYfxIqPEEmmaTJ6Tl1+oKr1Sdq28/PqNChzZjevl5dfKrpSqCvPz + cuSyNKlEHBXJCwsOYthBj+MEzLO+/gFUOmBGCKPjE1Nl2bnKwpKr5TduVlZX19TU1dUj + u+1yw9yoq6upqa6uvHmj/GpJoTI3W5aaGB8tjABQOhVyFEYMx4CiHsWPRKEHIsyYC0np + 8lxlUam6orK6tr6xqbmltVWjaWtr0+LAwA2NprW1pbmpsb62urJCXVqkzJWnJ12IQaCB + dAoJS9EjAxdFLdQgGpMNmGJJSubFvAKgrKptaLrbdq+9o7OzS9eNI9N1dXZ2tN9ru9vU + UFsFpAV5FzNTJGIAZTNpqBYdI+gZkBNhsjg8YYwkRaZQqsqAsrGlrb1Td1//sKfXYHiE + IzMYense6u/rOtvbWhqBtEylVMhSJDFCHge6F7I/1NyjAheTk0RhsELCBdEXADO/WH2r + pqFF26HT9xj6+geMxsGhYRzZ0KDRONDfZ+jR6zq0LQ01t9TF+QB6IVoQHsJioMg9UlC7 + nJCc/Kj4pExFfkl5ZV2Tpr1bb3g8MDT8xDQ6+nRszIwbGxt7OjpqejI8NPDYoO9u1zTV + VZaX5Csyk+Kj+JCixwrq7Q1FiMpgcSA5E9MvKovL/6hv1nbqe/uNI6an5vGJyWdTYNM4 + MeTLs8mJcfNT04ixv1ffqW2u/6O8WHkxPRFSlMNiUEFQb+9DlQiFLWRnIIpaSYo8T6Wu + rG++p3vQZxwZNU9MTb+YeTk7O2uxWF7hwsARcOflzIvpqQnz6Iix74HuXnN9pVqVJ0+R + oMjFBD0icCFsfVF2ciJEcVJZTkHZrVrA7OkfMpknpmdmX829nl9YWAR7gwtDniwszL+e + ezU7Mz1hNg319wBo7a2yghyZNE6EBKWQfI+oRGcgbANozGCuIDohLVtZWlFzRwuYw6Pj + UzOW1wtvlt4ur2C2iguz+bL8dunNwmvLzNT46DCAau/UVJQqs9MSogXcYCYtAAL3UMXF + wpbOCuWJYqWy3CJ1VYOm8yFgTjyfnVtcWlldW1/f2Nzc3MKNgTMb6+trqytLi3OzzycA + 9GGnpqFKXZQrk8aKeKEsOnQtPocSFAtbGCLwoy6kykHO2pZ2fd8QYFrml1bWNra23lnf + 486s77a2NtZWluYtADrUp29vqQVB5akXoOSymVjgHihEkJ4obEPCI8WJGYpCdVWjVtdr + NI0/tywsrW5sWd9/2N6x2S4uzO7M9of31q2N1aUFy/Nxk7FXp22sUhcqMhLFkeEhKHAP + JShKTzItKDRCFJ+clVcCcnbo+0fMU7Pzb9c2rR92dnY/fsKhfdzd2flg3Vx7Oz87ZR7p + 13eAoCV5WcnxoojQIBr5cIICpz+ZzoKwlaTK869WNrTpDMbRyZm5pdVN6/YOQH7+B+wL + jgz58/nTp48729bN1aW5mclRo0HX1lB5NV+eKoHAxRL0YCE6A70nhcnmCmIS0hUF6uqm + dv3jEfO0ZWFlw7q9C5AOwH9xYg5/AHV327qxsmCZNo881rc3VasLFOkJMQIuJCgUogMF + 19vHl0SF9BSKpbJLqhu1dzt7BkwTM6+X1rbe73z6DFc9wPfVRXbADXDs86ed91trS69n + JkwDPZ13a2+oLsmkYiEkKJXke7DgAmcADIZ4ojhIz9Kb9RqdYfDp1OzC8rp1++MBTBcR + 7mt2HywC/bhtXV9emJ16OmjQaepvlkKCxol4MCQKOMyJyi2Uod/iU+TKK5WN2vt9w+bp + V29WNkFOCNp9V/53X4Mu+rjfmy9f/gFBN1fevJo2D/fd1zZWXlHKU+J/Q4UIFdzvOxbo + Vsg0Fgd6z7Tsy2VVd9r1/X+Pv5iDsP2wC5yOC7uI68hmHT4B5+4HCNy5F+N/9+vb71SV + Xc5Ogx6Uw4KCe5jTVm6jURm6Vt3c8eCvJyg9199t70LY2q95ZHsu+6fdKQjc3e136yhB + n/z1oKO5+hoqRNG2gnuIE7oVBnQrqNwWqmta/uwxmiZfzi8DJ6QnLjG/fnWAQoK+W1+e + fzlpMvb82VIDIwUouMDJgJHfwbhFnOwwAYyGcorKa6DcGkefQRnasO5843SZcMc2bAOF + QrRj3YBC9GzUCAW3prwoB0ZEgjD2sZxcGPVl5qqu17Z29Q4iTug9URnCrndsay78AnMM + FSLUgwLnYG9Xa+11VW4mjPy4x3BSYFIWiXWf1+tadYYh1K3Yyy26nAtpTmgaeWYvuKhj + GTLoWuuuYx1oJEzNYKBwOG6B0zFMQN0ncFoW9zhPaMulX+1xLlowTk29Y6BwEidMPi8V + V9Rruh8Nj/16nGPDj7o19RXFMCCKFYafgrPt1+Vs83DC0AimZVh+2uOWqHq6tNQ4adxR + b6EOofw8MW7RNPskPZ005dKvnXB+NwH1cGLTMpwOEmxh9EN6wrIJLCfwhLFJWP+J6hBM + PxdX0WoCDPtcGphOGocBEVpRWF1EE1BHfibFCnmwoHBw4QSWh9CyCU8Yl4RW+25rbZxv + gHMXOJ205OKvgXMXOLGJ9qNu7W204pcUh3GSDiwQeTg9ero4Wvea98Qt1ZOfnnq7lxA4 + ++TJT09+esZDOEvKfe548pPI+XnEvMzya83L4Im203mZZ90Ee76yL+tx9/GH1hMIoqez + 9VvcibjPISd6Hnhuf/K6Jn5XiL57juR0/daZnh7OfQHkko8/p6fbPxe0bQdz9+e8e8/t + u37V5/ZdTp/bw34TQuzDIM6+GiLskzpLkH1vhNnHSJB9qUTZZ0yQfeNEeQ+AMO91EOY9 + HWK8d+VFkPfovI56L/LBr/Ve5IPTvBcJhYgQ77kS571lYryH7kWQcwW8iHJOBFHO/XAI + 6u7nuAAnMc7lgUpEiHOWkKCEODcLi1x03Jubn4MGnJCiBDjXDoFCirr9OYVeNlA4287N + z53cA3Xzc0S9iHIuLKYoHNrs7uf8wu4MVHXhDG53P7cZQG2k7n4Ot01STFP3PlcdgYKk + QOru5+SjPVQ2VJSpbvy7BwjUjgq6uvXvWNhQQVZMWOwXMRAyfszuEvxBPtrd/fk/6GL4 + s5/n8lzBcwc8d8BzBzx34D+9A/8DxqE/GgplbmRzdHJlYW0KZW5kb2JqCjE2NSAwIG9i + agoyOTY3CmVuZG9iagoxNTggMCBvYmoKPDwgL0xlbmd0aCAxNTkgMCBSIC9UeXBlIC9Y + T2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNjggL0hlaWdodCA2OCAvQ29sb3JT + cGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVu + dCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2X6VuSaRTGVWLfF3nZ + XlYBCRRQFEFFFIVAFCPcFReK3IKicDCT0aJsKGO0/uA5z/NqNeOLOvN1Oh/0urjgd933 + Oc9yPy0tv+r/2IHW7/Wf3MOv2/5e8Mm/IVG/ZzDuQTGZTPSPwUDEO2MwgYF+zGKxqWKx + EAlh7kRBBBDAZLE5HA6XRxWXw2EjzN0oqAsMUMDmcPl8gVAoQiUUCvg8LsIgym1SsAhE + 4PEFIrFEKpVBSaVSiUgk4AOF0nJjcykE0iAUSaRyRbuSQKVsV8gBgyiXUppPCCGYTDYH + NEhkCiWh1mh1JEnqtBo1oVQAhc8DKdhPMwiFQCLEUgWh1pIGo8lssVjMJqOe1KiAAlIo + SFM3rTAQJiBEEnm7Sqs3Wqy2TgeqTluH2UhqCIVMLMQQaCy9EJBxj8nGCKWGNFpsDleX + 2+P1ej3uLqfDZjHq1O0yCYag6dBCQAbqhUiiIDR6MxA8PT6/PxAY8Pf7vG6Xw2oiNUpQ + woPGMugZSAaLwxNK5ITGYLG7PD5/cHgkPDo6Gg4NBft73U6bGUMEPA7zXlsbnQ4sgysQ + y5SAcHT1+AdHItEH8cRkIh6bGAsF+7wuu4VUt0tFqCX0QrAMvkjartFbHN29gVAkNpl6 + mM5kMumZ6UR0bNjf47KbSZVCCm5ACE1DsAxwolCRZntXbzA8kUhl5pdWVrOry4tz6el4 + JDTgddmMOkIuFnBZTDozrTAUaKiM0Bptrp5AOJpMzy+v5x7n8/nHm9nluZnE+LDfe7/D + oAE3IIRB0xBgsLgCiUJNWhwef2gimV7M5p7u7hWKhb2d/ObqwsNEZKivu9NMghA+h0Vn + prWNyeaJpEokwzcYSaQX157sFEvl/f3yq1JhO5edn4mPBrxOKxIi5LLpGLA4wIqcwDJG + Yqn5bH7vRfngsFo9OqyUizu51dnp6HBft92kI2QiHptJ01TEQFYMVldvMJLMrOR2X/z2 + 5vhtrVY7qR6Wi9ubS+l4eMB730KqkBkm4/pgUDuEMFijvbtvOJpaWN8q7r85eX9ar/9x + Wjs+LBfy2dmp8cFel9WgVkgQ43pTKYZSZ+50+8Px9HJu7+Xr4/f1z1++nH3+WKtWStsb + CylkxmaEhgg4rOsMGAu0VIba4R0YTWRW84X9o3cfzxrnF+eNz6cnh6/2csvpByN+d6dJ + q4SmwmD+udp/MO57g2PJ2ezTYqX6vt44//r14vysXjsqF56sPIqH/W6HWdeUgUaLdAAj + kpxb23pe+f3Dp8bFt2/fLhr1WnW/mF8FxoDnJsaVF8yY/Ynx9fwLYhQww38nhsMbGJuc + zeaLv1Vr9bM/Ly4uGmcf370pP3u8DMO9vR9SQmeGlR6OP1p5vFc+PDn9dNZoNM7qH45f + l3ZzSw9joX63Hc+FSzOXlsvZak12d38oNrO4sf2iUn13Wv/0+VP9w9uj/eLW+vz0xJCv + C2arkAiarg+BBNYYbJeh8Skw8+zlQfVt7fT0Q+3kqAIyVjKTY8EeZ4dercDr9NpsW/B+ + EStUehhMYDSeXlzfKryqvKkenxxXDyulvfzaQioGy8MBG1cGRxntWsd7TkboTJ2w2CeS + meXNrWelcuXg9UGl/GIvv76UnowM+uAU0sDyoN9zeO+jDWOwOr2BcCw1u7yR3y08L5VK + z59tP1lfykxFQzBZ2HLQDrRMr+85dAZx+GI5CLF3+QbH4gBZy+W3tne2t/Kb2cVHU7Fw + sAdkaJWUFVoGmIFDCB/J7v6hsQfTcBhm1zc21tdWl+bSyWg46EPHGMhAVq5vOdg+0FQW + ly9GB6rV6ekfGo1OptKz8wsLC3OzcCRPAMLtsODjtMlR2NICZkAIHOyEzmhzevqCoUg0 + npxOpVJTyThcDQFAdBi1+Fhvdr+gywE6IpLC7WC03Xf3wjUXjoxPRCfGx8LDwX5vF0aA + EyyDph3IzOWVDRCdsaPT5e7tHwgODg0PDQb9fT1up91i0BKQH5pfc8gMA124AqREa0DX + vtvb44Pq9Xq64co26yE9AIILMabZvY8g4AZDCBweOh1Ol6vL5XI67FYqgCBE82sfzOAA + QkHkSpWWNJosHVabzWbtsJgMEGHa5ZCmKAR9N9DheAWBDAJxTKXRkXqDwWgw6EmtBgUy + SEG3Ib5DuFSoaycIlVqj0ahVAMDBECIdyi/NVSAhoAQnQx6ES7EU0iUuOURU8WVAvTEV + IjMUBAdtiMkQksViiUQiFkNU5oONq6CMv3rDH1CC4iGK61we/6ogaV+F5BuNXIK/Pxvg + 0QCxnyo2fjncLfJjDkVBj4cfRb08bs37Pxm8ekUxLgv8Qd32YPgJ8N3TFQn9Gur6V359 + 8qsDd+nAXzYBYhsKZW5kc3RyZWFtCmVuZG9iagoxNTkgMCBvYmoKMTc2MQplbmRvYmoK + MTY4IDAgb2JqCjw8IC9MZW5ndGggMTY5IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlw + ZSAvSW1hZ2UgL1dpZHRoIDIzMiAvSGVpZ2h0IDExNiAvQ29sb3JTcGFjZQovRGV2aWNl + R3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIg + L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c/U9SbRjHNVHkHRQBeXmggy+8hHSSQqUC + BqNMTfOlqNRhWAvDKCeTZS84KyYrk9L5sjJzaVNj2pg6l+35157rYM9aCvk8P3Hk3N+f + 2M4P5/7c3+t7naM795WTg4R2AO0A2gG0A5ndgdwjqP+1Y8B37JfyjoR+rfcYLP8/4O4x + AhuNln/kRKPBwgnkw1CTlHuIBXR64Z4YpNfPhdLpBWANwB5C+pMyP78AEBlMJovFYrPZ + nCMgWCYslslkFBYSrH8mJTDzoFoBEhDZHC6Xx+cLjoj4fB6XywFaJqDukaYp3iQmeElQ + crg8gaCoWCgsKRGJxKSXSFRSIhQWFwkEPC6HIAVPoXhTgxJuEmYSlHxgFIklpVKpTC5X + kF5yuUwqLZWIRcDKT5KCpQRoisabxIRgsthACZBAqFCqVMcx9REQdlylUiqAFlCBlM0i + YpoaNJfIJp0BZgqKRRIpMGLq8opKjVar0+lJLZ1Oq9VUVpSrMWCVSkTFArCUQSe60UFD + wU7ALGRxeAKhWKpQYWUVWt0Jg9GI4/gpkguWaDQaTui0FWWYSiEVCwU8DjiaT0tRuWAn + tCBmElOmxMo1eoMRrz59xlxbB7KQWMT6as1nTlfjRoNeU44pZUlQJjSjFIbmgp2FTDZX + IJTIlOpKfRVuMtdazlltdofD4SS1YIF2m/WcpdZswqv0lWqlTCIUcNnMQjB0f+Hu2ckC + TLFMVaY14KYai9XudF2sb2hsukxyNTU21F90Oe1WS40JN2jLVISjXFYqQwlOqFo+YCrL + tMZq81mb48KlpubWto6rbtLrakdba3PTpQsO21lztVFbRpQunwOGHihcKNuCQha3SCRV + qrVVpjqrs77xSrv7Zle355bX20tqeb23PN1dN93tVxrrndY6U5VWrZSKighDDxRu7jF4 + poCdEgVWaaius7kaWjqud3m8d3z3/P33A6TW/X7/Pd8dr6frekdLg8tWV22oxBQSMBSe + LfsDSpQtpFMkVZXrcbPV1djq7uy57fMHBgaDQyGSayg4OBDw+273dLpbG11WM64vV0lF + REKhcH9/JUpy8orFCkxTZTrrBMxur6//YTA0/ORpeITkCj99MhwKPuz3ebsB1HnWVKXB + FOJiXkrOAgabLyxVlunxGlt9i7u7ty8QDD0Jj76IjEVJrrHIi9Hwk1Aw0Nfb7W6pt9Xg + +jJlqZDPZhQc8JNWwOAQZVthMFkcTR2d3r4HweHw80j09ZuJtyTXxJvX0cjz8HDwQZ+3 + s6PJYTEZKojC5TCgEe2rWxqdyS0SyzGN0Xz+wpXrPXcDweGRl9Hx2OTUzMwsqTUzMzUZ + G4++HBkOBu72XL9y4bzZqMHk4iIuk56Ck8WFeKp1eK39UnvXbT9gRl5NTE7PvZ//uEBq + fZx/Pzc9OfEqAqD+213tl+y1uE4NAeWyUnBCuxWW/lV+ohrK1u3xPQw9e/kqNjX7YWHx + 89IyqbX0eXHhw+xU7NXLZ6GHPo8bCrf6RPlfpUJouAf8hMcKT0jE8/Q5V/MNrz/4eDQ6 + MTU3/2npy8rqGqm1uvJl6dP83NREdPRx0O+90ew6d5oIqJBouPvzCZx84Kw0mq0XW7vu + BELhyPjk7Pzi8upafH2D1FqPr60uL87PTo5HwqHAna7Wi1azsRI4+Sk52fwS6XFoQ7b6 + tm7fwKPRaGz6A2DGN74lSK5vG3EA/TAdi44+GvB1t9XboBEdl5bw2an8ZAtKZJj2ZK29 + ocPTN/j4xet3cwtLK/GNxObWNqm1tZnYiK8sLcy9e/3i8WCfp6PBXntSi8lKBGk4RXJM + i9c5Gq/e8gefRsan3i9++bqe2NzeIbm2NxPrX78svp8ajzwN+m9dbXTU4VpMLkrPCY8V + 4Lzm7R8Kj72Znv+8Ev8GmN93Sa3vO9ub3+Irn+en34yFh/q91whOnfpQzia3935oJBqb + +bi0up7YAswfpNbu952txPrq0seZWHQkdN8LD5Z0nPBnWSFbIJIn/UzB+TeJ9ePPnL/9 + 5yQ3Lx9eb+F1SH/K4rzs7g2An29nF5bXNhLbO7s/SEwJS/uxu7Od2FhbXph9C34Get2X + nZZTenghghfc/DzEifwkZ/2iukX5RP2WnNkkVoXyifKJ8onymekdQH0I9SHUhzKdwvT3 + R/lE+UT5TJ+PTF9B+UT5RPnMdArT3x/lE+UT5TN9PjJ9BeUT5RPlM9MpTH9/lE+UT5TP + 9PnI9BWUT5TPbM8nRb6TyjmEM1u+e/uNkwLfMVLju1SKfGdMke/GqXIOgBrnOmgUOadD + o1Pk3BVVztFR5FxkHkXOuRLnsylxbpka59CpMleAOnMiqDL3gxjLk/1zXHIoMpcHOKky + Z4kac7MIQ6kwBw04icrN/rl2e6DZP6cwhypzJ/dAs3+OaE4SNDkxNbvnwsKknp8TcIlR + xlk855cYSZQkPZbtc5uTw5coMYc7SfovLhAfLf1aPfqFdgDtANoBtAOZ2YF/AMsrp4UK + ZW5kc3RyZWFtCmVuZG9iagoxNjkgMCBvYmoKMTg2MwplbmRvYmoKMTY2IDAgb2JqCjw8 + IC9MZW5ndGggMTY3IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDIzMiAvSGVpZ2h0IDI1MCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw + b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl + ID4+CnN0cmVhbQp4Ae2d+VeSW/fAS01FlEFBRMBAuAoOOOSIC0PzYipqGQ7l1eVwNTXR + ll6jFqVkXnG4OS01LZOcImcjh8Z1/7V3nwc0csjuvd/v8tz3PfuHOuXqefaHvT/7nOfp + B86dI0E+AfIJkE+AfAJYfQLnsYz/s48I0bkdhDtGcZCUG8rxnwA7Cd3dPTw8LmAakJq7 + O4X8N1kpSEBEfJ5eXt77QcMi9rPx9vLyRBk6YP8yqgMSVdETCGk0HzqEL4QfNoGyQVn5 + 0Gje3ggWCgt1/UuoyEhUSU9gBERfPwaDyWSx2JgFi8VkMhh+gOsDrAiVIv1RVVExgRIq + SaPTARH4/AM4HC43MDCQh01AMlwuhxPgz2azAJZOp6GqItIfLKmD8oKXtw/dl8FEiEDH + Dw4OFgiEQqEIk4BUBAJIis/jBSJYJsOX7uPt5ajpj0xfByaqpR+D5c/h8oKCBSLRRbFY + IgmVYhWhEolYfFEkEgQH8bgcfxYUFWrqKOlpvYt6FloWKH0RJUCKQsQSqSwsLFyuUCgi + HBF5puFMAtKRh4eFyaQScYgIUBGpL5BC857eu05MHzpFyReGiIFRHhEVpYyJiY2DiMck + UC6xMTHKqKgIObCKQ4R8ihSa1wH63YruY/oy2JxAvvCiRBamAMS4SwlJyckpqaqvkXZG + 8TUDVWpKcnJSwqU4gFWEySQXhfxADpvh+wOgFKaXN92PyebwBCESmTxSGXspMVmVpk7X + aDIyr6DIwiCoRDIzNJp0dZoqOfFSrDJSLpOECHgcNtOPjiSF1j2xooDpDm4Cpj+XLxJL + wyNj4hJT0tI1V37WXs3JzdPp8vPzC7AISESny8vNuar9+YomPS0lMS4mMlwqFvG5/gjU + 8wLaX04CPe/EZAUEBotCwxTKuCSVOiMrO1dXeK3oRnFxSWkZRlFaUlx8o+haoS43OytD + rUqKUyrCQkXBgQEsJ+hJnIDp4ent48cEzBBpeFRsoio9U5tbcL249GZ5ZWVVVU1NLYpf + zzyoNGpqqqoqK8tvlhZfL8jVZqarEmOjwqUhAMr0A0fhxHACKNpRvGi+TH+EKY+OT1Zn + avMK9WXlldW19Q2NTc3NBkNLS0srBgFpGAzNzU2NDfW11ZXlZfrCPG2mOjk+Wo5A/Zm+ + NErRYxsXdS3MIAabC5gKZULq5awcoKyormu403K3rb2j457xPkZhvNfR0d52t+VOQ111 + BZDmZF1OTVAqAJTLZqBZdEJBz0M5ESaHL5LKlQkqjVZXBJT1TS1tHcYHpkedXWbzY4zC + bO7qfGR6YOxoa2mqB9IinVajSlDKpSI+bC90b5i5xzUuVU6aL4vDE0rCowEzO19/q6qu + qbXdaOo0d/f0Wix9/QMYRX+fxdLb023uNBnbW5vqqm7p87MBNDpcIuRxWKhzjy2os5wg + pzgsKj5Vk11QXF7TYGi7bzI/6e0feDo0PDwyOjqGTYyOjgwPDz0d6O99YjbdbzM01JQX + F2RrUuOjwsSg6IkFdXODIeTH4vBBztjky9r84l9qG1s7TF09lsGhkbHxiclnUxDTmATK + 5dnkxPjYyNCgpafL1NHaWPtLcb72cnIsKMrnsPygoG5uRyYRaluw0x91rTJBnaXTl9c2 + 3jU+7LYMDo9NTE2/mHk5OztrtVpfYRGQCKTzcubF9NTE2PCgpfuh8W5jbblel6VOUKLO + pQp6TONC23oiO/khssg4VUZO0a1qwOzs6R8am5iemX01N7+wuLgE8RqLQJksLi7Mz72a + nZmeGBvq7+kE0OpbRTkZqrhIGSqoL83zmEl0HtrWh8EOFEjCY5LStYVlVbdbAXNgeHxq + xjq/+Nr2ZnmFilUswpHL8hvb68V568zU+PAAgLberior1KYnxYRLBIFshg807pGJS7Ut + kxMkkkXEqTLz9BV1ho5HgDnxfHZuybayura+vrG5ubmFTUAyG+vra6srtqW52ecTAPqo + w1BXoc/LVMVFyERBHCZsLe5HBKXaFo4I4rDoRDWUs7qpzdTdD5jWBdvK2sbW1lv7O+zC + /nZra2NtxbZgBdD+blNbUzUUVJ0YDSOXy6Ya99AgAj1R2/KEoYrYFE2uvqK+1dhlGRp/ + bl20rW5s2d9t7+w6Yg+LcCazs/3OvrWxalu0Ph8fsnQZW+sr9LmalFhFqJCHGveIoEhP + OiMgKEQWdSktqwDK2W7qGRybml14s7Zp397d3Xv/AcN4v7e7u23fXHuzMDs1NthjaoeC + FmSlXYqShQQFMOhHBQVObzqTA22rTFRnXy+vazGaLcOTM3O21U37zi5AfvwE8RmjQPl8 + /PDh/e6OfXPVNjczOWwxG1vqyq9nqxOV0LiUoIcH0XnYPX3ZXIFEHpOsydFXNrSZngyO + TVsXVzbsO3sAuQ/4BZPYzwdQ93bsGyuL1umxwSemtoZKfY4mOUYuEYCgMIgODVw3d0+a + H+gpVcSpruhKq+90dPYOTczM29a23u1++AhXPcT35xnFoTQgsY8fdt9trdnmZyaGejs7 + 7lSX6q6o4hRSENSP5nl44AKnDxyGRLJI0LPwZq3BaO4bmZpdXF6377w/hHlGhC63dYFF + oO937OvLi7NTI31mo6H2ZiEIGikTwZHI5ygnGrcwhn6KSlBrr5XXtz7oHhibfvV6ZRPK + CU3rcuUvLjc8o6VrNp8/f4KCbq68fjU9NtD9oLW+/JpWnRD1ExpEaOB+u7HAtkJncPiw + eyalXy2quN1m6vlj/MUctO32HnDuX/iMuI697X5OwLm3DY0792L8jx5T2+2KoqvpSbCD + 8jkwcI9yOsZtOBpDNyob2x/+/hTpuf52Zw/a1nnNY+93Zn/pTAoad2/n7ToS9OnvD9sb + K2+gQRTuGLhHOGFbYcG2gsZtrr6q6bdOy9Dky4Vl4AQ9scT88899UBD07frywsvJIUvn + b01VcFKAgQucLDj5He5bxMkNlsBpKCOvuArGrWX4GYyhDfvuAeeZFe7EGztAYRDt2jdg + ED0btsDArSrOy4ATkSSYeyKnAE59qZm6kurme119iBN2TzSGqOudeLcz/AGVGBpEaAcF + zr6ue83VJbrMVDj5CU7g9IWHslBq+yypaTaa+9G24hy36HJnSPOdW6PMnAMXbSz9ZmNz + TQm1gYbCoxkcFI72LXDuHxPQ9gmc1qWvnN+515n+6CvnkpXiNNTuHxS+xwkPn1fyy2oN + 9x8PjP77OEcHHt831Jblw4EoQir8Ac6Wfy9nC+GEoxE8llF+Ovv2f7WeZzpqTrn5/ryF + OYT8/G7fosfs79XzlFud6Y9P4fzmAZRwUo9lmB4SHG30l+oJr03gdYJIGhFP7Z9oDsHj + 59IqepsAx74zbcxTbg4HIvRGYXUJPYDu+xkfIRXBC4XDL07g9RB6bSKSRsajt32/tjo4 + XwPnHnCecqcz/jFw7gEn9aD9+H7rr+iNX3wkxUk79IKIcJJ6nnG3fr096Vs/4ieZt1+F + wGxF/CR+kvMQZlK6pEP8JH4SP12EwGxJ/CR+Ej8xk9IlHeIn8ZP46SIEZkviJ/GT+ImZ + lC7pED+Jn8RPFyEwWxI/iZ/ET8ykdEmH+En8JH66CIHZkvhJ/CR+YialSzrET+In8dNF + CMyWxE/iJ/ETMyld0iF+Ej+Jny5CYLYkfhI/iZ+YSemSDvGT+En8dBECsyXxk/hJ/MRM + Spd0iJ/ET+KnixCYLYmfxE/iJ2ZSuqRD/CR+Ej9dhMBsSfwkfhI/MZPSJR3iJ/GT+Oki + BGZL4ifxk/iJmZQu6RA/iZ/ETxchMFsSP4mfxE/MpHRJh/hJ/CR+ugiB2ZL4SfwkfmIm + pUs6xE/iJ/HTRQjMlsRP4ifxEzMpXdIhfhI/iZ8uQmC2JH4SP4mfmEnpkg7xk/hJ/HQR + ArMl8ZP4SfzETEqXdIifxE/ip4sQmC2Jn//Lfh7zve/Wf9f3vlt/4Hvf3S54+7IDhdKI + uIPvtx+dsi6tbML323/C+4vfv3z+BN9vv7myZJ0aPfh++7gIqTCQ7et9we38OZc4Tzj/ + q+p57r+3ni5dC8tTOL98wWzPPEjny5dT/CSc+WW1LfcfD7jO2//Wehr+vZyG2rL8K6qv + +8rxfauA/VNXWmswmvtHXPbPf0k9R/rNRkNtqQ44Ffv753GcglCKs6Sm+R7inF3cPyeA + 7QfmY7WAxPbn0OLsFHDea64poThDBY5zwhFOOosLnLGpmbqS6uZ7XX3Dz4Bzw07tn+hy + WPE5k0F5UZz2jZXF2WfDfV33mqtLdJmpsYpQAZdFh/PQcZzBEkVsSkZecdWdjk4L4lwG + zvcfP1OXwxDUkdfnj+937RvLiNPS2XGnqjgvIyVWIQk+kZMTLJbHJGty9VVNv3VahiZf + Liyvv9054MQO1IH5BTh33q4vL7ycHLJ0/tZUpc/VJMfIxcGc4+rp4U1nAmc4cObcqGxs + f/j704mZeRtw7n387CwoZqD7mJ8/7gGnbX5m4unvD9sbK2/kAGc4cDLp3h6H+9bDi87g + 8MVh0UnpV4sqbreZev4YfzFnW9va3kMPLM7AydH9nOBxZW97a80292L8jx5T2+2Koqvp + SdFhYj6HQfc6htOHERAU8lNUglp7rby+9UH3wNj0q9fOgXsAii5+9rD7iOj3z87Hstev + 4PGz+0Frffk1rToh6qeQoACGz1FOd08fhj9PJIu8lJZVeBNtoH1oY1letyNBDzoXXRkr + TkgN9LSvwxiaGulD2+fNwqy0S5EyEc+f4ePpfrhv3T1pfmyeUOo4KFTDwO0dQoKubcGT + 9iHQs4RF93YJhAlP2dC2oOdQL4zb6v1jAo/tRzvCed4dvVDgCiRo4OboKxvaTE8Gx6at + aAfd2fvw8RNckAqXe5zpcj+fTx8/7O2g3RPemgw+MbU1VOrRGJJLBFz0OsH9m9cJ586h + FwrUwA1TJqqzr5fXtRjNluHJmTnb6qZ9Z/f9B0CF2L86Dr+jfD5++PB+d8e+uWqbm5kc + tpiNLXXl17PVicowx7g99NqE4oSBC4NIFgWCFpRVN7WbegbHpmYX3qxt2rd3d/cAFb94 + v7e7u23fXHuzMDs1Nthjam+qLisAPaNkaAzRvY7h9PDyYYCgcPJLgZNCRX2rscsyNP7c + umhb3diyv9ve2XXEHhbhTGZn+519a2PVtmh9Pj5k6TK21lfAKQFOQ6FCHpsat4f69pyb + hycNBA2GHTRRrS2EgraZuvuHJ55bF2wraxtbW2/t77AL+9utrY21FduC9fnEcH+3qQ3K + WahVJ8LuGQx60jwPb5/w4gQGEQgaJJLBq83MPH1FnaHjYc8AgM7OLdlWVtfW1zc2Nze3 + sAlIZmN9fW11xbY0NwuYAz0POwx1Ffq8THj4lImC0GnowuFtxSEoNG6gQBIek5QOBa26 + 3WrsBNDxqRnr/OJr25vlFSpWsQhHLstvbK8X560zU+OA2WlsvV0F5UxPigmXwEMZtO0R + PREnalwWhx8ii4xTZeQU3apuvAug/UNjE9Mzs6/m5hcWF5cgXmMRKJPFxYX5uVezM9MT + Y0P9gHm3sfpWUU6GKi5SFsLnsKi2PawncKLGhSORUBKuTFBn6fTltQD6sNsyODw2MTX9 + Yubl7Oys1Wp9hUVAIpDOy5kX01MTY8ODlu6HgFlbrtdlqROU4RIhHIaotj3Cec7N7YIX + zQ8VVKqITb6szS/+pbaxtcPU1WMZHBoZG5+YfDYFMY1JoFyeTU6Mj40MDVp6ukwdrY21 + vxTnay8nxyqkqJx+NGjbQ6c+9MwNjUsVNBBGblR8qia7oLi8psHQdt9kftLbP/B0aHh4 + ZHR0DJsYHR0ZHh56OtDf+8Rsut9maKgpLy7I1qTGR8GwDaTK6fHtf6443iygxvVChqLO + jU5QabLz9beq6ppa242mTnN3T6/F0tc/gFH091ksvT3d5k6Tsb21qa7qlj4/W6NKiEZd + i+z0gml7tG0PCsrm8EVSuRJAtbqisorq+qaWtg7jA9Ojzi6z+TFGYTZ3dT4yPTB2tLU0 + 1VdXlBXptICplEtFfA4b2XlsOREnFBRGERwWQFFlQurlrJxCPZDWNdxpudvW3tFxz3gf + ozDe6+hob7vbcqehDij1hTlZl1MTlCAnHBEA86RywlEBDIXOZfoHAqg8Oj5ZnanNA9Ly + yura+obGpuZmg6GlpaUVg4A0DIbm5qbGhvra6spyoMzTZqqT46PlgBnoz0Rd63HcFHJM + IncPT28fP2YAAg2Pik1UpWdqcwuuF5feLK+srKqqqalF8euZB5VGTU1VVWVl+c3S4usF + udrMdFVibFQ4wgxg+vl4e3ocb6cT9IKnN92PBaCi0DCFMi5Jpc7Iys7VFV4rulFcXFJa + hlGUlhQX3yi6VqjLzc7KUKuS4pSKsFARYLL86N6eJwwhauaedwNFESjTn8sXiaXhkTFx + iSlp6ZorP2uv5uTm6XT5+fkFWAQkotPl5eZc1f58RZOelpIYFxMZLhWL+Fx/phPz2GG7 + v7cgRREom8MThEhk8khl7KXEZFWaOl2jyci8giILg6ASyczQaNLVaarkxEuxyki5TBIi + 4HHYCJOS87g9xYGJZi6AgqO+DDYnkC+8KJGFKaKUMXGXEpKSk1NSVV8j7Yziawaq1JTk + 5KSES3ExyihFmExyUcgPhA3FF9xEM+h7mF9B6QyWP4fHF4aIpbIweUQUwMbExkHEYxIo + l9gYQIyKkIfJpOIQIZ/H8Wcx6D+Eee68s6I0ui9FGhQsChFLgDUsXK5QKCIcEXmm4UwC + 0pGHhwGjRBwiCg6iKH3pNGc1v19O6F80jJCkNLofIuXygoIFItFFsVgiCZViFaESiVh8 + USQSACQX1dIPKEFN99Oa9mAYASiQ+kBNmWz/AE4gj8cPDg4WCIRCoQiTgFQEAkiKz+MF + cgL82UyGL7Ss14UfxoSKOkrqiWoKRWWw2AiWw+UGBgIxLgHJcLkchMhmMaCUqJYwgFAx + T+1Zl7GLmhcmrzfNh073BVgmkwW8eAWLxWQCoi+d7kPzBi8pylMG7T6is3ehpECKUL2A + FcECLoQfNoGyQVn50IARKnnBA9XyLxTTSYy6180dVRXBAq0zaFjEfjbeXggRVfJvQbpU + lYJFlcUzPKCMCPFvVPKbFj4PQV2G+sUdo/iaFcrxm6T/yR/QxfCLf0JE/i35BMgnQD4B + 8gn8P3wC/wGf6cVWCmVuZHN0cmVhbQplbmRvYmoKMTY3IDAgb2JqCjUzNTYKZW5kb2Jq + CjQgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9D + b3VudCA2IC9LaWRzIFsgMyAwIFIgMzUgMCBSIDczIDAgUgo5NyAwIFIgMTI2IDAgUiAx + NDIgMCBSIF0gPj4KZW5kb2JqCjE3MCAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvT3V0 + bGluZXMgMiAwIFIgL1BhZ2VzIDQgMCBSIC9WZXJzaW9uIC8xLjQgPj4KZW5kb2JqCjIg + MCBvYmoKPDwgL0xhc3QgMTcxIDAgUiAvRmlyc3QgMTcyIDAgUiA+PgplbmRvYmoKMTcy + IDAgb2JqCjw8IC9QYXJlbnQgMTczIDAgUiAvVGl0bGUgKENhbnZhcyAxKSAvQ291bnQg + MCAvRGVzdCBbIDMgMCBSIC9YWVogMCA3MzMgMCBdCi9OZXh0IDE3NCAwIFIgPj4KZW5k + b2JqCjE3NCAwIG9iago8PCAvUGFyZW50IDE3NSAwIFIgL1ByZXYgMTc2IDAgUiAvQ291 + bnQgMCAvVGl0bGUgKENhbnZhcyAzKSAvRGVzdCBbIDM1IDAgUgovWFlaIDAgNzMzIDAg + XSAvTmV4dCAxNzcgMCBSID4+CmVuZG9iagoxNzcgMCBvYmoKPDwgL1BhcmVudCAxNzgg + MCBSIC9QcmV2IDE3OSAwIFIgL0NvdW50IDAgL1RpdGxlIChDYW52YXMgNikgL0Rlc3Qg + WyA3MyAwIFIKL1hZWiAwIDczMyAwIF0gL05leHQgMTgwIDAgUiA+PgplbmRvYmoKMTgw + IDAgb2JqCjw8IC9QYXJlbnQgMTgxIDAgUiAvUHJldiAxODIgMCBSIC9Db3VudCAwIC9U + aXRsZSAoQ2FudmFzIDQpIC9EZXN0IFsgOTcgMCBSCi9YWVogMCA3MzMgMCBdIC9OZXh0 + IDE4MyAwIFIgPj4KZW5kb2JqCjE4MyAwIG9iago8PCAvUGFyZW50IDE4NCAwIFIgL1By + ZXYgMTg1IDAgUiAvQ291bnQgMCAvVGl0bGUgKENhbnZhcyA1KSAvRGVzdCBbIDEyNiAw + IFIKL1hZWiAwIDczMyAwIF0gL05leHQgMTg2IDAgUiA+PgplbmRvYmoKMTg2IDAgb2Jq + Cjw8IC9QYXJlbnQgMTg3IDAgUiAvUHJldiAxODggMCBSIC9Db3VudCAwIC9EZXN0IFsg + MTQyIDAgUiAvWFlaIDAgNzMzIDAgXSAvVGl0bGUKKENhbnZhcyAyKSA+PgplbmRvYmoK + MTg4IDAgb2JqCjw8IC9QYXJlbnQgMTg0IDAgUiA+PgplbmRvYmoKMTg3IDAgb2JqCjw8 + ID4+CmVuZG9iagoxODUgMCBvYmoKPDwgL1BhcmVudCAxODEgMCBSID4+CmVuZG9iagox + ODQgMCBvYmoKPDwgPj4KZW5kb2JqCjE4MiAwIG9iago8PCAvUGFyZW50IDE3OCAwIFIg + Pj4KZW5kb2JqCjE4MSAwIG9iago8PCA+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9QYXJl + bnQgMTc1IDAgUiA+PgplbmRvYmoKMTc4IDAgb2JqCjw8ID4+CmVuZG9iagoxNzYgMCBv + YmoKPDwgL1BhcmVudCAxNzMgMCBSID4+CmVuZG9iagoxNzUgMCBvYmoKPDwgPj4KZW5k + b2JqCjE3MyAwIG9iago8PCA+PgplbmRvYmoKMTcxIDAgb2JqCjw8IC9QYXJlbnQgMTg3 + IDAgUiAvUHJldiAxODggMCBSIC9Db3VudCAwIC9EZXN0IFsgMTQyIDAgUiAvWFlaIDAg + NzMzIDAgXSAvVGl0bGUKKENhbnZhcyAyKSA+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9M + ZW5ndGggMTkwIDAgUiAvTGVuZ3RoMSA3OTUyIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+ + CnN0cmVhbQp4Ab1Ze3hTVbZf+7yT9JGkaZtnk/Q0SdP0XSgN7dBQklIerYUiNEoxfUGL + VEuBKszArVoVCjKKoo44o+hcecn00PJJkKuXcWCq8xIdxcf1u+qIjp93Os6dC34zYJu7 + zkmptN+MH3/4zdlZe++11z57r/3ba6+9z87Gnk3tkAh9QEP9Tc3dq0F5Mgox+ai1q7k7 + zus/wnR7a+9GR5xnswHodau713TFeeERALVtzbrNE++n9CG/rKO9uS0uh68xLe3AgjhP + ZmCa1dG18c44rz+Oae6621sn5CkdyBu7mu+c6B8+QN5xW3NXe7x+RgKmWd23b9gY521v + YVrW3dM+UZ80on6vA8FSDdwOKrgVeKBAi6EJgP9cbQMGpbIcn7ZczcO3JFdcAp2g8LfU + /lBJf+n8j/N/a//ao3lI+DsWqK7Wl1POO+4FSCAoH9U8NClR3sNIE4UGXxQWIFUizUTy + +eYaoY88Bw8iPY1EQyfZCZuRdiD9CImZzB1C7iTZOcQIgRfJZjCThQENY19mMNmNao39 + zSjhjv/E/p7xk1PEhLP3MTENJYJqrpo8TZ6CNrCTfwcX2QI1kE2eGPaus0dQdAi6kfqQ + aCUm5NBQRrH9ZZILLobgO27IYMgL9j8W5dk/LYpSZMj+iifKYPLzDOQCyfbTtp/Y/9O2 + xv4y0pG46LAXa7xgP2RbZ384I0qeGLLvsUUJvvNQPNlkw1dfsHd5H7W3FSnyxY9GqSND + dj/Klwc09tIyp32m7YK9wBMVCPJ5tsX2nKLf2rPwRazmwEZdAZ3danvYPhtFGbaQZzbS + KXKY7IMcsm/ItdD+ImZxuMMLvGWPRsn3h2uyi1xRsiVQWpP9qLfG4/Iutru81R4P5pe/ + yvfzN/Nz+WLex2fzbt7JW3iDoBe0QpKQIKgFQeCj5PmhSjt3ihyBSoTlyLDACWyU/AwL + mVPkqFJ49ITACJQAgiEa+wiNl4AhSo4c18o5zLzAKTkuSo4Ox4uOBuyMnGMUgZaS8xhh + DBQRKFgIEnkgysG9ab2Vxkr9HJ2/OvjPoogiuRr7/vljJDbp0UUNjdJhW1gqljMxW/hq + dePVzD9NN25CUXuVz7do6ebh3u61q0PtYigihtqRItLO3g6j1NficBxb2y0LHBLtjrS0 + dshpc7vULbYHpbVi0HGsV3lvmni1LO4Vg8dgdWhZ47HVgfbgUG+gNyQ2B8PDLVU9TVP6 + 2jHZV0/VP+irSm6sR+6rRXlvWl9NsrhF7qtJ7qtJ7qsl0KL0JQ8+1NlQtWEjWqcj1LnI + IWU3SAuW3NQoOZrDwSh5DguDm4A9DVr2Jchm+8DMFIAdIPYe0vtyOn5j7DN2BLTjXbH/ + pctxUk/KRI1XVsBpeAD2wSBwcBDz2bAKHofXyFpc2yvhOJwnGZCPvpeBKCyG35BY7A1Y + DT/F+hvhFdgLxyAB3+mCVJTuJq7YFuQDmG+B/tgzkAVlcB+8BH5sdTeMxg7FhlG6FG6E + w3AE3/81EaljTErsZ7ELIMASbLMfJW/EFscGQQ+5UAX1WNoPLxMX/X6sA4xQjto9CU/B + fvg5/IncTY7HOmK9sXOxj9FUjWCFBgxbyXHyMT3I3Bd7MvZFbByRyIYc7DUCD8Oz2P4g + htPoWkPkVrKRPEz2UgHqbuo4cy+bPj6GOHhhPoYa9MrbEYGTcAb+Cn8nX1JGWktvpM/G + Zsb+D332IhylPJJ26MVwP4bdOKZThCOFZB6pJ1vJI2Qv+T2VQ91INVJ3UHdSn9F19Ep6 + M/17ZgMzxO5iH+c045dip2IjsbchHWxwM/TANhzdK3AOLsJlQmNbVuIi5aSKrMLQR/ZR + J8l+cpKqJ6fJOeow+ZB8Qr4kVyiWSqBSKR+1kXqYOkK9Qv2O7qT30j+iP6QvMXNYit3P + fsq5+P8abxnfMf67WHns49jf0MUK4MSZqYI6uAWacbTdMAP+DUdxFMMgztoZOAuvKeET + YoVR+BuiAERPzKSY1GKoIzeQ1aST/IS8iOFlRZevKJwISkXpqHTKSjVQLVQX1Ue9TfXR + FjqHXkjfRA9ieJU+T1+hrzAsk8KkMvOZBbCL6WKewPAcc5AZYl5n/ewcto5dzvaxO9hd + dCv7Bnue28bt5oa4L7m/oFtczN/O78LZeQ1t9udoy988DMlC7YvhNmglQdICj+Js7CfN + MIDW1Ua2I17dkB1rorfR86lCtIaX4ftorU/AVthBr4T9sXfpw/AOWso6bLIPDjBVYGMf + w9m5GwrRiiZCwJvjzfa4XVliptOBLt9qMZuM6WmphhS9TpuYoFGrBJ5jGZoikBsSqyMO + yR2RGLdYU5Mn82IzFjRfUxDBpeyQqqfWkRzye80omlIzgDVXT6sZiNcMTNYkWkcFVOTl + OkKiQ/ptUHREyU1LGjH/QFAMO6RRJV+r5B9U8omYdzrxBUfI2BF0SCTiCEnVvR0DoUgw + L5ecDCAc6rxc2XEEQCM3LMG85q3oYGGeXCMkmcVgSDKJmEcZ7Qo1t0n1SxpDQYvTGcYy + LFraiH3k5XZKqCfsTGgT23ZGA9ASkXPNKxslujksURG5LZ1PSheDUvqWT43fsFdzoV3X + CCXKVd3cPlAtBSI7EVyZjchc8y7kFjU4sFnq3nCjRO6dUELWcS1qKqsb3xNckbUOSSVW + iR0DayMILixtHDIHzIrzlaC+ccgUMClMXu5J47ZyJ47+ZN7cvLlyWu40bounf7wnXv7m + aTk1bjvzEaaLlk4CQGQExAWop+RoVToRUdkyOWovg4HWMsQJnzDBYXaiPvMkCm2Gdkms + a0Gz1NdwVY2OYFy5yNrgkMpkVjahqjDWjwxoZ+NMYX2t6Bi4hLt1RBz909SS5okSzqW9 + BLJQnuhJW5FI89V8r7xZunDUHUaxQ57fXmVOkReNoWsKkJehkXWWDLiB1zc6JUcYC/A0 + mbsoCqr6xmOE7A5HSezeKARtJ/GMSt+yCsW5sql1BrF/ZPJysSDHibn8XEc19lwt24pj + wDGwoG3AUe3oQGNiXEqKgvaBcAEi2NCIOMEy7DEQtkxm28Ph2dhOgdwOvoLVB8LYwtqJ + FjBVigrGsFJhLm6mtLu+cUmj1Be0SIFgGGcBzfd0faN0Gi03HMZaRZOaosZbO40TOhej + zkU5KC+Jt4Jnlz5sIjwwILfZ0Cg6pdMDA5YBeb3F+SiB6QWBiYIoyFVkyKOkrx7fxUR0 + WpQ5cIpOVCssYzoDTfqqReGZ/dsRLp3UG9+chdqWKgiXfUcI+68H4dnXhXD5pKZTEK5A + nctlhL/3r0N4zhSEK78d4cCk3qjkXNQ2oCBc9R0hPO96EA5eF8KhSU2nIFyNOodkhOf/ + 6xCumYLwgm9HeOGk3qjkItR2oYLw4u8I4drrQbjuuhC+YVLTKQjXo843yAgv+dchvHQK + wg3fjvCySb1RyRtR22UKwsu/I4RXXA/CjdeFcHhS0ykI34Q6h2WEb55EOGCR4Fo/3DfN + 7cJ37phXXgM5npRYPVQxG+BJ/OY6zi6HCH5YlyNfhlRDRqAf037qMOzAcg1Wv3rPk4Bf + H1uQr8TvJvzsvo6HwnP8tz8MsNhq/OEnq8avkeQbo/ijVpIZ8AIJ4LfEbuoyfYb+K1PH + PMLm4IG+CoA5h9+WNN5RVcbvjYQC3NyRBG0U4BySzGOe/iAKDBJgnv8AXsQ3AJb7XsRW + WEwLi0p0Tp0HqYrZHf36D+xLl+dFmdoreAeBNZ7EftLZc9iPA54MzM/W16Q0prQnbkpk + OxM2J1BuIVmbmJqsURlT9YkaxqFdQXJoteNXliyO6JOLtHbSRtMqh7FMZc60FzlMzszf + O1tr8Bah7mLtaJ32q9pRnd5fMHpxzA+Vo6OVY5/p0v0Ei/R+v05fVDhvc8BsymAEm8vK + 2ueCmTfOJRmMZS4xCRjh7RjBL/G77oIm0uQqSRVBX1KMJ36OTyKp4ozSSlI6q3TmDLeY + yXO8SEZHRsYHL759dnRFf8Q/FNxQn5WWven+A4EsdujcOeY1wn88uLa/r+mubT8cXH9D + pmtudcuDPwjdjRjgVQ17J2KtAg88EtDziQtIDRsmjWwn22a4kxXSTuEHpgksxBqoEp0O + d0S/Xr/JQOsz7AZrKu3MSDMwbn2WKwNUKgufoaHcVovgcKXaXWl0UXKnxewV3C6P2pTt + Pe/cu1rBpqJ2rEJG5+LoWxigsqKicgxxqhir8E8AJCPUhED5igpJEynGYXrcolNHO4vl + bx6OzyB2kpaelp4q5pMC4laEIj1/17M931s9bh6hDh7ser2rZfkKlqc1+vyL6gQmgW/z + bxkvH6Gt3Xt+7M8YV1P7i1aN9R8sEXv6zi7zVhucKRXLLz1YZBkbQEwisbeZr9hPoQC/ + wcYDq7zJHtHtLk2a6ZzvbnFvSbojS3WrYExKd1HhpI6kw5m0Oml2ZlammmasxvsMBQU+ + 62wDzcz2qQopdZKgy8q0ZxcW6oyu9AWCK9tcbHfpFoCrwFRU/LRz7Y4Jc7kYN5iLo4iE + Xuf3ywSVlaOVcoEWDSndnz9W0rReMZva7HydHQTKTbnzXJzL7KZzwQd5+UrC5gg+Ykux + +8CSavQRk5HkMT5QeTQ+4tKQfMzzXowy9FYUpmGElubzabVob9oKJavEsunJtoc4lxTL + luZxK1DPnJFVUsykijLqmVyqIT1NmYtUAyM6PO5ZhGTwM1ovd68cWrT4mZFfLNlF9Ff+ + SOadSi66+X3piZvKz/1u75Jd4z/+n/E/79tHU7Xk/a11exxznr6zpNiVlztz5Ylfjn94 + qbdywyMt64odhQWZ5WvOXHxz184/M+i2KMCbBPocUwdmsMCBQMEBE3nceFA4bKQXCrp9 + Bpo2cDYzn2gzaCy8xZKu9egJ7aF0Zpvak26y4vUqP+zs2frN+qyoHfX7ZXyvAVrBdwaY + BFdCqtoNSSlaN9HrkrW8CTkWaCchFENr0hLdkKzHSGXk3IQhnFNerDKCMobx2KcsXUhL + RyuVV2mqAZEsnVWShBw1UwslPHX+k/RBbc+25xcWbt/TfY9pMOMvp968TPRvWZk66Z3W + ew52Pb3/gx13vH2WlHyG1yCzWcSgLPY+Pcq+gn7cBncEimclzU9akXSAOWRhXYKBSrZp + QbDZ+BQ1ZUvXsPkp+VqvTm+2azzoauz3O3uqrh3+2IUL6JlkK9P5df64RzJaVWogxKjB + sVkxAhPlBrVFcOMA8acYhV4eiOJ7uFTAdagr0Ykz5WHBzBn6kq/27N+6/7kt2w+RgYbC + 7x19pvL524fHL3/53+SWz9957de/OPcrataMjEWU7fKcva2NJO/yF2QFeuCa2PuMGW9m + rHiL5yIJgc2PCT8yH7DTbBKVzBpSk/TJqYZAQsAgeM1kkeYFeoT8kh6xvCu8pzpvf1f8 + PP1zUTOiG9FTKwXWmZX8RJoty8/xfJrTZuXVtjSNi3/MesB6wvqOlXGlJaPHNakTeF2S + J9nmYc2erHzeYzK5PW85n2uKAzR2QXHgb43FvTUuSH9B06SdoK+S12QcsmoQGZbGay/C + MpzdrdPqtSlag5bhElyZliw37i02N8mwqdJ5N2hSk9wkMUk0O7GIxUgwol0lajFSlqGy + BJVlmOPLuYusb4L1TU1oQhhSnRlEXomyAaHL5xBtHRqR4v4yOZ5Qx8+Xleq1X3/JPvjY + A8sKDcf4G4qWbp679NXxL4jxD8SuyV549AcHWSIy82+9ccm6hc88e7apdH75Q/n1Vi0R + 8e6PIlXj7k3Vdw8PEPnPJbS1fjwqlE/sw6UBK/8pg8cEjlar0tPNWN/L07hQVIedLXGr + qqg9M1Zxpi7UHvwMkaqorB0tKkxB09Dh7tV/Ah8m58p59qXfXG2bHsX5NuFqXhUoOsGN + cBTDGTiPoZfbyLOGBMpg1NpYHjijRm3mzWZI8KrMVpJv9JrAZLHiHz7D33Q8MV3xtVyB + Fo3uk8jzI++eKSWpcxA6hBB1kbcSecvEXVQnkv4jiw93XKjPPWEr3BbwLizLsxwnB5iC + x1ctfWrFM2NLqGdbKtoS06pmru8cex2VxeHvQGD2MPNBBzcE3B7anTiLns8wSYKWSlLp + VAkeQVZZpxbMKURee2DSp0RJCFXdphgWbn5oWTI+tZVnxs6gDSlHAlnRCTVxW5P9BYfq + 7TiS+tNbWaNNa9Fu33OcKThZuo+iX6apwZ6xx2Vd0CnSXzAFgHMRyK8iZwkFa6CD6qDX + cPcz29kDcJAS8GaZCjEL2fuYHewI8yorLMjekM0LUaIadq6RdcK/MqKx7uNovA4mSu45 + QdNdeopQ+P/OPYEMjuvSY08sx9CEsBTN0YD3jGoBDYAepF4ksoX0D5NBzmSqu2isHfvo + ozGTYgBG3Ncr0yv0Ewcevjbfp627UMvHE9+iJZsDLsqrp2kGvHqOw7UzpXH0sYMsfNOu + 3z/m909rmeW1PvzhGQGXSdP6FBUpQTv+gGQQ39nxdafHNzEFXz9Od1x5AxGiZIPGfyba + 8f78Hz3yqRi9F5RCtXIXvxj/B7gRwlhK8J+B+NmYw/9KYXl1qG5uva+mfV1v+8bO1mal + xtUWZ2AmgFSPFEHqRupDehDpaSQJ6TTSudjEg3mYzBM8h0/ll07jG6bxrdP4tmm8MtZr + 2u+cJr9tGt8zje+V+f8HvcgUDQplbmRzdHJlYW0KZW5kb2JqCjE5MCAwIG9iago0OTU4 + CmVuZG9iagoxOTEgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQg + NzcwIC9DYXBIZWlnaHQgNjg0IC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJv + eCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0ZvbnROYW1lIC9WRkVOQVArSGVsdmV0aWNh + IC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9NYXhXaWR0aCAxNTAwIC9YSGVpZ2h0IDUx + MyAvRm9udEZpbGUyIDE4OSAwIFIgPj4KZW5kb2JqCjE5MiAwIG9iagpbIDU1NiAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA3MjIgNjY3IDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCAwCjAgMCAwIDUwMCA1NTYgNTU2IDAgMCAwIDIyMiAwIDAgMCAwIDU1 + NiAwIDAgMCAzMzMgMCAwIDAgNTAwIF0KZW5kb2JqCjE5IDAgb2JqCjw8IC9UeXBlIC9G + b250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL1ZGRU5BUCtIZWx2ZXRpY2Eg + L0ZvbnREZXNjcmlwdG9yCjE5MSAwIFIgL1dpZHRocyAxOTIgMCBSIC9GaXJzdENoYXIg + NjMgL0xhc3RDaGFyIDExOCAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5k + b2JqCjE5MyAwIG9iago8PCAvTGVuZ3RoIDE5NCAwIFIgL0xlbmd0aDEgMTQyMTYgL0Zp + bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBvXsJdBRV1vB7tXf1kl7Sa5buTnen + s29kawhJJSQkEAIhEEgwkQRIJiBgQAybOAhqIO7OKIh844aKOM40QbHRD39+BhUV5nPB + ERF1HAFhMG4TBQ1d/d9XHSLkmzPHc/4505Vbb6t677777rvbq6xYfmMH0qL1iEb1c9q7 + O5Hyy69HiC6ev6S9O1o2rYL0yPyeFa5omU2B9ts7u3+1JFoWggiJ3l8tXj38fuxWhJzx + XR3tC6Lt6BKkhV1QES3jfEi9XUtWkH7hZzwGtx2Lr58/3B5bCeWZS9pXDY+PTkLZtbR9 + SQek8MuH8VFK9/U3rFCKaMzzkK7oXt4x/DxuAvz+B2GoTUWLkAotRgKikB6uFoT4s6IX + MdBK2gHKMxsfnRtT8j0yCEp3j/uz1pPMa+7//vHCyUt+9c2qifCcSnmeNMA7XKqcipAG + Q/tH6ptHWkgr+aWGUEN6CNUAlALkA6Sl7xakl/C9KLZ1UFJhJ4PUzuP2r17BWUD/M8o9 + iLMkjRap5m8scc7fuLEmtVyFa1ERg5ETVyGvklb2e591hnBpv9cDyfhoQvUXJUAJSaoi + rzNcNM95qSgkYCnOedH7G+cFgB+8Zc7vvbnOd+C5t4uqnUfLob3f+VZaiILkTW+IwVKM + 87D3FucLRanO54vGOfv9UNfv3F0OyV7njqJbnE/cqtQ8nqYkj3lDeFu/81GS7HU+Av0/ + uFFpeCD64oZo0n2rMtD1e5Rk6Z4Q9exe5xJvsnMevIgltbPVu9jZ4g04Z5aHsK/fWUde + 2+uc4j/qrCVD9zul6ECF0d4LvArGedFhM7wvO1OiIySRpyWT0+Wd4kyA/jMefdCZ4b3W + WZ4WwjtfrElJ89b4HywM4UFlDJIAoiRZGk3m+/fjp1E1SsVzkA8/tKcmFXDG9/Y7N0Ky + bU9NSpEvRJ+VjM49/hr/rQCFAD6AxhCeKWXwW/gFfCM/hk/nU/lk3s0n8nF8rGAU9IJO + 0AiiIAicwAiUgITYUOSvUjrholhOTxKOIXdGyespkocb3BGFBQpNRiEO3WbpKbOVGUsN + gYmV/+TWplS2Vab//LP9nE234YTgg7UzmoK7EpqDeSQTSWi+ov3/J9tRAW/XNqze07D6 + /KyqDk9Vm6eqA6AteEdPly24fp7Ltfv8atLgCtLJbfPmd5G0vSO42tNRGTzvqXTtblDe + G9U8izQ3eCp3o1lVM5t2z5I6KvsbpIYqT3tl8576qpqpV421eWSsmqp/MlYV6ayGjFWv + vDdqrKmkuZ6MNZWMNZWMVS/VK2Olp1ctnFGB2APIwB5EmewWlMBUoASEIicAPiKpPCPy + Nfs2EiPhyAANkg0nEfh0CMeiPyIevYhuBmnzLtqFVciDBnAe+hAn4DR0HMnoI/Q35EB3 + oEfhXoXO4h9AypzDKfBMIdqAfoceiXSjblQG11nMIjMqRuciayOHIz+iCtSHDmEem3BC + ZB/KRr1wbUPbsYaaF9mNbGgKWglSfQN6A52I9Ef+Dv0XotPYgLOZcZGPgcFYqAmgzWgX + ehG7sQen4Wsip6HeBji2oF2RukgPvPc1PJWNpqK1MNpn2ImTcTrehj+hByLrI3fD3OKh + rRHNh2sJugVtRdvRc8pT85h41gz9V6JaaLsbHUFn0XcgcFNxBV5FvU//nf6GGcdsixwC + PBphvDb0CKaBKl7ciBfgbvwcfh7/Cf9AFVHtdIB+n+lmHgPcGtEm9Bjaj15H76GP0Xk0 + gH5CYcwATqV4Gl6L/wve+xs1hmql1lF3Uieor+lc+hOGZ+5gb2NfjjCR9yM/Ac6JKA2N + g50+HTWhDrg60VJ0I/o1uhXzaAvajf4E2H6KPsUi1uNsnIur8Ux8Db4Or0b34R34JXwS + n8Jn8DnAzkQ5KQ+VTfXAeBuozdRzVD+1jxqgDfQKeh19gP6E/oExM63MAbg+ZTPZFVw8 + V8tPl38rfxrJjNwb2QbrYoHLC1oqE5ViBqi4BN0KK7kZaLYd7UDPoj+gftQfGcIBdAi9 + A3h9hr5GF2DF4uFy4zxcjOvxdMBwMV6Cf423Aoa78F7A8mX8MvoAf4CH4JKRnVJRmdQ1 + VDu1Gq5taCv1nkIfDe2mU+hMupaeEfmWfo7eTX/H+Jg5zDJmLdPHbGUeYePZ8exsdg7b + zT7A7mXfYv/Cfs0OcglcL7eDe557jxf4fH4rL+MkwMWFfeh59Apw3YN0N5S9aAK+FVZ1 + FjoC3DuAXkVD6Ed0AD2NE5BMk9VMjjyGQpFNsJr70Qv0TagE3Uf9hpocKaN30iqcF7kA + feXAel2+kJSWmuJP9nk9SW6XMzEhPs5ht1kt5liT0aCP0Wk1alEl8BzL0BRGGVWeiW2u + YHJbkEn21NRkkrKnHSrar6hoC7qgauLVzwRd5L12aLrqSQme7Bz1pBR9Uhp5EutdJagk + M8NV5XEFj1Z6XCE8Z3oT5O+q9DS7ggNKvk7J36vktZB3u+EFV5Wtq9IVxG2uquDEnq6+ + qrbKzAy8TwJlIGZmoH0ISUhNOg6iCe3rQLiiCeSJqqDDU1kVtHsgD220r6p9QbB+elNV + ZZzb3ZyZEcQT5nvmBZGnIhiTPvw6eQ+EoK+hCcbOzFgYBPzRHZoFngV3hCQ0r43k2lua + gnR7c5BqI2MY0oNWT2XQuua07efi5VzVnVc0BinfxPaOvolBqe0OIDoptpFS+51Qqp3h + gm6p25qbgvg2QI4goeAenUVUTfjaFrmCKk+Fp6tvURvQHNU39TskR5WnrbI5iBqa+u2S + XSlkZuyz3TzODUTZl1meWU7ScW7bzdH0i43R+ncPkNR286G/QlrbMEIXTMb2TAI0g675 + MAjQAnAtJreOYtQ3vxjIB79mDLNcCPhMCFLASrQvyPomtQfXzxhGo72rchi5RZX9KrtD + 0UsVzfB8W59+LCwgPK/3uPq+R7CynoEvr65pH67hfPrvEWkk6z/CQkHcfjnfQ/SnD1RS + l83TRZavR1lqKHtsVVdUQJnorUwwODNqQ0hV37Qb47ubQzhyWwhVJuwDBUPPvRaa0wnD + LayE4aCQkQEVaW7IAQYTYaCJhDNcfa6+SQv6XBNdXcBSjE9JoaGjrzkbCDajCciCZja5 + g1Jz3Ei2o7l5LPSTRfqBV+DxvmboYdFwD5AqVdlheCg7oxZmlVzfNL0puL4yLihVNgPR + gYkP1DcFDwD/NjfDUzkjmALG6xbahnHOBZxz0qA9L9oLmDXroYvmvj7S54wmjzt4oK8v + ro/sumgZLOTRFdJwRQiRRwiFQ3h9PbwLiccdp5Dc7XEDWs2EpmOAgS8zEJj1/5rCBSN4 + w5uFgG2BQuGifxOFi38JhQO/iMJjRzC9isLjAOexhMIl/zkKj7+KwqX/msJlI3gDkhJg + W6ZQuPzfROGKX0LhCb+IwpUjmF5F4SrAuZJQeOJ/jsLVV1G45l9TeNII3oDkZMB2kkLh + 2n8Thaf8EgrX/SIKTx3B9CoKTwOcpxIK1//nKDz9Kgo3/GsKzxjBG5CcCdjOUCjc+G+i + 8KxfQuHZv4jCTSOYXkXhZsC5iVB4zgiFpbggulIOrx8ldtG/XTBfcwXJ2dfRNioA7vMu + 9BmkPcwN6G4ACaAQ2vIBWgC2s7PQk1wANZLnmc/Rdm4X2gL5LVD/BKRPQNoI9W7+LpQI + 746D/FpIqyEtgzQb0gqAXhhjM5Q3QHoHn4DWk7rhtnV0AtoAbRWAixnq1kHeAWAGmy4a + f4IgEuLAZkbIheYMu/5QGPWjR8oMeEzcSOl/Z3ioEkDJi5Cqoe/oT4t0KAayEGNABmRE + JqU6Ntp41d0M/ogVvEA71DpQHHh4CLzdROQE/NwIPFvwD73Ih5KRX3mPROIgIAfXUvQU + OoFn4RNUF3WCzqHn0acYG1PKHGI1bAN7kJvH3c8vFyzCUuGkqlD1plgp3i0eVDepV2lc + mm7Na1qvdql2UFequ1/3Q8zd4O1tQwh8j4MQmeRRqeRmuQSw6Rk+gUYiyyTQNOVQcXwC + RnZBtcu9uAQCHlMHS+rCJVP1P5TU6cMlqKwkXEIgN2eMwW3wA2xjnghdOsoe/Kk0xDQM + /YFgToFHhSgHux/oqkITpCSKRYhp5lNUotpqdQjdqnhEMzSDu5FdVHe7b4kOVHc6EFiX + fVO2TT/4PYQUKs+gurLwV2WBQG6OyW2gPTTc3Z/hwPQHZvA4Tf4Lu1/uC9dTwUsn5E9h + lXvkJ8FPS4PI3zjJib4SBUa7jE1hxBgYUiXSc7huxNh1Md3uX4/MayAQUAaqQ2UDg4ZA + YCA3x1qKizwwrViO12FPz6zp3HM435tbcE/cgK27A4aVK39bOHYcjHc3xEN5dheMlycl + prIBltLiIypGo1HvQapilyZH06YJahhNTLVO33PIdqz11JEBVFY2eDQ3B7WaCgqLlKuA + 0PHu3sJZhT6TekA+SZ89yGlMAX+53/TTLPosjCMB7dzsbuCUTVI7H4uZOD7+eiPNJNix + xdaJ25h53K8cW/AD1FbHU1iN7Hp7vr0gnom3MxSTGCNKJjbxMbcmMZ6hdfweyw1OTOnm + x9zkfFrvxt3u9e573Y+6g+633d+4ebenOmlqFNdlp+oGgTr6wQGDNYDKwmUDH0MGt+bm + tC5Dyy7jnp/sSeI53g1ldx5jjuW5GKzDvNvsriwb//mrY5s7527IjmPl83zJcuw5g/Vt + Zfcuv25aHLX6knP7Lfc9ftf4ucta1rQXr9m3/MPIu4+tm9E5fUpl5hDhIYwKIyeVeeeg + nr0qF96ahHNCWJBKMqyJPp/6h+s1n2oojSbDJCWyjJSh9fl4/fVufmOq5k7LfOtNaH7q + 0/qcnBzq0Zxgzts53+QwOXnVuT/PbmAwfEY/cGzAGMiGxS8jaWs4MB6Y76ge2AC14mU4 + 1moZk1dYkO9P9pDlKiDT5axktkWleEweuMgw+TziKlMelz/Zj6fG52+euW5Fxd13FM1t + b+qYS8k/MG5PbfG27rcjU3Ly/ZOWRH6Sj6wq4/H+2YGFNyy+JyfuCGVPWz+ja/11i9sb + a8YUfvDC+qai2AkdfwzJ59647jlgMZACiN0Je5YC+aNGJ6XruijsZ1PEYq5IVcN1iavE + Tcwmbhv9ALOV20U/yezkQjgkHsaHxeP0cdGMeY6jkKBSwU3EPEvFiqLPCMVYlvUZoY0X + 0khcVFSDg8/BRmEFtRa2jFpkODaEY/tVNAXJXtGu6bhxuS29Z6p+0FYXDgTgzxCwK/vH + BjS0ltSVlZQYA4FsEA9sb1b6On0tuCDMgbggc6i5N8s2XEFDBX2o2QBPwl+vvqSEB8jN + wa1Ac7caAjBuCKC4MZWNe0LP4hZKlPvnhj/rlF+hXoJ4SyWe/lMpzpbfUSjSEvmAXct+ + rcjSFVLqbPG3/G8F+hqqOa4poZNZiTezz8T2My+KrzGvq09QH8V+bPs07qJNbw1hteRx + CIJDU+6kaWO5Q+W0FFmFImci73DHFCXaXe6H3M/NUuRf3QBIvzpDAJhFYZUSwiuERwjG + RuB8l9VidScDkyRR5ljgGGAPN4fcwBEG3PI/z2MLXvH7ubx8JDF75pM7Dx793eON2U6c + myK/KEfkg3v3Uvcys9/ZO7i5b1Fhm/ztxYsXFgWWfyu/e+Qo7qAdsOrbYf3XwmxVoENm + SHkrjZgX/Lxf02RcZFzL3En3MX3GrfRWZqvxOVpLpZlVaRbKLHBFeocd+8x2mz2EXXvc + DcOTCZPJEDk0cHkK2OAGlAlzF8JELEaznqdSoRK/juNPzMq+69391zzcVlfc86jcH76N + WsscvFT6Qc8Tn30rJ47ZtDSCVsgnjsgDgB/Zs08CrhTk1SibnNS8BGpVhWrhpIbThxB+ + G70EekeAipfgCaSkNMRxa9NzcjHI9ssX88mlQepIOJ/OGXqCCTD75dcjSL5NvkAGgYhl + 5EP2j+xZ0JsedJtUe1j4SPjJ8aObSaVS3AFTra3ZvNX9mv1gwkWVyiQak445dWkxMUam + 3OOkjYJYblV5TEaTUUuD3i3yxCX9Pkbv8PFFcXavL4R/vcf93OorVv0oaIUBg9EayAbJ + oKx+mbL8YT3UQtUw20YX36An4qLIXeA2ePwczxGZYNATBkFWzKz1bJrS2n/64u8efs0q + P0t1HnE2V6/plz96+U+vvoorsR032sOr6B+2lLjlf8jfyd/8bc99P1w6F1qYXvvWETwP + dx4/Ln/+Pv4OyAZ0vqzH1ahAihfTaJqlKLUgsIKPd2gptQ/ZNdoD7obhqSj6G7Q4aO+y + kkB2OKq8L5N7G86lJJwn/zl8gD0Y/jOV91MpdX94qTIO8B6zC8jOolQpBlFUOSvQDp6C + /jk+hOOBrZ6NUgvY6gwqqwuXKboaut6O86kTQ9+xB4eq5QtKX1vghC8F+jKiA9K9KsQL + goo1WAS7KhX5hXSV15BmLOILhBJVsXER6jCsRjcaNqPbDdvQg4ad6CnD6+iCcFEVzwqi + yiLYVAxvdPAO0WoENjBkG8fzZWKZcY1xn2qv8XWjLoaPESkxxmhQCYjV8RRtFHlaZ0CU + TqCFWJBuFEP7KWOMVuePsZsInUCqAYXs+pMnbeESfdT8AHlWVgKLj0FYQWIAQwQtA8UA + cgpYNb+wAIRVrMVM2BYzS/DL8meUfE5+Xz5PyZ/hA1hDjCL6dPrDaUPpzPtpD6dfigNy + rCY8DLRgK9lXFZtytpQtULMpiuJ4zKcZMaZAJIs0puB0SxQxJ1B+1qGBPa+yqzX/a1HB + aiEaDBAlspcBuavvXXdIMTHcWMEMkNuCJ1C12CkfCT8FOM4DLIYY9qdSxjp0DpAAfJ4A + fNSwNgJYsaVS/Ba8haM0aQyjo9NigGZCkclhprU+nT3WHMIJV0gTYhlGxQkIxahMTPYA + PUBtIoZkIMuY6ROrlwBJnEtW41z54vfy6/KfqQ2fYIFpmydPXXSDHD4e/oo9eOpr4JMo + LssAFxEi1E1SmssTZzOzflNyGoYQd1oq5U8QElxJJs6axBVZ42brHRnI70uxp2eEcOJo + zE4dCh+CxQMiERIRwR0OgB0D23ZY6IHULrRYE7EZ7L1ECKuDyreaiTDPxlk4ij9+G7d2 + 5bc05y346OmxOcWL1nQ2CpoM+Tkdp4Glmr9JPii/R73HHJRX2NJuuj3LEZ5YWbxp9sK3 + 0lK3PDy/wxuI8+UmlpZvvuva8CswKyK/TrA60FlZcAr0hLRIiIGTzWS72h5jdVuTOzUd + 2oVJpzPVqfpUc4oj2T/WXOzYZ37TfNL8bsZ503nLj6afLD9mxuiQQZ1kc/qsgi9Jp2Zs + WcfSbcfiy7NjaaY8XZVtezDbYJ0mPJjiyHUWGmajwix7Tq5CnxGlNqioNWL2XlZroBGI + jUfoBawEMCzdQCkQpUbsoGwMpCnIR7CowyqPMwPJnBieMceCzkMFGK/VpdbuXVJ5iyRt + 3n6m6QHswtZzeJIgHxcW11y38u6Jmb+Rn268VX5LPiP/Vd5LTcevd+RdY8taNynFn+jJ + H9/54WuYu3D+tmJf26xpfodnfMqErlfflL/H/BkmBWSfG2TSW0BJHhVLGsyl8RQjqGBL + oxBu6qd8YLM0SSoOPJgDbmKvgAdTNxgOX7bzy4jvAquvXMxbcrX8plzFHpSHhiYw++FE + BYMtgfjroX8jXiR9JzIsq9Jw+slMFVuj2cT0sn2aTdremNv1HzIfsB9p/qI3WMD7jGXt + WmsMC/wAjg0DO5lnweLitYLOpqNUNOmF4wQ1Z+CNVtGqtmlW06uZHraH6zG8RL/EPM++ + wL1Bv8G8xr7GfUh/yPyF/Qt3jj7HnGHPcM4meg7TyM7mZhsW0guZTraT61J3GtQEK7vG + on9B/bLhtPq04YL4vfofBrVapOzEvuNVBiNlN/qMsKWIADQwrEo0sogy6DWgKVRqWmQ5 + DbgECBto8Cb0tI4iglF8BYcQj+G8HECHQ3uNdlPH6Z/tvlOnwlGbr46oRSIVo4kNNhiI + SyuRl4r1V9uwao3+UK8+fV00R5hp2TLUClW6qwAali/DJmuRya3cwAgE8w93/Ckt/Slc + 9cfMzFdxQG6XT/Tn5/fLf5OvZQ9eev78GXo63P9GN4KEvRYnyJ9fehyWDH40Ghf5hClm + 5oJ3HkBj0T3StHFUQeFqvBkzxxNx8j/OpH3h0WlZOK01OdLhzItJzkrOSiMVTJw6Kc6S + MdbJp4nqjDz1WFMdqssaW5BWmuwocdTFZQp1BfZxJf+N7cCDNfgPaNhQiO6kU4bA0dOn + h22E8NEoXQJkO0VplD68m3Q4BoNxoFiKhUX+y37FiBsFG8kQCxIJxFAWVsyIJNhxYFOa + qE/iinKkOf6K6WNbHqafm5Y0vnVOR1qiKA+oqoGAe+64g6Lj4+U3tSI9rq5lxW//78ON + T3ZTRoNZpdFb/Q2Tyhff87UY4yiaMCbPV3ZPy73V1a/KmvzJxSnaNPdYn5RZ8MzDb8zJ + NeNjhI4UWhv5nNnOHgB97UIVkk/lUuuMGmT3Gnm16PKyavOtlCMpwSk6tX613Z201V0/ + ddgWGDw1rBUGwMwsM0RFCTISNykJ3CQz2Xww7zHGqG8FLiShBv3MP775oLchNyCfw/GF + 5XUrfWsSAw89PDbxpl8zc+Q3v5fl/kJX/Wb2QHhwSkrepRX9962Ycu9dtSvvDEXxrY6c + YPJh3UlkZalU9ZBlp4XqjceTzE3GLuMqcbUxZH7ddNgs2CiOSXiX8SY6eItO1Ohf1Hhj + 1Yn6whgnKky0JjhcQqHV7nT1umuG5zNs/4cHFUE5QDQuWIFKqjA1+C2KAUimoXiMYP7z + nNtFFejRGBCUmNYL7pyOewvi48fctWCmCnvEmbfLP8o/XsTGb49i1ibHUS+Pz624Z8rN + qyZtWjxrw4qXcfGPYBEWh87hHcpalAFPd8Ba6GF206SMsxrw6swJlJ5GVq+e58QEr6g2 + 0w6Tk3PSfsbhdBRq7YnOre6aqmEeJQsSHjwFQp14u9FVAf+L2AnIYiXCsADCHUmIoHx5 + WZRVodZsy8Fu+fz47Sv+jzyE8Qcv3txR2rDuxpWrmZbZdZTwk7SlvQkXfIetWLq0/Pl7 + Ds/K33/nlhdgH2aD/z4W1gNcIbDVn5UmTRR6Y7fgh8CvxCqW07OOWnaifpLrdnxbTK9T + pC201WQxWWuEKZYp1kmOFkuLdY7jJP6IOZfwheuCSz8ZT9RvYjfqGXBHH5DGTNPN1V2v + o3W6OM6b5Oatxow4tYWmkuhC69qkxDbNeogOOLyUU/dAot3jBVJc5k7CnK3gz50ayI6S + 42jUpm8Fuzhq3iEIaYD2B8MALt49rP+UVQUSGfRoHMZvL9Hhl/m112w6US2Z1FTYwrWP + m9FUlGjFHvWcOy+9LR/EztOx9IqbFi278Xzn0vb1tXftqEjNi8tpX/AI1oBxEQefp8GP + RhVyBXMt0EkL9kAOmiPp+xJBaLDenGzeyPm03tQQLpNc8a4MW0wO5TQ6ff6cDJMjL/7W + uExVYYY9N++KZY6KIkMAlhokUfho2UCgDGZHLFfc6o1GMIbZ1AiTA08FQhjuJK//8iTH + E9kEjmxBvnFMEbW/b+PSBwOJrrEPqsd3SdhcvUZ+6h35og4XauKylmzLT0rNbtz07tB3 + n1zz9y1PPvz4XbVL507uo5fb02/4r6Ef3rsutOOJPIv/VxXbJ070lGP/pX/gWiXoiuFr + DMRcy+4Hj7ZM8rGUn2rSdemYWKsRabxWXs+LQiHrsJv0fgP4r6+464fZOOrIgPcKthzI + FUWiKtYbMDCJ0iRxijFugOgMPeHJgsxY+eNE/5JlN8qncHzpE3OYayfWjL/l/vB6aktT + 4ZQtd4b72f3hC3Nro/JjMzhWu9i3YEV4iCAmTUFTcAtqgU9hdoNq4HhRsTE4P+bBtOi/ + jJISHFVilWVlZXXRwBFsJuIg4F3yp7BzFGDgsyJ55RCEpDF8fYGYJTB3NfpG6peoiewx + 6jTFxIBf08huZu8R7la9yr4pfMh/CjFdtcDZuGw6m0lhM7kiupibQtdwrXQzt4heyK1i + NjFb6Af4Z+g/Mru4nfxeOsS8BlaEo5abzM9iNzEbhUPsYYEYFB/zJwQ1q1IRO0Sthm/m + eMjCNx0i5aLpt4wMA000xXCUSmRoTuQh0s05tFj0I7VLnaOW1IwaPMped/3nRJ5calVC + wl9BFIE4SETJWQO9dVnpjBLzWdN8CBmhLhCI6dULJLwDC7WsFfYWBHCxWwVeE29wb8A2 + PB+3yxvxnfJOeahHPsvuv3QGb5Pnhhfgd9fKzxBa3QE3EvuikU8yUQiLLDH0/NjOsCNL + UBe17QCZ3BwlbrFT/hwnEGsAw9daiNvOzIEvgQ6W16Ei0GrwaSDcLQA+gIUQwV8EMfnV + kK6BdDOkfZA+BOlDkD4DsA/gC1gtHTzvhq+KaIjbayFenwkRfXL3Ab84odcE0JQCeC3Z + wNVWeIeDr8NUOAbeMKA6FAu5RNCkCRDjT4STALD+sQf6q4dv1IbV5iGItgYGL88GjKmy + krqoTa4wOhHUcJnpYV6HfXyZ7aNZt5koVYhHWknK3nNnIEsvUvLJ2OTOnkyr/Fmsd+Ga + NCswpLkge8at6+pKXcUzmhYzc4onBmYULQpPp/aWpkyZlz8pvJLa3J4xbVpmc7ibkR5p + 9EpFY+rbMjNh/mTftoOsIucZtVImi83Yh4twk7pLzWGjnlN5QWDqGNHKFlpjKIfdQPzr + q3bwIaKJoj4H8M6AEt2HQJriRStb+Mq5+Om+D+ST1rSe+wrjYQ+binKbehcyLbuPhpOo + LbOyZq4t7wj3A4ozfRVEsIAsBRtgO9MBq0XOW+qkFCuNBc0mzSY9bdXaYjq1NOu1xfJq + r05tswlUodXhEAoNdrsjhHv2jKiIqGdkiEaGS4hXuxwtXzYsPhWt6FVcHfCDXMiMqfO3 + 375uXW/vOipL/lL+Aq4vcSyobzuODb/3Rv+OHbt379jR3yk/ixu/+RLPkZ/6kpKAluvk + Gcw24E0tcMVkKdVqEsR4B+V18Q5O9JrUdp2gtWkL9Y4kzhnntPnt/9TGUjSYotHBzIoq + dBCDwyIenHAjUVeK1UV0vMIg9IobbgGrqqOkYeW6BKySw0c2zMrOlM9gQ1b+3I3UIwd/ + M3XVK3WZoYeoAHhoX4OP9m65typ8mP36serUSUDmqAyjhpgWiBZM3odoXL2HitFC2Lla + spt4LacRXVQOJVG0mURadGq/RokbLNjjru+8zOvHog5ZK2zbMtBPx4joBEME1C7BfgRZ + 6mO1KS5N+/txbogf6Cty69czLRjDMQnVXbYxfIGpeGVJygSCEwVr/xF8Z9eO0lEGulma + ptJzyXYtrWLcanWtOEld7a501aR+QAsJSS6NyFjSGYsjI8PIMxkp6oyMGLPoSrDUJfHm + TL7O58jSoIS6mExUl27PzLrCEhyEEIJi2ypxQcVJViz+kvBR/VElsHBt67W4lbjDwycH + PsVhhm15lcOsbORYiBAmg788X5VYcM/M+SkpcmTflCkDHxzB2CR/ztmzl7VOS0uL7Gqc + +e0lOfI9fHTYMsUVyMvLsdvHZ1VVrt/y4ROHi1xjx/pzLdbilOkNax8/+uFOGjYCRubI + 36lVbBfs08l79RkxTk2G4SW8DDG4RbLwqIXDnA2WJoYbZFR+dD+sky2EdXvcbWR5jpWc + CpcMlpD1+QoOxiCaP1AG9gQE9pSzqjFmj4FEuQuLzDwHwQCDeSt27N6dNFuboOt9c3IO + veQtnCO//Vb4wATw4t5n+brcTuoRwu+Rs0wjyA47yMYpUpZocVjSLMWWWXwHzzlA43AW + nVZkwRZ3aEW/w6Z2xONCmz0u/mf1T/alMVAXPqbQnFjhIPKB2uAvAUIQoSBsA3YsObkD + R6PA4MOPWfzL7y+Ezzrl84zLMmHdzO9mZuMvmYrw9a3ZM3qkhdT0oVe2sXmmkow/tL1M + 3ZcAtHOAjJsN3yNz6HfSND83k1vAPcm9AN8/clhPVUPTGmoFvZLhqvEm1MtuYZ9mX2QP + 01/gC1hFuxjGbwQdS7kw9huhC45i4V8MOJoSBYgN4BDW9NMs7BTNXsbOdxB62688ULHr + XyOONHGljVE3mhyigEIdOT+BPJkzHMJBFJJcJtoHwduV8nvyaix9zlQMvcJUXDoJ9DbL + 1Uw90NuEYtGHUrdfnCV2ig+IO8T3RFD8mOPieYM2k3dpx/O52lq+lSdSfCW/WguRjEJt + r2qTeqs6pOZiYzWClnJpNH4jBBc4nnIKgh/Oj0hWK5o1apXA8SrkpDJMTn1MLG8BxtJp + 1RqY4x5oECGVNKb7BXuH2fJMlMN6ICRzynYJ/CgCw0dIIAjqToVPgdJTIpkg2DAEM1mw + KCCQ8OqYYQKQPIlQZV8mAoSeyGmcH7vjgBoU2K7JfrzbmzbFYU9n5G48/qvP4LSob/HN + +5OzsvCGdyhKNBoWa5jll07S3qG35TcfwDQHh/YUESLw5Tn5evmf/eA/U0C/MGAXxMKX + BuT7YnJanwIxynTFbs9FY1ABaPwiiDlUgk6fCF9D18A/GtTCV+NT0TTQ89NRA5oB31vP + QrPhK+lm8l8zwG1GAPLjyPcLlVXTqqc1pNd0LO7pWLFwfntmxfWLF5CnLv9+Dxni7h4G + OA5wFuAiPAD/ZINtAPDlAC4GqAFoAugCWAWwCWArwE6AEMBhgOMAZwEuwuQFABtACkAx + QA1AE0AXwCqATQBbAXYChAAOAxwHOAtwEQgjANgAUiLDP8ALjeQxaLiry+5R5YxR5dxR + 5bxR5TGjyuWjyopKuGL8ylHtVaPK1aPKNaPKU0aV60aVp44q148qN4wqzxhVnjmqPHtU + uX1Ued6o8vxRZWCaq+iv8PQV9PjVqPauUeWFo8rXjSovHlVW/mftiv7J6dGV63/9qHL3 + qPLyUeUbRpVXjCrfOKrcM6oMhywI/T+wEgRRCmVuZHN0cmVhbQplbmRvYmoKMTk0IDAg + b2JqCjk2MzgKZW5kb2JqCjE5NSAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3Ig + L0FzY2VudCA3NzAgL0NhcEhlaWdodCA3MjAgL0Rlc2NlbnQgLTIzMCAvRmxhZ3MgMzIK + L0ZvbnRCQm94IFstMTAxOCAtNDgxIDE0MzYgMTE1OV0gL0ZvbnROYW1lIC9ERU9HT1Ir + SGVsdmV0aWNhLUJvbGQgL0l0YWxpY0FuZ2xlCjAgL1N0ZW1WIDAgL01heFdpZHRoIDE1 + MDAgL1hIZWlnaHQgNjQ0IC9Gb250RmlsZTIgMTkzIDAgUiA+PgplbmRvYmoKMTk2IDAg + b2JqClsgMjc4IDMzMyAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDAgMCAwIDU1NiA1 + NTYgNTU2IDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgNzIyIDAgNzIyIDcyMiA2Njcg + MCA3NzggNzIyIDAgMCAwIDYxMSA4MzMgNzIyIDAgNjY3IDAgNzIyIDY2NyA2MTEgMAow + IDk0NCAwIDAgMCAwIDAgMCAwIDAgMCA1NTYgNjExIDU1NiA2MTEgNTU2IDAgNjExIDYx + MSAyNzggMCA1NTYgMjc4IDg4OSA2MTEKNjExIDYxMSAwIDM4OSA1NTYgMzMzIDYxMSA1 + NTYgMCAwIDU1NiBdCmVuZG9iagoxOCAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlw + ZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9ERU9HT1IrSGVsdmV0aWNhLUJvbGQgL0ZvbnRE + ZXNjcmlwdG9yCjE5NSAwIFIgL1dpZHRocyAxOTYgMCBSIC9GaXJzdENoYXIgMzIgL0xh + c3RDaGFyIDEyMSAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjE5 + NyAwIG9iagooVW50aXRsZWQpCmVuZG9iagoxOTggMCBvYmoKKE1hYyBPUyBYIDEwLjYg + UXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxOTkgMCBvYmoKKFdpbGxpYW0gT3R0ZSkK + ZW5kb2JqCjIwMCAwIG9iagooT21uaUdyYWZmbGUgUHJvZmVzc2lvbmFsKQplbmRvYmoK + MjAxIDAgb2JqCihEOjIwMDkwOTE2MDQwMzEwWjAwJzAwJykKZW5kb2JqCjEgMCBvYmoK + PDwgL1RpdGxlIDE5NyAwIFIgL0F1dGhvciAxOTkgMCBSIC9Qcm9kdWNlciAxOTggMCBS + IC9DcmVhdG9yIDIwMCAwIFIgL0NyZWF0aW9uRGF0ZQoyMDEgMCBSIC9Nb2REYXRlIDIw + MSAwIFIgPj4KZW5kb2JqCnhyZWYKMCAyMDIKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAw + MjQyNTQ4IDAwMDAwIG4gCjAwMDAyMjUwNjEgMDAwMDAgbiAKMDAwMDAwMjI3OCAwMDAw + MCBuIAowMDAwMjI0ODYwIDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAw + MjI1OCAwMDAwMCBuIAowMDAwMDAyMzgyIDAwMDAwIG4gCjAwMDAwMzYyMDYgMDAwMDAg + biAKMDAwMDAwNDE5OCAwMDAwMCBuIAowMDAwMDA0OTI3IDAwMDAwIG4gCjAwMDAwMDI1 + OTIgMDAwMDAgbiAKMDAwMDAwMzE2NCAwMDAwMCBuIAowMDAwMDAzMTg0IDAwMDAwIG4g + CjAwMDAwMDM2NTkgMDAwMDAgbiAKMDAwMDAwMzY3OSAwMDAwMCBuIAowMDAwMDA0MTc4 + IDAwMDAwIG4gCjAwMDAwMjkxMTggMDAwMDAgbiAKMDAwMDI0MjE2OCAwMDAwMCBuIAow + MDAwMjMxNzI0IDAwMDAwIG4gCjAwMDAwMzUzMDkgMDAwMDAgbiAKMDAwMDAwNDk0NyAw + MDAwMCBuIAowMDAwMDEyODkwIDAwMDAwIG4gCjAwMDAwMTk0MzYgMDAwMDAgbiAKMDAw + MDAyNTU2NiAwMDAwMCBuIAowMDAwMDEyOTExIDAwMDAwIG4gCjAwMDAwMTk0MTUgMDAw + MDAgbiAKMDAwMDAyNTU4NyAwMDAwMCBuIAowMDAwMDI4MjY5IDAwMDAwIG4gCjAwMDAw + MjgyOTAgMDAwMDAgbiAKMDAwMDAyOTA5OCAwMDAwMCBuIAowMDAwMDI5MTU1IDAwMDAw + IG4gCjAwMDAwMzUyODggMDAwMDAgbiAKMDAwMDAzNTM0NiAwMDAwMCBuIAowMDAwMDM2 + MTg2IDAwMDAwIG4gCjAwMDAwNDA1OTYgMDAwMDAgbiAKMDAwMDAzNjI0MiAwMDAwMCBu + IAowMDAwMDQwNTc1IDAwMDAwIG4gCjAwMDAwNDA3MDMgMDAwMDAgbiAKMDAwMDA0MTMw + NiAwMDAwMCBuIAowMDAwMDQzMzUyIDAwMDAwIG4gCjAwMDAwNDQ5NzAgMDAwMDAgbiAK + MDAwMDA0NTM1MyAwMDAwMCBuIAowMDAwMDQ2NTEyIDAwMDAwIG4gCjAwMDAwNDY4MDUg + MDAwMDAgbiAKMDAwMDA0NjIwNCAwMDAwMCBuIAowMDAwMDQ2NDkzIDAwMDAwIG4gCjAw + MDAwNDA5OTQgMDAwMDAgbiAKMDAwMDA0MTI4NyAwMDAwMCBuIAowMDAwMDQ1MzczIDAw + MDAwIG4gCjAwMDAwNDYxODQgMDAwMDAgbiAKMDAwMDA0Mzk0NiAwMDAwMCBuIAowMDAw + MDQ0OTUwIDAwMDAwIG4gCjAwMDAwNDMzNzMgMDAwMDAgbiAKMDAwMDA0MzkyNiAwMDAw + MCBuIAowMDAwMDkyNjUxIDAwMDAwIG4gCjAwMDAwOTI2OTYgMDAwMDAgbiAKMDAwMDA4 + OTQwNCAwMDAwMCBuIAowMDAwMDkxMDEyIDAwMDAwIG4gCjAwMDAwNjQ3MDkgMDAwMDAg + biAKMDAwMDA4ODA0MSAwMDAwMCBuIAowMDAwMDQ2ODI0IDAwMDAwIG4gCjAwMDAwNTA1 + ODMgMDAwMDAgbiAKMDAwMDA1MzI5NCAwMDAwMCBuIAowMDAwMDU5NzcyIDAwMDAwIG4g + CjAwMDAwNTA2MDQgMDAwMDAgbiAKMDAwMDA1MzI3MyAwMDAwMCBuIAowMDAwMDU5Nzkz + IDAwMDAwIG4gCjAwMDAwNjQ2ODggMDAwMDAgbiAKMDAwMDA4ODA2MyAwMDAwMCBuIAow + MDAwMDg5MzgzIDAwMDAwIG4gCjAwMDAwOTEwMzMgMDAwMDAgbiAKMDAwMDA5MjYzMCAw + MDAwMCBuIAowMDAwMDk3MTk2IDAwMDAwIG4gCjAwMDAwOTI3NDQgMDAwMDAgbiAKMDAw + MDA5NzE3NSAwMDAwMCBuIAowMDAwMDk3MzAzIDAwMDAwIG4gCjAwMDAwOTg4OTIgMDAw + MDAgbiAKMDAwMDA5OTM0NyAwMDAwMCBuIAowMDAwMDk3ODYyIDAwMDAwIG4gCjAwMDAw + OTgzOTQgMDAwMDAgbiAKMDAwMDA5NzUzMSAwMDAwMCBuIAowMDAwMDk3ODQzIDAwMDAw + IG4gCjAwMDAwOTkzNjcgMDAwMDAgbiAKMDAwMDA5OTY3NSAwMDAwMCBuIAowMDAwMDk4 + NDE0IDAwMDAwIG4gCjAwMDAwOTg4NzIgMDAwMDAgbiAKMDAwMDEwNDc5NSAwMDAwMCBu + IAowMDAwMTA3Mjk2IDAwMDAwIG4gCjAwMDAxMDE2ODYgMDAwMDAgbiAKMDAwMDEwNDc3 + NCAwMDAwMCBuIAowMDAwMTA3MzE3IDAwMDAwIG4gCjAwMDAxMDk4NTUgMDAwMDAgbiAK + MDAwMDEwOTg3NiAwMDAwMCBuIAowMDAwMTEyNDEwIDAwMDAwIG4gCjAwMDAwOTk2OTQg + MDAwMDAgbiAKMDAwMDEwMTY2NSAwMDAwMCBuIAowMDAwMTIwNTU2IDAwMDAwIG4gCjAw + MDAxMTI0MzEgMDAwMDAgbiAKMDAwMDEyMDUzNSAwMDAwMCBuIAowMDAwMTIwNjY0IDAw + MDAwIG4gCjAwMDAxMjE5NjMgMDAwMDAgbiAKMDAwMDEyMzY4NSAwMDAwMCBuIAowMDAw + MTIwOTkwIDAwMDAwIG4gCjAwMDAxMjE5NDIgMDAwMDAgbiAKMDAwMDEyNDQxMyAwMDAw + MCBuIAowMDAwMTI1MDMxIDAwMDAwIG4gCjAwMDAxMjUwNTIgMDAwMDAgbiAKMDAwMDEy + NTk3NSAwMDAwMCBuIAowMDAwMTI1OTk2IDAwMDAwIG4gCjAwMDAxMjY2NzQgMDAwMDAg + biAKMDAwMDEyMzcwNyAwMDAwMCBuIAowMDAwMTI0MzkyIDAwMDAwIG4gCjAwMDAxNzgz + NDIgMDAwMDAgbiAKMDAwMDE0NzAyNyAwMDAwMCBuIAowMDAwMTUyNjE2IDAwMDAwIG4g + CjAwMDAxMjY2OTUgMDAwMDAgbiAKMDAwMDE0NzAwNCAwMDAwMCBuIAowMDAwMTcxODU3 + IDAwMDAwIG4gCjAwMDAxNzgzMjAgMDAwMDAgbiAKMDAwMDE1MjYzOCAwMDAwMCBuIAow + MDAwMTU1NzM5IDAwMDAwIG4gCjAwMDAxNTkwMDMgMDAwMDAgbiAKMDAwMDE3MTgzNCAw + MDAwMCBuIAowMDAwMTU1NzYxIDAwMDAwIG4gCjAwMDAxNTg5ODEgMDAwMDAgbiAKMDAw + MDE4MDQ3OSAwMDAwMCBuIAowMDAwMTc4MzkxIDAwMDAwIG4gCjAwMDAxODA0NTcgMDAw + MDAgbiAKMDAwMDE4MDU4OSAwMDAwMCBuIAowMDAwMTgyMjEwIDAwMDAwIG4gCjAwMDAx + ODUyMjIgMDAwMDAgbiAKMDAwMDE4MDc4MyAwMDAwMCBuIAowMDAwMTgxNjA5IDAwMDAw + IG4gCjAwMDAxODE2MzAgMDAwMDAgbiAKMDAwMDE4MjE4OSAwMDAwMCBuIAowMDAwMTk2 + MTA0IDAwMDAwIG4gCjAwMDAyMDA5MTEgMDAwMDAgbiAKMDAwMDE4NTI0NCAwMDAwMCBu + IAowMDAwMTg4NTYyIDAwMDAwIG4gCjAwMDAxODg1ODQgMDAwMDAgbiAKMDAwMDE5NjA4 + MiAwMDAwMCBuIAowMDAwMjAzODgyIDAwMDAwIG4gCjAwMDAyMDA5MzMgMDAwMDAgbiAK + MDAwMDIwMzg2MCAwMDAwMCBuIAowMDAwMjAzOTkyIDAwMDAwIG4gCjAwMDAyMDUyNDAg + MDAwMDAgbiAKMDAwMDIwNTg2OSAwMDAwMCBuIAowMDAwMjA1ODkwIDAwMDAwIG4gCjAw + MDAyMDY4OTYgMDAwMDAgbiAKMDAwMDIwNjkxNyAwMDAwMCBuIAowMDAwMjA3NTE1IDAw + MDAwIG4gCjAwMDAyMDQ1NzggMDAwMDAgbiAKMDAwMDIwNDg4OSAwMDAwMCBuIAowMDAw + MjA0MjUzIDAwMDAwIG4gCjAwMDAyMDQ1NTggMDAwMDAgbiAKMDAwMDIwNDkwOSAwMDAw + MCBuIAowMDAwMjA1MjIwIDAwMDAwIG4gCjAwMDAyMTUyMzQgMDAwMDAgbiAKMDAwMDIx + NzE4NyAwMDAwMCBuIAowMDAwMjA5Nzg4IDAwMDAwIG4gCjAwMDAyMTIwMjkgMDAwMDAg + biAKMDAwMDIwNzUzNiAwMDAwMCBuIAowMDAwMjA5NzY2IDAwMDAwIG4gCjAwMDAyMTIw + NTEgMDAwMDAgbiAKMDAwMDIxNTIxMiAwMDAwMCBuIAowMDAwMjE5Mjg4IDAwMDAwIG4g + CjAwMDAyMjQ4MzggMDAwMDAgbiAKMDAwMDIxNzIwOSAwMDAwMCBuIAowMDAwMjE5MjY2 + IDAwMDAwIG4gCjAwMDAyMjQ5ODAgMDAwMDAgbiAKMDAwMDIyNjE2MSAwMDAwMCBuIAow + MDAwMjI1MTExIDAwMDAwIG4gCjAwMDAyMjYxMzggMDAwMDAgbiAKMDAwMDIyNTIyMCAw + MDAwMCBuIAowMDAwMjI2MTE1IDAwMDAwIG4gCjAwMDAyMjYwNzYgMDAwMDAgbiAKMDAw + MDIyNTM0NCAwMDAwMCBuIAowMDAwMjI2MDUzIDAwMDAwIG4gCjAwMDAyMjYwMTQgMDAw + MDAgbiAKMDAwMDIyNTQ2OCAwMDAwMCBuIAowMDAwMjI1OTkxIDAwMDAwIG4gCjAwMDAy + MjU5NTIgMDAwMDAgbiAKMDAwMDIyNTU5MiAwMDAwMCBuIAowMDAwMjI1OTI5IDAwMDAw + IG4gCjAwMDAyMjU4OTAgMDAwMDAgbiAKMDAwMDIyNTcxNyAwMDAwMCBuIAowMDAwMjI1 + ODY3IDAwMDAwIG4gCjAwMDAyMjU4MjggMDAwMDAgbiAKMDAwMDIyNjI3MiAwMDAwMCBu + IAowMDAwMjMxMzIyIDAwMDAwIG4gCjAwMDAyMzEzNDQgMDAwMDAgbiAKMDAwMDIzMTU3 + MSAwMDAwMCBuIAowMDAwMjMxOTAxIDAwMDAwIG4gCjAwMDAyNDE2MzIgMDAwMDAgbiAK + MDAwMDI0MTY1NCAwMDAwMCBuIAowMDAwMjQxODg3IDAwMDAwIG4gCjAwMDAyNDIzNTAg + MDAwMDAgbiAKMDAwMDI0MjM3OCAwMDAwMCBuIAowMDAwMjQyNDI5IDAwMDAwIG4gCjAw + MDAyNDI0NjEgMDAwMDAgbiAKMDAwMDI0MjUwNSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9T + aXplIDIwMiAvUm9vdCAxNzAgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDxiNzRhNGMwYzVm + NTRhNDUzZTJkYjIwZWZiNjhhYmE0OT4KPGI3NGE0YzBjNWY1NGE0NTNlMmRiMjBlZmI2 + OGFiYTQ5PiBdID4+CnN0YXJ0eHJlZgoyNDI2NzQKJSVFT0YKMyAwIG9iago8PC9UeXBl + IC9QYWdlIC9Db250ZW50cyA1IDAgUiAvTWVkaWFCb3ggWzAgMCA1NzYgNzMzXSAvUGFy + ZW50IDQgMCBSIC9SZXNvdXJjZXMgNyAwIFIgPj4KZW5kb2JqCjM1IDAgb2JqCjw8L1R5 + cGUgL1BhZ2UgL0NvbnRlbnRzIDM2IDAgUiAvTWVkaWFCb3ggWzAgMCA1NzYgNzMzXSAv + UGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgMzggMCBSID4+CmVuZG9iago3MyAwIG9iago8 + PC9UeXBlIC9QYWdlIC9Db250ZW50cyA3NCAwIFIgL01lZGlhQm94IFswIDAgNTc2IDcz + M10gL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDc2IDAgUiA+PgplbmRvYmoKOTcgMCBv + YmoKPDwvVHlwZSAvUGFnZSAvQ29udGVudHMgOTggMCBSIC9NZWRpYUJveCBbMCAwIDU3 + NiA3MzNdIC9QYXJlbnQgNCAwIFIgL1Jlc291cmNlcyAxMDAgMCBSID4+CmVuZG9iagox + MjYgMCBvYmoKPDwvVHlwZSAvUGFnZSAvQ29udGVudHMgMTI3IDAgUiAvTWVkaWFCb3gg + WzAgMCA1NzYgNzMzXSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgMTI5IDAgUiA+Pgpl + bmRvYmoKMTQyIDAgb2JqCjw8L1R5cGUgL1BhZ2UgL0NvbnRlbnRzIDE0MyAwIFIgL01l + ZGlhQm94IFswIDAgNTc2IDczM10gL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDE0NSAw + IFIgPj4KZW5kb2JqCjEgMCBvYmoKPDwvQXV0aG9yIChXaWxsaWFtIE90dGUpL0NyZWF0 + aW9uRGF0ZSAoRDoyMDA5MDkxMDE4MzcwMFopL0NyZWF0b3IgKE9tbmlHcmFmZmxlIFBy + b2Zlc3Npb25hbCA1LjIpL01vZERhdGUgKEQ6MjAwOTA5MTUyMjE3MDBaKS9Qcm9kdWNl + ciAxOTggMCBSIC9UaXRsZSAoQ29ubmVjdG9ycyk+PgplbmRvYmoKeHJlZgoxIDEKMDAw + MDI0NzUxNiAwMDAwMCBuIAozIDEKMDAwMDI0Njg3NiAwMDAwMCBuIAozNSAxCjAwMDAy + NDY5NzkgMDAwMDAgbiAKNzMgMQowMDAwMjQ3MDg1IDAwMDAwIG4gCjk3IDEKMDAwMDI0 + NzE5MSAwMDAwMCBuIAoxMjYgMQowMDAwMjQ3Mjk4IDAwMDAwIG4gCjE0MiAxCjAwMDAy + NDc0MDcgMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBbPGI3NGE0YzBjNWY1NGE0NTNlMmRi + MjBlZmI2OGFiYTQ5PiA8Yjc0YTRjMGM1ZjU0YTQ1M2UyZGIyMGVmYjY4YWJhNDk+XSAv + SW5mbyAxIDAgUiAvUHJldiAyNDI2NzQgL1Jvb3QgMTcwIDAgUiAvU2l6ZSAyMDI+Pgpz + dGFydHhyZWYKMjQ3Njk1CiUlRU9GCg== + + QuickLookThumbnail + + TU0AKgAAB9CAP+BP8AQWDQeEQmFQuGQ2HQ+IRGJROJwOCRSMQdzxsAN6PRmQSEAAqSAA + WScAAWVSKHRaWRReTEAB6aAABTeXzmFvmeAB+z8AC6hTqFS6iQ9i0kABemUenQt7VGg0 + OnwWjVWFUli0um1isPewAAW2OvVevQetVwLw58gBlq1aAAEDMYgADvx+gB/gkIQVzOcA + AMHAu7AUCAAHB4PgAH4eKWB72KyVizWeC2mmWuGvwANVcLcAOJ7vAAPcKB6UvUBSl9wU + BPTSBQYDKgikNgDHY+w2MW2WB5aEZiu8CiZDJb3Kb/iZelZnl8Xd5Oq5XLWkK9ebTjny + F2d0ADjwb6Bdu0uvzAADemQz+8vj3AAF/GcyQFSaUBT8eKL9udPz/I6j5sQEAAcwKADr + gq/iXupBSJn3B8AG8AD8AoABywuuQEAQAAJQ7Cb8waikGRChh9RMABvm+bcDgABMOBOE + TOmEYQABOHQdQiAAJx3HUeRIlrlR+hcTH1FEUgACxzmwAAInkd6Cn0CLOnbCQVgaIgAH + 2KoURzBEOQ9ISERHEKeLbFJvgADE1AACE2oKVhWIKJAqM6WRHgAFYbDKgoSAZLMII9CQ + LUHJgIylMMxue9x8AAcFHAADNIsYB4HoNJ4AGGdqCh6EjOlEU08C8LUSxPQNIUlSlKxD + RKzuMcNXgADVZMQBwHIoatcTwFYVohMsjTRWQNVpWzt1Yp0iAAbtlAADlmgABtoIpM4A + FfaoADlbCKV9aYN27Z9ouBYyXpiXlfgALN0AABl1pCjbAEfeAAEVeaQ18aV7gA7p2AAJ + N+v0hbfnngQAHOdrAHSfB1yyfMig+CDFgMlZVlQVcCQNG8cIOqJ7AA/zOJ4zhvHHTR8H + yvKDnuelNBiFwS46fp/AAAOZvgBUN2gBrstWg5gZ6ABR6AAA3DQMy5H5Ir/Lyf4Fz8Co + Mtu34KqaAeqTFIIAH9rIAGKaRjYIAZ0oKBAAwmEILL0fyCHecx3RaB8XHWamwiAEYfWY + CzbmSZptAAdx6AKgoBxcfR8s4BwJWEm4BqsgkHyKe5600AQCPqg4An8euZHycYACKIIZ + 47CBymcZSUnseaUn8zgMAivuybIdh5dRncsn/mJunotoUB8IUkKasx1eCABnn+ajAgCw + BqGvjh/HuvIPBVFx0Hts4XBRKWPMCbKCgcfuzm+dVbAgB2yGoZhygAEQYBCwIBRcfp3n + AAB4gODkOARRh7UYkYFr6BIBzckFHAN0aQAAbgrAOAAdA2hroEAczEZY0RyGMAcZwd4/ + QDHZgSBSDJjAPsuA1AkAA6R2ttHMBM24MQbA3L01cd8LwAC1GeaACYIh4gAF6K4brfR+ + IuBsDuBI1h2qdCmE0xbKWOD2Ga6gIwNQkAAFWLJ0rkzWjXF+8YBQG4EjzZO4s0g1B6Ix + AsO11AJATMcGqPMIAAAyhUOQQYaw0BewGBesIDoEz6jtGaMQ9A+GyD3HLAVJZnBdi9gm + C0ERfQPA/CeAAJwIEXDYHGOYAA9gMAdAADIHYPYWnjIMOmUAABsj/h2ml2hGDfjeF03w + KANwoAAF8McwAEQLgmZ0cQeg8zSABHsNVGoG1bAbHg2EBIBoAkhHmPVjgzB4mRCCFAKc + nT9mlLCLIZZcQEgqZyAd/4AB8v6TYBVKTWWYjrHEOouw93AA0AmbQCThwACsFo6UBgEg + Tnom4zJmh7mOHxVsAUA0CWZtknIAAeo9IbuEHoXYAheQKAOSKDMFz7B2DmfQOkZMfAQg + UL6AIAJqx9D8NaBNShCB4j0oWO8e5bR8zwA+DUHKGUNojUXAodzYR6j7Y4AqfI3B3Q7A + IAEw4KgKpcHEN8cRx6ZMdP+OodbbR4DyUY1kgj/2yDiHJOgeY9nGj8ZiBAB6fgIANcWB + 8DiFQD1pXUuygZCHgzoHCNp7YFgKATAAPQqQ8xyOcAaAwwjS2cgXBEp1Wqtq0wiIMuIl + g8rGAAHNY8AAH7JItASi4l6uJfK7V4SBB5rVTHOTaX05MnjlsCdQOS1AAAQWrspZYjNm + FdWbIlZ1HKg2zqGUOZaxRT6UULHHb+yNkz6EKM4AAdTqEkJSGqjNPAPm7EPeyqZCiXwJ + H8t2V4et2TQjiqSTQ1B8TCAAGcL4go5KkgASilNKqVyChajeQW6JH0d12vmiS65wGNgA + VeOEAAHb/VrT9PFOIAE5p1TunlPYAE+k+KAqa0KBzsKIaumFlBYb9gAW6fUBo0EigAU4 + p5UAK1RYMLytOwqSFCYUsThPFRCKaqOfksFYZnVcgpxsjlnBasWkJvukKmtsBm5BAAMj + IgAAgZHAAEPJWGFvY7YBizJxDBp5TAAI3K1TDOWSMWIXLmUUgWkOJkQZC+TvEqcBl6pY + Mc1YztHNM4BabbT6bJmgg9pgAZqLrm08hzTh50IQcY3i/znnCM0Qgzg7RwvoTSYsCdiN + DTeLaXaABTtAHSKfj0kWhCFKaFCGgPZKQog8YIO0DAAATV9SyNorYBgcAvAAwOu43B5A + ABQDNXgPQcz3InpW95TtMEh00Qkzl2S8wJUYPEfmcx8EEARQ0goD7wj9M4PihaPbwkZ1 + 5oI5ewc/Z/Ojr0o+vyQbc26Qa7LmQX7p20cQXu7bgmL3K9m/IMt6brOAtMbO+SRklzRc + PQNh97bl4ETogIAADwEAAAMAAAABACcAAAEBAAMAAAABAC8AAAECAAMAAAAEAAAIigED + AAMAAAABAAUAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAQAAAEWAAMAAAABAC8AAAEXAAQAAAABAAAHyAEcAAMAAAABAAEAAAE9AAMAAAAB + AAIAAAFSAAMAAAABAAEAAAFTAAMAAAAEAAAIkodzAAcAACmYAAAImgAAAAAACAAIAAgA + CAABAAEAAQABAAApmGFwcGwCAAAAbW50clJHQiBYWVogB9kACAAcABUAGQAfYWNzcEFQ + UEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARclhZWgAAAVAAAAAU + Z1hZWgAAAWQAAAAUYlhZWgAAAXgAAAAUd3RwdAAAAYwAAAAUY2hhZAAAAaAAAAAsclRS + QwAAAcwAAAgMZ1RSQwAACdgAAAgMYlRSQwAAEeQAAAgMYWFyZwAAGfAAAAAgYWFnZwAA + GhAAAAAgYWFiZwAAGjAAAAAgdmNndAAAGlAAAAYSbmRpbgAAIGQAAAY+ZGVzYwAAJqQA + AABkZHNjbQAAJwgAAAJCbW1vZAAAKUwAAAAoY3BydAAAKXQAAAAkWFlaIAAAAAAAAF7h + AAA1SQAABORYWVogAAAAAAAAb4MAALGJAAAem1hZWiAAAAAAAAAocQAAGS4AAK+uWFla + IAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov// + /aMAAAPcAADAbGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAA + RQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADB + AMYAywDQANUA2gDgAOUA6gDwAPUA+wEBAQcBDAESARgBHgElASsBMQE4AT4BRQFLAVIB + WQFgAWYBbQF1AXwBgwGKAZIBmQGhAagBsAG4AcAByAHQAdgB4AHpAfEB+gICAgsCFAIc + AiUCLgI3AkACSgJTAlwCZgJwAnkCgwKNApcCoQKrArUCvwLKAtQC3wLqAvQC/wMKAxUD + IAMrAzcDQgNNA1kDZQNwA3wDiAOUA6ADrAO5A8UD0gPeA+sD+AQEBBEEHgQsBDkERgRU + BGEEbwR8BIoEmASmBLQEwgTRBN8E7gT8BQsFGgUoBTcFRwVWBWUFdAWEBZMFowWzBcMF + 0wXjBfMGAwYUBiQGNQZFBlYGZwZ4BokGmgarBr0GzgbgBvIHAwcVBycHOQdMB14HcAeD + B5YHqAe7B84H4Qf0CAgIGwgvCEIIVghqCH4IkgimCLoIzgjjCPcJDAkhCTYJSwlgCXUJ + igmgCbUJywngCfYKDAoiCjkKTwplCnwKkgqpCsAK1wruCwULHQs0C0sLYwt7C5MLqwvD + C9sL8wwMDCQMPQxWDG4MhwyhDLoM0wztDQYNIA06DVQNbg2IDaINvA3XDfEODA4nDkIO + XQ54DpMOrw7KDuYPAg8eDzoPVg9yD44Pqw/ID+QQARAeEDsQWBB2EJMQsRDOEOwRChEo + EUYRZBGDEaERwBHfEf4SHRI8ElsSehKaErkS2RL5ExkTORNZE3oTmhO7E9sT/BQdFD4U + XxSBFKIUxBTlFQcVKRVLFW0VkBWyFdUV9xYaFj0WYBaDFqcWyhbuFxIXNRdZF30XohfG + F+oYDxg0GFkYfRijGMgY7RkTGTgZXhmEGaoZ0Bn2Gh0aQxpqGpAatxreGwYbLRtUG3wb + oxvLG/McGxxDHGwclBy9HOYdDh03HWAdih2zHd0eBh4wHloehB6uHtgfAx8tH1gfgx+u + H9kgBCAwIFsghyCzIN4hCiE3IWMhjyG8IekiFSJCInAinSLKIvgjJSNTI4EjryPdJAwk + OiRpJJckxiT1JSQlVCWDJbMl4iYSJkImciajJtMnAyc0J2UnlifHJ/goKihbKI0ovijw + KSIpVSmHKbkp7CofKlIqhSq4KusrHitSK4YruivuLCIsViyKLL8s9C0pLV4tky3ILf0u + My5pLp4u1C8LL0Evdy+uL+QwGzBSMIkwwTD4MTAxZzGfMdcyDzJIMoAyuDLxMyozYzOc + M9U0DzRINII0vDT2NTA1ajWlNd82GjZVNpA2yzcGN0I3fje5N/U4MThtOKo45jkjOWA5 + nTnaOhc6VDqSOs87DTtLO4k7xzwGPEQ8gzzCPQE9QD1/Pb89/j4+Pn4+vj7+Pz8/fz/A + QABAQUCCQMRBBUFHQYhBykIMQk5CkULTQxZDWEObQ95EIURlRKhE7EUwRXRFuEX8RkBG + hUbKRw5HU0eZR95II0hpSK9I9Uk7SYFJx0oOSlVKm0riSypLcUu4TABMSEyQTNhNIE1o + TbFN+k5CToxO1U8eT2dPsU/7UEVQj1DZUSRRblG5UgRST1KaUuVTMVN8U8hUFFRgVK1U + +VVGVZJV31YsVnpWx1cUV2JXsFf+WExYmljpWThZhlnVWiRadFrDWxNbY1uyXANcU1yj + XPRdRF2VXeZeN16JXtpfLF9+X9BgImB0YMdhGWFsYb9iEmJlYrljDGNgY7RkCGRcZLFl + BWVaZa9mBGZZZq9nBGdaZ7BoBmhcaLJpCWlfabZqDWpkarxrE2tra8NsG2xzbMttI218 + bdVuLm6HbuBvOm+Tb+1wR3ChcPtxVnGwcgtyZnLBcxxzeHPTdC90i3TndUN1oHX8dll2 + tncTd3B3zngreIl453lFeaN6Anpger97Hnt9e9x8PHybfPt9W327fht+fH7cfz1/nn// + gGCAwoEjgYWB54JJgquDDoNwg9OENoSZhPyFYIXDhieGi4bvh1SHuIgdiIGI5olMibGK + Fop8iuKLSIuujBSMe4zijUiNr44Xjn6O5Y9Nj7WQHZCFkO6RVpG/kiiSkZL6k2STzZQ3 + lKGVC5V1leCWSpa1lyCXi5f3mGKYzpk6maaaEpp+muubV5vEnDGcn50MnXmd555VnsOf + MZ+goA+gfaDsoVuhy6I6oqqjGqOKo/qkaqTbpUylvKYupp+nEKeCp/SoZajYqUqpvKov + qqKrFauIq/usb6zjrVaty64/rrOvKK+dsBGwh7D8sXGx57JdstOzSbO/tDa0rbUktZu2 + EraJtwG3ebfxuGm44blaudK6S7rEuz67t7wwvKq9JL2evhm+k78Ov4nABMB/wPrBdsHx + wm3C6cNmw+LEX8TcxVnF1sZTxtHHTsfMyErIyclHycbKRcrEy0PLwsxCzMHNQc3BzkLO + ws9Dz8PQRNDG0UfRyNJK0szTTtPQ1FPU1tVY1dvWXtbi12XX6dht2PHZddn62n/bA9uI + 3A7ck90Z3Z7eJN6q3zHft+A+4MXhTOHT4lri4uNq4/LkeuUC5YvmE+ac5yXnr+g46MLp + TOnW6mDq6ut16//siu0W7aHuLO6470Tv0PBc8OnxdfIC8o/zHPOq9Df0xfVT9eH2b/b+ + 94z4G/iq+Tn5yfpZ+uj7ePwI/Jn9Kf26/kv+3P9uY3VydgAAAAAAAAQAAAAABQAKAA8A + FAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQ + AJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDaAOAA5QDqAPAA9QD7AQEBBwEMARIB + GAEeASUBKwExATgBPgFFAUsBUgFZAWABZgFtAXUBfAGDAYoBkgGZAaEBqAGwAbgBwAHI + AdAB2AHgAekB8QH6AgICCwIUAhwCJQIuAjcCQAJKAlMCXAJmAnACeQKDAo0ClwKhAqsC + tQK/AsoC1ALfAuoC9AL/AwoDFQMgAysDNwNCA00DWQNlA3ADfAOIA5QDoAOsA7kDxQPS + A94D6wP4BAQEEQQeBCwEOQRGBFQEYQRvBHwEigSYBKYEtATCBNEE3wTuBPwFCwUaBSgF + NwVHBVYFZQV0BYQFkwWjBbMFwwXTBeMF8wYDBhQGJAY1BkUGVgZnBngGiQaaBqsGvQbO + BuAG8gcDBxUHJwc5B0wHXgdwB4MHlgeoB7sHzgfhB/QICAgbCC8IQghWCGoIfgiSCKYI + ugjOCOMI9wkMCSEJNglLCWAJdQmKCaAJtQnLCeAJ9goMCiIKOQpPCmUKfAqSCqkKwArX + Cu4LBQsdCzQLSwtjC3sLkwurC8ML2wvzDAwMJAw9DFYMbgyHDKEMugzTDO0NBg0gDToN + VA1uDYgNog28DdcN8Q4MDicOQg5dDngOkw6vDsoO5g8CDx4POg9WD3IPjg+rD8gP5BAB + EB4QOxBYEHYQkxCxEM4Q7BEKESgRRhFkEYMRoRHAEd8R/hIdEjwSWxJ6EpoSuRLZEvkT + GRM5E1kTehOaE7sT2xP8FB0UPhRfFIEUohTEFOUVBxUpFUsVbRWQFbIV1RX3FhoWPRZg + FoMWpxbKFu4XEhc1F1kXfReiF8YX6hgPGDQYWRh9GKMYyBjtGRMZOBleGYQZqhnQGfYa + HRpDGmoakBq3Gt4bBhstG1QbfBujG8sb8xwbHEMcbByUHL0c5h0OHTcdYB2KHbMd3R4G + HjAeWh6EHq4e2B8DHy0fWB+DH64f2SAEIDAgWyCHILMg3iEKITchYyGPIbwh6SIVIkIi + cCKdIsoi+CMlI1MjgSOvI90kDCQ6JGkklyTGJPUlJCVUJYMlsyXiJhImQiZyJqMm0ycD + JzQnZSeWJ8cn+CgqKFsojSi+KPApIilVKYcpuSnsKh8qUiqFKrgq6yseK1Irhiu6K+4s + IixWLIosvyz0LSktXi2TLcgt/S4zLmkuni7ULwsvQS93L64v5DAbMFIwiTDBMPgxMDFn + MZ8x1zIPMkgygDK4MvEzKjNjM5wz1TQPNEg0gjS8NPY1MDVqNaU13zYaNlU2kDbLNwY3 + Qjd+N7k39TgxOG04qjjmOSM5YDmdOdo6FzpUOpI6zzsNO0s7iTvHPAY8RDyDPMI9AT1A + PX89vz3+Pj4+fj6+Pv4/Pz9/P8BAAEBBQIJAxEEFQUdBiEHKQgxCTkKRQtNDFkNYQ5tD + 3kQhRGVEqETsRTBFdEW4RfxGQEaFRspHDkdTR5lH3kgjSGlIr0j1STtJgUnHSg5KVUqb + SuJLKktxS7hMAExITJBM2E0gTWhNsU36TkJOjE7VTx5PZ0+xT/tQRVCPUNlRJFFuUblS + BFJPUppS5VMxU3xTyFQUVGBUrVT5VUZVklXfVixWelbHVxRXYlewV/5YTFiaWOlZOFmG + WdVaJFp0WsNbE1tjW7JcA1xTXKNc9F1EXZVd5l43Xole2l8sX35f0GAiYHRgx2EZYWxh + v2ISYmViuWMMY2BjtGQIZFxksWUFZVplr2YEZllmr2cEZ1pnsGgGaFxosmkJaV9ptmoN + amRqvGsTa2trw2wbbHNsy20jbXxt1W4ubodu4G86b5Nv7XBHcKFw+3FWcbByC3JmcsFz + HHN4c9N0L3SLdOd1Q3Wgdfx2WXa2dxN3cHfOeCt4iXjneUV5o3oCemB6v3see3173Hw8 + fJt8+31bfbt+G358ftx/PX+ef/+AYIDCgSOBhYHngkmCq4MOg3CD04Q2hJmE/IVghcOG + J4aLhu+HVIe4iB2IgYjmiUyJsYoWinyK4otIi66MFIx7jOKNSI2vjheOfo7lj02PtZAd + kIWQ7pFWkb+SKJKRkvqTZJPNlDeUoZULlXWV4JZKlrWXIJeLl/eYYpjOmTqZppoSmn6a + 65tXm8ScMZyfnQydeZ3nnlWew58xn6CgD6B9oOyhW6HLojqiqqMao4qj+qRqpNulTKW8 + pi6mn6cQp4Kn9KhlqNipSqm8qi+qoqsVq4ir+6xvrOOtVq3Lrj+us68or52wEbCHsPyx + cbHnsl2y07NJs7+0NrSttSS1m7YStom3Abd5t/G4abjhuVq50rpLusS7Pru3vDC8qr0k + vZ6+Gb6Tvw6/icAEwH/A+sF2wfHCbcLpw2bD4sRfxNzFWcXWxlPG0cdOx8zISsjJyUfJ + xspFysTLQ8vCzELMwc1BzcHOQs7Cz0PPw9BE0MbRR9HI0krSzNNO09DUU9TW1VjV29Ze + 1uLXZdfp2G3Y8dl12fraf9sD24jcDtyT3Rndnt4k3qrfMd+34D7gxeFM4dPiWuLi42rj + 8uR65QLli+YT5pznJeev6DjowulM6dbqYOrq63Xr/+yK7Rbtoe4s7rjvRO/Q8Fzw6fF1 + 8gLyj/Mc86r0N/TF9VP14fZv9v73jPgb+Kr5OfnJ+ln66Pt4/Aj8mf0p/br+S/7c/25j + dXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBe + AGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANoA + 4ADlAOoA8AD1APsBAQEHAQwBEgEYAR4BJQErATEBOAE+AUUBSwFSAVkBYAFmAW0BdQF8 + AYMBigGSAZkBoQGoAbABuAHAAcgB0AHYAeAB6QHxAfoCAgILAhQCHAIlAi4CNwJAAkoC + UwJcAmYCcAJ5AoMCjQKXAqECqwK1Ar8CygLUAt8C6gL0Av8DCgMVAyADKwM3A0IDTQNZ + A2UDcAN8A4gDlAOgA6wDuQPFA9ID3gPrA/gEBAQRBB4ELAQ5BEYEVARhBG8EfASKBJgE + pgS0BMIE0QTfBO4E/AULBRoFKAU3BUcFVgVlBXQFhAWTBaMFswXDBdMF4wXzBgMGFAYk + BjUGRQZWBmcGeAaJBpoGqwa9Bs4G4AbyBwMHFQcnBzkHTAdeB3AHgweWB6gHuwfOB+EH + 9AgICBsILwhCCFYIagh+CJIIpgi6CM4I4wj3CQwJIQk2CUsJYAl1CYoJoAm1CcsJ4An2 + CgwKIgo5Ck8KZQp8CpIKqQrACtcK7gsFCx0LNAtLC2MLewuTC6sLwwvbC/MMDAwkDD0M + VgxuDIcMoQy6DNMM7Q0GDSANOg1UDW4NiA2iDbwN1w3xDgwOJw5CDl0OeA6TDq8Oyg7m + DwIPHg86D1YPcg+OD6sPyA/kEAEQHhA7EFgQdhCTELEQzhDsEQoRKBFGEWQRgxGhEcAR + 3xH+Eh0SPBJbEnoSmhK5EtkS+RMZEzkTWRN6E5oTuxPbE/wUHRQ+FF8UgRSiFMQU5RUH + FSkVSxVtFZAVshXVFfcWGhY9FmAWgxanFsoW7hcSFzUXWRd9F6IXxhfqGA8YNBhZGH0Y + oxjIGO0ZExk4GV4ZhBmqGdAZ9hodGkMaahqQGrca3hsGGy0bVBt8G6MbyxvzHBscQxxs + HJQcvRzmHQ4dNx1gHYodsx3dHgYeMB5aHoQerh7YHwMfLR9YH4Mfrh/ZIAQgMCBbIIcg + syDeIQohNyFjIY8hvCHpIhUiQiJwIp0iyiL4IyUjUyOBI68j3SQMJDokaSSXJMYk9SUk + JVQlgyWzJeImEiZCJnImoybTJwMnNCdlJ5Ynxyf4KCooWyiNKL4o8CkiKVUphym5Kewq + HypSKoUquCrrKx4rUiuGK7or7iwiLFYsiiy/LPQtKS1eLZMtyC39LjMuaS6eLtQvCy9B + L3cvri/kMBswUjCJMMEw+DEwMWcxnzHXMg8ySDKAMrgy8TMqM2MznDPVNA80SDSCNLw0 + 9jUwNWo1pTXfNho2VTaQNss3BjdCN343uTf1ODE4bTiqOOY5IzlgOZ052joXOlQ6kjrP + Ow07SzuJO8c8BjxEPIM8wj0BPUA9fz2/Pf4+Pj5+Pr4+/j8/P38/wEAAQEFAgkDEQQVB + R0GIQcpCDEJOQpFC00MWQ1hDm0PeRCFEZUSoROxFMEV0RbhF/EZARoVGykcOR1NHmUfe + SCNIaUivSPVJO0mBScdKDkpVSptK4ksqS3FLuEwATEhMkEzYTSBNaE2xTfpOQk6MTtVP + Hk9nT7FP+1BFUI9Q2VEkUW5RuVIEUk9SmlLlUzFTfFPIVBRUYFStVPlVRlWSVd9WLFZ6 + VsdXFFdiV7BX/lhMWJpY6Vk4WYZZ1VokWnRaw1sTW2NbslwDXFNco1z0XURdlV3mXjde + iV7aXyxffl/QYCJgdGDHYRlhbGG/YhJiZWK5YwxjYGO0ZAhkXGSxZQVlWmWvZgRmWWav + ZwRnWmewaAZoXGiyaQlpX2m2ag1qZGq8axNra2vDbBtsc2zLbSNtfG3Vbi5uh27gbzpv + k2/tcEdwoXD7cVZxsHILcmZywXMcc3hz03QvdIt053VDdaB1/HZZdrZ3E3dwd854K3iJ + eOd5RXmjegJ6YHq/ex57fXvcfDx8m3z7fVt9u34bfnx+3H89f55//4BggMKBI4GFgeeC + SYKrgw6DcIPThDaEmYT8hWCFw4YnhouG74dUh7iIHYiBiOaJTImxihaKfIrii0iLrowU + jHuM4o1Ija+OF45+juWPTY+1kB2QhZDukVaRv5IokpGS+pNkk82UN5ShlQuVdZXglkqW + tZcgl4uX95himM6ZOpmmmhKafprrm1ebxJwxnJ+dDJ15neeeVZ7DnzGfoKAPoH2g7KFb + ocuiOqKqoxqjiqP6pGqk26VMpbymLqafpxCngqf0qGWo2KlKqbyqL6qiqxWriKv7rG+s + 461WrcuuP66zryivnbARsIew/LFxseeyXbLTs0mzv7Q2tK21JLWbthK2ibcBt3m38bhp + uOG5WrnSuku6xLs+u7e8MLyqvSS9nr4ZvpO/Dr+JwATAf8D6wXbB8cJtwunDZsPixF/E + 3MVZxdbGU8bRx07HzMhKyMnJR8nGykXKxMtDy8LMQszBzUHNwc5CzsLPQ8/D0ETQxtFH + 0cjSStLM007T0NRT1NbVWNXb1l7W4tdl1+nYbdjx2XXZ+tp/2wPbiNwO3JPdGd2e3iTe + qt8x37fgPuDF4Uzh0+Ja4uLjauPy5HrlAuWL5hPmnOcl56/oOOjC6Uzp1upg6urrdev/ + 7IrtFu2h7izuuO9E79DwXPDp8XXyAvKP8xzzqvQ39MX1U/Xh9m/2/veM+Bv4qvk5+cn6 + Wfro+3j8CPyZ/Sn9uv5L/tz/bnBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAsD + cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACwNwYXJhAAAAAAADAAAAAmZmAADy + pwAADVkAABPQAAALA3ZjZ3QAAAAAAAAAAAADAQAAAgAAAAIACAAUACUAPABaAH4AqQDb + ARwBcwHVAkcCyQNiBBAEywWfBosHlQi0CegLLwyADeQPWhDLEjYTpxUPFm0Xuhj5Gi8b + TxxfHV4eUx9IIDwhLiIgIxUkCyUHJgAm+SfyKO4p5irlK+Es2C3TLtAvyzDFMb8ytzOw + NKs1pjagN5k4lDmNOn87ZTw/PRk98j7JP6NAgUFgQjtDHEP8RN5Fv0ahR4ZIbUlUSjtL + IkwITPJN3E7FT65QmFGEUnJTZFRYVVJWS1dEWDxZNFotWydcIF0aXhdfFWASYRBiEmMU + ZBdlG2YiZypoNmlAakxrWWxZbUpuNm8jcBJw/3Hsctlzx3S0dZ92jnd5eGR5UXo7eyZ8 + Dnz4feF+yn+0gJyBhIJ4g5WEv4XnhxKIP4ltip2Ly4z8jjKPZZCfkdaTDZRGlYKWv5f7 + mTmaeZu6nPeeMp9XoGyhhKKeo7OkzKXkpvuoFKkvqkyraayEraKuwa/jsQOyJ7NKtGy1 + j7azt9W47bn/uxK8I703vkq/W8BrwXzCisOUxKLFq8awx7XIt8m3yrbLtMyyza3Oo8+W + 0IbRc9Je00jUMdUW1fvW4NfB2KLZg9pj20TcJN0E3ejeyt+w4JXhfOJl403kMOUS5fLm + 1Oe36KDpkuqM65XsrO3a7x7wgfIN88b1v/f7+qL9yv//AAAAAgAJABUAJwBAAGAAhgC0 + AOoBKQFzAcUCIwKUAxADpARKBQcF3gbRB9YI/Qo4C5ANAQ56D/oRhxMQFIUV+RdYGJkZ + 0xr0HAcdCh36Huof3SDMIbsirSOgJJglkiaHJ30ocilnKmArWSxNLUUuPy80MCcxHzIR + MwMz+DTtNeE21DfHOLo5pjqFO1c8Kzz9Pc8+oz96QFJBKEIDQt5DukSXRXRGVkc3SBpI + /UnfSsJLp0yPTXROWk9BUChRE1H9UuxT3VTQVcFWs1ekWJdZilp+W3FcaF1jXltfVGBT + YVNiUWNUZFllX2ZpZ3NofWmKaopreWxkbU9uPW8ocBZxAnHucttzxnSydZ52iHd3eF95 + S3o0ex58B3zxfdx+xX+vgKOBtILRg+6FDoYwh1OIeImdisWL8o0fjlCPgZC1kemTIZRb + lZaW05gSmVOaj5vQnPyeHp9FoGyhkKK3o96lA6Yrp1WogamuqtmsB603rmqvmrDRsgez + OrRwtae237gRuT+6a7uXvMS98L8awELBbcKUw7jE4cYFxyjIS8luypDLsszVzfrPHdA1 + 0T3SPtM+1DzVPNY71zfYNNkw2irbItwb3RHeBd763+rg3eHL4rzjquSX5abm1Of96STq + UOt77KPtz+788DDxafKj8+X1MvaF9975RPqw/CH9lv8M//8AAAABAAYADwAcAC4ARQBh + AIIAqADUAQYBTgGeAfUCYALVA14D+ASpBW0GRgc5CEAJVQp8C60M6g4kD1YQiBGuEsgT + zxTJFbcWkxdfGCQY5BmnGmkbKBvrHK8ddh4+HwMfxyCLIU8iFiLaI5wkXyUjJeQmpCdi + KB4o2imXKlQrDyvILIEtOi3xLpgvOS/aMHoxGjG6Mlsy/TOeNEE04jWENic2yTdsOA84 + sTlVOfc6mTs9O988gj0lPcg+bT8UP8FAc0ErQeJCmkNSRAlEwUV7RjZG8UevSG9JLUnt + SrFLd0w6TQJNzE6XT2RQMVEAUc9Sm1NjVCpU71W2Vn5XRlgMWNRZnFpiWyxb9Fy9XYhe + Ul8fX+pgtmGFYlRjJGP0ZMVllWZhZy9n/GjJaZhqZ2s2bANs0m2jbnNvRXAWcOVxtnKI + c1p0LHUAddR2qHd6eFJ5MnoXewN78Xzefc9+wn+1gK2BqYKog6qErIWyhruHxojRieGK + 8owAjRCOIY80kEiRXJJwk4aUopXBluKYBZkvmlubiZzAnfmfM6BzobWi+aRBpYum2agn + qXWqzKwlrX2u1bAvsYuy5bRBtaC2/rheucC7IryEvem/S8C0whnDgsToxk/HvMkpyobL + 4804zovP5dFD0rDUK9W011jZHdsE3SDfeuIm5T3pA+359aD//wAAbmRpbgAAAAAAAAY2 + AACbsgAAWOIAAFOcAACNlwAAKH8AABcKAABQDQAAVDkAAeZmAAHj1wABNcIAAwEAAAIA + AAAxAFUAdgCTALAAywDlAP0BFgEuAUYBXwF3AZABqAHCAdwB+AIUAjECUAJwApICtwLe + AwcDNANlA5sD1gQTBFIElATYBR0FZAWrBfUGQQaPBt4HMQeCB9gIMQiKCOUJQwmjCgUK + awrRCzkLowwRDH8M8A1lDeMObQ75D4kQHRCwEUQR3hJ2ExITrxRQFPEVkxY4Ft8XiRg2 + GOIZkhpFGvobsBxnHR4d1R6KH0If/SC6IXoiPCL/I8UkjSVUJh0m6ie3KIMpUiojKvQr + xSyYLWouQC8WL+0w0zHKMsczxzTFNcs20TfbOOY5+TsIPCA9Oj5UP3VAl0HBQulEGEVG + RntHskjdSd5K1kvTTM9Nyk7HT8VQw1HDUsdTxFTFVclWyFfMWNFZ11reW+Rc6130Xv5g + CGETYh5jL2Q/ZVhmj2fRaQ5qTGuSbNVuG29mcLBx+XNEdI513HcteHx5zXscfHF9wn8T + gGuBxIMehHiF1YdAiLqKL4uwjSuOqZArkbOTPZTHllqX9JmKmyuc1Z6AoDOh66OppWqn + L6j8qtasuK6jsJiylbSRtp+4sbrGvOi/C8E1w2PFkcfJyffMLs5c0JPSx9Tz1zfZgdvT + 3ibgduK45OXnBej96unsrO5d7/TxbvLK9BP1TPZn93j4fPln+kf7F/ve/Jz9RP3s/tz/ + /wAAAC4AWQB/AKEAwADdAPgBEwEsAUUBXgF1AY0BpQG+AdcB8AIKAiUCQgJgAn8CoALF + Au0DFgNFA3cDrgPrBCoEagSuBPMFOgWCBcoGFgZkBrQHBwdaB68ICAhiCL0JHAl+CeAK + RwqwCxoLhgv1DGcM2g1RDdAOXw7vD4MQGxCyEUsR6RKFEyUTxhRrFQ8VtRZdFwgXthhm + GRUZyRp/Gzcb8RyrHWgeIx7fH50gXyEjIekisSN6JEclEyXeJq4nfyhOKR4p8irEK5cs + ay0+LhQu6y/BMKMxmjKYM5k0mDWfNqQ3sDi7Oc063zv1PRA+KD9KQGpBk0K6Q+lFFEZH + R31IrEm8Sr9LxkzMTdFO10/eUOZR71L5U/9VB1YQVxZYIFkoWjRbPVxGXVBeW19mYHFh + fGKIY5tkp2XFZvdoKGlTaoVru2zubiRvX3CZcdFzC3RFdYB2v3f8eTp6eHu1fPh+NH9y + gLeB/INBhIWFy4cXiG2JwYsejHqN1o82kJiSApNqlNOWRJe5mSqaoZwenZyfHKCfoiWj + rKU0pr2oRqnbq4utUq8esO6yxLSUtnK4U7o0vB2+Dr/9wffD+MX6yArKFswwzkXQaNKM + 1FXWA9fA2YPbP9z+3r/gi+JL5BDlzueE6T/q9Oyh7kTv4/F/8xb0ofYp97D5M/qx/DX9 + q///AAAAQABxAJwAwgDlAQYBJQFDAWEBfwGcAbsB2QH5AhsCPgJjAosCtgLmAxoDUwOV + A98ELQR9BNMFKgWDBd4GPgahBwgHcQfeCFAIxAk9CbsKPwrGC1AL4Ax1DQ4NrQ5nDyUP + 6xC0EYISVBMsFAgU6hXQFrsXrRijGZ4aoBulHKodpx6dH5gglyGaIqAjpySyJbomySfY + KOQp9ysHLBktKi4/L1QwbjGVMsIz9DUmNl03mjjWOhw7XTyoPe8/PkCKQd9DL0SERdpH + M0iOSfZLXkzNTjtPrVEjUqBUGFWXVxVYm1olW65dO17LYFxh72OLZR5mo2gjaZhrFWyQ + bghvg3D6cm1z33VNdsB4Lnmcewd8dn3hf0qAu4Itg5+FEYaCh/aJbYrkjFuNzY8+kK2S + H5OJlPGWWpfCmSKagpvknUOen5/7oVeisqQMpWWmvagUqXOqy6wfrXOuybAhsXqy1bQq + tYW247hAuZy697xWvbe/EsBywdLDNMSWxfXHXsi/yiDLh8zuzlHPvNEm0pDT9NVZ1svY + TNnH207c1N5k3+fhbOLp5FrlxOcn6IHpzesL7DvtYe5+74bwh/GE8mjzRfQW9OL1ofZU + 9wj3pfhB+Nz5Xfne+l/6z/sy+5X7+Pxb/J/83/0f/WD9oP3g/iH+WP6N/sL+9/8s/2D/ + lf/K//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABtbHVjAAAAAAAAABIAAAAMbmxOTAAAABYAAADoZGFESwAAABwAAAD+cGxQTAAA + ABIAAAEaZW5VUwAAABIAAAEsbmJOTwAAABIAAAE+ZnJGUgAAABYAAAFQcHRCUgAAABgA + AAFmcHRQVAAAABYAAAF+emhDTgAAAAwAAAGUZXNFUwAAABIAAAGgamFKUAAAAA4AAAGy + cnVSVQAAACQAAAHAc3ZTRQAAABAAAAHkemhUVwAAAA4AAAH0ZGVERQAAABAAAAICZmlG + SQAAABAAAAISaXRJVAAAABQAAAIia29LUgAAAAwAAAI2AEsAbABlAHUAcgBlAG4ALQBM + AEMARABMAEMARAAtAGYAYQByAHYAZQBzAGsA5gByAG0ASwBvAGwAbwByACAATABDAEQA + QwBvAGwAbwByACAATABDAEQARgBhAHIAZwBlAC0ATABDAEQATABDAEQAIABjAG8AdQBs + AGUAdQByAEwAQwBEACAAQwBvAGwAbwByAGkAZABvAEwAQwBEACAAYQAgAEMAbwByAGUA + c19pgnIAIABMAEMARABMAEMARAAgAGMAbwBsAG8AcjCrMOkw/AAgAEwAQwBEBCYEMgQ1 + BEIEPQQ+BDkAIAQWBBoALQQ0BDgEQQQ/BDsENQQ5AEYA5AByAGcALQBMAEMARF9pgnJt + smZ2mG95OlZoAEYAYQByAGIALQBMAEMARABWAOQAcgBpAC0ATABDAEQATABDAEQAIABj + AG8AbABvAHIAac7st+wAIABMAEMARAAAbW1vZAAAAAAAAAYQAACcggAAAADCrfCAAAAA + AAAAAAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDA5AA== + + ReadOnly + NO + Sheets + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Class + LineGraphic + ID + 20 + Points + + {245, 123} + {245, 177} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 13 + + ID + 19 + Points + + {245, 123} + {301.493, 181.107} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 12 + + ID + 18 + Points + + {245, 123} + {186.476, 179.942} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 4 + Info + 1 + + + + Class + LineGraphic + ID + 16 + Points + + {245, 267} + {245, 213} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 5 + Info + 2 + + + + Class + LineGraphic + Head + + ID + 13 + + ID + 15 + Points + + {245, 267} + {299.649, 210.79} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 5 + Info + 2 + + + + Class + LineGraphic + Head + + ID + 12 + + ID + 14 + Points + + {245, 267} + {185.517, 209.124} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 5 + Info + 2 + + + + Bounds + {{284, 177}, {62, 36}} + Class + ShapedGraphic + ID + 13 + Shape + Cloud + Style + + fill + + Color + + b + 0.699617 + g + 0.746989 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 TENA} + VerticalPad + 0 + + + + Bounds + {{144, 177}, {54, 36}} + Class + ShapedGraphic + ID + 12 + Shape + Cloud + Style + + fill + + Color + + b + 0.745487 + g + 1 + r + 0.775886 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DDS} + VerticalPad + 0 + + + + Bounds + {{231.5, 135.5}, {27, 29}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + b + 0 + g + 0.0823203 + r + 1 + + + ID + 11 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green21\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs48 \cf2 ??} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{231.5, 225.5}, {27, 29}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + b + 0 + g + 0.0823203 + r + 1 + + + ID + 10 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green21\blue0;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs48 \cf2 ??} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{198, 177}, {86, 36}} + Class + ShapedGraphic + ID + 9 + Shape + Cloud + Style + + fill + + Color + + b + 1 + g + 0.775503 + r + 0.711787 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Sockets} + VerticalPad + 0 + + + + Bounds + {{195, 267}, {100, 54}} + Class + ShapedGraphic + ID + 5 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.826087 + g + 0.826087 + r + 0.826087 + + + stroke + + CornerRadius + 5 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Receiver} + + + + Bounds + {{195, 69}, {100, 54}} + Class + ShapedGraphic + ID + 4 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.826087 + g + 0.826087 + r + 0.826087 + + + stroke + + CornerRadius + 5 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Sender} + + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + UniqueID + 1 + VPages + 1 + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + fill + + GradientColor + + w + 0.666667 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Bounds + {{282.334, 323.356}, {41, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 82 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Node 3} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{294.667, 220}, {41, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 81 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Node 2} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{131.5, 242.822}, {41, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 80 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Node 1} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{294.667, 337.356}, {66, 44.333}} + Class + ShapedGraphic + ID + 79 + Shape + RoundRect + Style + + fill + + Color + + a + 0.35 + b + 0.717934 + g + 1 + r + 0.968026 + + + + + + Bounds + {{119, 179}, {66, 142.023}} + Class + ShapedGraphic + ID + 78 + Shape + RoundRect + Style + + fill + + Color + + a + 0.35 + b + 0.717934 + g + 1 + r + 0.968026 + + + + + + Bounds + {{282.334, 179}, {69.416, 96}} + Class + ShapedGraphic + ID + 77 + Shape + RoundRect + Style + + fill + + Color + + a + 0.35 + b + 0.717934 + g + 1 + r + 0.968026 + + + + + + Class + Group + Graphics + + + Bounds + {{322.467, 305.116}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 74 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{320.834, 303.38}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 75 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 73 + Rotation + 90 + + + Bounds + {{284.834, 297.023}, {36, 24}} + Class + ShapedGraphic + ID + 76 + Rotation + 180 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + Class + Group + Graphics + + + Bounds + {{334.8, 251.093}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 69 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{333.167, 249.357}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 70 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 68 + Rotation + 90 + + + Bounds + {{297.167, 243}, {36, 24}} + Class + ShapedGraphic + ID + 71 + Rotation + 180 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + Class + Group + Graphics + + + Bounds + {{322.467, 197.069}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 64 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{320.834, 195.333}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 65 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 63 + Rotation + 90 + + + Bounds + {{284.834, 188.977}, {36, 24}} + Class + ShapedGraphic + ID + 66 + Rotation + 180 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + Class + Group + Graphics + + + Bounds + {{133.615, 294.76}, {7.58633, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 56 + Rotation + 270 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{136.496, 293.023}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 57 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 55 + Rotation + 270 + + + Bounds + {{142.834, 286.667}, {36, 24}} + Class + ShapedGraphic + ID + 54 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + Class + Group + Graphics + + + Bounds + {{133.615, 203.427}, {7.58633, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 52 + Rotation + 270 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{136.496, 201.69}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 53 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 51 + Rotation + 270 + + + Bounds + {{142.834, 195.333}, {36, 24}} + Class + ShapedGraphic + ID + 4 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + Bounds + {{142.834, 184}, {187.333, 142}} + Class + ShapedGraphic + ID + 9 + Shape + Cloud + Style + + fill + + Color + + b + 0.788043 + g + 0.788043 + r + 0.788043 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Arbitrary\ +Communication\ +Medium} + VerticalPad + 0 + + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 3 + UniqueID + 3 + VPages + 1 + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + fill + + GradientColor + + w + 0.666667 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Class + Group + Graphics + + + Bounds + {{336.633, 463.554}, {12.531, 13.5351}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 113 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{333.5, 461}, {10.9785, 18.6434}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 114 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 112 + Rotation + 90 + + + Bounds + {{354.166, 450.822}, {68, 39}} + Class + ShapedGraphic + ID + 110 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Receiver} + + + + Bounds + {{209.5, 453}, {54, 36}} + Class + ShapedGraphic + ID + 105 + Shape + Cloud + Style + + fill + + Color + + b + 1 + g + 1 + r + 0.728395 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DDS} + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 100 + + ID + 103 + Points + + {116.02, 471} + {124.131, 471} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 98 + + + + Bounds + {{144.646, 461.678}, {74, 20}} + Class + ShapedGraphic + ID + 102 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Connector} + + + + Class + Group + Graphics + + + Bounds + {{125.133, 464.232}, {12.531, 13.5351}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 100 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{122, 461.678}, {10.9785, 18.6434}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 101 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 99 + Rotation + 90 + + + Bounds + {{47.5196, 451.5}, {68, 39}} + Class + ShapedGraphic + ID + 98 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Sender} + + + + Class + LineGraphic + Head + + ID + 86 + + ID + 91 + Points + + {250.82, 377.75} + {274, 377.75} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 9 + + + + Class + LineGraphic + Head + + ID + 9 + + ID + 90 + Points + + {182, 377.75} + {202.747, 377.75} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 82 + + + + Bounds + {{199.5, 359.75}, {54, 36}} + Class + ShapedGraphic + ID + 9 + Shape + Cloud + Style + + fill + + Color + + b + 1 + g + 1 + r + 0.728395 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DDS} + VerticalPad + 0 + + + + Bounds + {{189.5, 335.75}, {74, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 89 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Hello, World!} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{274.5, 358.25}, {68, 39}} + Class + ShapedGraphic + ID + 86 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Receiver} + + + + Bounds + {{113.5, 358.25}, {68, 39}} + Class + ShapedGraphic + ID + 82 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Sender} + + + + Bounds + {{191, 220}, {74, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 80 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Hello, World!} + VerticalPad + 0 + + Wrap + NO + + + Class + LineGraphic + ID + 79 + Points + + {234.167, 261.5} + {276.52, 261.5} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + Head + + ID + 74 + + ID + 78 + Points + + {183.5, 262} + {223.548, 261.999} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 76 + + + + Bounds + {{276, 242.5}, {68, 39}} + Class + ShapedGraphic + ID + 77 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Receiver} + + + + Class + Group + Graphics + + + Bounds + {{224.55, 255.232}, {12.531, 13.5351}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 74 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{221.417, 252.678}, {10.9785, 18.6434}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 75 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 73 + Rotation + 90 + + + Bounds + {{115, 242.5}, {68, 39}} + Class + ShapedGraphic + ID + 76 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Sender} + + + + Class + LineGraphic + ID + 104 + Points + + {133, 470.5} + {149.166, 470.5} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Bounds + {{255, 460.322}, {74, 20}} + Class + ShapedGraphic + ID + 106 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Connector} + + + + Class + LineGraphic + ID + 111 + Points + + {312.333, 469.822} + {354.686, 469.822} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 6 + UniqueID + 6 + VPages + 1 + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + fill + + GradientColor + + w + 0.666667 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Bounds + {{376.875, 353}, {104.75, 44}} + Class + ShapedGraphic + ID + 119 + Shape + RoundRect + Style + + fill + + Color + + a + 0.74 + b + 0.721469 + g + 0.780909 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Colocation\ +Group} + + + + Class + LineGraphic + Head + + ID + 107 + + ID + 112 + Points + + {392.25, 486} + {409.5, 486} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 89 + + + + Class + LineGraphic + Head + + ID + 106 + + ID + 111 + Points + + {392.25, 437.5} + {409.5, 437.5} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 79 + + + + Class + LineGraphic + Head + + ID + 94 + + ID + 110 + Points + + {167.5, 511} + {183.75, 511} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 105 + + + + Class + LineGraphic + Head + + ID + 99 + + ID + 109 + Points + + {167.5, 460} + {183.75, 460} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 104 + + + + Class + LineGraphic + Head + + ID + 84 + + ID + 108 + Points + + {167.5, 409} + {183.75, 409} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 103 + + + + Bounds + {{410, 468}, {100, 36}} + Class + ShapedGraphic + ID + 107 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{410, 419.5}, {100, 36}} + Class + ShapedGraphic + ID + 106 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{67, 493}, {100, 36}} + Class + ShapedGraphic + ID + 105 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{67, 442}, {100, 36}} + Class + ShapedGraphic + ID + 104 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{67, 391}, {100, 36}} + Class + ShapedGraphic + ID + 103 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Class + Group + Graphics + + + Class + Group + Graphics + + + Bounds + {{184.364, 456.093}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 99 + Rotation + 270 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{187.245, 454.356}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 100 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 98 + Rotation + 270 + + + Bounds + {{193.583, 448}, {36, 24}} + Class + ShapedGraphic + ID + 101 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + ID + 97 + Rotation + 180 + + + Class + Group + Graphics + + + Class + Group + Graphics + + + Bounds + {{184.364, 507.093}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 94 + Rotation + 270 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{187.245, 505.356}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 95 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 93 + Rotation + 270 + + + Bounds + {{193.583, 499}, {36, 24}} + Class + ShapedGraphic + ID + 96 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + ID + 92 + Rotation + 180 + + + Class + Group + Graphics + + + Class + Group + Graphics + + + Bounds + {{384.05, 482.093}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 89 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{382.417, 480.357}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 90 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 88 + Rotation + 90 + + + Bounds + {{346.417, 474}, {36, 24}} + Class + ShapedGraphic + ID + 91 + Rotation + 180 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + ID + 87 + + + Class + Group + Graphics + + + Class + Group + Graphics + + + Bounds + {{184.364, 405.093}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 84 + Rotation + 270 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{187.245, 403.356}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 85 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 83 + Rotation + 270 + + + Bounds + {{193.583, 397}, {36, 24}} + Class + ShapedGraphic + ID + 86 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + ID + 82 + Rotation + 180 + + + Class + Group + Graphics + + + Class + Group + Graphics + + + Bounds + {{384.05, 433.593}, {7.58634, 7.81393}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 79 + Rotation + 90 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{382.417, 431.857}, {6.33799, 11.2868}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 80 + Rotation + 180 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 78 + Rotation + 90 + + + Bounds + {{346.417, 425.5}, {36, 24}} + Class + ShapedGraphic + ID + 81 + Rotation + 180 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + + + ID + 77 + + + Class + LineGraphic + Head + + ID + 11 + + ID + 27 + Points + + {376.99, 193.157} + {419.615, 202.022} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 21 + + + + Class + LineGraphic + Head + + ID + 10 + + ID + 26 + Points + + {376.99, 184.843} + {419.615, 175.978} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 21 + + + + Class + LineGraphic + Head + + ID + 15 + + ID + 25 + Points + + {149.03, 217.943} + {198.039, 197.377} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 6 + + + + Class + LineGraphic + Head + + ID + 15 + + ID + 24 + Points + + {156.5, 189} + {198, 189} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 5 + + + + Class + LineGraphic + Head + + ID + 15 + + ID + 22 + Points + + {149.03, 160.057} + {198.039, 180.623} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 4 + + + + Class + Group + Graphics + + + Bounds + {{327, 182}, {60, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 20 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Connector} + VerticalPad + 0 + + TextRotation + 90 + Wrap + NO + + + Bounds + {{337.5, 132.75}, {39, 112.5}} + Class + ShapedGraphic + ID + 21 + Shape + Rectangle + Style + + stroke + + CornerRadius + 9 + + + TextRotation + 90 + + + ID + 19 + + + Bounds + {{188, 182}, {60, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 16 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Connector} + VerticalPad + 0 + + TextRotation + 90 + Wrap + NO + + + Bounds + {{198.5, 132.75}, {39, 112.5}} + Class + ShapedGraphic + ID + 15 + Shape + Rectangle + Style + + stroke + + CornerRadius + 9 + + + TextRotation + 90 + + + Bounds + {{420, 194.5}, {100, 36}} + Class + ShapedGraphic + ID + 11 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{420, 147.5}, {100, 36}} + Class + ShapedGraphic + ID + 10 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{232.5, 151.5}, {111, 75}} + Class + ShapedGraphic + ID + 9 + Shape + Cloud + Style + + fill + + Color + + b + 1 + g + 0.866239 + r + 0.674065 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DDS} + VerticalPad + 0 + + + + Bounds + {{56, 218}, {100, 36}} + Class + ShapedGraphic + ID + 6 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{56, 171}, {100, 36}} + Class + ShapedGraphic + ID + 5 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{56, 124}, {100, 36}} + Class + ShapedGraphic + ID + 4 + Shape + Rectangle + Style + + fill + + Color + + b + 0.820652 + g + 0.820652 + r + 0.820652 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Application\ +Component} + + + + Bounds + {{56, 387}, {181.5, 44}} + Class + ShapedGraphic + ID + 114 + Shape + RoundRect + Style + + fill + + Color + + a + 0.74 + b + 0.721469 + g + 0.780909 + r + 1 + + + + + + Bounds + {{56, 438}, {181.5, 44}} + Class + ShapedGraphic + ID + 115 + Shape + RoundRect + Style + + fill + + Color + + a + 0.74 + b + 0.721469 + g + 0.780909 + r + 1 + + + + + + Bounds + {{56, 489}, {181.5, 44}} + Class + ShapedGraphic + ID + 116 + Shape + RoundRect + Style + + fill + + Color + + a + 0.74 + b + 0.721469 + g + 0.780909 + r + 1 + + + + + + Bounds + {{338.5, 415.5}, {181.5, 44}} + Class + ShapedGraphic + ID + 117 + Shape + RoundRect + Style + + fill + + Color + + a + 0.74 + b + 0.721469 + g + 0.780909 + r + 1 + + + + + + Bounds + {{338.5, 464}, {181.5, 44}} + Class + ShapedGraphic + ID + 118 + Shape + RoundRect + Style + + fill + + Color + + a + 0.74 + b + 0.721469 + g + 0.780909 + r + 1 + + + + + + Bounds + {{203, 394}, {160.583, 132}} + Class + ShapedGraphic + ID + 102 + Shape + Cloud + Style + + fill + + Color + + b + 1 + g + 0.866239 + r + 0.674065 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DDS} + VerticalPad + 0 + + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 4 + UniqueID + 4 + VPages + 1 + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + fill + + GradientColor + + w + 0.666667 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Bounds + {{290.21, 157}, {99.4286, 27}} + Class + ShapedGraphic + ID + 12 + Shape + RoundRect + Style + + fill + + Color + + b + 0.683555 + g + 1 + r + 0.950192 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Reader} + VerticalPad + 0 + + + + Bounds + {{186.362, 157}, {99.4286, 27}} + Class + ShapedGraphic + ID + 11 + Shape + RoundRect + Style + + fill + + Color + + b + 0.683555 + g + 1 + r + 0.950192 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Writer} + VerticalPad + 0 + + + + Bounds + {{290.21, 190}, {99.4286, 27}} + Class + ShapedGraphic + ID + 10 + Shape + RoundRect + Style + + fill + + Color + + b + 1 + g + 0.717934 + r + 0.968026 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DataReader} + VerticalPad + 0 + + + + Bounds + {{186.362, 190}, {99.4286, 27}} + Class + ShapedGraphic + ID + 9 + Shape + RoundRect + Style + + fill + + Color + + b + 1 + g + 0.717934 + r + 0.968026 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DataWriter} + VerticalPad + 0 + + + + Bounds + {{290.21, 223}, {99.4286, 27}} + Class + ShapedGraphic + ID + 8 + Shape + RoundRect + Style + + fill + + Color + + b + 0.802469 + g + 0.802469 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs23\fsmilli11800 \cf0 Subscriber} + VerticalPad + 0 + + + + Bounds + {{186.362, 223}, {99.4286, 27}} + Class + ShapedGraphic + ID + 7 + Shape + RoundRect + Style + + fill + + Color + + b + 0.802469 + g + 0.802469 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Publisher} + VerticalPad + 0 + + + + Bounds + {{186.362, 256}, {203.276, 27}} + Class + ShapedGraphic + ID + 6 + Shape + RoundRect + Style + + fill + + Color + + b + 1 + g + 0.976367 + r + 0.788676 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Topic} + VerticalPad + 0 + + + + Bounds + {{186.362, 289}, {203.276, 27}} + Class + ShapedGraphic + ID + 5 + Shape + RoundRect + Style + + fill + + Color + + b + 0.790487 + g + 1 + r + 0.720649 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DomainParticipant} + VerticalPad + 0 + + + + Bounds + {{172, 143}, {232, 186}} + Class + ShapedGraphic + ID + 4 + Shape + Rectangle + Style + + fill + + Color + + b + 0.782609 + g + 0.782609 + r + 0.782609 + + + stroke + + CornerRadius + 9 + + + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 5 + UniqueID + 5 + VPages + 1 + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {576, 733}} + Class + SolidGraphic + ID + 2 + Style + + fill + + GradientColor + + w + 0.666667 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Class + LineGraphic + ID + 57 + Points + + {246.035, 300.249} + {246.386, 316.499} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + Group + Graphics + + + Bounds + {{240.845, 288.528}, {11.3795, 11.7209}} + Class + ShapedGraphic + ID + 52 + Rotation + 180 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{241.781, 282.538}, {9.50698, 16.9302}} + Class + ShapedGraphic + ID + 53 + Rotation + 270 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 51 + Rotation + 180 + + + Class + LineGraphic + ID + 50 + Points + + {246.035, 268.375} + {246.386, 284.625} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 49 + Points + + {208.965, 301.749} + {209.316, 318} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 48 + Points + + {208.965, 269.25} + {209.316, 285.5} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 47 + Points + + {246.035, 147.75} + {246.386, 164.001} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 46 + Points + + {208.965, 148.499} + {209.316, 164.75} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 45 + Points + + {208.965, 116} + {209.316, 132.251} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 44 + Points + + {246.035, 116} + {246.386, 132.251} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + Class + Group + Graphics + + + Bounds + {{203.776, 136.029}, {11.3795, 11.7209}} + Class + ShapedGraphic + ID + 41 + Rotation + 180 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{204.712, 130.039}, {9.50698, 16.9302}} + Class + ShapedGraphic + ID + 42 + Rotation + 270 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 40 + Rotation + 180 + + + Class + Group + Graphics + + + Bounds + {{240.844, 133.75}, {11.3795, 11.7209}} + Class + ShapedGraphic + ID + 38 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{241.781, 134.531}, {9.50698, 16.9302}} + Class + ShapedGraphic + ID + 39 + Rotation + 90 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 37 + + + Class + Group + Graphics + + + Bounds + {{203.775, 286.25}, {11.3795, 11.7209}} + Class + ShapedGraphic + ID + 35 + Shape + Circle + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{204.712, 287.031}, {9.50698, 16.9302}} + Class + ShapedGraphic + ID + 36 + Rotation + 90 + Shape + AndGate + Style + + fill + + Color + + b + 0.0035882 + g + 0.93545 + r + 1 + + + + Text + + VerticalPad + 0 + + TextRelativeArea + {{0, 0.1}, {1, 0.8}} + + + ID + 34 + + + Bounds + {{201, 199}, {54, 36}} + Class + ShapedGraphic + ID + 10 + Shape + Cloud + Style + + fill + + Color + + b + 1 + g + 0.927724 + r + 0.789037 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 DDS} + VerticalPad + 0 + + + + Bounds + {{191.5, 247}, {73, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 9 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Comm Logic} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{191.5, 176}, {73, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 8 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\b\fs24 \cf0 Comm Logic} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{181, 199}, {94, 36}} + Class + ShapedGraphic + ID + 1 + Shape + Rectangle + Style + + fill + + Color + + b + 0.764136 + g + 0.787758 + r + 1 + + + + + + Bounds + {{181, 165.5}, {94, 103}} + Class + ShapedGraphic + ID + 7 + Shape + Rectangle + Style + + fill + + Color + + b + 0.718205 + g + 1 + r + 0.72379 + + + stroke + + CornerRadius + 9 + + + + + Bounds + {{181, 318}, {94, 41}} + Class + ShapedGraphic + ID + 6 + Shape + Rectangle + Style + + fill + + Color + + b + 0.788043 + g + 0.788043 + r + 0.788043 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Receiver} + + + + Bounds + {{181, 75}, {94, 41}} + Class + ShapedGraphic + ID + 4 + Shape + Rectangle + Style + + fill + + Color + + b + 0.788043 + g + 0.788043 + r + 0.788043 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Sender} + + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 2 + UniqueID + 2 + VPages + 1 + + + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + WindowInfo + + CurrentSheet + 2 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{131, 41}, {710, 837}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{0, 0}, {561, 668}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + Canvas 2 + 1 + 1 + + + Canvas 3 + 1 + 1 + + + Canvas 4 + 1 + 1 + + + Canvas 5 + 1 + 1 + + + Canvas 6 + 1 + 1 + + + + saveQuickLookFiles + YES + + diff --git a/modules/CIAO/docs/EnvVars.html b/modules/CIAO/docs/EnvVars.html new file mode 100644 index 00000000000..a088f793de0 --- /dev/null +++ b/modules/CIAO/docs/EnvVars.html @@ -0,0 +1,35 @@ + + + + + Environment Variables used by CIAO + + +

Environment Variables used by CIAO

+
    +
  • CIAO_DEBUG_LEVEL: +An interger value accessible using CIAO::debug_level() +call. Currently, CIAO follow the following usage conventions:
    +
    +
      +
    • 20 < debug_level ≤ 20: Generate CIAO internal debug +messages
    • +
    • 10 < debug_level ≤ 20: Generate CIAO tools debug messages +
    • +
    • 0 < debug_level ≤ 10: Generate component-level debug +messages
    • +
    +

    +
  • +
  • CIAO_DUMP_SAMPLE_HISTORY: This environment +variable was added for lack of component configuration support. Set it +to 1 to turn on the dumping of performance samples to stdout in some +performance test components.
  • +
+
+
Nanbor Wang
+ +Last modified: Sun Nov 30 20:29:14 Mountain Standard Time 2003 + + + diff --git a/modules/CIAO/docs/OMG-CCM-Tutorial.ppt b/modules/CIAO/docs/OMG-CCM-Tutorial.ppt new file mode 100644 index 00000000000..434af0eabf8 Binary files /dev/null and b/modules/CIAO/docs/OMG-CCM-Tutorial.ppt differ diff --git a/modules/CIAO/docs/Porting_Hints.txt b/modules/CIAO/docs/Porting_Hints.txt new file mode 100644 index 00000000000..feed93d2eb7 --- /dev/null +++ b/modules/CIAO/docs/Porting_Hints.txt @@ -0,0 +1,55 @@ +Porting applications to the refactored DAnCE: + +1) ciao_client_dnc base projects should be changed to ccm_stub +2) ciao_component_dnc should be changed to ciao_executor +3) ciao_servant_dnc should be changed to ciao_servant +4) Executor implementations now require that the configuration_complete + operation be implemented. +5) ciao_{pre,post}activate are no longer invoked. + +It should be noted that this new version of CIAO/DAnCE no longer supports +implicitly homed components. Components must either be explicitly homed +(ie, an explicitly deployed home instance combined with a component instance +that specifically identifies that home), or unhomed. In the unhomed case, +a factory method that instantiates the component executor must be added +to the _exec header and source files. + + +Porting the plan +=================== +There are a number of changes to the plan structure to better comply with +the specification. + +1) idref refrences must now be made using an attribute xmi:idref instead + of using element content, i.e., + + Receiver_Stub + + should be transformed into + + + +2) Entrypoint information is now listed in the execParameters for the + monolithicImplementation instead of the implementationArtifact elements. + Furthermore, the container (servant) and executor artifacts must be + explicitly identified. The following execParameters must be present + on all monolithic implementations for homes and unhomed components: + + . "home factory" - contains the executor entrypoint for homes + . "component factory" - contains the executory entrypoint for unhomed + components + . "edu.vanderbilt.dre.CIAO.ServantEntrypoint" - contains the container + (servant) entrypoint for both homes and unhomed components + . "edu.vanderbilt.dre.CIAO.ServantArtifact" - Identifies the name + element of the artifact that implements the container (servant) + . "edu.vanderbilt.dre.CIAO.ExecutorArtifact" - Identifies the name + element of the artifact that implements the executor. + +3) IOR output configProperties have changed: + . "RegisterNaming" is now edu.vanderbilt.dre.DAnCE.RegisterNaming + . "ComponentIOR" is now edu.vanderbilt.dre.DAnCE.InstanceIOR + +4) Connection endpoints must now include the element after the element. +. SimplexReceptacle, MultiplexReceptacle, EventEmitter, and EventPublisher should be false +. Facet and EventConsumer should be true + diff --git a/modules/CIAO/docs/Purify.html b/modules/CIAO/docs/Purify.html new file mode 100644 index 00000000000..fff258db120 --- /dev/null +++ b/modules/CIAO/docs/Purify.html @@ -0,0 +1,72 @@ + + + + Using Rational Purify with CIAO + + + +

Using Rational Purify with CIAO

+

This document is about using Purify with Visual Studio 7.1 to track down + memory leaks and other bugs in CIAO applications. For the Linux/Unix + environment, Valgrind is a better-suited tool - see Will Otte's documentation + on using Valgrind with CIAO in this directory.

+

Purify can be run from within Visual Studio, or standalone. The executable is + c:\Program Files\Rational\PurifyPlus\purifyw.exe. Typing this will bring up the + same Purify window you see if you run it from within Visual Studio. You can + install Purify from the web by going to + \\Atlantis\software\RationSuiteEnterprise-v2003-06-12  and clicking + on C57BPML.zip. This will install a whole bunch of Rational stuff + by default, so you will probaby want to deselect everything but PurifyPlus, + although Quantify is a good bottleneck-finder when you're trying to improve + performance, so that might be worth installing and playing with as well. During + the installation process, you'll be prompted for a mode of licensing. Select + the use of a license server, and then you'll be prompted for its address. Use + rational.vuse.vanderbilt.edu.

+

The option to exclude all modules in Windows directories will probably be set + by default, but if you notice memory leaks reported for Windows stuff, you + might want to double check this and turn it off. From the PurifyPlus menu bar + item in Visual Studio, it's at PurifyPlus->Purify->Settings->DefaultSettings->PowerCheck. + When run for the first time, Purify will instrument all libraries linked to the + executable. Select PurifyPlus->Purify->Run, and a window will pop + up prompting you for the executable name, command line options, and working + directory.

+

Purify's output will appear in the Visual Studio text editing window. This + output can be saved to the given filename. The type of error reported is + indicated by a 3-letter code - the most common are UMR (Unitialized Memory + Read), FMM (Freeing Mismatched Memory), and MLK (Memory Leak). Each of these + can be expanded to show the call stack. The depth of the call stack can be + modified in Settings if it's not deep enough. FMM messages will show both + allocation and deallocation call stacks.

+ Quite often in CIAO, we will want to Purify a process that is spawned by + another process, and therefore not directly runnable in Purify. This is fairly + easy to do, but it must be done from the command line. If the name of the child + process we want to instrument is child.exe, then it can be + instrumented by typing +
+ purifyw /Run=no /Replace=yes child.exe
+ This will rename the original executable as child.exe.Original, + and the new instrumented executable will be child.exe. Now when + you run the parent process under Purify, you'll see one window opened up in + Visual Studio's text editor for this process, and when the child process is + spawned, a second window will open. A couple of caveats to make this work + smoothly: +
    +
  • + Instrumented executables run 2 to 5 times slower than uninstrumented ones, so + any timeouts in the code should be extended accordingly. For example, if an + instrumented NodeApplication is spawned by NodeManager, add -d 15 or + -d 20 + to NodeManager's command line. +
  • + If an instrumented process is simply killed, there will probably be many + spurious error messages, mostly related to ORB resources that were not cleaned + up by a graceful shutdown. All processes tested with Purify should have a + graceful shutdown built in to eliminate these bogus memory leak messages. +
  • +
+
+
Jeff Parsons
+ Last modified: Oct 3 2005 + + + diff --git a/modules/CIAO/docs/RT-Extension.html b/modules/CIAO/docs/RT-Extension.html new file mode 100644 index 00000000000..3414a30b78e --- /dev/null +++ b/modules/CIAO/docs/RT-Extension.html @@ -0,0 +1,132 @@ + + + +Using the Real-time Extension in CIAO + + + +

Using the Real-time Extension in CIAO

+ + +

Abstract

+ +The real-time extension support in CIAO enables application developers +to deploy real-time applications by specifying real-time +configurations as XML descriptors without modifying the component +implementation. In fact, embedding the real-time configuration +policies in component implementations decrease the reusability of the +software components. + +Different types of real-time policy can be applied at different +stage of the component development lifecycle, e.g., +
    +
  • Component implementation +
  • Component packaging +
  • Application composition +
  • Target platform configuration +
  • Deployment configuration +
+ +Real-time policies can also be applied to various scope in an +applications, e.g., many real-time policies can be associate with some +or all of the following ORB mechanisms: +
    +
  • ORBs +
  • POAs +
  • Threads +
  • Object references +
+ + +

CIAO's Real-time Extension

+ +CIAO extends CCM's assembly descriptor to support the specifications +of real-time policies. This mechanism allows you to allocate +resources that are global to a RTComponentServer and to define real-time +policies required by a component installation. Currently, CIAO +support configuration of certain real-time policies at the POA level, +i.e., in CCM's terminology, the container level. These policies +include: + +
    +
  1. Priority Model Policy +
  2. Threadpool Policy +
  3. Banded Connection Policy +
+ +The kind of resources that are global to a RT component server that CIAO +real-time extension specifies include: + +
    +
  1. Threadpool +
  2. Threadpool with lanes +
  3. Connection bands +
+ + +

Using the CIAO Real-time Extension

+ +Application developers can define the aforementioned Real-Time +extension Descriptor (.rtd file) that CIAO defines to allocate +resources and specify real-time policies. The Document Type +Definition (DTD) for the real-time extension description is defined in +this file. Each .RTD file +specifies the required resources and the policy definitions within a +RTComponentServer. + +A RTComponentServer can be associated to a .RTD file. This is done by +using the "extension" element with "class" attributed set to +"RT-CAD-EXT", within a processcollocation or hostcollocation element. +Here is an example: +
+
+  <processcollocation>
+    .
+    .
+    .
+   <extension class="RT-CAD-EXT" origin="CIAO">somefile.rtd</extension>
+    .
+  </processcollocation>
+
+ +Each .RTD file contains the two major subelements: +
    +
  • <rtresources>: defines all the RT resources the assciating + RTComponentServer should provide. +
  • <rtpolicysets>: defines named collections of policies + (<rtpolicyset>) that apply to component installations in + the RTComponentServer. +
+ +The <rtpolicyset>'s defined in the .RTD file can be associated +to a component installation, i.e., a component placement within the +RTComponentServer to which the .RTD file is associated. For example, + +
+   <homeplacement>
+     .
+     .
+     ,
+    <extension class="RT-POLICY-SET"
+                 origin="CIAO">A_POLICY_NAME</extension>
+     .
+   </homeplacement>
+
+ +

Future Addition

+ +As mentioned earlier, RT policies can be applied at various stages of +component-based deployment lifecycle and at different scope. For +example, applying RTpolicies at the ORB level, or at the object +reference level of a component receptacle. These extensions involve +at least, extending the "appropriate" XML descriptor definition and +extending the CIAO runtime, including core and/or the CIDL generated +code to configure the policies. How other RT-related policies can be +added will be reviewed in my thesis available shortly. + +
+
Nanbor Wang
+ +Last modified: Sun Nov 30 19:23:25 Mountain Standard Time 2003 + + diff --git a/modules/CIAO/docs/TODO.html b/modules/CIAO/docs/TODO.html new file mode 100644 index 00000000000..e1007725715 --- /dev/null +++ b/modules/CIAO/docs/TODO.html @@ -0,0 +1,240 @@ +

+ + +Component-Integrated ACE ORB - TODO list + + + +

Component-Integrated ACE ORB (CIAO) - TODO list

+ +The following is a prioritized list of things (with the highest +priority items first) that the DOC group is working on. The expected +date of accomplishments are also added as ETA (expected time of +accomplishment) : + +

Things to do:

+
    +
  • Integrate TAO's real-time event channel within the + container. Components can use this feature to communicate using + eventtypes a pub-sub mode. The code is available in a + branch and it needs to be integrated in to the main-trunk. (ETA - + 2004/08) +
  • + +

  • Allow components (i.e., assemblies) to be connected using the + NameService (ETA - 2004/08)
  • + +

  • Allow non-component enabled clients to access reference to a + component or an assembly using NameService (ETA - 2004/08)
  • + +

  • Allowing components to set attributes, atleast attributes of + basic types. As a first step we need to implement the + StandardConfigurator interface. The servant for the + StandardConfigurator interface should be implemented + and activated by the servant for the component. DAnCE can extract + the reference from the servant and use it to set attributes (ETA - + 2004/08)
  • + +

  • Now that we have supports for ccm_{activate,passivate,remove}, we + need to rethink how a container manages the lifecycle of all the + components/homes it hosts so all the servants related to a + component get destroyed "properly". The aforementioned + SessionComponent operations will also depend on the proper + lifecycle management.

    + + This includes making sure all components' appropriate + ccm_passivate and ccm_remove operations are called when the + ComponentServer is closing down.

    (ETA - 2004/08)

  • + +
  • Migrate RT features from RTComponentServer to DAnCE + (ETA - 2004/10)
  • + +

  • Static configuration of components using DAnCE (ETA - 2004/12) +
  • + +

  • We need a set of tests to make sure most (and later + all) of the data types are function correctly. + More importantly, we need to make sure all the + component keywords are supported okay. (ETA - 2004/07)

    + +

  • The naming convention used in creating new component + instructions and that used in templates do not match. (Files containing + glue code are named *_svnt.* and *GS.* respectively.) We need + to address that.(ETA - 07/2004)

  • + +
  • Retire the old assembly and deployment framework (ETA - + 2004/10)

  • + +
  • We need to review the implementation of servant glue code and + container implementations to make sure that they are + thread-safe, if the container calls for it. Currently, these + states are changed only by the deployment framework which always + runs in single thread, so it's not a serious problem. However, + it's perfectly legal to dynamically configure connnections, which + will be the case if we want to add new components or remove + components from the assembly.(ETA - 2004/09)

    + +

  • Add support for creating a thread pool within the the component + server. We don't have support for this, which has made our users + resort to spawning threads within the components, which breaks + portability of the executor code. (ETA - 2004/09)
  • + +

  • At present components in an assembly have no way of knowing + whether the assembly is complete or not. This becomes important when + there are hierarchical assemblies, and the assembly at a higher + level needs to pass on attrbute information to the assembly at a + lower level. The spec talks about configuration_complete () + whose semantics are a bit unclear. We may have to use this + to inform the components that the configuration is infact + complete. (ETA - 2004/09)
  • + + +

  • Need to develop tools that would allow components to be added + dynamically to an existing assembly and remove components + dynamically from an existing assembly (ETA - 2004/12)
  • . + +

  • The CCM_Core libraries need to be refactored so regular CIAO + users no longer need to link to CIAO_Server but to + CIAO_Container library instead. Currently, the session + container implementation is throwing exceptions from the + deployment modules when it fails to install a home. But these + feature should really be implmented in the Deployment::Container + interface instead. (ETA - 2004/12)

    + +

  • HomeRegistrar related files from the CCM_Core projects have + been removed. We need to move them into a new directory when we + get to a new HomeFinder/HomeRegistrar implementation. Notice + that the deployment framework will need to use the HomeRegistrar + interface to register components/homes. (ETA - 2004/12)

    + +

  • We should add support for the unclassified container and use the + property file of some sort to configure the empty container.

    + + Process component (which have 1:1 servant to OID mapping) might + be useful too (no need to support PSS in this case?)

    + + Persistent object references/IDs can be useful for statically + configured DRE systems as they eliminate the initial handshakes + in a multi-process system and enable each process to start up + independently. (ETA - Not known)

    + +

  • The new generate_component_mpc.pl script should + invoke the generate_export_file.pl automatically + and created the necessary export files instead of only printing + out the hints on how to do that. (ETA - Not known)

    + +

  • We need a ConfigValues parser for extracting common name-value + info out of a ConfigValues sequence. This would be needed if + components have to set complex user defined types as attributes. + (ETA - not known).
  • + +

  • Container Factory: We need to provide a container factory + interface to decide what kind of container we need to use. Hmm, + isn't this the job of ComponentServer interface? + (ETA - not known)
  • + +

  • ComponentInstallation: This is a simple interface that + provides (UUID, Location) mappings. Both UUID and Location are + of string type. Since ACE supports UUID implementation, we can + probably use that to generate a UUID. Location should be URI, but + let's just map that to locations in filesystem (pathnames) for + now. So we will most likely need to provide more downloading + mechanisms in the future, e.g., http, ftp, etc.

    + + ComponentInstallation is the interface assembly mechanism used + to interact with the deployment mechanism. We are free to + implement the deployment mechanism (i.e., shipping of code to + various locations of application domains) the way we like but + the assembly mechanism depends on this interface to determine + where to fetch a specific implementation.

    + + One thing that we really need is an installation tool set which + can be used to manage remote installation, by parsing various + XML descriptors and either push or pull the right implmentation + for a certain host in the list of hosts the component need to be + installed. According to the CCM spec., ComponentInstallation + interface implementation can retrieve a implementation (DLL) on + an on-demand basis. Therefore, there is probably no need to + push the appropriate DLL over right away when we feed some + descriptors into the installation tool. The tool, however, + should accurately extract the correct OS/compiler information + and inform the ComponentInstallation impl which and where to + fetch the right implmentation for the host it is running on. (ETA - not + known)

    +

  • This is a set of the to-do associated with the DAnCE implementation. +

    +

      +
    • We need to put the ComponentServer layer back in. In the current + implementation we use NodeApplication as both the Session Container + and the ComponentServer. We need to seperate the two + entities so we can hook any Container with the + ComponentServer. This change is essential to the RT + configuration and for the future of CIAO.

      + +

    • Bala added ciao_[pre|post]_activate to the Session Component to + force the order of actions upon start-up, but this will not + work with the new DnC framework. We need to change the DnC framework + a bit to make this feature available again.

      + +

    • We need to work on the Resource Management process in + DAnCE. Right now this part of the DnC spec is omitted in our + implementation.

      + +

    • We need to work on the packaging process more so we can ship + binaries around when the dll/so is not available in the + local node.

      +

    + +
+ +

Cool ideas

+
    +
  • Currently, developing a component will create 3 DLLs, one for + the client side stuff, one for the servant glue code, and one + for the executors. We need to figure out a way to automate + these stuff. MPC is a good starting point to generate scripts + to create project templates.

    + +

  • Management of ComponentInstallation can be done + using a CORBAscript of some sort as this involve mostly + registering and unregistering of locations of component + implementations.

    +

+ +

Finished Work

+
    +
  • The exception returned from CIAO_Daemon when it fails to + locate a DLL is quite useless to say the least. It needs + fixing.

    + + CIAO now provides more meaningful error message now.

    + +

  • We should create a new workspace/target in TAO such as CIAO_ONLY + to simplify the process of using CIAO. Currently, you have to + checkout the README file in CIAO_ROOT to figure out what TAO + modules are required by CIAO.

    + + A new target "CIAO_Core" is now available in ACE's top level + Makefile.

    + +

  • We need better debug info and a way to control how different + level of debug info are generated in CIAO.

    Some preliminary + support using the environment + variable CIAO_DEBUG_LEVEL has been added.

    + +

  • Miminal implementation of CIDL compiler.

    + +

  • CCM core workspace now contains 3 different DLLs: +
      +
    • CCM_Client - Needed by CCM-awared client +
    • CCM_Container - Needed by executors and servers +
    • CCM_Server - Needed by servers and CIAO tools +

    + +

  • A SessionContainer implementation.

    + +

+ + diff --git a/modules/CIAO/docs/Trace.html b/modules/CIAO/docs/Trace.html new file mode 100644 index 00000000000..001cddd007e --- /dev/null +++ b/modules/CIAO/docs/Trace.html @@ -0,0 +1,32 @@ + + + + + CIAO Logging facility + + +

CIAO Logging Facility +

+Based on the various logging techniques provided by ACE mechanism, CIAO +has introduced some new logging macros to assist CIAO developers in +diagnosing CIAO codes.
+
    +
  • CIAO_TRACE
    +
        By placing CIAO_TRACE at the beginning of +a CIAO function or method, you can get the tracing message of when +these functions are entered and when they are exited at runtime. To +enable this feature, however, you need to set CIAO_NTRACE to 0 in +$ACE_ROOT\ace\config.h. CIAO_TRACE works in a identical way as +ACE_TRACE. The only distinction is that CIAO_TRACE will output the the +tracing messages for CIAO projects only while dumping the excessive +messages from ACE on top of which CIAO is built.
    +
  • +
+
+
Ming Xiong
+Last modified: Thur Aug 12:50 am 2005 +
+ + + + diff --git a/modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd b/modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd new file mode 100644 index 00000000000..7877afe2151 --- /dev/null +++ b/modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/CIAO/docs/XML/componentassembly.dtd b/modules/CIAO/docs/XML/componentassembly.dtd new file mode 100644 index 00000000000..d61fb47505f --- /dev/null +++ b/modules/CIAO/docs/XML/componentassembly.dtd @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/docs/XML/corbacomponent.dtd b/modules/CIAO/docs/XML/corbacomponent.dtd new file mode 100644 index 00000000000..fd5ec98f377 --- /dev/null +++ b/modules/CIAO/docs/XML/corbacomponent.dtd @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/docs/XML/properties.dtd b/modules/CIAO/docs/XML/properties.dtd new file mode 100644 index 00000000000..adfe8699fb7 --- /dev/null +++ b/modules/CIAO/docs/XML/properties.dtd @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/docs/XML/softpkg.dtd b/modules/CIAO/docs/XML/softpkg.dtd new file mode 100644 index 00000000000..ee87b811cc6 --- /dev/null +++ b/modules/CIAO/docs/XML/softpkg.dtd @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/docs/com-impl.html b/modules/CIAO/docs/com-impl.html new file mode 100644 index 00000000000..ed5948ab9cf --- /dev/null +++ b/modules/CIAO/docs/com-impl.html @@ -0,0 +1,60 @@ + + + +Implementing a CCM Component + + + +

Implementing a CCM Component

+ +This document explains how to implement a single component. At this +moment, CIAO lacks a CIDL compiler, and we depends on manually +generating the servant glue code for containers and local executor +interface. Check out this page to +find how all files are generate4d in CIAO. +The following figure shows how this is done:

+ + +

+ +And when we have a working CIDL (or, CCIDL "CIAO's Component +Implementation Definition Language") compiler, the file will be +generated using a CIDL file (which is rather simple.) This figure +depicts the "Right Way" [TM] this should be done:

+ +

+ +Checkout a list of things to do for implementing CIDL compiler.

+ +I think it is debatable whether we should merge the "Servant DLL" and +"Component Implementation DLL" into one DLL. Me think not. My +approach, however, creates some complication on requireing a mechanism +to locate the servant code (and DLL) from component implementation. + + +

Libraries Dependencies

Implementing a component creates 3 +DLL's as shown in the above figure. Both "Servant DLL" and "Component +Implementation DLL" depend on the "Client DLL". "Servant DLL" and +"Component Implementation DLL" are not mutually dependent, however. +All the generated DLLs depends on other TAO and CIAO common +libraries. Here's a break down of which libraries depends on which +other libraries: + +
    +
  • Client DLL: ace.lib tao.lib TAO_IFR_Client.lib + CIAO_Clientd.lib +
  • Servant DLL: ace.lib tao.lib Client DLL + TAO_IFR_Client.lib TAO_PortableServer.lib TAO_Security.lib + CIAO_Container.lib CIAO_Client.lib +
  • Component Implementation DLL: ace.lib tao.lib + Client DLL TAO_IFR_Client.lib TAO_Security.lib + CIAO_Container.lib +
+ + + + + + + + diff --git a/modules/CIAO/docs/fm/CIAO.fm b/modules/CIAO/docs/fm/CIAO.fm new file mode 100644 index 00000000000..2d9f30978b4 Binary files /dev/null and b/modules/CIAO/docs/fm/CIAO.fm differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.eps b/modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.eps new file mode 100644 index 00000000000..199356e471f Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.sxd b/modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.sxd new file mode 100644 index 00000000000..c9274592024 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Component_Container_and_CORBA.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.eps new file mode 100644 index 00000000000..d15f7622a60 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.sxd new file mode 100644 index 00000000000..434e9c640ad Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Administrator_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.eps new file mode 100644 index 00000000000..a59c4c51367 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.sxd new file mode 100644 index 00000000000..39f15ee32c3 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.eps new file mode 100644 index 00000000000..e381ccee506 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.sxd new file mode 100644 index 00000000000..e31cea90d52 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Messenger_Runnable_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.eps new file mode 100644 index 00000000000..9f45c415037 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.sxd new file mode 100644 index 00000000000..61beec7cae2 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Components_Receiver_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.eps b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.eps new file mode 100644 index 00000000000..520d868bdf9 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.sxd b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.sxd new file mode 100644 index 00000000000..b7075b1d398 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Administrator.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.eps b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.eps new file mode 100644 index 00000000000..f291c21aa79 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.sxd b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.sxd new file mode 100644 index 00000000000..fe3745e5fc9 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Application.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.eps b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.eps new file mode 100644 index 00000000000..c1e997bf8f8 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.sxd b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.sxd new file mode 100644 index 00000000000..ee5286986b0 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.eps b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.eps new file mode 100644 index 00000000000..924c5e62d11 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.sxd b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.sxd new file mode 100644 index 00000000000..fc4c07c269a Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Messenger_Assembly.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.eps b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.eps new file mode 100644 index 00000000000..ff3c3b74733 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.sxd b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.sxd new file mode 100644 index 00000000000..67555eb68a4 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Descriptors_Receiver.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.eps new file mode 100644 index 00000000000..9999c12552e Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.sxd new file mode 100644 index 00000000000..9b0cb8c21f2 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Generic_Component_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.eps b/modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.eps new file mode 100644 index 00000000000..4d541937873 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.sxd b/modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.sxd new file mode 100644 index 00000000000..861f5a15cdb Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_IDL3_to_IDL2_Files.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.eps b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.eps new file mode 100644 index 00000000000..6df8ae5272e Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.sxd b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.sxd new file mode 100644 index 00000000000..8c1f626ed6c Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.eps new file mode 100644 index 00000000000..dc77e8e97ec Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.sxd new file mode 100644 index 00000000000..aab58862aca Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_IDL_CIDL_Files_CIDL_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.eps new file mode 100644 index 00000000000..1fec26375aa Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.sxd new file mode 100644 index 00000000000..b641b2cd3c9 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_MessengerHome_Class_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.eps new file mode 100644 index 00000000000..b68053dd664 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.sxd new file mode 100644 index 00000000000..287fc0c97bc Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Class_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.eps new file mode 100644 index 00000000000..0eb8ae53773 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.sxd new file mode 100644 index 00000000000..34dc595d299 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Component_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.eps new file mode 100644 index 00000000000..4beae29323f Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.sxd new file mode 100644 index 00000000000..4a28077f309 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.eps new file mode 100644 index 00000000000..785b42673da Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.sxd new file mode 100644 index 00000000000..0b4f235a918 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Connections_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.eps new file mode 100644 index 00000000000..16b34a2ce5e Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.sxd new file mode 100644 index 00000000000..ec31dff72fd Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_All_Nodes_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.eps new file mode 100644 index 00000000000..a4d12ef666d Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.sxd new file mode 100644 index 00000000000..109aa0d33fc Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Connection_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.eps new file mode 100644 index 00000000000..fe802ede9b8 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.sxd new file mode 100644 index 00000000000..e273d767461 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Deployment_Diagram_Node_Highlight.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.eps new file mode 100644 index 00000000000..52336bee092 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.sxd new file mode 100644 index 00000000000..374744638e8 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_IDL_Generated_Class_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.eps new file mode 100644 index 00000000000..dcfe7db00a8 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.sxd new file mode 100644 index 00000000000..bb39ca53a27 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Messenger_Interaction_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_01.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_01.eps new file mode 100644 index 00000000000..9b1f7e7337c Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_01.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_01.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_01.sxd new file mode 100644 index 00000000000..8227c8d1ca1 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_01.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_02.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_02.eps new file mode 100644 index 00000000000..166f1fbdb3c Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_02.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_02.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_02.sxd new file mode 100644 index 00000000000..499b12e8023 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_02.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_03.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_03.eps new file mode 100644 index 00000000000..e91f91330b7 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_03.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_03.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_03.sxd new file mode 100644 index 00000000000..710fbf2b247 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_03.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_04.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_04.eps new file mode 100644 index 00000000000..8b5b1a6b01c Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_04.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_04.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_04.sxd new file mode 100644 index 00000000000..f163a28db22 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_04.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_05.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_05.eps new file mode 100644 index 00000000000..4fe79d1f1b6 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_05.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_05.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_05.sxd new file mode 100644 index 00000000000..7a2add97011 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_05.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_06.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_06.eps new file mode 100644 index 00000000000..5564282e65b Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_06.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_06.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_06.sxd new file mode 100644 index 00000000000..8121ceb64b7 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_06.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_07.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_07.eps new file mode 100644 index 00000000000..5e279f30297 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_07.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_07.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_07.sxd new file mode 100644 index 00000000000..884efe0ea5e Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_07.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_08.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_08.eps new file mode 100644 index 00000000000..d56e2626795 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_08.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_08.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_08.sxd new file mode 100644 index 00000000000..7e53c97fdbb Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_08.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_09.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_09.eps new file mode 100644 index 00000000000..06272f3d65d Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_09.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_09.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_09.sxd new file mode 100644 index 00000000000..f43524d5eb8 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_09.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.eps b/modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.eps new file mode 100644 index 00000000000..65ae8c9de46 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.sxd b/modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.sxd new file mode 100644 index 00000000000..7d7eaebd5a1 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Roadmap_Overview.sxd differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.eps b/modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.eps new file mode 100644 index 00000000000..a27d4af7d68 Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.eps differ diff --git a/modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.sxd b/modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.sxd new file mode 100644 index 00000000000..c15bd72becc Binary files /dev/null and b/modules/CIAO/docs/fm/images/CIAO_Runnable_Class_Diagram.sxd differ diff --git a/modules/CIAO/docs/fm/images/OCILOGO_bw_book.eps b/modules/CIAO/docs/fm/images/OCILOGO_bw_book.eps new file mode 100644 index 00000000000..708fd10aae9 Binary files /dev/null and b/modules/CIAO/docs/fm/images/OCILOGO_bw_book.eps differ diff --git a/modules/CIAO/docs/generate_component_mpc.html b/modules/CIAO/docs/generate_component_mpc.html new file mode 100644 index 00000000000..101f0734d0f --- /dev/null +++ b/modules/CIAO/docs/generate_component_mpc.html @@ -0,0 +1,84 @@ + + + + TAO IDL compiler User's Guide + + + + + +
+

Using The generate_component_mpc.pl Script

+ This document describes the options and usage of the Perl script generate_component_mpc.pl + in the $(CIAO_ROOT)/bin directory. +
+

+

Assumptions

+ This script is useful for generating MPC files for relatively simple component + applications. The string name passed to the script should be the name of the single + IDL file for that build (without the extension). The names of export files, preprocessor + macros, and library names in the generated MPC file will all be constructed + from this string. It is also assumed that the IDL file for a component build + will contain a single component declaration. +

+ Judicious use of the script options in the table below will generate a build + that keeps to a minimum both the code generated from IDL and the number of + linked libraries from the middleware. +

+


+

Script Options

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Option + Description + Remark
-hThe compiler prints out the options that are given below and exits clean +  
-p stringIndicates another make/project that this one depends onUsed as a project name prefix unless overridden by -u option
-l stringPath to the dependent name value of -pNeeded only if the dependent make/project isn't already in the search path
-nNon-component make/projectGenerates a *_stub and *_skel pair of builds, instead of the + default *_stub, *_svnt and *_exec builds.
-cCreate a client make/projectGenerates a build for a "driver" executable. Assumes there is a single C++ + source file named client.cpp
-u stringUnique project name prefixOccasionally needed since MPC doesn't accept duplicate project names anywhere + in the tree over which it is proecessing. This option overrides the value of + the -p option, if present
+ + + diff --git a/modules/CIAO/docs/imgs/CCM-v5.vsd b/modules/CIAO/docs/imgs/CCM-v5.vsd new file mode 100644 index 00000000000..7f4d7539050 Binary files /dev/null and b/modules/CIAO/docs/imgs/CCM-v5.vsd differ diff --git a/modules/CIAO/docs/imgs/CCM.vsd b/modules/CIAO/docs/imgs/CCM.vsd new file mode 100644 index 00000000000..239a4e7943d Binary files /dev/null and b/modules/CIAO/docs/imgs/CCM.vsd differ diff --git a/modules/CIAO/docs/imgs/DAnCE-Dynamic.png b/modules/CIAO/docs/imgs/DAnCE-Dynamic.png new file mode 100644 index 00000000000..2e9917e1520 Binary files /dev/null and b/modules/CIAO/docs/imgs/DAnCE-Dynamic.png differ diff --git a/modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd b/modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd new file mode 100644 index 00000000000..b795c5ae049 Binary files /dev/null and b/modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd differ diff --git a/modules/CIAO/docs/imgs/File-Gen-Existing.png b/modules/CIAO/docs/imgs/File-Gen-Existing.png new file mode 100644 index 00000000000..8deb5d32fd3 Binary files /dev/null and b/modules/CIAO/docs/imgs/File-Gen-Existing.png differ diff --git a/modules/CIAO/docs/imgs/File-Gen-Future.png b/modules/CIAO/docs/imgs/File-Gen-Future.png new file mode 100644 index 00000000000..1daef691bdf Binary files /dev/null and b/modules/CIAO/docs/imgs/File-Gen-Future.png differ diff --git a/modules/CIAO/docs/imgs/File_Generation_Flow.vsd b/modules/CIAO/docs/imgs/File_Generation_Flow.vsd new file mode 100644 index 00000000000..ef6332d49ac Binary files /dev/null and b/modules/CIAO/docs/imgs/File_Generation_Flow.vsd differ diff --git a/modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd b/modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd new file mode 100644 index 00000000000..0986aa78d70 Binary files /dev/null and b/modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd differ diff --git a/modules/CIAO/docs/imgs/basic-container.png b/modules/CIAO/docs/imgs/basic-container.png new file mode 100644 index 00000000000..9df767b45a2 Binary files /dev/null and b/modules/CIAO/docs/imgs/basic-container.png differ diff --git a/modules/CIAO/docs/imgs/ciao-dynamic1.jpg b/modules/CIAO/docs/imgs/ciao-dynamic1.jpg new file mode 100644 index 00000000000..a385ad30848 Binary files /dev/null and b/modules/CIAO/docs/imgs/ciao-dynamic1.jpg differ diff --git a/modules/CIAO/docs/imgs/ciao-dynamic2.jpg b/modules/CIAO/docs/imgs/ciao-dynamic2.jpg new file mode 100644 index 00000000000..e0a705b9d3a Binary files /dev/null and b/modules/CIAO/docs/imgs/ciao-dynamic2.jpg differ diff --git a/modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg b/modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg new file mode 100644 index 00000000000..b876b7a82cb Binary files /dev/null and b/modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg differ diff --git a/modules/CIAO/docs/imgs/ciao-static1.jpg b/modules/CIAO/docs/imgs/ciao-static1.jpg new file mode 100644 index 00000000000..313084ff34d Binary files /dev/null and b/modules/CIAO/docs/imgs/ciao-static1.jpg differ diff --git a/modules/CIAO/docs/imgs/ciao-static2.jpg b/modules/CIAO/docs/imgs/ciao-static2.jpg new file mode 100644 index 00000000000..86ded87f448 Binary files /dev/null and b/modules/CIAO/docs/imgs/ciao-static2.jpg differ diff --git a/modules/CIAO/docs/imgs/component-basic.png b/modules/CIAO/docs/imgs/component-basic.png new file mode 100644 index 00000000000..520dc9c4cca Binary files /dev/null and b/modules/CIAO/docs/imgs/component-basic.png differ diff --git a/modules/CIAO/docs/imgs/dance_arch.jpg b/modules/CIAO/docs/imgs/dance_arch.jpg new file mode 100644 index 00000000000..3c91b912213 Binary files /dev/null and b/modules/CIAO/docs/imgs/dance_arch.jpg differ diff --git a/modules/CIAO/docs/imgs/dance_arch.vsd b/modules/CIAO/docs/imgs/dance_arch.vsd new file mode 100644 index 00000000000..cfe75fca9c6 Binary files /dev/null and b/modules/CIAO/docs/imgs/dance_arch.vsd differ diff --git a/modules/CIAO/docs/imgs/deployment.png b/modules/CIAO/docs/imgs/deployment.png new file mode 100644 index 00000000000..4cd8c6be646 Binary files /dev/null and b/modules/CIAO/docs/imgs/deployment.png differ diff --git a/modules/CIAO/docs/imgs/extended-container.png b/modules/CIAO/docs/imgs/extended-container.png new file mode 100644 index 00000000000..39977e6eb83 Binary files /dev/null and b/modules/CIAO/docs/imgs/extended-container.png differ diff --git a/modules/CIAO/docs/imgs/home-config.png b/modules/CIAO/docs/imgs/home-config.png new file mode 100644 index 00000000000..aebf5e62751 Binary files /dev/null and b/modules/CIAO/docs/imgs/home-config.png differ diff --git a/modules/CIAO/docs/imgs/static_dance_arch.jpg b/modules/CIAO/docs/imgs/static_dance_arch.jpg new file mode 100644 index 00000000000..b12694ce348 Binary files /dev/null and b/modules/CIAO/docs/imgs/static_dance_arch.jpg differ diff --git a/modules/CIAO/docs/imgs/static_dance_arch.vsd b/modules/CIAO/docs/imgs/static_dance_arch.vsd new file mode 100644 index 00000000000..1ca1f50f69d Binary files /dev/null and b/modules/CIAO/docs/imgs/static_dance_arch.vsd differ diff --git a/modules/CIAO/docs/imgs/static_dance_impl.jpg b/modules/CIAO/docs/imgs/static_dance_impl.jpg new file mode 100644 index 00000000000..cd2f9f0dc81 Binary files /dev/null and b/modules/CIAO/docs/imgs/static_dance_impl.jpg differ diff --git a/modules/CIAO/docs/imgs/static_dance_impl.vsd b/modules/CIAO/docs/imgs/static_dance_impl.vsd new file mode 100644 index 00000000000..6c21e6139d4 Binary files /dev/null and b/modules/CIAO/docs/imgs/static_dance_impl.vsd differ diff --git a/modules/CIAO/docs/index.html b/modules/CIAO/docs/index.html new file mode 100644 index 00000000000..9aa2b9969aa --- /dev/null +++ b/modules/CIAO/docs/index.html @@ -0,0 +1,168 @@ + + + + + CIAO - Component-Integrated ACE ORB + + +

CIAO - Component-Integrated ACE ORB

+

Introduction

+CIAO is TAO's implementation of CORBA Component +Model (CCM) specially optimized for distributed real-time embedded +(DRE) systems. +This page contains links to other documents and resources for building +and using CIAO.
+
+
+

The CIAO Project

+ +
+
    +
+
    +

    +

    +
+

CCM-defined Interface Diagrams

+Here is a set of UML diagrams that we use to figure out the +relationship among all the different interfaces in CCM. You can +browse the related part from the following list: + +All these diagrams are generated from the CCM.vsd +Visio file (The same file in Visio V.5 format is here.) and OpenOffice source file + DAnCE-Dynamic.sxd
+
+
+

CIAO's D&C Framework (DAnCE) part-by-part

+DAnCE's implementation is based on the OMG's Deployment and Configuration +Specification version [ptc/2003-07-08]. Here is a list of the major +actors of CIAO runtime that a user should be aware of. +
    +
  • NodeManager: +A daemon process responsible for managing NodeApplications that reside +in the same physical node.
  • +

    +
  • NodeApplicationManager: +A infrastructure component responsible for deploying  +locality-constrained applications onto a node. A NodeApplicationManager +is usually created by NodeManager.
    +
  • +

    +
  • NodeApplication: +A component server instance spawned by NodeApplicationManager.
    +
  • +

    +
  • ExecutionManager: +Infrastructure component responsible for executing an component-based +DRE application based on the information from DeploymentPlan.
  • +

    +
  • DomainApplicationManager: +Domain-oriented auxiliary component created and used by +ExecutionManager to deploy the component-based DRE application at the +domain level.
    +
    +
  • +
  • PlanLauncher: +Executor component responsible for parsing the XML-based +deploymentplan and passing the plan to ExecutionManager for execution.
    +
    +To understand the runtime inter-relationships of various CIAO actors, +you may click here to see a +sequence diagram that gives you a clear representation of what's +happening when you start a DAnCE-based DRE application. Special thanks +to Friedhelm Wolf who +initiated and contributed most part of this +diagram.
    +
    +
  • +
+
+

CIAO CCM tutorials

+There are several tutorials to help you understand CIAO and CCM: + + + + + diff --git a/modules/CIAO/docs/new_components.html b/modules/CIAO/docs/new_components.html new file mode 100644 index 00000000000..db10fca2103 --- /dev/null +++ b/modules/CIAO/docs/new_components.html @@ -0,0 +1,129 @@ + + + +Procedures to prepare a new component implementation + + + +

Preparing a new component implementation

+ +I am documenting the steps required to prepare a component implementation. +Personally, I prefer to set up a directory to contain only one +component implementation. I believe the procedures outlined below +will work if you have multiple component implementation in the same +IDL files. The purpose of this document is to record the procedures +and steps on how these files relate to each others and how they come +about during the development process.

+ +Assuming we need to create a new component called +Orc. Below is the list of files you'll need to +deal with. Our goal is to greatly reduce the number of files you need +to deal with manually... + +

    +
  1. Orc.idl - This is + the IDL file that contains the component and component home + definitions.

    + + As you will eventually create 3 DLLs (or shared objects), you + will also need 3 sets of different export macros files as + following.

    + +

  2. Orc_stub_export.h - This file is generated + using the following command:

    + + generate_export_file.pl ORC_STUB > Orc_stub_export.h

    + + This file makes macros like ORC_STUB_Export + and friends available. They are usually controlled by + ORC_STUB_BUILD_DLL

    + +

  3. Orc_svnt_export.h - This file is generated + using the following command:

    + + generate_export_file.pl ORC_SVNT > Orc_svnt_export.h

    + + This file makes macros like ORC_SVNT_Export + and friends available. They are usually controlled by + ORC_SVNT_BUILD_DLL

    + +

  4. Orc_exec_export.h - This file is generated + using the following command:

    + + generate_export_file.pl ORC_EXEC > Orc_exec_export.h

    + + This file makes macros like ORC_EXEC_Export + and friends available. They are usually controlled by + ORC_EXEC_BUILD_DLL

    + +

  5. OrcE.idl - Component Executor equivalent + interface definitions. This file should be generated + automatically by the CIDL compiler as illustrated in this + file but we currently are still + working on the implementation of the CIDL compiler. Therefore, + you still need to create this file manually.

    + +

  6. OrcEI.idl - + Optional Component Executor implementation interface + definitions. Often time, when you implement a non-trivial + monolithic component implementation, you are required to define + the monolithic local executor interface which often inherits + from the component monolithic executor interface and all the + provided interfaces. The actually executor implementation will + inherit from this user defined interface instead of the default + executor mapping defined in OrcE.idl. You + will need to do the same when you wish to support non-vanilla + component interface, such as + Components::SessionComponent, and/or + Components::SessionSynchronization.

    + + Ideally, it would be perfect if we can auto-generate this + optional IDL file using CIDL compiler. However, I'm not sure + the plan CIDL language contains enough information that's + required to generate this file.

    + +

  7. Orc_exec.* - These + are files containing the actually component implementation that + you have to write manually. It, however, depends on the + equivalent executor IDL definition (that will be) generated by + the CIDL files.

    + +

  8. Orb_svnt.* - These are files containing the + servant glue code that bridge a container to the component + executor that you implement. Like the component executor + mapping IDL file, these files should be generated by the CIDL + compiler but are currently generated manually.

    + +

  9. Orc.csd - Component Softpkg Descriptor. We + need some kind of tool to generate this file automatically. It + is currently being generated manually, however.

    + + +

  10. Orc.ssd - Servant Softpkg Descriptor. This + is a CIAO extension descriptor file which uses the same softpkg + DTD as described in CCM spec. CIAO requires this file because + CIAO separates the executors into a completely separate DLL. + Like Orc.csd, this file should be generated + automatically through some tool, but it is currently manually + crafted.

    + +

  11. Orc.ccd - CORBA Component Descriptor. This + file is currently being generated manually thou a template + should really be generated by CIAO's CIDL compiler.

    + +

  12. Orc.mpc - Makefile + Project Creator definition file. There is a perl script to + generate a minimal MPC definition at + $(CIAO_ROOT)/bin/generate_component_mpc.pl so + people can use it to implement the simplest component + implementation outlined in this file.

    + +

+ + +
+
+ +Last modified: Fri Mar 21 16:06:48 Central Standard Time 2003 + + diff --git a/modules/CIAO/docs/releasenotes/dance.html b/modules/CIAO/docs/releasenotes/dance.html new file mode 100644 index 00000000000..6980860b3c8 --- /dev/null +++ b/modules/CIAO/docs/releasenotes/dance.html @@ -0,0 +1,229 @@ + + + + + + Deployment And Configuration Engine (DAnCE) Release Notes + + + +

Deployment And Configuration Engine (DAnCE) Release Notes

+ +

Deployment And Configuration Engine + (DAnCE) is an implementation of the run-time infrastructure as + defined by the final adopted OMG Deployment & + Configuration (D&C) specification (ptc/2003-07-08), which deals with the + configuration and deployment of component-based applications. Currently + DAnCE only supports the deployment & configuration of CORBA + Component Model (CCM)-based applications, though we are interested in + generalizing it for other component models in future work. DAnCE uses + XML descriptors to drive the deployment it performs. One way to + generate these descriptors is using the Component + Synthesis using Model-Integrated Computing + (CoSMIC) tool-suite. + DAnCE currently uses Component Integrated ACE + ORB (CIAO) as + the underlying CCM implementation in the current release, though again + we are interested in generalizing it for other CCM implementations in + future work. +

+ +

D&C XML Schema Handling

+ +

The XML handlers shipped with DAnCE are capable of handling almost + all elements that are defined in the D&C schema. In this context, + handling refers to reading the XML tags and converting them to the + equivalent in-memory IDL-based data structures defined by the + specifications. DAnCE supports the following types of descriptors + specified in the D&C specification:

+
    +
  • +

    + CORBA Component Descriptor(.ccd) – + Contains information about component interfaces including + component ports. +

    +
  • +
  • +

    + Component Implementation Descriptor(.cid) + – Contains information about component implementations + which might be either monolithic or assembly based. In the case + of assembly based implementations, this descriptor also captures + the dependencies and the connections among components +

    +
  • +
  • +

    + Implementation Artifact Descriptor(.iad) + – Contains information about implementation artifacts + in-cluding dependencies between such artifacts +

    +
  • +
  • +

    + Component Package Descriptor(.cpd) – + Contains information about grouping of multiple imple-mentations + of the same component interface into component packages +

    +
  • +
  • +

    + Package Configuration Descriptor(.pcd) + – Contains information about specific configurations of + such component packages +

    +
  • +
  • +

    + Component Domain Descriptor(.cdd) – + Contains information about the target environment in which the + component-based application will be deployed +

    +
  • +
  • +

    + TopLevel Package Descriptor(.tpd) – Contains + information identifying the top-level element in a component + package descriptor which might include information about multiple + elements +

    +
  • + +
  • +

    + Component Deployment Plan(.cdp) – Contains + information that actually drives the deployment including + information about individual components that represent the + leaf-nodes in case of a hierarchical assembly, connections + between components, and assignment of components to nodes etc. +

    +
  • +
+

For all the above elements, DAnCE supports proxying of the elements + as defined by XMI, i.e, DAnCE supports both parsing of the elements + inline and reference through href attribute. Some + D&C schema elements are however not handled, including:

+
    +
  • +

    + Deployment:Any – This is a complex + element that is composed of many sub-elements. Currently, DAnCE + only parses a subset of the sub-elements of + Deployment:Any. Specifically, DAnCE supports all the + basic data types defined as part of Deployment:Any, + and doesn't understand any complex types. +

    +
  • +
  • +

    + xmi:Extension – This element allows the + augmention of the standard D&C schema with user-defined + elements. Currently DAnCE doesn't support user-defined extensions + to the schema. +

    +
  • +
  • +

    + Deployment:Requirement – This element is + allows the description of requirements of component-based + applications. Since handling this description requires interaction + with the TargetManager interface (which is not yet + supported), support for Deployment:Requirement is not + present. +

    +
  • +
  • +

    + Deployment:ComponentPropertyDescriptioncode> – + This element is used to specify default values for attributes of + component. DAnCE doesn't support setting the values for attributes + of components using this tag. +

    +
  • +
  • +

    + Deployment:ComponentExternalPortEndpoint, + Deployment:ExternalReferenceEndpoint – These + elements are used to specify connections between ports of + components in one assembly with ports of components in a different + assembly, or connections between component ports and external + connection endpoints. These features are needed to support + assemblies of components. DAnCE doesn't support yet hierarchical + assemblies, i.e., creation of assemblies which can themselves + contain sub-assemblies. +

    +
  • +
  • +

    + Deployment:PlanPropertyMapping – This + element is used to delegate property mapping between a component's + external properties to properties of subcomponents that actually + implement the behavior of the larger component. Since DAnCE doesn't + support hierarchical assemblies, this tag is not yet supported. +

    +
  • +
+

We plan to support these features in future versions of DAnCE. +

+
+

D&C Management Interfaces

+ +

The D&C specification defines a set of standard CORBA + interfaces that are used to perform the deployment of component-based + applications. These interfaces depend on the in-memory IDL data + structures that are built by DAnCE's XML handlers. Below we outline the + list of interfaces defined by the specification and the level of + support for each interface in DAnCE:

+
    +
  • +

    + RepositoryManager – Only the + installPackage() and findPackageByName() + operations of this interface are implemented. +

    +
  • +
  • +

    + TargetManager – This interface has not + been implemented at all. Implementation of this interface is + planned for the future. +

    +
  • +
  • +

    + ExecutionManager – All operations defined + in this interface are implemented. +

    +
  • +
  • +

    + DomainApplicationManager, DomainApplication + – All operations except getApplications() + operation of DomainApplicationManager are implemented. +

    +
  • +
  • +

    + NodeManager – All operations except joinDomain() and leaveDomain() operations of NodeManager are implemented.

    +
  • +
  • +

    NodeApplicationManager, NodeApplication – All operations defined in these interfaces are + implemented.

    +
  • +
+

+ We plan to finish implementing the unsupported features in future versions of DAnCE. +

+

+ + Valid XHTML 1.0! + +

+
+ Last modified $Date$ by $Author$ +
+ + diff --git a/modules/CIAO/docs/releasenotes/index.html b/modules/CIAO/docs/releasenotes/index.html new file mode 100644 index 00000000000..887a2c8b2f6 --- /dev/null +++ b/modules/CIAO/docs/releasenotes/index.html @@ -0,0 +1,119 @@ + + + + + + CIAO Release Information and TODO List + + + +
+
+ +
+

+Release Information for the Component Integrated ACE ORB (CIAO)

+This document contains information on the following topics related to the +current +release of CIAO: + + + + +
+ +
+ +
+ + +
+

Current Status

+
    +
  1. The first cut of the new DnC + specification implementation, which we call DAnCE is available in + this distribution. DAnCE is housed under $CIAO_ROOT + . We plan to enhance DAnCE in the next few months. We believe + DAnCE will replace existing tool sets in + $CIAO_ROOT/tools. There are a few features in + $CIAO_ROOT/tools that are missing in the DAnCE + implementation. Please see TODO file + for more details. We plan to implement them soon and use DAnCE + continuously. + +
  2. The first cut of DAnCE includes two parts: +
      +
    • + A modeling tool chain , + CoSMIC, which is capable of describing the Assembly/Component + using + GME as the development bed. The artifacts generated from the + CoSMIC are a set of XML descriptors. + + +
    • This run-time infrastructure that performs the actual deployment + and configuration, with a superset of the capabilities described in + OMG DnC specification with CIAO extension. .

      + +

    + + In the new DnC run-time framework we have migrated all the + functionalities present in the old CIAO runtime except the + Real-Time configuration and Static Configuration, which are + developed by Washington University in St. Louis. Currently, + the two CIAO runtime co-exist in our source and the component + implementation could be used with both framework without much + change. (For the change that one has to go through please + read this.)

    + + + +

  3. Two operations ciao_preactivate () and + ciao_postactivate () have been added to the + SessionComponent interface. This implies that component + developers have to implement those operations within the + executor. We plan to get around this, i.e., users having to + implement these two operations, in the next month or so.

    + +

  4. The CIDL Compiler has been eliminated, all CIAO code is now + generated by the IDL compiler.

    + +

  5. CIAO doesn't yet support features that help integrating CORBA + components with Enterprise Java Beans (EJB).

    + +

  6. Test to demonstrate composition of applications with real-time + behavior using CIAO's real-time extension was added. Please see + ACE_wrappers/TAO/CIAO/tests/RTCCM/Priority_Test.

    + +

  7. The CIAO static configurator tool has been enhanced to support + processing of RTCORBA policy related information. Please see + ACE_wrappers/TAO/CIAO/docs/static_ciao_index.html.

    + +

  8. To further interoperability with non-component-aware clients, there + are files in the $CIAO_ROOT/tools/IDL3_to_IDL2 directory that can be + compiled into an executable called tao_idl3_to_idl2. This executable + takes an IDL file (on the command line) containing IDL3 declarations + and outputs an IDL file with the IDL3 declarations converted to + equivalent IDL2. IDL2 declarations in the input file are unchanged. + See the README file in that directory for more information.

    + +

+ + + +Email: ciao-users@cse.wustl.edu + + + diff --git a/modules/CIAO/docs/releasenotes/switch.html b/modules/CIAO/docs/releasenotes/switch.html new file mode 100644 index 00000000000..1120239b6ec --- /dev/null +++ b/modules/CIAO/docs/releasenotes/switch.html @@ -0,0 +1,35 @@ + + + +Migrating the component implementation + + + +

When switching from the old CIAO runtime to the new one

+ +
    + There are only one thing needs to be done to migrate the component + implementation from the old runtime to the new runtime. +

    + Find all the component MPC files in your component implementation + source directories and make the following changes. + + for every project in your MPC files which inherites from any of + the following MPC template (base project): ciao_client, ciao_component, + ciao_servant, ciao_server, replace them with ciao_client_dnc, + ciao_component_dnc, ciao_servant_dnc, ciao_server_dnc. Then + generate your makefile/solution/project files using either + mwc.pl or mpc.pl and build (rebuild) your + binaries.
    + + A couple examples of the component implementation are at: + $CIAO_ROOT/DAnCE/tests. +
+ +

When switching from the new CIAO runtime to the old one

+
    + Reverse the above changes. +
+ + Email:
ciao-users@cse.wustl.edu + diff --git a/modules/CIAO/docs/static_ciao_contents.html b/modules/CIAO/docs/static_ciao_contents.html new file mode 100755 index 00000000000..d043e4c0aee --- /dev/null +++ b/modules/CIAO/docs/static_ciao_contents.html @@ -0,0 +1,359 @@ + + + + + + + CIAO Static Configuration + + + +
+

CIAO Static Configuration Support for Real-Time Platforms

+
+

+1. Introduction

+The dynamic packaging, assembly, and deployment mechanisms currently +available +in CIAO are useful for application domains where component metadata is +less likely to be known a priori, where implementation upgrades may +need +to be performed on-line, and where platform features like loading and +unloading +dynamic libraries are both available and useful.  Furthermore, the +new CCM Deployment and Configuration specification describes a wider +range +of configuration capabilities, opening up the question of alternative +component +configuration strategies more generally and requiring that any solution +we devise can be migrated to that new configuration approach. +

Therefore, we have incorporated support for component configuration +in CIAO on platforms like VxWorks, as a set of optional strategies and +optimizations to the existing CIAO configuration capabilities.  By +supporting both dynamic and static styles of configuration in CIAO, we +will both (1) be able to realize our short term goals in making CIAO +available +on VxWorks for use in the Boeing PCES/MoBIES OEP, and (2) set a +precedent +for availability of static configuration capabilities more generally, +so +that DRE systems are well-supported within the new Deployment and +Configuration +specification implementation for CIAO as well. +

+

The fundamental intuition in understanding our approach is that in +DRE +systems the stages of the overall system lifecycle are similar to those +in more dynamic conventional component-oriented client-server +applications.  +However, in DRE systems several phases of the system lifecycle are +compressed +into the compile-time and system-initialization phases, so that (1) for +testing and verification purposes the set of components in an +application +can be identified and analyzed before run-time, and (2) overheads for +run-time +operation following initialization are reduced and made more +predictable. +Furthermore, due to the nuances of the platforms traditionally used for +deploying DRE systems, not all features of conventional platforms are +available. +Our approach therefore avoids certain mechanisms that are either +unavailable +or too costly in terms of performance. +

+

We follow these intuitions in our approach, taking the existing +configuration +phases in CIAO and pushing several of them earlier in the configuration +lifecycle.  We ensure that our approach can be realized in the +context +of the platforms on which the Boeing PCES/MoBIES OEP will be deployed, +notably VxWorks, by re-factoring the configuration mechanisms and +retargeting +them to use only the services available on the target real-time +platforms. +
+  +

+

2. Current CIAO Configuration Architecture

+
+


+

+

Figure 1. Current configuration process in CIAO

+
+

The first stage of the CIAO system lifecycle occurs off-line, when +component +package (.csd) and assembly (.cad) files are generated by a modeling +tool +or other prior stage of the tool chain.  These files contain an +abstract +specification of the configuration that is to be achieved by CIAO in +each +particular deployment environment . +

+

CIAO interprets these .csd and .cad files, and creates and +configures +the components, their run-time server environments, and QoS properties +within the supporting ORB and other related infrastructure.  +Currently, +CIAO runs several daemon processes for each deployment environment: one +or more Component Installation / Server Activation (CISA) daemons on +each +machine where components can be deployed, an additional Assembly +Manager +daemon and an Assembly Deployer process used by the system developer. +

+

The Assembly Manager stores an internal table with the target +platform +availability information .    The Assembly Deployer +tells +the Assembly Manager which assemblies of components (each assembly is +defined +in a separate .cad file) should be deployed on which target +machines.  +The Assembly Manager parses the XML structures in the .cad file, and +generates +its own internal data structure (Figure 2) as an intermediate +representation +of that assembly. +

+

The Assembly Manager then traverses (Figure 2) this +intermediate +representation, instructing each CISA daemon to install and configure +specific +component servers and containers, to create specific homes, and to +instantiate +specific component instances.    Each CISA daemon has +additional +information about the component implementations available on that +endsystem +– each component UUID is mapped to a disk path for the .dll or .so file +within which a factory method for its home factory is defined. +

+
+

+

Figure 2. Intermediate representation of configuration information

+
+

The following steps are optional, and will only be performed if they +are explicitly specified in the assembly definition itself.  For +the +sake of discussion, we consider the case where all the steps are in +fact +specified.  The Assembly Manager will tell the CISA daemon the +UUIDs +of the components to be installed in that component server, and the +CISA +daemon will look up and load the appropriate dynamic library, invoke +the +home factory method to create the home, and then invoke the home’s +component +creation method.  After all the component instances and homes have +been created and references to them have been obtained, the assembly +manager +will then make all the connections between ports and receptacles, +facets, +and event sources and sinks by invoking connect and subscribe methods +on +the receiving end component. +

+

QoS-specific metadata like priorities can be configured by a .cad +file +extension called a real-time descriptor (.rtcad) file.  The +Assembly +Manager will read the .rtcad file and will parse and associate +real-time +policies with the appropriate component instances.   One +implication +of this mechanism is that the Assembly Manager will maintain QoS +meta-data +within its intermediate representation, alongside the conventional CCM +meta-data. +

+

Furthermore, when the Assembly Manager interacts with the CISA +daemon(s) +on each endsystem, commands to configure particular component and +component +server run-time infrastructure QoS properties are passed from the +Assembly +Manager to the CISA daemon.  The ORB (and as a future extension +the +ORB Services) of the endsystem on which the components are installed is +currently configured via the ACE Service Configurator.  The CISA +daemon +maps different service configurations (as defined in particular +svc.conf +files) to logical names used in the component assembly descriptors. +

+

The logical configuration names are encoded within the .cad file as +an extension of the conventional .cad file format using the “extension” +element of the existing .cad file XML DTD.  The Assembly Manager +passes +a component server creation command, containing a logical configuration +name, which the CISA daemon maps to a particular svc.conf file when it +creates a new component server.  The CISA daemon adds a command +line +flag to the execution command line used to spawn the new component +server, +which causes that configuration file to be parsed and applied during +startup +of the component server itself. +

+

3. Static Configuration Approach

+In the static configuration approach (Figure 3), +configurations  +XML files are translated in a code generation step just before compile +time (managed by the same project/Makefile processes that do the +compilation) +into C++ header and source files that are then compiled and linked with +the main application. +
+

+

Figure 3. Static Configuration in CIAO

+
+

First, one of the generated files is a C++ header file, so that it +can +be included directly by C++ source files.  There is no additional +parsing required to import a number of static constants and identifiers +it declares and defines, so that those constants end up being compiled +directly into C++ code.  Second, where enumeration of information +is needed, the header file contains simple homogeneous C++ arrays so +that +C++ source code can iterate over those arrays with minimal +overhead.  +Third, it declares information so that later information depends on +earlier +information (Figure 4), and the components are directly +configured +within that header file. +

+
+

+

Figure 4. All XML files are parsed offline and stored as +cross-referenced +tables in Static_Assembly_Config.h

+
+

The major issues that we addressed in developing a re-factored +version +of the CIAO configuration mechanisms are as follows: +

+

1. XML parsing is too expensive to be performed during system +initialization, +so that all such parsing has been moved off-line to before +compile-time, +and the resulting information is linked statically into the application +itself. +

+

2. Each endsystem boots and initializes in a single process address +space, so that any remaining inter-process communication between +daemons +is replaced by direct interactions between objects, or at most between +threads. +

+

3. Dynamic link libraries are unavailable on VxWorks, so an +alternative +mechanism for obtaining the home factory method entry point is needed. +We gather this information from the XML files and statically generate a +map containing  the entry point function names and the entry point +function pointers. This information will be used by the CIAO container +implementation instead of trying to load a dll and then finding the +entry +point in the dll. +

+

Moving XML Parsing Earlier

+We first focused on taking the XML parsing stage off-line.  Since +the time required to do this by CIAO is currently reasonable as an +off-line +activity, we simply created (Figure 4) a stripped-down version +of +the Assembly Manager (reusing the existing class libraries the Assembly +Manager uses) that after it performs the XML parsing and generation of +its intermediate representation, emits a C++ header file containing +that +intermediate representation. +

Combining Configuration Daemons at Run-Time

+The intermediate representation is included in a configuration engine +(CIAO::Static_Configurator) +that consists of a simple reader for the intermediate representation, +again +derived from the code currently used in the Assembly Manager, which +will +dispatch to the configuration code used by the CISA daemons in the +dynamic +case.  The configuration engine will be invoked from the +application’s +main entry point prior to starting execution of the application itself. +

Eliminating Dynamic Library Loading

+All code will need to be known a priori, and linked statically into the +application.  If alternative configurations must be supported +statically, +then those separate configurations can be alternative selections chosen +during the build process.  If alternative configurations must be +selected +adaptively at run-time then all the code for each possible +configuration +must be linked in statically, and appropriate mechanisms used to +re-target +a logical name dynamically to each particular configuration (e.g., +different +configurations for different system modes). +
+  +
+  +
+
+
+


+Figure 5. CIAO Dynamic vs Static Configuration

+
+

+4. Status of CIAO Static Configuration

+The initial version of the CIAO static configurator is available under +$CIAO_ROOT/tools/static_configurator. +

To run the static configurator, +

+

Static_Assembly_Parser -a <.cad file> +

+

This will generate three files - +

+

Static_CCM_App.cpp - this file contains the main +program +which instantiates the component server and invokes the static +configuration +engine to create containers, homes, etc. +

+

Static_CCM_App.mpc - this file contains the +necessary +files for building the static application. You have to manually change +this file so as to include files that are not known to the static +configurator. +

+

Static_Assembly_Config.h - this file contains the +C++ +intermediate representation of all the information in the .cad, .csd +and +.ssd XML files. +

+

Example - An example +run is shown using the BasicSP +scenario. +

+

5. Future work

+

The current implementation does not have support for multiple +component +servers running on multiple processors. Multiprocessor scenario +involves +coordination and synchronization among the component servers running on +different processors. There has to be some kind of a mediator which +determines +that all components are instantiated before connections can be made +among +them.
+
+  +

+ + diff --git a/modules/CIAO/docs/static_ciao_index.html b/modules/CIAO/docs/static_ciao_index.html new file mode 100755 index 00000000000..627e07c65ca --- /dev/null +++ b/modules/CIAO/docs/static_ciao_index.html @@ -0,0 +1,23 @@ + + + + + +New Page 1 + + + + + + + + + <body> + + <p>This page uses frames, but your browser doesn't support them.</p> + + </body> + + + + diff --git a/modules/CIAO/docs/static_ciao_toc.html b/modules/CIAO/docs/static_ciao_toc.html new file mode 100755 index 00000000000..35adb51ec1c --- /dev/null +++ b/modules/CIAO/docs/static_ciao_toc.html @@ -0,0 +1,26 @@ + + + + + + + CIAO Static Configuration + + + + +

CIAO Static Configuration Documentation

+ +
    + +
  1. Introduction
  2. +
  3. Current CIAO Configuration +Architecture
  4. +
  5. Static Configuration +Approach
  6. +
  7. Status of CIAO Static Configuration
    +Example
  8. +
  9. Future work
  10. +
+ + 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 @@ + + + + + + + BasicSP example using CIAO Static Configurator + + + +This example illustrates +how to use the CIAO static configurator for building applications +statically. +For an example using RTCORBA policies, see BasicSP with RTCORBA extensions. +From the BasicSP directory do +the +following. +

> cd descriptors +
+> $CIAO_ROOT/tools/static_configurator/Static_Assembly_Parser +-a BasicSP.cad +

+

The following files are generated - +

+

Static_Assembly_Config.h +
+Static_CCM_App.cpp +
+Static_CCM_App.mpc +

+

Static_Assembly_Config.h +contains +the intermediate representation of all the parsed component and +assembly +information obtained from the XML files. Static_CCM_App.cpp  +contains the main driver application. Here a runtime static +configuration engine is used to create containers, homes, +components, +etc and then establish necessary connections between the components. In +the BasicSP example, an external controller  (see $CIAO_ROOT/examples/OEP/BasicSP/README) +is used to start or stop a pulser. The generated main driver +application +(Static_CCM_App.cpp) is modified +to add code to trigger the pulser object on. The generated .mpc file is +modified +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. +

+

Now the static build files can be generated by running the mpc +utility. +

+

> cd .. +
+> $ACE_ROOT/bin/mpc -static Static_CCM_App.mpc +

+

Static_Assembly_Config.h +
+#include "Static_Assembly.h" +

+

#include "CCM_ContainerC.h" +
+#include "Container_Base.h" +

+

//Containers +
+CIAO::Static_Config::ContainerAttributes +containers_table_[]= +
+{ +
+ {"", 0} +
+}; +
+  +

+

extern "C" +::Components::HomeExecutorBase_ptr +createECHome_Impl (void); +
+extern "C" ::PortableServer::Servant +createECHome_Servant +
+  (::Components::HomeExecutorBase_ptr +p, +
+  ::CIAO::Session_Container *c +
+  ACE_ENV_ARG_DECL_WITH_DEFAULTS); +
+extern "C" ::Components::HomeExecutorBase_ptr +createBMDeviceHome_Impl (void); +
+extern "C" ::PortableServer::Servant +createBMDeviceHome_Servant +
+  (::Components::HomeExecutorBase_ptr +p, +
+  ::CIAO::Session_Container *c +
+  ACE_ENV_ARG_DECL_WITH_DEFAULTS); +
+extern "C" ::Components::HomeExecutorBase_ptr +createBMClosedEDHome_Impl (void); +
+extern "C" ::PortableServer::Servant +createBMClosedEDHome_Servant +
+  (::Components::HomeExecutorBase_ptr +p, +
+  ::CIAO::Session_Container *c +
+  ACE_ENV_ARG_DECL_WITH_DEFAULTS); +
+extern "C" ::Components::HomeExecutorBase_ptr +createBMDisplayHome_Impl (void); +
+extern "C" ::PortableServer::Servant +createBMDisplayHome_Servant +
+  (::Components::HomeExecutorBase_ptr +p, +
+  ::CIAO::Session_Container *c +
+  ACE_ENV_ARG_DECL_WITH_DEFAULTS); +
+//Homes +
+CIAO::Static_Config::HomeAttributes +homes_table_[]= +
+{ +
+ {"a_ECHome", +"DCE:3148F760-F2ED-4204-A775-6B972C10E8CB", +"createECHome_Impl", createECHome_Impl, +"DCE:75309233-0E0A-4cfb-B186-3E99F69B1D40", +"createECHome_Servant", createECHome_Servant, 0, 0 }, +
+ {"a_BMDeviceHome", +"DCE:82C2B032-37F0-4315-A59F-7020D3264E4D", +"createBMDeviceHome_Impl", createBMDeviceHome_Impl, +"DCE:93D254CF-9538-44e8-BB98-AABCD134ADD3", +"createBMDeviceHome_Servant", createBMDeviceHome_Servant, 0, 0 }, +
+ {"a_BMClosedEDHome", +"DCE:8E6C468D-A39F-46b4-962B-265F1AA8D538", +"createBMClosedEDHome_Impl", createBMClosedEDHome_Impl, +"DCE:CDC06FCA-50FC-43ca-8ECC-BEFBD33FEE78", +"createBMClosedEDHome_Servant", createBMClosedEDHome_Servant, 0, 0 }, +
+ {"a_BMDisplayHome", +"DCE:8E92655E-CA07-46C8-B127-0F0872A8CC29", +"createBMDisplayHome_Impl", createBMDisplayHome_Impl, +"DCE:D7984625-8561-431d-9927-4E498B317C02", +"createBMDisplayHome_Servant", createBMDisplayHome_Servant, 0, 0 } +
+}; +
+  +

+

//Components +
+CIAO::Static_Config::ComponentAttributes +components_table_[]= +
+{ +
+ {"a_EC", 0, 0, 0 }, +
+ {"a_BMDevice", -1, -1, 1 }, +
+ {"a_BMClosedED", -1, -1, 2 }, +
+ {"a_BMDisplay", -1, -1, 3 } +
+}; +
+  +

+

//Component Registrations +
+CIAO::Assembly_Placement::componentinstantiation::Register_Info +component_registrations_table_[]= +
+{ +
+ {CIAO::Assembly_Placement::componentinstantiation::COMPONENT, +CIAO::Assembly_Placement::componentinstantiation::IORFILE, "", "ec.ior" +} +
+}; +
+  +

+

//Connections +
+CIAO::Static_Config::ConnectionAttributes +connections_table_[]= +
+{ +
+ {CIAO::Assembly_Connection::PUBLISHER_CONSUMER, +"", "timeout", 0, 1, 0, 0 }, +
+ {CIAO::Assembly_Connection::PUBLISHER_CONSUMER, +"", "data_available", 3, 4, 0, 0 }, +
+ {CIAO::Assembly_Connection::PUBLISHER_CONSUMER, +"", "out_avail", 6, 7, 0, 0 }, +
+ {CIAO::Assembly_Connection::INTERFACE, +"", "datain", 9, 10, 0, 0 }, +
+ {CIAO::Assembly_Connection::INTERFACE, +"", "comp_data", 12, 13, 0, 0 } +
+}; +
+  +

+

//Resolver Infos +
+CIAO::Static_Config::ResolveInfoAttributes +resolvers_table_[]= +
+{ +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_EC", -1, 0 }, +
+ {CIAO::Assembly_Connection::CONSUMER, +"timeout", 2, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDevice", -1, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDevice", -1, 0 }, +
+ {CIAO::Assembly_Connection::CONSUMER, +"in_avail", 5, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 }, +
+ {CIAO::Assembly_Connection::CONSUMER, +"data_ready", 8, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDisplay", -1, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 }, +
+ {CIAO::Assembly_Connection::PROVIDER, +"data_read", 11, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDevice", -1, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDisplay", -1, 0 }, +
+ {CIAO::Assembly_Connection::PROVIDER, +"dataout", 14, 0 }, +
+ {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 } +
+}; +

+

Static_CCM_App.cpp +
+#include "ComponentServer_Impl.h" +
+#include "CIAO_ServersC.h" +
+#include "Server_init.h" +
+#include "Static_Configurator.h" +
+#include "ace/SString.h" +
+#include "ace/Get_Opt.h" +

+

#include "Static_Assembly_Config.h" +

+

char *ior_file_name_ = "comp_serv.ior"; +

+

int +
+parse_args (int argc, char *argv[]) +
+{ +
+  ACE_Get_Opt get_opts (argc, argv, +"k:o:"); +
+  int c; +

+

  while ((c = get_opts ()) != -1) +
+    switch (c) +
+      { +
+      case +'o':  +// get the file name to write to +
+       +ior_file_name_ += get_opts.opt_arg (); +
+      break; +

+

      case +'?':  +// display help for use of the server. +
+      default: +
+        +ACE_ERROR_RETURN ((LM_ERROR, +
+                           +"usage:  %s\n" +
+                           +"-o <ior_output_file>\n" +
+                           +"\n", +
+                           +argv [0]), +
+                          +-1); +
+      } +

+

  return 0; +
+} +
+  +

+

int +
+main (int argc, char *argv[]) +
+{ +
+  ACE_TRY_NEW_ENV +
+    { +
+      // Initialize +orb +
+      CORBA::ORB_var +orb = CORBA::ORB_init (argc, +
+                                            +argv, +
+                                            +0 +
+                                            +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      +CIAO::Server_init +(orb.in ()); +

+

      if +(parse_args +(argc, argv) != 0) +
+        +return -1; +

+

      // Get +reference +to Root POA. +
+      +CORBA::Object_var +obj +
+        += orb->resolve_initial_references ("RootPOA" +
+                                           +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      +PortableServer::POA_var +poa +
+        += PortableServer::POA::_narrow (obj.in () +
+                                        +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      // Activate +POA manager +
+      +PortableServer::POAManager_var +mgr +
+        += poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      +mgr->activate +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      +CIAO::ComponentServer_Impl +*comserv_servant; +

+

      +CIAO::Static_Configurator +configurator; +
+      int +containers_table_size += +
+        +sizeof +(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes); +
+      int +homes_table_size += +
+        +sizeof (homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes); +
+      int +components_table_size += +
+        +sizeof +(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes); +
+      int +component_registrations_table_size += +
+        +sizeof +(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info); +
+      int +connections_table_size += +
+        +sizeof +(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes); +
+      int +resolvers_table_size += +
+        +sizeof +(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes); +

+

      +CIAO::HOMECREATOR_FUNCPTR_MAP +home_creator_fptr_map; +
+      +CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP +homesvnt_creator_fptr_map; +
+      +CIAO::Static_Config_EntryPoints_Maps +maps; +
+      +maps.home_creator_funcptr_map_ += &home_creator_fptr_map; +
+      +maps.home_servant_creator_funcptr_map_ += &homesvnt_creator_fptr_map; +

+

      int i=0; +
+      for (i=0; +i<homes_table_size; ++i) +
+        +{ +
+          +home_creator_fptr_map.bind (homes_table_[i].executor_entrypt_, +
+                                      +homes_table_[i].executor_fptr_); +

+

          +homesvnt_creator_fptr_map.bind (homes_table_[i].servant_entrypt_, +
+                                          +homes_table_[i].servant_fptr_); +
+        +} +

+

      +ACE_NEW_RETURN +(comserv_servant, +
+                      +CIAO::ComponentServer_Impl (orb.in (), +
+                                                  +poa.in (), +
+                                                  +1, +
+                                                  +&maps), +
+                      +-1); +

+

      +PortableServer::ServantBase_var +safe_servant (comserv_servant); +

+

      +Components::ConfigValues +configs; +

+

      +comserv_servant->init +(configs +
+                             +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      // +Configuring +ComponentServer. +
+      +PortableServer::ObjectId_var +cs_oid +
+        += poa->activate_object (comserv_servant +
+                                +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      obj = +poa->id_to_reference +(cs_oid.in () +
+                                  +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      +Components::Deployment::ComponentServer_var +comserv_obj = +
+        +Components::Deployment::ComponentServer::_narrow (obj.in () +
+                                                          +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      if +(CORBA::is_nil +(comserv_obj.in ())) +
+        +ACE_ERROR_RETURN ((LM_ERROR, "Unable to activate ComponentServer +object\n"), +-1); +
+  +

+

      +Components::Deployment::ServerActivator_var +activator; +
+      +Components::ConfigValues_var +config = new Components::ConfigValues; +

+

      +comserv_servant->set_objref +(activator.in (), +
+                                   +config, +
+                                   +comserv_obj.in () +
+                                   +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

configurator.configure +(orb.in (), +
+                              +comserv_obj.in (), +
+                              +containers_table_, +
+                              +containers_table_size, +
+                              +homes_table_, +
+                              +homes_table_size, +
+                              +components_table_, +
+                              +components_table_size, +
+                              +component_registrations_table_, +
+                              +component_registrations_table_size, +
+                              +connections_table_, +
+                              +connections_table_size, +
+                              +resolvers_table_, +
+                              +resolvers_table_size); +

+

      +CORBA::String_var +str = orb->object_to_string (comserv_obj.in () +
+                                                     +ACE_ENV_ARG_PARAMETER); +

+

      +CIAO::Utility::write_IOR +(ior_file_name_, str.in ()); +
+      ACE_DEBUG +((LM_INFO, "ComponentServer IOR: %s\n", str.in ())); +

+

      ACE_DEBUG +((LM_DEBUG, +
+                  +"Running ComponentServer...\n")); +

+

      // Run the +main event loop for the ORB. +
+      orb->run +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      ACE_TRY_CHECK +
+    } +
+  ACE_CATCHANY +
+    { +
+      +ACE_PRINT_EXCEPTION +(ACE_ANY_EXCEPTION, +
+                           +"server::main \n"); +
+      return 1; +
+    } +
+  ACE_ENDTRY; +

+

  return 0; +
+} +

+

Static_CCM_App.mpc +
+project(Static_CCM_App) : ciao_server, +ciao_client, +rtcorba, rtportableserver, iortable, acexml { +
+includes += +$(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer +
+includes += +$(ACE_ROOT)/TAO/CIAO/tools/static_configurator +
+libs += CIAO_XML_Helpers Static_Configurator +
+after += CIAO_XML_Helpers Static_Configurator +
+  +

+

libs += EC_exec +
+after += EC_exec +
+libs += EC_svnt +
+after += EC_svnt +
+libs += BMDevice_exec +
+after += BMDevice_exec +
+libs += BMDevice_svnt +
+after += BMDevice_svnt +
+libs += BMClosedED_exec +
+after += BMClosedED_exec +
+libs += BMClosedED_svnt +
+after += BMClosedED_svnt +
+libs += BMDisplay_exec +
+after += BMDisplay_exec +
+libs += BMDisplay_svnt +
+after += BMDisplay_svnt +
+   Source_Files { +
+       +Static_CCM_App.cpp +
+    } +

+

    IDL_Files { +
+    } +
+} +

+

Modified +Static_CCM_App.cpp
+

+

(Highlighted text is +manually added to the +generated .cpp file)
+
+
#include "ComponentServer_Impl.h" +
+#include "CIAO_ServersC.h" +
+#include "Server_init.h" +
+#include "Static_Configurator.h" +
+#include "ace/SString.h" +
+#include "ace/Get_Opt.h" +

+

#include "Static_Assembly_Config.h" +

+

char *ior_file_name_ = "comp_serv.ior"; +
+int rate = 2; +

+

int +
+parse_args (int argc, char *argv[]) +
+{ +
+  ACE_Get_Opt get_opts (argc, argv, "k:o:"); +
+  int c; +

+

  while ((c = get_opts ()) != -1) +
+    switch (c) +
+      { +
+      case 'o':  // get the file +name to write to +
+       ior_file_name_ = +get_opts.opt_arg +(); +
+      break; +

+

      case '?':  // display help +for +use of the server. +
+      default: +
+        ACE_ERROR_RETURN +((LM_ERROR, +
+                           +"usage:  %s\n" +
+                           +"-o <ior_output_file>\n" +
+                           +"\n", +
+                           +argv [0]), +
+                          +-1); +
+      } +

+

  return 0; +
+} +
+  +

+

int +
+main (int argc, char *argv[]) +
+{ +
+  ACE_TRY_NEW_ENV +
+    { +
+      // Initialize orb +
+      CORBA::ORB_var orb = CORBA::ORB_init +(argc, +
+                                            +argv, +
+                                            +0 +
+                                            +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      CIAO::Server_init (orb.in ()); +

+

      if (parse_args (argc, argv) != 0) +
+        return -1; +

+

      // Get reference to Root POA. +
+      CORBA::Object_var obj +
+        = +orb->resolve_initial_references +("RootPOA" +
+                                           +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      PortableServer::POA_var poa +
+        = +PortableServer::POA::_narrow +(obj.in () +
+                                        +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      // Activate POA manager +
+      PortableServer::POAManager_var mgr +
+        = poa->the_POAManager +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      mgr->activate +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      CIAO::ComponentServer_Impl +*comserv_servant; +

+

      CIAO::Static_Configurator +configurator; +
+      int containers_table_size = +
+        sizeof +(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes); +
+      int homes_table_size = +
+        sizeof +(homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes); +
+      int components_table_size = +
+        sizeof +(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes); +
+      int +component_registrations_table_size += +
+        sizeof +(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info); +
+      int connections_table_size = +
+        sizeof +(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes); +
+      int resolvers_table_size = +
+        sizeof +(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes); +

+

      CIAO::HOMECREATOR_FUNCPTR_MAP +home_creator_fptr_map; +
+      CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP +homesvnt_creator_fptr_map; +
+      CIAO::Static_Config_EntryPoints_Maps +maps; +
+      maps.home_creator_funcptr_map_ = +&home_creator_fptr_map; +
+      +maps.home_servant_creator_funcptr_map_ += &homesvnt_creator_fptr_map; +

+

      int i=0; +
+      for (i=0; i<homes_table_size; +++i) +
+        { +
+          +home_creator_fptr_map.bind +(homes_table_[i].executor_entrypt_, +
+                                      +homes_table_[i].executor_fptr_); +

+

          +homesvnt_creator_fptr_map.bind +(homes_table_[i].servant_entrypt_, +
+                                          +homes_table_[i].servant_fptr_); +
+        } +

+

      ACE_NEW_RETURN (comserv_servant, +
+                      +CIAO::ComponentServer_Impl (orb.in (), +
+                                                  +poa.in (), +
+                                                  +1, +
+                                                  +&maps), +
+                      +-1); +

+

      PortableServer::ServantBase_var +safe_servant +(comserv_servant); +

+

      Components::ConfigValues configs; +

+

      comserv_servant->init (configs +
+                             +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      // Configuring ComponentServer. +
+      PortableServer::ObjectId_var cs_oid +
+        = +poa->activate_object +(comserv_servant +
+                                +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      obj = poa->id_to_reference +(cs_oid.in +() +
+                                  +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      +Components::Deployment::ComponentServer_var +comserv_obj = +
+        +Components::Deployment::ComponentServer::_narrow +(obj.in () +
+                                                          +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      if (CORBA::is_nil (comserv_obj.in +())) +
+        ACE_ERROR_RETURN +((LM_ERROR, +"Unable to activate ComponentServer object\n"), -1); +
+  +

+

      +Components::Deployment::ServerActivator_var +activator; +
+      Components::ConfigValues_var config += new Components::ConfigValues; +

+

      comserv_servant->set_objref +(activator.in +(), +
+                                   +config, +
+                                   +comserv_obj.in () +
+                                   +ACE_ENV_ARG_PARAMETER); +
+      ACE_TRY_CHECK; +

+

      configurator.configure (orb.in (), +
+                              +comserv_obj.in (), +
+                              +containers_table_, +
+                              +containers_table_size, +
+                              +homes_table_, +
+                              +homes_table_size, +
+                              +components_table_, +
+                              +components_table_size, +
+                              +component_registrations_table_, +
+                              +component_registrations_table_size, +
+                              +connections_table_, +
+                              +connections_table_size, +
+                              +resolvers_table_, +
+                              +resolvers_table_size); +

+

      CORBA::String_var str = +orb->object_to_string +(comserv_obj.in () +
+                                                     +ACE_ENV_ARG_PARAMETER); +

+

      CIAO::Utility::write_IOR +(ior_file_name_, +str.in ()); +
+      ACE_DEBUG ((LM_INFO, +"ComponentServer +IOR: %s\n", str.in ())); +

+

      ACE_DEBUG ((LM_DEBUG, +
+                  +"Running ComponentServer...\n")); +

+

      +CORBA::Object_var +pulser_obj +
+        += orb->string_to_object ("file://ec.ior" +
+                                 +ACE_ENV_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      +BasicSP::EC_var +pulser +
+        += BasicSP::EC::_narrow (pulser_obj.in () +
+                                +ACE_ENV_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      if +(CORBA::is_nil +(pulser.in ())) +
+        +ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire 'EC' objref\n"), -1); +

+

      +pulser->hertz +(rate +
+                     +ACE_ENV_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      +ACE_DEBUG +((LM_DEBUG, "Start up the Event services\n")); +

+

      +pulser->start +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      // Run the main event loop for +the +ORB. +
+      orb->run +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      ACE_TRY_CHECK +
+    } +
+  ACE_CATCHANY +
+    { +
+      ACE_PRINT_EXCEPTION +(ACE_ANY_EXCEPTION, +
+                           +"server::main \n"); +
+      return 1; +
+    } +
+  ACE_ENDTRY; +

+

  return 0; +
+} +

+

Modified +Static_CCM_App.mpc
+

+

(Highlighted text is +manually added to the +generated .cpp file)
+
+
project(Static_CCM_App) : ciao_server, ciao_client, +rtcorba, +rtportableserver, +iortable, acexml { +
+includes += $(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer +
+includes += $(ACE_ROOT)/TAO/CIAO/tools/static_configurator +
+libs += CIAO_XML_Helpers Static_Configurator +
+after += CIAO_XML_Helpers Static_Configurator +

+

libs += BasicSP_stub BasicSP_svnt +
+after += BasicSP_stub BasicSP_svnt +
+libs += EC_exec +
+after += EC_exec +
+libs += EC_svnt EC_stub +
+after += EC_svnt EC_stub +
+libs += BMDevice_exec +
+after += BMDevice_exec +
+libs += BMDevice_svnt BMDevice_stub +
+after += BMDevice_svnt BMDevice_stub +
+libs += BMClosedED_exec +
+after += BMClosedED_exec +
+libs += BMClosedED_svnt BMClosedED_stub +
+after += BMClosedED_svnt BMClosedED_stub +
+libs += BMDisplay_exec +
+after += BMDisplay_exec +
+libs += BMDisplay_svnt BMDisplay_stub +
+after += BMDisplay_svnt BMDisplay_stub +

+

   Source_Files { +
+       Static_CCM_App.cpp +
+    } +

+

    IDL_Files { +
+    } +
+} +
+  +

+ + diff --git a/modules/CIAO/docs/static_config_rtexample.html b/modules/CIAO/docs/static_config_rtexample.html new file mode 100644 index 00000000000..2e87e5aabe1 --- /dev/null +++ b/modules/CIAO/docs/static_config_rtexample.html @@ -0,0 +1,1079 @@ + + + + + + + BasicSP example using CIAO Static Configurator + + + +This example illustrates +how to use the CIAO static configurator to build applications using +RTCORBA policies statically. +From the BasicSP directory do +the +following. +

> cd descriptors +
+> $CIAO_ROOT/tools/static_configurator/Static_Assembly_Parser +-a BasicSP-rt.cad +

+

The following files are generated - +

+

Static_Assembly_Config.h +
+Static_CCM_App.cpp +
+Static_CCM_App.mpc +

+

Static_Assembly_Config.h +contains +the intermediate representation of all the parsed component and +assembly +information obtained from the XML files. Static_CCM_App.cpp  +contains the main driver application. Here a runtime static +configuration engine is used to create containers, homes, +components, +etc and then establish necessary connections between the components. +The configuration engine is also used to configure +the containers and RTORB with the appropriate RTCORBA policies +specified declaratively in the .rtcad file. In +the BasicSP example, an external controller  (see $CIAO_ROOT/examples/OEP/BasicSP/README) +is used to start or stop a pulser. The generated main driver +application +(Static_CCM_App.cpp) is modified +to add code to trigger the pulser object on. The generated .mpc file is +modified +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. +

+

Now the static build files can be generated by running the mpc +utility. +

+

> cd .. +
+> $ACE_ROOT/bin/mpc -static Static_CCM_App.mpc +

+

Static_Assembly_Config.h +
+#include "Static_Assembly.h"
+
+#include "CCM_ContainerC.h"
+#include "Container_Base.h"
+
+//Containers
+CIAO::Static_Config::ContainerAttributes +containers_table_[]=
+{
+    {"POLICY_1", +0},
+    {"", 0}
+};
+
+
+extern "C" +::Components::HomeExecutorBase_ptr createECHome_Impl (void);
+extern "C" +::PortableServer::Servant createECHome_Servant
+    +    (::Components::HomeExecutorBase_ptr p,
+    +    ::CIAO::Session_Container *c
+    +    ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+extern "C" +::Components::HomeExecutorBase_ptr createBMDeviceHome_Impl (void);
+extern "C" +::PortableServer::Servant createBMDeviceHome_Servant
+    +    (::Components::HomeExecutorBase_ptr p,
+    +    ::CIAO::Session_Container *c
+    +    ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+extern "C" +::Components::HomeExecutorBase_ptr createBMClosedEDHome_Impl (void);
+extern "C" +::PortableServer::Servant createBMClosedEDHome_Servant
+    +    (::Components::HomeExecutorBase_ptr p,
+    +    ::CIAO::Session_Container *c
+    +    ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+extern "C" +::Components::HomeExecutorBase_ptr createBMDisplayHome_Impl (void);
+extern "C" +::PortableServer::Servant createBMDisplayHome_Servant
+    +    (::Components::HomeExecutorBase_ptr p,
+    +    ::CIAO::Session_Container *c
+    +    ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+//Homes
+CIAO::Static_Config::HomeAttributes +homes_table_[]=
+{
+    {"a_ECHome", +"DCE:3148F760-F2ED-4204-A775-6B972C10E8CB", "createECHome_Impl", +createECHome_Impl, "DCE:75309233-0E0A-4cfb-B186-3E99F69B1D40", +"createECHome_Servant", createECHome_Servant, 0, 0 },
+    +{"a_BMDeviceHome", "DCE:82C2B032-37F0-4315-A59F-7020D3264E4D", +"createBMDeviceHome_Impl", createBMDeviceHome_Impl, +"DCE:93D254CF-9538-44e8-BB98-AABCD134ADD3", +"createBMDeviceHome_Servant", createBMDeviceHome_Servant, 0, 0 },
+    +{"a_BMClosedEDHome", "DCE:8E6C468D-A39F-46b4-962B-265F1AA8D538", +"createBMClosedEDHome_Impl", createBMClosedEDHome_Impl, +"DCE:CDC06FCA-50FC-43ca-8ECC-BEFBD33FEE78", +"createBMClosedEDHome_Servant", createBMClosedEDHome_Servant, 0, 0 },
+    +{"a_BMDisplayHome", "DCE:8E92655E-CA07-46C8-B127-0F0872A8CC29", +"createBMDisplayHome_Impl", createBMDisplayHome_Impl, +"DCE:D7984625-8561-431d-9927-4E498B317C02", +"createBMDisplayHome_Servant", createBMDisplayHome_Servant, 1, 0 }
+};
+
+
+//Components
+CIAO::Static_Config::ComponentAttributes +components_table_[]=
+{
+    {"a_EC", 0, 0, +0 },
+    {"a_BMDevice", +-1, -1, 1 },
+    +{"a_BMClosedED", -1, -1, 2 },
+    +{"a_BMDisplay", -1, -1, 3 }
+};
+
+
+//Component Registrations
+CIAO::Assembly_Placement::componentinstantiation::Register_Info +component_registrations_table_[]=
+{
+    +{CIAO::Assembly_Placement::componentinstantiation::COMPONENT, +CIAO::Assembly_Placement::componentinstantiation::IORFILE, "", "ec.ior" +}
+};
+
+
+//Connections
+CIAO::Static_Config::ConnectionAttributes +connections_table_[]=
+{
+    +{CIAO::Assembly_Connection::PUBLISHER_CONSUMER, "", "timeout", 0, 1, 0, +0 },
+    +{CIAO::Assembly_Connection::PUBLISHER_CONSUMER, "", "data_available", +3, 4, 0, 0 },
+    +{CIAO::Assembly_Connection::PUBLISHER_CONSUMER, "", "out_avail", 6, 7, +0, 0 },
+    +{CIAO::Assembly_Connection::INTERFACE, "", "datain", 9, 10, 0, 0 },
+    +{CIAO::Assembly_Connection::INTERFACE, "", "comp_data", 12, 13, 0, 0 }
+};
+
+
+//Resolver Infos
+CIAO::Static_Config::ResolveInfoAttributes +resolvers_table_[]=
+{
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_EC", -1, 0 },
+    +{CIAO::Assembly_Connection::CONSUMER, "timeout", 2, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDevice", -1, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDevice", -1, 0 },
+    +{CIAO::Assembly_Connection::CONSUMER, "in_avail", 5, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 },
+    +{CIAO::Assembly_Connection::CONSUMER, "data_ready", 8, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDisplay", -1, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 },
+    +{CIAO::Assembly_Connection::PROVIDER, "data_read", 11, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDevice", -1, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDisplay", -1, 0 },
+    +{CIAO::Assembly_Connection::PROVIDER, "dataout", 14, 0 },
+    +{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 }
+};
+
+
+//Thread Pool
+CIAO::Static_Config::ThreadPoolAttributes +thread_pool_table_[]=
+{
+    +{"common_pool", 0, 10, 20, 1, 0, 0, 0},
+    +{"high_prio_pool", 0, 2, 2, 3, 0, 0, 0}
+};
+
+
+//Lanes
+CIAO::Static_Config::LaneAttributes +lane_table_[]=
+{
+    {1, 100, 300},
+    {2, 2, 2},
+    {3, 1, 2},
+    {1, 10, 30},
+    {2, 3, 3},
+    {3, 1, 2}
+};
+
+
+//ThreadPoolLanes
+CIAO::Static_Config::ThreadPoolLanesAttributes +thread_pool_lanes_table_[]=
+{
+    +{"shared_pool", 0, 0, 2, 0, 0, 0, 0},
+    {"laned_pool", +0, 3, 5, 0, 0, 0, 0}
+};
+
+
+//Bands
+CIAO::Static_Config::BandAttributes +band_table_[]=
+{
+    {1, 1},
+    {2, 2},
+    {3, 3000}
+};
+
+
+//PriorityBands
+CIAO::Static_Config::PriorityBandsAttributes +priority_band_table_[]=
+{
+    +{"common_conn", 0, 2}
+};
+
+
+//Policy Configs
+CIAO::Static_Config::PolicyConfigAttributes +policy_config_table_[]=
+{
+    +{RTCORBA::PRIORITY_MODEL_POLICY_TYPE, "", RTCORBA::SERVER_DECLARED, 2},
+    +{RTCORBA::THREADPOOL_POLICY_TYPE, "shared_pool", /*dummy variable*/ +RTCORBA::CLIENT_PROPAGATED, 0},
+    +{RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE, "common_conn", +/*dummy variable*/ RTCORBA::CLIENT_PROPAGATED, 0},
+    +{RTCORBA::THREADPOOL_POLICY_TYPE, "common_pool", /*dummy variable*/ +RTCORBA::CLIENT_PROPAGATED, 0},
+    +{RTCORBA::PRIORITY_MODEL_POLICY_TYPE, "", RTCORBA::CLIENT_PROPAGATED, 2}
+};
+
+
+//Policy Set
+CIAO::Static_Config::PolicySetAttributes  +policy_set_table_[]=
+{
+    {"POLICY_1", +0, 2},
+    {"POLICY_2", +3, 4}
+};
+
+

+Modified +Static_CCM_App.cpp
+

(Highlighted text is manually added to the +generated .cpp file)

+

#include "RTServer_Impl.h"
+#include "CIAO_ServersC.h"
+#include "Server_init.h"
+#include "Static_Configurator.h"
+#include "ace/SString.h"
+#include "ace/Get_Opt.h"
+#include +"Static_Assembly_Config.h"
+#include +"tao/RTPortableServer/RTPortableServer.h"
+#include +"EC/ECC.h"
+
+char *ior_file_name_ = +"comp_serv.ior";
+int +rate = 2;
+int
+parse_args (int argc, char +*argv[])
+{
+  ACE_Get_Opt get_opts +(argc, argv, "k:o:");
+  int c;
+
+  while ((c = get_opts ()) +!= -1)
+    switch (c)
+    {
+    case +'o':  // get the file name to write to
+     +ior_file_name_ = get_opts.opt_arg ();
+     break;
+
+    case +'?':  // display help for use of the server.
+    default:
+       +ACE_ERROR_RETURN ((LM_ERROR,
+                          +"usage:  %s\n"
+                          +"-o <ior_output_file>\n"
+                          +"\n",
+                          +argv [0]),
+                         +-1);
+     }
+
+  return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+     // +Initialize orb
+     +CORBA::ORB_var orb = CORBA::ORB_init (argc,
+                                           +argv
+                                           +ACE_ENV_ARG_PARAMETER);
+
+     +ACE_TRY_CHECK;
+
+     +CIAO::Server_init (orb.in ());
+
+     if +(parse_args (argc, argv) != 0)
+        +return -1;
+
+      // +Get reference to Root POA.
+      +CORBA::Object_var object =
+        +orb->resolve_initial_references ("RootPOA"
+                                         +ACE_ENV_ARG_PARAMETER);
+     +ACE_TRY_CHECK;
+     +PortableServer::POA_var root_poa =
+     +PortableServer::POA::_narrow (object.in ()
+      +            +    ACE_ENV_ARG_PARAMETER);
+     // Get +reference to RTORB.
+      +object =
+        +orb->resolve_initial_references ("RTORB"
+                                         +ACE_ENV_ARG_PARAMETER);
+      +ACE_TRY_CHECK;
+
+      +RTCORBA::RTORB_var rt_orb =
+        +RTCORBA::RTORB::_narrow (object.in ()
+                                 +ACE_ENV_ARG_PARAMETER);
+      +ACE_TRY_CHECK;
+
+      // +Activate POA manager
+      +PortableServer::POAManager_var poa_manager =
+        +root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
+      +ACE_TRY_CHECK;(Highlighted +files are manually added to the generated mpc file)
+
+      +poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+      +ACE_TRY_CHECK;
+
+      +CIAO::RTServer::RTComponentServer_Impl *comserv_servant;
+      +CIAO::Static_Configurator configurator;
+
+      +int containers_table_size =
+        +sizeof +(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes);
+      +int homes_table_size =
+        +sizeof (homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes);
+      +int components_table_size =
+        +sizeof +(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes);
+      +int component_registrations_table_size =
+        +sizeof +(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info);
+      +int connections_table_size =
+        +sizeof +(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes);
+      +int resolvers_table_size =
+        +sizeof +(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes);
+      +int thread_pool_table_size=
+        +sizeof(thread_pool_table_)/sizeof(CIAO::Static_Config::ThreadPoolAttributes);
+      +int thread_pool_lanes_table_size=
+        +sizeof(thread_pool_lanes_table_)/sizeof(CIAO::Static_Config::ThreadPoolLanesAttributes);
+      +int priority_band_table_size=
+        +sizeof(priority_band_table_)/sizeof(CIAO::Static_Config::PriorityBandsAttributes);
+      +int policy_set_table_size=
+        +sizeof(policy_set_table_)/sizeof(CIAO::Static_Config::PolicySetAttributes);
+
+      +CIAO::HOMECREATOR_FUNCPTR_MAP home_creator_fptr_map;
+      +CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP homesvnt_creator_fptr_map;
+      +CIAO::Static_Config_EntryPoints_Maps maps;
+      +maps.home_creator_funcptr_map_ = &home_creator_fptr_map;
+      +maps.home_servant_creator_funcptr_map_ = &homesvnt_creator_fptr_map;
+
+      +int i=0;
+      +for (i=0; i<homes_table_size; ++i)
+        +{
+          +home_creator_fptr_map.bind (homes_table_[i].executor_entrypt_,
+                                      +homes_table_[i].executor_fptr_);
+
+          +homesvnt_creator_fptr_map.bind (homes_table_[i].servant_entrypt_,
+                                          +homes_table_[i].servant_fptr_);
+        +}
+
+      +ACE_NEW_RETURN (comserv_servant,
+                      +CIAO::RTServer::RTComponentServer_Impl (orb.in (),
+                                                              +rt_orb.in (),
+                                                              +root_poa.in (),
+                                                              +1,
+                                                              +&maps),
+                      +-1);
+
+      +PortableServer::ServantBase_var safe_servant +(comserv_servant);  
+
+      +Components::ConfigValues configs;
+
+      +configurator.config_rt_info(configs, +
+                                  +thread_pool_table_,
+                                  +thread_pool_table_size,
+                                  +lane_table_,
+                                  +thread_pool_lanes_table_,
+                                  +thread_pool_lanes_table_size,
+                                  +band_table_,
+                                  +priority_band_table_,
+                                  +priority_band_table_size,
+                                  +policy_config_table_,
+                                  +policy_set_table_,
+                                  +policy_set_table_size);
+
+     +comserv_servant->init (configs
+                            +ACE_ENV_ARG_PARAMETER);
+     +ACE_TRY_CHECK;
+     // +Configuring ComponentServer.
+     +PortableServer::ObjectId_var cs_oid
+        += root_poa->activate_object (comserv_servant
+                                     +ACE_ENV_ARG_PARAMETER);
+     +ACE_TRY_CHECK;
+
+     object = +root_poa->id_to_reference (cs_oid.in ()
+                                          +ACE_ENV_ARG_PARAMETER);
+     +ACE_TRY_CHECK;
+
+     +Components::Deployment::ComponentServer_var comserv_obj =
+        +Components::Deployment::ComponentServer::_narrow (object.in ()
+                                                          +ACE_ENV_ARG_PARAMETER);
+     +ACE_TRY_CHECK;
+
+     if +(CORBA::is_nil (comserv_obj.in ()))
+         +ACE_ERROR_RETURN ((LM_ERROR,
+                          +"Unable to activate RTComponentServer object\n"),
+                         +-1);
+
+      +Components::Deployment::ServerActivator_var activator;
+
+      // +We are just storing the original configuration here.
+      // +Currently, we don't really use this ConfigValues direclty.
+      +Components::ConfigValues_var more_config = new Components::ConfigValues;
+
+      +comserv_servant->set_objref (activator.in (),
+                                   +more_config.in (),
+                                   +comserv_obj.in ()
+                                   +ACE_ENV_ARG_PARAMETER);
+
+      +ACE_TRY_CHECK;
+
+      +configurator.configure +(orb.in (),
+                              +comserv_obj.in (),
+                              +containers_table_,
+                              +containers_table_size,
+                              +homes_table_,
+                              +homes_table_size,
+                              +components_table_,
+                              +components_table_size,
+                              +component_registrations_table_,
+                              +component_registrations_table_size,
+                              +connections_table_,
+                              +connections_table_size,
+                              +resolvers_table_,
+                              +resolvers_table_size);
+
+      +CORBA::String_var str = orb->object_to_string (comserv_obj.in ()
+                                                     +ACE_ENV_ARG_PARAMETER);
+
+      +CIAO::Utility::write_IOR (ior_file_name_, str.in ());
+      +ACE_DEBUG ((LM_INFO, "RTComponentServer IOR: %s\n", str.in ()));
+
+      +ACE_DEBUG ((LM_DEBUG,
+                  +"Running RTComponentServer...\n"));
+

+

      +CORBA::Object_var +pulser_obj +
+        += orb->string_to_object ("file://ec.ior" +
+                                 +ACE_ENV_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      +BasicSP::EC_var +pulser +
+        += BasicSP::EC::_narrow (pulser_obj.in () +
+                                +ACE_ENV_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      if +(CORBA::is_nil +(pulser.in ())) +
+        +ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire 'EC' objref\n"), -1); +

+

      +pulser->hertz +(rate +
+                     +ACE_ENV_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+

      +ACE_DEBUG +((LM_DEBUG, "Start up the Event services\n")); +

+

      +pulser->start +(ACE_ENV_SINGLE_ARG_PARAMETER); +
+      +ACE_TRY_CHECK; +

+


+      // +Run the main event loop for the ORB.
+      +orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
+      +ACE_TRY_CHECK
+    }
+   ACE_CATCHANY
+   {
+      +ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+                           +"server::main    \n");
+      +return 1;
+   }
+  ACE_ENDTRY;
+
+  return 0;
+}
+

+Modified +Static_CCM_App.mpc +
+
+(Highlighted files are manually added to the generated mpc file)

+
+project(Static_CCM_App) :  ciao_server, ciao_client, rtcorba, +rtportableserver, iortable, acexml{

+includes += +$(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer
+includes += +$(ACE_ROOT)/TAO/CIAO/tools/static_configurator
+includes += +$(ACE_ROOT)/TAO/CIAO/tools/RTComponentServer
+libs += RTComponent_Server +CIAO_XML_Helpers  Static_Configurator
+after += RTComponent_Server +CIAO_XML_Helpers  Static_Configurator
+ 
+libs ++= BasicSP_stub  BasicSP_svnt
+after ++= BasicSP_stub  BasicSP_svnt
+libs += EC_exec
+after += EC_exec
+libs += EC_svnt EC_stub
+after += EC_svnt EC_stub
+libs += BMDevice_exec
+after += BMDevice_exec
+libs += BMDevice_svnt BMDevice_stub
+after += BMDevice_svnt  BMDevice_stub
+libs += BMClosedED_exec
+after += BMClosedED_exec
+libs += BMClosedED_svnt BMClosedED_stub
+after += BMClosedED_svnt BMClosedED_stub
+libs += BMDisplay_exec
+after += BMDisplay_exec
+libs += BMDisplay_svnt BMDisplay_stub
+after += BMDisplay_svnt BMDisplay_stub
+ 
+   Source_Files {
+       +Static_CCM_App.cpp
+    }
+ 
+    IDL_Files {
+    }
+}
+
+ + diff --git a/modules/CIAO/docs/static_dance.html b/modules/CIAO/docs/static_dance.html new file mode 100644 index 00000000000..3bd6433e133 --- /dev/null +++ b/modules/CIAO/docs/static_dance.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + +

CIAO Static Configuration Support +with DanCE for Real-Time Platforms

+

1. Introduction

+

The dynamic packaging, assembly, and deployment mechanisms +currently available in CIAO are useful for application domains where +component metadata is less likely to be known a priori, where +implementation upgrades may need to be performed on-line, and where +platform features like loading and unloading dynamic libraries are +both available and useful. We have already incorporated static +configuration support for component configuration in CIAO on +platforms like VxWorks, as a set of optional strategies and +optimizations to the existing CIAO configuration capabilities (). In +this white paper, we discuss implementation details for extending the +static configuration capabilities as part of the new DanCE (D&C +support available with CIAO) framework.

+

The fundamental intuition in understanding our approach is that in +DRE systems the stages of the overall system lifecycle are similar to +those in more dynamic conventional component-oriented client-server +applications.However, in DRE systems several phases of the system +lifecycle are compressed into the compile-time and +system-initialization phases, so that (1) for testing and +verification purposes the set of components in an application can be +identified and analyzed before run-time, and (2) overheads for +run-time operation following initialization are reduced and made more +predictable. Furthermore, due to the nuances of the platforms +traditionally used for deploying DRE systems, not all features of +conventional platforms are available. Our approach therefore avoids +certain mechanisms that are either unavailable or too costly in terms +of performance. We follow these intuitions in our approach, taking +the existing configuration phases in CIAO and pushing several of them +earlier in the configuration lifecycle.

+

2. Current D&C in CIAO with DanCE

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


Figure 1. Current D&C process using DAnCE

+One of the key concerns while supporting the static configuration +within the DAnCE framework is to reuse the existing components in the +DAnCE framework as much as possible. Figure 1 shows the current D&C +process using the DAnCE framework. This is the standard D&C +process as specified in the CCM D&C specification.As seen from +the figure, there are multiple processes (Executor, ExecutionManager, +NodeManagers and NodeApplications) that are involved. +

3. Static Configuration with DanCE

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+


+

+

+


+

+


+

+


+

+


+

+


+

+


Figure 2. Static D&C in DAnCE

+

Figure 2 shows the static configuration approach in DAnCE. Here, +the flattened deployment plan (.cdp) is parsed offline by an offline +parser ($CIAO_ROOT/StaticConfigurator/StaticDAnCEParser) using the +same XML parser classes that the dynamic configuration uses. The +output of the parser is a C++ plan.h file, which contains the function +entry points for home and home servant creation. The assumption here +is that all the necessary (component implementations and other) +libraries are statically linked to the driver application (see a +template in +$CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl).

+

The driver application is essentially a NodeManager which can be +used to do deployment just the same as in DAnCE. To achieve maximum +reusability of the existing classes in the DAnCE framework, we use +the class hierarchy shown in Figure 3.

+
+ +


+Figure 3. New class hierarchy to accommodate static configuration +within DAnCE
+

+

3.Example

+

To run the static version of Hello example, do the following,
+

+
    +
  1. Build ACE+TAO+CIAO statically
  2. +
  3. Build $CIAO_ROOT/examples/Hello 
  4. +
  5. Generate the static function entrypoints (plan.h)
    + > cd +$CIAO_ROOT/examples/Hello/descriptors
    +> $CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEParser +-p flattened_deploymentplan_without_ns.cdp

    + > cp plan.h $CIAO_ROOT/DAnCE/StaticConfigurator/
    +
  6. +
  7. Build the static NodeManager for Hello example
    +> cd $CIAO_ROOT/DAnCE/StaticConfigurator

    + > cp StaticDAnCEApp.cpp.tmpl +StaticDAnCEApp.cpp
    + > cp +StaticDAnCEApp.mpc.tmpl StaticDAnCEApp.mpc
    +> $ACE_ROOT/bin/mwc.pl
    +> make
    +
  8. +
  9. Run the static node managers. Note that the ORBEndpoint values should +correspond to the ones in  +$CIAO_ROOT/examples/Hello/descriptors/TestNodeManagerMap.dat
    +> cd +$CIAO_ROOT/DAnCE/StaticConfigurator
    +> ./StaticDAnCEApp -ORBEndpoint iiop://localhost:60001 &
    +
    > ./StaticDAnCEApp +-ORBEndpoint iiop://localhost:60002 &
    +
  10. +
  11. Do the deployment. This is just the same as the non-static +version of DAnCE except that we have the NodeManagers already running +and need not spawn node managers. To accomplish this, change  $CIAO_ROOT/examples/Hello/descriptors/run_test_without_ns.pl +to *not* run the node manager +daemons.
    +
    > cd +$CIAO_ROOT/examples/Hello/descriptors
    +> ./
    run_test_without_ns.pl
  12. +
+
+

+ + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/01.html b/modules/CIAO/docs/tutorials/Quoter/Simple/01.html new file mode 100644 index 00000000000..2e168f6556d --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/01.html @@ -0,0 +1,374 @@ + + + + + + Getting Started + + + + + + + +

Step 1: Define your + interfaces and component types

+ +

+ +

 

+ +

Please make sure to read + the following article to under the Stock Quoter system + architecture before delving further into the + tutorial:

+ +

·       The + CORBA Component Model, Part 2: Defining Components with the IDL + 3.x Types

+ +

 

+ +

Directory + Structure:

+ +

The tutorial relies on + the following directory structure. Create Quoter and all its + subdirectories as shown below. We will describe the purpose of + these directories later in the tutorial.

+ +

Quoter

+ +

                 + |---- descriptors

+ +

                 + |---- Stock_Base

+ +

                 + |---- Distributor

+ +

                 + |---- Broker

+ +

 

+ +

Preliminaries:

+ +

·       + We use the Make Project Creator (MPC) throughout + this tutorial. Understanding MPC will aid you in understanding + this tutorial. For more information on MPC please look at the + following:

+ +

1.     MPC + Chapter.

+ +

2.     $ACE_ROOT/MPC/README

+ +

Interface Design:

+ +

·       + In the Quoter/Stock_Base sub-directory, + place an idl file Stock_Base.idl that you + could copy from here . + This file defines the interfaces and events that will be used by + both StockDistributor and StockBroker components. We put together + the common interface definitions so the base library can be + shared by both components, reducing the footprint of "real" + components.

+ +

·       + Next, we need to create a Make Project Creator + (MPC) file to generate the make files for us. From the + Quoter/Stock_Base subdirectory, type the following + command:

+ +

generate_component_mpc.pl + –n Stock_Base

+ +

The command above will generate + a Stock_Base.mpc file that contains two projects + Stock_Base_stub and Stock_Base_skel for the Stub + and Servant code respectively. The MPC file should look like + this.
+ Mind that "libout" and "libpaths" are added. This is done to make + the compilation of this example easier and at runtime, all deliveralbes + are in one directory. Beware that you need to add this + directory to your system path when running the executables (see page 4). +

+ +

Component Design:

+ +

Distributor:   

+ +

·       + In the Quoter/Distributor sub-directory, place an idl + file StockDistributor.idl that looks like this. This file defines + the StockDistributor component interfaces.

+ +

·       + Next, we need to create a Make Project Creator + (MPC) file to generate the make files for us. From the + Quoter/Distributor  sub-directory, type + the following command

+ +

generate_component_mpc.pl -p + Stock_Base -c StockDistributorDriver StockDistributor

+ +

The command above takes a few + optional parameters. The -p option indicates that the StockDistributor component has a dependency on + Stock_Base, the -c option + causes the script to generate MPC files for a simple driver + program. In this tutorial, we use a simple driver program to + demonstrate how a non-CCM applications can interact with + component applications.

+ +

The command above will generate + a StockDistributor.mpc file that contains several + projects that will build the Stub, Servant, and Executor code + respectively. +

·     + Next we write a simple driver program + (StockDistributorDriver.cpp) that will + control the StockDistributor component. + The simple driver program controls when the StockDistributor component publishes stock quotes, + the rates of publication, and when publication of stock quotes + stops. The simple driver program should look + like this.

+ +

·       + The generated MPC file + should look like this. Both "libout" and "libpaths" + are added again. +

+ +

Broker:

+ +

·       + In the Quoter/Broker sub-directory, place + an idl file StockBroker.idl that looks like this. This file defines the + StockBroker component interface.

+ +

·       + Next, we need to create a Make Project Creator + (MPC) file to generate the make files for us. From the + Quoter/Broker sub-directory, type the following + command:

+ +

generate_component_mpc.pl -p Stock_Base -c + StockBrokerDriver StockBroker

+ +

The command + above takes a few optional parameter. The -p option states that + the StockBroker component has a + dependency on Stock_Base, the + -c option causes the script to generates make files for a simple + driver program. In this tutorial, we use a simple driver program + to demonstrate how a non-CCM applications can interact with + Components.

+ +

The command + above will generate a StockBroker.mpc file that + contains several projects that will build the Stub, Servant, + and Executor code respectively. + +

·       + Next we write a simple driver program + (StockBrokerDriver.cpp) that would control + the StockBroker component. The simple + driver program controls what stocks the StockBroker component subscribes to. The simple + driver program should look like this.

+ +

·       + The generated + MPC file should look like this. Both "libout" and "libpaths" + are added again.

+ +


+ Note:

+ +

To understand the meaning of + different parameters passed to generate_component_mpc.plclick + here or type + the following command:

+ +

generate_component_mpc.pl + -h
+

+ +

Previous                                                                                              + Next

+ +
+
+
+ +
+
+ Ming + Xiong
Abdullah Sowayan +
+ +
+   +
+ +
+ $Id$ +
+
+ + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/02.html b/modules/CIAO/docs/tutorials/Quoter/Simple/02.html new file mode 100644 index 00000000000..071398d657e --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/02.html @@ -0,0 +1,198 @@ + + + + + + + + Getting Started + + + + + + + +
+

Step 2: Implement your + components

+ +

+ +

Generating the executor files:

+ +

Distributor:

+ +

·       + The MPC files we generated earlier + automatically invoke the TAO IDL compiler to generate the + servant and Component Implementation Framework (CIF) for us. To reduce the amount + of work and typing we need to do, we will next instruct the + TAO IDL compiler to generate an empty StockDistributor Executor + implementation (Object implementation in the figure above). In + the Quoter/Distributor sub-directory, type the + following:

+ +

tao_idl -I%TAO_ROOT% + -I%TAO_ROOT%/tao -I%CIAO_ROOT% -I%CIAO_ROOT%/ccm -I%CIAO_ROOT%/ciao + -Gex StockDistributor.idl

+ +

The above command will generate + a StockDistributor_exec.h and + StockDistributor_exec.cpp files. These generated files + greatly reduced the amount of work we do. We’ll edit + those files later in the tutorial to insert our business logic + in the Distributor component.

+ +

Broker:

+ +

·       + The MPC files we generated earlier + automatically invoked the TAO IDL compiler to generate the + servants, and the CIF for us. To reduce the amount + of work and typing we need to do, we will next instruct the + TAO IDL compiler to generate an empty StockBroker Executor + implementation (Object implementation in the figure above). In + the Quoter/Broker sub-directory, type the + following:

+ +

tao_idl -I%TAO_ROOT% + -I%TAO_ROOT%/tao -I%CIAO_ROOT% -I%CIAO_ROOT%/ccm -I%CIAO_ROOT%/ciao + -Gex StockBroker.idl

+ +

The above command will generate + a StockBroker_exec.h and StockBroker_exec.cpp + files. These generated files greatly reduced the amount of work + we do. We’ll edit those files later in the tutorial to + insert our business logic in the Broker component.

+ +


+ Note:

+ +

To understand the meaning of + different parameters passed to the TAO IDL compiler, type the following + command:

+ +

tao_idl -?
+
+

+ +

Implement the + Components:

+ +

Distributor:

+ +

·       + The TAO IDL compiler generated an empty + StockDistributor_exec.h + and StockDistributor_exec.cpp files for + us. You should now add your business logic to the executors. + Look into StockDistributor_exec.h + and StockDistributor_exec.cpp + to see how we implemented this.

+ +

Broker:

+ +

·       + The TAO IDL compiler generated an empty + StockBroker_exec.h and StockBroker_exec.cpp files for us. You should + now add your business logic to the executors. Look into + StockBroker_exec.h and + StockBroker_exec.cpp to + see how we implemented this.

+ +

Previous                                                                                              + Next

+ +
+
+
+ +
+ Ming + Xiong
Abdullah Sowayan +
+ +
+   +
+ +
+ $Id$ +
+
+ + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/03.html b/modules/CIAO/docs/tutorials/Quoter/Simple/03.html new file mode 100644 index 00000000000..d8795ab2533 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/03.html @@ -0,0 +1,543 @@ + + + +Getting Started + + + + + +
+

Step 3: + Package your components

+

+

Brief Introduction to CosMIC:

+

The Component Synthesis + using Model Integrated Computing (CoSMIC) project is a MDA toolset being + developed by the Institute for Software Integrated Systems (ISIS) at + + + Vanderbilt + + University + + to:

+

1.     Model and analyze distributed real-time and embedded + application functionality and QoS requirements.

+

2.     Synthesize CCM-specific deployment metadata required to deliver + end-to-end QoS to DRE applications.

+

The CoSMIC toolsuite + provides modeling of DRE systems, their QoS requirements, and QoS adaptation + policies used for DRE application QoS management. The component behavior, their + interactions, and QoS requirements are modeled using a domain specific modeling + language that adheres to the OMG + Deployment & Configuration (D&C) specification (ptc/2003-07-08). + CoSMIC enables modeling the standards-based CCM components.

+

Hand-writing the required + XML descriptors to configure our components is tedious and error prone. We + therefore utilize CosMIC (we specifically use a subset of CosMIC called PICML, + which stands for Platform-Independent Component Modeling Language) to generate + the bulk of descriptors for us.

+

For more information on + CosMIC, please refer to the following article:

+

CoSMIC: + An MDA Generative Tool for Distributed Real-time and Embedded Applications.

+
+
+
+

Importing IDL to PICML
+
+    To quick start our Stock Quoter modeling process in GME, CoSMIC + introduces idl_to_picml , which is an executable program that imports + the IDL files you just created into PICML.

+
    +
  1. Make sure %COSMIC_ROOT%\bin is included in + the PATH variable, e.g., c:\Program Files\ISIS\CoSMIC\bin. +
  2. Open a command prompt, run VCVARS32.BAT from the MSVC .NET folder if you + haven't done so. It will set the environment for using Microsoft Visual Studio + .NET tools so that idl_to_picml works properly.
    + in my machine, VCVARS32.bat is in C:\Program Files\Microsoft Visual Studio .NET + 2003\Vc7\bin +
  3. In the same command prompt, change directory to Quoter\Simple, and type the + following command:
    +    > idl_to_picml -I%CIAO_ROOT% -x Quoter -r . 
    + idl_to_picml will parse your IDL files and generated a Quoter.xme file in the + Quoter directory. Note that if + -x option is not used, the default xme file name will be PICML_default_xme_file.xme.
    + When this command is run a second time, be sure to delete all E.idl files first!
    +
    +
  4. Start GME, select File->Import xml.., and choose the xme + file just generated. You should be able to see an imported PICML model similar + to the one shown in Figure 2.
  5. +
+


+
+ Figure 2

+

  In the Browser of the generated model, the PredefinedTypes folder contains a bunch of atomic datatype elements that will be referenced by + other modeling parts later. You don't have to worry about them for now. The + models in InterfaceDefinitions folder are the PICML representations + of the IDL files you just imported. Double-click to open StockBroker, it + will show you a white, document-like entity which represents a + <<FileRef>> instance and a yellow box-shaped entity representing a + <<Package>> instance. Their equivalent representations in IDL files + are "#include" and "module" respectively. Figure 3 gives + you a clear view of GME representation of all the 3 idl files created. We will + cover the other folders in the next section.

+


+
+ Figure 3

+

Now + we are ready to model the rest of the Stock Quoter systems.
+
+
+

+
+
+
+

Building Stock Quoter system in PICML

+

This section describes modeling the Quoter + application using PICML. If you have trouble producing a functioning model from + this tutorial, please see the, pre-built Quoter model which is provided for your reference. This model contains all + elements created as part of this tutorial.

+

Note: To import an XML file in GME, select File->Import + XML.. from GME and choose your XML model

+

The PICML paradigm is designed for the OMG + Deployment & Configuration (D&C) specification (ptc/2003-07-08), so the modeling process + is straightforward if you are familiar with the specification. Please see the DAnCE + project for more + information. For those who hate specification (including me, :-)), an overview + of D&C and as well as a tutorial of D&C + and CCM can help to reduce the learning curve. In addition, it is + also helpful to read through documentation which originally came from the TAO's Developer's Guide 1.4a (CIAO + and CCM) which thoroughly describes the various descriptors required for a + component (*.iad, *.ccd, *.cid, etc). This chapter is available here.

+

Table of Contents

+ +
+
+
+

The complete PICML Quoter model consists of + modeling elements distributed across various folders. If you used idl_to_picml to generate the initial model, you will see that it has created all these + folders and some of the tedious boilerplate modeling for us. The rest of the + section will explain the purpose of each folder as well as the modeling + entities contained in these folders. We will also show how to model some of the + folders that have to be done by hand.

+

Important: The interpreters that generate deployment + artifacts expect very strict constraints in the model. When you finish your + model, and any time you wish to generate anything, it is a good idea to check + constraints by clicking on File->Check->Check All in GME. This + will help you find many logic errors in your model.

+

ImplementationArtifacts

+

This folder contains implementation artifacts + associated with components. idl_to_picml has created these artifacts + for us, with their dependency relationships correctly captured. In order to match the current DAnCE specification, both execPoints + should be removed. Figure 4 shows the Implementation Artifacts for StockBroker. +

+ +


+ Figure 4.

+
+
+
+

ComponentImplementation

+

This folder contains models that describe the implementations + of component interfaces. In the Quoter example, we will have two monolithic + component implementations - named StockDistributorImplementation and StockBrokerImplementation - and an assembly component implementation named StockQuoter, which is + an assembly of StockDistributorImplementation and StockBrokerImplementaion. idl_to_picml has created the monolithic component implementations for + us, as shown in figure 5 for example, but we have to change this model in order to meet the DAnCE specification.

+


+ Figure 5
+

+ +

First thing we need to do is delete the following attributes. +

    +
  • StockBroker_stubRef
  • +
  • StockBroker_svntRef
  • +
  • StockBroker_execRef
  • +
  • ComponentIOR
  • +
+ After that we need to create a reference to the artifacts. +
    +
  1. Drag a <<ComponentImplementationArtifact>> and a + <<ComponentServantArtifact>> from the Part browser to the modeling window. +
  2. +
  3. These two parts need to be linked to the StockBroker_exec and StockBroker_svnt artifacts in + Quoter/ImplementationArtifacts/StockBrokerArtifacts. + This can be established by expanding the tree view and drag StockBroker_exec to the + <<ComponentImplementationArtifact>> and StockBroker_svnt to + <<ComponentServantArtifact>> on the window. On succes, + the <<ComponentImplementationArtifact>> icon should change into a + <<ImplementationArtifactReference>> icon. +
  4. +
  5. Now we should define which entry point is used. Since this tutorial is about unhomed components and the + in the IDL we used homed component, we should create an entry point in code in order to support unhomed component. + This can be done by: +
      +
    1. Opening StockBroker_exec.h and add an entry point in the extern "C" section. This function should return + a ::Components::EnterpriseComponent_ptr instead of a ::Components::HomeExecutorBase_ptr. See + StockBroker_exec.h for more details. +
    2. +
    3. Opening StockBroker_exec.cpp and implement the extern "C" function. See + StockBroker_exec.cpp for more details. +
    4. +
    5. Now we should turn back to the model to configure this entry point. This should be done + by selecting the ComponentImplemtationArtifact and specify this new extern "C" function + (create_Stock_StockBrokerComp_Impl) in the attribute window.
      +
    6. +
    + The same has to be done for the ComponentServantArtifact. Mind that the entry point in code should be + implemented in the right namespace (CIAO_Stock_StockBroker_Impl). In this case the function is called + "create_Stock_StockBroker_Servant". See StockBroker_exec.h and + StockBroker_exec.cpp for more details. +
  6. +
  7. Connect ComponentServantArtifact and ComponentImplementationArtifact to + StockBrokerMonolithicImpl. To connect two items, one should switch to connect mode by clicking + . First click + StockBrokerMonolithicImpl and then ComponentServantArtifact. +
  8. +
+ Don't forget to perform the previous steps for StockDistributor!
+ The result of these actions is shown in figure 5a. +

+


+
+ Figure 5a
+

+ + + We also need to specify the connections between a StockDistributorImplementation and a StockBrokerImplementaion in + order to construct a Quoter system. Therefore we need to create the mentioned + StockQuoter component assemby

+ +

Assembly components provide a boundary for the composition + of monolithic components and even other assemblies. Assembly components do not + provide actual implementations for their interface, it is a virtual component + that delegates its ports and attributes to one or more of the entities it + contains. There are slight differences between modeling an assembly and + modeling a monolithic component. Since the assembly is a virtual component, it + is not necessary to model a MonolithicImplementation. + Instead, instances of other components are placed within the assembly + and connected. Let's try to assemble the StockQuoter.

+
    +
  1. Right click the ComponentImplementations folder, choose Insert + Model->ComponentImplementationContainer, rename it as + "StockQuoterImplementation" in the Attribute Panel. Double click to open it. +
  2. +
  3. From the Part Browser, drag a <<ComponentAssembly>> to the modeling + window, name it "StockQuoter". Double click to open it. +
  4. +
  5. Now we will create two instances for interfaces StockBroker and StockDistributor. + To do that, expand the folder InterfaceDefinitions, then expand the + InterfaceDefinitions/StockBroker, then + InterfaceDefinitions/StockBroker/Stock until the interface definition of StockBroker shows. + While expanding the tree, always keep the "StockQuoter" <<ComponentAssembly>> window open. + Then press the ALT key and drag Quoter/InterfaceDefinitions/Broker/Stock/StockBroker + in the browser to the "StockQuoter" <<ComponentAssembly>> window' + Repeat the same steps for Quoter/InterfaceDefinitions/Distributor/Stock/StockDistributor, + and you will see two instances of component interfaces have been created as + shown in Figure 6 (the black line in the figure only indicates .mapping) +
  6. +
+


+
+ Figure 6

+
    +
  1. Create an <<PublishConnector>> by dragging it from the "Part browser" onto the "StockQuoter" window. +
  2. +
  3. Now assemble the components together according to Figure + 1 (make sure you change to connect mode ) + and the resulting assembly model should look like Figure 7. Note that to create connections between StockDistributor.notify_out and StockBroker.notify_in, + you will need the intermediate connector <<PublishConnector>>. +
  4. +
  5. In one of the previous steps we've removed ComponentIOR. With ComponentIOR one could + configure the name of the IOR file. This is still needed. In this step we need to create them again. This can + be done by dragging two <<Property>> items from the part browser onto the window; + one for StockBroker and one for StockDistributor. The following steps should be taken in order + to configure both properties correct: +
      +
    1. Double click on one of them. An empty window appears and the part browser only has one part, called "DataType". Drag this part onto the empty window. +
    2. +
    3. In the tree window, browse to Quoter/PredefinedTypes +
    4. +
    5. Drag tree item "String" onto the "DataType" item. +
    6. +
    7. Go back to the previous window and repeat these steps for the other <<Property>>. +
    8. +
    + Now it's time to configure the name and value of both <<Property>> items. +
      +
    • The name of each <<Property>> should be "edu.vanderbilt.dre.DAnCE.InstanceIOR" +
    • +
    • One of the values should be "StockBroker.ior"; the other one should be "StockDistributor.ior" +
    • +
    +
  6. +
+

+ +

+ Figure 7

+ +
+
+
+

ComponentPackage

+

This folder contains deployable component packages. Every instance in an assembly should have a corresponding + monolithic implementation and packaged in a ComponentPackage. To create a package for StockBroker.instance

+
    +
  1. Right click folder ComponentPackages , insert a + <<PackageContainer>>, name it "Broker". Double click to open it. +
  2. From the PartBrowser, add the following: +
      +
    • a <<ComponentPackage>> named "Broker"; +
    • a <<ComponentImplementationReference>> named "ComponentImplBrokerRef"; +
    • a <<ComponentRef>> named "ComponentBrokerRef";
    • +
    +
  3. Now we need to create references for "ComponentImplBrokerRef" and "ComponentBrokerRef". + To create a reference in GME, simply drag the tree node in the Browser "into" the reference model.
    + We need to refer <<ComponentImplementationReference>> "ComponentImplBrokerRef" to + Quoter/ComponentImplementations/StockBrokerImplementation/StockBrokerMonolithicImpl + and <<ComponentRef>> "ComponentBrokerRef" to Quoter/InterfaceDefinitions/StockBroker/Stock/StockBroker.
    + For example, you should drag the tree node Quoter/ComponentImplementations/StockBrokerImplementation/StockBrokerMonolithicImpl + into <<ComponentImplementationReference>> "ComponentImplBrokerRef".
    Check GME manual(tutorials) for more information. +
  4. Switch to Connect Mode and create two connections according to the following relationship. +
      +
    • <<ComponentImplementationReference>> "ComponentImplBrokerRef" implements + <<ComponentPackage>> "Broker" +
    • +
    • <<ComponentPackage>> "Broker" realizes + <<ComponentRef>> "ComponentBrokerRef". +
    • +
    +
    +
    + The model you built should resemble Figure 8. +
    +
    +

    +

    + Figure 8
    +

    +

    Now create a StockDistributor following the same steps.

    +
  5. + +
  6. + We will also need to create a component package for the assembly component StockQuoter. Remember assembly component is a virtual component, it does not "realize" a + certain interface, so different from the Broker and Distributor packages, the StockQuoter does not need a <<ComponentRef>>. To create this model:
    + +
      +
    1. Insert a <<ComponentPackage>> named "StockQuoter" +
    2. +
    3. Add a <<ComponentImplementationReference>> named "ComponentImplStockQuoterRef", refer it to + Quoter/ComponentImplementations/StockQuoterImplementation/StockQuoter +
    4. +
    5. Switch to connect mode and connect <<ComponentImplementationReference>> "ComponentImplStockQuoterRef" with + <<ComponentPackage>> "StockQuoter", as in Figure 9. +

      +

      + Figure 9
      +

      +
    6. +
    +
+
+
+
+

InterfaceDefinitions

+

+

    +
  1. Nagivate to + Quoter/InterfaceDefinitions/StockBroker/Stock and double click it. +
  2. +
  3. Switch to connect mode and connect StockBrokerHome and + StockBroker with each other. +
  4. +
+ Do the same for Distributor. +

+ +
+
+
+

PackageConfiguration

+

This folder contains just one + model capturing specific configuration of Component packages.

+
    +
  1. In the folder PackageConfiguration, and create a + <<PackageConfigurationContainer>>, name it "Default", double click to open + it. +
  2. Add a <<PackageConfiguration>> named "default" and a + <<ComponentPackageReference>>, name it "StockQuoter", connect + "Default" to "StockQuoter" +
  3. Refer <<ComponentPackageReference>> StockQuoter to + <<ComponentPackage>> Quoter/ComponentPackage/StockQuoter/StockQuoter
    + (Not <<ComponentImplementationReference>>
    Quoter/ComponentPackage/StockQuoter/ComponentImplStockQuoterRef!) 
  4. +
+
+
+
+

ToplevelPackage

+

This folder contains one model + capturing information about the top-level element that will be fed to the + application.

+
    +
  1. In the folder ToplevelPackages, create a + <<ToplevelPackageContainer>> and name it "Default". Double click to + open it. +
  2. Add a <<ToplevelPackage>> named "ToplevelPackage" and a + <<PackageConfigurationReference>>, name it "Default", connect + "ToplevelPackage" to "Default" +
  3. Refer "Default" to Quoter/PackageConfiguration/Default/Default
  4. +
+
+
+
+

Targets

+

This folder contains + domain-specific models capturing information about the target environment in + which component-based application will be deployed. In this Quoter example, we + can either deploy the two components into ONE host, or into TWO different host. + We will deploy the Quoter into two different host.

+
    +
  1. In the folder Targets, insert a new <<Domain>> named + "Domain"; double click to open it. +
  2. From the Part Browser, add two <<Node>>s, named "Broker" and + "Distributor" respectively.
  3. +
+


+ Now we are ready to deploy our Components to the actual physical environment.

+
+
+
+

DeploymentPlan

+

This folder contains a plan model + that captures information about the assignment of component to nodes.

+
    +
  1. In the folder DeploymentPlan, insert a model + <<DeploymentPlan>>; name it "Plan". Double click to open it. +
  2. From the PartBrowser, add the following: +
      +
    • Two <<NodeReference>> named "Node_Broker" and "Node_Distributor" + respectively, refering to Quoter/Targets/Domain/Broker and + Quoter/Targets/Domain/Distributor respectively.
      + A <<CollationGroup>>, named "DefaultGroup", is added automatically when adding a <<NodeReference>>. +
    • +
    • Two <<ComponentRef>> named "StockBroker" and "StockDistributor" + respectively, refering to Quoter/ComponentImplementations/StockQuoterImplementation/StockQuoter/StockBroker + and Quoter/ComponentImplementations/StockQuoterImplementation/StockQuoter/StockDistributor respectively.
      + Note that the <<ComponentRef>> in DeploymentPlan is not referring to the interface, but rather the actual instance of the implementation. +
    • +
    +

    The model should look like this:

    +
+


+
+ Figure 10.

+
    +
  1. Now we need to associate <<ComponentRef>> StockBroker to the + <<CollocationGroup>> running on the <<NodeReference>> Node_Broker, and <<ComponentRef>> StockDistributor to the + <<CollocationGroup>> running on the <<NodeReference>> Node_Distributor. To do that, switch the Edit Mode Bar to Set Mode + (), and move the cursor to the <<CollocationGroup>> running on + <<NodeReference>> Node_Distributor, right-click on it. You will find the cursor is changed to set mode cursor, and only the <<CollocationGroup>> + you clicked in is highlighted, as shown in Figure 11. +
  2. +
+

+ +

+ Figure 11
+

+

Now move your cursor to <<ComponentRef>>  StockDistributor, and left-click it, so that + it looks like Figure 12. +

+

 
+
+ Figure 12
+

+

This operation associates StockDistributor component to the + <<CollocationGroup>> running on Distributor node. To do the same with Broker, just right-click on the associate + <<CollocationGroup>>, and left-click on StockBroker <<CollocationGroup>> which is then highlighted. +

+
+
+
+

Up to this point, we are basically + done with the modeling part. Before we generate anything from this model + though, please DO remember to check the constraints of the model as we + mentioned earlier.

+

After we are done with the modeling, the + Deploymentplan interpreter that comes along with PICML will help us + to generate a Plan.cdp file. Please make sure you generate + this file to Quoter/descriptors. Note that to get the example working,a + Node Map file (NodeMap.dat) in Quoter/descriptors should be created to map logical nodes to NodeManager object + references,e.g:

+
DistributorNode corbaloc:iiop:localhost:30000/NodeManager
+
BrokerNode      corbaloc:iiop:localhost:40000/NodeManager
+
 
+
 
+

Previous                                                                                                            Next

+
+
+
+
+ Ming + Xiong
+
Abdullah Sowayan +
+

$Id$  

+
+ + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/04.html b/modules/CIAO/docs/tutorials/Quoter/Simple/04.html new file mode 100644 index 00000000000..345b6649d89 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/04.html @@ -0,0 +1,162 @@ + + + +Building a Stock Quoter with TAO - A Tutorial + + + + + +

Step 6: + System Deployment

+

+

Now that we have all the + components and driver programs successfully built, along with the Deploymentplan + generated by PICML, we will be able to run our application. Remember to add this tutorials library path to your system path in order to run the executable without + problems (see page 1 of this tutorial).
+
+ From different command prompts in
%CIAO_ROOT%/docs/tutorials/Quoter/Simple/descriptors directory:

+
+
    +
  • Start NodeManagers (NodeDameon) by running:
  • +
+
+

      + %DANCE_ROOT%/bin/dance_node_manager -ORBListenendpoints iiop://localhost:30000 -s + %CIAO_ROOT%/bin/ciao_componentserver -n Distributor=StockDistributor.ior

+

      %DANCE_ROOT%/bin/dance_node_manager + -ORBListenendpoints iiop://localhost:40000 -s %CIAO_ROOT%/bin/ciao_componentserver -n Broker=StockBroker.ior

+
    +
  • Start the execution manager:
  • +
+

       +     + %DANCE_ROOT%/bin/dance_execution_manager -eEM.ior --node-map NodeMap.dat 

+

The NodeMap.dat file describes + the deployment daemons CIAO's Execution_Manager will contact to instantiate + ComponentServer's, home's, and component instances. Each line specify the name + of a installation "destination" and the corresponding IOR for the + CIAO_Daemon.

+
    +
  • NOTE: As one can see, we use the "NodeMap.dat" file to instruct the + Execution Manager how to find the endpoint of each individual NodeManager + (i.e., Node Daemon) where component(s) will be deployed, so this is + non-standard. We plan to use Naming Service to do this in the future.
  • +
+
    +
  • Start the DaNCE Repository Manager by running + %DANCE_ROOT%/bin/dance_plan_launcher -x Plan.cdp -k file://EM.ior +
  • By now the components should be successfully deployed. You may run the driver + program to start the application. e.g. you can try the following + : +
      +
    • Instruct the StockDistributor component to start publishing stock quotes:
    • +
    +
  • +
+

        + %CIAO_ROOT%/docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.exe -o + +

+
    +
      +
    • Instruct the StockBroker + to subscribe to MSFT stock + publications:
    • +
    +
+

        %CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.exe + -s MSFT

+
    +
      +
    • Instruct the StockBroker to subscribe + to IBM stock publications:
    • +
    +
+

        %CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.exe -s IBM

+
    +
      +
    • Instruct the StockBroker to unsubscribe to MSFT stock + publications:
    • +
    +
+ +

        %CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.exe + -u MSFT

+
    +
      +
    • Instruct the + StockDistributor component to stop publishing stock + quotes:
    • +
    +
+
+

        %CIAO_ROOT%/docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.exe + –f

+
    +
    +
  • NOTE: Windows uses %VARIABLE% to fetch the values of + environment variables. Linux/Unix uses $VARIABLE to fetch the values of + environment variables. As such, if you're running this tutorial on Linux/Unix + operating system, change the above commands to use $VARIABLE instead of + %VARIABLE% when you run the programs.
  • +
    +
+

Previous                                                                                             

+
+
+
+
+Ming Xiong
+
Abdullah Sowayan +
+

$Id$

+ + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.idl new file mode 100644 index 00000000000..24b23230d84 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.idl @@ -0,0 +1,40 @@ +//$Id$ + +#ifndef STOCKBROKER_IDL +#define STOCKBROKER_IDL + +#include "../Stock_Base/Stock_Base.idl" + +module Stock +{ + interface StockSubscriber { + /// subscribe to an interested stock + void stock_subscribe (in string stock_name) + raises (Invalid_Stock); + /// unsubscribe to an stock + void stock_unsubscribe (in string stock_name) + raises (Invalid_Stock); + }; + + /** + * @class StockBroker + * + * @brief component + */ + component StockBroker supports StockSubscriber + { + consumes StockName notify_in; + uses StockQuoter read_quoter; + }; + + /** + * @class StockBrokerHome + * + * @brief home for StockBroker component + */ + home StockBrokerHome manages StockBroker + { + }; +}; + +#endif /* STOCKBROKER_IDL */ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc new file mode 100644 index 00000000000..8fd485977da --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker.mpc @@ -0,0 +1,153 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Stock_Base -c StockBrokerDriver StockBroker -l ../lib -o ../lib" + +project(Stock_Base_StockBroker_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=STOCKBROKER_STUB_Export \ + -Wb,stub_export_include=StockBroker_stub_export.h \ + -Wb,skel_export_macro=STOCKBROKER_SVNT_Export \ + -Wb,skel_export_include=StockBroker_svnt_export.h \ + -Wb,exec_export_macro=STOCKBROKER_EXEC_Export \ + -Wb,exec_export_include=StockBroker_exec_export.h + + IDL_Files { + StockBroker.idl + } +} + +project(Stock_Base_StockBroker_lem_gen) : ciaoidldefaults { + after += Stock_Base_StockBroker_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=STOCKBROKER_LEM_STUB_Export \ + -Wb,stub_export_include=StockBroker_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + StockBrokerE.idl + } +} + +project(Stock_Base_StockBroker_lem_stub) : ccm_svnt { + after += Stock_Base_StockBroker_lem_gen Stock_Base_StockBroker_stub Stock_Base_stub + libs += Stock_Base_stub StockBroker_stub + libpaths += ../lib + libout = ../lib + sharedname = StockBroker_lem_stub + dynamicflags = STOCKBROKER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockBrokerEC.cpp + } + + Header_Files { + StockBrokerEC.h + StockBroker_lem_stub_export.h + } + + Inline_Files { + StockBrokerEC.inl + } +} + +project(Stock_Base_StockBroker_stub) : ccm_stub { + after += Stock_Base_StockBroker_idl_gen Stock_Base_stub + libs += Stock_Base_stub + libpaths += ../lib + libout = ../lib + sharedname = StockBroker_stub + dynamicflags = STOCKBROKER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockBrokerC.cpp + } + + Header_Files { + StockBrokerC.h + StockBroker_stub_export.h + } + + Inline_Files { + StockBrokerC.inl + } +} + +project(Stock_Base_StockBroker_exec) : ciao_executor { + after += Stock_Base_StockBroker_lem_stub Stock_Base_StockBroker_stub + sharedname = StockBroker_exec + libs += StockBroker_stub StockBroker_lem_stub Stock_Base_stub + libpaths += ../lib + libout = ../lib + dynamicflags = STOCKBROKER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockBroker_exec.cpp + } + + Header_Files { + StockBroker_exec.h + StockBroker_exec_export.h + } + + Inline_Files { + } +} + + +project(Stock_Base_StockBroker_svnt) : ciao_servant { + after += Stock_Base_skel Stock_Base_StockBroker_lem_stub + sharedname = StockBroker_svnt + libs += StockBroker_stub StockBroker_lem_stub \ + Stock_Base_skel \ + Stock_Base_stub + libpaths += ../lib + libout = ../lib + dynamicflags = STOCKBROKER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockBrokerS.cpp + StockBroker_svnt.cpp + } + + Header_Files { + StockBrokerS.h + StockBroker_svnt.h + StockBroker_svnt_export.h + } + + Inline_Files { + StockBrokerS.inl + } +} + +project (Stock_Base_StockBrokerDriver) : ccm_stub, valuetype { + exename = StockBrokerDriver + after += Stock_Base_StockBroker_stub + libs += StockBroker_stub Stock_Base_stub + libpaths += ../lib + libout = ../lib + IDL_Files { + } + + Source_Files { + StockBrokerDriver.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp new file mode 100644 index 00000000000..80fdee813d1 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBrokerDriver.cpp @@ -0,0 +1,110 @@ +//$Id$ +/* + * @file StockBrokerDriver.cpp + * + * @author Ming Xiong + */ + +#include "StockBrokerC.h" +#include "ace/streams.h" +#include "ace/Get_Opt.h" + +const ACE_TCHAR *broker_ior = ACE_TEXT ("file://StockBroker.ior"); +const ACE_TCHAR *subscribe_name = 0; +const ACE_TCHAR *unsubscribe_name = 0; + + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:s:u:")); + int c; + + while ((c = get_opts ()) != -1) + { + switch (c) + { + case 'k': + broker_ior = get_opts.opt_arg (); + break; + + case 's': + subscribe_name = get_opts.opt_arg (); + break; + + case 'u': + unsubscribe_name = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s\n" + "-k (default is file://StockBroker.ior)\n" + "-s \n" + "-u \n" + "\n", + argv [0]), + -1); + } + } + + return 0; +} + +int ACE_TMAIN (int argc, ACE_TCHAR* 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 of StockBrokerHome + CORBA::Object_var broker_obj = + orb->string_to_object (broker_ior); + + // downcast the object reference to the appropriate type + Stock::StockBroker_var broker = + Stock::StockBroker::_narrow (broker_obj.in ()); + + if (CORBA::is_nil (broker.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Unable to acquire 'Broker' objref\n"), + -1); + } + + + if (subscribe_name != 0) + { + broker->stock_subscribe (ACE_TEXT_ALWAYS_CHAR (subscribe_name)); + + ACE_DEBUG ((LM_DEBUG, "Subscribe successful!\n")); + } + + if (unsubscribe_name != 0) + { + broker->stock_unsubscribe (ACE_TEXT_ALWAYS_CHAR (unsubscribe_name)); + + ACE_DEBUG ((LM_DEBUG, "Unsubscribe successful!\n")); + } + + // Finally destroy the ORB + 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/Broker/StockBroker_exec.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp new file mode 100644 index 00000000000..bfba5b8888b --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.cpp @@ -0,0 +1,195 @@ +// $Id$ + +#include "StockBroker_exec.h" + +namespace CIAO_Stock_StockBroker_Impl +{ + //================================================================== + // Component Executor Implementation Class: StockBroker_exec_i + //================================================================== + + StockBroker_exec_i::StockBroker_exec_i (void) + { + } + + StockBroker_exec_i::~StockBroker_exec_i (void) + { + } + + + // Supported or inherited operations. + + void + StockBroker_exec_i::stock_subscribe ( + const char * stock_name) + { + if ((ACE_OS::strcmp (stock_name, "MSFT") == 0) || + (ACE_OS::strcmp (stock_name, "IBM") == 0)) + { + std::set::iterator iter = + this->subscribed_stock_list_.find (stock_name); + + if (iter == this->subscribed_stock_list_.end ()) + { + this->subscribed_stock_list_.insert (stock_name); + } + } + else + { + throw Stock::Invalid_Stock (); + } + } + + void + StockBroker_exec_i::stock_unsubscribe ( + const char * stock_name) + { + if ((ACE_OS::strcmp (stock_name, "MSFT") == 0) || + (ACE_OS::strcmp (stock_name, "IBM") == 0)) + { + std::set::iterator iter = + this->subscribed_stock_list_.find (stock_name); + if (iter != this->subscribed_stock_list_.end ()) + { + this->subscribed_stock_list_.erase (iter); + } + } + else + { + throw Stock::Invalid_Stock (); + } + + } + + + void + StockBroker_exec_i::push_notify_in ( + Stock::StockName *ev) + { + + ACE_DEBUG ((LM_INFO, + "Broker - Got message from Distributor\n")); + + CORBA::String_var stock_name = CORBA::string_dup (ev->name ()); + + // Retrieve stock information if the stock name is in the + // subscribed_stock_list + if (this->subscribed_stock_list_.find (stock_name.in ()) != + this->subscribed_stock_list_.end ()) + { + Stock::StockQuoter_var quoter_obj = + this->context_->get_connection_read_quoter (); + + if (CORBA::is_nil (quoter_obj.in ())) + { + throw CORBA::BAD_PARAM (); + } + + Stock::StockInfo_var info = + quoter_obj->get_stock_info (stock_name.in ()); + + ACE_DEBUG ((LM_DEBUG, "Quoter - Current value of %s is %d\n", + stock_name.in (), + info->last)); + } + } + + // Operations from Components::SessionComponent + + void + StockBroker_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Stock::CCM_StockBroker_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + StockBroker_exec_i::configuration_complete () + { + } + + void + StockBroker_exec_i::ccm_activate () + { + } + + void + StockBroker_exec_i::ccm_passivate () + { + } + + void + StockBroker_exec_i::ccm_remove () + { + } + + //================================================================== + // Home Executor Implementation Class: StockBrokerHome_exec_i + //================================================================== + + StockBrokerHome_exec_i::StockBrokerHome_exec_i (void) + { + } + + StockBrokerHome_exec_i::~StockBrokerHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + StockBrokerHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + StockBroker_exec_i, + CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" STOCKBROKER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Stock_StockBrokerComp_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + StockBroker_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + extern "C" STOCKBROKER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Stock_StockBrokerHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + StockBrokerHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h new file mode 100644 index 00000000000..679bb2c3f58 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/StockBroker_exec.h @@ -0,0 +1,113 @@ +// $Id$ + +#ifndef CIAO_STOCKBROKER_EXEC_H +#define CIAO_STOCKBROKER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "StockBrokerEC.h" + +#include +#include + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "StockBroker_exec_export.h" +#include "tao/LocalObject.h" + +//namespace CIAO_Stock_StockDistributor_Impl +//namespace CIDL_StockDistributor_Impl +namespace CIAO_Stock_StockBroker_Impl +{ + + /** + * @class StockBroker_exec_i + * + * @brief Executor implementation + * + * This class implements Stock::StockBroker component + */ + class STOCKBROKER_EXEC_Export StockBroker_exec_i + : public virtual StockBroker_Exec, + public virtual ::CORBA::LocalObject + { + public: + StockBroker_exec_i (void); + virtual ~StockBroker_exec_i (void); + + + // Supported or inherited operations. + + virtual void + stock_subscribe (const char * stock_name); + + virtual void + stock_unsubscribe (const char * stock_name); + + // Attribute operations. + + // Port operations. + + virtual void + push_notify_in (::Stock::StockName *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Stock::CCM_StockBroker_Context_var context_; + std::set subscribed_stock_list_; + }; + + + /** + * @class StockBrokerHome_exec_i + * + * @brief Executor implementation + * + * This class implements Stock::StockBrokerHome component + */ + class STOCKBROKER_EXEC_Export StockBrokerHome_exec_i + : public virtual StockBrokerHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + StockBrokerHome_exec_i (void); + virtual ~StockBrokerHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + + extern "C" STOCKBROKER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Stock_StockBrokerComp_Impl (void); + extern "C" STOCKBROKER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Stock_StockBrokerHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_STOCKBROKER_EXEC_H */ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.idl new file mode 100644 index 00000000000..046ffea9f15 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.idl @@ -0,0 +1,47 @@ +//$Id$ + +#ifndef STOCKDISTRIBUTOR_IDL +#define STOCKDISTRIBUTOR_IDL + +#include "../Stock_Base/Stock_Base.idl" +#include "../Stock_Base/Stock_BaseE.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 + { + }; +}; + +#endif /* STOCKDISTRIBUTOR_IDL */ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc new file mode 100644 index 00000000000..89cf05dc011 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor.mpc @@ -0,0 +1,155 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Stock_Base -c StockDistributorDriver StockDistributor -l ../lib -o ../lib" + +project(Stock_Base_StockDistributor_idl_gen) : componentidldefaults { + after += Stock_Base_idl_gen + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=STOCKDISTRIBUTOR_STUB_Export \ + -Wb,stub_export_include=StockDistributor_stub_export.h \ + -Wb,skel_export_macro=STOCKDISTRIBUTOR_SVNT_Export \ + -Wb,skel_export_include=StockDistributor_svnt_export.h \ + -Wb,exec_export_macro=STOCKDISTRIBUTOR_EXEC_Export \ + -Wb,exec_export_include=StockDistributor_exec_export.h + + IDL_Files { + StockDistributor.idl + } +} + +project(Stock_Base_StockDistributor_lem_gen) : ciaoidldefaults { + after += Stock_Base_StockDistributor_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=STOCKDISTRIBUTOR_LEM_STUB_Export \ + -Wb,stub_export_include=StockDistributor_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + StockDistributorE.idl + } +} + +project(Stock_Base_StockDistributor_lem_stub) : ccm_svnt { + after += Stock_Base_StockDistributor_lem_gen Stock_Base_StockDistributor_stub Stock_Base_stub + libs += Stock_Base_stub StockDistributor_stub + libpaths += ../lib + libout = ../lib + sharedname = StockDistributor_lem_stub + dynamicflags = STOCKDISTRIBUTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockDistributorEC.cpp + } + + Header_Files { + StockDistributorEC.h + StockDistributor_lem_stub_export.h + } + + Inline_Files { + StockDistributorEC.inl + } +} + +project(Stock_Base_StockDistributor_stub) : ccm_stub { + after += Stock_Base_StockDistributor_idl_gen Stock_Base_stub + libs += Stock_Base_stub + libpaths += ../lib + libout = ../lib + sharedname = StockDistributor_stub + dynamicflags = STOCKDISTRIBUTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockDistributorC.cpp + } + + Header_Files { + StockDistributorC.h + StockDistributor_stub_export.h + } + + Inline_Files { + StockDistributorC.inl + } +} + +project(Stock_Base_StockDistributor_exec) : ciao_executor { + after += Stock_Base_StockDistributor_lem_stub Stock_Base_StockDistributor_stub + sharedname = StockDistributor_exec + libs += StockDistributor_stub StockDistributor_lem_stub Stock_Base_stub + libpaths += ../lib + libout = ../lib + dynamicflags = STOCKDISTRIBUTOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockDistributor_exec.cpp + } + + Header_Files { + StockDistributor_exec.h + StockDistributor_exec_export.h + } + + Inline_Files { + } +} + + +project(Stock_Base_StockDistributor_svnt) : ciao_servant { + after += Stock_Base_skel Stock_Base_StockDistributor_lem_stub + sharedname = StockDistributor_svnt + libs += StockDistributor_stub StockDistributor_lem_stub \ + Stock_Base_skel \ + Stock_Base_stub + libpaths += ../lib + libout = ../lib + dynamicflags = STOCKDISTRIBUTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + StockDistributorS.cpp + StockDistributor_svnt.cpp + } + + Header_Files { + StockDistributorS.h + StockDistributor_svnt.h + StockDistributor_svnt_export.h + } + + Inline_Files { + StockDistributorS.inl + } +} + +project (Stock_Base_StockDistributorDriver) : ccm_stub, valuetype { + exename = StockDistributorDriver + after += Stock_Base_StockDistributor_stub + libs += StockDistributor_stub Stock_Base_stub + libpaths += ../lib + libout = ../lib + IDL_Files { + } + + Source_Files { + StockDistributorDriver.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp new file mode 100644 index 00000000000..98eb6362d38 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributorDriver.cpp @@ -0,0 +1,115 @@ +//$Id$ +/* + * @file StockDistributorDriver.cpp + * + * @author Ming Xiong + */ + + +#include "StockDistributorC.h" +#include "ace/streams.h" +#include "ace/Get_Opt.h" + +const ACE_TCHAR *distributor_ior = ACE_TEXT ("file://StockDistributor.ior"); +int rate = 2; +int turn_on = 1; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("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 (default is file://StockDistributor.ior)\n" + "-r (default is 2)\n" + "\n", + argv [0]), + -1); + } + } + + return 0; +} + + +int ACE_TMAIN (int argc, ACE_TCHAR* 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/StockDistributor_exec.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp new file mode 100644 index 00000000000..8f9c05f6cb3 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.cpp @@ -0,0 +1,329 @@ +// $Id$ + +#include "StockDistributor_exec.h" +#include "ace/Reactor.h" + +namespace CIAO_Stock_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) + { + 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) + { + if (ACE_OS::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 (ACE_OS::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 + { + throw Stock::Invalid_Stock (); + } + } + + //================================================================== + // 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 () + { + if (this->rate_ == 0 || this->pulser_.active()) + { + throw CORBA::BAD_PARAM (); + } + + this->pulser_.start (this->rate_); + } + + void + StockDistributor_exec_i::stop () + { + if (! this->pulser_.active ()) + { + throw CORBA::BAD_INV_ORDER (); + } + + this->pulser_.stop (); + } + + // Attribute operations. + + ::CORBA::Long + StockDistributor_exec_i::rate () + { + return this->rate_; + } + + void + StockDistributor_exec_i::rate ( + ::CORBA::Long rate) + { + this->rate_ = rate; + } + + // Port operations. + + ::Stock::CCM_StockQuoter_ptr + StockDistributor_exec_i::get_push_quoter () + { + return new StockQuoter_exec_i (*this); + } + + void + StockDistributor_exec_i::push_notify_out () + { + ++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) + { + this->context_ = + ::Stock::CCM_StockDistributor_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + StockDistributor_exec_i::configuration_complete () + { + } + + void + StockDistributor_exec_i::ccm_activate () + { + // Start the active object + this->pulser_.open_h (); + } + + void + StockDistributor_exec_i::ccm_passivate () + { + // Deactivate the active object + this->pulser_.close_h (); + } + + void + StockDistributor_exec_i::ccm_remove () + { + } + + //================================================================== + // 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 () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + StockDistributor_exec_i, + CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" STOCKDISTRIBUTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Stock_StockDistributorComp_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + StockDistributor_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + extern "C" STOCKDISTRIBUTOR_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Stock_StockDistributorHome_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/StockDistributor_exec.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h new file mode 100644 index 00000000000..aaf500cdf34 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/StockDistributor_exec.h @@ -0,0 +1,224 @@ +// $Id$ + +#ifndef CIAO_STOCKDISTRIBUTOR_EXEC_H +#define CIAO_STOCKDISTRIBUTOR_EXEC_H + +#include /**/ "ace/pre.h" +#include "ace/Thread_Manager.h" +#include "ace/Task.h" + +#include "StockDistributorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "StockDistributor_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Stock_StockDistributor_Impl +//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 STOCKDISTRIBUTOR_EXEC_Export StockQuoter_exec_i + : public virtual ::Stock::CCM_StockQuoter, + public virtual ::CORBA::LocalObject + { + public: + StockQuoter_exec_i (StockDistributor_exec_i &distributor) + : distributor_ (distributor) + { + } + + // Operations from ::Stock::StockQuoter + + virtual ::Stock::StockInfo * + get_stock_info (const char * stock_name); + + /// 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 STOCKDISTRIBUTOR_EXEC_Export StockDistributor_exec_i + : public virtual StockDistributor_Exec, + public virtual ::CORBA::LocalObject + { + public: + StockDistributor_exec_i (void); + virtual ~StockDistributor_exec_i (void); + + // Supported or inherited operations. + + virtual void + start (); + + virtual void + stop (); + + // Attribute operations. + + virtual ::CORBA::Long + rate (); + + virtual void + rate (::CORBA::Long); + + // Port operations. + + virtual ::Stock::CCM_StockQuoter_ptr + get_push_quoter (); + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (); + + virtual void + ccm_activate (); + + virtual void + ccm_passivate (); + + virtual void + ccm_remove (); + + private: + ::Stock::CCM_StockDistributor_Context_var context_; + + /// User defined members + public: + + /// push event to all subscribers + void push_notify_out (); + + 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 STOCKDISTRIBUTOR_EXEC_Export StockDistributorHome_exec_i + : public virtual StockDistributorHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + StockDistributorHome_exec_i (void); + virtual ~StockDistributorHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" STOCKDISTRIBUTOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Stock_StockDistributorComp_Impl (void); + extern "C" STOCKDISTRIBUTOR_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Stock_StockDistributorHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_STOCKDISTRIBUTOR_EXEC_H */ + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Icons/AddConnMode.gif b/modules/CIAO/docs/tutorials/Quoter/Simple/Icons/AddConnMode.gif new file mode 100644 index 00000000000..3604d32946d Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/Icons/AddConnMode.gif differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Icons/SetMode.gif b/modules/CIAO/docs/tutorials/Quoter/Simple/Icons/SetMode.gif new file mode 100644 index 00000000000..6dcad861f07 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/Icons/SetMode.gif differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Model/Quoter.xme b/modules/CIAO/docs/tutorials/Quoter/Simple/Model/Quoter.xme new file mode 100644 index 00000000000..3ddd7a278bd --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Model/Quoter.xme @@ -0,0 +1,1963 @@ + + + + + Quoter + + + + Quoter + + InterfaceDefinitions + + StockBroker + + + + + + + + Stock + + + + + + 377,230 + + + + + + + + + + + + + + StockSubscriber + + + + + + 62,27 + + + + + + + + + + + + + + false + + + false + + + stock_subscribe + + + + + + 334,201 + + + + + + + + + + + stock_name + + + + + + 334,201 + + + + + + ExceptionRef + + + + + + 700,434 + + + + + + + stock_unsubscribe + + + + + + 700,434 + + + + + + + + + + + stock_name + + + + + + 334,201 + + + + + + ExceptionRef + + + + + + 700,434 + + + + + + + + StockBroker + + + + + + 168,105 + + + + + + 350,91 + + + + + + + + E103B6A4-3420-4A9E-B0E0-E8ED0EBD5B55 + + + + + + + + + Supports + + + + + + 243,143 + + + + + + read_quoter + + + + + + 518,318 + + + + + + + + + + + false + + + false + + + false + + + false + + + + notify_in + + + + + + 793,493 + + + + + + + + + + + false + + + false + + + false + + + + + StockBrokerHome + + + + + + 440,279 + + + + + + + + + + + + ManagesComponent + + + + + + FileRef + + + + + + 153,90 + + + + + + + StockDistributor + + + + + + + + Stock + + + + + + 700,434 + + + + + + + + + + + + + + Trigger + + + + + + 62,34 + + + + + + + + + + + + + + false + + + false + + + start + + + + + + 334,201 + + + + + + + + + + + + stop + + + + + + 700,434 + + + + + + + + + + + + + StockDistributor + + + + + + 168,147 + + + + + + 112,91 + + + + + + + + 5A918076-BA28-438E-8DC3-7BC56110C411 + + + + + + + + + rate + + + + + + 848,528 + + + + + + + + + + + AttributeMember + + + + + + 518,318 + + + + + + + Supports + + + + + + 188,108 + + + + + + push_quoter + + + + + + 408,248 + + + + + + + + + + + false + + + false + + + false + + + + notify_out + + + + + + 628,388 + + + + + + + + + + + false + + + false + + + false + + + DirectConnect + + + false + + + + + StockDistributorHome + + + + + + 440,321 + + + + + + + + + + + + ManagesComponent + + + + + + FileRef + + + + + + 334,201 + + + + + + + Stock_Base + + + + + + + + Stock + + + + + + 518,318 + + + + + + + + + + + + + + Invalid_Stock + + + + + + 151,84 + + + + + + + + + + + + StockInfo + + + + + + 517,316 + + + + + + + + + + + name + + + + + + 188,108 + + + + + + high + + + + + + 408,248 + + + + + + low + + + + + + 628,388 + + + + + + last + + + + + + 848,528 + + + + + + + StockQuoter + + + + + + 700,432 + + + + + + + + + + + + + + false + + + false + + + get_stock_info + + + + + + 518,318 + + + + + + + + + + + ReturnType + + + + + + 243,143 + + + + + + ExceptionRef + + + + + + 793,493 + + + + + + stock_name + + + + + + 518,318 + + + + + + + + StockName + + + + + + 883,548 + + + + + + + + + + + + + + false + + + name + + + + + + 518,318 + + + + + + + ImageBlob + + + + + + 334,200 + + + + + + + + + + + + + + + + + + PredefinedTypes + + TypeKind + + + TypeEncoding + + + String + + + Boolean + + + ShortInteger + + + RealNumber + + + LongInteger + + + GenericValueObject + + + GenericValue + + + GenericObject + + + Byte + + + + ComponentImplementations + + StockBrokerImplementation + + StockBrokerMonolithicImpl + + + + + + 258,132 + + + + + 85DC22EC-BA18-4D47-8096-A5C6BB519AB5 + + + 0.0.0.0 + + + + + + + StockBrokerRef + + + + + + 217,224 + + + + + + ComponentServantArtifact + + + + + + 340,32 + + + + + create_Stock_StockBroker_Servant + + + + ComponentImplementationArtifact + + + + + + 165,32 + + + + + create_Stock_StockBrokerComp_Impl + + + + Implements + + + + + MonolithprimaryArtifact + + + + + MonolithprimaryArtifact + + s + + + + + + + StockDistributorImplementation + + StockDistributorMonolithicImpl + + + + + + 461,153 + + + + + 6FFDC88F-5ED1-4DDC-8B44-5D8310E59C68 + + + 0.0.0.0 + + + + + + + StockDistributorRef + + + + + + 420,287 + + + + + + ComponentServantArtifact + + + + + + 550,67 + + + + + create_Stock_StockDistributor_Servant + + + + ComponentImplementationArtifact + + + + + + 368,67 + + + + + create_Stock_StockDistributorComp_Impl + + + + Implements + + + + + MonolithprimaryArtifact + + Ns + + + + + + MonolithprimaryArtifact + + Ns + + + + + + + StockQuoterImplementation + + StockQuoter + + + + + + 205,72 + + + + + DB8977E3-FD57-458F-9AAE-BC0866B8AFFA + + + + + + StockDistributor + + + + + + 84,49 + + + + + + + + C509158E-BAD6-4B89-A565-0F0DED710EEB + + + + + + + + + rate + + + + + + + + AttributeMember + + + + push_quoter + + + + + + + + false + + + false + + + false + + + + Supports + + + notify_out + + + + + + + + false + + + false + + + false + + + DirectConnect + + + false + + + + + StockBroker + + + + + + 364,49 + + + + + + + + F96FBCAA-4AD8-4C7D-BCEC-1392A63D08A5 + + + + + + + + + Supports + + + notify_in + + + + + + + + false + + + false + + + false + + + + read_quoter + + + + + + + + false + + + false + + + false + + + false + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + + + + 125,244 + + + + + StockDistributor.ior + + + DataType + + + + + + 303,219 + + + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + + + + 405,244 + + + + + StockBroker.ior + + + DataType + + + + + + 429,142 + + + + + + + PublishConnector + + + + + + 301,133 + + + + + + publish + + + + + deliverTo + + + + + invoke + + + + + AssemblyConfigProperty + + + + + AssemblyConfigProperty + + + + + + + + ImplementationArtifacts + + StockBrokerArtifacts + + StockBroker_stub + + + + + + 174,48 + + + + + CD1ED550-2120-4815-9F0C-A57B299F2C53 + + + + + + 0.0.0.0 + + + + + + + + + StockBroker_stub + + + + + + + StockBroker_svnt + + + + + + 363,146 + + + + + 066D04A2-BB7B-40FB-BD67-50EE59CC20F8 + + + + + + 0.0.0.0 + + + + + + + + + StockBroker_svnt + + + + + + + StockBroker_exec + + + + + + 538,258 + + + + + A07CBC4A-91E2-4FDF-A70A-8604ABA8954C + + + + + + 0.0.0.0 + + + + + + + + + StockBroker_exec + + + + + + + ArtifactDependency + + + + + ArtifactDependency + + + + + ArtifactDependency + + + + + + StockDistributorArtifacts + + StockDistributor_stub + + + + + + 151,84 + + + + + C2E2F668-5B72-43C5-AA3B-FBB907307748 + + + + + + 0.0.0.0 + + + + + + + + + StockDistributor_stub + + + + + + + StockDistributor_svnt + + + + + + 517,316 + + + + + AE2EC978-93A9-4C38-91EC-E59E68AB02FD + + + + + + 0.0.0.0 + + + + + + + + + StockDistributor_svnt + + + + + + + StockDistributor_exec + + + + + + 883,548 + + + + + 078C56CA-1D5C-4EDD-9638-49A7BCB19BC4 + + + + + + 0.0.0.0 + + + + + + + + + StockDistributor_exec + + + + + + + ArtifactDependency + + + + + ArtifactDependency + + + + + ArtifactDependency + + + + + + + ComponentTypes + + StockBrokerContainer + + StockBrokerRef + + + + + + 518,318 + + + + + + + StockDistributorContainer + + StockDistributorRef + + + + + + 518,318 + + + + + + + + PackageConfigurations + + Default + + Default + + + + + + 90,62 + + + + + EC3C35BF-5F73-4D1B-BB46-E3D548D19A86 + + + + + + + StockQuoter + + + + + + 237,62 + + + + + + + + + + + + + + + PackageConfReference + + E + + + + + + + + ComponentPackages + + Broker + + Broker + + + + + + 328,90 + + + + + E80D987B-C868-4200-A025-D6BDE84CB394 + + + + + + + ComponentImplBrokerRef + + + + + + 72,72 + + + + + + ComponentBrokerRef + + + + + + 483,70 + + + + + + + + + Implementation + + + + + PackageInterface + + Ew + + + + + + + Distributor + + Distributor + + + + + + 363,69 + + + + + 7BA5A01F-734A-4D7F-BBD1-12E334E22B6E + + + + + + + ComponentImplDistributorRef + + + + + + 47,47 + + + + + + ComponentDistributorRef + + + + + + 499,51 + + + + + + Implementation + + We + + + + + + PackageInterface + + Ew + + + + + + + StockQuoter + + StockQuoter + + + + + + 447,97 + + + + + 940CEDE9-E370-48ED-BD5B-1DAC37C4A42F + + + + + + + ComponentImplStockQuoterRef + + + + + + 138,75 + + + + + + Implementation + + We + + + + + + + + DeploymentPlans + + Plan + + 2F84C225-11DA-4863-B9C1-5FBAEEADFDA6 + + + + + + Node_Broker + + + + + + 74,60 + + + + + + Node_Distributor + + + + + + 207,60 + + + + + + StockBroker + + + + + + 408,51 + + + + + + StockDistributor + + + + + + 406,168 + + + + + + + + + + + + + + + + DefaultGroup + + + + + + 76,195 + + + + + + DefaultGroup + + + + + + 209,195 + + + + + + + + Targets + + Domain + + 62AD326C-7A22-44CD-95B9-31496DCFD9AE + + + + + + Broker + + + + + + 125,69 + + + + + + + + + + + + + + + Distributor + + + + + + 128,149 + + + + + + + + + + + + + + + + + TopLevelPackages + + Default + + TopLevelPackage + + + + + + 100,114 + + + + + + Default + + + + + + 254,114 + + + + + + package + + + + + + + ComponentBuild + + + + + 0 + + + yes + + + yes + + + yes + + + -2 + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/README.html b/modules/CIAO/docs/tutorials/Quoter/Simple/README.html new file mode 100644 index 00000000000..85e38e81150 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/README.html @@ -0,0 +1,172 @@ + + + + + + +Quoter example README +

To download the source codes of this example please refer to the SVN +repository at $CIAO_ROOT\docs\tutorials\Quoter\Simple +

+
+

Example Description

+
+The StockDistributor +component would be monitoring a real-time stock database. When the +values of particular stocks change, it pushes a CCM eventtype +that contains the stock's name via a CCM event source to the +corresponding CCM +
+
+event sink implemented by one or +more StockBroker components. If these components are interested +in the stock they can obtain more information about it by invoking a +request/response operation via their CCM receptacle on a CCM facet +exported by the StockDistributor component. The diagram of this +example is shown in fig 1. +
+


+figure 1
+

+

This example +is based on a series of  CORBA Component Model columns +written by Douglas +Schmidt and Steve +Vinoski, and has been consistently used as a example for TAO. Please +refer to TAO +online tutorial for details.
+

+

The files you will find

+
  • The interfaces, data types and exceptions shared by the components +of +this +application are specified in the Stock_Base.idl.The +lib +generated +from Stock_Base.idl is linked to all the components of this example.
  • +
  •  mpc files for each of the components are available in the +components +directories. We use the  MPC +to +generate makefiles and Visual C++ project/solutions files for all ACE, TAO and CIAO +libraries.
  • +
  •  idl and cidl files for each component are placed in +components directory. +
  • +
  •  The _exec.h and _exec.cpp files +are the actual +implementation of the components.
  • +
    +

    Make

    +Navigate to  the directory $CIAO_ROOT/docs/tutorials/Quoter/Simple +and do:
    +$ACE_ROOT/bin/mwc.pl -type gnuace (use different -type option +if you are using a +compiler/IDE other than GNU make)
    +For example, use %ACE_ROOT%/bin/mwc.pl -type vc71 if you +are using +Visual C++ 7.1 IDE.
    +
    +Then build/make the generated project/make files. Correct errors in the +source codes if necessary.
    +
    +

    Assemble

    +

    Now we can step forward to build the assembly.

    +
  • In the descriptor subdirectory, you'll find a XML descriptor file +that +describes your deployment plan, the +flattened_deploymentplan.cdp. This file declaratively specifies how the +component assembly is +constructed. +Specifically, it defines the component types, component instances, +component +connections and implementation artifact descriptions.
    +
  • +
  • Please make sure that the Modified_Deployment.xsd and XMI.xsd +files +are in the Display/descriptors directory. The former file could be +found in $CIAO_ROOT/docs/schema +directory.
    +
    +Note: Creating the deployment plan descriptor is a tedious and +error-prone job, +you can download CoSMIC +to +assist you in this step. Please refer to this tutorial +to see how you can use CoSMIC to automatically generate the descriptor +file. +

    +
  • +
    +

    Running the program

    +>From different shells in $CIAO_ROOT/docs/tutorials/Quoter/Simple/descriptors/ +directory: +
      +
    • Start NodeManagers (NodeDameon) by running runNodeDaemon.pl
    • +
    • Start the execution manager +$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o ior -i +Stock.dat 
    • +
    +

    The Stock.dat file describes the deployment daemons CIAO's +Execution_Manager +will contact to instantiate ComponentServer's, home's, and component +instances. +Each line specify the name of a installation "destination" and the +corresponding corbaloc IOR for the CIAO_Daemon.

    +
      +
    • NOTE: As one can see, we use the "Stock.dat" file to +instruct the Execution_Manager how to find the endpoint of each +individual NodeManager (i.e., Node Daemon) where component(s) will be +deployed, so this is non-standard. We plan to use Naming Service to do +this in the future.
    • +
    +
      +
    • Start the plan_launcher by running +$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p +flattened_deploymentplan.cdp -k file://ior
    • +
    • By now the components should be successfully deployed. You may +run the driver program to start the application. Open a new shell, keep +in the /Quoter/descriptors directory,  and try the following +commands, see what happens in the component server
      +
    • +
    +       
    +        Start the distributor +service at a frequency of  3 hertz:
    +       ../Distributor/Distributor.exe +-o   -r3
    +
    +        Use the broker program to +subscribe to MSFT stock
    +        ../Broker/Broker.exe -s MSFT
    +
    +        Subscribe to IBM stock
    +        ../Broker/Broker.exe -s IBM
    +
    +        Unsubscribe to MSFT stock
    +        ../Broker/Broker -u MSFT
    +
    +        Turn off the distribution +service:
    +        ../Distributor/Distributor -f
    +
    +Please contact mxiong@dre.vanderbilt.edu if you have any questions. +       
    + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl new file mode 100644 index 00000000000..41277386efa --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl @@ -0,0 +1,46 @@ +//$Id$ + +#ifndef STOCK_BASE_IDL +#define STOCK_BASE_IDL + +#include + +module Stock +{ + exception Invalid_Stock {}; + typedef sequence ImageBlob; + + /** + * @struct StockInfo + */ + struct StockInfo { + string name; + long high; + long low; + long last; + }; + + /** + * @interface: StockQuoter + * + * @brief: component facet + */ + interface StockQuoter { + /// Returns the current stock info + StockInfo get_stock_info (in string stock_name) + raises (Invalid_Stock); + }; + + + /** + * @event StockName + * + * @brief component event + */ + eventtype StockName { + // Name of the stock. + public string name; + }; +}; + +#endif /* STOCK_BASE_IDL */ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc new file mode 100644 index 00000000000..f364aca58ba --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc @@ -0,0 +1,83 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Stock_Base -l ../lib -o ../lib" + +project(Stock_Base_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=STOCK_BASE_STUB_Export \ + -Wb,stub_export_include=Stock_Base_stub_export.h \ + -Wb,skel_export_macro=STOCK_BASE_SKEL_Export \ + -Wb,skel_export_include=Stock_Base_skel_export.h \ + -Wb,exec_export_macro=STOCK_BASE_EXEC_Export \ + -Wb,exec_export_include=Stock_Base_exec_export.h + + IDL_Files { + Stock_Base.idl + } +} + +project(Stock_Base_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Stock_Base_idl_gen + idlflags += \ + -Wb,export_macro=STOCK_BASE_EXEC_Export \ + -Wb,export_include=Stock_Base_exec_export.h + + IDL_Files { + Stock_BaseE.idl + } +} + +project(Stock_Base_stub) : ccm_stub { + after += Stock_Base_lem_gen + libs += + libpaths += ../lib + libout = ../lib + sharedname = Stock_Base_stub + dynamicflags = STOCK_BASE_STUB_BUILD_DLL STOCK_BASE_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Stock_BaseC.cpp + Stock_BaseEC.cpp + } + + Header_Files { + Stock_BaseC.h + Stock_Base_stub_export.h + } + + Inline_Files { + Stock_BaseC.inl + } +} + + +project(Stock_Base_skel) : ciao_executor { + after += Stock_Base_stub Stock_Base_lem_stub + sharedname = Stock_Base_skel + libs += Stock_Base_stub + + libpaths += ../lib + libout = ../lib + dynamicflags = STOCK_BASE_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Stock_BaseS.cpp + } + + Header_Files { + Stock_BaseS.h + Stock_Base_skel_export.h + } + + Inline_Files { + Stock_BaseS.inl + } +} + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd new file mode 100644 index 00000000000..e4ca7227682 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd @@ -0,0 +1,13 @@ + + + + 656C40ED-88A4-4F00-BBFA-FC7738658B16 + + + + + MyQuoter.ComponentImplementations.StockBrokerImplementation.StockBrokerMonolithicImpl + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Default.pcd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Default.pcd new file mode 100644 index 00000000000..9145f77bd4a --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Default.pcd @@ -0,0 +1,6 @@ + + + + 54077757-B4AF-443C-BA8D-9B5B68E1D1E0 + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd new file mode 100644 index 00000000000..addceeb3627 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd @@ -0,0 +1,13 @@ + + + + 4C5B7889-7AD7-425E-B565-D885746ECF0A + + + + + MyQuoter.ComponentImplementations.StockDistributorImplementation.StockDistributorMonolithicImpl + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd new file mode 100644 index 00000000000..a1942b2ebf2 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd @@ -0,0 +1,14 @@ + + + + AD80D377-9AD2-488F-87CD-C490858EA393 + + + Broker + + + + Distributor + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat new file mode 100644 index 00000000000..3cb183c790c --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/NodeMap.dat @@ -0,0 +1,3 @@ +Distributor corbaloc:iiop:localhost:30000/Distributor.NodeManager + +Broker corbaloc:iiop:localhost:40000/Broker.NodeManager \ No newline at end of file diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Plan.cdp b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Plan.cdp new file mode 100644 index 00000000000..4a633c49601 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Plan.cdp @@ -0,0 +1,248 @@ + + + + 6D382DAE-9024-4C4D-B91B-A0F9176AFACF + + + Quoter.ComponentImplementations.StockBrokerImplementation.StockBrokerMonolithicImpl + + + + + component factory + + + tk_string + + + create_Stock_StockBrokerComp_Impl + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Quoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_exec + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Stock_StockBroker_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Quoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_svnt + + + + + + + Quoter.ComponentImplementations.StockDistributorImplementation.StockDistributorMonolithicImpl + + + + + component factory + + + tk_string + + + create_Stock_StockDistributorComp_Impl + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Quoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_exec + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Stock_StockDistributor_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Quoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_svnt + + + + + + + Quoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockBroker + Broker + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + StockBroker.ior + + + + + + + Quoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockDistributor + Distributor + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + StockDistributor.ior + + + + + + + Quoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockBroker:read_quoter-Quoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockDistributor:push_quoter + + read_quoter + false + SimplexReceptacle + + + + push_quoter + true + Facet + + + + + + Quoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockDistributor:notify_out-Quoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockBroker:notify_in + + notify_out + false + EventPublisher + + + + notify_in + true + EventConsumer + + + + + + Quoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_svnt + + + StockBroker_svnt + + entryPoint + + + tk_string + + + create_Stock_StockBrokerHome_Servant + + + + + + + Quoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_exec + + + StockBroker_exec + + entryPoint + + + tk_string + + + create_Stock_StockBrokerHome_Impl + + + + + + + Quoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_svnt + + + StockDistributor_svnt + + entryPoint + + + tk_string + + + create_Stock_StockDistributorHome_Servant + + + + + + + Quoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_exec + + + StockDistributor_exec + + entryPoint + + + tk_string + + + create_Stock_StockDistributorHome_Impl + + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker.ccd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker.ccd new file mode 100644 index 00000000000..f4d1f099069 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker.ccd @@ -0,0 +1,49 @@ + + + + 58E736A4-F9F5-44CF-AA0F-83A280F907A6 + + IDL:Stock/StockBroker:1.0 + + IDL:Stock/StockBroker:1.0 + + IDL:Stock/StockSubscriber:1.0 + + IDL:omg.org/Components/Navigation:1.0 + + IDL:omg.org/Components/Receptacles:1.0 + + IDL:omg.org/Components/Events:1.0 + + IDL:omg.org/Components/CCMObject:1.0 + + IDL:omg.org/CORBA/Object:1.0 + + Broker.idl + + + notify_in + IDL:Stock/StockNameConsumer:1.0 + IDL:Stock/StockNameConsumer:1.0 + IDL:omg.org/Components/EventConsumerBase:1.0 + IDL:omg.org/CORBA/Object:1.0 + false + false + false + false + EventConsumer + + + + read_quoter + IDL:Stock/StockQuoter:1.0 + IDL:Stock/StockQuoter:1.0 + IDL:omg.org/CORBA/Object:1.0 + false + false + false + false + SimplexReceptacle + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBrokerMonolithicImpl.cid b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBrokerMonolithicImpl.cid new file mode 100644 index 00000000000..08ca7d0f453 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBrokerMonolithicImpl.cid @@ -0,0 +1,35 @@ + + + + 7205655C-4CBD-42BE-A0F1-870705A77D77 + + + + + + MyQuoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_stub + + + + MyQuoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_svnt + + + + MyQuoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_exec + + + + + + ComponentIOR + + + tk_string + + + StockBroker.ior + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_exec.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_exec.iad new file mode 100644 index 00000000000..790c9e9263a --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_exec.iad @@ -0,0 +1,78 @@ + + + + 32859990-B97C-4195-BA0E-60DA9930C5FB + + StockBroker_exec + + + MyQuoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_svnt + + + + + MyQuoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_stub + + + + + entryPoint + + + tk_string + + + create_Stock_StockBrokerHome_Impl + + + + + + architecture + + + tk_string + + + x86 + + + + + + artifactVersion + + + tk_string + + + 0.0.0.0 + + + + + + configuration + + + tk_string + + + Release + + + + + + operatingSystem + + + tk_string + + + Linux + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_stub.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_stub.iad new file mode 100644 index 00000000000..e2eb6f48383 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_stub.iad @@ -0,0 +1,56 @@ + + + + C964CED0-3DFD-4D87-9AB2-0FB76C672D6E + + StockBroker_stub + + + architecture + + + tk_string + + + x86 + + + + + + artifactVersion + + + tk_string + + + 0.0.0.0 + + + + + + configuration + + + tk_string + + + Release + + + + + + operatingSystem + + + tk_string + + + Linux + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_svnt.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_svnt.iad new file mode 100644 index 00000000000..dde70409dc0 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockBroker_svnt.iad @@ -0,0 +1,73 @@ + + + + 28F23672-EB7E-41DD-8F12-77B9FC9175C2 + + StockBroker_svnt + + + MyQuoter.ImplementationArtifacts.StockBrokerArtifacts.StockBroker_stub + + + + + entryPoint + + + tk_string + + + create_Stock_StockBrokerHome_Servant + + + + + + architecture + + + tk_string + + + x86 + + + + + + artifactVersion + + + tk_string + + + 0.0.0.0 + + + + + + configuration + + + tk_string + + + Release + + + + + + operatingSystem + + + tk_string + + + Linux + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor.ccd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor.ccd new file mode 100644 index 00000000000..ccb97ed3691 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor.ccd @@ -0,0 +1,49 @@ + + + + B124B4A8-F51C-4F63-9A08-35256C9A9259 + + IDL:Stock/StockDistributor:1.0 + + IDL:Stock/StockDistributor:1.0 + + IDL:Stock/Trigger:1.0 + + IDL:omg.org/Components/Navigation:1.0 + + IDL:omg.org/Components/Receptacles:1.0 + + IDL:omg.org/Components/Events:1.0 + + IDL:omg.org/Components/CCMObject:1.0 + + IDL:omg.org/CORBA/Object:1.0 + + Distributor.idl + + + notify_out + IDL:Stock/StockNameConsumer:1.0 + IDL:Stock/StockNameConsumer:1.0 + IDL:omg.org/Components/EventConsumerBase:1.0 + IDL:omg.org/CORBA/Object:1.0 + true + false + false + false + EventPublisher + + + + push_quoter + IDL:Stock/StockQuoter:1.0 + IDL:Stock/StockQuoter:1.0 + IDL:omg.org/CORBA/Object:1.0 + true + false + false + false + Facet + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributorMonolithicImpl.cid b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributorMonolithicImpl.cid new file mode 100644 index 00000000000..d462449f1fc --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributorMonolithicImpl.cid @@ -0,0 +1,35 @@ + + + + 8F7FE6F8-1AF2-4490-90BE-EC41863033FC + + + + + + MyQuoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_stub + + + + MyQuoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_svnt + + + + MyQuoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_exec + + + + + + ComponentIOR + + + tk_string + + + StockDistributor.ior + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_exec.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_exec.iad new file mode 100644 index 00000000000..1cfcbbe62f7 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_exec.iad @@ -0,0 +1,78 @@ + + + + 00F15FA6-FA09-460E-9670-D878F508BA4D + + StockDistributor_exec + + + MyQuoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_svnt + + + + + MyQuoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_stub + + + + + entryPoint + + + tk_string + + + create_Stock_StockDistributorHome_Impl + + + + + + architecture + + + tk_string + + + x86 + + + + + + artifactVersion + + + tk_string + + + 0.0.0.0 + + + + + + configuration + + + tk_string + + + Release + + + + + + operatingSystem + + + tk_string + + + Linux + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_stub.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_stub.iad new file mode 100644 index 00000000000..c359b2ca929 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_stub.iad @@ -0,0 +1,56 @@ + + + + 2DCEC213-F447-421C-A27A-D6222EFB9A38 + + StockDistributor_stub + + + architecture + + + tk_string + + + x86 + + + + + + artifactVersion + + + tk_string + + + 0.0.0.0 + + + + + + configuration + + + tk_string + + + Release + + + + + + operatingSystem + + + tk_string + + + Linux + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_svnt.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_svnt.iad new file mode 100644 index 00000000000..3952c4eb237 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockDistributor_svnt.iad @@ -0,0 +1,73 @@ + + + + 5CDF934B-8D0F-4012-89A1-811D2E9C0D63 + + StockDistributor_svnt + + + MyQuoter.ImplementationArtifacts.StockDistributorArtifacts.StockDistributor_stub + + + + + entryPoint + + + tk_string + + + create_Stock_StockDistributorHome_Servant + + + + + + architecture + + + tk_string + + + x86 + + + + + + artifactVersion + + + tk_string + + + 0.0.0.0 + + + + + + configuration + + + tk_string + + + Release + + + + + + operatingSystem + + + tk_string + + + Linux + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cid b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cid new file mode 100644 index 00000000000..f5cb6076255 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cid @@ -0,0 +1,39 @@ + + + + EBE916A6-E4E5-469C-A8EE-EDDFCA4B9CE3 + + + + MyQuoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockBroker + + + + MyQuoter.ComponentImplementations.StockQuoterImplementation.StockQuoter.StockDistributor + + + + read_quoter_push_quoter + + read_quoter + _94A1586C-2E9A-4FFD-8D75-7FC5A54F6B71 + + + push_quoter + _2DBE2452-FDE3-4399-9210-509CAC49139A + + + + notify_out_notify_in + + notify_out + _2DBE2452-FDE3-4399-9210-509CAC49139A + + + notify_in + _94A1586C-2E9A-4FFD-8D75-7FC5A54F6B71 + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cpd new file mode 100644 index 00000000000..f84439ad25b --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/StockQuoter.cpd @@ -0,0 +1,11 @@ + + + + B6A364E4-7014-4B8F-8CB5-E6EDE243E2F7 + + + MyQuoter.ComponentImplementations.StockQuoterImplementation.StockQuoter + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/TopLevelPackage.tpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/TopLevelPackage.tpd new file mode 100644 index 00000000000..ca9b5a6fc09 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/TopLevelPackage.tpd @@ -0,0 +1,6 @@ + + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd new file mode 100644 index 00000000000..f4adac91934 --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl new file mode 100755 index 00000000000..76b72fefe4f --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl @@ -0,0 +1,43 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$tg_deamons = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$ior_base1 = "NodeApp1.ior"; +$ior_file1 = $tg_deamons->LocalFile ($ior_base1); +$ior_base2 = "NodeApp2.ior"; +$ior_file2 = $tg_deamons->LocalFile ($ior_base2); + +#for ($iter = 0; $iter <= $#ARGV; $iter++) { +# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") { +# print "Run_Test Perl script for NodeApplicationTest \n\n"; +# print "run_test \n"; +# print "\n"; +# print "-h -- prints this information\n"; +# exit 0; +# } +#} + +$ior_file1 = $tg_deamons->DeleteFile ($ior_base1); +$ior_file2 = $tg_deamons->DeleteFile ($ior_base2); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; +$DANCE_ROOT=$ENV{'DANCE_ROOT'}; + +$SV1 = $tg_deamons->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:30000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -d 1000"); + +$SV2 = $tg_deamons->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:40000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -d 1000"); + +$SV1->Spawn (); +$SV2->Spawn (); + +sleep (99999999999); diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg new file mode 100644 index 00000000000..a8550fe1176 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg new file mode 100644 index 00000000000..b156af58db4 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg new file mode 100644 index 00000000000..148abd4830d Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg new file mode 100644 index 00000000000..e1f58c525b6 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg new file mode 100644 index 00000000000..c971b69c29b Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg new file mode 100644 index 00000000000..2d67b365a0b Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg new file mode 100644 index 00000000000..bd07ff1f38e Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg new file mode 100644 index 00000000000..6f9498be6f8 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5a.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5a.jpg new file mode 100644 index 00000000000..d7f2e9c276c Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5a.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg new file mode 100644 index 00000000000..724c40c00f8 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg new file mode 100644 index 00000000000..44f1dfb009f Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg new file mode 100644 index 00000000000..ffb3d89640d Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg new file mode 100644 index 00000000000..594cc1c3eb7 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg new file mode 100644 index 00000000000..2f3edd11329 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/step1.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step1.jpg new file mode 100644 index 00000000000..b0346ee841b Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step1.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/step2.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step2.jpg new file mode 100644 index 00000000000..a4526901307 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step2.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/step3.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step3.jpg new file mode 100644 index 00000000000..d7687394851 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step3.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/step6.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step6.jpg new file mode 100644 index 00000000000..e1e3b28055d Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/step6.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/steps.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/steps.jpg new file mode 100644 index 00000000000..ddccdc2b373 Binary files /dev/null and b/modules/CIAO/docs/tutorials/Quoter/Simple/images/steps.jpg differ diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/index.html b/modules/CIAO/docs/tutorials/Quoter/Simple/index.html new file mode 100644 index 00000000000..ce61b3673ef --- /dev/null +++ b/modules/CIAO/docs/tutorials/Quoter/Simple/index.html @@ -0,0 +1,351 @@ + + + + Building a Stock Quoter with TAO - A Tutorial + + + + + + + + + + +

    Building a Stock Quoter with CIAO, +CoSMIC, and DAnCE - A Tutorial

    +

      +

    +

    This tutorial provides a step-by-step lesson on developing +component-based distributed applications using CoSMIC modeling toolkit and the +CIAO DAnCE +framework. The example application used in this tutorial is a Stock Quoter that +consists of two components; the StockDistributor and the StockBroker. +The StockDistributor notifies one or more stock brokers whenever a stock +price changes. Upon receiving the notification, the StockBroker fetches +information about a particular stock from the StockDistributor. The +figure bellow shows the application diagram. This Stock Quoter application is +based on a series of CORBA component + model +columns written by Doug Schmidt +and Steve Vinoski for C/C++ + Users Journal and has consistently been +used as an example for TAO.

    +

      +

    +


    +Stock Quoter application Diagram

    +

      +

    +

    This is a step-by-step tutorial that will walk you through +the development and deployment phases of a CCM application (Stock Quoter). This +tutorial assumes that you have read and understood the following articles that +describe the example:

    +

    ·       + + The + CORBA Component Model, Part 1: Evolving Towards Component Middleware

    +

    ·       + + The + CORBA Component Model, Part 2: Defining Components with the IDL 3.x Types

    +

    ·       + + The + CORBA Component Model, Part 3: The CCM Container Architecture and Component + Implementation Framework

    +

    ·       + + The + CORBA Component Model Part 4: The CORBA Component Model Part 4: Implementing + Components with CCM

    +

      +

    +

     In addition to +the articles above, reading and understanding the resources below will greatly +help you follow through this tutorial:

    +

    ·       + + DAnCE: A + QoS-enabled Component Deployment and Conguration Engine +

    +

    ·       + + TAO’s Developer’s Guide Version 1.4a. Chapter + 32 : CIAO and CCM.

    +

      +

    +

    Prerequisites:
    +
     Before you start, you need the +following:

    +

    ·       + ACE+TAO+CIAO (Component Integraated ACE ORB). ACE + TAO + CIAO provide the CCM infrastructure necessary +to enable the CCM-based distributed component interaction. You can click here to download the latest ACE + +TAO + CIAO and click here +for information on how to build ACE+TAO+CIAO.

    +

    ·       + Generic Modeling Environment (GME). GME is a configurable toolkit for creating domain-specific +modeling and program synthesis environments. It provides the execution +environment for CoSMIC toolkits. Click here to +download GME.

    +

    ·       + CoSMIC toolkit. Click here to download the latest +CoSMIC release.

    +
    +
    +
    +
    +
    +
    +

    Note: +

    +

    1.     Usually you should download the latest GME, but it is possible +that CoSMIC hasn't been updated yet to support the very latest GME..The +installation process of CoSMIC will tell you which version it is +expecting.  So please make sure the GME version you +are using is the version required by CoSMIC. A different version of GME +may result in undefined errors.

    +

    2.     + + Make sure you +install GME first before you start with CoSMIC toolkits.

    +
    +
    +
    +
    +
    +
    +

      +

    +

    Steps for +Developing the Stock Quoter Application:

    +

      +

    +

    +

    +

    Steps for Developing Stock Quoter Application

    +

      +

    +

    Listed +below are the steps for developing the Stock Quoter application. Each link is a +step-by-step tutorial of the specific step. +

    +
    +
      +
    1. + Define your interfaces and component types: +
        +
      1. + Define your interfaces using IDL 2.x features, e.g., use the familiar + CORBA types (such as + struct, + sequence, + long, + Object, + interface, + raises, etc.) to define your + interfaces & exceptions. +
      2. + Define your component types using IDL 3.x features, e.g., use the new + CCM keywords (such as + component, + provides, + uses, + publishes, + emits, & + consumes) to group the IDL 2.x + types together to form components.
      3. +
      +
    2. + Implement your components, e.g., using C++ or Java + & the Component Implementation Definition Language (CIDL), which generates + component servants, executor interfaces, associated metadata, & + compositions. +
    3. + Package your components, + + Bundle component implementations with metadata giving their + default properties and their component descriptors into component packages. + +
    4. + Assemble your components, e.g., group related + components together & characterize their metadata that describes the + components present in the assembly. + +
    5. + Plan your deployment, + analyze the runtime resource requirements of assembly descriptors and prepare + and deploy required resources where component assemblies can be realized. +
    6. + Deploy your components & run your application, + e.g., move the component assembly packages to the appropriate nodes in the + distributed system & invoke operations on components to perform the + application logic. +
    7. +
    +
    +
    +
    +
    Ming Xiong
    +
    Abdullah Sowayan
    +
     
    +
    $Id$
    + + diff --git a/modules/CIAO/docs/value_factory_registration.html b/modules/CIAO/docs/value_factory_registration.html new file mode 100644 index 00000000000..df43175f9ca --- /dev/null +++ b/modules/CIAO/docs/value_factory_registration.html @@ -0,0 +1,49 @@ + + + + + + + Registration of Valuetype Factories for Event Sinks + + + +

    Registration of Valuetype Factories for Event Sinks

    +

    Components with one or more event sink (consumer) ports will need to have a + valuetype factory registered with the underlying ORB in order to correctly + demarshal the state of eventtypes it receives over the wire.

    +

    For the common case (eventtypes that contain only one or more state members), + the IDL compiler generates a concrete class with a name constructed from the + valuetype name and an '_init' suffix, and then generates a macro + in the servant constructor that registers this factory with the container's + ORB. However, an eventtype, like any valuetype, may also contain operation + and/or factory declarations. In these cases things are not so simple. For + example a factory declaration in an IDL valuetype or eventtype will generate a + pure virtual function of the same name in the associated _init class, meaning + that ORB factory registration for this type must be with a derived factory + class written by the application developer. The table below shows all possible + cases of IDL compiler factory generation.

    + + + + + + + + + + + + + + + + +
    Has OperationHas No Operation
    Has FactoryABSTRACT FACTORYABSTRACT FACTORY
    Has No FactoryNO FACTORYCONCRETE FACTORY
    +

    The IDL compiler will generate a macro to register the factory with the + container's ORB only in the case where a concrete factory is generated by the + IDL compiler, and thus no subclassing is necessary. There is also a command + line option for the IDL compiler, -Sfr, + that turns off generation of the macro in all cases.

    + + diff --git a/modules/CIAO/etc/ciao.doxygen b/modules/CIAO/etc/ciao.doxygen new file mode 100644 index 00000000000..946a9568c58 --- /dev/null +++ b/modules/CIAO/etc/ciao.doxygen @@ -0,0 +1,174 @@ +# Doxyfile 1.3.4 +# +# $Id$ +# + +PROJECT_NAME = CIAO +PROJECT_NUMBER = Snapshot +OUTPUT_DIRECTORY = . +OUTPUT_LANGUAGE = English +DISABLE_INDEX = NO +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = YES +CLASS_DIAGRAMS = YES +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = YES +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +DISTRIBUTE_GROUP_DOC = YES +TAB_SIZE = 8 +ENABLED_SECTIONS = +SHORT_NAMES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +INPUT = TAO/CIAO/ciao TAO/CIAO/ccm +FILE_PATTERNS = *.cpp *.h *.i *.inl *.pidl *.txt *.idl +RECURSIVE = YES +EXCLUDE = +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +IMAGE_PATH = +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 1 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +GENERATE_HTML = YES +HTML_OUTPUT = html/tao/ciao/ciao +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = TAO . ACEXML +PREDEFINED = __ACE_INLINE__ \ + ACE_TEMPLATES_REQUIRE_SOURCE \ + ACE_BEGIN_VERSIONED_NAMESPACE_DECL \ + ACE_END_VERSIONED_NAMESPACE_DECL \ + ACE_INLINE +EXPAND_AS_DEFINED = ACE_RCSID \ + ACE_UNIMPLEMENTED_FUNC \ + ACE_CACHE_MAP_MANAGER \ + ACE_THROW_SPEC + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +TAGFILES = html/ace/ACE.tag=../../../ace \ + html/tao/TAO.tag=../.. \ + html/ace/ssl/ACE_SSL.tag=../../../ace/ssl \ + html/tao/portableserver/TAO_PortableServer.tag=../../portableserver \ + html/tao/iortable/TAO_IORTable.tag=../../iortable \ + html/tao/rtcorba/TAO_RTCORBA.tag=../../rtcorba \ + html/tao/security/TAO_Security.tag=../../security \ + html/acexml/ACEXML.tag=../../../acexml \ + html/tao/rtportableserver/TAO_RTPortableServer.tag=../../rtportableserver \ + html/tao/cosnaming/TAO_CosNaming.tag=../../cosnaming \ + html/tao/ifr/TAO_IFR.tag=../../ifr +GENERATE_TAGFILE = html/tao/ciao/ciao/CIAO.tag +ALLEXTERNALS = NO +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz + +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DOT_MULTI_TARGETS = YES +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. +DOT_PATH = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +SEARCHENGINE = YES + diff --git a/modules/CIAO/etc/ciao_DAnCE.doxygen b/modules/CIAO/etc/ciao_DAnCE.doxygen new file mode 100644 index 00000000000..615ceae6869 --- /dev/null +++ b/modules/CIAO/etc/ciao_DAnCE.doxygen @@ -0,0 +1,172 @@ +# Doxyfile 1.3.4 +# +# $Id$ +# +PROJECT_NAME = DAnCE +PROJECT_NUMBER = Snapshot +OUTPUT_DIRECTORY = . +OUTPUT_LANGUAGE = English +DISABLE_INDEX = NO +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = YES +CLASS_DIAGRAMS = YES +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = YES +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +DISTRIBUTE_GROUP_DOC = YES +TAB_SIZE = 8 +ENABLED_SECTIONS = +SHORT_NAMES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +INPUT = TAO/CIAO/DAnCE +FILE_PATTERNS = *.cpp *.h *.i *.inl *.pidl *.txt *.idl +RECURSIVE = YES +EXCLUDE = TAO/CIAO/DAnCE/examples TAO/CIAO/DAnCE/tests +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +IMAGE_PATH = +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 1 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +GENERATE_HTML = YES +HTML_OUTPUT = html/tao/ciao/dance +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = TAO . ACEXML TAO/tao/IORTable +PREDEFINED = __ACE_INLINE__ \ + ACE_TEMPLATES_REQUIRE_SOURCE \ + ACE_BEGIN_VERSIONED_NAMESPACE_DECL \ + ACE_END_VERSIONED_NAMESPACE_DECL \ + ACE_INLINE +EXPAND_AS_DEFINED = ACE_RCSID \ + ACE_UNIMPLEMENTED_FUNC \ + ACE_CACHE_MAP_MANAGER \ + ACE_THROW_SPEC + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +TAGFILES = html/ace/ACE.tag=../../../ace \ + html/tao/TAO.tag=../.. \ + html/ace/ssl/ACE_SSL.tag=../../../ace/ssl \ + html/tao/portableserver/TAO_PortableServer.tag=../../portableserver \ + html/tao/iortable/TAO_IORTable.tag=../../iortable \ + html/tao/rtcorba/TAO_RTCORBA.tag=../../rtcorba \ + html/tao/security/TAO_Security.tag=../../security \ + html/acexml/ACEXML.tag=../../../acexml \ + html/tao/rtportableserver/TAO_RTPortableServer.tag=../../rtportableserver \ + html/tao/cosnaming/TAO_CosNaming.tag=../../cosnaming \ + html/tao/ifr/TAO_IFR.tag=../../ifr +GENERATE_TAGFILE = html/tao/ciao/DAnCE.tag +ALLEXTERNALS = NO +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz + +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DOT_MULTI_TARGETS = YES +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. +DOT_PATH = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +SEARCHENGINE = YES diff --git a/modules/CIAO/etc/ciao_config_handlers.doxygen b/modules/CIAO/etc/ciao_config_handlers.doxygen new file mode 100644 index 00000000000..610ad52e2c3 --- /dev/null +++ b/modules/CIAO/etc/ciao_config_handlers.doxygen @@ -0,0 +1,173 @@ +# Doxyfile 1.3.4 +# +# $Id$ +# +PROJECT_NAME = CONFIG_HELPERS +PROJECT_NUMBER = Snapshot +OUTPUT_DIRECTORY = . +OUTPUT_LANGUAGE = English +DISABLE_INDEX = NO +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = YES +CLASS_DIAGRAMS = YES +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = YES +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +DISTRIBUTE_GROUP_DOC = YES +TAB_SIZE = 8 +ENABLED_SECTIONS = +SHORT_NAMES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +INPUT = TAO/CIAO/tools/Config_Handlers +FILE_PATTERNS = *.cpp *.h *.i *.inl *.pidl *.txt *.idl +RECURSIVE = +EXCLUDE = +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +IMAGE_PATH = +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 1 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +GENERATE_HTML = YES +HTML_OUTPUT = html/tao/ciao/tools/config_handlers +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = TAO . ACEXML TAO/tao/IORTable TAO/CIAO/tools/Config_Handlers +PREDEFINED = __ACE_INLINE__ \ + ACE_TEMPLATES_REQUIRE_SOURCE \ + ACE_BEGIN_VERSIONED_NAMESPACE_DECL \ + ACE_END_VERSIONED_NAMESPACE_DECL \ + ACE_INLINE +EXPAND_AS_DEFINED = ACE_RCSID \ + ACE_UNIMPLEMENTED_FUNC \ + ACE_CACHE_MAP_MANAGER \ + ACE_THROW_SPEC + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +TAGFILES = html/ace/ACE.tag=../../../../ace \ + html/tao/TAO.tag=../../.. \ + html/ace/ssl/ACE_SSL.tag=../../../../ace/ssl \ + html/tao/portableserver/TAO_PortableServer.tag=../../../portableserver \ + html/tao/iortable/TAO_IORTable.tag=../../../iortable \ + html/tao/rtcorba/TAO_RTCORBA.tag=../../../rtcorba \ + html/tao/security/TAO_Security.tag=../../../security \ + html/acexml/ACEXML.tag=../../../../acexml \ + html/tao/rtportableserver/TAO_RTPortableServer.tag=../../../rtportableserver \ + html/tao/cosnaming/TAO_CosNaming.tag=../../../cosnaming \ + html/tao/ifr/TAO_IFR.tag=../../../ifr +GENERATE_TAGFILE = html/tao/ciao/tools/Config_Handlers.tag +ALLEXTERNALS = NO +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz + +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DOT_MULTI_TARGETS = YES +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. +DOT_PATH = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +SEARCHENGINE = YES + diff --git a/modules/CIAO/etc/ciao_dds4ccm.doxygen b/modules/CIAO/etc/ciao_dds4ccm.doxygen new file mode 100644 index 00000000000..24b522581bb --- /dev/null +++ b/modules/CIAO/etc/ciao_dds4ccm.doxygen @@ -0,0 +1,172 @@ +# Doxyfile 1.3.4 +# +# $Id$ +# +PROJECT_NAME = DDS4CCM +PROJECT_NUMBER = Snapshot +OUTPUT_DIRECTORY = . +OUTPUT_LANGUAGE = English +DISABLE_INDEX = NO +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = YES +CLASS_DIAGRAMS = YES +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = YES +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +DISTRIBUTE_GROUP_DOC = YES +TAB_SIZE = 8 +ENABLED_SECTIONS = +SHORT_NAMES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +INPUT = TAO/CIAO/connectors/dds4ccm +FILE_PATTERNS = *.cpp *.h *.i *.inl *.pidl *.txt *.idl *.idl3 +RECURSIVE = YES +EXCLUDE = TAO/CIAO/connectors/dds4ccm/examples TAO/CIAO/connectors/dds4ccm/tests +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +IMAGE_PATH = +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 1 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +GENERATE_HTML = YES +HTML_OUTPUT = html/tao/ciao/dds4ccm +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = TAO . ACEXML TAO/tao/IORTable +PREDEFINED = __ACE_INLINE__ \ + ACE_TEMPLATES_REQUIRE_SOURCE \ + ACE_BEGIN_VERSIONED_NAMESPACE_DECL \ + ACE_END_VERSIONED_NAMESPACE_DECL \ + ACE_INLINE +EXPAND_AS_DEFINED = ACE_RCSID \ + ACE_UNIMPLEMENTED_FUNC \ + ACE_CACHE_MAP_MANAGER \ + ACE_THROW_SPEC + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +TAGFILES = html/ace/ACE.tag=../../../ace \ + html/tao/TAO.tag=../.. \ + html/ace/ssl/ACE_SSL.tag=../../../ace/ssl \ + html/tao/portableserver/TAO_PortableServer.tag=../../portableserver \ + html/tao/iortable/TAO_IORTable.tag=../../iortable \ + html/tao/rtcorba/TAO_RTCORBA.tag=../../rtcorba \ + html/tao/security/TAO_Security.tag=../../security \ + html/acexml/ACEXML.tag=../../../acexml \ + html/tao/rtportableserver/TAO_RTPortableServer.tag=../../rtportableserver \ + html/tao/cosnaming/TAO_CosNaming.tag=../../cosnaming \ + html/tao/ifr/TAO_IFR.tag=../../ifr +GENERATE_TAGFILE = html/tao/ciao/DAnCE.tag +ALLEXTERNALS = NO +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz + +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DOT_MULTI_TARGETS = YES +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. +DOT_PATH = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +SEARCHENGINE = YES diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl new file mode 100644 index 00000000000..9ea963189fd --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl @@ -0,0 +1,24 @@ +//$Id$ + +#ifndef BMCLOSEDED_IDL +#define BMCLOSEDED_IDL + +#include "BasicSP.idl" +#include "BasicSPE.idl" + +module BasicSP +{ + component BMClosedED + { + provides ReadData dataout; + uses ReadData datain; + publishes DataAvailable out_avail; + consumes DataAvailable in_avail; + }; + + home BMClosedEDHome manages BMClosedED + { + }; +}; + +#endif /* BMCLOSEDED_IDL */ diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc new file mode 100644 index 00000000000..4805a2137bd --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc @@ -0,0 +1,114 @@ +// $Id$ + +project(BMClosedED_idl_gen) : componentidldefaults { + custom_only = 1 + after += BasicSP_idl_gen + idlflags += -I $(CIAO_ROOT)/examples/BasicSP \ + -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 \ + -Wb,exec_export_macro=BMCLOSEDED_EXEC_Export \ + -Wb,exec_export_include=BMClosedED_exec_export.h \ + + IDL_Files { + BMClosedED.idl + } +} + +project(BMClosedED_lem_gen) : ciaoidldefaults { + after += BMClosedED_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=BMCLOSEDED_EXEC_Export \ + -Wb,export_include=BMClosedED_exec_export.h \ + -SS -I $(CIAO_ROOT)/examples/BasicSP + + IDL_Files { + BMClosedEDE.idl + } +} + +project(BMClosedED_stub): ccm_stub { + libout = ../lib + libpaths += ../lib + after += BasicSP_stub BasicSP_lem_gen BMClosedED_idl_gen + sharedname = BMClosedED_stub + includes += $(CIAO_ROOT)/examples/BasicSP + libs += BasicSP_stub + dynamicflags = BMCLOSEDED_STUB_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMClosedEDC.h + } + + Source_Files { + BMClosedEDC.cpp + } + + Inline_Files { + } +} + +project(BMClosedED_exec) : ciao_executor { + after += BMClosedED_stub BMClosedED_lem_gen BasicSP_exec + sharedname = BMClosedED_exec + libs += BMClosedED_stub + libs += BasicSP_stub BasicSP_exec + includes += $(CIAO_ROOT)/examples/BasicSP + libout = ../lib + libpaths += ../lib + + dynamicflags = BMCLOSEDED_EXEC_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMClosedED_exec.h + BMClosedED_exec_export.h + BMClosedEDEC.h + } + + Source_Files { + BMClosedED_exec.cpp + BMClosedEDEC.cpp + } + + Inline_Files { + } +} + +project(BMClosedED_svnt) : ciao_servant { + after += BasicSP_svnt BMClosedED_exec BasicSP_exec + + includes += $(CIAO_ROOT)/examples/BasicSP + + sharedname = BMClosedED_svnt + + libs += BMClosedED_stub BMClosedED_exec BasicSP_exec + libs += BasicSP_stub BasicSP_svnt + libout = ../lib + libpaths += ../lib + + dynamicflags = BMCLOSEDED_SVNT_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMClosedED_svnt.h + BMClosedEDS.h + } + + Source_Files { + BMClosedED_svnt.cpp + BMClosedEDS.cpp + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp new file mode 100644 index 00000000000..9b3808d8ce4 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp @@ -0,0 +1,193 @@ +// $Id$ + +#include "ace/SString.h" +#include "ace/OS_NS_string.h" +#include "BMClosedED_exec.h" + +#define DISPLACEMENT 256 + +MyImpl::ReadData_Impl::ReadData_Impl (const char* name) + : str_ (name) +{ +} + +MyImpl::ReadData_Impl::~ReadData_Impl (void) +{ +} + +void +MyImpl::ReadData_Impl::set_name (const char* name) +{ + this->str_ = name; +} + +char * +MyImpl::ReadData_Impl::get_data (void) +{ + return CORBA::string_dup (this->str_.in()); +} + +//================================================= + +/// Default constructor. +MyImpl::BMClosedED_exec_i::BMClosedED_exec_i (void) + : dataout_ (new ReadData_Impl("")) +{ +} + +/// Default destructor. +MyImpl::BMClosedED_exec_i::~BMClosedED_exec_i (void) +{ + delete this->dataout_; +} + +// Operations from HUDisplay::BMClosedED + +BasicSP::CCM_ReadData_ptr +MyImpl::BMClosedED_exec_i::get_dataout (void) +{ + return BasicSP::CCM_ReadData::_duplicate (this->dataout_); +} + +void +MyImpl::BMClosedED_exec_i::push_in_avail (BasicSP::DataAvailable *) +{ + + ACE_DEBUG ((LM_EMERGENCY, + "BMClosedED - Doing computations\n")); + + ACE_DEBUG ((LM_EMERGENCY, + "BMClosedED - Doing data fetch\n")); + + // Refresh position + BasicSP::ReadData_var dat + = this->context_->get_connection_datain (); + + if (CORBA::is_nil (dat.in ())) + { + ACE_DEBUG ((LM_EMERGENCY, + "BMClosedED - got nil from get_connection\n")); + + throw CORBA::BAD_INV_ORDER (); + } + + CORBA::String_var str = + dat->get_data (); + + ACE_DEBUG ((LM_EMERGENCY, + "BMClosedED - Display data is [%s]\n", + str.in ())); + + if (ACE_OS::strcmp (str.in (), "BM DEVICE DATA") == 0) + { + this->dataout_->set_name ("BM CLOSED ED DATA"); + } + + // Notify others. + BasicSP::DataAvailable_var event = + new OBV_BasicSP::DataAvailable; + + this->context_->push_out_avail (event); +} + +// Operations from Components::SessionComponent +void +MyImpl::BMClosedED_exec_i::set_session_context ( + Components::SessionContext_ptr ctx + ) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMClosedED_exec_i::set_session_context\n")); + + this->context_ = + BasicSP::CCM_BMClosedED_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::BMClosedED_exec_i::configuration_complete (void) +{ +} + +void +MyImpl::BMClosedED_exec_i::ccm_activate (void) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMClosedED_exec_i::ccm_activate\n")); +} + +void +MyImpl::BMClosedED_exec_i::ccm_passivate (void) +{ + // if (CIAO::debug_level () > 0) + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMClosedED_exec_i::ccm_passivate\n")); +} + +void +MyImpl::BMClosedED_exec_i::ccm_remove (void) +{ + // if (CIAO::debug_level () > 0) + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMClosedED_exec_i::ccm_remove\n")); +} + +extern "C" BMCLOSEDED_EXEC_Export ::Components::EnterpriseComponent_ptr +create_BasicSP_BMClosedED_Impl (void) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + MyImpl::BMClosedED_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; +} + +/// Default ctor. +MyImpl::BMClosedEDHome_exec_i::BMClosedEDHome_exec_i (void) +{ +} + +/// Default dtor. +MyImpl::BMClosedEDHome_exec_i::~BMClosedEDHome_exec_i (void) +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::BMClosedEDHome_exec_i::create (void) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + MyImpl::BMClosedED_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; +} + +extern "C" BMCLOSEDED_EXEC_Export ::Components::HomeExecutorBase_ptr +create_BasicSP_BMClosedEDHome_Impl (void) +{ + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + MyImpl::BMClosedEDHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; +} diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h new file mode 100644 index 00000000000..904421ec63b --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h @@ -0,0 +1,133 @@ +// $Id$ + +//================================================================ +/** + * @file BMClosedED_exec.h + * + * @author Balachandran Natarajan + */ +//================================================================ + +#ifndef CIAO_BMCLOSED_EXEC_H +#define CIAO_BMCLOSED_EXEC_H + +#include "BMClosedEDEC.h" +#include "tao/LocalObject.h" +#include "BMClosedED_exec_export.h" + +// The namespace name for the actual implementation classes doesn't +// really matter. Since there may be several different +// implementations for a component, they can very well be in different +// namespaces. +namespace MyImpl +{ + /** + * @class ReadData_Impl + * + * Implementation of the ReadData interface + */ + class BMCLOSEDED_EXEC_Export ReadData_Impl : + public virtual ::BasicSP::CCM_ReadData, + public virtual ::CORBA::LocalObject + { + public: + /// Constructor + ReadData_Impl(const char* name); + + void set_name (const char* name); + + virtual char * + get_data (void); + + ~ReadData_Impl (void); + + private: + CORBA::String_var str_; + }; + + /** + * @class BMClosedED_exec_i + * + * An example RateGen executor implementation class. + */ + class BMCLOSEDED_EXEC_Export BMClosedED_exec_i : + public virtual CIAO_BasicSP_BMClosedED_Impl::BMClosedED_Exec, + // CIAO container implementation depends on correct reference + // counting of local interfaces, so we take a short cut to + public virtual ::CORBA::LocalObject + { + public: + /// Default constructor. + BMClosedED_exec_i (void); + + /// Default destructor. + ~BMClosedED_exec_i (void); + + // Operations from HUDisplay::BMClosedED + + virtual BasicSP::CCM_ReadData_ptr + get_dataout (); + + virtual void + push_in_avail (BasicSP::DataAvailable *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (); + + virtual void + ccm_activate (); + + virtual void + ccm_passivate (); + + virtual void + ccm_remove (); + protected: + CORBA::String_var str_; + + MyImpl::ReadData_Impl* dataout_; + + /// Copmponent specific context + BasicSP::CCM_BMClosedED_Context_var context_; + }; + + extern "C" BMCLOSEDED_EXEC_Export ::Components::EnterpriseComponent_ptr + create_BasicSP_BMClosedED_Impl (void); + + /** + * @class BMClosedEDHome_exec_i + * + * BMClosedED home executor implementation class. + */ + class BMCLOSEDED_EXEC_Export BMClosedEDHome_exec_i : + public virtual CIAO_BasicSP_BMClosedED_Impl::BMClosedEDHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + BMClosedEDHome_exec_i (); + + /// Default dtor. + ~BMClosedEDHome_exec_i (); + + // Explicit home operations. + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + +} + +// Executor DLL entry point. CIAO's deployment and assembly framework +// invokes this function on the resulting DLL to get the home executor. +extern "C" BMCLOSEDED_EXEC_Export ::Components::HomeExecutorBase_ptr +create_BasicSP_BMClosedEDHome_Impl (void); + +#endif /* CIAO_BMCLOSED_EXEC_H*/ diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/config b/modules/CIAO/examples/BasicSP/BMClosedED/config new file mode 100644 index 00000000000..a122025755d --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMClosedED/config @@ -0,0 +1 @@ +BMClosedED_exec|createBMClosedEDHome_Impl|BMClosedED_svnt|createBMClosedEDHome_Servant diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl new file mode 100644 index 00000000000..9c14d839875 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl @@ -0,0 +1,31 @@ +//$Id$ +//============================================================================= +/** + * @file BMDevice.idl + * + * Definition of the BMDevice component + * + * @author Balachandran Natarajan + */ +//============================================================================= +#ifndef CIAO_BMDEVICE_IDL +#define CIAO_BMDEVICE_IDL + +#include "BasicSP.idl" +#include "BasicSPE.idl" + +module BasicSP +{ + component BMDevice + { + provides ReadData data_read; + publishes DataAvailable data_available; + consumes TimeOut timeout; + }; + + home BMDeviceHome manages BMDevice + { + }; +}; + +#endif /*CIAO_BMDEVICE_IDL */ diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc new file mode 100644 index 00000000000..b3c3a377bd5 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc @@ -0,0 +1,116 @@ +// $Id$ + +project(BMDevice_idl_gen): componentidldefaults { + custom_only = 1 + after += BasicSP_idl_gen + idlflags += -I $(CIAO_ROOT)/examples/BasicSP \ + -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 \ + -Wb,exec_export_macro=BMDEVICE_EXEC_Export \ + -Wb,exec_export_include=BMDevice_exec_export.h \ + + IDL_Files { + BMDevice.idl + } +} + +project(BMDevice_lem_gen) : ciaoidldefaults { + after += BasicSP_lem_gen BMDevice_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=BMDEVICE_EXEC_Export \ + -Wb,export_include=BMDevice_exec_export.h \ + -SS \ + -I $(CIAO_ROOT)/examples/BasicSP + + IDL_Files { + BMDeviceE.idl + } +} + +project(BMDevice_stub): ccm_stub { + libout = ../lib + libpaths += ../lib + after += BasicSP_stub BMDevice_idl_gen + sharedname = BMDevice_stub + includes += $(CIAO_ROOT)/examples/BasicSP + + libs += BasicSP_stub + + dynamicflags = BMDEVICE_STUB_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMDeviceC.h + BMDevice_stub_export.h + } + + Source_Files { + BMDeviceC.cpp + } + + Inline_Files { + } +} + +project(BMDevice_exec) : ciao_executor { + after += BMDevice_stub BMDevice_lem_gen BasicSP_exec + sharedname = BMDevice_exec + libs += BMDevice_stub BasicSP_stub BasicSP_exec + libout = ../lib + libpaths += ../lib + + includes += $(CIAO_ROOT)/examples/BasicSP + + dynamicflags = BMDEVICE_EXEC_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMDevice_exec.h + BMDevice_exec_export.h + BMDeviceEC.h + } + + Source_Files { + BMDevice_exec.cpp + BMDeviceEC.cpp + } + + Inline_Files { + } +} + +project(BMDevice_svnt) : ciao_servant { + after += BasicSP_svnt BMDevice_exec BasicSP_exec + includes += $(CIAO_ROOT)/examples/BasicSP + + sharedname = BMDevice_svnt + + libs += BMDevice_stub BMDevice_exec BasicSP_exec + libs += BasicSP_stub BasicSP_svnt + dynamicflags = BMDEVICE_SVNT_BUILD_DLL + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Header_Files { + BMDeviceS.h + BMDevice_svnt.h + BMDevice_svnt_export.h + } + + Source_Files { + BMDeviceS.cpp + BMDevice_svnt.cpp + } + + Inline_Files { + } +} diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp new file mode 100644 index 00000000000..50a84ba37af --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp @@ -0,0 +1,159 @@ +// $Id$ + +#include "BMDevice_exec.h" + +#define DISPLACEMENT 256 + +MyImpl::ReadData_Impl::ReadData_Impl (const char* name) + : str_ (name) +{ +} + +MyImpl::ReadData_Impl::~ReadData_Impl (void) +{ +} + +void +MyImpl::ReadData_Impl::set_name (const char* name) +{ + this->str_ = name; +} + +char * +MyImpl::ReadData_Impl::get_data (void) +{ + return CORBA::string_dup (this->str_.in()); +} + +//================================================= + +/// Default constructor. +MyImpl::BMDevice_exec_i::BMDevice_exec_i (void) + : data_read_ (new ReadData_Impl ("BM DEVICE DATA")) +{ +} + +/// Default destructor. +MyImpl::BMDevice_exec_i::~BMDevice_exec_i (void) +{ + delete this->data_read_; +} + +BasicSP::CCM_ReadData_ptr +MyImpl::BMDevice_exec_i::get_data_read (void) +{ + return + BasicSP::CCM_ReadData::_duplicate (this->data_read_); +} + +void +MyImpl::BMDevice_exec_i::push_timeout (BasicSP::TimeOut *) +{ + // Notify others + BasicSP::DataAvailable_var event = + new OBV_BasicSP::DataAvailable; + + ACE_DEBUG ((LM_EMERGENCY, + "BMDevice, received a timeout from EC\n")); + + this->context_->push_data_available (event); +} + +// Operations from Components::SessionComponent +void +MyImpl::BMDevice_exec_i:: set_session_context ( + Components::SessionContext_ptr ctx) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDevice_exec_i::set_session_context\n")); + + this->context_ = + BasicSP::CCM_BMDevice_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::BMDevice_exec_i::configuration_complete (void) +{ +} + +void +MyImpl::BMDevice_exec_i::ccm_activate (void) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDevice_exec_i::ccm_activate\n")); +} + +void +MyImpl::BMDevice_exec_i::ccm_passivate (void) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDevice_exec_i::ccm_passivate\n")); +} + +void +MyImpl::BMDevice_exec_i::ccm_remove (void) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDevice_exec_i::ccm_remove\n")); +} + +extern "C" BMDEVICE_EXEC_Export ::Components::EnterpriseComponent_ptr +create_BasicSP_BMDevice_Impl (void) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + MyImpl::BMDevice_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; +} + +/// Default ctor. +MyImpl::BMDeviceHome_exec_i::BMDeviceHome_exec_i (void) +{ +} + +/// Default dtor. +MyImpl::BMDeviceHome_exec_i::~BMDeviceHome_exec_i (void) +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::BMDeviceHome_exec_i::create (void) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX (retval, + MyImpl::BMDevice_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; +} + + +extern "C" BMDEVICE_EXEC_Export ::Components::HomeExecutorBase_ptr +create_BasicSP_BMDeviceHome_Impl (void) +{ + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN (retval, + MyImpl::BMDeviceHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; +} + diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h new file mode 100644 index 00000000000..7dee3fc7c43 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h @@ -0,0 +1,130 @@ +// $Id$ + +// ================================================================ +/** + * @file BMDevice_exec.h + * + * Header file for the actual BMDevice and BMDeviceHome component + * implementations. These classes are the implementations of local + * interfaces defined in BMDeviceEI.idl. + * + * @author Balachandran Natarajan + */ +// ================================================================ + +#ifndef CIAO_BMDEVICE_EXEC_H +#define CIAO_BMDEVICE_EXEC_H + +#include "BMDevice_exec_export.h" +#include "BMDeviceEC.h" +#include "tao/LocalObject.h" + +namespace MyImpl +{ + /** + * @class ReadData_Impl + * + * Implementation of the ReadData interface + */ + class BMDEVICE_EXEC_Export ReadData_Impl : + public virtual ::BasicSP::CCM_ReadData, + public virtual ::CORBA::LocalObject + { + public: + /// Constructor + ReadData_Impl(const char* name); + + void set_name (const char* name); + + virtual char * + get_data (void); + + ~ReadData_Impl (void); + + private: + CORBA::String_var str_; + }; + + /** + * @class BMDEVICE_exec_i + * + * An example RateGen executor implementation class. + */ + class BMDEVICE_EXEC_Export BMDevice_exec_i : + public virtual CIAO_BasicSP_BMDevice_Impl::BMDevice_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default constructor. + BMDevice_exec_i (void); + + /// Default destructor. + ~BMDevice_exec_i (void); + + // Operations from BasicSP::BMDevice + + virtual BasicSP::CCM_ReadData_ptr + get_data_read (void); + + virtual void + push_timeout (BasicSP::TimeOut *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (void); + + virtual void + ccm_activate (void); + + virtual void + ccm_passivate (void); + + virtual void + ccm_remove (void); + protected: + + /// Copmponent specific context + BasicSP::CCM_BMDevice_Context_var context_; + + private: + MyImpl::ReadData_Impl* data_read_; + }; + + extern "C" BMDEVICE_EXEC_Export ::Components::EnterpriseComponent_ptr + create_BasicSP_BMDevice_Impl (void); + + /** + * @class BMDeviceHome_exec_i + * + * BMDevice home executor implementation class. + */ + class BMDEVICE_EXEC_Export BMDeviceHome_exec_i : + public virtual CIAO_BasicSP_BMDevice_Impl::BMDeviceHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + BMDeviceHome_exec_i (void); + + /// Default dtor. + ~BMDeviceHome_exec_i (void); + + // Explicit home operations. + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (void); + }; +} + +// Executor DLL entry point. CIAO's deployment and assembly framework +// invokes this function on the resulting DLL to get the home executor. +extern "C" BMDEVICE_EXEC_Export ::Components::HomeExecutorBase_ptr +createBMDeviceHome_Impl (void); + +#endif /* CIAO_BMDEVICE_EXEC_H*/ diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl new file mode 100644 index 00000000000..1bcf144de33 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl @@ -0,0 +1,21 @@ +//$Id$ + +#ifndef BMDISPLAY_IDL +#define BMDISPLAY_IDL + +#include "BasicSP.idl" + +module BasicSP +{ + component BMDisplay + { + consumes DataAvailable data_ready; + uses ReadData comp_data; + }; + + home BMDisplayHome manages BMDisplay + { + }; +}; + +#endif /* BMDISPLAY_IDL */ diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc new file mode 100644 index 00000000000..c3e3f300173 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc @@ -0,0 +1,118 @@ +// $Id$ + +project(BMDisplay_idl_gen): componentidldefaults,anytypecode { + custom_only = 1 + idlflags += -I $(CIAO_ROOT)/examples/BasicSP \ + -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 \ + -Wb,exec_export_macro=BMDISPLAY_EXEC_Export \ + -Wb,exec_export_include=BMDisplay_exec_export.h \ + + IDL_Files { + BMDisplay.idl + } +} + +project(BMDisplay_lem_gen) : ciaoidldefaults { + after += BasicSP_lem_gen BMDisplay_idl_gen + custom_only = 1 + + idlflags += -I $(CIAO_ROOT)/examples/BasicSP \ + -Wb,export_macro=BMDISPLAY_EXEC_Export \ + -Wb,export_include=BMDisplay_exec_export.h \ + -SS + + IDL_Files { + BMDisplayE.idl + } + +} + +project(BMDisplay_stub): ccm_stub { + after += BasicSP_stub BMDisplay_idl_gen + sharedname = BMDisplay_stub + includes += $(CIAO_ROOT)/examples/BasicSP + libout = ../lib + libpaths += ../lib + + libs += BasicSP_stub + + dynamicflags = BMDISPLAY_STUB_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMDisplayC.h + BMDisplay_stub_export.h + } + + Source_Files { + BMDisplayC.cpp + } + + Inline_Files { + } +} + +project(BMDisplay_exec) : ciao_executor { + after += BMDisplay_stub BMDisplay_lem_gen + + sharedname = BMDisplay_exec + libs += BMDisplay_stub + libs += BasicSP_stub + includes += $(CIAO_ROOT)/examples/BasicSP + libout = ../lib + libpaths += ../lib + + dynamicflags = BMDISPLAY_EXEC_BUILD_DLL + + IDL_Files { + } + + Header_Files { + BMDisplay_exec.h + BMDisplay_exec_export.h + BMDisplayEC.h + } + + Source_Files { + BMDisplay_exec.cpp + BMDisplayEC.cpp + } + + Inline_Files { + } +} + +project(BMDisplay_svnt) : ciao_servant { + after += BasicSP_svnt BMDisplay_exec + includes += $(CIAO_ROOT)/examples/BasicSP + + sharedname = BMDisplay_svnt + + libs += BMDisplay_stub BMDisplay_exec + libs += BasicSP_stub BasicSP_svnt + dynamicflags = BMDISPLAY_SVNT_BUILD_DLL + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Source_Files { + BMDisplayS.cpp + BMDisplay_svnt.cpp + } + + Header_Files { + BMDisplayS.h + BMDisplay_svnt.h + BMDisplay_svnt_export.h + } + + Inline_Files { + } +} diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp new file mode 100644 index 00000000000..c52461c27dd --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp @@ -0,0 +1,142 @@ +// $Id$ + +#include "BMDisplay_exec.h" + +/// Default constructor. +MyImpl::BMDisplay_exec_i::BMDisplay_exec_i () +{ +} + +/// Default destructor. +MyImpl::BMDisplay_exec_i::~BMDisplay_exec_i () +{ +} + +// Operations from BasicSP::BMDisplay + +void +MyImpl::BMDisplay_exec_i::push_data_ready ( + BasicSP::DataAvailable *ev + ) +{ + ACE_UNUSED_ARG (ev); + + ACE_DEBUG ((LM_EMERGENCY, + "BMDisplay - Doing computations\n")); + + ACE_DEBUG ((LM_EMERGENCY, + "BMDisplay - Doing data fetch\n")); + // Refresh position + BasicSP::ReadData_var dat + = this->context_->get_connection_comp_data (); + + if (CORBA::is_nil (dat.in ())) + throw CORBA::BAD_INV_ORDER (); + + CORBA::String_var str = + dat->get_data (); + + ACE_DEBUG ((LM_EMERGENCY, + "BMDisplay - Display data is [%s]\n", + str.in ())); + +} + +// Operations from Components::SessionComponent +void +MyImpl::BMDisplay_exec_i::set_session_context ( + Components::SessionContext_ptr ctx + ) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDisplay_exec_i::set_session_context\n")); + this->context_ = + BasicSP::CCM_BMDisplay_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::BMDisplay_exec_i::configuration_complete ( + ) +{ +} + +void +MyImpl::BMDisplay_exec_i::ccm_activate () +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDisplay_exec_i::ccm_activate\n")); +} + +void +MyImpl::BMDisplay_exec_i::ccm_passivate ( + ) +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDisplay_exec_i::ccm_passivate\n")); +} + +void +MyImpl::BMDisplay_exec_i::ccm_remove () +{ + ACE_DEBUG ((LM_EMERGENCY, + "MyImpl::BMDisplay_exec_i::ccm_remove\n")); +} + +extern "C" BMDISPLAY_EXEC_Export ::Components::EnterpriseComponent_ptr +create_BasicSP_BMDisplay_Impl (void) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + MyImpl::BMDisplay_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; +} + +/// Default ctor. +MyImpl::BMDisplayHome_exec_impl::BMDisplayHome_exec_impl () +{ +} + +/// Default dtor. +MyImpl::BMDisplayHome_exec_impl::~BMDisplayHome_exec_impl () +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::BMDisplayHome_exec_impl::create () +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + MyImpl::BMDisplay_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; +} + +extern "C" BMDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr +create_BasicSP_BMDisplayHome_Impl (void) +{ + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + MyImpl::BMDisplayHome_exec_impl, + ::Components::HomeExecutorBase::_nil ()); + + return retval; +} diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h new file mode 100644 index 00000000000..e52ceb879a0 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h @@ -0,0 +1,96 @@ +// $Id$ + +//============================================================== +/** + * @file BMDisplay_exec.h + * + * Header file for the actual BMDisplay and BMDisplayHome component + * implementations. + * + * @author Balachandran Natarajan + */ +//============================================================== +#ifndef CIAO_BMDISPLAY_EXEC_H +#define CIAO_BMDISPLAY_EXEC_H + +#include "BMDisplayEC.h" +#include "tao/LocalObject.h" +#include "BMDisplay_exec_export.h" + +namespace MyImpl +{ + /** + * @class BMDisplay_exec_i + * + * RateGen executor implementation class. + */ + class BMDISPLAY_EXEC_Export BMDisplay_exec_i : + public virtual CIAO_BasicSP_BMDisplay_Impl::BMDisplay_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default constructor. + BMDisplay_exec_i (); + + /// Default destructor. + ~BMDisplay_exec_i (); + + // Operations from BasicSP::BMDisplay + + virtual void + push_data_ready (BasicSP::DataAvailable *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (); + + virtual void + ccm_activate (); + + virtual void + ccm_passivate (); + + virtual void + ccm_remove (); + protected: + /// Copmponent specific context + BasicSP::CCM_BMDisplay_Context_var context_; + }; + + extern "C" BMDISPLAY_EXEC_Export ::Components::EnterpriseComponent_ptr + create_BasicSP_BMDisplay_Impl (void); + + /** + * @class BMDisplayHome_exec_impl + * + * BMDisplay home executor implementation class. + */ + class BMDISPLAY_EXEC_Export BMDisplayHome_exec_impl : + public virtual CIAO_BasicSP_BMDisplay_Impl::BMDisplayHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + BMDisplayHome_exec_impl (); + + /// Default dtor. + ~BMDisplayHome_exec_impl (); + + // Explicit home operations. + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + +} + +extern "C" BMDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr +createBMDisplayHome_Impl (void); + +#endif /* BMDISPLAY_EXEC_H */ diff --git a/modules/CIAO/examples/BasicSP/BasicSP.idl b/modules/CIAO/examples/BasicSP/BasicSP.idl new file mode 100644 index 00000000000..0b000c9cf56 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BasicSP.idl @@ -0,0 +1,48 @@ +// $Id$ +//============================================================================= +/** + * @file BasicSP.idl + * + * Definition of events, and common interfaces used in the BasicSP module. + * + * @author Balachandran Natarajan + */ +//============================================================================= + +#ifndef CIAO_BASIC_SP_IDL +#define CIAO_BASIC_SP_IDL + +#include + +// @@NOTE: Do we need a pragma prefix. Anyway its broken now in TAO.. +// #pragma prefix "" + +module BasicSP +{ + + /** + * @NOTE: Not sure whether this is a good abstraction. Just copying + * the stuff from Cadena folks. + */ + /** + * @interface ReadData + * + */ + + interface ReadData { + string get_data (); + }; + + /** + * @eventtype Events that represent timeouts + */ + eventtype TimeOut {}; + + /** + * @eventtype Events that represent data availability + */ + eventtype DataAvailable {}; + +}; + +#endif /*CIAO_BASIC_SP_IDL*/ diff --git a/modules/CIAO/examples/BasicSP/BasicSP.mpc b/modules/CIAO/examples/BasicSP/BasicSP.mpc new file mode 100644 index 00000000000..177c0f373a6 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BasicSP.mpc @@ -0,0 +1,100 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n HUDisplay" + +project(BasicSP_idl_gen): componentidldefaults { + custom_only = 1 + 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 \ + -Wb,exec_export_macro=BASICSP_EXEC_Export \ + -Wb,exec_export_include=BasicSP_exec_export.h + + IDL_Files { + BasicSP.idl + } +} + +project(BasicSP_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += BasicSP_idl_gen + idlflags += -Wb,export_macro=BASICSP_EXEC_Export \ + -Wb,export_include=BasicSP_exec_export.h \ + -SS + + IDL_Files { + BasicSPE.idl + } +} + +project(BasicSP_stub): ccm_stub { + after += BasicSP_lem_gen + sharedname = BasicSP_stub + dynamicflags = BASICSP_STUB_BUILD_DLL + includes += $(CIAO_ROOT)/examples/BasicSP + libout = lib + libpaths += lib + + IDL_Files { + } + Header_Files { + BasicSPC.h + } + Source_Files { + BasicSPC.cpp + } + Inline_Files { + } +} + +project(BasicSP_svnt) : ciao_servant { + after += BasicSP_exec + sharedname = BasicSP_svnt + libs += BasicSP_exec BasicSP_stub + includes += $(CIAO_ROOT)/examples/BasicSP + dynamicflags = BASICSP_SVNT_BUILD_DLL + libout = lib + libpaths += lib + + IDL_Files { + } + + Header_Files { + BasicSPS.h + BasicSP_svnt.h + } + + Source_Files { + BasicSPS.cpp + BasicSP_svnt.cpp + } + + Inline_Files { + } +} + +project(BasicSP_exec) : ciao_executor { + after += BasicSP_stub BasicSP_lem_gen + sharedname = BasicSP_exec + libs += BasicSP_stub + dynamicflags = BASICSP_EXEC_BUILD_DLL + includes += $(CIAO_ROOT)/examples/BasicSP + libout = lib + libpaths += lib + + IDL_Files { + } + + Header_Files { + BasicSP_exec_export.h + BasicSPEC.h + } + + Source_Files { + BasicSPEC.cpp + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/examples/BasicSP/BasicSP.mwc b/modules/CIAO/examples/BasicSP/BasicSP.mwc new file mode 100644 index 00000000000..781791601d9 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/BasicSP.mwc @@ -0,0 +1,9 @@ +// $Id$ + +workspace { + BasicSP.mpc + BMClosedED/BMClosedED.mpc + BMDevice/BMDevice.mpc + BMDisplay/BMDisplay.mpc + EC/EC.mpc +} diff --git a/modules/CIAO/examples/BasicSP/EC/EC.idl b/modules/CIAO/examples/BasicSP/EC/EC.idl new file mode 100644 index 00000000000..93cce410942 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/EC.idl @@ -0,0 +1,41 @@ +// $Id$ +//============================================================================= +/** + * @file EC.idl + * + * Definition of events, and common interfaces used in the BasicSP module. + * + * @author Balachandran Natarajan + */ +//============================================================================= + +#ifndef CIAO_EC_IDL +#define CIAO_EC_IDL + +#include "BasicSP.idl" + +module BasicSP +{ + interface trigger + { + void start (); + void stop (); + }; + + component EC supports trigger + { + publishes TimeOut timeout; + + /// The attribute can be configured via the home or the + /// component property file. + attribute long hertz; + }; + + home ECHome manages EC + { + // Explicit operations + factory new_EC (in long hertz); + }; +}; + +#endif /* CIAO_EC_IDL*/ diff --git a/modules/CIAO/examples/BasicSP/EC/EC.mpc b/modules/CIAO/examples/BasicSP/EC/EC.mpc new file mode 100644 index 00000000000..ee27913422c --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/EC.mpc @@ -0,0 +1,157 @@ +// $Id$ + +project(EC_idl_gen): componentidldefaults { + custom_only = 1 + idlflags += -I $(CIAO_ROOT)/examples/BasicSP \ + -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 \ + -Wb,exec_export_macro=EC_EXEC_Export \ + -Wb,exec_export_include=EC_exec_export.h + + IDL_Files { + EC.idl + } +} + +project(EC_lem_gen) : ciaoidldefaults { + after += BasicSP_lem_gen EC_idl_gen + custom_only = 1 + + idlflags += -Wb,export_macro=EC_EXEC_Export \ + -Wb,export_include=EC_exec_export.h \ + -SS \ + -I $(CIAO_ROOT)/examples/BasicSP + + IDL_Files { + ECE.idl + } +} + +project(EC_stub): ccm_stub { + after += BasicSP_stub EC_idl_gen + sharedname = EC_stub + includes += $(CIAO_ROOT)/examples/BasicSP + libpaths += .. + libout = ../lib + libpaths += ../lib + + libs += BasicSP_stub + + dynamicflags = EC_STUB_BUILD_DLL + + IDL_Files { + } + + Header_Files { + ECC.h + EC_stub_export.h + } + + Source_Files { + ECC.cpp + } + + Inline_Files { + } +} + +project(EC_exec) : ciao_executor { + after += EC_stub EC_lem_gen + sharedname = EC_exec + libs += EC_stub BasicSP_stub + includes += $(CIAO_ROOT)/examples/BasicSP + libout = ../lib + libpaths += ../lib + + dynamicflags = EC_EXEC_BUILD_DLL + + IDL_Files { + } + + Header_Files { + EC_exec.h + EC_exec_export.h + ECEC.h + } + + Source_Files { + EC_exec.cpp + ECEC.cpp + } + + Inline_Files { + } +} + +project(EC_svnt) : ciao_servant { + after += BasicSP_svnt EC_exec + includes += $(CIAO_ROOT)/examples/BasicSP + + sharedname = EC_svnt + + libs += EC_stub EC_exec + libs += BasicSP_stub BasicSP_svnt + dynamicflags = EC_SVNT_BUILD_DLL + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Header_Files { + ECS.h + EC_svnt.h + EC_svnt_export.h + } + + Source_Files { + ECS.cpp + EC_svnt.cpp + } +} + +project (EC_client) : ccm_stub { + after += EC_stub + exename = client + libs += EC_stub BasicSP_stub + includes += $(CIAO_ROOT)/examples/BasicSP + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Header_Files { + } + + Source_Files { + client.cpp + } + + Inline_Files { + } +} + +project (EC_controller) : ccm_stub { + after += EC_stub + exename = controller + includes += $(CIAO_ROOT)/examples/BasicSP + libs += EC_stub BasicSP_stub + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Header_Files { + } + + Source_Files { + controller.cpp + } + + Inline_Files { + } +} diff --git a/modules/CIAO/examples/BasicSP/EC/EC_exec.cpp b/modules/CIAO/examples/BasicSP/EC/EC_exec.cpp new file mode 100644 index 00000000000..9c903f9b2c0 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/EC_exec.cpp @@ -0,0 +1,296 @@ +// $Id$ + +#include "EC_exec.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 (); + + ACE_DEBUG ((LM_EMERGENCY, "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) +{ + ACE_DEBUG ((LM_EMERGENCY, + 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_EMERGENCY, + // 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 () +{ + return this->hertz_; +} + +void +MyImpl::EC_exec_i::hertz (CORBA::Long hertz) +{ + this->hertz_ = hertz; +} + +// Operations from supported interface(s) + +void +MyImpl::EC_exec_i::start () +{ + if (this->hertz_ == 0 || this->pulser_.active()) + throw CORBA::BAD_INV_ORDER (); + + // @@ Start the rate generator + this->pulser_.start (this->hertz_); +} + +void +MyImpl::EC_exec_i::stop () +{ + if (! this->pulser_.active ()) + throw CORBA::BAD_INV_ORDER (); + + // @@ stop the rate generator + this->pulser_.stop (); +} + +CORBA::Boolean +MyImpl::EC_exec_i::active () +{ + return this->pulser_.active (); +} + +// Operations from Components::SessionComponent + +void +MyImpl::EC_exec_i::set_session_context (Components::SessionContext_ptr ctx) +{ + ACE_DEBUG ((LM_EMERGENCY, "MyImpl::EC_exec_i::set_session_context\n")); + + this->context_ = + BasicSP::CCM_EC_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + // Urm, we actually discard exceptions thown from this operation. + +} + +void +MyImpl::EC_exec_i::configuration_complete () +{ +} + +void +MyImpl::EC_exec_i::ccm_activate () +{ + ACE_DEBUG ((LM_EMERGENCY, "MyImpl::EC_exec_i::ccm_activate\n")); + + this->pulser_.open_h (); +} + +void +MyImpl::EC_exec_i::ccm_passivate () +{ + ACE_DEBUG ((LM_EMERGENCY, "MyImpl::EC_exec_i::ccm_passivate\n")); + this->pulser_.close_h (); +} + +void +MyImpl::EC_exec_i::ccm_remove () +{ + ACE_DEBUG ((LM_EMERGENCY, "MyImpl::EC_exec_i::ccm_remove\n")); +} + +void +MyImpl::EC_exec_i::pulse (void) +{ + try + { + ACE_DEBUG ((LM_EMERGENCY, + ACE_TEXT ("Pushing BasicSP::TimeOut event!\n"))); + + BasicSP::TimeOut_var ev = new OBV_BasicSP::TimeOut (); + + this->context_->push_timeout (ev.in ()); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Caught exception while pushing " + "BasicSP::TimeOut event to BMDevice"); + } +} + +extern "C" EC_EXEC_Export ::Components::EnterpriseComponent_ptr +create_BasicSP_EC_Impl (void) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + MyImpl::EC_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; +} + +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) +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + MyImpl::EC_exec_i (hertz), + ::CORBA::NO_MEMORY ()); + + return retval; +} + +::Components::EnterpriseComponent_ptr +MyImpl::ECHome_exec_i::create () +{ + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + MyImpl::EC_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; +} + +extern "C" EC_EXEC_Export ::Components::HomeExecutorBase_ptr +create_BasicSP_ECHome_Impl (void) +{ + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + MyImpl::ECHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; +} diff --git a/modules/CIAO/examples/BasicSP/EC/EC_exec.h b/modules/CIAO/examples/BasicSP/EC/EC_exec.h new file mode 100644 index 00000000000..e42352971cd --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/EC_exec.h @@ -0,0 +1,168 @@ +// $Id$ + +//============================================================ +/** + * @file EC_exec.h + * + * Header file for the actualy EC and ECHome component + * implementation. + * + * @author Balachandran Natarajan + */ +//============================================================ + +#ifndef EC_EXEC_H +#define EC_EXEC_H + +#include "ECEC.h" +#include "tao/LocalObject.h" +#include "ace/Thread_Manager.h" +#include "ace/Task.h" +#include "EC_exec_export.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 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. + long tid_; + + EC_exec_i *pulse_callback_; + + ACE_Thread_Manager thr_mgr_; + }; + + extern "C" EC_EXEC_Export ::Components::EnterpriseComponent_ptr + create_BasicSP_EC_Impl (void); + + /** + * @class EC_exec_i + * + * EC executor implementation class. + */ + class EC_EXEC_Export EC_exec_i : + public virtual CIAO_BasicSP_EC_Impl::EC_Exec, + public virtual ::CORBA::LocalObject + { + 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 (); + + virtual void hertz (CORBA::Long hertz); + + // Operations from supported interface(s) + + virtual void start (); + + virtual void stop (); + + virtual CORBA::Boolean active (); + + // Operations from Components::SessionComponent + + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + /// 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 ::CIAO_BasicSP_EC_Impl::ECHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + ECHome_exec_i (); + + /// Default dtor. + ~ECHome_exec_i (); + + // Explicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + new_EC (CORBA::Long hertz); + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + +} + +extern "C" EC_EXEC_Export ::Components::HomeExecutorBase_ptr +createECHome_Impl (void); + +#endif /* CIAO_ECGEN_EXEC_H */ diff --git a/modules/CIAO/examples/BasicSP/EC/README b/modules/CIAO/examples/BasicSP/EC/README new file mode 100644 index 00000000000..7e032780ab1 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/README @@ -0,0 +1,9 @@ +/** + +@page EC README File + + The EC component. This shouldnt be needed if we had a way to +integrate EC sugly into CIAO. We dont at the time of writing this +example on May 12, 2003. Hence this holy hack! + +*/ diff --git a/modules/CIAO/examples/BasicSP/EC/client.cpp b/modules/CIAO/examples/BasicSP/EC/client.cpp new file mode 100644 index 00000000000..ace0a8c1209 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/client.cpp @@ -0,0 +1,62 @@ +// $Id$ + +//============================================================== +/** + * @file client.cpp + * + * This is a simple client test program that interact with the EC + * component implementation. This test uses the explicit factory + * operation in the home interface to create a EC component + * instance, run it for a while, and destroy the component instance. + */ +//============================================================== + +#include "ECC.h" +#include "ace/streams.h" +#include "ace/OS_NS_unistd.h" + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + // Resolve HomeFinder interface + + CORBA::Object_var obj + = orb->string_to_object ("file://ec.ior"); + + BasicSP::ECHome_var home + = BasicSP::ECHome::_narrow (obj.in ()); + + if (CORBA::is_nil (home.in ())) + ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire ECHome objref\n"), -1); + + BasicSP::EC_var pulser + = home->create (); + + // Place to plug in the rate + pulser->hertz (5); + + pulser->start (); + + ACE_OS::sleep (45); + + pulser->stop (); + + home->remove_component (pulser.in ()); + + 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/examples/BasicSP/EC/controller.cpp b/modules/CIAO/examples/BasicSP/EC/controller.cpp new file mode 100644 index 00000000000..5897abb93ee --- /dev/null +++ b/modules/CIAO/examples/BasicSP/EC/controller.cpp @@ -0,0 +1,126 @@ +// $Id$ + +/** + * @file controller.cpp + * + * This program interact with a EC component, and set the rate of the + * EC. + */ + +#include "ECC.h" +#include "ace/Get_Opt.h" +#include "ace/streams.h" + +const ACE_TCHAR *rategen_ior_ = ACE_TEXT("file://rategen.ior"); +int rate = 3; +int turn_on = 1; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:r:of")); + int c; + + while ((c = get_opts ()) != -1) + { + switch (c) + { + case 'o': + turn_on = 1; + break; + + case 'f': + turn_on = 0; + break; + + case 'k': + rategen_ior_ = get_opts.opt_arg (); + break; + + case 'r': + rate = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case '?': // display help for use of the server. + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s\n" + "-o (Turn on the rate generator)\n" + "-f (Turn off the rate generator)\n" + "-k (default is file://rategen.ior)\n" + "-r (default is 3)\n" + "\n", + argv [0]), + -1); + break; + } + } + + if (rategen_ior_ == 0) + { + rategen_ior_ = ACE_TEXT("file://ec.ior"); + } + + if (rate == 0) + { + rate = 3; + } + + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (parse_args (argc, argv) != 0) + { + return -1; + } + + CORBA::Object_var obj = + orb->string_to_object (rategen_ior_); + + BasicSP::EC_var pulser + = BasicSP::EC::_narrow (obj.in ()); + + if (CORBA::is_nil (pulser.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Unable to acquire 'EC' objref\n"), + -1); + } + + pulser->hertz (rate); + + if (turn_on) + { + pulser->hertz (rate); + + ACE_DEBUG ((LM_EMERGENCY, "Start up the Event services\n")); + + pulser->start (); + } + else + { + pulser->stop (); + + ACE_DEBUG ((LM_EMERGENCY, "Stop the ES\n")); + } + + 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/examples/BasicSP/README.html b/modules/CIAO/examples/BasicSP/README.html new file mode 100644 index 00000000000..9bd740215e1 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/README.html @@ -0,0 +1,70 @@ + + + + +This document describes how to compile/run the BasicSP (HUDisplay) example with the new DnC implementation. + +

    Installing

    + +
      +
    • Make sure you have the latest DAnCE framework built. +
    • + +
    • + Get the latest cidl compiler (if you did not compile from source) from: + + http://www.dre.vanderbilt.edu/cidlc/binary/ + + + Copy the file into the $CIAO_ROOT/bin directory. + Build ACE, TAO, DAnCE before you proceed. + +

      + NOTE:
      + While buiding DAnCE, we also suggest that you build the tests in the $CIAO_ROOT/test directory and make sure + all the tests run OK before you proceed to try out the BasicSP example or any other DAnCE-based + applications. To do this, open the file + + $ACE_ROOT/bin/MakeProjectCreator/config/global.features, + + then change the line from "cidl = 0" to "cidl = 1".

      + + After this, go back to the $CIAO_ROOT/DAnCE directory to generate your workspace/project or makefile by using MPC.
      + After the DAnCE and the tests are build OK, go to the $CIAO_ROOT/DAnCE/tests/NodeApplicationTest directory and make + sure all the three perl scripts (run_test.pl, run_test_simple.pl and run_test_ex.pl) run successfully. + +

      +
    • + +
    • Generate the project/make files for the BasicSP example directory: +
        +
      • linux: [in $CIAO_ROOT/examples/BasicSP] mwc.pl -type gnuace
      • +
      • windows: [in %CIAO_ROOT%/examples/BasicSP] mwc.pl -type vc71
      • +
      +
    • + + +
    • Build the generated solution/make files
    • +
    + +

    Running the test

    + +
      + +
    • Change into the $CIAO_ROOT/examples/BasicSP/descriptors directory Start NodeManagers (NodeDameon) by running basicNodeDaemon.pl + +
    • Start the execution manager: + $CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat +
    • + +
    • Start the executor: + $CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattern_deploymentplan.cdp -k file://EM.ior + +
    • After this, components should be deployed successfully. You can run the $CIAO_ROOT/examples/BasicSP/EC/controller to start the application. + Please make sure that the component IOR file for the EC component is present when you run this client. + +
      +
    • +
    + + diff --git a/modules/CIAO/examples/BasicSP/RepoMan_Usage.html b/modules/CIAO/examples/BasicSP/RepoMan_Usage.html new file mode 100644 index 00000000000..b0854d03b96 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/RepoMan_Usage.html @@ -0,0 +1,117 @@ + + + + + + Step-By-Step instructions about how to use Repository Manager with DAnCE + + + + +

    Step-By-Step instructions about how to use Repository Manager with DAnCE


    + +

    This file explains how to run the BasicSP example using the integrated Repository Manager (RepoMan).

    + +

  • Be sure to add $CIAO_ROOT/HTTP_DOWNLOADED_LIBS into your PATH environment variable. This directory include the +downloaded component lib files.
  • + +

  • If you want to use CORBA naming service to get the RepoMan object reference, then please start naming +service with multicast mode.
  • +

    +  $TAO_ROOT/orbsvcs/Naming_Service/naming_service -m 1
    +
    + +
  • Build & start JAWS server.
  • +

      +
    1. Be sure to set JAWS_DOCUMENT_ROOT to the installation path of the RepoMan, i.e., +$CIAO_ROOT/DAnCE/RepositoryManager.
    2. +
    3. Start JAWS:
    4. +
      +Change the current directory into $ACE_ROOT/apps/JAWS/server
      +main
      +
      +
    + +
  • Start RepoMan. Make sure you have BasicSP or BMClosedED, BMDevice, BMDisplay & EC installed in the +RepoMan you want to use. Please refer to the README file of RepoMan to get the instructions +about how to installed Packages into RepoMan.
  • +

      +
    1. Using ior file:
    2. +
      +Change the current directory into $CIAO_ROOT/DAnCE/RepositoryManager
      +RepositoryManagerDaemon -o  
      +
      +
    3. Using Naming Service:
    4. +
      +Change the current directory into $CIAO_ROOT/DAnCE/RepositoryManager
      +RepositoryManagerDaemon -v [NameofRM]
      +
      +
    + +
  • Change the current directory into $CIAO_ROOT/examples/BasicSP/descriptors.
  • + +

  • Start NodeManagers.
  • +

    +  basicNodeDaemon.pl
    +
    + +
  • Start ExecutionManager.
  • +

    +  $CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat
    +
    + +
  • Start plan_launcher.
  • +

      +
    1. Not using RepoMan:
    2. +
      +$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp -k file://EM.ior
      +
      + +
    3. Using ior file to get RepoMan, providing the name of one composite componemt:
    4. +
      +$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp 
      +-a BasicSP 
      +-k file://EM.ior
      +-l file://$CIAO_ROOT/DAnCE/RepositoryManager/RepositoryManagerDaemon.ior
      +
      + +
    5. Using naming service to get RepoMan, providing the name of one composite componemt:
    6. +
      +$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp 
      +-a BasicSP 
      +-k file://EM.ior
      +-v [NameofRM]
      +
      + +
    7. Using naming service to get RepoMan, providing the names of several individual componemts:
    8. +
      +$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp 
      +-a BMClosedED+BMDevice+BMDisplay+EC 
      +-k file://EM.ior 
      +-v [NameofRM]
      +
      + +
    9. Using naming service to get RepoMan, providing the types of several individual componemts:
    10. +
      +$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp 
      +-e IDL:BasicSP/EC:1.0+IDL:BasicSP/BMDisplay:1.0+IDL:BasicSP/BMDevice:1.0+IDL:BasicSP/BMClosedED:1.0 
      +-k file://EM.ior 
      +-v [NameofRM]
      +
      +
    + +
  • Start the application.
  • +
    +  $CIAO_ROOT/examples/BasicSP/EC/controller
    +
    + +
    Email: shanshan.jiang@vanderbilt.edu + + + + diff --git a/modules/CIAO/examples/BasicSP/descriptors/BasicSP.dat b/modules/CIAO/examples/BasicSP/descriptors/BasicSP.dat new file mode 100644 index 00000000000..2131aeec973 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/descriptors/BasicSP.dat @@ -0,0 +1,4 @@ +EC corbaloc:iiop:localhost:10000/EC.NodeManager +BMDisplay corbaloc:iiop:localhost:20000/BMDisplay.NodeManager +BMClosedED corbaloc:iiop:localhost:30000/BMClosedED.NodeManager +BMDevice corbaloc:iiop:localhost:40000/BMDevice.NodeManager diff --git a/modules/CIAO/examples/BasicSP/descriptors/BasicSP_Homed.cdp b/modules/CIAO/examples/BasicSP/descriptors/BasicSP_Homed.cdp new file mode 100644 index 00000000000..cb705023256 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/descriptors/BasicSP_Homed.cdp @@ -0,0 +1,504 @@ + + + BasicSP_Homed + + ECHomeImplementation + + + + + + home factory + + + tk_string + + + create_BasicSP_ECHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_ECHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + EC_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + EC_exec + + + + + + BMClosedEDHomeImplementation + + + + + + home factory + + + tk_string + + + create_BasicSP_BMClosedEDHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_BMClosedEDHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + BMClosedED_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + BMClosedED_exec + + + + + + BMDeviceHomeImplementation + + + + + + home factory + + + tk_string + + + create_BasicSP_BMDeviceHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_BMDeviceHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + BMDevice_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + BMDevice_exec + + + + + + BMDisplayHomeImplementation + + + + + + home factory + + + tk_string + + + create_BasicSP_BMDisplayHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_BMDisplayHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + BMDisplay_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + BMDisplay_exec + + + + + + ECComponentImplementation + + + + + + + BMClosedEDComponentImplementation + + + + + + + BMDeviceComponentImplementation + + + + + + + BMDisplayComponentImplementation + + + + + + + ECHome + EC + + + + + + BMClosedEDHome + BMClosedED + + + + + + BMDeviceHome + BMDevice + + + + + + BMDisplayHome + BMDisplay + + + + + + ECComponent + EC + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + ECHome + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + rategen.ior + + + + + + BMClosedEDComponent + BMClosedED + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + BMClosedEDHome + + + + + + BMDeviceComponent + BMDevice + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + BMDeviceHome + + + + + + BMDisplayComponent + BMDisplay + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + BMDisplayHome + + + + + + + datain_data_readBasicSP.ComponentImplementations.BasicSP.BasicSP.BMClosedEDBMDeviceComponentInstance + + datain + false + SimplexReceptacle + + + + data_read + true + Facet + + + + + + comp_data_dataoutBMDisplayComponentInstanceBMDisplayComponentInstance + + comp_data + false + SimplexReceptacle + + + + dataout + true + Facet + + + + + + timeout_timeoutECComponentInstanceBMDeviceComponentInstance + + timeout + false + EventPublisher + + + + timeout + true + EventConsumer + + + + + + data_available_in_availBMDeviceComponentInstanceBMDisplayComponentInstance + + data_available + false + EventPublisher + + + + in_avail + true + EventConsumer + + + + + + out_avail_data_readyBMDisplayComponentInstanceBMDisplayComponentInstance + + out_avail + false + EventPublisher + + + + data_ready + true + EventConsumer + + + + + + BMDisplay_exec + + + BMDisplay_exec + + + BMDisplay_svnt + + + BMDisplay_svnt + + + BMDisplay_stub + + + BMDisplay_stub + + + BMClosedED_exec + + + BMClosedED_exec + + + BMClosedED_svnt + + + BMClosedED_svnt + + + BMClosedED_stub + + + BMClosedED_stub + + + BMDevice_exec + + + BMDevice_exec + + + BMDevice_svnt + + + BMDevice_svnt + + + BMDevice_stub + + + BMDevice_stub + + + EC_exec + + + EC_exec + + + EC_svnt + + + EC_svnt + + + EC_stub + + + EC_stub + + diff --git a/modules/CIAO/examples/BasicSP/descriptors/BasicSP_Unhomed.cdp b/modules/CIAO/examples/BasicSP/descriptors/BasicSP_Unhomed.cdp new file mode 100644 index 00000000000..469858ec97d --- /dev/null +++ b/modules/CIAO/examples/BasicSP/descriptors/BasicSP_Unhomed.cdp @@ -0,0 +1,408 @@ + + + BasicSP_Unhomed + + + BMDisplayComponentImplementation + + + + + + component factory + + + tk_string + + + create_BasicSP_BMDisplay_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_BMDisplay_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + BMDisplay_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + BMDisplay_exec + + + + + + + BMClosedEDComponentImplementation + + + + + + component factory + + + tk_string + + + create_BasicSP_BMClosedED_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_BMClosedED_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + BMClosedED_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + BMClosedED_exec + + + + + + + BMDeviceComponentImplementation + + + + + + component factory + + + tk_string + + + create_BasicSP_BMDevice_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_BMDevice_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + BMDevice_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + BMDevice_exec + + + + + + + ECComponentImplementation + + + + + + component factory + + + tk_string + + + create_BasicSP_EC_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_BasicSP_EC_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + EC_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + EC_exec + + + + + + BMDisplayComponent + BMDisplay + + + + + + BMClosedEDComponent + BMClosedED + + + + + + BMDeviceComponent + BMDevice + + + + + + ECComponent + EC + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + rategen.ior + + + + + + + datain_data_readBasicSP.ComponentImplementations.BasicSP.BasicSP.BMClosedEDBMDeviceComponentInstance + + datain + false + SimplexReceptacle + + + + data_read + true + Facet + + + + + + comp_data_dataoutBMDisplayComponentInstanceBMDisplayComponentInstance + + comp_data + false + SimplexReceptacle + + + + dataout + true + Facet + + + + + + timeout_timeoutECComponentInstanceBMDeviceComponentInstance + + timeout + false + EventPublisher + + + + timeout + true + EventConsumer + + + + + + data_available_in_availBMDeviceComponentInstanceBMDisplayComponentInstance + + data_available + false + EventPublisher + + + + in_avail + true + EventConsumer + + + + + + out_avail_data_readyBMDisplayComponentInstanceBMDisplayComponentInstance + + out_avail + false + EventPublisher + + + + data_ready + true + EventConsumer + + + + + + BMDisplay_exec + + + BMDisplay_exec + + + BMDisplay_svnt + + + BMDisplay_svnt + + + BMDisplay_stub + + + BMDisplay_stub + + + BMClosedED_exec + + + BMClosedED_exec + + + BMClosedED_svnt + + + BMClosedED_svnt + + + BMClosedED_stub + + + BMClosedED_stub + + + EC_exec + + + EC_exec + + + EC_svnt + + + EC_svnt + + + EC_stub + + + EC_stub + + + BMDevice_exec + + + BMDevice_exec + + + BMDevice_svnt + + + BMDevice_svnt + + + BMDevice_stub + + + BMDevice_stub + + diff --git a/modules/CIAO/examples/BasicSP/descriptors/run_test.pl b/modules/CIAO/examples/BasicSP/descriptors/run_test.pl new file mode 100755 index 00000000000..e64c797cdd4 --- /dev/null +++ b/modules/CIAO/examples/BasicSP/descriptors/run_test.pl @@ -0,0 +1,247 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$daemons = 4; +@ports = ( 10000, 20000, 30000, 40000 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior", "NodeApp3.ior", "NodeApp4.ior" ); +@iorfiles = 0; +@nodenames = ( "EC", "BMDisplay", "BMClosedED", "BMDevice" ); + +$status = 0; + +$dat_file = "BasicSP.dat"; +$cdp_file = "BasicSP_Unhomed.cdp"; +$controller_exec = "$CIAO_ROOT/examples/BasicSP/EC/controller"; + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + $tg_daemons[$i]->DeleteFile ("rategen.ior"); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); + $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --instance-nc corbaloc:rir:/NameService"; + + print "$d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +if ($#ARGV == 0) { + $cdp_file = $ARGV[0]; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --node-map $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $$daemons; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +# Invoke Controller +print "Invoking the controller ($controller_exec -o)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-o"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +sleep 10; + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/examples/DevGuideExamples/CIAO.mwc b/modules/CIAO/examples/DevGuideExamples/CIAO.mwc new file mode 100644 index 00000000000..dd297256b34 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/CIAO.mwc @@ -0,0 +1,5 @@ +// -*- MPC -*- +// $Id$ + +workspace { +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.idl new file mode 100644 index 00000000000..67bb016e157 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file Administrator.idl + * + * @author Don Busch + */ + +#ifndef ADMINISTRATOR_IDL +#define ADMINISTRATOR_IDL + +#include +#include "Runnable.idl" +#include "Publication.idl" + +component Administrator { + uses multiple Runnable runnables; + uses multiple Publication content; +}; + +home AdministratorHome manages Administrator {}; + +#endif + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.mpc b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.mpc new file mode 100644 index 00000000000..4f7ce593400 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator.mpc @@ -0,0 +1,110 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Messenger Administrator" + +project(Messenger_Administrator_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=ADMINISTRATOR_STUB_Export \ + -Wb,stub_export_include=Administrator_stub_export.h \ + -Wb,skel_export_macro=ADMINISTRATOR_SVNT_Export \ + -Wb,skel_export_include=Administrator_svnt_export.h \ + -Wb,exec_export_macro=ADMINISTRATOR_EXEC_Export \ + -Wb,exec_export_include=Administrator_exec_export.h + + IDL_Files { + Administrator.idl + } +} + +project(Messenger_Administrator_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Messenger_Administrator_idl_gen + idlflags += -Wb,export_macro=ADMINISTRATOR_EXEC_Export \ + -Wb,export_include=Administrator_exec_export.h \ + -SS + + IDL_Files { + AdministratorE.idl + } +} + +project(Messenger_Administrator_stub) : ccm_stub { + after += Messenger_Administrator_idl_gen Messenger_stub + libs += Messenger_stub + + sharedname = Administrator_stub + dynamicflags = ADMINISTRATOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + AdministratorC.cpp + } + + Header_Files { + AdministratorC.h + Administrator_stub_export.h + } + + Inline_Files { + AdministratorC.inl + } +} + +project(Messenger_Administrator_exec) : ciao_executor { + after += Messenger_Administrator_lem_gen Messenger_Administrator_stub + sharedname = Administrator_exec + libs += Administrator_stub Messenger_stub + + dynamicflags = ADMINISTRATOR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + AdministratorEC.cpp + Administrator_exec_i.cpp + } + + Header_Files { + AdministratorEC.h + Administrator_exec_i.h + Administrator_exec_export.h + } + + Inline_Files { + AdministratorEC.inl + } +} + + +project(Messenger_Administrator_svnt) : ciao_servant { + after += Messenger_svnt Messenger_Administrator_exec + sharedname = Administrator_svnt + libs += Administrator_exec \ + Administrator_stub \ + Messenger_svnt \ + Messenger_stub + + dynamicflags = ADMINISTRATOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + AdministratorS.cpp + Administrator_svnt.cpp + } + + Header_Files { + AdministratorS.h + Administrator_svnt.h + Administrator_svnt_export.h + } + + Inline_Files { + AdministratorS.inl + } +} + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client.cpp new file mode 100644 index 00000000000..15378b35b78 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client.cpp @@ -0,0 +1,120 @@ +// $Id$ + +/** + * @file Administrator_Client.cpp + * + * Do NOT put this file in a project; it is included by + * Administrator_Client_IDL2.cpp and Administrator_Client_IDL3.cpp + * This file will not build on its own. + * + * @author Don Busch + */ + +#include "ace/Get_Opt.h" +#include + +const ACE_TCHAR* ior = ACE_TEXT ("file://Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "k:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.optarg; + break; + + case '?': + default: + std::cerr << "usage: " << argv[0] << " -k " << std::endl; + return -1; + break; + } + return 0; +} + +int +svc( Runnable_ptr runnable, Publication_ptr publication ) +{ + enum SelectionType { START=1, STOP, CHANGE_PERIOD, CHANGE_TEXT, EXIT }; + + bool done = false; + do { + std::cout << "\nWhat do you want to do to the Messenger(s)?" << std::endl; + std::cout << START << ". Start" << std::endl; + std::cout << STOP << ". Stop" << std::endl; + std::cout << CHANGE_PERIOD << ". Change Publication Period" << std::endl; + std::cout << CHANGE_TEXT << ". Change Publication Text" << std::endl; + std::cout << EXIT << ". Exit" << std::endl; + + char selection_text[10]; + std::cout << "Please enter a selection: "; + std::cin.getline( selection_text, sizeof(selection_text) ); + int selection = ACE_OS::atoi(selection_text); + + switch (selection) { + case START: { + runnable->start(); + break; + } + case STOP: { + runnable->stop(); + break; + } + case CHANGE_PERIOD: { + char period[10]; + std::cout << "Please enter a new period in seconds: "; + std::cin.getline( period, sizeof( period ) ); + publication->period( ACE_OS::atoi(period) ); + break; + } + case CHANGE_TEXT: { + char buffer[1024]; + std::cout << "Please enter new text: "; + std::cin.getline( buffer, sizeof(buffer) ); + publication->text( buffer ); + break; + } + case EXIT: { + done = true; + break; + } + default: + std::cout << "Please enter a valid option" << std::endl; + } + } while ( !done ); + + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + if (parse_args (argc, argv) != 0) { + return 1; + } + + try { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + // get Messenger object + CORBA::Object_var obj = orb->string_to_object(ior); + Messenger_var messenger = Messenger::_narrow (obj.in()); + + Runnable_var runnable = messenger->provide_control(); + Publication_var publication = messenger->provide_content (); + + svc( runnable.in(), publication.in() ); + + return 0; + } + catch(const CORBA::Exception& ex) { + std::cerr << "Caught CORBA::Exception: " << std::endl << ex << std::endl; + } + + return 1; +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.cpp new file mode 100644 index 00000000000..399faa40389 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.cpp @@ -0,0 +1,10 @@ +// $Id$ + +/** + * @file Administrator_Client_IDL2.cpp + * + * @author Don Busch + */ + +#include "idl2/Messenger_IDL2C.h" +#include "Administrator_Client.cpp" diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc new file mode 100644 index 00000000000..07ff70dc8e2 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL2.mpc @@ -0,0 +1,48 @@ +// $Id$ + +project(Administrator_Client_IDL2_Compile): taoidl3toidl2defaults { + requires += dummy_label + after += Messenger_idl_gen Messenger_Administrator_idl_gen + // ensures that only idl3-to-idl2 processing is performed + custom_only = 1 + + idl3toidl2flags += -I. -o idl2 + + IDL3TOIDL2_Files { + gendir = idl2 + Runnable.idl + Publication.idl + Message.idl + History.idl + Administrator.idl + Messenger.idl + } +} + +project(Administrator_Client_IDL2): ccm_stub, valuetype { + requires += dummy_label + after += Administrator_Client_IDL2_Compile + + exename = Administrator_Client_IDL2 + idlflags += -Sm -Iidl2 -o idl2 -SS + + IDL_Files { + gendir = idl2 + idl2/Runnable_IDL2.idl + idl2/Publication_IDL2.idl + idl2/Message_IDL2.idl + idl2/History_IDL2.idl + idl2/Administrator_IDL2.idl + idl2/Messenger_IDL2.idl + } + + Source_Files { + Administrator_Client_IDL2.cpp + idl2/Administrator_IDL2C.cpp + idl2/Messenger_IDL2C.cpp + idl2/Publication_IDL2C.cpp + idl2/Runnable_IDL2C.cpp + idl2/History_IDL2C.cpp + idl2/Message_IDL2C.cpp + } +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.cpp new file mode 100644 index 00000000000..6e83b57165f --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.cpp @@ -0,0 +1,10 @@ +// $Id$ + +/** + * @file Administrator_Client_IDL3.cpp + * + * @author Don Busch + */ + +#include "MessengerC.h" +#include "Administrator_Client.cpp" diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc new file mode 100644 index 00000000000..06cf093c861 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_Client_IDL3.mpc @@ -0,0 +1,32 @@ +// $Id$ + +// @file Administrator_Client_IDL3.mpc +// +// @author Don Busch + +project(Administrator_Client_IDL3): ccm_stub, valuetype { + after += Messenger_stub + libs += Messenger_stub + after += Administrator_Client_IDL2_Compile + + exename = Administrator_Client_IDL3 + + IDL_Files { + // IDL stubs are linked from the Messenger_stub library; + // this empty section prevents all of the IDL stub code from + // being linked into this executable as well + } + + Header_Files { + // this empty section prevents all of the header files + // being includes in this project + } + + Source_Files { + Administrator_Client_IDL3.cpp + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp new file mode 100644 index 00000000000..cfb6b5b7e71 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.cpp @@ -0,0 +1,259 @@ +// $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 "Administrator_exec_i.h" + +// MY CODE +#include +#include + +namespace CIAO_Administrator_Impl +{ + //================================================================== + // Component Executor Implementation Class: Administrator_exec_i + //================================================================== + + Administrator_exec_i::Administrator_exec_i (void) + { + } + + Administrator_exec_i::~Administrator_exec_i (void) + { + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + Administrator_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Administrator_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Administrator_exec_i::ccm_activate () + { + // Your code here. + + // MY CODE + ACE_DEBUG((LM_INFO, ACE_TEXT("ccm_activate\n" ))); + + // Activate the Task + this->activate(); + } + + void + Administrator_exec_i::ccm_passivate () + { + // Your code here. + + // MY CODE + ACE_DEBUG((LM_INFO, ACE_TEXT("ccm_passivate\n" ))); + } + + void + Administrator_exec_i::ccm_remove () + { + // Your code here. + ACE_DEBUG((LM_INFO, ACE_TEXT("ccm_remove\n"))); + } + + void + Administrator_exec_i::configuration_complete (void) + { + ACE_DEBUG ((LM_INFO, ACE_TEXT("configuration_complete\n"))); + } + + // Overridden from ACE_Task_Base + int + Administrator_exec_i::svc() + { + enum SelectionType { START=1, STOP, CHANGE_PERIOD, CHANGE_TEXT,EXIT }; + + bool done = false; + do { + std::cout << "\nWhat do you want to do to the Messenger(s)?" << std::endl; + std::cout << START << ". Start" << std::endl; + std::cout << STOP << ". Stop" << std::endl; + std::cout << CHANGE_PERIOD << ". Change Publication Period" << std::endl; + std::cout << CHANGE_TEXT << ". Change Publication Text" << std::endl; + std::cout << EXIT << ". Exit" << std::endl; + + char selection_text[10]; + std::cout << "Please enter a selection: "; + std::cin.getline( selection_text, sizeof(selection_text) ); + int selection = ACE_OS::atoi(selection_text); + + switch (selection) { + case START: + startPublishing(); + break; + case STOP: + stopPublishing(); + break; + case CHANGE_PERIOD: + changePublicationPeriod(); + break; + case CHANGE_TEXT: + changePublicationText(); + break; + case EXIT: { + done = true; + break; + } + default: + std::cout << "Please enter a valid option" << std::endl; + } + } while ( !done ); + + return 0; + } + + void Administrator_exec_i::startPublishing() + { + // Get the attached Runnable facet(s) + ::Administrator::runnablesConnections_var connections = + this->context_->get_connections_runnables(); + + std::cout << "Starting Publication" << std::endl; + for ( CORBA::ULong i = 0; i < connections->length(); ++i ) { + Runnable_var runnable = (*connections)[i].objref; + runnable->start(); + } + } + + void Administrator_exec_i::stopPublishing() + { + // Get the attached Runnable facet(s) + ::Administrator::runnablesConnections_var connections = + this->context_->get_connections_runnables(); + + std::cout << "Stopping Publication" << std::endl; + for ( CORBA::ULong i = 0; i < connections->length(); ++i ) { + Runnable_var runnable = (*connections)[i].objref; + runnable->stop(); + } + } + + void Administrator_exec_i::changePublicationPeriod() + { + // Get the attached Publication facet(s) + ::Administrator::contentConnections_var contents = + this->context_->get_connections_content(); + + char period[10]; + std::cout << "Please enter a new period in seconds: "; + std::cin.getline( period, sizeof( period ) ); + for ( CORBA::ULong i = 0; i < contents->length(); ++i ) { + Publication_var publication = (*contents)[i].objref; + publication->period( ACE_OS::atoi(period) ); + } + } + + void Administrator_exec_i::changePublicationText() + { + // Get the attached Publication facet(s) + ::Administrator::contentConnections_var contents = + this->context_->get_connections_content(); + + char buffer[1024]; + std::cout << "Please enter new text: "; + std::cin.getline( buffer, sizeof(buffer) ); + for ( CORBA::ULong i = 0; i < contents->length(); ++i ) { + Publication_var publication = (*contents)[i].objref; + publication->text( buffer ); + } + } + + extern "C" ADMINISTRATOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Administrator_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + Administrator_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + //================================================================== + // Home Executor Implementation Class: AdministratorHome_exec_i + //================================================================== + + AdministratorHome_exec_i::AdministratorHome_exec_i (void) + { + } + + AdministratorHome_exec_i::~AdministratorHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + AdministratorHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Administrator_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" ADMINISTRATOR_EXEC_Export ::Components::HomeExecutorBase_ptr + create_AdministratorHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + AdministratorHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.h b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.h new file mode 100644 index 00000000000..796395a2042 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Administrator_exec_i.h @@ -0,0 +1,112 @@ +// $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_ADMINISTRATOR_EXEC_H +#define CIAO_ADMINISTRATOR_EXEC_H + +#include /**/ "ace/pre.h" + +#include "AdministratorEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Administrator_exec_export.h" +#include "tao/LocalObject.h" + +#include "ace/Task.h" + +namespace CIAO_Administrator_Impl +{ + class ADMINISTRATOR_EXEC_Export Administrator_exec_i + : public virtual Administrator_Exec, + public virtual ::CORBA::LocalObject, + public virtual ACE_Task_Base + { + public: + Administrator_exec_i (void); + virtual ~Administrator_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + // Overridden from ACE_Task_Base + int svc(); + + private: + + void startPublishing(); + void stopPublishing(); + void changePublicationPeriod(); + void changePublicationText(); + + ::CCM_Administrator_Context_var context_; + }; + + extern "C" ADMINISTRATOR_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Administrator_Impl (void); + + class ADMINISTRATOR_EXEC_Export AdministratorHome_exec_i + : public virtual AdministratorHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + AdministratorHome_exec_i (void); + virtual ~AdministratorHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" ADMINISTRATOR_EXEC_Export ::Components::HomeExecutorBase_ptr + create_AdministratorHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_ADMINISTRATOR_EXEC_H */ diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/History.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/History.idl new file mode 100644 index 00000000000..c83cadf03bb --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/History.idl @@ -0,0 +1,19 @@ +// $Id$ + +/** + * @file History.idl + * + * @author Don Busch + */ + +#ifndef HISTORY_IDL +#define HISTORY_IDL + +#include "Message.idl" + +interface History { + Messages get_all(); + Message get_latest(); +}; + +#endif diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.cpp new file mode 100644 index 00000000000..1afb8060fc2 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.cpp @@ -0,0 +1,95 @@ +// $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 "History_exec_i.h" + +namespace CIAO_Messenger_Impl +{ + //================================================================== + // Facet Executor Implementation Class: History_exec_i + //================================================================== + + History_exec_i::History_exec_i (void) + { + } + + History_exec_i::~History_exec_i (void) + { + } + + // Operations from ::History + + ::Messages * + History_exec_i::get_all () + { + // Your code here. + + // MY CODE + ACE_Guard guard(this->lock_); + + ACE_DEBUG((LM_INFO, ACE_TEXT("History_i::get_all\n") )); + + // create a Messages sequence, set its length + ::Messages* retval = new ::Messages(); + retval->length( this->messages_.size() ); + + // iterate through the MessageList, copying messages into the return sequence + CORBA::ULong i = 0; + for ( MessageList::iterator messageItr = this->messages_.begin(); + messageItr != this->messages_.end(); + ++messageItr ) + { + // because the MessageList contains Message_vars, reference counting + // upon assignment into the sequence is handled properly for us. + (*retval)[i++] = *messageItr; + } + return retval; + } + + ::Message * + History_exec_i::get_latest () + { + // Your code here. + + // MY CODE + ACE_Guard guard(this->lock_); + + ACE_DEBUG((LM_INFO, ACE_TEXT("History_i::get_latest\n") )); + + // just get the last message from the history. because the MessageList + // contains Message_vars, _var to _var assigmnent handles the reference + // counting properly for us. + ::Message_var retval = this->messages_.back(); + return retval._retn(); + } + + // MY CODE + void + History_exec_i::add( ::Message* message ) + { + ACE_Guard guard(lock_); + + // bump up the reference count; we don't own it. + // the _var in the STL list takes ownership of the "copy" + message->_add_ref(); + this->messages_.push_back( message ); + } +} + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.h b/modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.h new file mode 100644 index 00000000000..5563a1b033b --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/History_exec_i.h @@ -0,0 +1,70 @@ +// $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_HISTORY_EXEC_H +#define CIAO_HISTORY_EXEC_H + +#include /**/ "ace/pre.h" + +#include "MessengerEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Messenger_exec_export.h" +#include "tao/LocalObject.h" + +// MY CODE +#include +#include "ace/Thread_Mutex.h" + +namespace CIAO_Messenger_Impl +{ + class MESSENGER_EXEC_Export History_exec_i + : public virtual ::CCM_History, + public virtual ::CORBA::LocalObject + { + public: + History_exec_i (void); + virtual ~History_exec_i (void); + + // Operations from ::History + + virtual ::Messages *get_all (); + + virtual ::Message *get_latest (); + + // MY CODE + + void add( ::Message* message); + + private: + TAO_SYNCH_MUTEX lock_; + + typedef std::list< ::Message_var> MessageList; + MessageList messages_; + }; +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_HISTORY_EXEC_H */ + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Message.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/Message.idl new file mode 100644 index 00000000000..2e3aee687b0 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Message.idl @@ -0,0 +1,21 @@ +// $Id$ + +/** + * @file Message.idl + * + * @author Don Busch + */ + +#ifndef MESSAGE_IDL +#define MESSAGE_IDL + +#include + +eventtype Message { + public string subject; + public string user; + public string text; +}; +typedef sequence Messages; + +#endif diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.idl new file mode 100644 index 00000000000..47033a5885c --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.idl @@ -0,0 +1,34 @@ +// $Id$ + +/** + * @file Messenger.idl + * + * @author Don Busch + */ + +#ifndef MESSENGER_IDL +#define MESSENGER_IDL + +#include +#include "Runnable.idl" +#include "RunnableE.idl" +#include "Publication.idl" +#include "PublicationE.idl" +#include "Message.idl" +#include "MessageE.idl" +#include "History.idl" +#include "HistoryE.idl" + +component Messenger { + attribute string subject; + + provides Runnable control; + provides Publication content; + + publishes Message message_publisher; + provides History message_history; +}; + +home MessengerHome manages Messenger {}; + +#endif diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.mpc b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.mpc new file mode 100644 index 00000000000..1cf9277eafe --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger.mpc @@ -0,0 +1,174 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl Messenger" + +project(Messenge_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=MESSENGER_STUB_Export \ + -Wb,stub_export_include=Messenger_stub_export.h \ + -Wb,skel_export_macro=MESSENGER_SVNT_Export \ + -Wb,skel_export_include=Messenger_svnt_export.h \ + -Wb,exec_export_macro=MESSENGER_EXEC_Export \ + -Wb,exec_export_include=Messenger_exec_export.h \ + -Wb,svnt_export_macro=MESSENGER_SVNT_Export \ + -Wb,svnt_export_include=Messenger_svnt_export.h \ + + IDL_Files { + Message.idl + } +} + +project(Messenger_idl_gen) : componentidldefaults { + after += Messenge_idl_gen + custom_only = 1 + idlflags -= -Gxhst -Gxhsk -Gxhsv -Gxhex + idlflags += -Wb,stub_export_macro=MESSENGER_STUB_Export \ + -Wb,stub_export_include=Messenger_stub_export.h \ + -Wb,skel_export_macro=MESSENGER_SVNT_Export \ + -Wb,skel_export_include=Messenger_svnt_export.h + IDL_Files { + Runnable.idl + Publication.idl + History.idl + } +} + +project(Messenger_messenger_idl_gen) : componentidldefaults { + custom_only = 1 + after += Messenger_idl_gen + idlflags += -Wb,stub_export_macro=MESSENGER_STUB_Export \ + -Wb,stub_export_include=Messenger_stub_export.h \ + -Wb,skel_export_macro=MESSENGER_SVNT_Export \ + -Wb,skel_export_include=Messenger_svnt_export.h + + IDL_Files { + Messenger.idl + } +} + +project(Messenger_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Messenger_messenger_idl_gen + idlflags += -Wb,export_macro=MESSENGER_EXEC_Export \ + -Wb,export_include=Messenger_exec_export.h \ + -SS + + IDL_Files { + MessengerE.idl + RunnableE.idl + PublicationE.idl + MessageE.idl + HistoryE.idl + } +} + +project(Messenger_stub) : ccm_stub { + after += Messenger_idl_gen Messenger_idlx_gen Messenger_lem_gen + + sharedname = Messenger_stub + dynamicflags = MESSENGER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RunnableC.cpp + PublicationC.cpp + MessageC.cpp + HistoryC.cpp + MessengerC.cpp + } + + Header_Files { + RunnableC.h + PublicationC.h + MessageC.h + HistoryC.h + MessengerC.h + Messenger_stub_export.h + } + + Inline_Files { + RunnableC.inl + PublicationC.inl + MessageC.inl + HistoryC.inl + MessengerC.inl + } +} + +project(Messenger_exec) : ciao_executor { + after += Messenger_lem_gen Messenger_stub + sharedname = Messenger_exec + libs += Messenger_stub + + dynamicflags = MESSENGER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + MessengerEC.cpp + RunnableEC.cpp + PublicationEC.cpp + MessageEC.cpp + HistoryEC.cpp + Messenger_exec_i.cpp + Publication_exec_i.cpp + History_exec_i.cpp + Runnable_exec_i.cpp + } + + Header_Files { + MessengerEC.h + Messenger_exec_i.h + Publication_exec_i.h + History_exec_i.h + Runnable_exec_i.h + Messenger_exec_export.h + } + + Inline_Files { + MessengerEC.inl + } +} + +project(Messenger_svnt) : ciao_servant { + after += Messenger_exec + sharedname = Messenger_svnt + libs += Messenger_exec \ + Messenger_stub + + dynamicflags = MESSENGER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RunnableS.cpp + PublicationS.cpp + MessageS.cpp + HistoryS.cpp + MessengerS.cpp + Messenger_svnt.cpp + } + + Header_Files { + RunnableS.h + PublicationS.h + MessageS.h + HistoryS.h + MessengerS.h + Messenger_svnt.h + Messenger_svnt_export.h + } + + Inline_Files { + RunnableS.inl + PublicationS.inl + MessageS.inl + HistoryS.inl + MessengerS.inl + } +} + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp new file mode 100644 index 00000000000..c71b7b82504 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.cpp @@ -0,0 +1,253 @@ +// $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 "Messenger_exec_i.h" + +// MY CODE +#include "ace/OS_NS_unistd.h" +#include "History_exec_i.h" +#include "Runnable_exec_i.h" +#include "Publication_exec_i.h" + +namespace CIAO_Messenger_Impl +{ + //================================================================== + // Component Executor Implementation Class: Messenger_exec_i + //================================================================== + + Messenger_exec_i::Messenger_exec_i () + : subject_( "Test Subject" ), + user_( "ciao_user" ) + { + this->control_ = new Runnable_exec_i(); + this->history_ = new History_exec_i(); + this->content_ = new Publication_exec_i( + "The quick brown fox jumped over the lazy dog", + 2 ); + } + + Messenger_exec_i::~Messenger_exec_i (void) + { + this->control_->_remove_ref(); + this->history_->_remove_ref(); + this->content_->_remove_ref(); + } + + // MY CODE + int Messenger_exec_i::svc() { + + ACE_DEBUG((LM_INFO, ACE_TEXT("svc()\n"))); + + while (1) + { + ACE_OS::sleep( this->content_->period() ); + + // get the run_lock from the Runnable executor; we have an + // agreement with the Runnable executor that we must posess the + // run_lock to publish + ACE_Guard guard( this->control_->get_run_lock() ); + + // create a message to publish + ::Message_var msg = new ::OBV_Message(); + msg->subject( this->subject() ); + msg->text( this->content_->text() ); + msg->user( CORBA::string_dup( this->user_.c_str() ) ); + + // add the message to the message history + this->history_->add( msg.in() ); + + ACE_DEBUG((LM_INFO, ACE_TEXT("Messenger_exec_i::svc: publishing message\n") )); + + // publish to all interested consumers + this->context_->push_message_publisher( msg.in() ); + + ACE_DEBUG((LM_INFO, + ACE_TEXT("Published Message on subject %s\n User %s\n Text %s\n"), + msg->subject(), + msg->user(), + msg->text() )); + } + + ACE_DEBUG((LM_INFO, ACE_TEXT("svc(): Gracefully stopping publication\n"))); + return 0; + } + + // Supported or inherited operations. + + // Attribute operations. + + char* + Messenger_exec_i::subject () + { + return CORBA::string_dup( this->subject_.c_str() ); + } + + void + Messenger_exec_i::subject ( const char* subject) + { + this->subject_ = CORBA::string_dup( subject ); + } + + // Port operations. + + ::CCM_Runnable_ptr + Messenger_exec_i::get_control () + { + // Your code here. + + // MY CODE + + // bump up ref count because we give up ownership when we return this + this->control_->_add_ref(); + return this->control_; + } + + ::CCM_Publication_ptr + Messenger_exec_i::get_content () + { + // Your code here. + + // MY CODE + + // bump up ref count because we give up ownership when we return this + this->content_->_add_ref(); + return this->content_; + } + + ::CCM_History_ptr + Messenger_exec_i::get_message_history () + { + // Your code here. + + // MY CODE + + // bump up ref count because we give up ownership when we return this + this->history_->_add_ref(); + return this->history_; + } + + // Operations from Components::SessionComponent + + void + Messenger_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Messenger_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Messenger_exec_i::configuration_complete () + { + /* Your code here. */ + } + + void + Messenger_exec_i::ccm_activate () + { + /* Your code here. */ + ACE_DEBUG((LM_INFO, ACE_TEXT("Messenger_exec_i::ccm_activate\n"))); + this->activate(); + } + + void + Messenger_exec_i::ccm_passivate () + { + /* Your code here. */ + ACE_DEBUG((LM_INFO, ACE_TEXT("Messenger_exec_i::ccm_passivate\n"))); + } + + void + Messenger_exec_i::ccm_remove () + { + /* Your code here. */ + ACE_DEBUG((LM_INFO, ACE_TEXT("Messenger_exec_i::ccm_remove\n"))); + } + + + extern "C" MESSENGER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Messenger_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + Messenger_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + //================================================================== + // Home Executor Implementation Class: MessengerHome_exec_i + //================================================================== + + MessengerHome_exec_i::MessengerHome_exec_i (void) + { + } + + MessengerHome_exec_i::~MessengerHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + MessengerHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Messenger_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" MESSENGER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_MessengerHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + MessengerHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.h b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.h new file mode 100644 index 00000000000..50e53e211ff --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Messenger_exec_i.h @@ -0,0 +1,129 @@ +// $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_MESSENGER_EXEC_H +#define CIAO_MESSENGER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "Messenger_svnt.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Messenger_exec_export.h" +#include "tao/LocalObject.h" + +// MY CODE +#include +#include "ace/Task.h" + +namespace CIAO_Messenger_Impl +{ + class Runnable_exec_i; + class Publication_exec_i; + class History_exec_i; + + class MESSENGER_EXEC_Export Messenger_exec_i + : public virtual Messenger_Exec, + public virtual ::CORBA::LocalObject, + public virtual ACE_Task_Base + { + public: + Messenger_exec_i (void); + virtual ~Messenger_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + virtual char *subject (); + + virtual void subject (const char * subject); + + // Port operations. + + virtual ::CCM_Runnable_ptr get_control (); + + virtual ::CCM_Publication_ptr get_content (); + + virtual ::CCM_History_ptr get_message_history (); + + // Operations from Components::SessionComponent + + virtual void set_session_context ( ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + // MY CODE + virtual int svc(); + + private: + ::CCM_Messenger_Context_var context_; + + // MY CODE + Runnable_exec_i* control_; + Publication_exec_i* content_; + History_exec_i* history_; + + std::string subject_; + const std::string user_; + }; + + extern "C" MESSENGER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Messenger_Impl (void); + + class MESSENGER_EXEC_Export MessengerHome_exec_i + : public virtual MessengerHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + MessengerHome_exec_i (void); + virtual ~MessengerHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" MESSENGER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_MessengerHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_MESSENGER_EXEC_H */ + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Publication.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/Publication.idl new file mode 100644 index 00000000000..43cf29228cc --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Publication.idl @@ -0,0 +1,17 @@ +// $Id$ + +/** + * @file Publication.idl + * + * @author Don Busch + */ + +#ifndef PUBLICATION_IDL +#define PUBLICATION_IDL + +interface Publication { + attribute string text; + attribute unsigned short period; +}; + +#endif diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.cpp new file mode 100644 index 00000000000..4c87e597459 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.cpp @@ -0,0 +1,81 @@ +// $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 "Publication_exec_i.h" + +namespace CIAO_Messenger_Impl +{ + //================================================================== + // Facet Executor Implementation Class: Publication_exec_i + //================================================================== + + Publication_exec_i::Publication_exec_i ( + const char* text, CORBA::UShort period) + : text_( text ), + period_( period) + { + } + + Publication_exec_i::~Publication_exec_i (void) + { + } + + // Operations from ::Publication + + char* + Publication_exec_i::text () + { + ACE_Guard guard(this->lock_); + + return CORBA::string_dup( this->text_.c_str() ); + } + + void + Publication_exec_i::text ( + const char* text) + { + ACE_Guard guard(this->lock_); + + this->text_ = text; + ACE_DEBUG((LM_INFO, ACE_TEXT("publication text changed to %C\n"), text )); + } + + CORBA::UShort + Publication_exec_i::period () + { + ACE_Guard guard(this->lock_); + + return this->period_; + } + + void + Publication_exec_i::period (CORBA::UShort period) + { + ACE_Guard guard( this->lock_ ); + + if ( period > 0 ) { + this->period_ = period; + ACE_DEBUG((LM_INFO, ACE_TEXT("publication period changed to %d seconds\n"), period )); + } else { + ACE_DEBUG((LM_INFO, ACE_TEXT("ignoring a negative period of %d\n"), period )); + } + } +} + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.h b/modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.h new file mode 100644 index 00000000000..07c43248586 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Publication_exec_i.h @@ -0,0 +1,70 @@ +// $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_PUBLICATION_EXEC_H +#define CIAO_PUBLICATION_EXEC_H + +#include /**/ "ace/pre.h" + +#include "MessengerEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Messenger_exec_export.h" +#include "tao/LocalObject.h" + +// MY CODE +#include +#include "ace/Thread_Mutex.h" + +namespace CIAO_Messenger_Impl +{ + class MESSENGER_EXEC_Export Publication_exec_i + : public virtual ::CCM_Publication, + public virtual ::CORBA::LocalObject + { + public: + Publication_exec_i (const char* text, CORBA::UShort period); + virtual ~Publication_exec_i (void); + + // Operations from ::Publication + + virtual char* text (); + + virtual void text ( const char* text); + + virtual CORBA::UShort period (); + + virtual void period ( CORBA::UShort period); + + private: + std::string text_; + CORBA::UShort period_; + + TAO_SYNCH_MUTEX lock_; + }; +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_PUBLICATION_EXEC_H */ + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.idl new file mode 100644 index 00000000000..2d22feceb70 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.idl @@ -0,0 +1,23 @@ +// $Id$ + +/** + * @file Receiver.idl + * + * @author Don Busch + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include +#include "Message.idl" +#include "History.idl" + +component Receiver { + consumes Message message_consumer; + uses History message_history; +}; + +home ReceiverHome manages Receiver {}; + +#endif diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.mpc b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.mpc new file mode 100644 index 00000000000..daa4437a9f3 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver.mpc @@ -0,0 +1,110 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Messenger Receiver" + +project(Messenger_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h + + IDL_Files { + Receiver.idl + } +} + +project(Messenger_Receiver_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Messenger_Receiver_idl_gen + idlflags += -Wb,export_macro=RECEIVER_EXEC_Export \ + -Wb,export_include=Receiver_exec_export.h \ + -SS + + IDL_Files { + ReceiverE.idl + } +} + +project(Messenger_Receiver_stub) : ccm_stub { + after += Messenger_Receiver_idl_gen Messenger_stub + libs += Messenger_stub + + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverC.cpp + } + + Header_Files { + ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + ReceiverC.inl + } +} + +project(Messenger_Receiver_exec) : ciao_executor { + after += Messenger_Receiver_lem_gen Messenger_Receiver_stub + sharedname = Receiver_exec + libs += Receiver_stub Messenger_stub + + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverEC.cpp + Receiver_exec_i.cpp + } + + Header_Files { + ReceiverEC.h + Receiver_exec_i.h + Receiver_exec_export.h + } + + Inline_Files { + ReceiverEC.inl + } +} + + +project(Messenger_Receiver_svnt) : ciao_servant { + after += Messenger_svnt Messenger_Receiver_exec + sharedname = Receiver_svnt + libs += Receiver_exec \ + Receiver_stub \ + Messenger_svnt \ + Messenger_stub + + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverS.cpp + Receiver_svnt.cpp + } + + Header_Files { + ReceiverS.h + Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + ReceiverS.inl + } +} + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp new file mode 100644 index 00000000000..46981868492 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.cpp @@ -0,0 +1,176 @@ +// $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 "Receiver_exec_i.h" + +namespace CIAO_Receiver_Impl +{ + //================================================================== + // Component Executor Implementation Class: Receiver_exec_i + //================================================================== + + Receiver_exec_i::Receiver_exec_i (void) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + void + Receiver_exec_i::push_message_consumer (::Message * ev) + { + /* Your code here. */ + + // MY CODE + + CORBA::String_var subject = ev->subject(); + CORBA::String_var user = ev->user(); + CORBA::String_var text = ev->text(); + + ACE_DEBUG((LM_INFO, + ACE_TEXT("Received Message:\n Subject: %s\n User: %s\n Text: %s\n"), + subject.in(), + user.in(), + text.in() )); + + // Use the history to (inefficiently) get the total number of messages + // published on this item so far + ::History_var history = + this->context_->get_connection_message_history(); + ::Messages_var messages = history->get_all(); + ACE_DEBUG((LM_INFO, + ACE_TEXT(" Subject \"%s\" has published %d messages so far\n"), + subject.in(), + messages->length() )); + } + + // Operations from Components::SessionComponent + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Receiver_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete () + { + /* Your code here. */ + ACE_DEBUG((LM_INFO, ACE_TEXT("Receiver_exec_i::configuration_complete\n"))); + } + + void + Receiver_exec_i::ccm_activate () + { + // Your code here. + ACE_DEBUG((LM_INFO, ACE_TEXT("Receiver_exec_i::ccm_activate\n"))); + } + + void + Receiver_exec_i::ccm_passivate () + { + /* Your code here. */ + ACE_DEBUG((LM_INFO, ACE_TEXT("Receiver_exec_i::ccm_passivate\n"))); + } + + void + Receiver_exec_i::ccm_remove () + { + /* Your code here. */ + ACE_DEBUG((LM_INFO, ACE_TEXT("Receiver_exec_i::ccm_remove\n"))); + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + Receiver_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + //================================================================== + // Home Executor Implementation Class: ReceiverHome_exec_i + //================================================================== + + ReceiverHome_exec_i::ReceiverHome_exec_i (void) + { + } + + ReceiverHome_exec_i::~ReceiverHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + ReceiverHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Receiver_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_ReceiverHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + ReceiverHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.h b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.h new file mode 100644 index 00000000000..a42f79f36b7 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Receiver_exec_i.h @@ -0,0 +1,102 @@ +// $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_RECEIVER_EXEC_H +#define CIAO_RECEIVER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "ReceiverEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Receiver_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Receiver_Impl +{ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + virtual void push_message_consumer (::Message *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::CCM_Receiver_Context_var context_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Receiver_Impl (void); + + class RECEIVER_EXEC_Export ReceiverHome_exec_i + : public virtual ReceiverHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + ReceiverHome_exec_i (void); + virtual ~ReceiverHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_ReceiverHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_RECEIVER_EXEC_H */ + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable.idl b/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable.idl new file mode 100644 index 00000000000..61515b7c17a --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable.idl @@ -0,0 +1,17 @@ +// $Id$ + +/** + * @file Runnable.idl + * + * @author Don Busch + */ + +#ifndef RUNNABLE_IDL +#define RUNNABLE_IDL + +interface Runnable { + void start(); + void stop(); +}; + +#endif diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp new file mode 100644 index 00000000000..4f02a3e7e10 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.cpp @@ -0,0 +1,60 @@ +// $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 "Runnable_exec_i.h" + +namespace CIAO_Messenger_Impl +{ + //================================================================== + // Facet Executor Implementation Class: Runnable_exec_i + //================================================================== + + Runnable_exec_i::Runnable_exec_i () + { + // initially in "stopped" state + this->stop(); + } + + Runnable_exec_i::~Runnable_exec_i (void) + { + // don't own anything + } + + // Operations from ::Runnable + + void + Runnable_exec_i::start () + { + this->run_lock_.release(); + } + + void + Runnable_exec_i::stop () + { + this->run_lock_.acquire(); + } + + TAO_SYNCH_MUTEX& + Runnable_exec_i::get_run_lock () + { + return this->run_lock_; + } +} + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.h b/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.h new file mode 100644 index 00000000000..c432298dfd4 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/Runnable_exec_i.h @@ -0,0 +1,65 @@ +// $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_RUNNABLE_EXEC_H +#define CIAO_RUNNABLE_EXEC_H + +#include /**/ "ace/pre.h" + +#include "Messenger_svnt.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Messenger_exec_export.h" + +// MY CODE +#include "tao/LocalObject.h" +#include "ace/Thread_Mutex.h" + +namespace CIAO_Messenger_Impl +{ + class MESSENGER_EXEC_Export Runnable_exec_i + : public virtual ::CCM_Runnable, + public virtual ::CORBA::LocalObject + { + public: + Runnable_exec_i (); + virtual ~Runnable_exec_i (void); + + // Operations from ::Runnable + + virtual void start (); + + virtual void stop (); + + // MY CODE + TAO_SYNCH_MUTEX& get_run_lock(); + + private: + TAO_SYNCH_MUTEX run_lock_; + }; +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_RUNNABLE_EXEC_H */ + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc new file mode 100644 index 00000000000..caae6351bbc --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/Messenger_StaticDAnCE.mpc @@ -0,0 +1,18 @@ +// -*- MPC -*- +// $Id$ + +project(Messenger_StaticDAnCE) { + exename = Messenger_StaticDAnCE + requires += dummy_label + + libs += Receiver_stub Administrator_stub Messenger_stub + libs += Receiver_svnt Administrator_svnt Messenger_svnt + libs += Receiver_exec Administrator_exec Messenger_exec + libpaths += .. + + after += Receiver_exec Administrator_exec Messenger_exec + + Source_Files { + StaticDAnCEApp.cpp + } +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/README.txt b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/README.txt new file mode 100644 index 00000000000..71cfbcf947f --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/README.txt @@ -0,0 +1,35 @@ +// $Id$ + +plan.h +------- +generated by running +$CIAO_ROOT/DAnCE/StaticConfiguration/StaticDAnCEParser -p + ../descriptors/Application-flattened.cdp + +Messenger_StaticDAnCE.mpc +------------------------- +started with a copy of StaticDAnCEApp.mpc.tmpl from + $CIAO_ROOT/DAnCE/StaticConfiguration +changed project name and exe name +replaces example libs with libs built in the .. directory +added the after += line + +StaticDAnCEApp.cpp +------------------ +copied from StaticDAnCEApp.cpp.tmpl in $CIAO_ROOT/DAnCE/StaticConfiguration + +run_test.pl +----------- +a modified copy of the ../descriptors/run_test.pl script that uses the static +application in place of the NodeManager to run the Messenger_Node (port 44000) + +To run the test on the target, start the Messenger_StaticDAnCE executable +(with -ORBEndpoint iiop://:44000) first on the target. +Then comment out the spawning of process NA4 in the run_test.pl script. +Also modify the final line of ../descriptors/ApplicationNodeMap.dat to +replace host with the hostname or IP address of the target system. + +Known issues: +- During shutodwn the Execution_Manager will print out some exceptions when +it tries to communicate with the Messenger_StaticDAnCE process that has +already terminated. diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/StaticDAnCEApp.cpp b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/StaticDAnCEApp.cpp new file mode 100644 index 00000000000..daf16e8cbba --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/StaticDAnCEApp.cpp @@ -0,0 +1,102 @@ +// $Id$ + +#include "Container_Base.h" +#include "NodeManager/NodeManager_Impl.h" +#include "ace/OS_NS_stdio.h" +#include "ace/streams.h" +#include "ace/Get_Opt.h" +#include "tao/IORTable/IORTable.h" +#include "tao/CDR.h" +#include "plan.h" + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + // Initialize the ORB so that CORBA::Any will work + // + CORBA::ORB_var orb = + CORBA::ORB_init (argc, + argv); + try + { + // Get reference to Root POA. + CORBA::Object_var obj + = orb->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var poa + = PortableServer::POA::_narrow (obj.in ()); + + // Activate POA manager + PortableServer::POAManager_var mgr + = poa->the_POAManager (); + + mgr->activate (); + + int homes_table_size = + sizeof (homes_table)/sizeof(HomeAttributes); + + CIAO::HOMECREATOR_FUNCPTR_MAP home_creator_fptr_map; + CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP homesvnt_creator_fptr_map; + CIAO::Static_Config_EntryPoints_Maps static_config_entrypoints_maps; + static_config_entrypoints_maps.home_creator_funcptr_map_ = &home_creator_fptr_map; + static_config_entrypoints_maps.home_servant_creator_funcptr_map_ = &homesvnt_creator_fptr_map; + + int i=0; + for (i=0; iinit (); + + CORBA::Object_var table_object = + orb->resolve_initial_references ("IORTable"); + + IORTable::Table_var adapter = + IORTable::Table::_narrow (table_object.in ()); + + if (CORBA::is_nil (adapter.in ())) + ACE_ERROR_RETURN ((LM_ERROR, "Nil IORTable\n"), -1); + + CIAO::NodeManagerDaemon_var manager = + static_node_manager_impl->_this (); + + CORBA::String_var str = + orb->object_to_string (manager.in ()); + + adapter->bind ("NodeManager", + str.in ()); + + // Run the main event loop for the ORB. + orb->run (); + + poa->destroy (1, 1); + + orb->destroy (); + } + catch (CORBA::Exception& ex) + { + ex._tao_print_exception ("Caught CORBA Exception: "); + return -1; + } + + return 0; +} diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/plan.h b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/plan.h new file mode 100644 index 00000000000..a5732221e75 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/plan.h @@ -0,0 +1,47 @@ +// $Id$ + +#include "Session_Container.h" + +extern "C" ::Components::HomeExecutorBase_ptr create_MessengerHome_Impl (void); +extern "C" ::PortableServer::Servant create_MessengerHome_Servant + (::Components::HomeExecutorBase_ptr p, + ::CIAO::Session_Container *c, + const char* + ); +extern "C" ::Components::HomeExecutorBase_ptr create_ReceiverHome_Impl (void); +extern "C" ::PortableServer::Servant create_ReceiverHome_Servant + (::Components::HomeExecutorBase_ptr p, + ::CIAO::Session_Container *c, + const char* + ); +extern "C" ::Components::HomeExecutorBase_ptr create_ReceiverHome_Impl (void); +extern "C" ::PortableServer::Servant create_ReceiverHome_Servant + (::Components::HomeExecutorBase_ptr p, + ::CIAO::Session_Container *c, + const char* + ); +extern "C" ::Components::HomeExecutorBase_ptr create_AdministratorHome_Impl (void); +extern "C" ::PortableServer::Servant create_AdministratorHome_Servant + (::Components::HomeExecutorBase_ptr p, + ::CIAO::Session_Container *c, + const char* + ); +struct HomeAttributes +{ + char const * component_instance_name_; + /// Specify the entrypoint to component executor DLL. + char const * executor_entrypt_; + ::CIAO::HomeFactory executor_fptr_; + /// Specify the entrypoint to component servant DLL. + char const * servant_entrypt_; + ::CIAO::ServantFactory servant_fptr_; +}; +/// Homes +HomeAttributes homes_table[]= +{ + {"Messenger_Instance", "create_MessengerHome_Impl", create_MessengerHome_Impl, "create_MessengerHome_Servant", create_MessengerHome_Servant}, + {"First_Receiver_Instance", "create_ReceiverHome_Impl", create_ReceiverHome_Impl, "create_ReceiverHome_Servant", create_ReceiverHome_Servant}, + {"Second_Receiver_Instance", "create_ReceiverHome_Impl", create_ReceiverHome_Impl, "create_ReceiverHome_Servant", create_ReceiverHome_Servant}, + {"Administrator_Instance", "create_AdministratorHome_Impl", create_AdministratorHome_Impl, "create_AdministratorHome_Servant", create_AdministratorHome_Servant} +}; + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl new file mode 100755 index 00000000000..1fea712778e --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/StaticDAnCE/run_test.pl @@ -0,0 +1,111 @@ +# $Id$ + +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +use Env (ACE_ROOT); +use lib "$ACE_ROOT/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$embase = "em.ior"; +$plbase = "pl.ior"; + +$emior= $tg->LocalFile ($embase); +$tg->DeleteFile ($embase); +$plior= $tg->LocalFile ($plbase); +$tg->DeleteFile ($plior); + +$CIAO_ROOT = $ENV{'CIAO_ROOT'}; +$DANCE_ROOT = $ENV{'DANCE_ROOT'}; + +$NA = $tg->CreateProcess ("$CIAO_ROOT/bin/ciao_componentserver"); +$NA_cmd = $NA->Executable (); + +$NA1 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:11000 -s $NA_cmd -n Administrator_Node"); + +$NA2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:22000 -s $NA_cmd -n First_Receiver_Node"); + +$NA3 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:33000 -s $NA_cmd -n Second_Receiver_Node"); + +$NA4 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:44000 -s $NA_cmd -n Messenger_Node"); + +# Each Node Manager lauches a Node Application process. +open(STDIN, "Spawn (); +if($Ret1 == -1) { + print STDERR "ERROR: Administrator returned <$Ret1>\n" +} + +$Ret2 = $NA2->Spawn (); +if($Ret2 == -1) { + print STDERR "ERROR: Receiver 1 returned <$Ret2>\n" +} + +$Ret3 = $NA3->Spawn (); +if($Ret3 == -1) { + print STDERR "ERROR: Receiver 2 returned <$Ret3>\n" +} + +$Ret4 = $NA4->Spawn (); +if($Ret4 == -1) { + print STDERR "ERROR: Messenger returned <$Ret4>\n" +} + +#Start an Execution Manager +$EM = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", "-e$emior --node-map ApplicationNodeMap.dat"); + +$Ret5 = $EM->Spawn (); +if($Ret5 == -1) { + print STDERR "ERROR: Execution Manager returned <$Ret5>\n" +} + +if ($tg->WaitForFileTimed ($embase, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find file <$emior>\n"; + $EM->Kill(); + $tg->DeleteFile ($embase); + exit 1; +} + +sleep(5); +#Start the plan launcher +$EX = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x Application-flattened_Unhomed.cdp -k file://$emior "); + +#Stop the plan launcher +$EX2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$emior -x Application-flattened_Unhomed.cdp"); + +$Ret6 = $EX->Spawn (); +if($Ret6 == -1) { + print STDERR "ERROR: plan launcher returned <$Ret6>\n" +} + +sleep(10); + +$Ret7 = $EX2->Spawn (); +if($Ret7 == -1) { + print STDERR "ERROR: plan launcher (shutdown) returned <$Ret7>\n" +} + +sleep(5); + +$NA1->Kill(); +$NA2->Kill(); +$NA3->Kill(); +$NA4->Kill(); +$EX->Kill(); +$EX2->Kill(); +$EM->Kill(); + +$tg->DeleteFile ($embase); +$tg->DeleteFile ($plior); + +exit 0; diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.ccd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.ccd new file mode 100644 index 00000000000..23ba49bb84c --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.ccd @@ -0,0 +1,47 @@ + + + + IDL:Administrator:1.0 + IDL:Administrator:1.0 + Administrator.idl + + + runnables + false + true + true + false + IDL:Runnable:1.0 + IDL:Runnable:1.0 + MultiplexReceptacle + + + + content + false + true + true + false + IDL:Publication:1.0 + IDL:Publication:1.0 + MultiplexReceptacle + + + + + comment + + + tk_string + + + This CCD describes the Administrator's interface + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cid b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cid new file mode 100644 index 00000000000..af9e9a4c677 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cid @@ -0,0 +1,34 @@ + + + + + + + Administrator_Stub + + + + Administrator_Svnt + + + + Administrator_Exec + + + + + ComponentIOR + + + tk_string + + + Administrator.ior + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cpd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cpd new file mode 100644 index 00000000000..972966462e6 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator.cpd @@ -0,0 +1,15 @@ + + + + + + + AdministratorImpl + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Exec.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Exec.iad new file mode 100644 index 00000000000..81b7a16da7a --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Exec.iad @@ -0,0 +1,40 @@ + + + + Administrator_exec + + ACE/TAO/CIAO + + + + Administrator_Stub + + + + entryPoint + + + tk_string + + + createAdministratorHome_Impl + + + + + + comment + + + tk_string + + + This IAD describes the Administrator's executor library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Stub.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Stub.iad new file mode 100644 index 00000000000..931fc371710 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Stub.iad @@ -0,0 +1,30 @@ + + + + Administrator_stub + + ACE/TAO/CIAO + + + + Messenger_Stub + + + + + + comment + + + tk_string + + + This IAD describes the Administrator's stub library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Svnt.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Svnt.iad new file mode 100644 index 00000000000..6774a107ef0 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Administrator_Svnt.iad @@ -0,0 +1,40 @@ + + + + Administrator_svnt + + ACE/TAO/CIAO + + + + Administrator_Stub + + + + entryPoint + + + tk_string + + + createAdministratorHome_Servant + + + + + + comment + + + tk_string + + + This IAD describes the Administrator's servant library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application-flattened.cdp b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application-flattened.cdp new file mode 100644 index 00000000000..d01ec12e2db --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application-flattened.cdp @@ -0,0 +1,255 @@ + + + + + + + + + + + MessengerImpl + + + Messenger_Stub + Messenger_Svnt + Messenger_Exec + + + + ReceiverImpl + + Receiver_Stub + Receiver_Svnt + Receiver_Exec + + + + AdministratorImpl + + Administrator_Stub + Administrator_Svnt + Administrator_Exec + + + + + + Messenger_Instance + Messenger_Node + + MessengerImpl + + + First_Receiver_Instance + First_Receiver_Node + + ReceiverImpl + + + Second_Receiver_Instance + Second_Receiver_Node + + ReceiverImpl + + + Administrator_Instance + Administrator_Node + + AdministratorImpl + + + + + + Messenger_to_First_Receiver_Publish + + message_publisher + EventPublisher + Messenger_Instance_ID + + + message_consumer + EventConsumer + First_Receiver_Instance_ID + + + + + Messenger_to_First_Receiver_History + + message_history + Facet + Messenger_Instance_ID + + + message_history + SimplexReceptacle + First_Receiver_Instance_ID + + + + + Messenger_to_Second_Receiver_Publish + + message_publisher + EventPublisher + Messenger_Instance_ID + + + message_consumer + EventConsumer + Second_Receiver_Instance_ID + + + + + Messenger_to_Second_Receiver_History + + message_history + Facet + Messenger_Instance_ID + + + message_history + SimplexReceptacle + Second_Receiver_Instance_ID + + + + + Messenger_to_Administrator_Control + + control + Facet + Messenger_Instance_ID + + + runnables + SimplexReceptacle + Administrator_Instance_ID + + + + + Messenger_to_Administrator_Content + + content + Facet + Messenger_Instance_ID + + + content + SimplexReceptacle + Administrator_Instance_ID + + + + + + + Messenger_Stub + + + Messenger_stub + + + Messenger_Svnt + + + Messenger_svnt + + entryPoint + + tk_string + create_MessengerHome_Servant + + + + + Messenger_Exec + + + Messenger_exec + + entryPoint + + tk_string + create_MessengerHome_Impl + + + + + + Receiver_Stub + + + Receiver_stub + + + Receiver_Svnt + + + Receiver_svnt + + entryPoint + + tk_string + create_ReceiverHome_Servant + + + + + Receiver_Exec + + + Receiver_exec + + entryPoint + + tk_string + create_ReceiverHome_Impl + + + + + + Administrator_Stub + + + Administrator_stub + + + Administrator_Svnt + + + Administrator_svnt + + entryPoint + + tk_string + create_AdministratorHome_Servant + + + + + Administrator_Exec + + + Administrator_exec + + entryPoint + + tk_string + create_AdministratorHome_Impl + + + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.cdp b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.cdp new file mode 100644 index 00000000000..9e774373c2f --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.cdp @@ -0,0 +1,25 @@ + + + + + Messenger_Instance + Messenger_Node + + + First_Receiver_Instance + First_Receiver_Node + + + Second_Receiver_Instance + Second_Receiver_Node + + + Administrator_Instance + Administrator_Node + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.pcd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.pcd new file mode 100644 index 00000000000..70635a4850b --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Application.pcd @@ -0,0 +1,23 @@ + + + + + + + + subject + + + tk_string + + + My Subject + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat new file mode 100644 index 00000000000..91fbbfd4d20 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/ApplicationNodeMap.dat @@ -0,0 +1,5 @@ +Administrator_Node corbaloc:iiop:localhost:11000/Administrator_Node.NodeManager +First_Receiver_Node corbaloc:iiop:localhost:22000/First_Receiver_Node.NodeManager +Second_Receiver_Node corbaloc:iiop:localhost:33000/Second_Receiver_Node.NodeManager +Messenger_Node corbaloc:iiop:localhost:44000/Messenger_Node.NodeManager + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Deployment.xsd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Deployment.xsd new file mode 100644 index 00000000000..ae9bc21965d --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Deployment.xsd @@ -0,0 +1,776 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Domain.cdd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Domain.cdd new file mode 100644 index 00000000000..54a8c1f5a82 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Domain.cdd @@ -0,0 +1,24 @@ + + + + + Messenger_Node + + + + First_Receiver_Node + + + + Second_Receiver_Node + + + + Administrator_Node + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Libraries.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Libraries.iad new file mode 100644 index 00000000000..d861613c157 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Libraries.iad @@ -0,0 +1,11 @@ + + + + $ACE_ROOT/lib/ACE + $ACE_ROOT/lib/TAO + $ACE_ROOT/lib/CIAO_Client + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.ccd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.ccd new file mode 100644 index 00000000000..cf79d7fb9f7 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.ccd @@ -0,0 +1,90 @@ + + + + IDL:Messenger:1.0 + Messenger.idl + + + subject + + tk_string + + + + + control + false + false + true + true + IDL:Runnable:1.0 + IDL:Runnable:1.0 + Facet + + + + content + false + false + true + true + IDL:Publication:1.0 + IDL:Publication:1.0 + Facet + + + + message_publisher + false + false + true + false + IDL:Message:1.0 + IDL:Message:1.0 + EventPublisher + + + + message_history + false + false + true + true + IDL:History:1.0 + IDL:History:1.0 + Facet + + + + + subject + + + tk_string + + + Default Subject + + + + + + + comment + + + tk_string + + + This CCD describes the Messenger's interface + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cid b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cid new file mode 100644 index 00000000000..c4e934f1ee2 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cid @@ -0,0 +1,37 @@ + + + + + + + Messenger_Stub + + + + Messenger_Svnt + + + + Messenger_Exec + + + + + + ComponentIOR + + + tk_string + + + Messenger.ior + + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cpd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cpd new file mode 100644 index 00000000000..ee624b9bce5 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger.cpd @@ -0,0 +1,15 @@ + + + + + + + MessengerImpl + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.ccd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.ccd new file mode 100644 index 00000000000..c048d99133d --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.ccd @@ -0,0 +1,31 @@ + + + + + + subject + + tk_string + + + + + + subject + + + tk_string + + + Default Subject + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cid b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cid new file mode 100644 index 00000000000..bd0bf4e56ce --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cid @@ -0,0 +1,110 @@ + + + + + + + Messenger_Instance + + + + First_Receiver_Instance + + + + Second_Receiver_Instance + + + + Administrator_Instance + + + + + Messenger_to_First_Receiver_Publish + + message_publisher + + + + message_consumer + + + + + Messenger_to_First_Receiver_History + + message_history + + + + message_history + + + + + + Messenger_to_Second_Receiver_Publisher + + message_publisher + + + + message_consumer + + + + + Messenger_to_Second_Receiver_History + + message_history + + + + message_history + + + + + + Messenger_to_Administrator_Control + + control + + + + runnables + + + + + Messenger_to_Administrator_Content + + content + + + + content + + + + + + + Subject Mapping + subject + + subject + + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cpd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cpd new file mode 100644 index 00000000000..a719ad571c9 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/MessengerAssembly.cpd @@ -0,0 +1,13 @@ + + + + + + Messenger Application + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Exec.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Exec.iad new file mode 100644 index 00000000000..0b8cef2092c --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Exec.iad @@ -0,0 +1,40 @@ + + + + Messenger_exec + + ACE/TAO/CIAO + + + + Messenger_Stub + + + + entryPoint + + + tk_string + + + createMessengerHome_Impl + + + + + + comment + + + tk_string + + + This IAD describes the Messenger's executor library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Stub.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Stub.iad new file mode 100644 index 00000000000..50447209f50 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Stub.iad @@ -0,0 +1,25 @@ + + + + Messenger_stub + + ACE/TAO/CIAO + + + + + comment + + + tk_string + + + This IAD describes the Messenger's stub library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Svnt.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Svnt.iad new file mode 100644 index 00000000000..29b83d63e53 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Messenger_Svnt.iad @@ -0,0 +1,40 @@ + + + + Messenger_svnt + + ACE/TAO/CIAO + + + + Messenger_Stub + + + + entryPoint + + + tk_string + + + createMessengerHome_Servant + + + + + + comment + + + tk_string + + + This IAD describes the Messenger's servant library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/README_15a b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/README_15a new file mode 100644 index 00000000000..ac466837dc4 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/README_15a @@ -0,0 +1,5 @@ +Deployment has changed in CIAO 0.5a (part of TAO 1.5a), now we use the plan +launcher, which reads a single XML file called a flattened deployment plan. +In our example, that file is Application-flattened.cdp. All the other XML +files in this directory are here for reference and to correspond to the 1.4a +TAO Developer's Guide, but they are not actually used. diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.ccd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.ccd new file mode 100644 index 00000000000..3094ae368dc --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.ccd @@ -0,0 +1,48 @@ + + + + IDL:Receiver:1.0 + IDL:Receiver:1.0 + Receiver.idl + + + message_consumer + false + false + false + true + IDL:Message:1.0 + IDL:Message:1.0 + EventConsumer + + + + message_history + false + true + true + false + IDL:History:1.0 + IDL:History:1.0 + SimplexReceptacle + + + + + comment + + + tk_string + + + This CCD describes the Receiver's interface + + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cid b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cid new file mode 100644 index 00000000000..c5c85d648da --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cid @@ -0,0 +1,34 @@ + + + + + + + Receiver_Stub + + + + Receiver_Svnt + + + + Receiver_Exec + + + + + ComponentIOR + + + tk_string + + + Receiver.ior + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cpd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cpd new file mode 100644 index 00000000000..8b8ff890fa2 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver.cpd @@ -0,0 +1,11 @@ + + + + + + + ReceiverImpl + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Exec.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Exec.iad new file mode 100644 index 00000000000..adcee103c94 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Exec.iad @@ -0,0 +1,40 @@ + + + + Receiver_exec + + ACE/TAO/CIAO + + + + Receiver_Stub + + + + entryPoint + + + tk_string + + + createReceiverHome_Impl + + + + + + comment + + + tk_string + + + This IAD describes the Receiver's executor library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Stub.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Stub.iad new file mode 100644 index 00000000000..63d7e37cc8e --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Stub.iad @@ -0,0 +1,29 @@ + + + + Receiver_stub + + ACE/TAO/CIAO + + + + Messenger_Stub + + + + + comment + + + tk_string + + + This IAD describes the Receiver's stub library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Svnt.iad b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Svnt.iad new file mode 100644 index 00000000000..8e3bf58d965 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/Receiver_Svnt.iad @@ -0,0 +1,40 @@ + + + + Receiver_svnt + + ACE/TAO/CIAO + + + + Receiver_Stub + + + + entryPoint + + + tk_string + + + createReceiverHome_Servant + + + + + + comment + + + tk_string + + + This IAD describes the Receiver's servant library + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/XMI.xsd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/XMI.xsd new file mode 100644 index 00000000000..f4adac91934 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/XMI.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/admin.dat b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/admin.dat new file mode 100644 index 00000000000..f5815bb1f60 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/admin.dat @@ -0,0 +1,7 @@ +1 +3 +1 +4 +Changing the publication text! +2 +5 diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/package.tpd b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/package.tpd new file mode 100644 index 00000000000..f481b6bd789 --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/package.tpd @@ -0,0 +1,8 @@ + + + + diff --git a/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/run_test.pl b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/run_test.pl new file mode 100755 index 00000000000..1fea712778e --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/Messenger/descriptors/run_test.pl @@ -0,0 +1,111 @@ +# $Id$ + +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +use Env (ACE_ROOT); +use lib "$ACE_ROOT/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$embase = "em.ior"; +$plbase = "pl.ior"; + +$emior= $tg->LocalFile ($embase); +$tg->DeleteFile ($embase); +$plior= $tg->LocalFile ($plbase); +$tg->DeleteFile ($plior); + +$CIAO_ROOT = $ENV{'CIAO_ROOT'}; +$DANCE_ROOT = $ENV{'DANCE_ROOT'}; + +$NA = $tg->CreateProcess ("$CIAO_ROOT/bin/ciao_componentserver"); +$NA_cmd = $NA->Executable (); + +$NA1 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:11000 -s $NA_cmd -n Administrator_Node"); + +$NA2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:22000 -s $NA_cmd -n First_Receiver_Node"); + +$NA3 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:33000 -s $NA_cmd -n Second_Receiver_Node"); + +$NA4 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:44000 -s $NA_cmd -n Messenger_Node"); + +# Each Node Manager lauches a Node Application process. +open(STDIN, "Spawn (); +if($Ret1 == -1) { + print STDERR "ERROR: Administrator returned <$Ret1>\n" +} + +$Ret2 = $NA2->Spawn (); +if($Ret2 == -1) { + print STDERR "ERROR: Receiver 1 returned <$Ret2>\n" +} + +$Ret3 = $NA3->Spawn (); +if($Ret3 == -1) { + print STDERR "ERROR: Receiver 2 returned <$Ret3>\n" +} + +$Ret4 = $NA4->Spawn (); +if($Ret4 == -1) { + print STDERR "ERROR: Messenger returned <$Ret4>\n" +} + +#Start an Execution Manager +$EM = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", "-e$emior --node-map ApplicationNodeMap.dat"); + +$Ret5 = $EM->Spawn (); +if($Ret5 == -1) { + print STDERR "ERROR: Execution Manager returned <$Ret5>\n" +} + +if ($tg->WaitForFileTimed ($embase, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find file <$emior>\n"; + $EM->Kill(); + $tg->DeleteFile ($embase); + exit 1; +} + +sleep(5); +#Start the plan launcher +$EX = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x Application-flattened_Unhomed.cdp -k file://$emior "); + +#Stop the plan launcher +$EX2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$emior -x Application-flattened_Unhomed.cdp"); + +$Ret6 = $EX->Spawn (); +if($Ret6 == -1) { + print STDERR "ERROR: plan launcher returned <$Ret6>\n" +} + +sleep(10); + +$Ret7 = $EX2->Spawn (); +if($Ret7 == -1) { + print STDERR "ERROR: plan launcher (shutdown) returned <$Ret7>\n" +} + +sleep(5); + +$NA1->Kill(); +$NA2->Kill(); +$NA3->Kill(); +$NA4->Kill(); +$EX->Kill(); +$EX2->Kill(); +$EM->Kill(); + +$tg->DeleteFile ($embase); +$tg->DeleteFile ($plior); + +exit 0; diff --git a/modules/CIAO/examples/DevGuideExamples/readme.txt b/modules/CIAO/examples/DevGuideExamples/readme.txt new file mode 100644 index 00000000000..f6efa4d084f --- /dev/null +++ b/modules/CIAO/examples/DevGuideExamples/readme.txt @@ -0,0 +1,12 @@ +"These examples were developed by and are included in this +distribution with the permission of Object Computing, Inc. (OCI) +for the purpose of illustrating the usage of certain features of +The ACE ORB (TAO) as described in OCI's TAO Developer's Guide. +They are provided as is with no warranty, expressed or implied. +Though the examples are believed to illustrate correct usage of +TAO, OCI does not actively maintain them in this distribution and +does not guarantee their accuracy or their suitability for any +particular use. OCI does provide additional distributions of TAO +and provides commercial support for TAO. Visit +http://www.theaceorb.com or contact sales@ociweb.com for more +information on OCI's business model with respect to TAO." \ No newline at end of file diff --git a/modules/CIAO/examples/Display/Display_Base/Display_Base.idl b/modules/CIAO/examples/Display/Display_Base/Display_Base.idl new file mode 100644 index 00000000000..337d4101c2b --- /dev/null +++ b/modules/CIAO/examples/Display/Display_Base/Display_Base.idl @@ -0,0 +1,46 @@ +// $Id$ + +/** + * @file Display_Base.idl + * + * Definition of events, and common interfaces used in HUDisplay module. + * + * @author Nanbor Wang + */ + +#ifndef HUDISPLAY_IDL +#define HUDISPLAY_IDL + +#include + +module HUDisplay +{ + /** + * @brief interface opmode defines the "operation mode" interface. + */ + interface opmode + { + void start (); + void stop (); + boolean active (); + }; + + /** + * @brief a timed event that happens at some fix rate. + */ + eventtype tick + { + // We could put a timestamp here if desired. + }; + + /** + * @brief interface position allows querying of a coordination. + */ + interface position + { + long posx (); + long posy (); + }; +}; + +#endif /* HUDISPLAY_IDL */ diff --git a/modules/CIAO/examples/Display/Display_Base/Display_Base.mpc b/modules/CIAO/examples/Display/Display_Base/Display_Base.mpc new file mode 100644 index 00000000000..c25a86c9ce1 --- /dev/null +++ b/modules/CIAO/examples/Display/Display_Base/Display_Base.mpc @@ -0,0 +1,79 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Display_Base" + +project(Display_Base_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=DISPLAY_BASE_STUB_Export \ + -Wb,stub_export_include=Display_Base_stub_export.h \ + -Wb,skel_export_macro=DISPLAY_BASE_SKEL_Export \ + -Wb,skel_export_include=Display_Base_skel_export.h + + IDL_Files { + Display_Base.idl + } +} + +project(Display_Base_lem_gen) : ciaoidldefaults { + after += Display_Base_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=DISPLAY_BASE_STUB_Export \ + -Wb,stub_export_include=Display_Base_stub_export.h \ + + IDL_Files { + Display_BaseE.idl + } +} + +project(Display_Base_stub) : ccm_stub { + after += Display_Base_lem_gen + libout = ../lib + libpaths += ../lib + + sharedname = Display_Base_stub + dynamicflags = DISPLAY_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Display_BaseC.cpp + Display_BaseEC.cpp + } + + Header_Files { + Display_BaseC.h + Display_Base_stub_export.h + } + + Inline_Files { + Display_BaseC.inl + } +} + +project(Display_Base_skel) : ciao_executor { + after += Display_Base_stub + sharedname = Display_Base_skel + libs += Display_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = DISPLAY_BASE_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Display_BaseS.cpp + } + + Header_Files { + Display_BaseS.h + Display_Base_skel_export.h + } + + Inline_Files { + Display_BaseS.inl + } +} + + diff --git a/modules/CIAO/examples/Display/GPS/GPS.idl b/modules/CIAO/examples/Display/GPS/GPS.idl new file mode 100644 index 00000000000..90896c6130d --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPS.idl @@ -0,0 +1,30 @@ +// $Id$ + +/** + * @file GPS.idl + * + * Definition of the GPS component. + * + * @author Nanbor Wang + */ +#ifndef GPS_IDL +#define GPS_IDL + +#include "../Display_Base/Display_Base.idl" +#include "../Display_Base/Display_BaseE.idl" + +module HUDisplay +{ + component GPS + { + provides position MyLocation; + publishes tick Ready; + consumes tick Refresh; + }; + + home GPSHome manages GPS + { + }; +}; + +#endif /* GPS_IDL */ diff --git a/modules/CIAO/examples/Display/GPS/GPS.mpc b/modules/CIAO/examples/Display/GPS/GPS.mpc new file mode 100644 index 00000000000..9787c0792fe --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPS.mpc @@ -0,0 +1,117 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Display_Base -u Display GPS" + +project(Display_GPS_idl_gen) : componentidldefaults { + after += Display_Base_idl_gen + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=GPS_STUB_Export \ + -Wb,stub_export_include=GPS_stub_export.h \ + -Wb,skel_export_macro=GPS_SVNT_Export \ + -Wb,skel_export_include=GPS_svnt_export.h \ + -Wb,exec_export_macro=GPS_EXEC_Export \ + -Wb,exec_export_include=GPS_exec_export.h \ + + IDL_Files { + GPS.idl + } +} + +project(Display_GPS_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Display_GPS_idl_gen + idlflags += -Wb,export_macro=GPS_EXEC_Export \ + -Wb,export_include=GPS_exec_export.h \ + -SS + + IDL_Files { + GPSE.idl + } +} + +project(Display_GPS_stub) : ccm_stub { + after += Display_GPS_idl_gen Display_Base_stub + libs += Display_Base_stub + libout = ../lib + libpaths += ../lib + + sharedname = GPS_stub + dynamicflags = GPS_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + GPSC.cpp + } + + Header_Files { + GPSC.h + GPS_stub_export.h + } + + Inline_Files { + GPSC.inl + } +} + +project(Display_GPS_exec) : ciao_executor { + after += Display_GPS_lem_gen Display_GPS_stub Display_Base_stub + sharedname = GPS_exec + libs += GPS_stub Display_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = GPS_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + GPSEC.cpp + GPS_exec.cpp + } + + Header_Files { + GPSEC.h + GPS_exec.h + GPS_exec_export.h + } + + Inline_Files { + GPSEC.inl + } +} + +project(Display_GPS_svnt) : ciao_servant { + after += Display_Base_skel Display_GPS_exec Display_Base_stub + sharedname = GPS_svnt + libs += GPS_exec \ + GPS_stub \ + Display_Base_skel \ + Display_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = GPS_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + GPSS.cpp + GPS_svnt.cpp + } + + Header_Files { + GPSS.h + GPS_svnt.h + GPS_svnt_export.h + } + + Inline_Files { + GPSS.inl + } +} + + diff --git a/modules/CIAO/examples/Display/GPS/GPSEI.idl b/modules/CIAO/examples/Display/GPS/GPSEI.idl new file mode 100644 index 00000000000..d7604931f58 --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPSEI.idl @@ -0,0 +1,33 @@ +// $Id$ + +/** + * @file GPSEI.idl + * + * Definition of the GPS component implementation. + * + * @author Nanbor Wang + */ + +#ifndef GPSEI_IDL +#define GPSEI_IDL + +#include "GPSE.idl" + +module HUDisplay +{ + /** + * @interface GPS_Exec + * + * The actually GPS executor inherits from both CCM_GPS and + * CCM_position interfaces as a monolithic implementation. + */ + local interface GPS_Exec : + CCM_GPS, + CCM_position, + Components::SessionComponent + { + }; + +}; + +#endif /* GPSEI_IDL */ diff --git a/modules/CIAO/examples/Display/GPS/GPS_exec.cpp b/modules/CIAO/examples/Display/GPS/GPS_exec.cpp new file mode 100644 index 00000000000..af37d2709d6 --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPS_exec.cpp @@ -0,0 +1,137 @@ + +// $Id$ + +#include "GPS_exec.h" + +#include "ace/OS_NS_time.h" + +#define DISPLACEMENT 256 + +// Operations from HUDisplay::position +CORBA::Long +MyImpl::Position_Impl::posx () +{ + return component_.posx(); +} + +CORBA::Long +MyImpl::Position_Impl::posy () +{ + return component_.posy(); +} + + +/// Default constructor. +MyImpl::GPS_exec_i::GPS_exec_i () +{ + ACE_OS::srand ((u_int) ACE_OS::time ()); + this->positionx_ = ACE_OS::rand (); + this->positiony_ = ACE_OS::rand (); +} + +/// Default destructor. +MyImpl::GPS_exec_i::~GPS_exec_i () +{ +} + +// Operations from HUDisplay::GPS + HUDisplay::CCM_position_ptr + MyImpl::GPS_exec_i::get_MyLocation () + { +// ACE_DEBUG ((LM_DEBUG, +// "GPS_exec::get_MyLocation called\n")); + return (new Position_Impl (*this)); + } + +void +MyImpl::GPS_exec_i::push_Refresh (HUDisplay::tick *) +{ +// ACE_DEBUG ((LM_DEBUG, +// ACE_TEXT ("GPS: Received Refresh Event\n"))); + + // Refresh position + this->positionx_ += ACE_OS::rand () % DISPLACEMENT - (DISPLACEMENT/2); + this->positiony_ += ACE_OS::rand () % DISPLACEMENT - (DISPLACEMENT/2); + + // Nitify others + HUDisplay::tick_var event = new OBV_HUDisplay::tick; + + this->context_->push_Ready (event); +} + +CORBA::Long +MyImpl::GPS_exec_i::posx () +{ + return this->positionx_; +} + +CORBA::Long +MyImpl::GPS_exec_i::posy () +{ + return this->positiony_; +} + + +// Operations from Components::SessionComponent +void +MyImpl::GPS_exec_i::set_session_context (Components::SessionContext_ptr ctx) +{ + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::set_session_context\n")); + + this->context_ = + HUDisplay::CCM_GPS_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::GPS_exec_i::configuration_complete () +{ +} + +void +MyImpl::GPS_exec_i::ccm_activate () +{ + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::ccm_activate\n")); +} + +void +MyImpl::GPS_exec_i::ccm_passivate () +{ + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::ccm_passivate\n")); +} + +void +MyImpl::GPS_exec_i::ccm_remove () +{ + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::ccm_remove\n")); +} + +/// Default ctor. +MyImpl::GPSHome_exec_i::GPSHome_exec_i () +{ +} + +/// Default dtor. +MyImpl::GPSHome_exec_i::~GPSHome_exec_i () +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::GPSHome_exec_i::create () +{ + return new MyImpl::GPS_exec_i; +} + + +extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr +createGPSHome_Impl (void) +{ + return new MyImpl::GPSHome_exec_i(); +} diff --git a/modules/CIAO/examples/Display/GPS/GPS_exec.h b/modules/CIAO/examples/Display/GPS/GPS_exec.h new file mode 100644 index 00000000000..f0ca86823b8 --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPS_exec.h @@ -0,0 +1,111 @@ +/** + * @file GPS_exec.h + * $Id$ + * Header file for the GPS component implementation. + * + */ + +#ifndef GPS_EXEC_H +#define GPS_EXEC_H + +#include "GPS_exec_export.h" +#include "GPSEC.h" +#include "ace/OS_NS_time.h" +#include "tao/LocalObject.h" + +#define DISPLACEMENT 256 + +namespace MyImpl +{ + /** + * @class GPS_exec_i + * + * GPS executor implementation class. + */ + class GPS_EXEC_Export GPS_exec_i : + public virtual ::CIAO_HUDisplay_GPS_Impl::GPS_Exec, + public virtual ::CORBA::LocalObject + { + + public: + /// Default constructor. + GPS_exec_i (); + + /// Default destructor. + ~GPS_exec_i (); + + // Operations from HUDisplay::GPS + HUDisplay::CCM_position_ptr get_MyLocation (); + + void push_Refresh (HUDisplay::tick *); + + // Operations from HUDisplay::position + CORBA::Long posx (); + + CORBA::Long posy (); + + // Operations from Components::SessionComponent + void set_session_context (Components::SessionContext_ptr ctx); + + void configuration_complete (); + + void ccm_activate (); + + void ccm_passivate (); + + void ccm_remove (); + + protected: + // Component specific context + HUDisplay::CCM_GPS_Context_var context_; + + private: + CORBA::Long positionx_, positiony_; + }; + + + /** + * @class GPSHome_exec_i + * + * GPS home executor implementation class. + */ + class GPS_EXEC_Export GPSHome_exec_i : + public virtual HUDisplay::CCM_GPSHome, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + GPSHome_exec_i (); + + /// Default dtor. + ~GPSHome_exec_i (); + + // Implicit home operations + virtual ::Components::EnterpriseComponent_ptr create (); + }; + + + class Position_Impl : public virtual HUDisplay::CCM_position, + public virtual ::CORBA::LocalObject + { + public: + Position_Impl (GPS_exec_i& component) + : component_ (component) + { + } + + // Operations from HUDisplay::position + CORBA::Long posx (); + + CORBA::Long posy (); + + private: + GPS_exec_i& component_; + }; + +} + +extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr +createGPSHome_Impl (void); + +#endif /* GPS_EXEC_H */ diff --git a/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp new file mode 100644 index 00000000000..9a989e12bdd --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp @@ -0,0 +1,131 @@ +// $Id$ + +#include "GPS_tracing_exec.h" + +#include "ace/OS_NS_time.h" + +#define DISPLACEMENT 256 + +/// Default constructor. +MyImpl::GPS_tracing_exec_i::GPS_tracing_exec_i () : dx_(1), dy_(1) +{ + ACE_OS::srand ((u_int) ACE_OS::time ()); + + this->positionx_ = 20; + this->positiony_ = 25; +} + +/// Default destructor. +MyImpl::GPS_tracing_exec_i::~GPS_tracing_exec_i () +{ +} + +// Operations from HUDisplay::GPS + +HUDisplay::CCM_position_ptr +MyImpl::GPS_tracing_exec_i::get_MyLocation () +{ + return HUDisplay::CCM_position::_duplicate (this); +} + +void +MyImpl::GPS_tracing_exec_i::push_Refresh (HUDisplay::tick *) +{ + // Refresh position + if(this->positionx_ > 500) this->dx_ = -1; + if(this->positionx_ < 10) this->dx_ = 1; + if(this->positiony_ > 300) this->dy_ = -1; + if(this->positiony_ < 10) this->dy_ = 1; + + this->positionx_ += this->dx_; + this->positiony_ += this->dy_; + + // Nitify others + HUDisplay::tick_var event = new OBV_HUDisplay::tick; + + this->context_->push_Ready (event); +} + +// Operations from HUDisplay::position + +CORBA::Long +MyImpl::GPS_tracing_exec_i::posx () +{ + return this->positionx_; +} + +CORBA::Long +MyImpl::GPS_tracing_exec_i::posy () +{ + return this->positiony_; +} + +// Operations from Components::SessionComponent +void +MyImpl::GPS_tracing_exec_i::set_session_context ( + Components::SessionContext_ptr ctx) +{ + if (CIAO::debug_level () > 0) + ACE_DEBUG ((LM_DEBUG, + "MyImpl::GPS_tracing_exec_i::set_session_context\n")); + + this->context_ = + HUDisplay::CCM_GPS_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::GPS_tracing_exec_i::configuraton_complete () +{ +} + +void +MyImpl::GPS_tracing_exec_i::ccm_activate () +{ + if (CIAO::debug_level () > 0) + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_tracing_exec_i::ccm_activate\n")); +} + +void +MyImpl::GPS_tracing_exec_i::ccm_passivate () +{ + if (CIAO::debug_level () > 0) + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_tracing_exec_i::ccm_passivate\n")); +} + +void +MyImpl::GPS_tracing_exec_i::ccm_remove () +{ + if (CIAO::debug_level () > 0) + ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_tracing_exec_i::ccm_remove\n")); +} + +/// Default ctor. +MyImpl::GPSHome_tracing_exec_i::GPSHome_tracing_exec_i () +{ +} + +/// Default dtor. +MyImpl::GPSHome_tracing_exec_i::~GPSHome_tracing_exec_i () +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::GPSHome_tracing_exec_i::create () +{ + return new MyImpl::GPS_tracing_exec_i; +} + + +extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr +createGPSHome_Tracing_Impl (void) +{ + return new MyImpl::GPSHome_tracing_exec_i; +} diff --git a/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h new file mode 100644 index 00000000000..a03432cc42c --- /dev/null +++ b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h @@ -0,0 +1,112 @@ +// $Id$ + +/** + * @file GPS_tracing_exec.h + * + * Header file for the actual GPS and GPSHome component + * implementations. + * + * @author Nanbor Wang + */ + +#ifndef GPS_TRACING_EXEC_H +#define GPS_TRACING_EXEC_H + +#include "GPSEIC.h" +#include "tao/LocalObject.h" + +namespace MyImpl +{ + /** + * @class GPS_tracing_exec_i + * + * RateGen executor implementation class. + */ + class GPS_EXEC_Export GPS_tracing_exec_i : + public virtual HUDisplay::GPS_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default constructor. + GPS_tracing_exec_i (); + + /// Default destructor. + ~GPS_tracing_exec_i (); + + // Operations from HUDisplay::GPS + + virtual HUDisplay::CCM_position_ptr + get_MyLocation (); + + virtual void + push_Refresh (HUDisplay::tick *ev); + + // Operations from HUDisplay::position + + virtual CORBA::Long + posx (); + + virtual CORBA::Long + posy (); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (); + + virtual void + ccm_activate (); + + virtual void + ccm_passivate (); + + virtual void + ccm_remove (); + protected: + /// Current GPS reading. + CORBA::Long positionx_; + CORBA::Long positiony_; + + /// Delta amounts to emulate the position shift of each reading. + int dx_; + int dy_; + + /// Copmponent specific context + HUDisplay::CCM_GPS_Context_var context_; + }; + + /** + * @class GPSHome_tracing_exec_i + * + * GPS home executor implementation class. + */ + class GPS_EXEC_Export GPSHome_tracing_exec_i : + public virtual HUDisplay::CCM_GPSHome, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + GPSHome_tracing_exec_i (); + + /// Default dtor. + ~GPSHome_tracing_exec_i (); + + // Explicit home operations. + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + +} + +// Executor DLL entry point. CIAO's deployment and assembly framework +// invokes this function on the resulting DLL to get the home executor. +extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr +createGPSHome_Tracing_Impl (void); + +#endif /* GPS_TRACING_EXEC_H */ diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl new file mode 100644 index 00000000000..a786f7f9d06 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file NavDisplay.idl + * + * Definition of the navigation display component. + * + * @author Nanbor Wang + */ + +#ifndef NAVDISPLAY_IDL +#define NAVDISPLAY_IDL + +#include "../Display_Base/Display_Base.idl" + +module HUDisplay +{ + component NavDisplay + { + consumes tick Refresh; + uses position GPSLocation; + }; + + home NavDisplayHome manages NavDisplay + { + }; +}; + +#endif /* NAVDISPLAY_IDL */ diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc new file mode 100644 index 00000000000..dc22ce5db9f --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc @@ -0,0 +1,115 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Display_Base -u Display NavDisplay" + +project(Display_NavDisplay_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=NAVDISPLAY_STUB_Export \ + -Wb,stub_export_include=NavDisplay_stub_export.h \ + -Wb,skel_export_macro=NAVDISPLAY_SVNT_Export \ + -Wb,skel_export_include=NavDisplay_svnt_export.h \ + -Wb,exec_export_macro=NAVDISPLAY_EXEC_Export \ + -Wb,exec_export_include=NavDisplay_exec_export.h \ + + IDL_Files { + NavDisplay.idl + } +} + +project(Display_NavDisplay_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Display_NavDisplay_idl_gen + idlflags += -Wb,export_macro=NAVDISPLAY_EXEC_Export \ + -Wb,export_include=NavDisplay_exec_export.h \ + -SS + + IDL_Files { + NavDisplayE.idl + } +} + +project(Display_NavDisplay_stub) : ccm_stub { + after += Display_NavDisplay_idl_gen Display_Base_stub + libs += Display_Base_stub + libout = ../lib + libpaths += ../lib + + sharedname = NavDisplay_stub + dynamicflags = NAVDISPLAY_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NavDisplayC.cpp + } + + Header_Files { + NavDisplayC.h + NavDisplay_stub_export.h + } + + Inline_Files { + NavDisplayC.inl + } +} + +project(Display_NavDisplay_exec) : ciao_executor { + after += Display_NavDisplay_lem_gen Display_NavDisplay_stub + sharedname = NavDisplay_exec + libs += NavDisplay_stub Display_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = NAVDISPLAY_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NavDisplayEC.cpp + NavDisplay_exec.cpp + } + + Header_Files { + NavDisplayEC.h + NavDisplay_exec.h + NavDisplay_exec_export.h + } + + Inline_Files { + NavDisplayEC.inl + } +} + +project(Display_NavDisplay_svnt) : ciao_servant { + after += Display_Base_skel Display_NavDisplay_exec + sharedname = NavDisplay_svnt + libs += NavDisplay_exec \ + NavDisplay_stub \ + Display_Base_skel \ + Display_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = NAVDISPLAY_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + NavDisplayS.cpp + NavDisplay_svnt.cpp + } + + Header_Files { + NavDisplayS.h + NavDisplay_svnt.h + NavDisplay_svnt_export.h + } + + Inline_Files { + NavDisplayS.inl + } +} + + diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp new file mode 100644 index 00000000000..40db3c816cc --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp @@ -0,0 +1,105 @@ +// $Id$ + +#include "NavDisplay_exec.h" + +/// Default constructor. +MyImpl::NavDisplay_exec_impl::NavDisplay_exec_impl (void) +{ +} + +/// Default destructor. +MyImpl::NavDisplay_exec_impl::~NavDisplay_exec_impl (void) +{ +} + +// Operations from HUDisplay::NavDisplay + +void +MyImpl::NavDisplay_exec_impl::push_Refresh (HUDisplay::tick *ev) +{ + ACE_UNUSED_ARG (ev); + +// ACE_DEBUG ((LM_DEBUG, +// ACE_TEXT ("NAVDISPLAY: Received Refresh Event\n"))); + + // Refresh position + HUDisplay::position_var loc = + this->context_->get_connection_GPSLocation (); + + if (CORBA::is_nil (loc.in ())) + { + throw CORBA::BAD_INV_ORDER (); + } + + CORBA::Long x = loc->posx () % 500; + + CORBA::Long y = loc->posy () % 300; + + ACE_DEBUG ((LM_DEBUG, + "NAVDISPLAY: Current Location is: (%d, %d)\n", + x, + y)); +} + +// Operations from Components::SessionComponent +void +MyImpl::NavDisplay_exec_impl::set_session_context ( + Components::SessionContext_ptr ctx) +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::NavDisplay_exec_impl::set_session_context\n")); + this->context_ = + HUDisplay::CCM_NavDisplay_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::NavDisplay_exec_impl::configuration_complete (void) +{ +} + +void +MyImpl::NavDisplay_exec_impl::ccm_activate (void) +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::NavDisplay_exec_impl::ccm_activate\n")); +} + +void +MyImpl::NavDisplay_exec_impl::ccm_remove (void) +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::NavDisplay_exec_impl::ccm_remove\n")); +} + +/// Default ctor. +MyImpl::NavDisplayHome_exec_impl::NavDisplayHome_exec_impl (void) +{ +} + +/// Default dtor. +MyImpl::NavDisplayHome_exec_impl::~NavDisplayHome_exec_impl (void) +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::NavDisplayHome_exec_impl::create (void) +{ + return new MyImpl::NavDisplay_exec_impl; +} + + +extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr +createNavDisplayHome_Impl (void) +{ + return new MyImpl::NavDisplayHome_exec_impl; +} diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h new file mode 100644 index 00000000000..8c32f5dd0e4 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h @@ -0,0 +1,92 @@ +// $Id$ + +/** + * @file NavDisplay_exec.h + * + * Header file for the actual NavDisplay and NavDisplayHome component + * implementations. + * + * @author Nanbor Wang + */ + +#ifndef NAVDISPLAY_EXEC_H +#define NAVDISPLAY_EXEC_H + +#include "NavDisplayEC.h" +#include "NavDisplay_exec_export.h" +#include "tao/LocalObject.h" + +namespace MyImpl +{ + /** + * @class NavDisplay_exec_impl + * + * RateGen executor implementation class. + */ + class NAVDISPLAY_EXEC_Export NavDisplay_exec_impl + : public virtual ::CIAO_HUDisplay_NavDisplay_Impl::NavDisplay_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default constructor. + NavDisplay_exec_impl (void); + + /// Default destructor. + ~NavDisplay_exec_impl (void); + + // Operations from HUDisplay::NavDisplay + + virtual void + push_Refresh (HUDisplay::tick *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (void); + + virtual void + ccm_activate (void); + + virtual void + ccm_passivate (void) {}; + + virtual void + ccm_remove (void); + protected: + /// Copmponent specific context + HUDisplay::CCM_NavDisplay_Context_var context_; + }; + + /** + * @class NavDisplayHome_exec_impl + * + * NavDisplay home executor implementation class. + */ + class NAVDISPLAY_EXEC_Export NavDisplayHome_exec_impl + : public virtual HUDisplay::CCM_NavDisplayHome, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + NavDisplayHome_exec_impl (void); + + /// Default dtor. + ~NavDisplayHome_exec_impl (void); + + // Explicit home operations. + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (void); + }; + +} + +extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr +createNavDisplayHome_Impl (void); + +#endif /* NAVDISPLAY_EXEC_H */ diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp new file mode 100644 index 00000000000..52cce23d000 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp @@ -0,0 +1,28 @@ +// $Id$ + +#include "AddNavUnitCmd.h" +#include "RootPanel.h" +#include "NavUnit.h" + + +AddNavUnitCmd::AddNavUnitCmd() +{ +} + + +AddNavUnitCmd * +AddNavUnitCmd::create(RootPanel *form, NavUnit *unit) +{ + AddNavUnitCmd *cmd = new AddNavUnitCmd(); + cmd->form_ = form; + cmd->unit_ = unit; + return cmd; +} + + +int +AddNavUnitCmd::execute(void * /* context */) +{ + this->form_->addUnit (this->unit_); + return 0; +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h new file mode 100644 index 00000000000..6a3930196e7 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h @@ -0,0 +1,27 @@ +// $Id$ + +#ifndef __ADDNAVUNITCMD_H +#define __ADDNAVUNITCMD_H + +#include "Command.h" + +class RootPanel; +class NavUnit; + +class AddNavUnitCmd : public CommandBase +{ +public: + static AddNavUnitCmd *create(RootPanel *form, NavUnit *unit); + +public: + virtual int execute(void *context = 0); + +protected: + AddNavUnitCmd(); + + RootPanel *form_; + NavUnit *unit_; +}; + + +#endif // __ADDNAVUNITCMD_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h new file mode 100644 index 00000000000..2a259f4ec24 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h @@ -0,0 +1,20 @@ +// $Id$ + +#ifndef __COMMAND_H +#define __COMMAND_H + +#include + +class CommandBase +{ +public: + CommandBase() {timestamp_ = QTime::currentTime();} + virtual ~CommandBase() {} + +public: + virtual int execute(void *context = 0) = 0; + QTime timestamp_; +}; + + +#endif // __COMMAND_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp new file mode 100644 index 00000000000..dccae6acd3d --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp @@ -0,0 +1,168 @@ +// $Id$ + +#include "DetailView.h" +#include +#include +#include +#include +#include +#include +#include + +DetailView::DetailView(QWidget *parent, const char *name) +: QWidget(parent, name), current_unit(0) +{ + 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 = ACE_OS::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 = new 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); + + // FUZZ: disable check_for_lack_ACE_OS + connect(apply, SIGNAL(clicked()), this, SLOT(apply())); + // FUZZ: enable check_for_lack_ACE_OS + + QTabWidget *tabs = new QTabWidget(this); + + + child_list = new Q3Table(0, 6, tabs); + child_list->setSelectionMode(Q3Table::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 Q3Table(0, 6, tabs); + parent_list->setSelectionMode(Q3Table::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() +{ + delete movie; +} + + +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(loc.x_)); + y_edit->setValue(static_cast(loc.y_)); + z_edit->setValue(static_cast(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( Qt::NoBackground ); + }*/ +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h new file mode 100644 index 00000000000..2f0cf44d69a --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h @@ -0,0 +1,49 @@ +// $Id$ + +#ifndef __DETAILVIEW_H +#define __DETAILVIEW_H + + +#include "NavUnit.h" +#include +#include +#include + +class QLabel; +class QLineEdit; +class QSpinBox; + +class DetailView : public QWidget +{ + Q_OBJECT + +public: + DetailView(QWidget *parent, const char *name = 0); + virtual ~DetailView(); + +public slots: + void movieStatus(int); + void movieUpdate(const QRect&); + void currentNode(NavUnit *unit); + void updateLocation(const UnitLocation &loc); + void apply(); + +private: + QLineEdit *sem_id_val; + QLineEdit *descr_edit; + QSpinBox *x_edit; + QSpinBox *y_edit; + QSpinBox *z_edit; + Q3Table *child_list; + Q3Table *parent_list; + QLabel *movielabel; + QMovie *movie; + QLabel *separatorlabel; + QMovie separator; + + + NavUnit *current_unit; +}; + + +#endif // __DETAILVIEW_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp new file mode 100644 index 00000000000..f1dfac65400 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp @@ -0,0 +1,40 @@ +// $Id$ + +#include "MapView.h" +#include + +#include "worldmap1.xpm" + +MapView::MapView( + Q3Canvas& c, + QWidget* parent, + const char* name, + Qt::WindowFlags f) + : + Q3CanvasView(&c, parent, name, f), + bg_pixmap_(worldmap1) +{ + viewport()->setBackgroundMode(Qt::NoBackground); + enableClipper(TRUE); + if(!bg_pixmap_.isNull()) + { + resizeContents(bg_pixmap_.width(), bg_pixmap_.height()); + } + else + resizeContents(100, 100); + + canvas()->setBackgroundPixmap(bg_pixmap_); +} + +void +MapView::clear() +{ + /* + QCanvasItemList list = canvas()->allItems(); + for(QCanvasItemList::Iterator it = list.begin(); it != list.end(); ++it) + { + if(*it) + delete *it; + } + */ +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h new file mode 100644 index 00000000000..0e7ad045f8b --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h @@ -0,0 +1,23 @@ +// $Id$ + +#ifndef __MAPVIEW_H +#define __MAPVIEW_H + +#include +#include + +class MapView : public Q3CanvasView +{ + Q_OBJECT + +public: + MapView(Q3Canvas&, QWidget* parent=0, const char* name=0, Qt::WindowFlags f=0); + void clear(); + +protected: + QPixmap bg_pixmap_; +}; + + + +#endif // __MAPVIEW_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc new file mode 100644 index 00000000000..811bf3bc45e --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc @@ -0,0 +1,89 @@ +// $Id$ + +project(Display_NavDisplayGUI_exec_moc) : ace_qt4, qt4_qt3support { + custom_only = 1 + MOC_Files { + DetailView.h + MapView.h + NodeItem.h + RootPanel.h + } +} + +project(Display_NavDisplayGUI_exec) : ciao_executor, ace_qt4, qt4_qt3support { + after += Display_NavDisplay_lem_gen \ + Display_NavDisplay_stub \ + Display_NavDisplayGUI_exec_moc + sharedname = NavDisplayGUI_exec + libs += NavDisplay_stub Display_Base_stub + dynamicflags = NAVDISPLAY_EXEC_BUILD_DLL QT_DLL + includes += ../NavDisplay + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Source_Files { + AddNavUnitCmd.cpp + DetailView.cpp + MapView.cpp + NavUnit.cpp + NodeItem.cpp + QuitCmd.cpp + RootPanel.cpp + UpdatePositionCmd.cpp + Worker.cpp + ../NavDisplay/NavDisplayEC.cpp + NavDisplayGUI_exec.cpp + } + + Header_Files { + NavDisplayGUI_exec.h + NavDisplayGUI_exec_export.h + } + + MOC_Files { + } + + Source_Files { + DetailView_moc.cpp + MapView_moc.cpp + NodeItem_moc.cpp + RootPanel_moc.cpp + } +} + +project(Display_NavDisplayGUI_svnt) : ciao_servant, ace_qt4, qt4_qt3support { + after += Display_Base_skel Display_NavDisplayGUI_exec + sharedname = NavDisplayGUI_svnt + includes += ../NavDisplay + libs += NavDisplayGUI_exec \ + NavDisplay_stub \ + Display_Base_skel \ + Display_Base_stub + dynamicflags = NAVDISPLAY_SVNT_BUILD_DLL + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + MOC_Files { + } + + Source_Files { + ../NavDisplay/NavDisplayS.cpp + ../NavDisplay/NavDisplay_svnt.cpp + } + + Header_Files { + ../NavDisplay/NavDisplayS.h + ../NavDisplay/NavDisplay_svnt.h + ../NavDisplay/NavDisplay_svnt_export.h + } + + Inline_Files { + ../NavDisplay/NavDisplayS.inl + } +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp new file mode 100644 index 00000000000..9a67140671f --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp @@ -0,0 +1,156 @@ +// $Id$ + +#include "NavDisplayGUI_exec.h" +#include +#include + +#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 (void) + : unit_(1, "Model T3+"), loc_(50, 20, 0) +{ +} + +/// Default destructor. +MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUI_exec_impl (void) +{ +} + +// Operations from HUDisplay::NavDisplay + +void +MyImpl::NavDisplayGUI_exec_impl::push_Refresh ( + HUDisplay::tick * /* ev */) +{ + //ACE_DEBUG ((LM_DEBUG, "ENTER: MyImpl::NavDisplayGUI_exec_impl::push_Refresh()\n")); + + // Refresh position + HUDisplay::position_var loc = + this->context_->get_connection_GPSLocation (); + + CORBA::Long lx = loc->posx (); + + CORBA::Long ly = loc->posy (); + + 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 != 0) + { + 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) +{ + this->context_ = + HUDisplay::CCM_NavDisplay_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::NavDisplayGUI_exec_impl::configuration_complete (void) +{ +} + +void +MyImpl::NavDisplayGUI_exec_impl::ccm_activate (void) +{ + worker_ = new Worker (sizeof (argv) / sizeof (argv[0]), + const_cast (argv)); + + if (worker_->activate (THR_NEW_LWP | THR_JOINABLE, 1) != 0) + { + ACE_DEBUG((LM_ERROR, + "Cannot activate client threads\n")); + 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); +} + +void +MyImpl::NavDisplayGUI_exec_impl::ccm_passivate (void) +{ + RootPanel *target = worker_->getMainWindow (); + + if (target != 0) + { + 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 (void) +{ +} + +/// Default ctor. +MyImpl::NavDisplayGUIHome_exec_impl::NavDisplayGUIHome_exec_impl (void) +{ +} + +/// Default dtor. +MyImpl::NavDisplayGUIHome_exec_impl::~NavDisplayGUIHome_exec_impl (void) +{ +} + +// Explicit home operations. + +// Implicit home operations. + +::Components::EnterpriseComponent_ptr +MyImpl::NavDisplayGUIHome_exec_impl::create (void) +{ + return new MyImpl::NavDisplayGUI_exec_impl; +} + + +extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr +createNavDisplayHome_Impl (void) +{ + return new MyImpl::NavDisplayGUIHome_exec_impl; +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h new file mode 100644 index 00000000000..ce1a35f35eb --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h @@ -0,0 +1,102 @@ +// $Id$ + +/** + * @file NavDisplayGUI_exec.h + * + * Header file for the actual NavDisplay and NavDisplayHome component + * implementations. + * + * @author Nanbor Wang + */ + +#ifndef NAVDISPLAY_EXEC_H +#define NAVDISPLAY_EXEC_H + +#include "NavDisplayEC.h" +#include "NavDisplay_exec_export.h" +#include "ace/Synch.h" +#include "tao/LocalObject.h" +#include "NavUnit.h" + +class Worker; + +namespace MyImpl +{ + /** + * @class NavDisplayGUI_exec_impl + * + * RateGen executor implementation class. + */ + class NAVDISPLAY_EXEC_Export NavDisplayGUI_exec_impl + : public virtual ::CIAO_HUDisplay_NavDisplay_Impl::NavDisplay_Exec, + public virtual ::CORBA::LocalObject + { + public: + /// Default constructor. + NavDisplayGUI_exec_impl (void); + + /// Default destructor. + ~NavDisplayGUI_exec_impl (void); + + // Operations from HUDisplay::NavDisplay + + virtual void + push_Refresh (HUDisplay::tick *ev); + + // Operations from Components::SessionComponent + + virtual void + set_session_context (Components::SessionContext_ptr ctx); + + virtual void + configuration_complete (void); + + virtual void + ccm_activate (void); + + virtual void + ccm_passivate (void); + + virtual void + ccm_remove (void); + protected: + /// Copmponent specific context + HUDisplay::CCM_NavDisplay_Context_var context_; + Worker *worker_; + NavUnit unit_; + UnitLocation loc_; + TAO_SYNCH_MUTEX mutex_; + }; + + /** + * @class NavDisplayGUIHome_exec_impl + * + * NavDisplay home executor implementation class. + */ + class NAVDISPLAY_EXEC_Export NavDisplayGUIHome_exec_impl + : public virtual HUDisplay::CCM_NavDisplayHome, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + NavDisplayGUIHome_exec_impl (void); + + /// Default dtor. + ~NavDisplayGUIHome_exec_impl (void); + + // Explicit home operations. + + // Implicit home operations. + + virtual + ::Components::EnterpriseComponent_ptr + create (void); + }; + +} + +extern "C" NAVDISPLAY_EXEC_Export +::Components::HomeExecutorBase_ptr +createNavDisplayHome_Impl (void); + +#endif /* NAVDISPLAY_EXEC_H */ diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp new file mode 100644 index 00000000000..809117728f6 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp @@ -0,0 +1,9 @@ +// $Id$ + +#include "NavUnit.h" + + +NavUnit::NavUnit(const UnitID &id, const char *short_descr) +: id_(id), short_descr_(short_descr) +{ +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h new file mode 100644 index 00000000000..86dd2cccbd7 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h @@ -0,0 +1,57 @@ +// $Id$ + +#ifndef __NAVUNIT_H +#define __NAVUNIT_H + +#include "ace/SString.h" + + +class UnitLocation +{ +public: + UnitLocation() {x_ = y_ = z_ = 0.0;} + UnitLocation( + double x, + double y, + double z) : + x_(x), y_(y), z_(z) {} + + UnitLocation(const UnitLocation &ul) { operator = (ul); } + +public: + UnitLocation & operator = (const UnitLocation &ul) + { + x_ = ul.x_; + y_ = ul.y_; + z_ = ul.z_; + return *this; + } + +public: + double x_, y_, z_; +}; + +typedef unsigned long UnitID; + +class NavUnit +{ +public: + NavUnit(const UnitID &id, const char *short_descr); + virtual ~NavUnit() {} + +public: + UnitID getID() const {return id_;} + + const char *getShortDescr() const {return short_descr_.c_str();} + void setShortDescr(const char *short_descr) {short_descr_ = short_descr;} + + UnitLocation getLocation() const {return loc_;} + void setLocation(const UnitLocation &loc) {loc_ = loc;} + +protected: + UnitID id_; + ACE_CString short_descr_; + UnitLocation loc_; +}; + +#endif // __NAVUNIT_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp new file mode 100644 index 00000000000..16199f13076 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp @@ -0,0 +1,64 @@ +// $Id$ + +#include "NodeItem.h" +#include + +QBrush *NodeItem::normal = new QBrush(Qt::red); +QBrush *NodeItem::highlighted = new QBrush(Qt::green); + + +NodeItem::NodeItem(Q3Canvas *canvas, NavUnit &unit) + : Q3CanvasEllipse(8, 8, canvas), + unit_(unit), + blink_timer(canvas), + is_selected_(0) +{ + setBrush(*normal); + setZ(128); +} + + +void NodeItem::moveBy(double dx, double dy, double /* dz */) +{ + Q3CanvasEllipse::moveBy (dx, dy); +} + + +void +NodeItem::timerDone() +{ + if(selected()) + { + if(brush() == *normal) + setBrush(*highlighted); + else + setBrush(*normal); + + canvas()->update(); + } +} + + +void +NodeItem::setSelected(bool yes) +{ + is_selected_ = yes; + + if(yes) + { + // FUZZ: disable check_for_lack_ACE_OS + connect(&blink_timer, SIGNAL(timeout()), + SLOT(timerDone())); + // FUZZ: enable check_for_lack_ACE_OS + + blink_timer.start(500); + } + else + { + blink_timer.stop(); + disconnect(SIGNAL(timeout()), this, + SLOT(timerDone())); + setBrush(*normal); + canvas()->update(); + } +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h new file mode 100644 index 00000000000..b9e27a62256 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h @@ -0,0 +1,47 @@ +// $Id$ + +#ifndef __NODEITEM_H +#define __NODEITEM_H + +#include "NavUnit.h" +#include +#include +#include +#include + +class NodeItem: public QObject, + public Q3CanvasEllipse +{ + Q_OBJECT + +public: + NodeItem(Q3Canvas *canvas, NavUnit &unit); + + ~NodeItem() {} + + enum { + nodeRTTI = 1 + }; + + void moveBy(double dx, double dy, double dz); + + virtual int rtti() const {return nodeRTTI;} + + virtual void setSelected(bool yes); + virtual bool selected() const {return is_selected_;} + +public slots: + void timerDone(); + +private: + NavUnit &unit_; + QTimer blink_timer; + bool is_selected_; + + static QBrush *normal; + static QBrush *highlighted; +}; + + + +#endif // __NODEITEM_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp new file mode 100644 index 00000000000..b967c5a7e8c --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp @@ -0,0 +1,25 @@ +// $Id$ + +#include "QuitCmd.h" +#include "RootPanel.h" + + +QuitCmd::QuitCmd() +{ +} + + +QuitCmd * +QuitCmd::create(RootPanel *form) +{ + QuitCmd *cmd = new QuitCmd (); + cmd->form_ = form; + return cmd; +} + + +int +QuitCmd::execute (void * /* context */) +{ + return form_->close (); +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h new file mode 100644 index 00000000000..92b2b0110eb --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h @@ -0,0 +1,25 @@ +// $Id$ + +#ifndef __QUITCMD_H +#define __QUITCMD_H + +#include "Command.h" + +class RootPanel; + +class QuitCmd : public CommandBase +{ +public: + static QuitCmd *create(RootPanel *form); + +public: + virtual int execute(void *context = 0); + +protected: + QuitCmd(); + + RootPanel *form_; +}; + + +#endif // __QUITCMD_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp new file mode 100644 index 00000000000..1b315816efd --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp @@ -0,0 +1,88 @@ +// $Id$ + +#include "RootPanel.h" +#include +#include +#include +#include +#include +#include "NodeItem.h" +#include "Command.h" + + +RootPanel::RootPanel(Q3Canvas &c, QWidget *parent, const char *name) +: QMainWindow(parent, name), canvas(c) +{ + QSplitter *s1 = new QSplitter( Qt::Vertical, this , "main" ); + navview = new MapView(canvas, s1); + s1->moveToFirst(navview); + + details = new DetailView(s1); + + QMenuBar* menu = menuBar(); + + Q3PopupMenu* file = new Q3PopupMenu; + //file->insertItem("&Fill canvas", this, SLOT(init()), CTRL+Key_F); + //file->insertItem("&Erase canvas", this, SLOT(clear()), CTRL+Key_E); + //file->insertItem("&New view", this, SLOT(newView()), CTRL+Key_N); + file->insertSeparator(); + file->insertItem("E&xit", qApp, SLOT(quit()), Qt::CTRL + Qt::Key_Q); + menu->insertItem("&File", file); + + setCentralWidget(s1); +} + + +RootPanel::~RootPanel() +{ + clear(); +} + + +void +RootPanel::addUnit(NavUnit *unit) +{ + NodeItem *el = new NodeItem(&canvas, *unit); + nodeMap.bind(unit->getID(), el); + UnitLocation loc = unit->getLocation(); + el->move(loc.x_, loc.y_); + el->show(); + this->details->currentNode(unit); +} + +void +RootPanel::updateUnit(NavUnit *unit) +{ + NodeItem *el = 0; + nodeMap.find(unit->getID(), el); + UnitLocation loc = unit->getLocation(); + el->move(loc.x_, loc.y_); + //canvas.update(); + + this->details->updateLocation(loc); +} + + +void +RootPanel::clear() +{ + navview->clear(); +} + +void +RootPanel::customEvent(QCustomEvent *e) +{ + CommandBase *cmd = (CommandBase*)(e->data()); + cmd->execute(); + delete cmd; +/* + int elapsed = time.restart(); + int fps = (elapsed == 0 ? 1000 : 1000 / elapsed); + + if(prev_fps != fps) + { + prev_fps = fps; + ups->setNum(prev_fps); + } +*/ +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h new file mode 100644 index 00000000000..75a18d51fc3 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h @@ -0,0 +1,49 @@ +// $Id$ + +#ifndef __ROOTPANEL_H +#define __ROOTPANEL_H + +#define QT_GENUINE_STR + +#include "ace/Hash_Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "MapView.h" +#include "DetailView.h" +#include +#include +#include + +class NodeItem; +class QMouseEvent; + +class RootPanel : public QMainWindow +{ + Q_OBJECT + +typedef ACE_Hash_Map_Manager_Ex, + ACE_Equal_To, + ACE_Null_Mutex> NodeItemMap; + +public: + RootPanel(Q3Canvas&, QWidget *parent = 0, const char *name = 0); + ~RootPanel(); + +public: + void addUnit(NavUnit* unit); + void updateUnit(NavUnit *unit); + +protected: + void clear(); + virtual void customEvent(QCustomEvent *e); + + Q3Canvas& canvas; + MapView *navview; + DetailView *details; + + Q3PopupMenu* options; + NodeItemMap nodeMap; +}; + +#endif // __ROOTPANEL_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp new file mode 100644 index 00000000000..995d73fb937 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp @@ -0,0 +1,30 @@ +// $Id$ + +#include "RootPanel.h" +#include "UpdatePositionCmd.h" +#include +#include "NavUnit.h" + + +UpdatePositionCmd::UpdatePositionCmd() +{ +} + + +UpdatePositionCmd * +UpdatePositionCmd::create( + RootPanel *form, NavUnit *unit) +{ + UpdatePositionCmd *cmd = new UpdatePositionCmd(); + cmd->form_ = form; + cmd->unit_ = unit; + return cmd; +} + + +int +UpdatePositionCmd::execute (void * /* context */) +{ + this->form_->updateUnit (this->unit_); + return 0; +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h new file mode 100644 index 00000000000..6eaa62a7770 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h @@ -0,0 +1,28 @@ +// $Id$ + +#ifndef __UPDATEPOSITIONCM_H +#define __UPDATEPOSITIONCM_H + +#include "Command.h" + +class RootPanel; +class NavUnit; + +class UpdatePositionCmd : public CommandBase +{ +public: + static UpdatePositionCmd *create( + RootPanel *form, NavUnit *unit); + +public: + virtual int execute(void *context = 0); + +protected: + UpdatePositionCmd(); + + RootPanel *form_; + NavUnit *unit_; +}; + + +#endif // __UPDATEPOSITIONCM_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp new file mode 100644 index 00000000000..43b72a0a2aa --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp @@ -0,0 +1,46 @@ +// $Id$ + +#include "Worker.h" +#include +#include +#include +#include +#include + +int +Worker::svc (void) +{ + ACE_DEBUG((LM_DEBUG, "ENTER: Worker::svc()\n")); + + QApplication a(argc_, argv_); +// a.setStyle(new QPlatinumStyle); + Q3Canvas canvas(600, 387); + //QCanvas canvas(566, 679); + //QCanvas canvas(550, 723); + canvas.setAdvancePeriod(30); + RootPanel root_panel(canvas); + root_panel.resize(root_panel.sizeHint()); + + root_panel.resize(600, 650); + root_panel.setCaption("NavDisplay"); + + a.setMainWidget(&root_panel); + + QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) ); + + if(QApplication::desktop()->width() > 550 + && QApplication::desktop()->height() > 366) + root_panel.show(); + else + root_panel.showMaximized(); + + main_wnd_ = &root_panel; + init_complete_.signal(); + + int retval = a.exec(); + + main_wnd_ = 0; + + ACE_DEBUG((LM_DEBUG, "LEAVE: Worker::svc()\n")); + return retval; +} diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h new file mode 100644 index 00000000000..73aa649bd36 --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h @@ -0,0 +1,35 @@ +// $Id$ + +#ifndef __WORKER_H +#define __WORKER_H + +#include "ace/Task.h" +#include "ace/Synch.h" +#include "tao/corba.h" +#include "RootPanel.h" + +class Worker : public ACE_Task_Base +{ +public: + Worker (int argc, char *argv[]) + : argc_(argc), argv_(argv) {} + // ctor + + virtual int svc (void); + // The thread entry point. + + void waitUntillInitialized() {init_complete_.wait();} + // blocks the calling thread until the GUI is initialized + + RootPanel* getMainWindow() const {return main_wnd_;} + // Returns the pointer to main application window + +private: + RootPanel *main_wnd_; + int argc_; + char **argv_; + + ACE_Manual_Event init_complete_; +}; + +#endif // __WORKER_H diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif b/modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif new file mode 100644 index 00000000000..f674369efc4 Binary files /dev/null and b/modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif differ diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif new file mode 100644 index 00000000000..99fe78a7673 Binary files /dev/null and b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif differ diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm new file mode 100644 index 00000000000..736de06f25a --- /dev/null +++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm @@ -0,0 +1,651 @@ +/* XPM */ +static const char *worldmap1[] = { +/* width height ncolors chars_per_pixel */ +"600 387 257 2", +/* colors */ +" c #59746B", +" . c #3A6592", +" X c #E7BEA4", +" o c #6774BB", +" O c #3E4CA0", +" + c #94D6F4", +" @ c #D5CFF2", +" # c #475642", +" $ c #444853", +" % c #22558E", +" & c #909FE3", +" * c #0A2A66", +" = c #ABBAE3", +" - c #0A3987", +" ; c #4385CC", +" : c #69686A", +" > c #508290", +" , c #E0D5C1", +" < c #0B2428", +" 1 c #57666C", +" 2 c #283C8A", +" 3 c #303428", +" 4 c #CEBCE1", +" 5 c #A89A8A", +" 6 c #E4E6D2", +" 7 c #EFDDD3", +" 8 c #1D1D47", +" 9 c #6669B3", +" 0 c #425AAA", +" q c #97856C", +" w c #6587E0", +" e c #5C3511", +" r c #82BDEF", +" t c #0A182A", +" y c #7A87B9", +" u c #0A2641", +" i c #C59964", +" p c #1B466C", +" a c #0B1417", +" s c #575A86", +" d c #C49D7A", +" f c #D2BCAC", +" g c #8E88B2", +" h c #314446", +" j c #FCF5D5", +" k c #96A79F", +" l c #956D45", +" z c #99BDE4", +" x c #475662", +" c c #45453F", +" v c #44588A", +" b c #565DA9", +" n c #95A8BF", +" m c #A7A3B3", +" M c #95B1E0", +" N c #6A5435", +" B c #150E27", +" V c #808F72", +" C c #0C1C49", +" Z c #EECAA6", +" A c #B49277", +" S c #7FA8E8", +" D c #8F888E", +" F c #3C210B", +" G c #081D66", +" H c #7C93DB", +" J c #576ABA", +" K c #E3E8F4", +" L c #3C75BD", +" P c #DCC7B5", +" I c #AEA595", +" U c #1A3649", +" Y c #D6CFDA", +" T c #767489", +" R c #191B27", +" E c #1B4557", +" W c #80A8C4", +" Q c #CEB5A7", +" ! c #A8A3D1", +" ~ c #3E2913", +" ^ c #4869B8", +" / c #182D7F", +" ( c #957E86", +" ) c #847768", +" _ c #845526", +" ` c #6D766F", +" ' c #655D85", +" ] c #BDA5AD", +" [ c #97B0B9", +" { c #2357A7", +" } c #C7C4B0", +" | c #AAB59A", +". c #B58A59", +".. c #31578D", +".X c #765D46", +".o c #865D2E", +".O c #C3C9E4", +".+ c #ADC7F6", +".@ c #5879BD", +".# c #AC7D46", +".$ c #998F72", +".% c #BEBABE", +".& c #C0A78B", +".* c #080C29", +".= c #253181", +".- c #7E9196", +".; c #7E9EE2", +".: c #FCE8C9", +".> c #A9AFDE", +"., c #959D9C", +".< c #5285A6", +".1 c #AEC6DC", +".2 c #A599AF", +".3 c #C2C6C8", +".4 c #6792DF", +".5 c #675B51", +".6 c #B99466", +".7 c #F5D7B8", +".8 c #302511", +".9 c #69728B", +".0 c #74698C", +".q c #8D94E0", +".w c #45496B", +".e c #0A0B10", +".r c #493319", +".t c #CEAB8B", +".y c #99C8F2", +".u c #453C36", +".i c #31544D", +".p c #6994A5", +".a c #1B2327", +".s c #2C4887", +".d c #0B344C", +".f c #B2A383", +".g c #81A7A2", +".h c #C1E4F8", +".j c #7C92BB", +".k c #58452E", +".l c #43644E", +".z c #997A5A", +".x c #6791C4", +".c c #956935", +".v c #2E4AA0", +".b c #79552A", +".n c #544D80", +".m c #23546A", +".M c #19273C", +".N c #182B66", +".B c #19489F", +".V c #945E2A", +".C c #5285C3", +".Z c #3E3D53", +".A c #C2B399", +".S c #AFC5C5", +".D c #3D3552", +".F c #436F72", +".G c #D9DAEB", +".H c #3D2927", +".J c #3B749F", +".K c #5A5440", +".L c #D0F4F9", +".P c #2C63AE", +".I c #A9865C", +".U c #9D7543", +".Y c #687C93", +".T c #B0D5F4", +".R c #A78F7B", +".E c #687CBE", +".W c #2A3B6A", +".Q c #AC7D55", +".! c #7674B8", +".~ c #150D10", +".^ c #684A26", +"./ c #AB936B", +".( c #E1C4A0", +".) c #1A376E", +"._ c #31566A", +".` c #281B12", +".' c #676788", +".] c #867C8C", +".[ c #7F9C9C", +".{ c #528FC9", +".} c #1B3226", +".| c #BFAFB0", +"X c #D5B694", +"X. c #ABAEBA", +"XX c #6B745A", +"Xo c #665148", +"XO c #A498C7", +"X+ c #6687A1", +"X@ c #B89B7E", +"X# c #C6D4C7", +"X$ c #F8ECEB", +"X% c #82AEB9", +"X& c #E4BC92", +"X* c #4A4329", +"X= c #1A3988", +"X- c #171718", +"X; c #BEBBDD", +"X: c #81B0E3", +"X> c #6586C1", +"X, c #2F3640", +"X< c #98BCBE", +"X1 c #251D29", +"X2 c #6A9CC9", +"X3 c #7C8471", +"X4 c #4A7599", +"X5 c #554C58", +"X6 c #3A67B1", +"X7 c #6C948C", +"X8 c #6A9EE0", +"X9 c #70644E", +"X0 c #93A8E4", +"Xq c #41646F", +"Xw c #949EBA", +"Xe c #2E4763", +"Xr c #7E9DC2", +"Xt c #513B1F", +"Xy c #BDB1DF", +"Xu c #D0A774", +"Xi c #3159A8", +"Xp c #587796", +"Xa c #3F3D77", +"Xs c #263065", +"Xd c #5D3D2E", +"Xf c #4A76BD", +"Xg c #896538", +"Xh c #C5D7ED", +"Xj c #5D3D1A", +"Xk c #8A7350", +"Xl c #575860", +"Xz c #764D22", +"Xx c #806B5A", +"Xc c #7E8690", +"Xv c #0B2B7F", +"Xb c #1A4687", +"Xn c #486893", +"Xm c #767DBD", +"XM c #556557", +"XN c #FAFAF9", +"XB c #688584", +"XV c #3F3431", +"XC c #7987D7", +"XZ c #D0E6F4", +"XA c #2B6394", +"XS c #E5F6F8", +"XD c #282B38", +"XF c #0B356E", +"XG c #586892", +"XH c #ADB9C1", +"XJ c #929296", +"XK c #787C8D", +"XL c #434B84", +"XP c #867CB2", +"XI c #2A2726", +"XU c #9293B7", +"XY c None", +/* pixels */ +"X+ MXr.9 1 x `X9 cX9 ) 3.uXIX1XIXI.` c.8.`X5.H.ZX1.a h.M <.M vXG v.M u u.m % .X4Xm g.9.9.aXM : `Xx m.9XJ.9 xXp.9.Y.@ yXw.wXl.9.9.jXK : 3XV ( D.0Xw.C ; ;Xf.;XG 3 8.YXr r z.x.@X0XHXc x 3.aXI.8XI.}.}X,.@ yX>.9.YXl.K.K.] ) m T.9.iXc M & yXnX+X7.[ .iX%.Y.;X0.>.+XwXl.9XKXIXI 3XVXV.kX5.k.k.k.u.H.DXV.K.u 3XVXV.u 3 3 c #X,XcXw., I kXc.% :.} R R t R R R R.a R.a R R.a RX-X-.a RX, RX-.a RX- R a.a.aX- a.aX- RXIX- RX,.aXD XH } 5XJXHXJX,.Y.-.YXr.- nXD.u.D.kXV.HXV ~XV.rXVXVXV.8.u ) )Xk ~XVXVXo.HXV #X5X3XJ D : `., D kXJ., )X9.k.k.k NX9.kXx.k.k.X.kXgXg N NXx N NXx.^ ).RXt NXxXxXtXx.X.kX*Xo.r.k.X.r.X ~ 3.H.uXI.H.H.H.r.rXx (.].RXo.0.k m (XaXd.DX5 ~.uX,.M c 3 3 3.8.HXIX1XI.H 3XV.8.K 3.MXIXI.8XI ~.`.8XIXIXIXDXD.aXD 3XIXVX*Xo.^.H.8XVXIXD.Z c.uXVXVXD.HX1X5 :.KXIXI 3 3 3XI.H 3.8.HXVXIXV x.jXpXq.j [.[ nXh.YXB.[XqXe.g.9XwXpXr.{ > >._ h.w x x.j.[Xp.-XH [ n.%XKXHXKX1XI c mX3.3 m k I V.Z., kXK 3.u cX,XVX,XD.M R 3.aX,.ZXIXDXDXD 3X,X, B R.a RXDXIX,Xl.ZX5X, $XDXD BX5 RX-.aX-.aX-X,.ZXD 3XD aXDXDX-X,XIXD.a.a R.K #.u : cXIXD B :XP $ $.Z x.w.MXDXDXD hXDX,XD.} $X,Xl.w $X,XD.Z.M TXJ.w $XU c.wXDXD RXD.Z.Z.w $XeXlXK.MXD U xX, h $Xl $ x cX, hXIX,.aXD.a.ZXl.Z.M $Xl.Z c.MXIXIXDX5.H.Z c h $ hX,X,.wX,X, h U h U.a.}X,X,XD.a.}", +"X+X+ y [.- : : 3X1 qXJ.5X1XDXIX1X1XVXJ.8XVXl.uXDX1.a RX,.} t.W.Y v 8.M t p %X6X:.EXsXa $.Z hXD $.M.Z : h UXcXw.pXr H.EX0 U 3.a.MX, UXD 3.8.KXDX, EXrXf.@.@ yXKX,Xc MXp.CX4Xn ^.E.WXK .- hXI 3XI.}.}Xn.E v.@Xr.jXcXJXV.$X.X5 $XwXJ h nXr J.jXGXe #.l .Y.E o.x M = =XUXH., cXl.K.K.K.5X9.5.K.kX*X5.Z.KX*.r.uXVXV 3 3 3 3 # DXc.-.]XJ `.,X..9X,.a R R R R RX- R R R R R R R.a R RXD.a R R R R R R R R R.aXI.a R.aX- R tX,XDX,Xc n.% |., D.-X, .-Xc n.,XwXIXDXV.kXVXVXVXVXV.8XV.rXVXtX*Xx.RXVX*.rXI.5.u.5 : c.5Xl #.u c c c :Xl.K.k.k.k.k.kXo q.zXkXt 5./Xt q./X9Xt.R.R.z.X.k./XxXd ) NXx.kXx.XXtXk 5.rX* qXk.K.r 3.H $XVXVXdX5.RX@ ( ] ] g ).2.5.2Xy g ! ( I.K 3.u 3.H 3.u ~ 3XI 3.` 3XI.8.8XV cXVXDXI 3.`XI.8XVXIX1XIX1XIXDXIX1 R.H.8.u.^Xo.`.HXI.HXI.HXI.HXVXV.uXD 3X5 D k DXlX5 xX5X, cX,.u cXV cXV $.Y 1XpXqXp.T xXq.[Xp.F.F <.9Xq h._Xq.m._XA.i.w h $.).-Xp.[.YXc xXD h h 3XlX,XI a c.u c.u $X,.ZX,XD 3 :.}XD.ZXl $X5X5.u $.M RXIX,X,XDXDXDXlXD cX,XDX-XD.a 8.aXDXDXD.aXDX,.a 3 cXl.aX1XI RX1X- RX,.a B 3 RX-XDX- hXI RXDXIX-.K.5 3 `X1XD $.9XD hXK.Z U $ $XDX,X, xXl x $X1 hXI.aX, $ $.ZX1.aXDX1 $XUXl $.Z.w t $.ZX,X,XDX,XD.'Xw.ZX, $ $ $X, RX,.Z $ x : 1X5XD hXDXD.M.Z hXDXD $ x c xXD.ZXD $X,XD hXD X>Xr v._Xe v sXc.Y nXeXc.iXKXw.j.jX>.@ y.W.}XI 3XIXD.H.H ).H xXK.Y.pXGX+.Y $X,X, vX>.@.....s.@.EX>X0 J.Y x.M 3XlXl.M y.;.....E.-XwXc D ! DX;.3 D mXJ sXwXr.@XnX>.jXBX,.i._ 0.C M &.- mXc :XD.8XV.uXVX*.K.k c.k.K.uX*X9.K.K.K.K.KX5.K c.uXJ nXUX;XK., IX..,Xc c.a.a.M.a.a RX1X1X1X- RX-X-X- R RX- 3X- R.aX- t RX- R RX-X- RX- RX- RXDXDX,.-.>XwXHX. T D :XlXD h.j., nXwXJX,.uX5X*XV.H.H.r.u.u.r 3.r.HXx.kXV ~.rXVXVXoXIXIXV.HXX.]X3 DXJ.,XJ IXc.5.K.kXt.k.kXoXkXxXx.k.R qXt.R )Xx.^ qXx.R.k N.R q.k.$.X qXt.$ NX9X9 5 NX9.^XxX*.8XV.`.HXdX1.D A ]XyXyXOXO.0XO.2.> gXyXOXOXO ! mXJ.8XtXV ~ ~ 3XVXI.8.}X1 RXI.8X1.H $ 3.HXI 3XVXIXIXV.u 3 3XVXV.u c.u c c cXJX9 c.uX5XVX5XVX5.uXVX* 3.u.uXI c.K ` k.-.9 Xp Xq xXD.8XI.a.}.9X+XpXBXqXn n.FX4.p .X+Xe XpXpX+ >.X>Xp.YX>.j [ 1.Y.jXpXnX4 0XiX>X>XB # aX,XDXI cX,.MXKX+.Y y.[ $.aXD $ 1XfX> %..Xi .X8X4.4 ^.@X>.w UXlXw.1.>.T M M H.jXr xX,XcX5XJ.0 cXlXx `.9XcXwXrXf 0Xe t.a.a.WXnXfX:.jXw.,Xc D 3XV 3XV ~XVXV.rXVXVXV.u.K.K # 3 ~.u.H.H.`XI :.% D m.wXw : x.3XHXlX,.}XD 3XDX, 3XD 3XDX,X,X, 3X,X,X,X, $XDXDX,XD 3XDXDXIXDXDXDX1.aXDXD R.aX,.Z.9XwX.XwX.XcXl.9 $X5 xX, $ $X, hXI.H.K.H ~.HXV.H.8 ~XV ~ ~XX ) ~X*XV.HXVXV.kXVXVXV 3.u #.5 :X5.K.K.5 :.K.kXd.u.k.k.^.5.kXo.r.^XtXt NXd N.r.^XjXdXt.^ NX9.r.^ N.kXt.^.k.^.^.kXj.kX*XV.`.HXdXo (Xo ' Q.2 ]XOXOXO.>XO.>.> !X; 4.>Xy.>XyXK $.u.u.kXt.u.KX* #.u # c # cX5.u.u c )X5 cXVXV c.u 3 3XVXVXV.H.H.H.8.KX5 : )X,XIXI.8.8XI.8.8 3X1 R.` 3.`XI 3XDXD x XpXnXqXnXqXnX+.Y $ c.M.M.}Xe.F >Xq WXrX+XqX:.FXB E 1X4._.FXBX+XpXBXq.iXe 1.d t < t.MXD ! g ! !.>.O.O !Xy ! =.>.> =Xc.' `XH.].K.8.u 3X*X*XIX-XIXI $ :.2 D IX1 3X1.aXIXDXIXIXI.8 ~.8 F cX9 c ` 1X, 3 RXI.H.8.H 3.~ 3 3 3.`XIXI.8 c # hX,XqXBXq..._Xq._XqXB > XB xX, t xX+X7X+Xn._ . WXp x < U x.YXpXp.p._XnX+XnXe.i._.}.M.} t.a.a.a.aX-XIX-.uX5X, 3 :XlXDXc cXIXD `XIXI 3 R.u.ZXlXK cX,XIX, 3Xl.Z $ 1.9 $XKXKXK $XKXl :.9X5 UXDX,X,X,XD $ $ RXI RX1XD.aXD RXD hXDXDXI $.Z xXV.Z c x $X,XI R 3.~XlXD RXDXIX,XDX,Xl.aXK s.w.9.Z R UXD.Z.Z.M 3.M $XJXHX,.MX,XDX,.ZX,.Z.a.MXD h $XcX.XD.M.9 : $.ZXD.M RX,.Z h $ x $X, hXD.aXDX,.ZX,XDXDXD.ZXDXD.M h h.a.Z 1 xXD.N.MXeXn._X+.[X+.[ [.yX< yXH.9XKXl.' $.ZXI", +" b._XsXG 8X,X5 $XJ.5 ) :XcX5 $ $.5 ` ` : :Xx $.kX5XX ).5 c.u.5X,XDXG.Y UXD t.a.9.W E p.m . %Xf %Xn H.j M o..X6 2.sXL.v %.sXiX6X4X>.<.x.XiX6.@.M.a.9 yXq.EXp.@.s . H E UXD 3 cX1.5 cXD.}.aX,X,XDXc y MX>X>.E.+ y.Z 8X+Xf W = D.wXVXD.u.uXI ~XVXVXVXV.r 3XV.K.u.kXtX*.uXV.H.HXV.` 3.u :Xl.ZXDX,.9XHXJ.a.a R R.a R R R.`X- R.aX- R.a RX-.aX,X-.a RX- R.aX-.aX-X-X- aX-.aXDX- tX- h t t.M t.M 8.M 8 8X-.DX..2 cXDXIXIXVXVXo.r.u.H ~.u.uXVXt.KXxXV.k.r.rXVX*XVX* c.H.HXV.u.kX5.K.5.K.K.K.kXoX5Xo.k.k.K.kXoXo.K.^.kXo.K.kXo.kXo.^.k.^XoXd.kXo.XXo.k.k.kXoXdX5.kXtXo.uX* 3.`.H : ] ].R 4 ]XUXUXPXP gXmXU sXw =Xc.- .-Xw nXw.1 1.pXc.Y k 1 c.u 3.5 RXl ).,XJ m :.5.0.uXI.`XDXIXIXI 3.uXV.HXVXt.k.5 3X5 ` :.,X,XDXD.8XIX1XIX,XI.MXI.8 3XIXI 3 # h.i.M._.pXq E._.m._.m._Xq.FXpXB 1 h .mXq._X,.a < ..M h n yX>XAX:X8X2.xX+.M 3XIXVXV.`XVXD.MXeXp o.j.'.Z $.Z W.xXp.p x t vXG S.+ =XcXV c.uXIX*XV.rXVXVXV.u 3.r.u.K.KX9Xo.u ~ ~XV.8XV.H.8 3XIXI 3 hXlXwXw.9.a.a R R R R.`X-X- RX- RX-X- RX- R.aXIX-.aX- R RX- R R.a.a.aX1 3 a $X, xXJ h.a.M t h xX,XDXDX, DXJ.KXI.H 3XV.uXVX*.k.HXV.r.u.r.rXVXo ).k.uXVXVXV 3XVXV.H.u.8.H 3XV.k cXt.k c.k.k c.K.k.k.k.u.k.kXo.k.kX5.k.kXt.k.KXt.^Xd.X.z.^.XXkXxXo.^.X.kX5Xt.K.r.^X5.rXd.HXV.u m m ]Xy 4 4 !XyXU.9 9.jXPXG y.>X.Xc XXX3 |Xh = WXGXp W.-Xq.Y.[XhXwXh kX..Y : hXVXIXI.u.HXD RXIXIXV.K.K :X9.5XlX*.KXIXV 3Xc `Xc xXI.a 3 3 3 3XJ x.}X,X,.} 3 ` `.YXc xXp XG x x h.M.m.m._.i._.lXe >..gXX,Xe.Z.YX,.M.a 3 1XD $XD.a R.ZX,.aXD $X, h.w xXpXp._.F.FX4Xp.j U .j >._Xn x.M.M.Z.M.M.ZXU", +"XeXqXe.W.wX,X,.]XJ `X5 cX1 a.a.a.a.`XI.uX5 c.u.8.K.5 3XV.KX*.8 R.M.MXn y U.9.] 3XD h U h 1Xq.C.C.C.T.T MX0X+X+ h E 3.}.i u...W 0 O v.. % % {Xf.; H n HX> ^ {Xb.d u R.a C.W.).s..Xf 0 E x.EX6.P {XAXf.X+XD 3 3.u.`.HXIXD x.E.@ JX>.wXJXJ.}X+.p ...Xe.MXqXLXC z !X.., 3 cXVXVXVXVXVXV.rXVXVXV.KXV.uXV.K.HXVXV.8.H.8 3X1 3.5X3 c ` m.-Xc R R R RX- RX- R R R.` R R RX-X- R.a.aXD R RX-.a RX-.a R RX-XD 1 ` a.9 ` $ s U h.a.}XG h.MXD.,XJXVXI.H.uXVXVXV.u.H.u.k.r.r.H.r.uXo.5.5Xo.5.u ~.uXV.H.rXVXV ~XV ~XVXt.u.kX5.k.k.k.kXdXt.k.k.k.kXo.k.kXt.u.k.k.k.kX5XtXo.k.^Xx qXd N.$.^ NXx I.kXd.k.kX5.u.HXVXVXx c ' ] Q !XyXU.> ! !.1.>XU g.jXw.j.> [ | k kXMXBXS nXpXp >.gX4._._ nXrX<.jX+X+ .YXM.MXIXI 3XVXIXIXIXI 3XM.uXVXI.} cXDX,XV.`XI 3Xl # $.MXD.MXD $.- .9.} xXB.Y.Y.9 1 x 1 .- xXeXe.a.M < U < h xXe._XqXn.J.pX4._ 1X,.i ._.9 1 :Xc [.T WX: n W W.[.TX%.,.Y h <.a.a R.aX-X1 RX- 3XI ) $ :XIX1X, :XIXD.aX1 3 :.aXV 3 RX1.}XDXD.aX1.aXDXDXIX, RXI BXDX,XDX,X,XD $ hX,X,XDX,XI R.aXDX,X-X1.aXIXD hXDXD.Z RX-.aX1.aXIXDX-XDX-XlXI.aX1.a R.3.ZXl cX1.aXIX-X1XD aXD T.ZXc.2 hX, $ $ $XK x $ xX,.ZXD.MXD R.M R RX,Xl.M x x.Z R.aX, $.Z.ZX,X,X,.a.wXcX,.Z.-.9 $ $., $XI.9 :XDXDX, RX,XD.M.ZXD 1.9 1._.FXp >X4.FXn.FXw._.[ W X4 Xe.w U.YXK.j.-", +" sXe.w xX,.ZX,XK `.3 D `.]Xl.ZXIX1X*X5.kX5.k.u.5.KXV.K.$.5.aXI R.a.M v.YXLXDX1X1Xs $ cXl 3 UXL.v L SX:.;X0.; g k.-.Y.-.[X,XK 9.!.0.! C U.s %Xf S S.xX6X6.s...W uXD tX1.D.M.W.sXi.4.C.4.C.JX6.P { {.P %._XK h R.k.8.HXIX1.Z.EXG J.E.E.a x.5X,.jX>Xi 0.d.W U._..X>XhXh m V : 3XV.uXV ~XV.u.8.rX*.kX* qXxXV.r.HXV.H.HXV.HXV.K |.,X. m n : $ t.a t R R R RX-X- RX- R RX- R R RX-X, RX- RXI a.a R.~X,XD.9 h.'XG.Z $ t.M $ 1.M 8XeXc xX, : :XIXVXV ~.u ~.u.rXV.H.K.kXVX5 NXx )X9.uXtXX.5X*.8.8XVXV 3XIXVXVXV 3.rXVX*.k.k.k.k.k.kXt.kXt.k.k.k.u.k.kX*.k.k.k.k.k.k.k c.k.^ q.R.kXk.zXx N ( )X9.kX*XV.r.H.8.H D 5 (Xx.2XyXO !.q &X0.> &.1 = =.OXhXw =., [ | V V.g kXpXnXpXnXp.F x EXe._XeXeXe..XqX4.YXq.}.MXD cXIX1XI.8.u.KX*.$ `X3XH kXc hXIXI 3X1.} $.} h.Y Xc.Y `.,._X+Xn._XqXq._XeXqXnX+XpXe h.M u.M.a tXI RXDX,Xe.F WX4 ...XeXe.i.M U._ 1Xw h $ $.[XqXpX4.<.p n [ [ [.[ x < R R R.aXD c R.` R.`X- :.`XD cXI.a $ RX1.aXDXIXI.a T.a.aX-XD.M 3 RX,X,X,X,X,XlX,X,XDXDXDXDXDX,XDXD RXDXD RXD.aX- R.Z cX, 3X,X1XDX- RX,.u h 3.a RXI.aXDX1.aXD $X, R.aX1X.XKXIX,XlX5XIXI RXI RXI.a.Z D 1.'XD.ZXH.9.Z.'X, x $ $ $X,.ZX,.MXD.MX,.Z.Z x.ZX, $.ZX, $.9.9X1.ZX,XD.a tXDX,.w hXD.'X..aXDXc.,.ZX,XDX1XD.M.a hX,.Y.9X+XqXp k z.T.[ M M zXZ.T.-X+ X+._Xq E._.[.YXG", +" xXG h hX5 UXI $X5 $Xw mXl.2 'Xc.KX5XV.u.u.K )X9.8.8.K : cXI RXI.aXlXD._ s U 8 xXKXDXIX1X1 R.=..XiX6XA.. vXaX1 R.}X,.} $.u :.n ( g.]XD.W .Xi ; S.J ;XAXb...) U.N tXDXDXD 8 C.. {X6Xf.P.P ..4 L LXi...@.E.W RX5.H.H.`XIX1 xXKX+ y v.MXI 3 3.} y S.C ^..Xe t E ..x.- Y.G., }XV 3.8 3.u.u.8X* 3 #.r.8.K.K ~XVXV.H.r.HXV.u ).,.%.,XMX..-.9.M R R R R RX- R.`X-X- RX-X- R.aX-.~.aXDX- R.a.eX- tXD 1 :XJ.w.MXD :Xw.9.a hXU.-.9.-.- n.9Xl h 3.uX*X9.5.5XxX9 :X9.5 (Xx.XXo.KX* ~.r.8.8.uXtXV 3.uXV.H.H.`.u 3XV ~XV ~.kX*.kXt.k.k.k.k.k.k.kXt.kX*.k.k.k.kX*.k.k.k.k.k.k.k.k.^ NXtXoXo.k.KXx.u.kXV.H ~XI.H.H.u ].| ].2 ! !.> &.>.+.+.EX0 =.> = nXhX; [XcX3X3 V X3 [XGXnX+._.i U u._ x.9 E._ p.i MX+ XnXp x.} hXD.}XI.8.u N.`.`XM.Y.Y.gXr 1.`X1XI.8XD 3 x XpXqXqXp W.-.YXq..._._XeXe EXeXpXq y._Xe 1.M R :.DXD RXDX, h.MXe ..m._.m._ x.FXe._ 1 x.} RXKXn x._Xe._XqXnXBXp XcXcX, hXD 3 R.a.5 RXIX1 $X1 3XlX-.ZXI RXI cX1X1XIX,XIXD c :XDX,X, 3X,.aXDXI.MXD RXDX,.aX,.a.a R.MXDXDXD cXD.aX,XDXIXD.a RXD $XDXI.,XJ x.aX-.a RXDX,XD aXD.a R 3.MXD $.Z aXIXH c 3XI.aXV #X5 $ 3 R R R.}XDXIX, $ hXU.Z.w nXD.Z ' $X, s $X,.wX,.DXD.M R 1 $ U.aXD $.'XKX.XK.YXl $.MXDX, 8 U $XD hXl $ xX5Xl.9X1X,XI.MXD.MX, h.YXp.p.-XcXq.[.1.3.[.pX+X4.M.} hXcX4XqXq._.mXnXqXp", +".Y $.W hX, $.MXDX, R $XlXD RXI RXVX* :Xx :XoXV.`.5X9.u RX1 cXD R.` D XBXcXpXGXGXc.wXD.8X1X1 8XL._ %.....M RX1X1.MX-XDXI.`.k.5.ZXV.} R U vXpX> L.J.J.P %XA ^X6 v 0.sXn.}._.j % {X6 ^XiXfX4X8 rXf ^ w.9.w UX,XDX1XIXI 3X1 hXDX,.a.aX,XIXIXDXG.EX>.@.@.; v E.m % %X+.Y.S.G m., 3XVXV 3.H.uXVXV.K.k ).KX*XV ~.H.8XIXI 3 3X.X..O.3.3.1XH 1 R R.a R.aX- R R R R RX-X-.aX- a R.aXDXI.a RX-.Z $X5 :XKX,.a.eXI R $ [XH 1XwXJ.,.9 $ c.MXIXI cX9.5X9.5.X.5.k.u.k.u.uXX.uXt.H.rXV 3.r.uXV.r 3 ~XV.r 3 3.8 3.u.r.HXVXVXVXt.k.k.k.k.k.k.k.k.k.kXt.k.k.k.K.k.k.k.kX*X*X*X*.k.k.KXt.k.K.k.^.kXo.5 ~.r.HXI.8.H.HX5 q.2X@ ( ] ! !Xm H.; z z bXr.>.EX0Xw [XK.Y `X3 c #XXX3Xw [.pXp._.s E X+.}X, R c.pX+XAXq._._.X2.x.p.jX>XC HXL.N.a.a $XDXD.aXI.`.}XI.a 3.}X,.aXD $ gX+Xp.x.E.@.EXn._._XA.J.@ x $XwXhX. D 3XI.H 3X*XV.K ~.K.$X9XV.rXI.8.8 ~XVXl.2X.XU nXw n.3XU 1 R a RX-X-X-X- RX-.aX- RX- R R R aX-X,X- R.~XD $ `XlX, a RX1.} R a.u T 3XK : hXIX1 3XD c.KXXX9 c.kX*Xx.k ~Xt.8.rXV.rXo.8.H 3XVXV.r.u 3 ~.u.rXV ~ 3 ~XV.u ~X5 3XVXV.r.HX*.k.k.k.k.k.k.k.k.k.kX*X*.k.k.k.k.k.kX*.r.r.u.r.rXt.rXV.rXtX*.k.u.r.kXVXI.8XV.`X5.R.5Xo.k.2.R.2 !XU M o.v ^ H O s HXLXGXU.[ X3 : c h c 1 X7 W W.<._ v UXq #Xc.l $ kXq <.M.WXe._XeXq x.- XMX1X*.5.` 3XIXpX< +Xr.- ` 1XDXl `.-.Y.FXeXe EXp x $ $.Z U.} R < R.a.M tXq.WXG UX,Xe.Z.M.WXs.MX,.`X5.uXIX-Xl xX< zX<.y.1.SXh.Y.9.-.p.F.m._.M.M h hXe x $ hXD.Z x.a cX,.5.a.u 3 3 3 RX1 c.KXl B.`X1X1 3XDXI.aX-X-XD RXD R RX- R.a R R RXI RXD.aX,X, c.'.a tXD.aX,XDX,XD RXIX,X, h $ c cXDXI., :XKX-XD R.a R R.aXIXK VXKXl T :Xl :.5 3X1.aX-X-.aX1XIX, 3.a.5X, c :X5 R R RX1.ZX, RX- RX, $ $ 1X,XcXc 8.ZXl T $X,X, 8X,.w.aXD RXDXD.M tXD 1 hXK.9Xc.9XJ $ $XlXI.a :X,XIXDXDX, R.M.M.MX,XpX4.p x.MXVXIXVX1X,.-.gX+.} 3XIXIXB >X4._._Xq.pX<", +" x hXcXUXK x RXlXlXl xXIXD t R.aXI RX1.ZXIXIX1XV 5 #.uX1 R RXD R.`.` 3Xl < U.d.YXwXlX,.a.a $ < c h.M.}.}.M h.Z 3 3X1X1X1.aX* h.SXBX,.a R T.n y.) E u E.F.m.<.{Xf.xXfXA %XA.m.PX6Xp U.ZXw yXJ n 1 $.Z 3 #Xl cXD.u $ c.a 3 3XV 3XI.M.D x.j.jX>X+.d W.x v 0 v ..J wXp.E.jX.XhXHX.Xc `.HXV.H.u.k.kX*X*.k.rXV.H.8.u :.5 :XJXcXcXK.9XcXc.- R.MX- RX- R R RX-.aX- RX-.a R.~ aX1XD.Z.e.aXlX,XlXDX-X- RX1X-X-.8Xl # 3 c.aX* c c 3.u c.5 :XVX*.r.rXxXx.k.rXV 3XVXV.uX5 ~XV.rXV.8 3 ~ ~ 3.rXV 3 ~XVXVXV.rXI.K.H 3.rXV.rX*.k.k.k.k.k.k.k.kX*.k.k.k.k.kX5.k.k.u.rXVXV ~XV 3 ~XV.rXVXVXtXdXV ~X5.8.H.8.`.k :.`.H ~.|XyXy !.'XCXmXp b o.jXGXG b.s.s.YXw ` .lXIXI c 3 X7.g.x..Xe._ 1.p.- Xq.iX..[ 1 xXD.wXq._XeXn 1XK # c c 3.8 3 XG > E.MXD.} RXG.lXp $X4 E.M u U h.aX,XD.a RX1XI.a.`X-.a.a aXDXD RX1 R.a t.ZX,.MX1Xw T.~ : 1 $ nX.Xh.jXX:.< %XAXnXrXwXl 1.'XcX5 cXI.aXI 3X-XI.HX1XDXI 3XI 3 3 3.Z.Z.Y.jX> yXC M._.F.p.1.+.+.xX0.;X>XnXGXp.TXc.O m DXJX5XVXVX5 3.5 qX*.u.HXV.8.u.K.K 3.,XH.j.9X+.Y.i sX, RX- R aXI R.aX- RX- RX-.a R.a.a R.a R c $ T ` x.eXI.aX-.a.a.` cXXXIXIXV 3XV c.8XV 3.K ).KXtXt.H.k.zXo.r 3.r ~XVXV.H cXV.rXV 3 ~XV.r.u.u.r 3.r ~XVXV.H.H.H.HX5.H.r 3.r.u c.k.kX*.k.k.k cXd.k.kXt.k.u.k.k c.k.rXV ~ ~ 3 ~ ~XV.8.r.r.`X* 3XV.8.K.8.8.8XV.uXV.uXdXV.RXy ! &XC.! yXmXGXeXH.WXaXeXG vXnXrX7 1 :.}.aX,.M # .gX+.pXqXp._Xp.[X+ 1Xq x.iXnXcXc.9X5Xp EXe._._Xq.9 h 3.8X1 3.9.9XnX+Xq R U < XGXe.i xXe <.a.MXDX,.a R RX- R.`X- R R R RX-.a.uXIX-.HXDX- h.ZX,XeX, `X, :XJX.XJ.,.,XB.1 [.-XcXr [X+.mXe.}.aX1X1 a $.YXc.9Xc T :Xc :XDX-.uXIXI RXIXI R #XV cX- c #X-XDX5.,XJX-.a.a R RX- R R R R.a R.aX-.MX-.M R.aXc $XI.M $XDXD RX-.a R R RXI.MXIXDXDXD cX,.a R.a.a.a R.aX- R aXIXD aX5XIXI RX1 RX-XVX-X5 $ 3XI.aX- RX-.aX1XIX1.}X1 R 3XD c :.5XI 3.`.aX1X,XIX,.ZXlX,.eXD.e RXD.Z.ZX,XD $.MXD R.MX,XDX,.a.aXD h.Z hXD.} cX1 $ xX,X1 cX,.DXDXD.a U.MXq.FXq.p xXI.H.`.8XI RXD 3 # R.H 3 .j WX<.jX% n.g", +".w h.ZX..ZX,XD n : 1X,XK m ` $.aXJ k x 8XD 1XDXJX*XIX1 RXI.Z $Xl $ 9.v 0XG s `.wX,X,.M.WX6.EXw k .Z.aXI $ `XMX7.[X4XpXq._Xq.Y nXpX+XpXp._Xq p . >.< M._ p._XnXe 1 1 RXIXVXI.a h.YXq :Xq 1 v >.F p.m U h.a R 3 RX5XDX,X,XDXDXDX, 3 3XDX, cXlX,Xl.KX5 c c 3.a h.Z.M.a RXlX- $.-.> n = [.[.1 =X4 MX7._Xq <.a R R R 3.wXl 'XJ 1 $ ' ) BXD R cXD R.a RX-.` R #X5.`XlXIXIXI KXVXDX- RXD aXD.a R.aX-XI R R.aXI R R.a t D :XD.aXc.Z 1Xc $.MXDXD.a.a R.a.a.a R $XD.u.aXIX- R R.aX-.a.a R.~XIX1 c.e.aXIXD 3 $XM.u RXI RX- R.aX1.a.aX1X1 RX1XDX1XI RXI #.5.aXIX-XIXIX1.aX-XD c $XDXD RXD R.Z.w h.M s $X,.Z hX,X,.Z.aXDX,X,XD c cXD.aX-XIX-.aXD $ cX,.MX,X,.W $Xn.mXn.[.a R 3.`.`.H F.H R c c.MXe n.gXpXc n.} $", +" x.w $Xl x $.aXKXJ $X1XJ k :X- tX.XH RX, 8 mXI $XXXHX5 RXD ' : a R 3XI.8.K :XI.ZXPXs.NX=.s . .X4 JXqXLX,.M.aXDX, 3 3Xl.a a.a.HX,.H R 1X, u 8.M R.a.a C.mX=.P L .X> [XrXZXm.W s y.O nXl.Z ` 3 mXd TXIX1.u.2 :XDXDXIXIXI.8 3.M.Z.EX6 %Xi...4 yX>.xX>.@.;XwXwX5XD 'X0 WX0.j.jX. nXl.D 3.uX5.u.KXxX9.k.uXoX1X5 `X*.u # |.3X;.- y.g.i x.aX, 3.aXI RXI.aX1.a.a.a.a R R RX-X-.aXDXD R R tXDXI.* RX-.a T D.u.u.HXVXV.r.HX*.8Xd ).k ~.r.kXk.X.r.rXxXo.H 3.H 3.u.8XlXVXVXVXV 3XVXVXVXVXVXV.r.8.rXVXVXVXVXV.KXI.u ~XV.u.k.k.k.k.k.k.kX*.k.kX*Xd.k c.kX5.k.k.k.r.HXV.H.HXV.H ~XV.HXVXV.H.u.8.K.u.8XVXV.H.rXV.R.2XO !XC.+.EXm y.' TX5.KXI.M.W.W.W.sXnXrXc 1Xl.a.aX-XM XB.-.[ >.F._XqX7X+.9.[.pXpX+X4.F._ p._Xe._._XeXn.F.Y.Y 3.}Xl $ hX,.-XpXG.Y >XpX4._ x.W xX,XDXDXV 3 RXD.}.a.a.} cX,.aX-.aX, R RX5XI.`X- R.aXIX, h.aXI cXKX- c $ h._ x x.9Xe._Xq.FXnXq EXD.a R.aX1 RX,XDX, RX1X,.` x.aXIXDXDX,X-XI aXI.a.`X* :XI c c.aX1Xl.G cXD RX-X, RXD R.a RXDX1X-X, cXI.aXI RXD.M 3 sXl xXl xXl R.a R R RX1XDXI.aXD.a.ZX, hX1X1.a.aX-XIX-X-XI.a RX-XI.ZXI.u c cXI 3.u t R.a R RXD.aXI aXD RX- R R RX-XI RX-.u ) 3X1.aX1 3XIXIX- $ :.wX, RX1XIX,X, $.ZX, 1 $X, h.Z.wX, $XI.ZXD $.ZX,.ZX1XDX1 RX1XDXl.wX,.M.wXe x pXeXq.FXp.} 3 RX1XI.H.H.r $.u.K 1.}X+XGXX6X8.x :X,.HXD D.2 ).8.H $X. hX, h.iX,.a 3XD hXeXCX6 % %Xf ^X6 .XfX> ..O.+ TXV 3 $.>.j y.Y nX; TXIXVXV c.kXV.kX9 ).8.k.kXoXo.HXI.`XJ., 1X, U x $X,.}X1.a.aXI.aX1XIXDX-XDX,X,.aXDX, 3.Z.a.Z hX,XG.-XwX..-Xl : c.2.$ c.k c.kX*XVX*X*.u.5Xk.K.r.K.XXx.5XtXV :Xx.uXV.HXIXI 3.8.5 3XIXVXV.8.u.~.HXVXIXI.8 3XV.8.8.H.HXDX5.H.HXVXV.8.u.kX*.kX*XdX*.kXtX*Xd.uXdXd.k.k.u.kXVXV ~.HXI.H 3XV 3 ~ 3.HXV.HXI.8.uXV.8.HXIXdX5 D !XOXO H &XC.E.9 =X5X5.]XlX,XD.W.) 0Xn vXr.-.9XX h.8X, 1 k :Xc n.[XrXq.p.jXr.p >.j x 1 `.-.-.-X4XpXpXpXGXq.,.9 U.a xXcXc 1XeXpXq xXeXe E $Xe h t.a tX, RX- RX-XD R.M R R $ a.a.ZX, cXD RX1XIXD RX1XIX-XDX, 'XlXDX,X5XIX-X-X1X1.M U $ x.wXe xXe x $.a.a R.a R R $ c.9 :Xc.9XK TXJ TXcX5X, BX-XI R RX-.aXV.K.uXl.8X5XcXJX5 $XlX,Xl., : 1X5.9 ` TXKXJX. 3 R.aXI 3.u 1 : $ $.Z cX,X, RX- c $X,XD $X,Xl.ZX5Xc cX, R.`XIX-.`XIX-X-X1 R RX-XI 3XIX,.a.a R x.u RX,XD <.9.Z $XlXcX,.'X- R RX1 RXIX1X- R ` c :Xl $ T $ ` mXJ D.Z.a RX, BXD $.Z.MXe x xXDXeXD.ZX, $X,.Z $X, $.Z cX,XD.a RX1.' xXG.YX+.j..._.mXeX4Xc.WX, h c cX5 c.8.H.` R 3 $.Y.F._XB.J >X2", +" v xXc TXK ` ` ) T c.5.aXl cXM h.~XIXV ` :.K 3 R $Xl 8 R.Z.2 1XD R.|X5XV a.,.a 3 ` Y.DXD.D.- h U.W U.) 2.Y.W <.a hX9.`XVXIXIX1.~X5XD.W..Xb..._.m E U % % % L {XA %X>.x.sXe.@.P.P LX6X+ TXIXVXD.HXV.r cXI $ UX4.pXpX+XK.- n.j.x ; ....@ v vXe ^X4 ^X6 yXH cXV.u.uXK.jXK.jXKXKX, 3 3XV.KXV.rXtXt.XXx.XXo.u.r.H ~ 3 VXJXq xX, U < h RX- RX-.aX-X- RX- R RX- R R RX-X-.~ RX,.M t.,X+ $ n xXc.%XJ.5XVXV.u.r.uX*.u.k.uX9XxX*.kX9X9.$.5 N.5XxXxXV.0 )Xl $.u.K 3 :X5 :XVX5X5.ZXc 'X,X5 $.u.u.k.K.k cX5Xo.5 c.k.kX5.k.5.5.X.5 N.5.X.5.5Xo.X.X.5.k.5.X.5.XXoXo c.k c.k c.kX*.k.KX5.k cX*.KX9.KXV.5Xo.5 ( f @X; !X0 H yX> g s (.0 : 3 :XqXeXG.+Xh.EXw.- `X3 VXM $Xl.uXcXX k k nXqXpXqXq..Xn.p.Y $XDX,.iXM 1.9 .9Xp < h x.9Xq._.FXpXr._Xe E x.W U U t.M t.aX,X-.a R RXD.a a.aXDX,X1.aXI.Z R R R R R.ZXD a RXDX,XDXDX1 R.KXV c 3 : 3X-XI R.M U U.MXD UXD.M.MXDXI R R.aXD : 1XD T xX, T : $ 1 R.u.aXD.~.a.aX1 aXI $.KX5X5X1.HX1X1X, aXKXcXK m mXcX.XcXc 1 1XD.a aX- c 3.a RXDX,X,XDXD 3.Z cXl.9Xc T k.2Xw m 1 k $X5Xl :.8X-.uXV.~XIXVX,.u.Z 3.~ R RX5X- R.u $Xc TXKXK.ZXl.Y 1.'XD h.a R.a.aXIX-.e RXDX1X5X. TXKXHX. TXKXKX,X, R $X, R.a 8XD xXD.}.W x $.M.Z.aXD 8XlXDX,.ZX, sXl x x.'XGXcXH.j.O [X+.pX4._Xq.FXn.pXXG.MXsXpXfXA.B {.BX6Xf.9X,.uXV.H.K cXDXqX0 M.; S.+.E M M.4X:.P %XqXq x.D.W.W uXi.sX> M c 3.rXIXK.O.9XcX,XD.u 3XV.k.kXV.r.k.KXxX*.r c.H.`XI.8X-.,X..9 1Xe hX,X, X+._ $ < t t.a t.a R.aXDX, R R.aX,Xl xXIX5XlX-XD 3 $XIXI RXI R.aXD.u aXDX,XD RXDX1X1 # :.kX1.KXI R R.M.aX,.a R.M R aXD.aX, RX-XI R.aX- RXDX- R.ZX-X,XDX-XD 3X1 RX-X-XIX- 3.`.KX5 c 3X1XI RXD.u R R.a R RXDXl BXDXD c $XlX5 $XMXD RXI R $XDXD RX-.aXI $XlXlXl.9 3XD h $.Z 3X1XI.u D.KX9.5XXX5 cXIX-X-XIX5 3 BXI.u RX1 : $ h xX,.MXD R.a t.a R.MXI.a.aXDXD.,.%XIXD R.u 1.ZX,XD RXD.Z.a RXDX1X,XD R 3X,.Z.w.w h g.Y.9 : T.2X,XD xX,X,X,.w.1XcXHXBX< n.jXpXn.p =X+.[X4XpX+.-.YXc [ ` m.,XJ.%XX.K.H.`X1XD.aXJXp._X4 >.J", +" x $X, 3.a.5Xl.` R 3X1X1XM.u cXl cX5 c :X- ).uX1.u RX1 RXIX1X- RXI.uX- R R $X3 3.u :.uXI 'X.X,.M.M.d J.w.d 1.Z cX1.XXV.H cXV 3.u c $XpX:X8X8.@.J.. 0 0 S.qX>.EXm.Z.MXsXGXf.P.v % { L.PX6 y.ZXI.r.u c 3X,.9XG 0.@X>X>X> HX> ; {XA .Xp $ # R $.M U.) .X>.h.9 h.uXVX,.'XJ 1XI.uX1.uXV.5.8.r ) 5 ).r.r.8Xt.H.8.H.8 3X5.,X.XcXcXG h R R R.aX-X-.a RX-X- a.a R RXD #XlX- RX5 `XK : xXJ., ` # 3XV 3 ~XVXV.r 3.rX5 )X9.5XV ~XVXV.r.rXV.kX9XV.`.].R.'.2.w yXD.ZXK 'XK.'Xw.E.' o o v JXKXsXD.}.r 3 3.rXV.u c.H.HXV.r.r.u.k.kX*.k.k.k.k.k.kXt.k.k.k.KXoX*.k.kXtXVXV.8XV ~XVXV.H 3 ~XVXV.H.H.u.u.8XV.HXo 4XO gXy &XC J.s v h c ( 3.Z.M $ v v 9.E.q y y.,., VX3XM :.a.8.} # #XB [Xp._._ XK 1 $ hXq.Y a.uXIX1.HXIXI.} h.-._Xe._ p..Xe E._._ x._ t.a U < R R.a B.a $X- R.a.aXc.9 m 1 :.,XJ :XJXKX5 RX- R.a h R RX,XDX5 c RXI 3.8 :XX :XlXl R.a R X+X+ >X+ XG.pXp.[.-.[X%Xh.T [XZX#.GX.X. )X1.HX1.8 3XI.`.H h.[ .p.T W", +".M.Z.MXDXD.a c 1 3X1.aXI.uXlXIX-XIXVX1 R 3 :.KXJ Y #.DXI 3 3 ` DXJXKXl.u.w.KX1.`.`X-X1XD.Z R.a.M.MXq x h xX,.ZX1X1 B.`.H.K 3 3.a.}.}XeX4.C rX8Xr.@X+X> v vXG $XDX,.wXnX>.P.B.. JX>.xXf.CXpXDXV.H.5XV.uX,XJ oX+.E.Y o.-Xw =.x . %..._ E .W U U t E pX8 W =XJX5 3.DXIX,.HXD.u.u ~X*.k.kXx.5.XXx ~XVXV 3.H.8XI.8 3 3XH.,.jXw 1 1 t R R RX-X-.a.aX- R R.* t.aXDXKX-X1.~.,.5 3 3.a.u.}.uXI 3XV 3.rXV.r.k.5XxX9.kXV.k.r.HXV ~ 3XV.H.8.u.H.]XJXUXP.!.'XUXa J.!Xm bXL 9 b 0 v b 2XG y.9.ZXI 3XV.r 3 ~X*.u.rXV ~XV.HXt.kX*Xd.k.k.kXt.kXt.kXdXtXtXd.k.kXd.u.uXt.H 3 ~XV.8.HXVXVXV ~ 3.HXV.u.kXVXIXVXx ] g g.>.qXC 9.sXs $ 1 c `X1XDX0 &X4.9 =.9Xl h 3X*XX.,X3XM #XI.a c `.gX+.i._.M 3 #.l.9.FX+.F.M.8.8.8XIXI.a.aX,.pXqXe.i._ < E._Xe._ h hX, t a R.M 3.aXIXDX,XD.aXI R $ R $.ZX,XD 3X1 3XI cXDXI.aX1 R 3XDX,XD.9.9X1 RX-X- 3.5.5 ) c.`.a tXI RX, R R RXIX-X-X, R.`.a.a.a hXI a RXI RX- R.} 3X1.aXI hXI 3X, RX1XIX- 3.KXl c RXI.aXIX,.aX1.M RXD R R a 8XDX1XDX-X-X-XD RX1 RXD.aX1 R R RX1X-.aX-XD R R R.a aX,X-X5XD.`XIXIX* ` ) 3.~ RXI.DXc D.' T :XK # cX1.e RXDXIXD R RXD R.e.a R tXD.aXDX-.3X.XNXDXV 1XD aX,X, RX1.ZXD R.a RXD c :.wXK.' :XGXD h.D.WX, s RXD.aXD.MXqXqXp.Y >XpX+.FX4X4X4XG n.-.} $ ` 1 1XcXHXcXJ., )Xl.H 3XI.H.8.`.`.HXIXI.9.F.YX4 >", +"XDXDX,.a.MX,.aX, :XDXD.u c 3 #.K cX5 3.uX-.K 3X9 : c q : m.$XX ` `.u.DX,X1 R.5X9X-X1.H cX- 8 u.MXGX+XM <.e #X5.u.`.H.HX5.8XI.a .a.d...PXf wX>X>XrXrXw.M.a.eXD 3XcXKX>X>X6X6Xp.EXeXpX>XrXrXc.u.kXV 3XV 3 hXlXG $.DX1.H.DXKXwXn ..m...d EXn.s pXq.m .XA...@.>.]XVXV.HXV.u 3.8XV ~.KXo.X.k ).k.r.r 3XV.HXV.HXIX1.}.uXw nXw nXw $ < R R RX-X-X- R R R tXDX1 1XD.e ` 1X9 | 3 3.uXV 3XV.rXV.kX*.k.KX9XxX9.kXtXV ~.u.KXV.8.u ~.u.H.8XI.H.8 $XoXa.M.! 9 y y s J v.W OXL OXe.vXn 2.s.sXGXcX,XI.8 3 ~ 3.kXV.rXV.H.u.r.u.k.kXt.k.kXt.kXt.k.k.kXtXt.k.k.u.k.k.kX*.r ~ ~XVXV.HXV.rXV ~XV.HXVXV.u.H.H.H.0XN @ 9 & H o vXL U $XDXI 3.Z.w.. M.j [Xl c.a 3.}.a 3 VXX., I h.MXJ .Y k WXq._ 1.a.` c xXeXqXp U.5XI : 1X,.M u.M h.- ._ Xp uXBXeXc UX,XlXlXcXl ` TXlXK :.M.u R.aXI t.aX-.a R R R.a R RXI.}XD.aX-.aX, t.ZXD RXDX1.aXIX-.`XV.K :XI.ZXI.a.a RXD 3 a.a R RXI 3X-X1X-X-XI.a.e 3.}X- R.a.~XDX,.~XDX-XIXIX,X1 3 3 3XV c c.u.KXDX1.aX1XIX,X- R RX- R RXD R R R R R RXDX- R.MXIX-XDXD RXD R.a.a R R R RXDXI.aXD a 3XD $.a.` RXV.u 3 :XIX1XD $XK x.aXD.eX5.ZXIXDX1 RX- RXDX, R R.aXD.aXD RX1.aXIXDXSXlXN.3 x RXI.a.aX,XI R $XDX1 R.a.aXD cXD.a RX, $.Z.MX,.DXl $Xl $.Z $XD h.9XpXqXqXp.pXr W.j n [ k.3 c 3.Z 3 x.iXJ k.]XlX1XI.`XI.`.8XVXV.`.`XIX-.9XqXq >Xr", +"Xl.a.aXD cXD cX,Xl.uX,X1 cXl.5 : ).K ).5XIXoXVXVXl )XJ ,.| D ( |.]X3Xl D T.H )XXXt.8 c R.a RXD.9.9 U t 3 c c.kX1X5X5.HX-X1 $ ` C.).sX=X6 JXf 0 M.'.' :XJXK T.] 1XK v =Xr.jXw y $.w.M nXG.<.j ` h.} 3.}.k 3 3XIXDXIXDX1XV.Z.9X>.@.. % %X4XA.v . p.... S.x.EX0Xc c.H.u 3XV ~.rXVX*Xk )XtX*XtX9XV.rXV.u.KX5XI.HXI.uX, kXHXUXwXw.iXDX- R.a RX-X-.aX- t R t.M.9XlXDXlX3.u c 3.r 3 ~ ~.rX*X9 NXxXx.K.rX*Xo.k NX9.kXd.K ~XV.uXVXI.HXIXI.8XIXD.DX,XPXw yXGX0XKX0.j &.j.s.Y.@.j.E.EX0.j s.>.ZX1 3XVXV.HX5XV.r.u.r.kXtX*.kX*.k.k.k.k.k.k.kXt.k.k.k.kXoX*Xt cXd.u.HXV ~.H.H.H ~.8.8.rXV.H.H.u.k.HXIX5 (Xy !Xm &.q.EXnXeX,.wX, R 3 RXe o 2 v.9.ZX1 3XI.a 3 V V 6.%XJ kXc |XH.,.[.[X2.[ :XlXIX,.i pXp 1X,XVXB 1Xp.9XM x E x.Y.YXw.S nXBXw.-XcXHXKXcXc.,.] $ `XJXcXI hX1.a R.M R.a.a.e.aXI R RXIX-.a.u.a RX,.MX,X,XDXD R R.aX1.a.aX-.KXl.HXIX-.a B.a RX,XI.aX-.aXDXIX-X1 RX1XI 3.a R aX-.a R.a RXIX,X- R R RXIX- RX1.~ 3 3 RXIXI cXl h.e.} 3 3X1XDX1.a RX1XDX, R R $XDXDX,.ZXl.ZXlXD 3XD R.a R.a R RX-XI R.a.a aXD.a R RX5X-.` 3XX ) :Xl.e 3.3XNX1XIXIX- aXIX1X-X-XIXI R.` 3 3 RXDXDX1.aXD.aXD.a :XN.O kXN $ RX-.aX1 3XDX, $ aX-X,.~ 3 R $X5X,XI.Z h xXl x $XD.w $.Z.a.M.MXeXqXp k W =.[X<.j.S gXcXJ 'XV.`.8.u hXI c c R 3.8 3.`.`XV 3.8XIXIX1XD $ X4._ . >", +"XlX5X5 cX, 3XD.a 3 TX,.u.5 ).8.8.` 3.5X*X*.u 3.H.5 ( TXd.H.`.H )XJ.5 : ' T.HX5X9XV 3X1 R RXeXq.YXp.MXIXc ).~X1XVXxXlX- 3.a U tXe.m.v ^.@.@ oXm.nX,.'.uXl : T 1.].- 1 MXHXH.YXJ h.YXc.9.[XH U.i 3 3.KXlXV.KXV 3XVXV.HXV.H c ` =XrX6.CX6X6.4 HX2X> 0 %.x.y.E.q.].HXIXV.8.8XV.u.r.X ).r.r.k N ~XtXV.u.k.2 DX5.5.K :XcX#XHXw [Xc $ R RX- RX-.a R t R R R R $ c.a.}XD 5 #.uXVXVXV.kX9 NXx.k.kXt.8 ~XtXtXkXxXxX9.k.5XoXVXx I.u c.8 :XV c.8 : g =XK.nXGXL =.T yX% [Xh._ [.O nXh &XUX0XK.]XDX1XV.H.H 3.k.r.uXtX*.kX*.k.k.k.k.k.k.k.k.k.kXt.k.k.k.^.k.k.kXd.k.k ~.r 3.r ~ 3 3XVXV.r.8 ~ ~ ~X5X5 DXyXU ! g & &.E vXGXlXGXD R.}.M.-.Y b JXCX5XDXIXI.8.}.8X3.,., .,.} $ 3X3 :XB kX+._.l : c.a.a E E xXp.M.a hXG.Y xXp XpXr XhXB x x.M xXD #.aXD R `.a R R RX1 3XDX, $ h R R R R aXD R a.`.a R RXDX,.aXDX- R $X,X,.a aX1 RX-XI.` R $.k.KX-XI R.a tXI.aX, B.aXI.aX- R RXI 3.}.aX- RXDX- R R.aX- RX,.a.a R R R RX1 3X,XIX1X1X-X-XIX5 $XMX1X-X,.aX-.a.aXI R k c sXcXDXJXcXKXc `Xc DX, RX, a R R.~.aX- RXI.e.a R R R RXDX1XI.u R 3.aXV.`X-XI.eXc KX,.aX-X1XDX- R.5 c R RX1XD RX,X,X1XI.aXIX1 RXD a.OXc aXD KXh c.a.aXD.a RXD 3XDXD.a.ZX,X, : cXl.ZXI.MXDX,XDX,X,.D h.ZX,X, < x xX+XGXe 1 1XK ' $XIXDX1.H.`.H.` R c cX1XIXIXI.8X1.8XVXI.H.r.8.8XI.a 1X+Xq._ .._", +" T 3X1X1X1X-XIXDX5XI.u.uXIXoX9X9.5.K 3.r 3 3.kXl.K.kX1XIX1Xo g (XM.u.u.ZX1.`X1.`X-XI.a.a.N xXGXGX,.a x )Xl.k.uXVXI 3.a.M <._ y.. vXn.j.jXL x UXD $XIXIXDX1X1XI.aXIX1X,X,X,.u 1.w.9 $.9 :.' x cX, 3 T D.H.u.HXVXV.HXV.r.H.u.Z =.T.T H z.;.TXrXh = J ^XiXf.;Xw m.K.8Xt.8 ~.r ~X* ).K ~.uXX )Xo ~.r c.K.K.].] ).]., D K.j.jXUXG t.a R RX-XI RX- R R tXD $.9XDXK mXJX5.K.H.H.kXkXxXoXt.X.kXx.k NXk.5.kXk.5Xo.k.kX9.uXI ( 5.2.| D.| q D.2Xc DX.Xc &XG s.9 oXG h vXB n : xXc hXKXwX..nX,X1.H 3.HXV 3Xo.H.rXV.rX*.kX*.k.kXt.k.kXtX*.kXd.kXtXt.k.k.K.k.kX*.k.uXtXV ~XV.r.r ~XV.HXVXV F 3XV.KXI (X$ !.' b.>X0XCXLXeXs.w 'XDXD.aXM y v 2 O T.HXIXIXI.`XM DXX .5 c.,.5 `XMXM.-XH.[Xq xXn.}.a.a.M $._., 1 $XD.a hXpXqXe ..FXnX4X+.Y 1 x.a.aX,X,X-.aX-XIX- RX1.aXVXDXIX, R.a.a R RX- R R R RX-XIXI.u 3 RX-.aXD h.Z 1 T cXDX,XI B RX1.u 3XlX- R.a.a aXD RX,X, R R R R.a a R RX-.a R.a R R R R RX-XD B.Z R R RX1.a RXD B.uXD 3 $ : TX..u.aXl hX-.u RXI a $Xc.ZXlXlXlX,XD.aXDX-.a R a RXl.%.3X-X- 1.Z.] h : $XlXl : :XD RXD R.uX1XI cX- h RXI R :XNXI.aX1 R.`XIXI :.8X5.u R.`XIXI.Z 3 RXlXlXl 1XlXJX. :.MX,X,XDXIXD.aXIX,.Z $X5X, $XD.aXI.a $ RXI.Z.ZX-XD.M $X,X,.D $ R RXeX,.iXnXcXe.}.MXVX1X1X1XI.8XI.`.8XI.8.8X1 3 cXI.8X1.8.H.HXVXV ~XVXV 3XI.a h.YXpXqXqXA", +"XD.a.a.a 1X-.DXc 1 RX,X1XlX5.K.5 3X* 3X*.u.K c.u.`.`XI.` :.5 $.8.~XIX1.HXIXI.`.`.K c t.ZXe v x U R #.ZX1XIX-X-.aX- a.M t.Y HXnXnXn y.j.jXcXc h VXlXV c :.Z.H 3 3X1 3 RXDX,.9XK.YXcX,X, 3XVXlXIXVXI.u.u.H.u.HX1.HXVXV.H.HXV cXc [Xp.@.E 0 o y XqXr.@X4XfX+Xw.].r.8XVXV ~ 3.r ).5 ~X*.rXt ~.8.K :X9XlXV ) : :X5XM 1.3 xX, 1.M.a.a.~.a R RX- R R R RXDXc.H 1 :.u.K c.kXVX9.5.u.r.kXxXo.rXkXxXx.XXx.k N.k.k.k.k.X.u.r.u c.5 c )X5XJ ) `.5.u T.'.O.O.9Xe v x v.9XL x.Z cX1.' DXJ.'X1XIXI.H.8XVXV.HX5 3 ~XV ~X*.uXt.k.kX*.k.kX*Xd.kX*XdX*.kXtX5.^.uXd.kXdX*XV.rXV ~ 3 ~.u.`.HXV F.u ~.H c.2 K @.q.'.9.> M.q b yXs C.W x.M.M XM UXpXr.h MX.X,.8.` 3 ~XVXV.r.K ).r.u ~XV ) ).u.kX9 )XJ.R.2.$ D 5 5 I.GXwXcXUX, RX-.aX-.~.a R R aXD a :.Z $Xc D.% c.KXoX9Xo.rXo.k.X.XXd.kXo.^.k.kXt.k.k.kXt.k.K.5XtXV.H.r.HXV.u.HX5 3 ~ 3.`.' T.O.OXm.'.! s vXaXL sX5Xd D.X.ZXI.`XI.HXI.HXVXV 3 ~.k.8.rXV ~XVXVX*XtXtXd.k c.kXdX*Xd.kXdX*.k.k.K.kX*X*XV.r ~ ~XV ~.r 3XV.rXVXV.H.H.8.8.|XJX.XO.'.q.+ & MX> b.9 v.Z.M 1 1.M.W.W 2XG.'.Z.HX-X*XX 5 kX3XJX, # :XD.uXD.5 1.-XH |X7 .[ E._.M $.} cXc EXe 1.Y.Y.9.YXp E UXq._ h $Xe.a R.` R.a.aX-XI 3XIXIX1XIX-XDX,X, c R.a.aXI.M R R.aXI R R.u 3 B.a RXD.a.Z hX,XI.a hX- RX1X1XIXI.uXlXl.u.9.,XK # T `Xc 1XD.a a R R a.a RX1XI.eX1XD.eXD.ZXcXlXD aXDXD.a R $XK.2XKX1X5X, R.H T.wXI R.a R 3.K $X1X-XD 3XD h $ c 3X,.a.a $ cX5 3X-XNXH.ZX,XJ $X,XD 3.a R RXIX, 3 RX-X1 RXDXI.Z.}.uXIX,XDXIX,XN 1.eXI.aXD.5 3 3.uXl `XV : : :XIXl TXc m m k m.9Xw : 1 $X,XlXDX1XDX, $X, RXDXD.Z R.aXD R cX-XD 3XD.ZXlX-XD 3.Z.H $X, tXD Xi.. ..pXe UXD.'XyXlX-.u.8XV.8XV.rXV ).k.8.r.r.kX9X9X*X5.k.u.r.u.uX5XV c cXlXHXJXw.M R R.aX-XI.aX- a.aX- R.D 1X, )X. ]XXXV (.k.k.u.kXx.r.k.kXt N.k.k.k.k.k.KXtXo.k.kXoXo.u.8X* 3 3.u.8.u.8XVXVXIXI.u $Xl.w s.' y sXL.'.'.0 ( (.H.`XI 3.H 3XV ~XV.r.rXV ~.K 3XV.r 3 ~.rXV.rX* c.k.k.k.k.u.k c.kXtX*.k.k.uXtXV ~ ~ 3 ~XVXVXV.8 ~ 3XV.HX1.5XoX5 4XyXwXP y.> HX0 0 bXLXL sXD.MXw.>.YXsXs 9.E 'XV.8 3 ) 5 V.G kXcX. m 5X1X. ).,.% | |X#., [X+.F U.i.aX-XIX,XcXq p hXe._ E._ tX,.M <.aX, 3.e.aX-X-XI R.aX1 RXDX1 R RX-XIX-X,.a R.a.a.a.aX- RX1XI RXD 3 R.aX-XD RXDXDXl aX-X, R RX-.aX1.a.` #X3 `.a aXI.a R.eX- xX-.a.a.a.aXD a RX-.a R.aXI xXJXKX5X1 tXD cXlXl T.2 $X1 RXDX- R '.G.3X. tX-X1 R.aX1 # : $ c.Z.aXI R.MXD.aX,XD.a.a $X,.a.,XNXNXcXI 3 RXD R R.aX-.a.a.uX, R.aXDXD cX5 cXIX, R 3XD :.GXc.ZXDX-X1 c R R 3X1X,X3Xl `Xl.9 $XV 1XD $ ` $XlXc :XcXKXJ k.ZX,X,XD.eXDXDX1 RX,XDXIXD h : 1 $.Z.Z.9XJ T.9X1XDX, $XIXD <.a E.FX+Xp < 3 3.`.8.` ~.}.`.aXI.}X-.8X- 3.` 3.H.k.uXVXV ~ 3 ~.r 3 ~ ~.8X- 3 $.Y x._", +" %.......X4X6.JX> >Xn . >.- h.}XV.8XV.u 3XM E.j .Xi %Xp.<.M cXD gXd.u.} 3.r 3.HXV.r ) ~XtXt.k.XX9 N.k.k.k.K.kXV.kXd.kXV.H 3 T Y.9 tX1 t a RX-X-.aX- R.a 1Xl.Z $ m.% (XI q.5X*.r.X ).5.k.k.kXtX*.k.k.k.k.k.kX*.k.KXtX9.KXt.HXV ~.HXVXVXVXV.8XV.8XI.8 3XIXDX1Xl.'.0XK.0.'XV.8.`XV.8.H.8XV.8XV ~XV.8XV ~XV.K ~XVXV ~XVXV ~XV.rX*.kX*.k.kXd.k.kX*.rXV.r.r.H ~XVXV ~XV ~.H 3 ~XVXVXV.H.HX5 (.|.2X$.GXy b &.q 9 y b.w.wX, tX,.MXG v.= 2 v.'.Z R 3.5XX., V ) | ) ` :XcXJ IXl.| 'XVX3 | D k.[.pX4._ x.a 3 : h xXeXe p._Xe h U.a $.a 3XI.~X- c.ZXIXI R.a.a RX-X-XIXDX- R.~.aX-XD R R R R.a.aX1.a RX-XDX- 3X,X1 RX-XDXD.Z 1 D h.u.aX- RX1 BX-X-.aXI.K ` :X1 RXDXI.a 3XD.a RXD R $ xXD RXDX1 3.] $Xc c R RXlXD `XcXc.ZXIXD 3XIXI 3.a.3XHXD $ R RXDX-X- R RX5 cXD RX1.a R.aXI R.a.a.aX1XDXDX5Xl $.,XNXD.ZX-.aX- RX-XIX-XDXc.9 T :XUXc T.,Xw :X-.uXDXD h R R RX, c $ :.Z.u cX,.uX1X, c $XlX-XD R $ R.u $ a.a.a.Z $.Z $ hXIX,X,X,XDXDXI 8XDXDX,X5XlXl $Xc m kXcXJ.,.9 3X-.D.uX, t.} RX,._ >Xr.}.M RXIX-.8.`XIXIXIXI.`.`.`.H.`.8.`XIXI.kX5.8.8.u.8.8.rXV ~.r.HX-.a 1 ._", +" % * pXp p pXpXsXe.WXpXe v vXp vXn xXGXG sXr v n.-Xp 1.YX+.[.YX+.Y t.M.a t $Xc.MX,Xe.Y oXeXD RX,XI `X-.Z $.9._Xw W z.jXr yXD hX1 3XI.H BXdX1XI.`.}XI.8X*.HXV.H.8 3.8 ~ ~ 3 cXV.`.`XDXcXKXD.M x.< { {XbXAXf.Xc h 3 3XV.` # c.a s o.XfX> 1 3.HXdXd.r 3 3XV 3.r.8.r.KXt.k.k NXxXxXo.^.k.k.r.K cXd.u.kX* 3 3 cX..MXD aXDX- R R aX-.aXI.e aX5X5 4.% :XVX9 ).r.X ) NXt ~X*.k.k.K.k.K.k.k.k.k.k.kX*.kX*X9.u.rXt.8.u 3.u.8.H.8XV.r.uXVXV 3.8 3.HXIXl.`XVXV.8XI.HXV.H.8.u.u.8.u ~XVXV.H.rXVXV.k 3.H ~ 3.H.r 3 ~XV.r.uXdX*.u.r.u.rXV.H ~XVXV ~ 3.8.H ~XV ~XV.H ~XV.~ 3.HX5Xx (.2 ] ! @XLXm.+.E J O vXG y $ $.9.ZXe o.EXL y.a.D 3 c :.f.$X3XM ` RX- x.5XX.KXdXVX9 3 a c q }X3 k.pXqXpXMX-XI.8 $ a < u < U.a <.a.a.u.uX-XDXI.~XIX,X,.a R RX-.a RXVX,X-X1 R.a.a.a a.a R.a.a.a R.aXI $XVXD R RX, RXD RXDX1 1 m cX-X1 RXI R R.aXIX-X-X-X1 cX3 3X-XIX-X-X5XcXNXl 3 :XN $.a D :XK TXDXDXIX,X3XcXKXc h.uX-X,X- R 3XI.aXI 1XNXNX. 3 R.aX-X1 RX1 3X. $X5 $XKXl TXK.MXD.a.a.a 3X, 3XN.,.]XH aXD.Z.eXIX,.}XD.a.e.Z $ $.a.ZX, 3XIXI $X5XD $X5 $ $.ZX,XD R c.DXIXD RX1X,XD.aXI.a RXDXDXDXI hXDXl $X,XDX, 3X,XD RX5 3X5XlXJXcXc DXc.ZX,Xl ` D :.Z.ZX, T.M.aXD cX,X1 $XDXI.M < U._.iXrXcXIXD.HXVXl c 3 3XI.8X1.H.`.8.`XIXI.8.8XI.r c.u.8XV.r.8XV ~.8XVXI.aX,.Y 1", +"Xe.)XG.).M U.M.MX,.Z C t.M.M C.M._.1Xe E vXr v vXp yX+.pXp.EX+.E.-.W.WX, $ $.} U x.jXGXs t R # ` :XI c h < RXe 2...@.jXG U.a :.K cXD.K.k.r.H.rX5.H.HXV.HXV ~ 3 3.r 3.rXV.`.8X1.}XI 3.5X1X, U EX>.. ....s.sXiXiXAXfXr.9XIXI ~ 3.K.8.uXDXD.DXq.9XmXM.rXVXdX1 FXV 3XV ~XVXV.K.r N.k.k NXk.z N.^.k.k NXd.kXd.5.u.k.uXI cXHX5X1.M.eX-.aX-.a.a a t.a TX,.3.5.u.HX9.5.X.k.XXk.KX*.K.k.k.u.kX*.kX*.k.k.k.K.k.k.k.kX9.r 3.H.u ~.H.8 3X*.HXV.H ~.8.u ~XVXV 3XV cXI.u ~XVXV.H.u.HXVXI 3XV.8 3XV.H.HXVXVXV $XVXV 3 ~XV 3 ~XV.r.HXV.r.H.r.u.rXV ~.H.8XV.r 3.r.H 3.HXV 3.H.H.HX1XV.H )XJ.2.2.2.0 g.0 s.9X0.q J OXe.M 1 R.wXH.9XnXs o y vXD.uXI 3 DX3XMX3XM.}X, hXI.`XX ).$ ~X*XX )X*X* |XJ.-.pXq.m h.a.aX-XX cXI.a.}X-.e.aX-.} RXl RX- a RX1 R.a 3X, 3X1XDX-XDXI BXI.a.e BXI.} R.a R.a RX-.aXIX,.e.aXI.a $ c.wXl $ $XI 3XD.a R R R a R RX-.a.a.` 3X-.uXl cXIX1X- 3 3XNXlX1XDXNXlX-XI., c.a R a R.eXK : cXDXIXD 1.~XIX-.aX-.aX-.ZX5 mXNX..e R.a R RX1 BXK.%XJ TXc : $ $XD h RXD R.aX-X,XcX.XHX5 hXDXl x cXDXI $X, 3XIX,X,X,X,.Z.Z h 3 3 hXI RXV $ 1XlXl $.wXc RXIX,XDX-X, $ R.aXD.a aXI RXD.Z.ZXD cX5XDXD $ R.a.aX,.a T 1XJXcXcXcXlX5X,XDXDXD x RXD RXDXD RXD B 3 c 3 3.a.a.a.}Xp E [ vXc.uXl.0Xx TXlXD.8.r.r F.H.`XI.8.H.8 3.`.`.kX*.HXVXV.8.r.H.H c.5Xl h.j ", +".)XnXe UX, RX5 $X, R R.a.a RXD.M hXS.Y u U.) UXeXpX+.YXLXe.s.s.s.E.Y.YXw.[Xq 1Xq.Y &Xe.s $.w.9 :.M U t h x._.@.@XC.j...MX,X1.X : 3XI.k ) F.`.5.uXx.`.HXx.K.8 3 #X9.u.8.u cX*.a 3X1.u.8 3.a.MXpX4.....).sXnX4 v 0 O.@.j.M 3.aX*XVXt ~.HXV 3 3.MXl c DXd.r.H.u 3XVXV.H.HXt ).k.k.k.kXj.k.^.kXt NXt.k.^.k.k.k.k.k.rXVXDX.X..Y.a t.a RX- R R R R.a : c : '.HX9Xo )XoXkX9.k.k.k.kX*.k.K c.k.k.K.kX*.k.k.k.k.K.^.k 3.r.rXI.r 3.rXV.H 3.H ~XV ~.u ~ 3XV ~ c.u.rXV.H.H.HXV.8XVXVX*XV 3XV.H.rXI.HXVXVXV.kXVXVXVXV.HXI ~.uX*XV.8 3.H.H.u.H.H ~ 3.rXV.u.H.8XV.H.H.H.H.H.HXIXIX5Xl.2 ] m.2.> @ g.w s &.>XC 0XL.sX,XDXDXJ =.wXL.EXG 9.aX1 3XV 3 VX3XMXM 3.a.u.}.8.aXVXXX9.8.`X9.K.f q 5X3.gXB._XeX, <.8.`.5X5.5.8.~.aXI RX-X-X, h.aXI R.a R R R R.aXDX,X5XD R c R a R R 3 $ c c.aX- R 3.uXDXI.a.ZXIX-X1.,XN.3 K.G 3XD c c R.a RX-X1XD 3.eXIX-X- R.`X- 3 c.5 3.`X1XMXNXJ.u $XN DXJXcX5 c $.uXl.KXH $ 3 cX, 3 3 3XIX-X-X-X-XI a D kXD D k R 3X, 3 RXIX, cXlXK.ZXl.' :.'.Z $ R.a.aX-XDXDX-XIXD.Z cX,.uXlX, cX, 3 c x 3 R.M R B R R R RXDXI cXD.eXK.9XK T TXlXlXlXDX1 $X,X,X,XD RXD RXD.aX, RX,X,.ZX,.ZXlXD $ RXDXD $ RX1.ZXD.Z.Z.eX1 8X-XDX,.Z $.Z R 8XDX1XD RXIX1XD $XI.a.a.aX,._ v [ R.0.] g ).Z 3.H ~.H.H.r.H.8.uXV.8.8XV.8XV 3X-.u.K.HX* :X9XX.$.] `.3 :.,.Z", +"XrXG UX, h c.} R R.M <.M.aXDX1.~.% m.O t._.M h ` x.KX5 cXD B.M tXD xXhXc.WXG.jXnXp v._.9XrX.Xc.YXG.@ v._.s %.s vX+.W R.M.a.aXV.HXIXI `X5.8.8.5.K.uXVXVX9X5.8XV.5 #X*.8.u ).K 3.`.HXdX1X1X, >Xp 0.m.s h < h.M.N.s O o y.WXDXI.u ~ 3.r ~XV 3 3 cXD.5.2.H.H ~XV.rXV.r.H.r ) ).k.k.K.^.k.K.k.k.^Xt.k.k.k.kXd.kX5Xo.uXI c DXH.9XD.M R RX- < R < t.}.u R ~.k.kX9.r qXX.k.k.k.k.k.k.k.k c.k.k.k.k.k.k.k.kX*.k.kXo.K.r.uXt.8Xo.kXVXV ~.H.rXVXVXV ~XVXV ~XVX*Xd.HXV.rXV.r.uXd.u.k c.r 3 ~XVXV ).5X5.HXV :.HXVXI.8XI.uXI., ) ` DXK.$ $.$ ) 3XV.8XV.H.uXV.8XV 3.rXV.8.8.8.HXo ].|.2 mXw g !X.XPX,XP g &.q J.s.W U 3 R.ZXs.s.W b.9XDXIXD 3 3.} c., :.K 3 3.KXI c ~XVX9.8.`.8X-.KXx V., |XpX+XqXeXMX-XI ~XX.k.KXV.~.`.a.~.a R.u.aX, a.a R R R R R R.a R., :X5.- :XK :.'XJXcX.XKXJX, hXI.a.} 3X1 3X,X1X-X5XNX, $XN.ZXD hXl hXD aXD.a R 3 R.aX1X-.` R.a.`XIXVXM.K `XVXN.2X, cXNXJ 3 c $.a 3X1X- R 3.5X, RX-X-.a R.u R.a.`X-.}.~XX 7 KXHXD.a R.9XK.9XK.9XcXw TX.Xw TXlXKX1XD $.Z $ c h $X,X,.Z.aXD.a.a.aX, R RXI.a RXI.uX1 RX-.a RX-.aXI.a.a 3X, RXl 3 $ RX,.uXDXl R 3X,X,X,X,X-X1.aX1.MXDX,.aX,.ZX, $ $Xl R $ RXDX5XD.aXDXDXV $XDXD.a R.MXDXl.ZX5.`X1XDX1XDXIX-X1.aX-.a.a a.}X,XqXqXK.MXDX,X5.`.`.H.H.H.H F ~XV ~.8XV ~ 3 3 3.8.K.5 ) :.|.|.5.] 5 D qXl c.5XD 3", +"Xn.M h.}X- R RX1.a.M.a.a.a R.D TX$.GXNXl.M $Xw x c cXoX5.K : $ c.aX-.SXN $.NXhXpXe E.W.W.YXG.Z.MXeXq p % ... ..jXG $ $X, h 3XV.H.8XV.u.8.`.`XI.` 3.HXIXV.`XV.8 #.uXIX-.k c cX1.HXd B.HXlXpXr . % v U <.a :Xl.M.w.s.vXp.pXc.- :.` 3.H 3.rXV 3XI.u.DX5.8X* 3XV ~.8.H.u.k )X9.k.k.kX*.k.k.^.k.K.k.k.k.k.k.^.5.k.K.k.u.u :.%XJ $ a.} R.a t < t.aX,X-X5 5.kXx.rXV.5.5.k.k.k.u.k.k.k.k.k.k.k.k.k.k.k.k.kXd.^.HXx.k ~.H.rX*X9Xx.H ~ c ~ 3XV.H ~ 3 ~.HXV ~X5XV.rXVXt.u.k.k.u.k.kXt.uXV ~XV ~ :.K.$ D 5 DXJ 5 ) D I ,.% :XlXJ $ `X3.Z : ) c ~ 3.8.uXV.8XVXV.HXV.H.HXV.r ( ] ] ! m !.! sXGXc s.ZXK 9XO & o.B 2.M RX1XD C.N._Xn ' R.`.8 3 c.a $ V ` :.KX-.KXxXM.rXX.rX9XX 3.8.rXX V.[.SXq $ hX-.a.K.`.K.uXV cXI.`X1XIX- R 3XI 3XI R R.aX- RX1.aX-.aXKXcXJ m $ :XcXlX5 :XK $ $X-.a RX- R.aXI R.~ RX1 $XNXJX.X..MXD :.- $X,XD.aX-.a.aX-X1.~.a RX-.~.aX-.a 3.a.uXl Y 6 3X,X$XJX-X-.a.uX- RXIX1X1 R 3 cXlX,XIX-XI.~X-.a.`X-XIX-X- RX-XIX1.M $Xl x h $XlX,Xl 1XlXlXDX,X,XDXDXD R.aX- RXI.a.aXI RX-XDX-X- c a RX-.a 3 RX, $.u RXI R.` aX- R.aXIX, aXIXD.u `XD 3.a :XIX,.ZX,X,Xl.ZX, cXlXlX5 n $Xc h $ $.Z xXD R.a x.ZXD RXDX,XD.ZX1.a.a R UX,X,.D.ZX,.u.D $X,.ZX,.aXI.a.a.a.MX, 1._.- UXDXIXIX5.H.` ~.r.`.u.H.8 ~XV ~XV ~ 3 ~XV )XJ IXJ.2 D.5 'Xt 3XV 3XV.8 3.H", +"Xs U t.a 3 $.ZX,X,X, 3.} RXIX, ` : x.3.1.Y xXD 8 RX1.`.8XIX- 3XI.aXD.% tXh K.hXs u.a U U.M.a < R R C *XbXb . y.9XN :XI 3.H.`.8 3X1XV.`X1.8.8 3XV.K c.H 3XVXIX* 3 #.uX5XdXV c 3.5 cXo.uX,X+.x.@ O.M.M R RXI.u.M t u...s.sXr $XD 3 : :.`.`XV 3XV 3XoXV.HXV.8.uXV.r ~.kXxXx.k.k.k.k.k N.k.k.k.k.k.k.k.k.k.kXx ).&.% 5.| k I.3 Y mX. Y.3 KXw h .q w 0Xa.'XUXD.M.w o v.9XIXVX-X- VX3Xl V.%XMXX.kXX ).5.uXXX* 3.$.KXXX3 # [.-.9 `X,X, 3.5XVX1X1X-X-XIX* 3X5.e RXIXDXl RXIX,X-XI R R.a.e RXDX-.a.a BX-X,XI.eX- R.aX-X,X1 RX-X- R.aX-X-XI RXI.a 3XNXl $XNXJ a.aXDX,.u c.a RX1 R RXI.a.~.aXDXI.aX-X- RX-X-.a.~XKXDX-X- t a 3 a.ZXD 3XD 3X,XI.u 3.u.} 3X5 ` cXDX1Xl c 3XIX- aX-.a a R R.MX-.a R R a R.aX,XIXD $X,X1 RX1.aXDXD.a RX- R aX-XD a RXI.e 3.M c 3XD.Z c RX1XDXDX-.aXI.aXI R R R.u.a c $ 3.aX1.M RXD $XlXD.-.9XlXVX,.ZX,X5.aX1X,.Z.a.Z h.Z $.ZXD.ZX, xX1XDXD c.9Xl :Xl g xXJXK k D TXD RX1 RX,.aXD x.a.a RX,.M._ .X7 x.a.}.8.`.u.`XI 3XV.8.u ~ ~ ~.8.8.8.8.8 3 3.rXVXIXV.Z.5 ( TXJ ) I I.] 5Xc", +".M.M.aX, c.a RXD.a R RX- aXIX1.aX, h.MX, 1Xe.*.M R RX-.e R 3 3.a 3.$XS :.'XSXH R <.MXD.aX- RXIXDX,XD.W.sXn H x.SXw YX-X1.`.`XI.` 3 3XI.8 R 3 3XVXDX$ Y.3 )XIXI.`X- B.8X1XD.HX3.K qXX s U.j HXpXn : '.D.DX,.u.i h U.m.. vXr.M.a c `.D.H.`.8XVX- TXx.8.rXVXI 3 3.H.u.5.R.k.k.kXo.k.k.kXt.k.k.kXo.k.k.k.^.k.k.k.kXoX9.kXV c IXH.2.%.,X. nXK $.MXD `.u ).kXxXgXx.k.kX*Xd.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.uXtXt.k.r.k ).8XV.HXV ~ ~.k.H ~ 3XVXV.r.uXt c.kX9X*.k.k.uXd c.k.k.kXd.k c.rXV.8.u.H.u ~XI.k.u 3XV.8 3.8XlXI c.u 3.Z 3.Z.H.H FXI.HX1.H.` 3.8X1.`XI.H.8XV.u.r ]Xy ]Xy gXU = [.Z $.u.9.Z y.n.qX0.q 0 vXa R RXs.WXe.E.ZXI.~ 3XI : :X3 ,X# } IXM `.$XX.K ) I., 5XXXX.[.,XJ .9 1.uXV 3.u.k 3 R h c 3Xl ) :.KXIX-.~X,X-X- 3 R.aX- R R.aX-X- R aX1 3 h cX, 3 hXIXIX,XD.a R R R.aX1.aXI a RX- R :X$X.X, `.%.YX1XIXD x.MX,X,.aX- R RX1.a.a.a R.aXD 3XI hX,X,.uX3X5 cX, c 3XD 3 cXIX-XDX1.aX- R.a aX- RX- R :XIXI.K.uXl :X1 c R.eXI a.a a R R R R.a.a R B h RX1 c $XI R.aX-XI.aXI.aXI RX- R.aXD aX5.M.uX,X-XIX- R cX1XI cX-XI.e RXDXDXDX1 RXD :.u.Z RXDX-XD RX,X,X5Xl.Z : $ x :X, RX,.M.wXe.Z t.9 $Xl.wXD.Z.ZX5XDXD.D : T :.' 1 :.ZX,XDXD.aX,X,.M.M RXDX,.M.a $X,X,XJ U._XqX+XM.aX- 3.8 3.u.` 3 ~ 3.8 ~ ~XV ~XV ~XV ~XV ~ 3XIXV 3.k.2 IXJ 5 (.0X9 :XV.k", +".a.aXDX, RXD R RX1X1 RX-.8.a aXD h.M hXG E t.M C R R.MXIXI.aXI 3 3XJ.,Xl :XKXw B.a $ R.aX, ' 3 3.HXD.sX>Xp.EXwXSX#XSX, 3XI.HXIXI.uXIXI.}.`.8XIXI.` 6 :.DXN.5 3.aXI 3XI.`.kX5 3 3 3X,X, oX4X>.j v.aX-.`X1X1 x c U.iXp.;X0X>.Z c.u.Z $.u c c $XK.2XK.8XV 3 3 3.u.H.kX9 )Xd.k.kXt.k.k.k.k.^.k.k.kXt.^Xt.k.kXt.K.kX9X5.kXlXVX5.uXIX, : 4X. m.9 : T $ ( ~ NXkX5X9.kX*.kX*XdX*.k.k.k.k.k.kX*.k.k.k.k.kX*.k.uX*X*.5.rX9.u.r.H.r.uXV.H.rXV.r.r.uX*.k.k.k.kX9.r.k.kX*.k.kXd c.k.k.u.r.r.H.u ~.8XVXV.HX5.8.u.` 3.H.u.8XIXV 3XVX,.HX,XV.HXVXV.`.`.8XIXVX1.8XI.8XIXV.8XVX9.2 ]Xy !XOXU s x x h.ZXK :XG g.jX0.E 0 2.N T.a x.W.=.n.9 UXIX1XI 3X,XI D.,.%.%.% } I D.KXXXX ) DXXX3.gXpX+ yXpXc `.u ~XV 3X5.u.a a.a 3.uXD B $X1X1 3 : 3 3XD a R R RX- R.aX-XI hX1.aX-XI.a.~ R.} R 3X, RX- RX-X-X-X-XI 3.ZXI $XD cXDXI RX-.} TXcXl.w $ $ $Xl cX,X,X,X, 3XDXDXD.M.aX-XDX-.aX5 hX1X- aXI a.a.a 3XI aX- R.aX- t RX- <.a.aXDXl $Xl #.Z.5XI 3.~ 3 RX-X-XI RX- R.aXI aX1XI B.u.a.eXI ` 3X1.aXD R.a R.aX,X,XDXD 3.Z R 3.Z :.~XI RX1.uXD c 3 :.aXl $X,XcXc ` D DXH mXI cXIX,.e.M RX,.a U RXDX, $ RXl.M.MX, $X,X,XD.ZXG c xXD R h.Z $ RXD $.ZXI R.*X,XDXD.MXD.M R hX, R.M.aXD R $XK $.SXD x...FX+XeXI.8X-.8.a 3 c.a 3 ~.`.8.`.8XV.8.r.8.H.8.H ~XV ~XV.k.u.5.kXl.kXI.H.8XVXV", +" 3 3 c.a.M RX, 8 R R.`X-X- aXD h.M.MXn.w u.M R < R.a aXD 3X-.`XV RXl c ' : T $X1XD R.a.e c 3 RX-.~ R u p %X8.LXc.YXN.5X1XIX-.a c 3.aXI.`.}XIXIXIXI K : 3XH I.~ 3XIX1X1Xd.D.uXIXDXDXeXpXp J.sXSXw.H `XlXIXDXD t U p p...EXpX1X- ~XIX1.`.HX, s.E.9XJ.uXVXI 3X,XdX5.XX@XxXxXx.X.XXxX9.X.X.5Xo.^.X N.5.^Xo.^Xo.^XtXx.k.k cXd.u.u 3XIXV $.3XcX.XJX.X9XoXo ).^ N.X.rXo.k.k.k.k.k.k.kX*.k.k.k.k.k.k.kX*.rXV ~Xx ) F ) ~.H ~XV.k.k.k.rX*.kXtX*.k.k.k.kX*.K NX*.k.k.k.k.k.k.uXd.kXtXV ~XV.HXV.u.u.8XV.KXV.8 3.H.k.5.uXVXVX5XD 3 3XV.uXo.`X1.8X5XIX1.H.`XIXI.8XI.H.H.u.kXy ] g gXK.' $XDX,.Z TXGXO.9Xw.qXC.WXa CX,.' tXsXsXLXG.ZX,.DXJ )XV.uX3 I., V VX. | VXH }XJ I.,XJXc.- 1X+ .wXc xXM.uX*XI.K.u c.aX-X1X-X-.` 3X5X,.~XI 3 RXD aX-X- R.a a R 3X,.a.a R.a R R.}XD.a cXD.ZXD 3X,X,X,.u.ZXlX, 3.u h.u.Z.5X,XD.uX-.9XcXD $X,X,X5 h.} cX,.a t.a.a R t R.a.a.a RXD $.a 3.a R.aX-X- tX- 3 hXI R aX-.a x xXl.u.Z cXK.KXlX5.KX* R.8X-.e.` R RX- aX, 3 :Xl.Z 3 $ c $ cXl 1.]Xl 1X-X1.aXIX, $X-XDX, 3 R RX, RX-XIXI RX-X1.~XK `.K D mXJX- c.' TXc :Xl T hXIX,X, RXDX, a.MXDXD.aXD.Z RXD.'XD.a.Z $.MXDXDX,X,.wX, x.ZXDXDXlXl.DXDXI $XDXD.ZX,X, R.M <.M.a xXD.M.a.a.Y.ZXw.Z sX,.MXnX4.- h.aXI.8.8.8XI.} cXI.8.`.8 ~.`.8.8.8XV.r.H ~ ~ ~.H.8.8.r 3XV.8.k #.r 3XV ~", +"., TX-.a R t.M R RX1X1XI.a 3 1 x.d.s._.M t t.a < a h $.aX-XIX-XI :XD :X. :.Z.`X1X5XI.H cXIX- RXIXI R.M UXf.J 0.j.w.] T 3XI.a 3 3 RXIXI.`XIXIX- 3 3X$XVX- K.K 3 R.a.a.8XVXVXVX1XGXKXp.@Xn %Xr =XZX- 3XIX, h t.)Xe..Xn HX+.Z.M 3.`.8 ~ c 3Xe.j H.@Xc.M.}XIXIX1.H.HXd (.r.k.k N.k.k.^ N N.^ N N N.X NX9.X.XXx.5Xx )XxXxXxXX.XX9.5.k.u.5.%XH Y.3 5Xl.5Xx ).^XxXoX5.kX5.^.k.k.k.k.kXt.kXt.kXt.k.kXtXtXV.8XVX9 5X5.8 ~Xt ~X*.k.u.k.k.k.k.k.kXt.k.k.kXt NXo.k.k.k.k.kXt.k.k.k.uXV.r.H ~XI.r.5.5 c.8.KXIXVXVXVX9XJ I ( mXJ I.] D.2.u (XxXI : ).8.H 3X1XI.`.`.`XV.H.8X5X@XOXPXOXO.'.w.-XJ.wXw !XPXK sXmXw 9.EXs C.a.MXDXLXs.sXUXG 1X1 :.2 fX..% } Y , } V `X3 }XS 5XM 3X1X, R.M .Y X7 1.iX. m., :X-X. '.5.,Xl T T T m.3X3 T.$ T IXl hXD 3X,X5Xl cX, 3 3X, 3X, 3XDXIXIXDXDXD c RX1.a R R 3X-X1 aX1X-X-X-X-.K R RX-.a RX, $.9.'XcXl :Xc : ` c R R R.a R R.a B.a.a #X-.}X-.aX- R.`XIX-X- RXI 3.}.a.e.M 1 T x D.,X5 `XJXJX- 3 `XV R 3XI.~ 3 3 cXIXIXl : m `XJXJ.,.2 ` TXKXV $ 'XM.DX5X,X1.ZXlXlX5Xl :XJXD R R.Z RX1XDX-X3 ) m 3 #.uXD aXD RX1XV c.u RXD.a xX,.M R.MXD.a RXDX, 3X,X, 1.MX, x.ZXD.Z U RXD.ZXlXD.ZXDXD.wXJ 1 R RXD $ RXD.M.MX, R.a tXlXKXcXc ` sXJ hX, R 8XDXeXGXqX+Xl R.H # )XI.`.` c.u.`.H.`.8X-.` ~.` ~.H.H ~XV.r.rXV.r.8 ~.r.r 3 NX* ~ 3 ~", +" `XKXK n XK $X-.aXIX-X-X1 U :Xn.jXrXc.M R.a < cXKXX h.a RX-.` RX- $XJ ' BXIX1 T.k 3.H.8X-.` RX-X-.aXD E.. %.P o 8X-XIX-XI.}.uXIXIXI.` 3.`.8XIX1 :XN I m.].H RXI.8.a.8.8X*X1 : TXn .Xb...sXS.-XN $.a.a t.a u.W....Xf.x M.Z 3.`.8 3 3 R 1.@.@.C ^Xr.a.}.8XIX1.H.HXxXx.k.k.k.X.KXx NXk.zX9.zXx.kX9.^Xk.X.k.X.^XkX9.kX*.k.k.kX*.k.rXV.u.K.5 I.] )X9 5.XXoXx.z.5.XX9X9.XX9X9.XX9X9XxXxX9XxX9X9Xx.5.5Xo.5.5.5.5Xt.K.K.uXoXoXo NXo.KXo.KXo.K.^.K.K.^XoX9XoXo.k.k.kXo.k.k.K.k.u.rXV.rXV.k.KX* qXV.rX5.H.HXV.8X9 :.5.].K :.] :X5XxXDXoX9XV IXlX1XI.H.`X1X1.HXI.`.rXVXV.2.2XyXO.' x 1.jXw.OX;.GX; @.O.qX0 o v.' U.MXDXDXsXGXm v xXl.0Xl.2.%XxX5X3 ) k.%., |., k ` h c $X5Xl.wXl h.iX%X7.T.SXHXH mXJ.u.0.] DXJ m.0XcXKXJ m.2X# DXM.%XI RX-X-XI 3X-X- RX- RX- RX- RX- R.aX- R a $X- RX1XI.aX1 3 R RX-XI RX1 3XXX-.`X1X-X1XDX,.Z RXcXcXJ 1 cXK hX-.a.a R R.aX- RXI a.5X- 3.5 RX1 R.~X-XIX-X-X- RXDXI.aX- x c.9XlXlX,X5XK 3.`XIX-Xl.5 3XI.uX1XIX- R R 3X,.u.aXIXIX1XIX5XIXIXI a c ` :XJXJ.2.,.2XJ kXlXK :X,.MX1XIX,.` RXIXIXMXX.5 #XIXI R RXDXD $X,.a RXD.aXDXl.aXD.a.aXD.M h xX1 $.aXl : x 1 1 1Xl.'XcXc.w x $XD.ZX, $ TXJ.2 $XcXl 1.ZXl c sXl s a.9XJ x.3.9 :.W $.wX, UXD xXn vXK UX, ` cX3X- 3XI.`XV c.8X1.8XIXV `.8XI.8.r.H ~.8.r.8.r.r ~ 3 ~ 3 ~.K.k ~ N", +".5.ZXI $.wXq h.aXIXI.~XIX,.9.w EXwXLXn.M.aX- R 3.a.a aXI a R 3XV : 1 : 3 RXVX5.5X-.uXXX-.`.aX-.aX1 c < C..XbXnXGXDX1 3.8X- c.H FX1.8XI.` 3.` 3.8.HXI.D.`XI.`XIX1 3.`XI.u ~.` c.- JXbXi p WXB.w YXcX-.M.a <.N...s.4.; M.p.YXD.HX1XI.} $Xw.J.@X6 w M.iX-.}XI.` F.H.z.k.^ NXt.XXg.$Xg q qXk./Xg N.f.^XkXk q N.$.$.RXo.^.k.k.k.k.k.kX*.rXMXkXX.KX*Xx ).K.^.k N.k.kXd.k.kX*XtXt.uXt.k.u.kXt.k.kX*Xt ~X9XX.kX*.r.uXVXtX*.k.KXo.KXoXo.^XoXoXoXo NXo.5.5.zXo.5.5.X.X.5.5.X.kXo.k.k.K.5.5XxX9.5.5.k.KX9.K.KX5.KX5Xo.K c.K c $.u.Z.u.u.k.u.k '.5.u c $.u.u.u.u c.uX5.k cXx 4X;Xy y g.YX.XcXy ! 4.O K K.GX0XmXL.9 h $ xX,.MXa.w.W.w xXc :.HX5 cXo.u 3.u 3 V #.}.M.}.Z x $XDXI.H.a .Y.FXB.p.j.Y 1 $ $X1XD BXDXD.aXD RX1X1XI R cX-Xl., c.M 3.Z 3 RX1 RX-X-.a R R R R a R.M R R RX,XDXDX,XIXD 3 RX,XI t.aX- R.K c R R R RX,Xl 8Xl 3.MXD.MXI aX- 3.uXD R RX1X1 R RX1X- cX,.aXX 3 cXVXI R.`X1X- RX-XI a.a.a.a.} R.~.aX-.a cX1 RX-X-X-XI cXI.`X-X-X1X-X- R R.` R RX- R R 3X-X1XD.u RXD T 3.uX,X,XD 3 R.ZX, $.Z.u.a RXIXDX1.aX1.u : 3 : 3XI RXDXIX5.uXI.aX-XD RXD.} x.a.a R $X,X. T.9.,XcXKXJ.'XK.9XKXcXK.- x $.ZXl UX1XDX, R x D.9Xc 'XJXl.9.9XKXK 1.Z 1 $XlXl TXlXl x.ZX,X, x.[.YX0XH.Y x.M $ c cXIXIXI R cX, RX1XI.8 c D.H 3.8XV ~ ~.8.r.8 N.rXx N ~ ).r.K NX9", +"XJ.0 x xXe.} a.a.} 3 $ hX,.MX+ yX+.M.-XDXD.aX-X-XIXD cX-X1 3X5 3 $Xc.}X-XDXI.8X-.u.5X*.KXX aXI 3.u BXD._ p...EXe RXD.8 RXVXVXI.`.HX1.8.KXX ~XI.` 3.kXI.8 $.H 3.`.` 3.`.u.` 3XI.w.;.@ %Xn.gXe RXc.O.Z RXI U.M v JXf.;X>XGX+ $ R R $.Y.[ >X6.B ;.P.x h.} 3X1XI.HXV.U.kXt.k.^Xk.X.^Xk qXg qXx qXg.z q.zXx qXx.zX@.z.K.^.k.k.k.^.k.k.kX*.k.r 3X*.rX*.X.k.k.XXo.k.^.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX9.r.5X9 3 ~.u.u.r.u.k.k.kXd.k.k.k.k.kXd.k.uXd.k.u.X.uXdXd.uXt.H.H.8.r.`XV ~.8X9 ).k.uXVXV 3 ~ c.8 3XI.5.u.H.uXIX1.` RXD 3.8XI.`.8X-.H.8X-.`XIX1.`XI.`XI.`.H 3.H.5.2.2XU.9 g s.DXG gXP 4XyX; = @.>.O y n 1Xc TXK .Y n.1.>X..2.DX1.k.`.H cXI 3 3.a.a $Xc.3.- K [Xw.% mXcXc.-.FXeXp E.i.M h.a R R R.a RX1.a RXI R.DX- c.8 a R c 3XD R.a R R R R R R R a.a R.a RX- RX1X1XD.uXD B R a 3XIXIXDX-XI.a.a 3 # 3X1X1X1XDXw $X, sX,.a 3X, c 3X-.a.Z.uX1 R RX1X-.aX1.5.~ 3.K : 3.5X5.KX- 3XV 3.`X-X-XIX-X-XDXDXDX- RX1X1XDX- RXIXIX-.` cXV.uX,.uX,.uX1X-X-.a RXI c 3.Z `XI RX-XDXVX-X,XDXI R.~.a R R.aXI RX, $.D RX,X1XI.u DXl.K c.a RXIXDX- T cXD BXIXIXI.M.a.ZXDXD hX5 1 : V.]XM.ZXl 1 $.'XDX, x.ZX,.a RX,X, xX1XDX,.a B.M.u.wXl x.9 $XqXlXKX5X5XD.u c $ cX..9XJ.9Xw.[., nX..1 [.jXrXB.YXK V RXIXXXc `Xw XM xX, ` 3XH.uXI 3XV.8XV.rX* )Xt ).K.kX9 ).`XoX9", +" c.'.0XcXK $.} <.u.a R.e C.M M nXK.Y.3XJ :X5 : $XV.].}X- R.u 3 3 ` h R.aX- 3 :XKX3.K :X- 3 cX,.aX1 a._.s % .Xp u UXDXD.M.u 3X1.HXI.`.`.5XX 3.8XV )XVXI.`.5X9XI.8XIX1 cXV.8.8.}.}.s.@ %.m t X>.j..Xb.P L.4 =.wX1XI.a.8.8.kX9.k.k.k.k.k.k.k.k.k.kXt.^X*.^.k.k.^.k.k.^.5X9.^.k.K.k.k.k.k.k.k.k.kX*.r.rX*X*.k.k.k.kXx.k.k.k.k.k.k.kX*Xt.k.k.kX*Xd.k.k.u.kXt q.u.k.K.H.r.uXt.kX*.k.kXdX*Xd.kXt.kXdX*.kXd cXd.k.X c.k.u.r.u FXV.rXV.r.r.u.r c ).u.rXV.r ~.u.k.HXVX5 ).$XJ 5.] `.] : cXc cXV.u.uXI 3.8X1 3.8XIXIXI.`X1.8 3.8.H.5.%.|XyXPXc o x g.'XPXUXO.2Xw.G.>.q.>XH VX3Xl 1 !X.Xw yXUX.XJX1.HXVXI.KXxXIX- 3XIXMXcX#Xh n n M.G.3.3.GXh nXp.W .WX, < cXDXD a R < a R R B.~.~ :X3 $ R.`X-.u aX-X-X- RX1.a RX-X-X-XD R a $ $ h RXD RXI $ 3X-XIX-XD 3 RX, R.a RX-X1.5.uX- RX-.ZXl.Z R xXDXD R aX-XI 3 R aX1X, 3XI RX-X1X- #.5 c.u.5 $ 3XV.5.u ( c :XI.`X1X-X-XIX-XI 3 B R.aX- 3XDXDX-.eXI RX-XI #.` RX-X- cXI aX1.`.ZX1 RX1 R cXV RXIXIXI $XIX-.a RX1 R R.a RXDXDXDX,.ZX1 3XIXI cXJ 5XJ.] )Xc D.2 m `XVXI tXD.a.a RX, h $ c $XcX5X,Xl RXD 3 x $ hXlXDXDX,XDXDXD $X,XD $X,X-X,XJXD $ 1XcXc.9 $.w.W $ $ $.Z `Xl : :XcXJXcXK.9Xl $ h UXK ._._ .Xq .9X3 $.a kXp.FXrXwXH.[.9.-.S k.9XIXIXI ~.8.k.$.rX9.k.k.r.H.r ~X*", +"XD a.a.MXD.a a c.} < < u U.wXqXe # : : c.K '.uXlXJXJX5.` R.u.- `.Y.a.a RX5.' c.u.~ 3X-X1 R aX-.a.a.M.)...x.;XpXnXpXpX+.wXD.MX1.`.`XIX1.u.u.` ~.uXVX5.8XI.KXI.8.8XI.H `XI 3.8.a.a...@..Xe < R tX1XV.D 3XD.M R U.WXn._X> n HXhX0X0 w M MX4.C w.{.@Xw xXIXV 3.8 3.XXX.^.k.k.k.k.k.k.k.^ N.X NXg N.^.k.k.^.k.^XxXt.K.^.k.k.k.k.k.^.k.kX*.r.k.^.k.k.k.k.k.kXxXt.k.k.k.k.k.k.k.k.kX*.k.k.kX*XVXdXkXo.5.k.HX*.r.kX*.kX5.kX*XdX*Xd.k.k.kXt.kXd.k.kXd.k.KX9Xd.r.rXV.rXI.rXV ~XV.5.k.H.r ~XVXV.8 ~ 3XV.k 3.H 3 ( :X5 ) : ` 1Xl $ :Xl : D.8XIXIX-.` 3XIX-.`XI.`XIXIXV.H.HX5 ).].> !.!XU !XPXU ] !.] ' ! !Xw v 1 c.K.aX1.M x v.WXa s.2 $X1.`.uXV.`.K 3.5 D.] k.-Xw.1 y.Y.pXc., 1XcXL.WXe.W U U R 3XD., ` 1 1.' : 1 ' ` T `.% c.K 3 RX- 3 R.a.a.` R.~X-X- R.a.a R R aXcXJ $ ` DX. mXKX1.a RX- RXIX-XI RXI RXIX1.~ ` :.%., $X, 3.w : $ hX-XI.a RXI c cXIX1X,XV 3X-XD.u c.e.u 3.u c.5 `.K c c c.k 3XIX- R RX-.~X- RXIXIX- R.a 3 RX-.a RX- RX1 R $XV.aXIX-.ZXIXD.Z R.eXD aX1 $X,XIX1 R RX-Xl.H RX1 R.aX1X- RX1 R RXD c.DXD TXI c D } }.$XKXX $ c cX,.Z.aXIX,X,.M.aX, $ :.aX5Xl.KXKXcXl.-Xl.Z 3XDX, $.ZX,.aXDXD RX-.a.Z $XD R 1XK.9.YXGXcXs U U.MXsXDXDXl :XlXl cX, $X,.Z $ UX, h h x U.m._._._._X7.-XB UX7X+.J.pXh.[.,.[ xXc 1 VX, 3XI.r.8 ~ ~XV.H.8.8.rXV ~.H", +"Xl $X1X1.a R h 3 <.a t.M.W v.W h.].5 c c R RX-.`X-X5X1X- RXM.a x xX-X, $.wXIXD.~XI.~X1XI.a.eXD a a hXpXf.4.4.@ ^ ^XAX6.x o $.}.}XI.`.8.8.` 3.8X1 3.~.8XI.8XI.8.a.8.5 $X1XVX*.a.}XnX4.sXn x : $.Z 3 R B RX1 R t h xXq.) E v.@Xp.E.@ M.;X>X2 r S S.>XKXVX1 3 3 c.rX9.X.^.k.^Xo.^.k.kXt.^./ N./.X.k./.k.^.k N N.k.k.k.k.k.k.k.k.k.k.k.kXt.k.kXt.k.k.k.K.k.5Xt.k.K.k.k.k.k.k.k.k.k.kX*.k.r.r.KXkX9 ~XVXt.K.k.k.kX*.k.k.k.k.k.k.k.k.k.k.k.kXtX*X*Xt.kXoXVXV ~ ~XV ~.H ~.k.5 ~ q 3 ~.u ~.rXVXVXVXt c.HXV.uXI.HXI.`X1 R c.aX-X- R k cXI.`.8.a.`XIXIXIXI R.8X1.`XI 3.8 3Xx.2 ! gXP.'Xm.0XO.0.D.D.uXcXPXL s $ 3 :.5 $Xa.W 9 y 9 'X5XVXI 3.8.KX5.u.HXI.% m.3.GXHXH.1.T.+Xr.hXM.iXp.w.W C.MXIX- :.] 1 :.Y xXw 1.9XD T $XK : c.u c.~ R c.e.~ R.aX-X-XI.aX- a a.aX-X, $ x.aXl 3X-X1 3.a.~XDX-.a.a R R R RX1 R $ D D mXl.%XcXJ k.2 `XDXD R R R RX-XI c 3 RXI 3XJ `XV RX1XI R R.uXIXMX5 3.u c # cXIX-X-XIX-.a RX- 3X1X-.aX-XDXI R RXl x.~ R R.~ $ T R.~X- 3 $X-X1 hX1XD R.e TX5 RX-X1X1.eXl :XIXDXIX,X, :X, :.9 TXJ.-.3 m D RX- c c c )X1X1X1X-X1.uXDXI.aXD R.a RXlXlXl c.5 T :X5 cXlXlX,.DXDX,X,XD $ $X-X-XDXDX, cX,.ZX,X, h.M.M a < t.M.M.M UXDXD.} c `XD.aXDXD.Z s x $ h.} R.M.} u U.mXqXq.YXpXcXB.YX4.FX4X7XwX%Xr k E.Y .Y `.}XIXVXV.8 ~.8 ~XV ~XV.8.8.r", +"XI.KX,XDX1XI c.e.a.a tXs sXe.M.a.5.5.K B.5 1XlXDXV.~.`X1Xl U $.9XD $ $X,XD.aX1 R.~ T #X1XD.ZXD $ $ h p.).@...sXi.B.BXf LXp.pX,.Z 3.`XIXIXI.8.a.`.8XIXIX-XIXIXI ~XI.KXI.5 c 3 3.aXp o.. y x cXI a a.aXIX- R.aXDX,X,.} C u.WXe.sXe.).Y.W CXF .XfX4.E gX5.8 3.8 #XV NX9.k.k.k.k.k.k N.k.X qXk qXkXx.I.X.kXtXxXj.K.k.k.K.k.k.k.k.k.k.k.kXt.k.k.k N.k.k.k N.K.k.k.k.k.k.k.k.k.k.k.k.k.r.k ~ q.r.5 ~.r.r.K.^.KXt.kXt.kXt.kXt.kXt.kXtXt.k.k.k.k.k.k.kXo.K.r.rXVXV ~X*.8 )X*Xx.K.8X* ~ 3 ~.8XV ~.H.u.u.H.HXI.H.8XI 3XD 3X1 1 x 1 1XMXIXI.aXI.`.aXI 3XI.`XIXIXI.`XI.H.H.H.K DXO 9Xm.'XK m (XD.u.uXI.5.!XL s.9.5.HXd :.' b H &.q.DXD.HXIXVXIXoX9.5.` ).%.%X.XUXw.+X0 W W.y W.g Xp.WXe.aX1.ZX1X5X5 $ t t.* h $ R a a RX-X-.`XV # cXI R 3 R RX-X- R.aX-X-X-XIX-XI a.aX-.e RXIX,XI R.u RXDX-XI RXI.a R R RX1 3 `XDX1Xl.e #X,XD xXI $X1X-XDX-.a RXD.a a 3 h c :XlX5., ` :XJXJ., mXc cXVX-.`X-.` 3.k #XD RX- RX1X-X- R R R R RX, tXI $XlXK :.2Xc 5.3XJXJX1 R mX, :XJ 1XK.]., D.,.2XI.a.` $Xc.3 TXJXH.,X. 1XcXKXK 1Xc.Z.ZX5X5X1XI.u.5X5XIX9 3.`X1X1 R.u RXDX,X,XIX, cX5 c.u #.5X, 3.5XMX5 $XM $X,XD.a RX,.Z.aX1.ZXDX,X- hXD.M $X,.M.M.M U.Z._._.w h UX,.}XM $.aXDX1X1.wXD.a.aXD.} a.M.M.M uXe._XG xXqXp.FX4.m._Xp MX<.Y >.F U.p.F .-.a R 3XV.8.r 3.r.8.8.r ~.u", +"X- 3.u.uXV.uX-.a R t.N x._ C.a R.K.XX-.5.u 3X,.u :XV.`XlXl $X+.p 1 )Xl 3 3 RX- c : :.,X. D ` T $ h.ZXeX+.s.s.sXb.s.P.J % %Xp 'Xc $X5 c.`XI.`.` 3X1X1.` 3.`.8.}.`Xx.KXl : #X5.u.'Xw.; vXa.M RX-XI.a.a < R.a.aXDXD.Z R.M t.M.M u.M.M.Z C.W.m.JXb.@XwXU.DX1.` 3XV.HXo.5.r.k.k.kXd.kXd.K.k N.K.X.kXg.K N.k.kX9.k.K.k.k.k.k.k.k.k.k.k.k.k.kXo.kXd.k.k.k.kXX.k.kX*.k.kX*.kX*.kX*.k.k.k NXtX*XxX9 ~.r.u.k.XXt.k.k.k.k.k.k.k.k.k.k.k.k.kX*.kX*.k.k.kX*Xo.r ~ 3 ~ ~ ~.5 3Xk )X*XV.rXV.8.r ~XVXV ~.u.kXd 3.HX1XIXI.8.0 )X- x `.9 ` 1 `XIXI.8XIXI.8XIXIXI.`XIXI.`X1X1XI.HXI.HXa g !XP g.2.9XDXI.u.u 3X5.> 9.9Xs BX1.H $.Z.W 2Xa TX,.`.H R 3 3 : 3.8XI :.2.5 RX, x.9X2X>.jX>XnX>XrX4.F h.W a.uX1.H c cX-X-.} a X4.i > 1.YX3X-.8.8XV ~ ~ ~.kX9.r ).k", +" #X3 #.5X5.HX1.a R.M._ y U.a RX-.k.`.` 3 a R.K #.kX9XlXD._ sXn uXDXV 3 R.uXIX, 3X-XX c $.K 'X9XcXKXwXKXc.j u * v ..@XF p.. .XwXG :.2 `.`.}XIXIX1X1.8XI.a.aXIXI.uX* D :XJ.,XcXKXw.+Xr.;XKXK T #X- <.a.a R.a R.ZX1XD B R.M.a t.}.M.a $.M.WX4 -.PX4.E yXDXV.8 c.H.8.u.XX*.k.k.k.k.^.k.k.k.k.^.kXo.k.^Xt.k.X N.k.k.kX*.k.k.k.k.k.k.k.k.k.kXt.k.^.k.k.k.k.XX*.k.^X*.k.k.k.k.k.k.k.k.k.rXo.K.k ~ ~.k.kXtX9.k.k.k.k.k.kXt.kXt.k.kXt.k.kXt.k.kXd.kX*Xt.kXV ~.r.rX*.u q.X.K.8XV.r.8 ~XV.8 3XV.H.r.u.KX*.HXD.HXI.` :X3.ZXDXK .-Xc 1.a.}.aXI.8X-XI.8 3XIX1.a.`X1.8.8.`X1.HXIXVXD.' g T x.H 3XV 3.u.8 R TXPXa.=.D 8.K.K.WXG o.s gX1.8.H :.5X1 ) )X1XI.uXVXD.ZXD CX+.YX>X8.CX>.Xr._ hX, a 3 R.`.8XI.`.a.a.a.a.a .p.Y.F.YXMX-XI ~.r ~.kXo.X.k 5X9", +"X,X..,X1X. 5.a k ...m U <.}XI.aX1XV B.u.K R.a.aX-X-.` RX-.`X-X-.a R.a.aXDX-X- 3.u 3XD :.aX-.`.aX- R R.aXD RXl $XlX-X.X.XJXJ.,X5X.Xl : $ : :XI.aXIX- R.aX-X-.a.MX-X,X,X. x.,.w.-.a 1XK.l T ).' :X. T.,.]XKXw :Xw h a $ R R.a tX- .l.a.8 ~.r.rXx.^.u.kX*", +" $.2XJX- T.i :.1.Y.EXe <.M R 8 5 m.5X;X,X; x m.5.K.5XD U._ v.*XwXlXK $.] 3.] ` D.KX,XIXVX-XI.H cXD.}.iXe vXn.W.NX, CXD.MXn . . S MXJ T cXM hX1.8.` F.} aXIXIX5.%.|XlXIXIX,.aXK yXG sXp x $X1.KX1X1.a R RX1 h.a.u R BX1 R RXD.}.a.a $.W.@ %.CX>.+.+X. :X5.5XlXIXI 3.KX*.kXdXo.k.^.k.k.^.k.k.k.k.k.kX*.KX9.k.k.k.k.k.k.k.k.^.k.k.k.kX*.k.k.k.k.k.k.kX9.kX*.k.k.k.kX*.k.kX*.k.k.rXx qXtXt.r.kXd.k.k.K.5Xt.k.kXd.kXt.kXt.kXt.kXt.kXd.k.u.kX*.uXt.H.K.rXVX*.XX9X9.r ~ ~ 3.H 3.HXI.8.H.8.rXtX*.u.5.r 3.HXI.`.5.k.$Xl `XpX+ WXr > 1 :.5.8X-X1 3 3XIXI 3XI 3.`XVXV.HXVXV.H ~.8.8.8XI ~ 3.~ ' mX5XDXV.0XL.=.= 8 < E.M.=.=XaXGXDXI.0 'XDX1.KXDXD U.YXGXGXc U UX+ ^.@Xf.C L 0 LX> . E h.}.}.M R.DXD.8.u q.} tX-.aX1 R.`X-X-.~X1X1 a R.e h.~X-.a.e.a a c.K.a.a.~.u c.u :.5 kXKXlXJ a :.ZXlX1.a R.KXD.~ 3 cXI RXIX-.a.a.a R h : c R.a.ZXD tXUXc.O 1.3XKXcXc :Xl `.2 :XcXl.Y.iXeXH 1 `.M.a.a ` R <.aX- a.u.a aXI RX1X- BX- RXI.e.}.a RX1 RX1X-X1 c 3 aXI 3.uX3 x cX1X1XDX,X,XI $ : $X3XMXl 3XI.~X,.ZXI h R.M.Z.Z.DX,X,X,X,XD.aX,X-.` R.5 # 3.5XI.`.`XI.D R.a.M.MX,.Z.KXV.KXVX5X, $ x.wX,X-X,XD.Z 3 xXD.a.aXDXI 8.a.a.a.a RXpXp.xXr.x.@.@ ^.P.C.4X2X2.x.X4XBXcXIXI.8.r.`Xd.8.8XV", +" R $ $ $ $XD sXe n.YXe UXD $X- : ` :XJX..2Xc.OXlXM.a.a yXG.N tXJXH.| DXc 7 5 IX. ' ` mXK 6 x kXD.Z.W vXp.. U t h.a.a.} hXsXe vX>X>X0.9.9.iXc.aXI.HXI 3 RXDXIXo (XlX1XD.M.}X+Xp b.sXe.* #XIXXX5X- RX- R.M.} 3.a hX1XI R R.a aX-.a.} x.W ^ %..X2 y =XJ D 5 mXJXM.}.r.K.5.k.k.k.k.k.k.k.k.k.k.k.kXd.kXt.5 N.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX*.k.k.k.kX9.k.k.kXt.k.kX*.^X*.kXt.r.5 ~X9X*.rXt.k.k.k.kXo.^.kXt.kXt.k.k.k.kXt.k.kXt.kXt.kXt.k.u.rXV.r.kXI.r q.5.k.u 3.r 3 ~ 3 ~.8.8.H.H ~.u.k.k.k.5.uXV.u c.u qXMXXXHXHX+ W.p.pXnXp XB cXIX-.`XIXIX1X1XX.k.K :X9 :Xo :X5.5X9X- 3.8XI 3Xl.]Xw kXl cXIXDXGXL 2 2 h t uXa 2 OXKXK 3 `.KXVX-.]X- kXG =.+.j.j.1XGXS = S M H.4.{X:X> ^ . E E.} h.MXDX-X,.u.KX5X-XDXIX-X- cXVXl.u.eX-X1X-X-X,XD a RXIX-.aX-XMX1 3XHXc :.]XK :Xl.u h $ a.aX,XD $ R R RX-XIXI.u R R.a.~X1X-X-X-X- a.a tX- hX,.M $ $X,XDXD.a.MXI.a RX1.}.a a < a UXq.FXnXq h hXe hXD.a.aX- #X5.8X-.a a.aXI RX1 RX-XIX,XK 3 c B R R c.u B RX-.a RXlXJX. `XcXJXJX.Xw 1.OX3.%.5XI.`X-X- RX1 hX, $XDX,X, hX,X,X, h $X1.u RX1 RXI cX1.KXX cX-X- cX,XD.aX1 cXDX5.HX5.HXlXD.Z $X, $XDX1XD xXlXD.a R a.a R R.a a.a.M .x SXpXrX< [ xXl x c hXD R tXDXDXD.ZX,X,XD $ $.Z.ZX,XD.a 8 U.M.- n.-.F <.i.Y .FX+X, 3XIXV.H FXV ~", +" :X.X, $ h U.W x t < R R.*X1X-.` a :X1X,XD.a c cX-.Z.9Xe R.aX1.ZXI.D )XJ D.5XxXlX;XJ kX#XH.O.W.WXGXL U C < U.}.a cXD R R u.W.s.. vX4XnXqXeXsX1X-.` RXI.8XVXVXVX1XD.} 1 yXn 0.s.s.M.a.a.KX9.KXIXI.a.a.a h.a R h.M.M R R a cXM.M c.WXGXn.s ..+XrXw.-XDXV.Z.Z 3 3 3.KXxXtXo.kXt.K.k.k.k.k.k.k.k.k.k.kX9.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k N NXt.k.kX*.k.k.kXt.k.kXt.K q.r ~Xt.k.kX*.k.kXt.X.k.kXt.k.kXt.kXt.k.k.kXt.kXtX*X*Xt.u ~.r.H.r.u qXo.uXx.`.rXV ~ 3 ~XV.HXI.8.H.u.k.k.uX*X* N.u.H ) kX3X. ) I.3XH.[.L M.yX.F.-Xq.i h x h 1 $XD.`X-.a.a $ UXD EX,.aXD.aXVXc T.Z.wXl.5XJ `XJX-X-XI R a x xXlXK.Z.ZX,X,.a.Z cXl # R.aXIXD RX,X,XDX, xX,.Z $ $.Z hXD $X1X1.uX1.`X- 3 3 3.5 c.}XI.a 3X,.D.ZXDXDX9XIXxXo.D xX,.ZXD.wXD $ $.Z RX-.a tX,.a R.a R R.M.a.M._X+X> .XbXbXb.s...v.v.v.v.v.v ^ H.x >.. x < a.M.ZX, a RXD RXD RXD.aX,.aXDXlX,XD.M.MXD 3 $XlXqXe.FXB 3.a.} 1X4.FX+X,.}.HXI.rXI ~", +"X,XU 1.,.[Xc yX0.j x 1.}XDX,.e.a.a.a.8.aX1X1X1XDXM 1.[.' RX, cXlXD.u `X9.5X-.DXVXI RXD.YXpXqXnXp vXeXs C u t U.a 3XIX1XI RXD u.W ..@X6.JXf.@XK TXD.H 3.8 RX*.H R 3.ZXm HX>X6 p.s.M t.}X-.uX-.`.~ R R R R 3.a.}X,.W.}.M U.a R.}.a h U.s J pXb.x.@.xXw h c.DXV.H.r ~.r.5.k.^.k.k.k.k.k #.k.k.k.^.kXd.k.X.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX*.X.k.KXt.k.kX*.k.kXt.K.kX9 ~XtXt ~XtX*.k.kXt.k.kX9.k.k.k.kXtXt.kX*XtXd.k.k.kXt.kXt.u.r ~XV ~.uXtXo q.kXI ~.u.r.8XV ~XV ~ ~.H.r.u.k.kXdX*.uXo.8 3 $Xl ).u : #X..[.SX2 W.pXpXr.[.i 3X-.`XIXIXIXI 3.8X-.`.8 3.8.H.HXI.`.8XIXIX1 cX.XHXJXGXw.ZXVXI 3.M v b 2XL b oXa 2 b g hXI.K.8 )Xt.8XV.MXGXn.@ ^X6X6 0X6Xf w.CXf.4 %XbXA.4.P....._ vXq xXeX,.a.a.aXI x 3 c RXI.~X1 R.ZX1 a.aX-.aX, R R R.aXIX-X,XlXJ : c #.u xXI cXl :XI 3XD :Xl.~XIX,X1.Z $Xl : $XD RX-X-X-XDX-.a RXD RXD.a.Z.a 3.` RXI.a.a.a a.M tX,.}.} U.}.i.m.J.p WXrX<.y.S.1Xr.,.OXKXh R.a a.MXHXHX%.SX.FX4.-Xe.a.}.r ~ ~", +" R $ cXe xXn.jXw.9.9 TXJXKX3.a.a.a.a a.`X1XI.D.i x XU.9.uX*.]X3.`.KXJ ).`.5.k.` RX5 1.M UXeXn._ u C t < u $ h.ZXD BX1.` cXI.u U._XbXb.BXA . oXl R.`.}.8 c ` T.9 y.YXn v 2Xp v E.} a .;.;.;X0 H H.q M H.@X8.sX6 w.CX>XfX> .Xn.p._Xe .M RXD RX1XIX- RXD.aX- R.,X..u m.DXH.Z RX,X1X,XI c ' 3 RX-.` R R.` R RX-.`Xl.% `.3X5.]XlXHXJ., k.u BX-XD c cX,X- aX1 a :.- R.aXDXDXD R R.a a a <.a.a t.}X,Xe x E._.m.F.X> ^..XbX= C.D.N G.N.s.m.v % ^.4 ^...W x.i RXDX,XD RXI RX-.u.aXI R.Z.w.}.wXe.w c.}.8 ` a hXe.F.[X,XDX1 EX+XnXp.p.l.a 3XVXt", +"XD.* < U CXe v u h RXDXDXV.ZX-.aX,.a 3XI.u.uXIXD uXqXeXDX9.KXX.HX5.KX5.`.8X-.` RX-XlXl xXG...).d.a.a .@X> v 2.s.w.M R.a h c 3 $ $X5 cX-XVX5 3.u.DXD R.d v...JXp v.M u.M.)Xq .Xb E uXi.;X>Xw [ ` :.HXI ~.8 ~.u.5.k ~Xt.u.kX*.k.k.k.k.kXj.kX9.k.k.k.k.k.k.k.k.k.kXj.k.k.k.k.k.k.k.k.k.k.kX9.k.k.k.k.kXt.k.k.kXk.^ ~.K.r.rXt.k.k.kX*.k.k.K N.k.k.kXt.kXt.k.k.kXt.kXtXd.r.r ~ 3 ~.H.r.8.kXV ~ 3.r.H.8.H.8XVXV ~ ~.H.r.uXdX*.k.kX*.kXV.5.u I $Xx.].5X5.]X3XJXHX< M =.j MXn b bX0.O.+.O !Xw., D )XI.k.HXI.HX, t.9Xw.EXCXCXm.q.qXCXCXU M.;.; S H ^XiXfX6X>.CXrXpXqXq < <.aXIXD RXDX1.aXIX,X, mXH.D D.O IXJXJX.Xc.9 mX. k KX,XD a R R.a R RX-X1X-X1 :.| k.3.2 I D ` : c.aXIXIX- hX, 3.a.a.a aX1X, R hXD.ZXD.3XlXc 1X, uX,.[.W.9 1 = Xr.g.[.1.h.[XB .-X+.gXp._Xq E._.FX+Xn.i._.F..C.B 2.s.MXD.M.a UXe.s vXb 2 ^ w.E v EXp.M R.aX,.}X- RX1.ZX-XIX,.9 1 1Xc 1.[XHX, DX*XDX,._XeXp.[X,X1XI.Z yXqXpXB .aXlX9", +" R.}.M t.WXn.) tX,XD RX1 RXI h c c #X,.u BX-XD t pXn U 3.k NXo.kXV.u ) 3.~X1 3 R 3 `.-.9.W U t < a.} 3 cXM.} RX-X1 B 8X5X-X-.a.a < .+X#X<., 3X1.H.H.H FXtXx.r.r 3XtX*X*.k.k.k.^Xd.kXxXt.k.kXt.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.X.kXt.kXt.k.k.k.k.kX9 5.k ~.k.k.kX*.kXt.k.k.kXo.k.kXt.kXt.kXt.k.kXtX*.kXt.kXt.r.u.r ~ ~XtXV.K.8XVXV.H.H.HXVXV.H.H.8 ~XV.rXt c.k.kXtX*.kX*X9XI ]Xx m ( )XJ I.3.GXh.O.OX<.1XZ.-.YX,XIX-.`X1XI.`XI.8.`.H.`.8.8XIXI 3X5 3X1 R.MXD.[ yX+.YXw x x.]XJ.3Xh.> &.nXc.W cX, 3.uX5.HXo.`X1.8X1 cXD $ =.> &XO 4 !XOXOX;XUXh.O.T.T ^.@X6 ^ 0X6Xn.@X>.@._ U <.a.a.u R.aXD $X,XDX-XD.ZXIXc :XK.'Xc.'XlXl.' 1 $X5XI RX1.aX1X-.uX-.`X- R.8 3 '.K 3X-X-X-.aX- R.a c :XKXJ # $ c RX-.a.M R RXDX,X,X, U.YXq.Y = [ [Xw.1.[.LX<.h.1.TX#X#X# | ` XB .p.g.FXq.J.F._XqXqX+ X7X%.gX7.FXeXe U.a <.}.} X>...v.s R hXD.a.M U.M U v.s.v.v w.<._.F h U X%X7.g.< > .mX%X%XB.gX7.F.F.iXeXeXDX, 3X-X-.u.D.HX-X1 c.e R RX1 RXI RXK.wXlXw T $XlXK x :X,XlXD RX,XD UXDXDXD 8X1XDXIXDX,XD h.aXe h.-.M.w.W.Z 1 1XwX. `.u # D.$ }XJ.,X3X.Xw.Y RX, $ xX1.Z 3X,XDX,X, TX,XK 1 c.Z 1 : h.a.a ._.i t.-.[Xw kXc.-.u $ xXl R.MX, $ $ :X5X,X3.a 3.MXe v >.jX. c.kXV x.[.F.FXBXp.}", +" <.a U v.s.M t < a c 8XV :XM a aXI.M R.a RX1 8XeXn.M x :Xx.r.`X9Xt.X.5.5XlXl.-., =XlX,.9 3.uXDXIX1 R.~XV.8X-.`.uXVXI.uX-X1.a.a.M.MX,Xb.s.E vXDXIX1 3 3.} xXrXrX8.Y XBXM cX* :.DX1X, $ $.u.}.aX-XI R :XlXDXD.WXn G xXq U.Z $ sXl $ R.a tX,Xe 0 0X:XAX4XpXnX+.-X5XI ~XV ~.8X*.8.rXV.r.k.k.k.^XjX9.k.k.k.k.k.k.k.kXj.k.k.k.k.k.k.k.k.k.k.kXt.kX9.k.k.k.k.k.k.k.k.kX*.k N.rXt.kX*.k.k.k.kXt.kXtX9Xt.k.kXt.k.kXt.kXt.kXt.kXt.kXtXtX*X*Xt.u.kX*.k ~XVXIXV.rXV c.rX5.KXoXo.^X5.k N.K.k.K.kX5.kX5XVX1 3X,X5 `X,X5.} 1X,.9Xq $._XqX4._.Y.aXD RXIXI.8X1.H.`X1XVX3XIXl.KX5 DX3 V m.9XJXw.1 M.>.GXh.3.%XHX.X5X,.nXD h.uXM.8X* N 3.K.8XI.HXI.8 h 3XB.Y.j HXw g 9XaXL b.w b.qXm b.s /.W.).).s b ^.vX>...F .-.,X. TXJXcXw.-XK mXKXJ 3X, $X,.Z $.ZXlX5.ZXD R R.a R 3X, RX-X1X,X- 3X1.a.K.5 R.u.~XIX-XI R t RX-XlXIXD 3XDX- c.}.ZXJ cX1 h $ RXe._._.mXq.J.FXpX7 [ k.g V .lXM.5XM.8.a.a 3.g `X7X X%.[ >.[ kX+Xp._ pXB [Xl $Xl.5 c TXKXJ.]X3X1 RX- RX1X- RX1X1 RX,X1.a $X5X, R.Z RXD.aXD.aXDX,XIX1XIXDX1X1XD.} U hX%.j [ z [ nXh n M n 1Xe.3 :.5X5.5X3 : : $X, h $.9X,.w xXD.9.w 1XKXK x t.a.MXDXD xX,.a.} < <.iXGXnXr.@X= 2.M.M U.Z 3 RX, $Xs.W.vXn 2Xf W >Xq.m xXe < x c hXD x R TXHXcXJXJ.,XcXJXK 3 `.u hX,.Z._XnX4.[.-XIXI R.lXB >X% n.-", +".a <.N vXs.M <.a.a a.5.'XJX5XMXl ` $X,.ZX,.MXDXGXs._X, `X5 F.H.u F.K.uXI hXq.9 x.Z.MXlX5X*XI.`X-X1X1.H 3.8.`.8.a.8 :X-.aX-.M R tXD.s ^XfX+ U RXD.` 3 c.aX+X> H yX..2 , 6X# I.GX.X,Xl $.uX-X5.a c.9XI : h.i.MXL v 8.9 < $ #XlXl.uX5 c BXD t._..X>...{ W.LX: MX0.wXDXI.u.8 3.k.`.u.r 3X*.u.k.k.k.kXg.k.k.k.k.^X*.^.k.k.k.k.k.k.k.k.k.k.k.k.kXt.KXx.k.kXt.k.kX*.k.k.kXjX*.kX*.k.kXt.kX*.k.kX*.k.k.5.kXt.k.k.kXt.k.k.kXt.kXt.kXt.kXt.k.kXt.k.k.uX5 ~.8Xd.5 m q D 5 Q ) 5.& 5.A q ] q }.k.| q 5 `.u.] D.OXhXhX. 1 < #XK 1Xp.-.<.F E x R.}X1 3X-XIXI.8XV.5.5.K.uXl RXIX-.8X5.a RXl nXmXwX0.OXJXl : m :X1X1.HX1.H D.5.8XXX*.8.uX*XI.M.iX%.[X2.p. HXmXC b uXe.W.N 2 O bXC.E [.pXw $Xe.M hXD.aXDXDX-XDX,XDXI tXI aXHXKXH ` :.- :XlXc TXlX- a.a.eX1X,.~X-XIXl.~ RXI.8.e R aX1.a RXDX- R.aXI RXIX- c.a 1X,XD $X,X, EXe.F.pX%.g.gX%.g [ X3 XM.l # h.a 3.aX-.a.aXMXBX7XB XBXBX7.g.[.g.g.[X3 XBX7X%X%.F v.Y =.-XH.'XKX3Xw ) T.u x.uX-.aX1X- R 3XDXDXDXI x 3XDXl.ZX,.w.ZXD.aX,.ZXDXD $ c $X1.DX1 t.M .@ O v.)XD.MXe.wXlXDXD 'X,XsXn JX4 S z z ..m EXe EXq xXcX. x.[XK.-.9XK.0X5.DX1 # ` $XIXI RXD E._.F.p XI.`.a XB.p E E", +" <.WXG.W t <.aX- RX1Xl 3XK `.,XcXwXJXJXc.-., &Xw.jXl #.$.`.`XV c.k.k : `X, `XGXq x R.H 3.`.~.`.8XK.H.D.8 :Xl.5 :.$ 3.a R.ZX, x $Xp..Xf w.EXGXlXIX- )XDXD.E b.sXeX5Xx.u.K `.i # #XI R.~XI.~ :Xl.,XcXw k [X+.jXe U a.5.K ) $XK.KXX '.ZXe v .Xf.{X8 S MX2.jXG.Y.M RX1XV.8.K.r ~XV ~X*X*.k.k.k NX9.k.k.k.k.kXt.k.k.k.k.k.k.k.kXt.k.kX*.k.k.k.k N.kXt.k.k.k.kXt.kX*.kX*Xt.kX*.k.kXt.k.k.kXtXtXo NXt.kXt.kXt.k.k.k.k.kXt.kXt.k.k.kXtX*.k c.k.k.k ~.H.8.kXxX9 (Xx.$Xx ) ) ( 5 ) 5 ) ).5 q :XJ.].] DXhX;XHX._.iXeXe.M <.a t RXI.ZX, 3X1.MX5XJ.a $ $ :XK T.'XK.9Xl T cX,.aX-X-X, 3.a.aX1X-.u :.u.K 3X1X-.a RX- a RX-X-.a RX-X, aX,.aX-.aXD cXD.W.}.m.pXX7 .lXBXB VXM h a.a.a R 3X-X-.a.a 3 ` 1 #XBXMXM #.[.g [X3.l X3X3 XBX+ n..@.sXe u.w sXlXw TXK gXc.>Xw M W.4 z WXr....XqXnXpXr.Y._ x $ x.Z tX, 8X1XD B.MX, xXIXI.~.}.M._.m >X% c c : U.[.[XX+ n.9.WXDXI.8.5 ~.r 3XV.r c.kX*XtX9.^Xj.k.^Xj.k.^.k.k.k.kXj.k.k.k.k.k.k.k.k.k.k.k.K.k.k.k.k.k.k.k.kXt.k.kXt.kXtX*.k.k.kXt.kX*X*Xo.KXt.k.k.kXt.k.k.kXt.k.kXt.kXt.kXtX*.kXtXt.k.kXt.HXV.r.8.rXdX*Xd.uX*Xd.uX*.kXd.k cX*XV 3.H : 'X1 $Xy.O.j.9X+X<.,.[.a 3X, <.FXqX4 E._XG .w.aX, 3X-XIX1.`X1XI.` 3.`X-.8.` 3.`X1XV.H.0 m g ! g $.9X1X1Xl.0.|XJ.`.H c.K 3X* D VXX : DX3XJ | [X% W [ W n n nXwXC J.q.> & b O v.WXD.w $ xXG.n O J v.<._._Xq x t.a t R.a R cX- aXJ a.9 :Xc :XH aX,.a.e R tX-.* RX- RX- 3 RX-.a R a.aXI :XV 3X-X1.a.e.a.a R.a.a RX-.aX-.M 3X1.a.a.uXDXD 3Xe._.FXBX%X7X7 XB.,XBXMXM :Xc xXc.-XlXc ` c <.}XM # $ h #X9 XXXBX3XX h.a cXB ` X7.[ >.F._ 1Xe.a t.MXD tXI R.a $ a.a `XJX.XcXH T.,XKXIXl RXlX,X,X,.MXD $ aXD hXD.uXDXI RXDXD.M UXeXqXr n.j &.+ nX>X+.xXpXn.Y.Y $ xXV.a.a U $ h u.M.}.M U.M h 8X,.Z.MX,.a R.M.M U._ 1._ 1 U.wXeXp.1 W.x z.;.;Xr nXU = nXPXc.].'X5 xXeXGXL v 0Xf.;.;X4.@ . v. z.T z.;Xn.@ H S S.@XpXcX,X1 3.KX*.r.r ~XV.k.k.k.kX9 N.X N N.KXj.kXj.k.k.k.k.k.k.kX*.k.k.k.k.k.k.kXt.k.kX*.k.kXt.k.kX*.k.k.k.kXtXt.k.k.kX*.kXdXt.5.k.k.kXt.kXt.kXt.k.k.kXt.k.k.k.kXt.kXt.kX*XtXoX*.H.HXtXo.uXtX5.r.k.kX*.k.kX*.u.H.rXV.H 3.`.3 Y.%Xy K.GXh.OXZ.[Xc $X-XK $ :XcXHX4.xXpX+.i.9.l.aXIXI.`X1XI.H.8 3X-XI 3XIX-.8XI.8X1X1X5 !.0 gXw.2.'X5.].2 D.2 g.5.H c )X3XJX3XMXMXMX3 V 5 V V XB.9XB .- n.>X0 & b 0 0.WXs.MXK.%XlX; = 9 & M.x zXpXnXeXnXq.M < a.a.` hX1X- a.MX5X, #X,Xl R t R.aX- R R R R.a R.a m hX,XDX, c.u 3XJ :X9 c.aX-.aX- a R a.aX-.a.aX-.~ h.a $X5 h aXD hXr >XBX7.[X7X7 `.SX3X.XcXKXUXl.9.,Xl $ ` `XI.a.aX,X- .m p xXe t.} h.}.a.a.a.a $ $X,X, xXD $X5XD RX,XIX, $ x.M.Z $.Z $ R 3 .w._ hX,X, x $ xXlXl.Z.Z.WXa.=.s...@ H.x.;.J SXn p._Xp.9 U.M U R.M < U.i U 1 x.aX1XIX,.}XeX4.F.-.j $ $ $XlXKXK", +"X0X0 h 3 .Z.HXV.k.~.2X,Xh._Xp.LXe v 1 1X,XI.`.8XI.`X1.`.` 3.` R 3.r.`.`.H.H.H.5 g ! T.] Y YX.XO.2 g ] @.%XJ }.$ | :.l ` k V | `.[.,., [XH k Xc.j.E b.v.v ^.vXL.NXDXcX. : kXw.9X0Xh H.y.x..C W.@ .Xp._Xq U.} U.a E h._.mX7 x UXD R B.n BXGXp > [ 1.0XJ.|.DXc", +"XC.M < c.u 3X,.5X, #.a cXI 3XI R R.a.a.M v p C.a.u :.8XX.`.aX- $XM R.N 1.W < a.a.`X-Xl D 3.uXM $X3.} 3XIX-X1X- aX- a.aXI.a BXD.W EX>.T M.YXIXIXV 3X5.Z y.4X: MXw # :.'XJ 8X1 TXcX1X, T.9X5.Z 3.K.0X-.a.MXsXr.EXG.j.MXX $.YXp.< v.MXI.a U v.W.sX4 % %Xb %.<.;XfXi.@.- R.aX* ~XXXt.r.rXV.u.k.kX9.K.XX9.K N.X.kXt.^.k.k.k.k.k.k.k.k.k.k.k.k.k.k.K.k.k.kX*.k.k.k.kXtX*.k.k.kXt.kXt.kXt.k.k.kXtXtX9.r.kXt.kXt.kXj.k.k.k.k.k.k.k.k.k.k.k.k.kXt.k.X.k.k.kXtXt.k.rXtXtX*XtX*XtXV.8XV ~ ~ 3.` 3X5 TX.XP.0 'XU s 9 TXOXDX1X1.`.` ` D.1.p.j MXw.p.-.[ 3 R.}XI B.HX1XIX1X1 3XI 3X1 3 ' (.2XlXU gXO @XyXyXy @ 4X; @ !.G Y K 6 |X#XXXMX,., XHX# 1 |X# .3 k kX3 V 1.[ o J 0XiX=.WXsXs.MX1 hX1X1.a R.WXn.s.@X6Xp.<._XeXGXD .xX>.xX4...WXG.M h.} h.}.M.} $ 3XIX1X,.Z 8.N /.s.v.sXb.v..Xf r WX+Xq._.m U U E.m.m.FX+X s gXUXOXU.].0 TXl.'.'XK gXHX..Y.3 h.a.} <.- `.9XcXK :.9X, xXKXMXMXMXcXr.s.v / 0 vXq $ 1X1Xl.Z : x x x M pX>X>.< ..m p._XqX,.a <.} 3 < R RXD 8 R.Y.aX,.aX-X,.w.Y $Xe.9Xl :XlXl.} tX-X1.`.`.u c R aX, < t <.a.a < t <.M R a.aX-X1 a.a.a.a.aXD.M.M._XG.[XhX%.SXXe._._.i.m.i E.l._.iXq E U h.ZXD R.Z RXIX, h $X, U UXe x x._Xq._XeXq xXqXqXeX4X7 WXr M M.qXm '.9XKXL y.j = =Xw H.jXw MX0 & =XwX0X+XGXGXpXnXqXqXpX+.FXqXp.p.jXr M.;.j.j HXm H.q H HXC M ..Y.Y.jXw.Y.9XK t RXD $ cXD.aX- $ R t CXD 2.s O.= 2.v 0.4X8.< ..m._Xq EXq.JX2X% r z W.-.-.,.-.' 1 y xXr h.i.H.8XV.`", +".a R < t t R R R.a.a.M :X. 1.,X.XH = n.1XU.9X,.ZX- R # 3.`X-.uX5Xe.M.' U.aX,XV c.` 3 5XJ.u.5XH.% #XI.e.,X1.Z.0 YXl 3 c | `.aX,X. C p M . J vX,X5.w.YXn.s.s.).j 3X-X1.K : 3 3., `X,.~XJ D.0 cXlX. :X1XlXcXD.M.NXGXnXpXe p vX>Xe u U E.MX,XDXa._.) * C *.d.).J . ^X+ x.aXI 3XV.k.X.r.H.u.HXV.kX9X*.k.^.k.kXj.^ N.X.X.oX9.o.X.oXg.o N NXj.k.kXtX9.k.k.k.kXtX*.k.k.kXj.k.k.kXd.k.k.kXt.kXt.k.k.^.K.k.k.kX*.kX*.k.kXj qXk.z q./ N NXo.X.kX*.k.k.XXt.k.k.k.k.kXtXtX*.kX*.u.r.H.8XV 3.H 3XVX-.] DXy @ @Xy.OXw.2 4.GX5XIXIXDXc.9.9.p._XqXe $XnXe._ <.}.aXIXIX1XD : 1XH XrXrXw y.q 9 o 9.! x.n.' $.n.' $ 8.M '.9XwXy.YXl X,.a.aXDX-.ZX, t RX,XD.*XD a a 1 x .jXn 2 /Xp.>.j v.-.w m ` n '.Y.E.T.) ^.J %Xb.mXAXn._ E E < h a.aX- RXI RXl.-XwX,X-X-XcX, 1.-XcXc.9Xc ` :.a.a.aX-X-.` c 3X- t < hX, h.iX,X, U.M.} U h.} < < <.} t.a R.M < UXeXB.p nX7XB.Y 1 1XK k.-XJ TXKXJX1 cX- R.aX-.a aXI RX, R R aX- RXD.~XI BX-X-X- aXI.a.aXlX7XlXB.p.pXB >X+ >.m._._._.FX4Xn.FXq._.WX,X,XD c cXI.a.M U.F xXn x xX+.pX+X+Xp.@XpXpXpXq.FXpX+Xp.j &.>.Y ' s.0 CXl g.jX0 = =X0X0.> yXmX0Xw ! = MX0.YXnXnXpXn M._._Xp.YX> &X0.jXG sXG b o & o &.+.+.+ zXr.jXG.9.M C.M RX, h.ZX,XI R h.a R.a 8 tXs 8.N.=.v 2...@.x.< % %._ . . S.<...{X>Xn.F.W.}.a t.M s xXqX4 hXlXoXV F", +".WXe.W.W U U U U u.M u UXe t t U u.j.9 n x y.Z 3X- 3X5 cXIX- xX5 hXGXeXD a R 3 BXI B.~Xl.5XDXl.a 3.a 3Xl.H B :.9 `.a hXH.,XV 3XJ tX,XGX>.xX> vX+.[.jX>Xn._.Z R 3.u hX*.e.` R.e a.a 3.} 3X,X1XJ c :.K.Z :.M 8.M.NXe.@XnXn ..YXnXGXG x.YXpXp..p.xXn.mXeX, < h a.a.M RXc.9Xc.e.u.a RX-X- R.M t R R t BX-X-X-.a aXIX-XMX5 < <.M x E hXe.i EXeXe E.i E h h < < < < UXe.iXeXe.m >X<.gXpXB Xq.} x $XDX,X1 `.] c R 3 B R 3 c 3 c 3 cX-X-X5XlX-XH :.] 1Xl : T $ R RX- < c., 1XB.gX7X7X%.[X+.FXq.F.pXr.g >Xp._._Xe x U <.M h $Xe U pXnXnX4Xr.j z nXr nXrXw.jX+ v .XnX+ J o.E & gXK '.9.Z sXUXUXU & M.> n.9 yXU.' y vXP.j.j nX>XpXnX+ & vXp.j M M.>Xm.Y.n v s s b H J o J.E 0X=.N C C.W U.Z.M t.M $ hXDX,X1.aX,.e a a R CXD.N.NXeXGX0..XfX2.@XnXi 0 S ^Xi.vXf HXiXnXG h UX,XD vXc nX<.-XH q.$.u", +"._....._...s.m.s._XeXe..Xe p p.N.W._Xn vXG.9 h.W $Xl 1Xw.S xX, sX+Xc h.ZX, B.ZXo.0.kX1.~.8 #XD.~X-XI.~ R.e.a.a R.a t.aXI.aX-X1X1 RX, s v._.@.< ..sX4._.W v $ RXIX- R cXV # I q.KX-.a h.a.}XD 3 3XX.l $XD R.N.M u uXF * *.W u C 8 C.N u t.d.x % { %Xf.@.EX>.EXG 1 XDXIXI 3XVXVX* ~.5X9XV.r.5.r.K.k.k.k.k.kXj NXg.X.oXg.X.XXg.XXg.oX9.b N.^ N NXt.k.k.k.kXj.k.k.k.k.kXj.k.k.k.k.kXt.kXd.k.k.XX*.kX*Xt.kXt.kXt.kXj.kXtXjXj.kXj.k.k.^.^ NXo.^ N.^.X.X.X.X.b.X N.k.k.k.r 3 ~XV ) ( I `.AXJ.2.G 4XyXy !X;X; ! YXJ x 3 1 $XwXwXGX+.j.gXe.FXB.F._.i._Xe : c.a.` 3 3 x.O &.q.+ b y &.+XUX.Xc.3Xl mXw $ g mXl TXPXJXc `XSXHXH., c : :X,X1X1 R R 3 $X.X. T.].[ `XB.jXG.v.. 0.s 0XG . J v 0 v 0 ^.. 0Xf wX>.@ >.JX+.x.pX+._ EX,.M aXH.9Xl.a t.a hXIX5 c.~ R a RXD t R t c R.aX- 3.5 c.~X- R t.a UXqXp.[.-X% >XBX7.g.[ >._ E E._XpXp.FX4.F.F.m.m.F.F.F.g.gXB 1 h.a aX-XI BX-.aX- c 3 cX-.`X-.eXDX-X,X- mXcX,XD RX-X- aXI aX-XI.a.aXc `Xc V.h.S.hXZ.T.SXBX%.g nX+ X+Xr [.-XpXe.FXqXe x._ EXqXqXn.j [.+ [ =.YXrXm.j.9 o &.> z = MX0Xr &X0.> g s s.DXD.DXI U.w.'Xc y.9XGXD $ s s.Z.j.9XmXGXU.+.>X0.+ = = nXm.Y o.9 xXs 8.MXL b.!.q O 0Xi 2 2.s.=Xe.W.w.s tXD t.w.WXDXDXD BXI.Z RXDXD hXl.9XKXGXe C.s OXnXi 0 ^ 0 ^ 2.BX= { HX> v.;._ 1.W $XeXGXG >.MXI.8Xo.H", +".@X4X4 0.. .....Xb % %..X6.s.m...mX4..Xq.@Xr.jXpXp._X+.YXr.)._._ v.-X, h 3.uXVXl DXVXl.K h c a h :.uXI.e R R.e a R aX- R RX-X1 3XV $ C.W v.JXA % %.. v CX,X1XI.~.aX1 a.uX9.KX-X-.a.a c h.a xXI.aXM 3 uXD v vXe p...sXb p %...).) u U uXFXAXfXi.J.j XeXeXL.Y =.OXl 3.u 3 ~ ~.8 ~.u.8.kX9X*Xd.k.k.k.k.k.^.k.k N.XXg.XXgXg.oXgXg.XXg.XXgX9 N.z.kXj.k.k.k.k.kXtXj.kXj.kXd.kXjXt.k.k.k.k.k.k.k.XXt.kXt.k.k.kXt.kXt.kX*.k.k.kXt.kXj.kXt.^ N N N.^.^.o.X.b.b.X.o.o.X.^.r ~ ~XV.8.u.8.u.uXVXV 5X.XU.0.0XO m.' $ !.2XKX. kXw.S [Xr.F.WXqXe < t U._._ x 1 1XD.8XIX-.aXcXmXr.+.h.q.q =XyXw., :.O #.3 mXKXw T.O $Xw.D sXK n mXXXc c R R.~ RX-X1.aXI.ZXV $XJXh }., [XXn.pXpX>.p.F.. E E.-X, h.a R.a.aXKXl V.]X3 D.]XcXKXK., TXcX,X-.8Xl.`.aX-.} R.} EXe.iX+.gXBX7 [.gX%.g.[.p.<.F.F.F.m.m.FX+Xr W.g._._Xq.FXq.FX7 V x 1 R.a.~X-XIX1.a R.a 3 R R R.aXI R.u c 3Xl.e $ B.}.Z RXIX-.a RX- RX-.9 :.9XM 1XK.[ nXH.,.-Xw.,.[.-.,.,.- nX< WX7.[.p.[XpXpX4X4X4X> W.+ =.9XGXG.9XG 9.' s vXG.!.jXC y.j & H y.9 '.Z.D 8X, sX5.wXe.ZX, 8 R :XK g gXPXwXwXU.+.>X0 y.jXm.'X0XmXm.9.w.D RXDXD C.D v.q & b 0X=X=X= 2 O 0 O.sXL v.N U.Z.Z.Z.MX1XI BX,.aXKX3 `Xc k $ R.M u C.N 2 b.v b.@.v.= 2X= 2 ^ H ^Xq._ U h R.M ._X+Xq 3XV.HXo", +".;.;X8 H.4.xX>X>X>.;.x.@.xXfXfX6XfXnXf .X4XnX6XpX> M zXr p...s ..-XpX, 3XM.aX-XIXI 3.KXI cXD $Xc.9 $X, $ 3 hX,X,XD 3X,XIX,.Z.Z.D.uX-Xl vXn.C pXb.d u.Z a RXI.~.8 R R.KX3.~X* ~XIX1XI $Xw x h aX, hXK x v._.. v......XiXb...J %._.s p pXAXb.C.@.EX,.}.M.aXq oXr.Y 3.`.H 3 ~.u.rXV.8X*.r.5.KX*Xd.k.k.k.k.k.k.k.b.XXg.X.X.o.o.X.o.XXg.XXgXg.o.z.^.^Xo.b.X.b.^.^.k.^.k.^Xd.k.kXdXtXd.k.kXt.k.K.5Xt.k.k.kXt.kXt.k.k.kXj.kXtXtXt.k.k.kXj.k.^ NXg.^ N.o.b.X.X.o.X.o.b.X.^X*XV.r.8XV.HXV ~ 3XIX5 4 ]XO ! TX5 B R 3XD $ $Xw.[ nX7XpXp..jXCXZ.G.+ y g '.Z.Z cX5 $X,X,X, $ 8XD.'XD.'XlXw.,Xc : `.}X- 3.aX-XI RX- c.a RXDXKXMXhX..1.L.+.T M S H.@.4.{ w.4.4 w w.;.; SX>.x.jXnXq.<. > >.gXBX7 kXB # aXI RX1.eX-X1 RX1 a.~ c R.~ R $ : $ D.eX1XD 3Xl aX-X1.e R RX-.M.a.aXI.M 3 n $ xXw 1.9Xc.,.,Xw |.S [Xc V k.gX%XB.F W.pX4XnXp.<.E z [.j y.'.W.D.ZXD.Z.'XGXP b.' bXG.9XmXK.9 g 'X, 8X1 'XD B R.MX,X,.aXIXD.0XJ $.Z $Xs.Z.W sX+XK.' y.9 9Xw.n.DX1X,XDXDX1 8XD.'Xm H.q.v 0 0 O.E &XC.@ O.v J.).=Xe.WXaXD 8XD R.HXIXK : : 3 3.}.a R tX, C.NXL O v.N.W.N.N.=X= 0.4X2 .._._ < R R.wXpXqXBX1.8 ~.H", +"X>XmXC y H H H & HX0.; HX0X0 M M r.+X: SX:.+.+.+ r.;.y.;Xn .X6Xn W.Y 1 U.M.M t.a.a < <.a UXD.- x x.W t <.* aXI aXIXIX1XDX,XD 3 x 3.D xXw M.TX>.pXn.9 nXlXlXlX, h.DX1X,.~ 3X- RX1.~ $.D 'X.XG.Y.[Xe y.jXpX>.<.<.J.@X4XpXn.xXnX6 {Xi 0.<.sXpX0.Y.w R 8X1 y.E.E =Xc.}.8XV ~.HXV ~ ~.u 3 ~XX.X ~.r.k.k.k.k.kXjXj.^.XXgXg.XXg.XXg.o.X.o.o.XXgXx.z.X.X.o.XXg.X.X.b.X.o N N.b.X.bXo.k.k.k.kXt.k N NX*.k.k.k.k.k.kXt.k.k.kX*.k.k.kXt.kXt.k.k.^ NXkXd.^.X.o.o.o.X.b.b.X.b.k.r ~.r 3.r.H 3XVXV.`X1 T T '.DX1X1 ) ) RXDX, xXc y.SXc.L.1.F v xXq.1.+X+.Y.- U.Z :.9Xc =X;.OX0X0 o.; =.G.+ ! 8X-X,X1X, c.M < R RXD.M.DXm.w sXKXw.- `Xl `.aX-X-XIX-.aX- c B.aXIXD hXM Xw.S z z.+.hXf.@Xf.@X>.C.@X>.xX>.@ MXrX+Xq.M uXeX4XpX2Xr.X> H M M =XU.j.] g $X,.wX,.Z :.0Xl.'.'XG.' s x.w $XD.w.Z.ZX,XlX1XD X0XL y v.w._ UXe < < < .._ s.9Xc I.%.-.9X.XU D m.DXlX5X,X,.u $ $ $XKXw.Y.-XrXGX0Xr.TX.@.EX>.< W xX, R.H 3 s o oXrXG hXI.r 3XV.rXV ~XV ~ 3.rXX.K ~.KXd.^.k.k.k.k.k.^.X.X.b.X.o.X.o.X.o.o.XXg.X lXgXg _.XXg.X.o.XXg.XXg.X.X.X.X.X N.^XtXt.kX*.kXo.k.k.k.k.kXj.kXt.kXtX*Xt.k.k.kXt.k.k.kXjXtXd N lXd N.o.b.b.X _.X.o.o.X.kXtXV.r.H.u.k.r 3.rXIXI.HX1X1.HXIX1 DX1., D.9XwXc.[XH.F n nXG XwX<.jXw xXqXGXB.i X2.xXp p.m._ E E E.W < U $ h R.aX-XDXD R RX-XIX- RX- c h $ h._Xq.F >X%.[X7XB.l hXXXM 3.a #XMXMX7 k.[XB.[ XM V [.1 [.SX 0.@.jXrXq $ hXe xXG s h $X,XV.9 s v $ 1 #.aXV.u 3Xe.E.YX> U hXI 3.8.r.8.HXV.8XV.8 3.r ).k.r.kXt.k.k.kXj.k.kXd N.XXgXx.o.o.oXg.o.XXg.o.o.QXg.XXg.XXg.o.X.o.o.o.XXg.oXx.b.X.X.XXt.k.k.kXt.X.k.kXt.kXj.k.k.k.k.k.k.kX*XtX*.k.k.k.k.k.k.k NXkXt.b.X.X.b.o.X.o.X.b.o.^Xt.r.8XV.k cX*X*XI.r #.K.` cXV.H.H.u.5Xl x 3 x h.-Xp.Y.9X< n.1XHX.XKXG.9.Y ` #X,XB.-.w vX> =.;.;.+ & HXG.!XDXa ' D D.Z $.} a.} U.Z b.n yXC =.q zX0 nXcXB `XM x.}XIX- hXIXIX-X,.} h XM.- [.xXpXp E u uXeXe v x x._Xq.w [ [Xw 1 $.MXD.w.pXpX>.X2.j.jX5XI $ cXI.H 3.u ~ c.r.u.K q c.kXoX9.XX9.XX9XxXx.XXxXx qXk.z.I q l.IXk.U.z.z.6 l.z.U l l l.z lXk l l.X.o.X.b.^.^Xo.^.k.k.k.k.X.k.k.kXt.k.kXt.r.KXtXtXt.K N.X N.X.X.X.^.kXt.^Xk.b.X.b.X.X.o.X.b.b.X.b.X N.^XdXtX*.kX*.uXV 3.k #X*X*X*X*.r cX1XIXIXI xXHXJX#.3 `XDX,XIXIXI 3.`.} 3.}.a h V X7.gXp 0 v.@X>X>Xh.+ !Xw 8X,X, BX, $XK U.ZXL 9XC.q HXC.T z z.p zX%.hXh.L.1XZ.Y 1 #X7XHXhXc.,XB.,.gX#.S.yXX+Xw : `.~ cX*.0 $ [X4.M U aX1XI.8 R.} `.a c 3XI.aX-XI.8.a.}X,.M pXnXnXn M.p v <.W._ XK.Y.9.wX,X,Xa T.!.9 .aXIXV.u.uXV.`.a 1.E.P.x.< HXrXw.2Xw D cX1.u ~ 3 ~XV 3X9X9XV.r.kXt.k.kXtXt.uXt.u.kXd.^.^.X.bXg.XXgXgXxXg l.z.X l.X l l lXk.U lXk l.z.QXk l.b.X.X.XX9.X.XXx ).XX9.XXkXxXkX9X9 NX9X9X9Xk.z.z.z.z.zXk.zXk.XXx.IXk.zXk.z lXkXkXxXkXkXk lXxXx.X N NXoXoX*.u 3X*X* ~.8XV.8XVXI.HXVXVXlXJ.3XK xXlXD 3 h cX3XXX*.}.8 h.a c.[ VXB .[ nX> H.E 0 y.>.1X;XH Y.2XJ T RX,.ZXD v.n.q &XC & H.+ zX>.xXrXr n z M =.TXw.g nXH.SXH.1 kXhX#.hXh z.1Xw.j.9 h.ZXDX,X,XDXDXDX,XDX, hX,XD 3X5XDX1X, $XDXeXG.j.Y SXrXfX4.<.pX2.x.x.pX4Xn._._ 1 h 3X5 3X-X-XIX1 .}XeXq.p.p.FXB XM 1 c cX- R BXI 3 a.a RX-.a.a <.a.a.a.e.a R.e R RXI RX,XI.a $XM cX,.ZXI kXD.a RXIX.XlXc a.a 3.G.e Y R.a $ 6 xX- $Xl.% RXDX- cXH.3X-.M.eXJ xXN s R R t.aX,XI.aXD.aXD 3XDXI : : cXB [X> ^X6.v ^.sXn.E M M.q =.q gXPXc 'X-XV.'.K $ $.Z $.ZX,X,X,X, xX.XlX, xXG.G.YXc U.Z $.ZXUX,.Z R.MXD.Z = $XK h.wX,.ZXHXKX, $X, R xXDXI R RXDX1 R R 8 8 s.nXC.q b O.v.v.v O.vXGXe.W <.MXJ xXK.u.a $.aX-.a a.u.a xXJ T 1.Z.MXDXDXe.* s o.@X>.@.X4.x.x WXnXq.Z.M.a.~XI cXIX1XDXl h U.F Xr 1.l x # a.a c RXD.e.Z aX-.a a a.aX- < a a., $XJXIXD.e Y $ 3 RXD `.G.Z h 3.u.GXMX1 R.a.3XHX-XDXD RXhXJX# R.aXDXK.O $XDX,X.X- RX1XcXlX# : R.e.,.M.ZXl a R RX- RX, 3 $XIXI 3X, : `XK `.FXH WX>XfXi 2.) vXn z H b HX0 &XCXP.' $.DXIX,XIXl.,.'XU.ZX,.w xX. :.a.a.Z hXH = nXD.ZXD.Z nXJ.Y RXDXD CXl.'X,.w $XD.a t R.MX- h RXD.eX,.aXD RXD 8 R 8.ZXa b.qXC O O 2 b.v.s 2XL vXD.W 8XD hX1 RXD.K.uXI 3.u 3X-X..Z $ R R R BX, $Xe J.s.@.4.) E.p.i.l h.MXeXn.F.pXK.kXo.]", +"X, hX.XcXlXJXJ.Z R.a B cX- x R 3.ZXD h $XD xXl.%XU RXD RXD.} c R 8.D.n 9.9 gXw.9 'Xs.a.u RXI.8XI.8.` h sXpX>...s p t R.a.e #XD.a 8Xe 1 UX, $ cX5Xl 3.}.} 3.K 3.KX1 3X- a # x hXp ...X>.C.m...@.<.< L.JX6 . .X>.YX1.aXV.8.H 3XVXI.r 3.K.`.H $XmX> W ..JXfXn .X2.+.Y y $.a `X9 c.K.K.] )X*.5.5.r.KX*.kX*.k.kX*.k.k.kXt.k.k.oX9Xg.o.X.X.o.z.oXg.X.o.o.oXg.X.o.o.o.o.X.o.oXg.b.bXo.k.kXdX*.X.k.kXt.k N q 5 N.r.r.k.k.k.k.k.^.b.b.o.b.X.o.X lXx.o.X.X.o.X.o.X.o.X.o.X.bXg.X.b.kXt ~ ~XVXIXVXIX5 ) #.u.kX1.8.8 3.` 3X1.u.` 3.K.8.k #XV VX3.`.}XI V )XXXM.l # h.lXM X+Xw & y.j =XKXUXK.> 'X,XD RX,.aXD v s.q &X0X> H zX>.CX: r.P.@ SX0.y.x.[X+.g.g.[ n k =X7 n.g.j n v RXD 8 R.M.a.M.[ xXG x K.9.*XH s.eXJ.3XX D k.u `Xc.9 a =XG U UXqXp.9.@X+.<.Xp.@XeXqXe $ < u.M._X4.S xXJ f )", +"XDXKXcXc.OXhX..9XK.'.'.9 $X.XlXIX1 RX,XDXD a 'Xc $XD BXD.HX5.`.u.w.n.nXPXO '.HXIXD.HXIX1Xo.u.`X1.8.` $ U v J .Xe.W a.} RX- : R R C x.WX,.}XI RX- R 3.a.8XIX-X1.H RX-.a.M < U pXLXn M.<..X>Xf.. .X6.C w H J.j.9X,.a 3.` 3X*.8XI.DX1 #.r 3XJXU ^.@.P.J %...BX6.C...x.jXs 1 ) ) I.$.| f ) ) D 5.kX*.k.k.kXtX*.r.H.u.r.kXtXt.X.b.bXgXgXg.X.z.o.X.o.XXg.o.X.o.X.o.X.oXg _.X.o.X.X.b.^.k.kX*XxX*.k.k.kXtXt.k.k.k NX*.kXtXj.k.b.b.o.X.o.X.X.X l.o.X.b.b.o.b.b.X.b.X.X.o N.b.X.b.kXt.r 3 ~.H.HXV.5.K.5X5X3.8XI.8.`.HXV ~ #Xx.8 c.K.`X* 3XX VX3 :.5XJ VX3XXX, ` hXK `XM .p.[ y.O.1.OX;.OXP.w $ RXD R R.Z v b.j & w ^Xf ^X>X>.4 . w.;.; HX:X:XrX<.h [.T.1 [XZ.T z.1X>X+X,.D.a R.}.W xXH MX%XcX.x WX4._Xe < R.a.a a 3.2.% ,.-X.X M & g.! sXDXDX, xXK :Xw $.Z.w $X5.'X1X1X,.ZX, x $X,XDX, 3 c 3 a.}XI 3X,.a.a $X,XD.M R R.a.a.aXIXIXDXD R R s $XeXDXsXL s b o H 0 2X=.s._.N t.MX,.}X5X,XDX-X1 RXIX- RX- 3XI cX1 3X1 t.u.M.aXK.e.w U v &.s ^.@.pXn .iX, < U.).mXqX+ :.H.uXd", +".Z RX, sX.XP.Z 'XK.Z 'XcX5 m $.Z RX1XDXDX1XD DXK T.ZXl.5.'.KX5 : '.0XP gX1.D.8 c.`.HX5XJ :XVXI.8.`.8XI RXL o.s.s C.M tX-XIX,.a RXs v h.MXI 3XIXVXlX1XIX-.}.aXI.aXX $.a.M.N .Xe..Xp.x ^X>XiXfXfX6XfX8.;.E.@.wXDX1XD.` 3.a.8 3X5X5XD.K 3 3.w.@ 0.P.PXA LXi %Xi SX8 JXw.jXl `X3.5 ).X :.uX5.KXVX*XtX*.k.uXVXV.8 ~.u ).A 5.^.X.XXxXgXg.XXg.z.o.oXg.o.X.o.o.o.X.X.o.o.X _.o.b.o.X.X N.k.uXdX9Xt.kXt.k.kXt.kXtXtX*Xt.k.k.k.^.b.X.X _.X.o.b.bXkXg.X.o.o.X.o.X.o.b.o.b.b.b.o.o.X N.kXt.rXV.H 3XV.HXI.`.8.`XV.`.`.u.5.k ).5X*.8.`.`.8.8X*X* VXXX3X3XXXM.5XlX,Xw $XH.- V.[ k.S k [ k.> =X;.j.n.w 8.Z.a RXs.9 T.q HX0.4.@Xn.xX2X>X> ^X>.xX8 W.h.T.1.h =.1.+Xh.hXhXh.T & yXG x x.9XpXpX4X4X4Xq >Xp y.9.M t RX-.a.aX-X- 3.` cX1 RXD.*XD t R t.M.MXn.{ WX:.xXeXeX,.a aX-XIXl.k.u ` :.S XBXh.- X< `.i.a < 3.aX-.a 3X-X-.`X-X-X-.a R R.~.0Xl $.a.a .aX,.Z.}XDXDX,.aX-.DX,XI a a.a.a.~ RXDXIXD tXI aX1 RX1 3XDX,X-.aX-X-X- RX-X-XI RX- RX-X-.aX- a.a.a aX-.aXD #X- hXl hXcX.XJX. [Xw n MXr J vXL U $.M 8.N.W...s HXm &X0 oXOXL $XD cX,XD.a 8XDXD $.Z RXIXDXD $ h x.Z.Z xXlXDX, cX,.aX,XD R.a.ZXDX, RX5XDXlX- $X1.9 $.9Xl '.-Xw.w.n.nXa s 9XCXC.@Xi.)XeXL x <.}.aX,XD $XlX-.aX1X-X-XIX-XDX5XDXl.a `.,XI :X,XI DXDXl.M._.j.@.v ^ HXpXq.i E E U u._._X+ c 3.H.u", +" R 8XD.9 m.w.wXD.DX,XD.Z.]Xl $ R RXDXIXD 8XlXcXl.0.%XKXK.] mXc.G gXU.!.n.].'X,Xl $ D.2 :X,XI.`XI.8.`XDXDXp ^.v.s u uX-X- 3X-X-.D.w T C R R.`.a.5Xl R `Xl.a # $.aX, u U..._ 0X> S wXf L LXi %XbXA LX6X>.' 'XD.HXIXI.` 3X* :.0.]XD xXD.Y.EXn ^ {Xi {.J L.PXiXf.@.;.Y x s.| ).2 )XJ.] (Xl q : )X9.u.5.5X5.5 3 ~ c.r.u.& P NXx N.X.X.b lXk.X.b.X.b.b N.X _Xg.o.X.o.o.b.o.X.b.X.XXd.k.kXtX9.kXtXt.kXt.k N.kX5.kX*Xt.X N.b.X.bXg.X.X.X.XXg.&.I.z.o.b.X.o.X.b.X.b.X.o.X N.b.o N.^Xt.r.r.kXt.k.u ~.8.`XxX*Xo.5X9Xo.KXV.8.8.u.KXX # 3.} 3.,XMXM.KXMXM hX-.a $ R.,XD |Xc ` [.S ` 1.3.3XZ mXK.9.'.w x D :.ZX,Xw y =.>.OX0.j.SX7 k.gXrXC.@.y >.p.p o.j.j.jXwXw & z.;.jX2.p y.[.Y.-.j.xXr W W W.x.<.Y.Y.w t.a < R R.a.} aXI R 3.uXI RX- B RXD R v.XG JXC M &.OX;.n.Z.DX5.D.DXD.DXDX,.Z.Z.a.a.MXD #.aX, :.2XJXDXDX1X, c.aX,.aXIX,X,XD.' T.-XKXJXKXK.]XUXcXU.9XK.!.9 o b O OXCXC O.v 2 2XGXG U R.aXDXD.aX, $ RX, T.9.e.' hXDXc.ZXlX-XlXl.aXMXD.a R R.MXD.}Xs.E...v ^ HX4._.m._.m p._XqX+ 1XI.uXd", +" $XDXlX. g mXJXUXU D DX.X$.GXH ) 'Xl.w.DXlXl g $X,XD $XlXlXl T.0 D.2 gXUXO 'XU.2 m.GXOXO.]X1XI.H.DXd c U.jXp.B.sX=.d UX,X5 RX1 ` v.'.M.MX-.aX1X3.H c.5.,XK.,.,.[.9XpX+.<.. ^.j HX0.@ z w S rX>X:.CX2.@.@XKXI 3X1.H $ )., I.]X5.] :XJ.9.1 y.jX>Xr.x.x.xXr.@.@ J.x.jXLXUX, :X5 ).5.KXJ `Xc (., )XJ ) 5XJ.$ q.u 3 ~XVX*X* , ]XxX@.7X@.zXk.oXg.o.oXx.z A.&.z.b.X.b.o.oXg.o.X.z.z (Xx.5X5.k N.rXt.^.k.^Xt 5.k.kX5.5 qX9.o.bXg.b N.X.XXk.X.( A.XXg.X.o.b.o.X.o.X.o.X.o.b.o.b.X.b.^.^.kXt.kXt.kX*XV ~.8Xx.k.k.k.KXV.`.`.u V.$ V V., V V VXJXM.l # h.aXI.aXI RXI cX,X,.a.aXD c $ 1 [ K KXh.> @ =X.X;XU !XD.wXU.O =XhXhXZX#.h |XZXB n.+.x.T z MX0.+Xh.T KXh.+.TXZ M.;.;X>.;Xr.; WX8.;X> SX8 WXr WXrXr =.F x $ hXqXD tX,.e RX-XIXIX-XD.aXD.M sX+.xX2X8 W M._.Y c R.a.K hXIX-X-XIX- RXqXK >X+.[X7.[ .l.l h.} # #XM ` #XXXM.l #.a.a R RX1 B R R a a.a.a R R.Z.eXIX-.aX-XI t RX-.aXI.aXD RXIX-.aX-XDX- 3X-X1 R.aX-.~.aX- R.`X- R.`X-XIX-.`X- RX-X-X-X-X-.aXI c.a c.aXl : #Xc V M o 0 0 0 v.s U 8X,X,XKXwX. g.9XKXn o.@ M &.E gXaXD.'.]X5 CXDX,XDX1XD.W R.M 3.M $X1X,X,XKXKX..9Xl c.Z.9XI R.MXDXD R aXD.ZX,.ZX, BXD C 8 sXs x o &.qXCXC J H.E.v.v / v v x aXDXD R RX,XD R $.M.-XK a.w.Z RXDX1.a.a.aX- a 3.a a : $ :Xl.9.YXs J 2Xi.4.x.F.J._ p.m._XnXc :XI c.r", +"XwXlXc D.n $.wX5 '.'.0XJX.X. Y Y.G Y YX.XUXJ.'XD R RX-.aXI 'X,.n.'.! s s.!XU ! s.!X;XUXP g.0.n.] g.]Xw x.j J...s % . p .Xe u < xXe [ U RXD.a.` 3 cXl ' T.] 'XK : TXJXr.@.h.yX> y HX0 S S S M.;X0 ^.TX> o h.a 3 : mXK ` D.' :X5 I 5 q c :.uX, $XG x x.YXwXp.-.jXwXrXUXhXKXK cXIXI : c 1X1X,Xl.u cXV cX* cX5 ~ 3 3XV.rX*.R j qXo.&Xz.b.I.X l.X.b.z ZXk AX$.bXgXg.X.o.bXg A.z.R j ) ,X@XoX5.k.k.kXtXtX9.7 I j I.$Xo NX9.b l.XXg.7 X (.R 7.Q.X.X.o.X.X.o.b.X.o.b.o.X.o.X.b.o.X N N.^.^.^.k.5.^Xt.r 3.K ~XV.8 ~.`.8 3 3.$ VXX.KXXXXXXXX.lXMXM.a.}.a.a RX-.aXDX1 R.}X,XD.M., `XBXJ = = yXO.q !XmXO sXK @XOXLXH.GX. nXw n n., [.1.LXZ M =XrX0XhXh K.GXhXHXZ.+.+XZ S H H SX0.;.;X0.@ ^.@X6 z.T.+.h.hXHXHXcXwXH [XH h.MXD.a.}X- #.a a.a U v.jX2X2 WX: [ WXh.YXlXD 3.] :XI 3.~ R R t.MXqXc.[X+XB.[.[ .F # ` # 1XXX3 XX.,XBXMXX x.aX, $XD B R.aX-X-X- a RX1XD.aX-.a.eXI :X,X,XlXDX-XI.a R.a.e a a 3XI BX-X- RX-.a.u RX- R 3.`X-.`X-.u cX5.k cX5 c c.kX5XlX5 R.uXD.uX,X5XJXB.1X> J 0.vXeXe v $XK.9XJ.nXIXDXD.WXL yXn.@X0X> 9.' 8XPXKXD.D $ x $ 8XDXD.D.a.a.M c hXDXD R.W.Z T.YXKXKXcX..-XK :Xl $XlX,.M.*X-X-.} a.a R.M.ZXL.9XC 0 bXCXCXC ^.v /XL vXG.M tXDXD.e RXD.*.MX, xXD RXDX1X-X1X- $.aXIX, # D.eX.X, :X3XKXKXKXH.) v 0.B 0 H.@.p.[X+X%Xp kXcX3.R 5", +"XD.9XU s.w 8X,.wXI RX,.9.ZXD R 8.u ' DXO.G.O mX,X,.Z.a.ZXDXD.'.] sXl.n sXL.' sXU s 9XU g.!XP g g g g g m.9.- o.@Xn . . p.m._ EXe.M.1.j h t.a.a.a.Z.uXI.~X- 3X-.HXDXDXG.j.yX:.@ wXZ =.O & M.O &X>X>.@ oXr $XM # m c TXl.% m : m `.5Xt.8 ~.H.`X1X1 RX1 3.Z.].'Xl.9XGX+X; $ T `XD c.,.]XcXKXJ 3 I 3XVXV.8.8XV.8.8.8.r ~.k 5Xk j q.6.X.o.I.b.X.oXx.7 d.X.o j qXg.bXg.b.oXk.b.XXkX$.r Q.|.k.K.k.k.r.XXt.z.kX5 7 3.k.k.^.^Xd N.X.b P AXo.t.tXx.X.b.X.o.o.X.b.o.X.X.o.X.o.b.X.o.X.o.b.X.b.5.^Xx N.k.kXt.r ~ ~.` ~.8.8.` 3X3.$X3X3XXXMXMXMXM #.}.a.}.a.a.aX,XVX1 aX1.}X, 3.}.S., K nXh.OX0.>.> & 9Xm b bXm gX.XwXw.-.9.9.9 x x XHXh.OXw y HX0.>.G.O K.O.jXG &.+.q o J H.E S z.E w JXb ^.@X>.<. =X0Xh.+.+ M.y W.hXr.Y.3XlXl 'Xx.] x c h.Y h.u.r ~.HXV 3.8XIX1 : TXc ' RX, DXwXp x.M cXV.a cX5 $.Z.uX,X1XlXV 3.8XV.r 3.8 3.r.8X* NXx NX .:.zXxXgXkXg.o.XXg jXxXk.X.: l.bX9.bXg.bXgXg.X./ 7 P P.uXxXd.kX*.k qX9.RXd 5 PXV.u.kXtXj.^ NXg.X.7 Q.& jX@Xk.oXg.X.b.b.o.X.o.b.o.X.o.X.b.bXg.o.X.b.X.X.o N.z.X.b N.kXt.k.k.HXV.8.8.`.`XI.u # V k.,XX.l.K h a.}.} aX,Xl.u x.D 3 U a $ hX5.,.-.[X;.1XZ.+XhX0.>X0 =.O.O.O.O KX;.O.1 D.-Xc ` `XwXc.>XwXmXUXU gXy.G = @.1X;.+ KX0.T H.+.+X0.+ z.v.v ^ 0 0 ^ w ^Xf.j M z.1X+.pXw MXU &Xw $X, ` hX, #.FXpXp.@ >X>XrXp.Y.1.S [ nXJ.9 $XXXx.5X- RX- RX- t RX,.i.-XpXB.l.-.-XMXB V D 3 3 cXl # : |Xc 1 xXI 3.aX- R.aX-X-X- R R.`.u.5 3.}.8X- a.a R RX1X-.~ a.a R R.a a 3.eX-X-X-X1XIXI.uX,X*X*XV 3XI 3.K 3 c.~.`.` B.`.`.` R.`X-XIXD cXD $ `XcXM [X> bX=.) U.9.-.M :.wXD.DX, $.w xXp y S.@ H H o JXmXG 9XG vXG.9 'XLXK.>.wXDXJ.ZXI.a a.a h t.M.a.M R.a t RXDXD xX, R R.M R t R.a a.aX-.aXD t.nXG.q o J 2.vXv.v.) xXp x.M.a.a a.eXI R.e.9.Z.,XHX.X.X..,.,X.XKXK.,X5XM.D.eXIX- RX5.KX-.a a.W v.. 0 w 0XnXw v `XK kX. [X5 3.8.rXV", +" y g $.wXc s.Z D :XJX. Y TXcXl : '.] DX,XJ.' RXD.Z :.,.uX1.w D.ZX,.M R.* $Xe 8.w.w.n gX;.].OX,.D 8.n.].H.uXoXc '.'.j x y.jXn.Y U C.dXe.-Xw.YXwXc.YXcX,.MX, 3XD.2Xc x v . w w.; = 9 oXP.j =.; ..@.. pXnXpXp.O m 1 ] m.0X1 h.Y.Y xXD ~ 3XV.8 ~.`.`XV.5 'XcX1XI $ xXKXGXDX, R 3XIX1 c.a RX1XI 3.` ~ 3.r 3 3.8.8.8 ~.rX9.&X Xk N.7.X.o.z l.X.X.XXg XX XxX .&.X.XXgXg.b.o NXg N P IXtXNXxX9.u.k.k.kXk q.RX* f (.k.k.k.k.kXt.b.X.XX$.X N.7Xk l.X.X.bXg.X.o.o.X.o.b.X.o.b.X.o.X.b.X.o.X.o.X.b.z.X.b.X.b.XXo.^.^.k.r.H ~.8.8XI 3 3.KXX VX3 XX h 3 hX,XJXKXKX.XH cXJ.,.Y `.YXh [Xc [XrX0 =X0 J y.T.O.hXh.+Xh = n.3.O.O [XH.O [.3XcXH y.9.!.!XP gX; TX.XHXU.+ = b J & v v .XnXn v v.sXG.s..X6X>X0.T.T.1.y =.T.+XZ.+.O.1 =.[.M tXMXnXp JXpX+ yXq x._XqXp x xX, tXD.u.eX-X-X1 a 3 xX5.a.M.M.M < Xc.[.- k `.,XBX-XIXI.8.}.`.a `X3XM #.} a.aX-X-X- RX-XIXD 3X1Xl.K.K.5.a 3.aXDX- RX, R R.aX-X-.} a $XDX1X-.uX1X-XlX- c.8X- a.`X*XI.uX* c ~ 3.`X-.`X-X-.` R R.aX-.a $X3.9 `X7 kX%.j JXLXL UXcXl 3 TXc T g.Y kXK 1XLXpXp 0.@ H &.q &.>.q HXC oXG 9.'.'.9.DXaXKXDX,X,Xc RX, $.a R RXD R.a RXDXD tXD.M R t R.a.aX-XIX-X1.a a R 1.w.j H J.v /.B *._XG x.M.aX- aXIXD B.*.a.ZX.XK TXK DXlX5X. #XIXIX,X1.~X,X1 BX1.`XIX3XD R.M uXe 0 ^X:XCX> n # RX1 R.u cXIXVXV.k.k", +"XcXH g.w.MX- R hX, `Xl c R.Z 3 $ $.ZXl.ZXJ T.e RX-.aX, TXc.|XKX1.w.- xXl nX,.Z.w sXKXJ.ZXK., T.D 'XUXU sX3XXXD ' m TXD .E.LXh.+.S = [ =XcX7.- k nX. [., [ nX;.1 !X;.O.O.OXPXc.O =.>.+ o OXs.W tX,.W.MXn v.W.NXe v.s 2.@X2.T.x.y W.jXr.1Xw.j.jXUXw.j XqXpXGX+.j y.Y xXD x.Y xXeXn U t UX-.ZXV.` aXD x : T :.- :.-.M.} .Y [.- k # $.`.}.8X1XIXIXI 3.,XM x 3 < aX- a <.} cXM :.K ` q.5.K c.uXK c.eX1X-XlX1 TXl `.9 `XcX3Xl R 3 :.u.u :X5.K #X5.K : c.K 3.u cX1X- R RX-X-X- RX-.a.a.a hXM.[ `X7 kX< zX0 HXGXe.M RXD 3XDX1XD xXD.ZXD h t.M.W v ^ b J oXCXCXC H.; & HXm v s s.w.D.Z.ZX,.2.,X, $.- x $ cX,X,XD R.eXlXD R RX, aX- R.a R R R R B R 8 mXL b o H.@X=.B.sX+Xl.} R.a.a a 3 BXD R R R U.Z xXl.' $.eXI R.~X- a c RX- 3.DX-X1X1X1.ZXs.M.)Xe % ^ w = n.S 3 3 ~ 3XV.HX*.rXd.u.k", +"XU !.9XKXJXJ.- : cX. :XIXIX-X1XD R B TX.Xw.ZX,.' 3 R RXl.%.O.Z R.a x $ 1XH.' s sXK.2XcXMXI :.5., g y.'XJ m #.HX1.Z.5X-XI.9 &.jXrXGXL.M CXeXp vXpXpX> =Xr S zXG._..Xb . ^X> M.+.!.j gXU.O MX2.T.y.@....X4XrXn._XwX. s.' TXwXwX+Xp R.aXI 3 3 3.8.`XIXI.H $X, #XMXM :Xl.Z 3X- 3XIXVXI.H.`.H.`.8 ~XV.8XV ~ ~.rX*.k NX9 NXgX9.b.XXg.o.X.z.o.o.X.b.XXg.XXzXg.XXgXg.XXg.o.X.X.X.5Xd.r.k c.R ,.k.5.k.kX*Xj.k.kX*.^X5.r.kXj.kX9.^.^Xk.XXx l.X.I.o.b.oXg N.o.o.o.X.o.b.X.b.b.o.X.b.b.X.o.X _.X.b.z.b.X.o.b.X.X.b.X.X.X.b.r ~.8.8.` 3.`X-X3X3XMXMX5.}.a.a.aXDX1 RXDX,X,.aX,XM., [., k.jXr.+.; o ^X0 H M.1 M zXwXr.1.1.1XHX< kX< n =.1 [X..> nXO.'XJ.j gXw y & & OXa.W UX- < < hXs.MXD C.M.W v.v... & & oXm 9 sXDX,X,XD.ZX,XDXcX,XI.9X..ZXDXD 1.a R.a R a 3.a a RX-X-X-X1 RX1 RXw.9Xe O H.@.s.)X>Xw.}.a.a $ RXI BX- RX-XD.Z $X, $X,Xl $ RX-.a.a R RXDX, BX-X- RX1XD 8XD xXL v.s.sX> W.pX< |X* ~.HXtXtXt.k.rX*.^.r", +"XK x.Z 1.'X,.u ` c.,.,X-.aX-XDX1.a BXJ @X. R $ mXcXlXl., DXc $ B R R.aXJ $Xl.'.0XO g.'X1 3Xl 4XyXw s.nXO.'.,.] 'X1 mXI.}.w M & n.j.[.-Xr n MX>.T M.s.x M MXh.v v.B ^ SX8 z M g.YXK g.9XwX0Xn..XnX>XGX>XrX6.{.CXf.j.-XHX.XwXcX.XDXI R.8 3 ~ 3.r.`.8X1.`X1X1XI.8 c ` : : ` ) :XI.K 3.8.H.`.8.H ~ ~XV ~.uXt.k N NX9.o.X.X.o.X.o.o.X.o.Q.XXg.o.oXg.o.o.X.o.X.b.oX9.oX9.b N.^.k.kX*.k.k.k ).& q.k.kXt.k.k.k.kXtXtXt.k.k.k.kXz.X.X.X.b.X N.z.X.b.X.bXg.b.X.b.o.X.bXg.b.X.b.b.o.X.o.o.X.b.X.o.zXz.o.b.X.o.bXg.bXg N.XXoXd.r ~.8X1.8 3 3X3X3Xl # #XD.a RX-.MXIX1XDX,X1X, `.,XZX#.h.1.+.;XC SXC.; S zX0X0X:.<.; n M [XhX< =X< [ zXw M.h y.YXK.>Xw o = =.E.q.E O.=.W.M 1X3 `.-.9 sXlXJ.w y H oXrX>. & & 9.'.nXs.DX,.ZXDXDXDX, R $Xl RXD.Z :X- R R.a.aX- RX-XI R R B BXD B 8X,XL s b.q ^ vXn u U a.M a B R R.a BX- RXD t RXD hX,.Z $X- R RX-X- RXIXDX,X- R.`X,XI B.W v.=.W ^Xn.@ MX7 |XX 3XtXtXt.kXtXtXdXtXt.k", +".Z.DX,X, R a.a.e.aXI x.KX-.a 3.~ RX, mXJ '.ZXD $XK.,XK T $XJ.0XD RX-X, $XD.n.nXO g.]XD.H '.2XUX;.!.n.nXOX5.` ' : DXJ.}.} 1.jX+Xn._ pXnXnX4.jX2.T.+.yX0X>X0.;XC ^ S S M H K.O =XyXHX;.> K.jXG.@.;.E.YXn SX8 wXf.C.x.p.jXH.%XK 5 ' :XlX-XI 3 ~ 3.H.` F.8X1.`XI.`.aXI $.l $ hXK.a I : D 3 3.H.8.u.kX*.k.k.k.kX9XgX9XgX9.o.X.o.X.o.oXg.U.o.o.o.oXg.X.o.o.X.o.X.o.bXg N.^.k.k.kXdXt.uXtX9X5.r.r.k.k.kX*.kXt.k.k.kXt.kXtXt.k.k N.X.o.X.o.X.zXg.XXg.b N.b N.o.o.X.b.X.o.X.o.b.b.o.X.b.b.b.o.b.z.b.X.b.o.X.b.X.b.X _Xg.X.bXdXt.H F.8.`XI.u `X3 1 #.}X- X> J.+XrXK m.] mXJ D hXH RXD t R R.a R.M C CXsXs vXs.N.) 8.; v 2.s OX0 = y O sXsXD 8.MXD.MXD.DX, R RXDXDXD.WXDXDX,X1X-XDXD R R B R R $.'X, R.M s bXmXm 0 o.;._.M R a.M R.eXIX1XD.e.aX- R.a cXDXDX,XD 3XD.a R.a.a.*.a $ R.a.aXD h.aXaXs o.v vX2.1X< k.,.rXtXdXtXjXtXdXtXt.kXt", +"X, $XD R.a R R.aX-X,XlXIX-XIXI RX1X5Xc 'X, 8X1.* R t a R R $XJ $ RXIX5XDXI.Z.0 gXO 8X1.D g '.0XPXc !.0 g.`.HX1.Z =.S.g.i.pX>Xn.s v.m v..Xn.4 H z &.; H H =.> &X0 & &XmXUXO ! gXU =XKXwXy =XU.9XeXe.d v.x w.CXfX0.C y.- 1XD.u T : : T 5 )X9.KXd.8.H.`.`.`.`.8XIXI.a ` $ h $ h.} 1XK.5 D (X9X3 ) :Xt.^X* N.XXgXg NXg.X.o.X.oXg.X.b lXg.oXg.o.o.o.o.o.X.o.X.o.o.X.b.^.kXj.kXtXt.uXd.u N.k.K.k.kX*XjX*XjX*Xj.kXt.k.kXtXt.kXt.k.^.^.XXg N l.b.b.X.oXgXg.oXg.X.b.b.X.b.o.X.o.X.b.b.o.X.b.X.oXk _.X.o.X.o.b.oXg.o.X.o.X.oXo.^.r.8.` F.8.`XX VXMXl 3 X8 M.q &.+ n z.h.h.T.T z & &X0Xh.+ &.j.EXr y J 0 /.v.s.w.Z $XD.DX1X1.ZXDX,XsXL o.s.E.C.4.xXrXI.HX1X-.a 3.}X+.j.p.EXG y.a.`.8.`XI.aXBX4XqXe._ $X,XV.5XK DXc x sX,XDXD.a R B.M.M h.i.Y U.aXD.`XIX-.KXI 3X*., | | kX3XBXM # a.l xXrX%.pXB.-., h.AX3 N qX*XXXMXM $.a a.a.aX-XIX-X, cX- aXIX-X-X- 3XI 3XDX5 3.uX,XIXD BX-XI R.%XMXXX- aX1X, $ B RXI.a h 1XcXw =.jX> v J.>.9.' 1.n.wX, c.a 3.} RX,XDXJ RX,.' tXsX, vXU U.M u UXc._.N.s.sX>.E &.E s vXL.Z.Z.DXDXDXD.wX,.W.Z.Z $.ZXDXDXDXDXDX1XDX,XI.a R 8XlXU s.wXL.w oXC 9XC.E v.M R $Xl R RXD s.Z.Z c RX1 RX,XDXl.uX,XDX, 3 t.aX,XlXD.-X,Xl a aX3Xc xXmX0.>.O M.1.T.hX3 k.$.K.kXt.kXdXt.^.r eXt e", +"XDXD R aX-X- R R 3X1.5X-XDX1.HX-.'XJ.].].9XK TXlXJ : D.Z.u.9.2 T RX,XV.~.Z.0 g gX5XD.D g.! '.w 9 g.>Xy.D.HXI.a.nXp W r +XrX> . yX>._.. 0.@X0 &.EXn vXn.9 &XG yXGXm s.! '.!.' bXP.! T g !.] R 8.NXG.jX>X4.@.E.4 z.1X+ .uXD.DXV.`.DXVX5X5 ( D.A D )XV ~ 3 ~.`.`.8X1 h x 1Xc x 1 x.a.Z : `XJ I.$ I.f.$.^.b.X.X.XXgXgXg.b.o.o.X.o.o.U.o.oXg.oXg.oXg.oXg.o.b.XXg.b.^.k.k.kXt.k.k.kX*XdX9Xt.kXtX*XjX*XjXt.k.k.kXtXd.kX*X*.k.kXtXj N.b.X.o.z.XXg.b.o.o.b.b.b.o.X.o.X.o.b.X.b.o.X.o.b.X.b.b.X.z.X.X.o N.b.X _.X _.o _.X.o.b.^.k.r.8.8.8.}.K V :.l c <.a a R.aX1.aXD $X-XlXc kXZXSXh.+.+.h.+.hX0Xn.E._X+..Xn ^ o J H oX0Xh W M MX0 = HXh.+ =.+XhXwX0.+ z.; O.. 2.N.= uXDXsX,XDXDXD.Z.ZXsXL J.v.E M.E M.w 8.8X-.r 3 aXK [Xw M & MXw.2.0 ` D T .YXq._Xe.gXc D :.%.]XDXD.-.Z hXD B.HXDX,.aXqXqXpX [ J S.E.; gXc.]XU DXKXIX,X,X,.ZXD 1.>.Z.ZXK R RXDXeX,.M t.a.}.i.M.d.M 2 v.v o.q oXG b v v s s s vXGXG s x s s.9XG.nXsXD C R RXD.DX,X,.w.w.'XL v.w JXC &X0 o 9.N.M.M $.Z T.9 TXwXKXKXlXK.}.aXIXJXKXw 'XJ xX.XKXw.[.>.j.O s.[X,.3.9 Xc = H =.+XH.T.S [ VXJ.,XX.5XtXtXtXtXd.k.k.k.k", +"XcXc T :.'.5X5 $ :XD.]Xl BXIXDX1XK.].' T D gXcXU YX#.G.O 4.GX.X; ` )X,.D.Z TXc T 8X1.'Xc.n.n.n.nXU.j.> D.Z t.wXp.JXbX2 r.{XA b 0Xp.@ HX>.O.+.+ =.q.> !.9.9XO @.!.'.'.n.n g.OXO.>.q !.0 'XD 8XlXr.EXnXp y M yXl x cXK.'Xw T )XD $XVXIXIX-.8.8.8.uX* ~ 3.8.8.}.8X- 3 a.a.}X,.i.9 `XD 3.u.k cXtX9.K.XXg.k.XXxXg.bXg.X.o.o.X.o.o.o.X.z.bXgXg.bXgXg.o.X.b.b.X.X.o N.kXj.kXj.kXtXdX*XdX*.X.rXt.^X9./ N.kX*XtXtXd.kXtXtXdX*Xt.k.k.k.bXx.b.X.Q.b.XXzXg lXk.U lXk.b.^XjXj.b.b.o.X.o.b.X.o.X.oXg l.XXzXx.bXg.o.X _.X.b.o _.X.X.X.^Xt.8 ~XI.8 3.,X3XMXl.aX- R RX-X1XDX1 x h c h `X..O.1.h.+ z M M.h.YXe v._.)X= 0X> y s.Y.T = W.@XCXn.+ &.+Xr.1 M M.+X0.T = MXp 0 2 2 pXa.NX,XDXe $X5 x.wXG O v.= H J & JXGXDX1.`.8X-XV 3., M.>.+X;X; @ YXJ.5 xXc XpXn.S n., 1X,X1.aXD `.-XwXK.2XJ T :XwXJ n = [Xc < 3.`.`.8X1.u cXI 3XJX3XM.lXMXM # a.a #._Xr.jXnX+Xn # # |Xx ).$XM.,.[X7.lXM #.} h h # #XX.lXMXX.a.aX-XIX-XI R RXDXD.~.a k s hXD h 3XD $ ` `.,XUXK.2X,X5 c cXMXMXM.,.-.1 zX0 bXw.jXcXJXKXUXw : ` $ 1 $ T mXl xXl $XDX,X, h.a.} RX,XD.a.a.W C UXL v bX> HXC o J J J 9 b bXG.E J o J.E 9 s s s sXaX, 8 C TXU vXG v o yXC & HXm & o J.W.M.M RX,XlX,.Z.Z.Z.a.aX-.aX-.uXD sX.XJXcXH :.Y x 1 sXGXe &.W.M C.Y h.M.W._ o o n.- k.[X7.9.,X3XJ.5.5 NX9X9.r.kXtXtXd", +".9 :XK.]XKXcXUXJ.2.2 ! D.uXlX5XI.'.2 $.'.w.] $ c x 'XlXcXK m 4.|XKXK.Z $.w T DX1 cXDXJ.'.n.n s s &.'X; =.wXD._.@XA.B.PX:.y M.E.9 v.9.WXL.OX; & @.'.G.% g.w T.>X; sXPXl ' g.O.OXO.M.DX1X1.H.M.-XGX> ^X+ x.9 g `XI 3X1XIXD T.9 ).,.5X9 : )XK.5X5 3X*X*X*X*.8 ~.8.`XIXV R.}.a.a h 3 3.H.K.k.r.K.k.^.kXg NXg.o.o.X.o.o.XXg.o.o.o.X.o.z.b.o.o.b.o.o.o.o.^.^.b.X.^.kXj.k.k.kXtXt.kXdXd.kX9Xj.KXj.fX*.$.kX*.k.kXdXtXdX*XdX*.k.k.k.kXz.o.XXg.z.bXgXg q.6 iX@.I.I.b.^Xj N.b.b.b.X.o.X.o.b.o.X.XXk.X.X.I.z.X N.b.X.o _.X.X.b.o.X N.kXt 3 ~.8 h I VXMXX.a <.a R RXD.aXDXlXD cX, `.-X . 2 O 2XL v.w xXq x.w xXeXe.W 2 o 2 vXC.9XD 3XI.`.8 ~X- 3 B.9 y.j.>XK.DXDXIXIXDXB .iXe E xXD R RXDX, xX, $ $X,XDXDXD._ ._X+ U.}X-.8.`.~.8 3.K.,X3 V VXMXM.i h aX-.aX, .[X+XnXn u < x.5X*XV $XJ .g.gX7.F.lXMXMXMXMXM.l XM.l `X, 3.eX- RX-X1.a.u.MX,X.Xc ` x.9 hXc `XM .,XcXB.% ` `X3XX.[ ` .- [XwX> v o.w h.Z.Z.9 s.[X. x $ :X.Xw vX,X, xX,.u h `X,.,X3 1 xXK.9 1 x.W 8 p b O ^.q H H.q.;.q.;.q.q M & H &XC.q H b b sXa s.n.W.9 & b o HXC w ^.@.@ H.;XC.W.W.M R t R.e R.a.Z $.a a.aXI RX, $X5 $XD 3 hX,.a x.WXs.s.sXL.s v.W.-XpXpX+ H =.+XZXXH 1 R 8XIXDX,XU m g.] gX5.nXU.].nXK g ! = !Xm !Xw g y 1 $.8.`XIXI hXp.@X>.E x.} cXlXc (XXXXXcX,XD 3XV.uXX.5 ( :XxXJ 5 )X*X*.kX* ~XV.8.H.`.`.8 R 3 3 3X1.8XtXt.kXj.^.k.k N.XXg.o.b.XXg.oXg.o.o.o.o.X.oXg l.bX9.o.X.b.X.X N.^.k.^ N.kXtXj.kXj.k.kXtXt.kXt.k.bX*.r.kXg.z./X*.kXtXtXdXtXd.u.kXdX*.uXtXdXd.b NXg l.b.X.b.oXkXg.bXz.^.^Xj.bXgXg.o.o.b.X.o.X.X.X.b.X l.X.XX@X@Xx.X N.o.X.o.o.o.b.X.b N.k.u.r 3.8.KXJ V 1 :.}X-.aX- RX,X,.Z c.a xXD `XwX#XZ z MXG 0 0 v 2XLXn.WXLXn =X;XUXKX- 1XKXrX+ H.O.T.O.1.S.SXH.1.1XZ.1Xr.g. J.@ vXL.W U v v H v &X+ oXLXG 1.Z $X,XV.kX5.zX5.uXDX3XH.3 T `., :Xx.8 3 c x XpXpXq._Xq U.M t RXD.a $.MX1X1XD U.M._.m.FXpX,X1.`.8.8XI.`X* cX3 VX3XM.l a < aX-X-XI.l.p.pX+Xp.M <.a 3XlXl.5.j.pX+.p.gX7XB.F XBXB X7 kX7 .lXX 3 #.aX- R.a R 3XD.a.a hXK.,.,.S kXcX7 .lXM ., [ V kXM XXXB .Y.g z M oXL.M $XK.a h xXKXc .>X.XK.-.ZX,X,XDXDX,XD $ $ 1 yXcXy.] T T.9.Z 8.N v.v OXi 0 J ^ ^ 0 0 ^ 0.v J ^.; 2 b.E &XCXC o OXLXLXL b wXC b.v.v.v.v.v w 0 OXLXe.a.a.a aX, R.MXDXD t R aX-.a RXDXD BX,X, $.M.M.MXe.W b 0.E.=X0 HXw M W MX0 M.OXh k [.,X#XhXH.3 6.,X9 qX3 q.kXtXt.kXd", +" R a R R RX1 8XDXD.n tXl ' $.].2.0.ZX,Xl R.w.Z xXKXDXc.wXD : !X,XD.DXw ' s gXDXIXJXK KX; =XUXw !.> =.'XU.W.EXp...s..XC.Y x.9 D T.ZXD DX$X; DX. 4X5.G m.'.9 g 'Xm g.OX; mXl R 3 x.]X3Xo ~ R x.jX>X+.W.MXI R.8.uX3XX D ` D.,.5.8 ~.8.r.u.kXo )XxXx.k.kX*.k.k.k ~ ~ ~.`.8X1.8 3XV.8.H.kXtXd.X NXgXg.o.b.X.o.X.o.o.b.oXgXgXg.b.oXgXgXk.X.o.XXg.b.o.bXjXj.kXjXd.k.kX*XtXt.kXtXt.kXt.k N.KXj.k.kXjX*.^.kXt.kXtXdXdXd.k.k.u.kXtXtXt.^.X.oXkXg.oXgXg.b.oXgXj.^Xj.X.bXx.oXkXgX9.o.b.b.o.X _.XXgXx.X N.& 5 QX@ ).z.X.X N.X.X.X N NX*.r.r 3.` : VX3XX #.a.aX-.a < $ hXD 1.3 1 : [.,.S.1X0.Y 0.sXG JXL O y.sX>.j &XwXDXlXV h $.- MX+.jXh.1 k [X7XHX<.1.- .hXh.yXrX: MXhX2.@.v.s vXe vXs.Y.T n M M = M.> kXKX.., D I.| IXo ~.H 3Xl # ` | :X3.$.rXV 3XV $.l.YXpXGXpXe x h.}.WXDXJXJXK m xXc tXeXeXq x XI.8.8.`XIX-.uXI.u V XM.l.} < <.aX-.a.l.-Xr Xp._ t.a.aXlXcXG.j.y W.X0X0XpX4 ......@X>.E = !Xm.2.OX. !.2XcXy 'XJ.' 4X;.9 g.'XwX; gXU.]XUXK $XDXIXV.]X3 `Xl $ 1 x.M R.aXIXIXIXI.`X1XVXV.] 5XoXV.r.k.k.kXt.kXdXtXt.k.kXj.kXj.k.r.8.8XI.8.`XI.u.`.H.r.uXd.^.b.X.o.X.o.X.o.X.bXg.X.o.o.o.X.oXg.X.b.z.o.oXg.b.X.X N.^.kXt.k.kXtXt.kXj.k.k.k.kXtXt.kXt N.k.k.kXt.k.kXtXtX*Xt.kXt.kXd.uXdX*.k.kXdXt.^.XXzXgXx.b.X.b.X.X N.kXj.k.b.oXg l.o.X.bX9.o.X.b.X _.XXgXgXz.k F.rXx T 5 ) ).k.k.k.u.kX*X*X*.r 3.8.`Xl VXMXM # R.a.a a.a $ h x x.3 x = xXc.-X<.[.j JXmXmXP.9.w.x HXr.E v.E U g .% 1 YXl k yXZ.h.1Xh [X#X vXGXmXZ.+ & M.+.jX0 zX+X0 = y vXaXyX;.%Xw mXwXJ.9X,XKXPXK g sXyX;X; TX,.u T D ` c :Xl 3 :.]XJXl.uXIXIXIXI.`.8XI.` 3.8XI.r.KX*.r.KXt.k.^ NXjXtXj N.o N.b N.k.kXt.u ~ ~.8.`.8.u.` ~XV.k.kXj.^.b.X.o.XXg.bXg.b.b.o.o.X.o.X.oXg.b.o.z.X.o.o.X.o.^.k.^.kXt.k.kXt.k.k.kXd.k.kXt.kXt.k.k N.k.r.rXt.kXt.k.kXt.kXt.kXtX*.kXtXt.kXdXtXd.k.^.XXkXg.XXg.X N N.kX*Xj.k.XXg.cXg.o.X.X.X.o.X.b.b _ _XxXx.kXtXV.8XDX1 cX3 I 5X9.K.k 3X*X*X*.u.r 3XIX3XX # #.} 3XI.a.a.}XqX7XcXK.,X7.lXM.Y ` [.S M.j y 8XD.wXc o ^.@.@.s J.Y.-XcX5XJ cXc.OX. !.TXXpXq.j.-Xw.[XB.jXc = .YXq 1.- h.a.}X-XI.8XV.H.`XX VXX.l.lXM h c.a.i .gX+XpXp U XpX4X2X2X+ rX+ z.T.xXrX+.XpX0.E S M.y zXr..Xs U a xXJXK 1.M.Z $X,.Z.uXI.ZXIXDXDXDX,.M.a $.a.a R R R R.a RXD.M.M.M 8.M.M.MXs G 8 C 8 C t t.NXe C.N.N.).)X= 2.v.vXi.v 0.v 2.) C C.M.Z xXlX,.ZXD x.a 3 3.ZXI RXD.w h.W.a a.a.a.e.ZXDX,X, RXoX,.M.MXnXn.9X1X,XDXC 0X=X=.s JX0 k.-.SXHXH [ K.3X#X3 I ,.$.| I }.HX*XV.kXt", +" 1X.XlX.XD.- $ 1 ' x.a.Z R R $ mXl.D c $.ZXcX5.Y hXlXD RX1XD TXy cXKX. g 4XI.DXI.0 T.n.nXD.Z s s K !Xh.O.T.jXwXr =X0.>X;.G.! s s mXH.2 g.2.'.' mXOXwXwXUXK.'.'.> D.DX5X- cX5 ) DX3.5.H R 3.k D.uXI.8.H.8.8.8.8 ~ ~.r.kXo.k.kXtXt.^ N.X.b.^XjXz.X.oXg.X.X.^.kXjX*.r 3.8.8.8XV.8 3.r.k.k.r.k.b.o.b.o.X.o.o.X.o.X.o.o.o.b.X.o.XXg.U.bXg N.b NXjXt.X.^.kXdXtXdXtXdXt.kXtXt.kXt.kXtXtX9Xt.k.^.uXt.kXtXt.kXt.kXtX*XtX*Xt.kXt.k.kXjXt.^.bXk.b.X.o NXjXjX*.k.k N.oXkXg _.b.b.o.b.X.o.o.X.X.X.b.k.u.rX1 3X, R R.~ 3 c T ].].kXV.r.8 3 ~XV.` V `XM.u.a.8 3X-.a h.Y.[.,.[XJ ` :X3.-., nXhXc R.DXVX,XD.Y v.) 2.s JXr.TX;XK ! D I (.O =.O MX.XwXwXZ.L.1.FX4X4 hXrXp.-.1.1.1.gXHX< zX..1 kXB 1 .9XcX..8XI cXV 3.8X* ~.kXt.k.^.k.^ N.X.X.k.kXk NXg N.kX9.rXX.].,.> =X0.+.+ SXr W z WXH WXr.pXrXn._XnXB.i.a.8.`XI 3X5.8 3 cX3 VXX VXMXM #.l #.FX7X#Xr.p y M.<.x W M.<.x > zX2 W.hX+Xp XnX4XnX4X4.x.p [X7.FXM < #XDX,.}XcXBXBX%X2X2X2X2X: zX>X6 z.4XnXpX> yXM EX,XeX4.x.yX2 w S HXG.W $ x.w ` $ h cXD $XD 3XDXlXJXc c $ $XD.M.aX,XDX-.a.a R R.a a 1X1 R t.MX,.MX,.*.M.M C 8 < 8 t.MX,Xs.*.M.N.N.N.).) /.)X=X= 2.N C._.9XD x $ D :XDX5XlXcX,X,XI R.M R.MXlXD.a.aX-.a 3 R.aXD 3X,.% mXeXmXr.jXU m.%X. K b J ^XC.> = =XS.GX#XJ.,.3X# 6 `XMX3 ) ) :Xo.u.k.kXtXt", +"XJ k.,Xc.9X.XK.,X..' :X.X1XDXl m.2XD.* R.eXKXw aXl :Xc.wXKX5XJ.2 8.w s.0 KXDXI TXU '.w s.Z.n vXPXOXm g.w.DX, h.Z xX.X.Xw g.' '.D.w $ 8X,.Z 1.'.9.GXU 'XU s 'XPXw D.]XcX5X1 RX1.u T IX3.K 3X- 3XI.8 3 ~ ~ 3.r.r.r.r.k.rXxXt N.b.X N.X.XXg.b N.bXg.b.b.X.o N.^XtXjX*.r ~ 3.`XV.rXtX*XjX*XjXj N.b.X.o.o.X.o.b.o.b.oX9.o.b.X.o.b lXk.bXg.b.bXjXt.^.X.kXdXtXt.k.kXd.kXt.kX*.k.kXt.k.kXx.r.k.H.^.r.kXt.kXtXtXtX*Xt.k.kX*.k.kXt.kXtXt.k.b.z.X.X.b N e.^.^.^.^XgXgXg.o.b.o.oX9.bXg.X NXzXd N N.k 3 3XD 1.9.9 1 1 x.' xXl g.,XK.}XI 3X-XI #XcXMXl x $ c # c.} $.- k [X.., k V `XKXc.GX# `Xc.2.$.0 : :Xr & s.s.s 0 0.jXm y.H.Z.D DXlXU n.-XH.-.Y.O.+X0 [.1 W.F.jXX4Xf z z UXr E.M.M u UXGXp >.[X% 1.l 3.aX-.i X7.pX:..@.@ o y.YXG >.xXfX8.4.4 M.; J s.W.WXD $XDX, 3X,X, 3XI `.2 kXlX. 1XJ ` RX-X1X,.a BX- R R R.eXc x X5 x a.M UXD.a.M t < R a R aX, h t t t t t.M u.M.)Xs.).).N.*XGXH 1X.X.X..G.%.%Xw.G x `X,X-XD R.Z h.Z.a.aXD.}.a $ $ :X. cXh.O.OXh & M g.] ).' K 0 JXm HXKXK k.3 V.,.,X3.- V., #.a 3X1.u ~.5X*.kXo.z.5", +"XDX,XlXI $.aX,X,.Z 1.' TX,.D DX.XU.] 1.Z h $.9X1 R.M.Z.3X;X.XU $ BXD.nXU ! ' gXU.'.' s ! 1.' y yXD 'XD 8XDXs.n g.>XwXPXK g :XK mXJ g.,Xw m m T.0X. T.'.' s.wXy.G $ : :XK :.u.Z 3 3.uX5XV ) D.KX*.rXtX*XtXj.k.k.kXt.k.^Xk.^.X.XX9.o.X.XXg.XXg.XXg.X.b.oX9.o N.^.k.kX* ~.r ~.r.u.k.kXt.k.^ N.b.o.X.o.X.o.X.o.X.o.X.o.bXg.b.o.X lXg.X.o.o.XXjXj.^.X.^ N.^.k.^.^XtXtXtXdXtXd.kXdXt.k.k.k.5.I.r.kXt.kXt.kXtX*XtXtX*Xt.k.kX*.k.kXt.kXjXtXk.X.o.o.b.k.^ N N NXg.XXg.oXg.c.c.cXg.b.b.^Xt.kXt.5.K 3 xXGX+ .X6..E.E M nXGXpXGXG.pX7.YXq 1 xXB.Y #XK k mXl 3 #XM : I.2.%X. D., D D D D I DXPXw 9 o 0.@ ^ 0.; &.wXdXV.RX5XJ Y.OXH KX;Xh.OXr v.1Xr z W z.1Xp.g.S k.-.Y .9 : `.l xXKXc.,.8 ~X*.8Xt.r ).$.X q.XXx qXxXx.XXk )X*.X q N.z.o.XXx.kX5.k.uXl 3 $.Y y H H M z.jX2Xr M W.xX4Xn.FXpX7.i c.uX*X*X3X9XXX9.k.K.KX9 VX3XKXBXK.F [X7.pX2.xXr W.@Xn.;.+ W..DX.XNXUX;X; 5 `XIXI.uXl.K (XI 3.8 3X*X9.X.kXjXj.k.^ N.b NXg.b.zXg.X.o.o.o.X.X.o.X.o.oXg.o.o.o.X.oXgX9 N.^.kXtX*X*.kX*Xt.k.kX*.^.bX9.o.XXg.X.o.o.X.o.b.o.o.X.b.o.X.o.o.z.oXg N.oXg.^Xj N N.oX9.o.X.X.b.^XdXd.k.kXt.kXtXtXoXoXdXt.k.k.kXt.kXt.kXtXtXt.kXt.k.k.kXtXt.k.kXt.k.kXxXt eXj.^.b.o.bXg.o.o.o.cXg.c.c.cXkXgXg N.^Xt.kX*.K c.iXcX> ^X6.P.P.J ^Xf ^ ^ ^XfXp.EX>XG .X> W M W M M.jX%.g.-.g K.G D.$.,XXXJ }.] m )X.X*X* c.k.uXo DX1.] $.9.qXmX>.;.; =.E =XIX1.`.8XIXI 1.K.9XcXhXU.9.jXr.jXpXn.j.x.[.y.T K.SX.Xc [XJ k [ [X..S.O I ) 3.r.kX9X*Xt.kXdXt.k.k.r.k.k ~.uXV.r ~ ~.r.k.kXj.kXdXt.k ) D mXl D =X> HX> H.T JX4 0Xn M.T WXr . .-.,XD #.r 3X*.r.8.8.8X-.KXJXK.' 1 xXrXBX7X2 >X2.x.. v.W / /.vXf z.;X>XpXpXp.[XhX,.a h.* xXG >.xXr [ ` XB.l.[X< W W SX: H r r SX>X6.<.xX4Xn vXn oXn .X>.4.4.4X:.C.EXn.EXG.W 8XD 3X, $X, h cX5 x.aXIXl 3X, xXKX,.u.-.' 3XIX.X5.eX1.a.e RXD RX,XI :XDX, $ :.[XKX3.MX- RX1X1XDXI 3 aX-.a R.a.a.}XD.}X,X,XDX,X, c 3X5X1XVX,X1XDXDXKX, :.ZXIXlX,X,., $.Z h.ZX, hXDX,X, :XD sXs.s O & !.~.u R 3.aXK.G.n RX-.`.a.`.8X-X3 6., VXXX<.,XX,.9 T sXK g.-Xw @.2XyXy.G.G kXl D mX3XlX1.u TXVXV 5 )X* c.k.k.k.^.^ NX9XgX9.o.b.I.bXgXg.o.bXg.oXgXg.o.o.b.o.o.o.o.b.oXgXgX9.^.k.^.k.XX*.k.k.kXj N.XXg.bXg.b.o.X.o.o.X.o.X.o.o.bXg.b.o.X.z.oXg.X.b NXjXj N.o N.b.X.X.X.X.X.^Xt.kXtXt.kXtXt N.^.rXt.k.kXd.kXtXt.kXt.kXt.kX*XtX*.k.kXtX*XtXt.kXt NXt.b.X.o.o.b.oXg.cXgXgXg.U l.c l.UXgXg.b NXtXt.kX9X*.}Xc.E JXf ^Xf ^.J 0 p.sXeXL.W.MXe x sXG.@.J.x.4 WX:X:X2.y.1 nXH ` c 3X9 c.5.KX9XxX9X*X*X*.rX9 5 ).K c 3XD T &Xn.s.... v.! TXIXI.HX1XI.8.}.`Xc.2XhXw.OXh.T zX0X2.;X+ M [XZ IXcXc.3Xc.- V X3X7.-XK aXV.rX*X9.k.r c.^.uXd.k.H.u ~ F.`.uXV.r.r ~ ~.r ~Xt.k.k.k.2 5X. T.,.O &.q w yX0.@ b S M.x.h M.h.+ MXHX 0 2 /Xs.= / 0 S HX8X>.xXnXpX+ xXc c $.}XGXp. w.4.; S S.4X>XnXaXs.w 1 tXDXKXDXD k ' RX, m R R $.Z a c `X, RX5 $X-.Z $.%X5.~X1 RX5.* 3X,.ZX, $.ZX- RXD :Xw.2XlXDXD.Z.Z $.K.D 3XDXDXDXD.a.a.a a.a a a.~.~.`XlX-X1XIX,.`.a.e RX,X-X- $XD RXDXH.3XcXl xXD.Y xXK.] `XZXwX0 o =Xw D.uX9XI.} DXJX, RXI.`.`.8X-.` 3., V XB V [.Y.9XJ c.uXD.8.K.HXV", +"X.XcX..2 kXUXJXK.9 : ' : '.'.2X, R B sXl.9 ' T.ZXK.GX; D.eXlX,XDXw.wXK T.].' TXcXK m g.D x.Z sXK yXw.9Xl.w TXw TXJ yXJ.MX,X,.F n.9.Z : s.'.2.2XU ' g.2X;.ZX1Xl DX. 3.aX5.9 D.].uXVX1.K (X9.$.& N.^.kXz N.bXgXg.b.oXk l.bXg.bXgXg.o.o.b.o.o.o.o.o.bXgXg.o.oX9.o.o N.^ N.k.XXt.k.^Xt.k.XXg.X.X.o.o.X.o.X.o.b.o.X.bXg.X.o.o.X.o.z N.bXgXg.^.^Xj N.o.X.XXg.X N.b NXjXt.kXdXt.kXt.k.X.kXt.k.kXtXtXt.kXt.kXt.kXt.kXt.kXt.kX*Xt.k.k.k.k.k.5.r.X.o.b.o.c.U.cXk l.UXg l l.c.U.UXgXg.X.^.k.k.rXMX*.a.YXC.@X6 ^X6 ^X6Xn.) u u.M.MXD.M 8.Z vX4..X4 . ..C.{ ; W.;X<.O :.`XD 3XV 3XxX*.uXtXtX*XtX*X9.$ I ~.5 cXcXcX. oXp v v & = yXc.u.D 3XI 3 3XI )X. m.G K K K =.hX0.+.@ S nXH.3 YX#.3XHXS k.- [.,XH., :XI 3.r.5.rX*.rXV.k.HXV.XXJ DXJ.]XOXx.`XV ~.H.r.u ~XtX*.r.uXVX5XV 8Xl 0.v 0.@ b.v 0.+.h ^.+.4.+XZ.T.+ z.1X;X,.`.k ~ ~ 3.HXDX1.9XlX, U.wXLXp.[X:.x.4 w 0.NXs C.N.).v H.;.; M SXr.@XpXp 1.MXHX, U._XpX+Xr.[X.@ vXeXe.M.ZXc.u xX5 RX1 hXD.MXDXDXD RXI R R R BX-X,.uX-X1X-X- D :Xc :.0 g D.'XwXJXU D.wX,.ZX,.D xX5XH.DX, RX1.ZXDXIX-X- RX-X-X- t R.a.eXI RX- R B 3 c R RX,.a.M.a aXIXDX-XVXD R.ZX5XH.YXcX#XJ.%XwXJ.,XK.1.L MXLXsXK D D.2 m `.3X5 DXoXl.`.~.`.`.8XV.,XXXX VX7 kXp x.-XZ.u ` c 5 : )", +" $XlXKXl :.'XcXKXKXy DXy.GX. !.0XDXD.'.% ! :XUXIXJXU :XcXw.ZX- 8XDX.X;Xc 8 RX-.a.ZXw 1X-XK RXD t.MXD UXDXJXh m nXlX,X, h UXcXw $XD 8 ' sXc.>.O g ].2XK TXJ cXDXVXl I : c.u c.] (Xo.H.5X5.^ ( 5.X.o.X.oX9Xg.bXg.X.b.UXgXg.o.o.bXg.V.oXg.o.o.o.o.o.o.o.oXgXg.o.o.X.o.XXg NXx.^Xt.k.k.^ NXg.X.b.X.b.bXg.o.X.o.bXg.b.o.b.X.o.bXgXg.oXg.X.o.b.b.X.b.X.b.o.^XjXjXj.kXj.kXtXt.k.kXdXt.X.kXt.k.kXt.k.kXtXtXt.kXt.kXtXt.kXt N NXt.kXtXtXt.k N.^ N.oXg.c.c l.U.c.cXk.c l.c l.U.cXk.c.b.XXdXt.kX9X* 3 g.q.q H.4 S.;Xf...m.).M <.}.a.M h U.MXL v._XGX4.C.P ; L.<.Y.G k.0XJXJ ) 5.2.R D ]Xx.|.k.u.r IX. : DX5 m : $ T n = nXw.+ =XhXh.G.OXI.u 3 3XVXV.8 $XU.OXhX0 H.+.T.@ y.j.1XH.S [., kX< [ [ =.jXw !XJ.D.8.5X*.u ~.H.8.H.5.2.%.0.0.'Xy gXUXP mXV.H.8.H.r 3 ~ 3XV.H.KX,.DXP wXCX0 H.@ O ^.@ MXfXi ^Xf.4 S M.+ M M =X5XJ.^ )Xo D.K.9 D.3 c :X,XL v.@X6X6 ^ 0.vXs.N C C.= / 0 O.vXn.s wX2XpXp v $.-.e.[.wXn.-.[.-Xp [Xp nX:X0 z z.x + [X2.;.; M.4X4.<.C.4 SX8X: r H J 0.v v v h U.a $.Z c.aX-X-.aX- R R.MX1.MXD.aX,X1 3 3 3 3X, : 3X, 3 DXJ TXK $ $.Z.w.Z 8.w $ R B 8.MXD.DX, R.wX,XD R RX,X5 R RX1 R.aX1 R B RX-.aX- RX1X-XDX5 RX-XD RX-X, a a 3X-XI #X1X,X,X. $ 'XK.9 xXl n cXl x v v bXDX-.H c mXc : `X3 I D D.`.`.`.`.8X-XX V., V k.gX< n 1XhXh.1XcXH I.%", +" BXl.Z.e 8 R.a c 'XcX.Xc D.2.GX;.2Xl T.9Xl.wXD s m T h gXJ.ZX,X,X,X..O.'X,XDXDXI '.2.wXcX5 $.a R R RXl.9.GXwXcX1 8XD x.9., kXc UXDXs.0 T !.2X;.%.O DX1 #.] ` IXJ :XV T ( : (X1XV T.X P 5Xx.X.zXx.X.o.XXg.b.XXg.o.o.z.o.X.oXg.cXk.U.U l.c.c.V.o.o _Xg l.U.z lXg.b.X.X.X N.X.kXt.^XtXj.k.b.o.X.o.o.X.o.b.o.X.o.o.X.o.o.X.o.oXkXg.o.X.bXg N.o.XXg.b.b.X.b.^.^XjXjXj.k.k.kXtXt.kXt.5.kXtXtXt.k.k.rXtX*Xt.kXt.kXt.kXt.k N.X.k.k.k.k.k N N N.oXgXg.U.U.c.U lXkXg.c l l.c.UXk.cXk.X.b.k.kXj.XX*XIXc.qX0 M MX:X0.;X4 v E h.} hX,.aX, $XD.Z 8.Z U.)Xn LXA {X4XrXw IXJ.5 m.] 5.$ I 5 5.R Q.kX9X9 | PX5XJXK.K.,.'XJ $ Y.>.q J H.j.jXmXm $Xw ) c.KX*X5XV 'XN.GX0XGX>X> 0.@.;.1 zXH =.1X< n [ nX0Xw 9.0XOX1X-.|.5.].| :.2 m.G.2.OXyXO.>Xy 'XU g.2.2 TX5.8X1XV.H.H.HXI c B.DXU & M z.+ & H.; S H S.xX6.;.4.;.T.+ = z.OXU.,XJXJ ) D.] DXlXK x hX,XeXe.v 2XbX=X= 2.N.M t t.M.=.s 2.)X=Xb.v.{.xX4XpXq t hXK x 'XPXO.2 ( ! ( @XyXc.G @X;.%.OXyX;X;.>.>.9 b 9.!XUXOXU TX5 $ : gXc g.2.% n.>.>.OXh.+Xh = &.x.<.;.y S.4 z ^X> ^X> y n s xX1XI.uXV.` R c x h.w.).NXb /X=.).N.M.MX- t < C.NXL *X=.)Xb.P.;.C.X8X2 r rX: r r + r ;.{ ;.{X8.y r H ^.4X>X>X> H b vX,XGXl 1XDXDX1.u a.a.a a a aX-.a.e a R R.a R.aX-.~XD.ZX5X- RX1 c R.a RXDX- RX, R R.a RXD R.aXD.M.Z $ h.M $ hX5X5.a $ $X1XD $.9.9X,X, hXKXlX5Xl.'X5 kXD a.a.a .O.O D T.DXJ., , ( :X5.r T I.%XJ.2.5.0 5.| DXx.^XxXx.&.&.(.X.o.XXg NXg.b.b l.#Xk.U.z.U.U.c.U.U l.U.U.U.U.U.U.U l l l.U lXg.b.b.^Xg.XXd.^Xj.kXjXt.^.b.o.XXg.o.o.X.o.o.o.X.oXgXg.b.X.o.z.o.o.6.I.6./X@Xg.o.o.o.o.b.^.^XtXtXt.kX*.k.k.kXt.k 5.&.zXoXt.kXt.r.kX*Xt.uXtXtXt.kXj.X.X.b.X.kXjXd NXk.XXgXgXk l.U l.cXkXg.o.b.o.c lXk.cXg.cXkXg.XXz.X.^XxXt.H.n !.!XU & M &.E.vXe.N.M 8XDX1X-X1XIXD.H 8XD RXn .X>X>XmXlXD.HXtXdXt.kXdXVX*X*X*.k.uXdXV.5.Z h.9 hXl.] :.uXV.Z.8X1Xs.D vX>XG.. O JXG.YXP.Z.kX5.H.u.0X;.> = &.; z.+ z =X: M zX0 M MXwXwX..> ! g gXPXO.| ! !XyXUXOXU.'.' s.D.WXDX,XD $.w.n s.! 9.! !XU !XOXU.9XOX.Xh.1.O.OX. = nXyXh.1 MX0 W.xX2X>.@.xXC 0X4 v...Y.+Xh T.H.5Xo.r.5 $Xl.WXeXs.;.EXe.N t u t t t a t.e C C.W C C 2X=.sXf S.x.@X+.p x sX<.ZXB h.j H WX8 r rX8X: rX8.{ r ; ; ; ; L.4.; wXf OXf vX>.j MXe y gXwXcXlXDX1XI 3.a a.aX- <.aX-.a.a R R t R.~ RX1.a.uXI 3 R R.a.MX,X- $XD ` $ :X,XD.MXI RXDXDX1 R.M.Z x $X,XD hX, $XlXD.}.ZXD., $XJXcXKXK.9XK TXcX,Xl 3 R.}X- R.a ` $.eXMXD #.aXI hX5XKX, R.M R.aXc T mXm.E.>XC 4.q ! MXcXl.9XKXUXw oXDXD 3.`X-X-.`.`.a.`.}.a.a.9.YX%X+ zX<.p.1.O.9", +" $XDX-XD.9 R $ $ $XJ.ZX; 1.n.,X;X5XJXJ.,Xl B RXI $ mXl $ T.ZXlXD.u D 8X1.DX,X- D.O $X1 R B RXI ' m gXU.].0XOXU g g.2 g.0 ' ' g !XO.2 K 4 :X5XK :.H.u.] I 7 ] :.R :.5 I f.5 q )Xx.& ,.7.R q.R.z./.I.z l.U.U.z.I.U.I.I.U.U.U.z.U.#.U.U.U.U.c.c.c lXg l.c l.c l.o.bXg.o N.z.o.^ N.^.k.^.k.^ N.b N.o.X.o.X.o.X.b.bXgXk.c.X.o.oXk.o.X.o.oXg.b.o.b.X.b.X.X.^.kXt.kXt.kXtXdX*XtXt.kX*.^ )X9.kXt.k.uXtXdX*Xd.kX*XtXd.^ N.X N.b.X.^ N N.XXk.o.XXg l lXk.c.U lXg.o.oXg l.U l l lXk.U.cXg.X _.XXxXd.DXo gXm.'.q.> J O O 2.WXD.ZX1X,.D.DX,XD R U R pXe v n.WXD 8XV.H.rXdXdXo (X9 cXtX*X*Xt.k.DX5.'XG.9XG c #.2 ).Z.kX5 ).5.Z.D @ y.E b 0.j.q nXwXy D ).2XyX;.O =.y.;.@X>X>.; HX>.;XL.Y.wX,X5Xc.2 g g.DX1.`X1.! !.> ' 9 ' s 'XDXD RXD x., $.a y.ZXGXG g gXm.'.' '.0XU g @X; g $ $ : D.>X;.>X0XZ.hXp W.;.@.h z W S M.x W.+.O :X5.XXx.K.K $.' bXn.=.jXe & .9 ` $X,XDX,XD hX,XDXeXD.N.W.s.s.. H.4X8.xXnX+ v h U =XGXp.{.{X2X8.JX2.<.x.C ;.{X8X8 ;.4 SX:X8.4 ^ 0 v vXcXG g.-.[XK.Y : $ R c B 3XI R R t tXI a aX-.aX- aXI.a.e.aX, RXI R R R R R.Z tXl `.Y $X, $X, $ 1 $ $ UXD.a a R h.ZXD x.Z h c $XM RXIX, $ $ $XD tXD R t.*.* RX, h.~ a.a.a a.]X,Xw :X.X.XJX3.%XJ.>.3.' RXD.M.9Xl $XD xXKX,.WXs.EXG.W.MX,.E.s 0 bXnXG.'XDXI.HX1X-.H.a.`.a #.a `.h n WXr k nXH x", +"X. RXwX,XJXl.YXD R.e.MXD R $XU.u hXDX, :X3.DX-X1.Z.% D.9 : 1 DX, :.Z R R R R T.3XJ 'X1X-X1 BX,XlXOXU.0.w.Z !XwXKXPXU s '.nXP g ! @XUX; Y.'XVX5 5XJXx.5.5.| ).5.R YXxXV ).5 5.$.RXxX9./ q.z.7Xx.I.zXgXgXk.U.#.#.zXu.I. .I. . .I.6. . . . .6.6.6.6.6. .6. .6. .#.z.U.U.U.IXkXgXgXk lXkXgXgXgXgXgXg.o.oXg.o.o.oXgXg.UXg.o.bXg l.b.o.b.o.b.b.b.o.o.X.b.X.^Xt.k.kXd.rXt.k.k.u.k.k.k.u.r.rXVXdXt.k.kX*.u.kXt.kXtXd.^.XXg.X.o.X.b.b.X.b.z.XXg l l.U.cXkXkXkXg.X.oXg l.c.c lXk.cXkXkXgXg.XXg.XXV.H TXK @.O K.+XC M HXG 1 yXl m.|.w $X, hXD.M U..Xe.@ nX,XD.H.r.HXtXx.z.k.R.R.KXtX*Xt.kXd.H.w.'XL bXKX, : P.| Q I P 5 I.2.O RXG vXG.s.E & =Xw.2 g TX5.2.O.+.O M H.@X6X6.; y yXw.ZXDX1X1X5.` 'XyXOX5 g :XcXw.!.q s.nXeXa C t.M 1XDXHX.XK.,.3 1.1X. !XZXOXmXOXUXP yXU.O.>.> m.GXy K K K KXhXZ z M W WX8.h.+.h.h.L M.hXpXG.wXVX*.KX*XVXVXl vXG.sXG.NXK.j 1 } h.] 1.M R t.eX-.} R.M t CXs 2.sX>X>X>.CXpXpXn.YXq n.< WX2X2X2 + + r r.yX:X:X2X8.y M r S.4X6Xi.v.s.WXe UX, R M.;Xf.v w.@ HXeXU ! ]X5XVXV.u g !.2XOXOXUXw.2 g.9Xw g.w.ZX,.Z.Z g.3X.Xc.]Xc TXw.YXcXK sXJ.Y T.9 x.w.Z $.-XcXc.n gXl yXUXw.> M z.pX2.x S SX:.CX2 M.xXn.jXG a c 3 ~.8.8.` RXIXD.@ p.WXs tXD $ ' cXh $.' sXlXDX-.a.a a B.*.=Xs.=X=Xf SX8.CXpXpXpXp..X4X2.<.J.JX2.J.T z.y M M z W M.< ..<.xX>XfX6X6 vXeXs.WXD 3 c.Z.M.ZX1XD.HX-.D $XD.a.M RXc '.Z.Z.ZX5Xl.,XVXDX1 a.a.a.Z.-XKXw $ x.Z.W.D.Z R.9XU x.ZX, $ $.W hX,X,.w U T xX,XDX, 8XD xX-XD.M.aX- tXDXDXDXDXD R RXDXV.aX-X-X1.e.* R R.aX, h c.aX- R.ZXD 8XD hXD.M T :XlXw c x.a x p.+ v M 9X0 MX2.4 2.j.+.9XDXV c.uXx.5 DXX )X-XK XnXnXc.pXwXpXZ", +"XD c aX, hX-.ZXDX,XN xX,X5XU.ZXJ mXNXH.|XD RX- RXJXN.'X1 RX-X, : KXJ.2.w.3 !XJ.]XcXO mXU DXc D.O.0XDX,X, n mX. y x.nXG @.G K KX;X;XJ.ZXI TXJ.|Xo.K.K q.A ].]Xo.X.5 Q Q 7X@.t.X.z./.&X .fXk.XXg.z.U.oXg.U.U.U.c.#.I.U l.U.#.c.U.c.U.U.U.U.U.U.U.U.U l.c.U.U l.c.U.c.U.#.#Xk.UXgXg.o.X.b.o N.o.b.b.b.o.b.b.oXg.cXkXg.b.o.bXkXg.b.o.X.o.oXg.XXgXgXxXg.X.^.K.^X5.k.kXd.k.k.K.k.uX9Xt.k.k.k.k.k.u.k.K.X.5.5.X.X.X.X N.zXk.z.U.I.z.z.z A l.I A. .I.z.#.z./.I./.I.6./.Q.I A.6.Q.I.R.I.I qXk (Xo $.2 gXU.> z =.@XpXnXe h # xX5XKXl E.w hXeXnXp ^.jXGX, c c.k.2.3XKX5X3.K.5 NX9X9.5X9.X.5X5.w.! o bXw `.$X9X9 N )XxXk.5.5.k.kX9.Z.'.9 o.jXe.w.ZXU.5 $X5Xl = =X> wXf ^.CX0XaXl.]Xo.u.uXt 5Xd.2 g 9 9.' s vXl s.9X,.M R.aXD RX,.,XlXD B.a B.ZX,XDX, xXlX,X,XDXIX,X,.Z.YX,.M x.w C.Z.9.!XmX0.1.yX2 WX2.xX: S z WX0X+ y.>XD c 3 3.8XV.8.`.8.a.YXe.WXs C B t R.MXD sXKX.XcXK ` h c R RX1.* 8.).WXF.v.@X: wX>.@Xp.x.<.{X:X%.J.p.y.pXr z M.jXSX+ M.x.[.pX4X:.@.4 ^.J ^ vXsX,X1XK :.ZXc : T., : `.,XKXcXJ RXKXKXJXKXJ.-X5 `X- R RXIX- m `Xl.wXD.ZXGXe.ZX,XDXs $.9 nXcXc.wX,.aX, c.W.Z xX,X, h.ZX, cXDX5X,XD R.a.MXI.M R.ZX,XDXIX, #XI.e R R B R.a.a.a.a.M 3.uX, RX1X,XD RX,XDXD $ ) x 'Xc.| | DX x k D IXJ 5.2 D ] ( (.`XI.-.1.-XrX<.h.[Xh", +"XD RX1X-XIX, RX- RXcXNX.XcXc RX, : K : R RXIX- R.3XN D R RX1X5Xy.2 KXyX.XJ.2 m.'XN.% @.9XJ g T.].3 Y.3 'X.XwXl x.!.9 !X;X$.! @X$ !X5XJ.u 3.5XJ 6XJ ( DX5Xx 5.kXJ.X.XXx.R.&.:.z.oXgXk.IXu.o.X.XXg.b.oXg.U.U l.o.I.U.U.U.U.c.U.U.c.U.U.c.U.c.U.U.U.U.c.U.U.c.c.U.U lXk.6Xk.UXk.UXk.UXgXg.o.b.X.o.o.o.o.o.bXg.U.UXg.o.o.b.b.I.o.b.X.o.o.o.b.b.o.X.b N.k.kXjXt.k.rXV.8 3.r.H.r.H c.H 3.8.8.8.r.8 ~XVX*XtXtX*XtXtXt e.^.b.b.X.b.b.b.b.zXz _.o.b.b.b.o.bXk.cXg.U.U Z.t.t.t Q.R Q.t.R 5.& ) I.H.0XU 'XPX0.> M w.j nXM.- D c.]XD.' x $Xq u._ vXnXp.M.}.KX3XJ D.'.0XD cX* FX*X*Xt.rX*XVX* 3XI s bXa 9 $XXX9Xk qXkXk.zXg.I.zXx.^XX.5.!Xa o 8XD 3.H.8 ~.8.5XH y H.. JXfXi.j.-X1XlXV.H.kXVXxX5XJXOXO s s.w.w.Z.MX, 3.a.a R.aX1 RX1 3 hX-X, 8.Z.D.ZXl h.a.M.a.M.Z hXI.a cXD h.WXDX,X,Xa.n g =.>.[.1XrX2.< W zX%.[X%.jXrXG.a $.H.r.8 ~XI.`XI.a R v.s.NXs u u u.M.).NXsXeXq n U [ `XlX, B B R R.N.N.).sXf J S wX>.<..w m c.K c.5 (XIXIX1X1.~ FXV.5X#XwX%XpX+XBX4", +" B R.eXI a.u R R s TX,X$XwXl R.a.Z K 3XD B.*XD.ZX$.OX$.DX1.H g (.'.GXJ m '.Z mXl K B.wXlXPXl g.wXNX5 mXy.] s $.'.'XPXO !.G.%.2X. Y cXl.2 5 c.k ( I 7.R ).5XJ.5.f.AXoX@.X.z d.X.oXg.o.o.UX9XgXg.b.oXgXgXg.U.c.o.I.c.U.c.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.c.U.U.c.U l l.c. .U.U.U.c.U.c.cXg.o.o.o.o.o.o.o.oXgXgXkXg.X.o.o.X.o.z.b.b.o.o.b.o.X.X.o.b.^Xj.r.kXt.k.rXV.r ~.HXt 3.H.8.k.8.H.rXV ~.8XV ~Xt.u.kXtXt.k.kXt.^.b.X.o.b.o.X.o.o.U.X.bXgXg.oXgXg.c.c l l l.z.t AX@X@ fXx.z ( I.& 5 I }Xl.].!XP.q.> w ^Xi._.y $ m.] ' @XD k $ [., u..XL.E.n.} 3X* | '.Z.] DXVXIXVXVXtXtXtX*.k.kX*.uXI.n '.nXP $XM N N.b.^XxXgXg.b.^.X.X N #.' s b T 3.8 ~.r ~ ~.8 TX;XU.E.x.TXn.;.G :X;.u `XxXV D (.].wXO.'.n 8 t 8 RXD 3XDXI B 8X1XI R.aX5 3 RX1X,X,.ZX,X-.M.a R RXI $.uXIX,X,XDXD U.a 8X1XP.0Xw.O y.[ z [ z zX%.[XpXX:.1 zXr ..pX+ [Xp.hX: z H S w v v x $.Z 8XD 8XD R.MX5.a R.a h.~ a.a BXI R R R R RXDXIXD.Z $ BX,XD $ 1 1 x 1XeX,.M R R.a.a 3.eX,XDX, 1 x gXcXcXw 1Xe.ZXD.nX, 1XJ 1 xXD hXD : hX1 $XD.9 R R RXD.aXDXI a.aXD.MX- R.a cX5 R R.aX1XDXDX,X,X,XI RX-X-X- cX1 #X.Xl 1Xe.WXn.v .XUX; R 3XI.`X-.u.8 3.`Xd cX*XtX*X1 :XB x.FXqXA .", +"Xl c $.ZX, $X1XD : K @.O DXD RX-XDXNXD R.aX1.e m.-X;XN $.D T ( g DX;Xl.5 R.a BX5XN.3 :.D D TXKX-X.XN.O TX,XDXy.' @.w gXU KXy m.2.0 DXI.u.2 I.XX*X9 ) P I f qXt.k ).&.z.X l NXg.b.o.o.b.o.oXg.bXg.oXg.oXg.U.c.c.I.c.U.U l.U.U.U.c.U.U.c.U.U.c.U.c.U.c.U.U.c.c.U.c.U.U.I.c.U.U.UXk.U.UXk.c.o.o.o.oXgXg.c l.cXg.o.bXg.b.oXgXk.b.o.X.o.b.b.o.o.X N.^.kXj.kXt.K ~ ~ ~XV.8.r.H.8.H.k 3.8.8.8XV ~.r.8.k.kXtX*.kXtXj.kXj N.o.X.b.b.o.XXg l.b.oXkXg.c.c.c.UXg l lXk lXg.XXk.k.rXgXoXoXxXxXx.KXo IX;XK '.!XC.q ^Xi..X%.F.[X,Xc.9 1.-XM hXB CXA.sX>XeXD.} 3.KX,.H.DXD.8XV ~.rXt.k.k.k.rX*.u.u.H '.n gXUXIX*.KX*.k.k.z.bXg.XXgXjXtX*.8.}XGXG TX5.KXt.r.8.k 3XV.9 =X+.; HX> M.1Xc DXJXx D.H ) D.] 'XOXP.'XD 8.MXs.ZX,X1 3XI 8 RXDXVXI 3XI $X,.Z T c tXDXI R.nXl.u : 1 :.2Xc 8.DXDXJ :Xl '.0XPX.XHX7X7 kXw.[XcXp., k.[XH hXD.uX5 ~ ~.8 ~.`.8.} aX< &XC.q.;.j z M M =X0XeX0X>.).WXs nXGXU.wX. < t.M.M *.E ..+ M.h.T.h.T.T.h.T.h.x.X5 BX5.u.K N.K.~X9 3.u.5.5 )X*.}XlXBXq._XAXqXA", +"XU mXUXJ.2XJXKXJXK gXJXJ.9 B.a RX5 `X5 aX1.aXl.3.uXKXNX. D D.0XDXI D.e R RX1X1Xl 6.e aXJXwX..].0 mX.XNXK.DXD 1 sXU.q.' !.%.2.OX5.HXI 5.5.k.5.5Xo ].X ) ( Q ,.R f.X.z.I N.b l.b.o.bXgXg.X.oX9.bXg.o.oXg.c l l.U.I.U.U.U.U.U.U.c.U.U.U.U.U.U.c.U.U.U.U.c.U.c l.U.U.U.U.IXk.UXk.U.U.c.U.cXk.c l l l l l.U.UXgXg.o.bXg.X.oXgXk.X.b.b.b.^.b.b.X.X.b.^XtXd.k.r.kXtXt.u ~.8.H ~ ~XV c ~XV ~ 3 F.8.H ~.uXtXVXdX*.rXt.kXt.b.X.b.b.X.o.bXg l.bXg.U lXk.cXk.cXk.cXk l l.b N N.b N (Xt A.R.&Xk ).5 YXN ! s O o z.EX6XA.d U <.a.M.aXI <.aX, C uXbXbXGXGX,.a 3 ).HX1XD.kXV.k.u.k.rXd.k.rXd.rXtXtXIX9.0X5.%X3.KX9.u.u.k qXxXk l.XXtX*.r.}XDXqXG.] :.KX9 qX9XgX9.5 DX, yXmXpXiX> nXcXcXD 3Xo c.`.`X1XD.ZXO.9.nXD.DXD.u $.,X. $ RXI B.,X*X. R.*X1 : m.- R t.MXI.3 TX1 )XVX1 ] gXDX1XD :.%.D.n.].!XwXHXcXMXBX7.-Xh.S.-Xh [XhXU cXDX*.`.r ~ ~.8 3.8 3 :.q b 0 H &.p.j =.1 MXG.+ =Xs 2.=XL.s.D.- tXc :XD t tXeXGXeX4X>.; H =X2.x.; WXpX>XnX+.+ n & =X:Xn.< >X4XnX2 S z w w 0 J o.w.WX,XDXDXDX1 R s.D $XlX, x RXDX, t.a R.a R a RXDX, RX5.aX,X,.Z R U.a.M.MXD R.aXDXIX, R.eXD RX1 x.* R.a RX,X,XDXD.ZXlXcXJ.] n., 1XJX.XJ c.Z.a.aX,XK.e 1X,XK ` g.3.9.- `Xc R RX- cXl BX- R RXDXDX,X, RX- aX-XIX- c 1 R.eXDXs v.N.; &.O `X1.u.uXoX* N.K N.k.K.8.r.`.` 3.a.YX<.y._Xn >", +"X.XJ D 1 D mXl.'.0XK g.2.Z R BX- BX- aX1 a R.M.a $ TX.X..2 TXDX-XD.].ZX5 $ $ BXJ.GXy.O.2X; YXUX;XN Y.G.Z c.}X1.M.'X;XO.> 'Xl.% DX5X5.| I )X9XxXx.R.&.& A Q QX .7./.&.^Xg.X.b.o.X.o.oXg.oXg.oXgX9.o.o l.# l.U.I.# l.c.c.U.c.U.U.U.c.U.c.U.U.U.c.U.U.c.U.U.U.c.U.U.U.I.#.U.U.c.U.U.U.U.U l.U l.U.U.U.UXgXgXg.b.X.o.b.b.oXk l.X.b N.^XjXj.^.b.X.X.^Xt.kXtXt.k.k.k.r.H ~ ~ 3.8XtXV.8.rX5X9.k.u.k.r.`X*.k.kXtXdXtXtXt.X.b.o.X.b.b.oX9.c.X.oXk.c.c.c.c.U.UXgXk.cXk.o.o N.XXd.tX@.t Q.t.&.| )X9X;XP.nXLXC & JXi.s.d t.a R R R 8XD 8X1.M *Xb.s..XpX5 3.a.KXV.u.rX*.rXt.r.R.X.I ~.^XoXg.k.k.r ~XI.uX5 5 I I.2Xx.5.kXVXtX*XtX*.r.} # # v yXIXo.k.K N NX9 NX9.5.Z.'X+.E.x H.@.j nXUXXXVX*.H.HX5 :X5XU.9 s CX1.M R 'X1 D BXI R B m.ZX.XVXI.a hXHX3 R.M.aXDX. ]XV 3X9.uXJXOXDXa.DX5.O c.Z.0.!Xc =XH VX3 }XK.- K.S Y.3.SXJ.`.K 3 ~.8 ~.H.H.8.a h vXa.= J.j kX<.-X+.j n M yXn.s 2 b.s.)XeXG g x., $ $ <.*.).N 2 J ^ w.;X0 MX2XrXpX>.EX0 MXCX0 =.@Xq.s.p.x M M S.4.@ ^XfX4.s.wXe 3XD UXDX, 1XlXKXc.9 DXJXB `.a t a.a R.} $ h hX,.a 1 R $.- 3.9Xl RXJ.Z.MX,XD x R R R.e t tXD.a R RXD.ZX,XDX,XIXD.DXD.D cXDXDX, #XDXD 3.u.Z :XJ $.%XcXw.9XKXK.9 DXl.9X-.a RX1Xl 3 :X5X1X5Xc RXDXD RXI D R :.u : ) :Xc R.N.).) v $ cX-.8XI.8.H.8.`.~.`.`XI.~.` 3 $ 1.g n._X4.g.p", +"XK T.9 ' kXJXD.eX- BXw.2 ' :.'.'XlX5 $.ZXl xXl $ $ TXJ.' D TX5 $.ZX1XK.2.0XHXD B.DXK m.2X; T.'.Z.Z T.]X,X,.a.MXD.n.> @X$Xc.2 3 `XJXx ) :.&.& )Xd NX@ ]X@.z NXkX@X X@.(.XXg.X.o.oXg.b.o.o.oX9Xg.bXg.b.U.U l.U. .c.U.U.U.c.U.U.U.U.U.U.c.U.c.U.U.U.c.U.c.U.c l.U.U.U. .U.c.U.U.U.U.U.U.U.U.U.c l l.UXgXg.o.o.b.b.o.X.b.XXkXg.b.^.^XjXtXt.k.^.^.^.^.k.kXt.kXt.rXt.r.8XV ~ ~.HX*XV.HXV.kXo.8.` ~.H ~.HX*.uXt.k.kXt e.X.b.X.o.X.b.bXgXg.X.o.o.bXg.cXkXg.UXg.U.cXkXg.X.o.X NXg.X.XXz.X.b NXo.D.]XU.0 b & &Xf.s p.d.a.aX1X1 RXDXD 8.*Xa %X= ..E xXIX-XV.H.8.8.rXt.k.r.^ lXxXx e.r q.bXt.k NXx.k.H ~.uXo.K )X9 5 5 DX9 ~XV R 3 3 h $.' T.HXI.8.k.rXtX*.r.rXoX5.wXGXpX2X>X>.E.9X#.GX*XI ~XV.uXJ.2XJXO sXa.D $.ZXlX,XJXD $XIX1.Z.5 xXI R aX,X, $.M RX, 8.DX1X*.` 3.5X1.0 8XDXDX1.'.0XK.9XK y nXHXMXX.K R.uX,XMXcXc.-X. xXI c.r 3 ~.8.8 ~ 3 3.a bXa O yXrXp 1Xq 1XpXcXw.g &Xw o..Xp.) 2 u.w.9 $XH R t <.N.W 2.@ H.EX0 &.jX> HX+XG &Xw &.!.q.+X>Xp.jX+ M M = r z SX:X>Xf..Xn x.W $.Z.Z $ : 1XD $X,Xs hXD.a.a.MX, hX,X, $ $XlX, hXK.aX5 T.a.9Xl RXGXDXlXD :.ZXcXl a $.aX1 h.}XDXDXDXDXD $.Z 8X,X, $.Z.wX5X5 $ $.u hXD 3 x 1Xl 1XD.Z.9.9XDXD a t R aX-.a.~X-.uXl YX# R.ZXJ $., DXKXJ.-XJX.XJ.|XHXKXw C 8 2.) o hXVXI.8.8.`.` B F.H FX-XIX9.K.2XXXKXJ.-XcXK [ 1", +" B R.aXDXI xX1.aXDX, DXcXUXJ gXJXUXJXwXU.2Xc gX. g.> m gXOX. g.2.2XJ.2X. m.2 mXUX.XOX;.O m.' sXlX5Xl $.D.uXD RX, v 'Xy.O DXIX1.HX5 5 :.rXo ).&.f.XXxXx.I.IXxXg.XXk.& Z NXgXg.bXgXg.oXgXg.b.o.bXgXg.oXgXk l.U.I.c l.c.U.U.U.c.c.c.U.U.U.U.U.U.c.U.U.c.U l.c.U.U.U.U. .U.U.U.c.U.cXk.c.U.c.U.U.U.UXgXg.o.b.o.b.o.X.o.b.X.U.b N.^XjXjXt.kXt.kXt.kXt.kXtXt.kXt.r.^X* ~ ~ ~ 3 ~.kXV.8.8 ~.H.8XV.H ~.H.8XI.r.r.u.k.kXd.b.X.b.X.b.b.XXgXg.b.b.b.b.oXgXg.cXk.cXkXk.cXg.X.^X9Xz.X.X _Xg lXx.X.X.uXI gXGXL H & J.s...MXD R.8XIXDX,X,XeX,._ 2Xn.x vXDX,XI ~.8 ~.rXtXtXt.k.kXt.k.^.kXt.z.5.kXtXk N qXt 3Xx.5 F.H.8.u.k ).,Xw.9Xa.w.n sXKXcXD.H ~.rXt.K.k.^XtXjXt.k.5 tXGX>.@Xn.E.j.O K Y q.0 ).u $ T m !.]XP $X,XD.wX1 :XDXI.~XIXIX- RXIX-XD.a.a tXDXD 8XD.DXIXI.u ) h RXe.'XG.0.!.w sXKXmXGXmXwXHXHXMX3XIX1XI.a hXK TX. `.~ 3XI.8.r.8 ~.8.8XI a.9 v v.jX7XM XM x XMXB .pXrXwX+Xn /.).NXsXDXV.e.M u.).) O & o & &.j &X0Xw HX0.>Xm & vXm =.q.EXG.; M M.y.TX:.4X8 S.yXf.m...WXeXqX, XK cX,.ZXD RXD t < RXD $ $XDX,X,.9 k.ZXI.' $ x `X, $.w $XlXlX,XD : xXl $ RXJX,X,.Z $Xl x $.Z $ c.ZXl RX,X, $XcXJ $ RX1.aXD.ZX,.aX1 $XS.2 RXJXUX-.MXDX1 R.a R B.a.eXDXl.%.GXlXl k.9Xc T.Z :XD.u #.`.}.8 : :XhXe.D 2 v.w RX, RX-XIX-XxX5.DX9Xo.|XJXK T I ).8 `.$XK )XV", +"X,XDXDX- R.a cX-.~.DXJ.'.DX1XD 8 $.D sX. T.9XUXyXH.'.'XU.%.nXl ' ' TXK T T T T g mXJX;XO ! g.2 gXUX. gXKXcXJ T 1.n 'XU !.3 TX3XI 3Xo I.$X9.^Xk.R.z.7X@X@Xx.o.XXgXg.bXgXg.b.bXg.bXgXg.b.o.XXg.bXg.oXg.o.o.U.U.IXk.cXg.c.U.U.U.U.U.U.U.c.U.c.U.c.U.U.cXk.U.c.c.U.U.U. .cXk.U.c.U.U.U.U.U l.U l.UXg.o.b.o.b.o.o.b.b.X.b.o.z NXjXjXt.kXtXt.kXtXtXt.k.kXt.k.r.r ~.X.k ~XV ~ ~.8 c ~ ~ 3.H.`.r.uXt.H.`X9Xx.K.HXtXt.r.^.X.b.b.X.o N.oXkXg.b.X.o N.o.oXgXg.b.b.o.X.o.b.b.X.b.XXzXg l lXx l.oXo.u.Z.2 s.9 H H ^.. v u.M 3XVXIX,X,.W E.W ...Xn.EX,.}.u.8.HXt.rXtX*.kXt.k.r.kXtXjXtXtXVXdXtXj N NX*.HXVXx.u.HX* q.k 3Xl x.' JXG b b '.D.u.H.H.HXt.r.$.5 N N.bXo ~X5 x.9.@ JX>.jXqXc.,XJ Y f ( D f.$ K.G.0 s.w.Z R :X,X5XD 'XD RXIXDX- BXD RX1XDXD.w xXl.w.wX,.]Xc `X5.Z 1.nXGXL 9 HXm.q M y & MXwXH V : c 3 hX,.} `XBXc k VX3.5.a ~.8XVXI.8 3 3.aXc n k.l .}.}.} h 1 1XM.Y.p z..h MX8X: MXp.E.sX,._XKXc.a nXK U :.M c $ 3Xc.9.MXD $XDX,.ZXDX, R cXlXlX5 cXDXD R $XDX,X1 B.a c x TXc `Xl n T 3X, $ $X,X, $XDX-X,X5XN.]XlX-X1X-.aX-X, RX, t.O KXHXlXw a.a t.a t RX- a RXI.e., YX# Y $Xl $X,XIXl.9 ` :.}.`X-X- aXI s 8.N.=.s s s 1 $.aX1.~.2 D.0 7 :XxXVXI.H ~Xt ~Xx ).5X*X5", +"Xc DX.XD.aX-XDX,X- 1 DX5X,XDXDX-X1 $ $ TXcX;.G KX;XJ TXc !.2 $ @Xc.D.~ BXDXIX5 c '.,.GX. DX5.n :.n D T.9.3.2.-XUXUXPXU.2XJ.5.]X9.u c.$.|.A )X9XkXkX@.& Z./.X.XXg N.o.X.b.oXg.o.o.o.o.b.o.o.o.b.o.bXg.b.oXg.I.U.U.cXg.c.U.U.c.U.U.c.U.U.U.U.U.UXk.c.c.U.c.UXk.U.c.I.U.# l.c.U.U.c.U.U.U.U l.cXgXg.o.o.o.X.o.X.o.b.o.X N NXj.kXtXj.kXt.kXt.k.k.kXtXtXd.k F ~ ~XoXkXx ~XV ~ ~.K.8XVXo.kX3XxXx ) ).5XV.H.8XV.rXtXj.^.b.b.X.o.b.b.bXk.o.b.b.b.b.b.b.b.b.b.o.b.b.b.^XjXj.k.^.XXg l l lXg.XXo.H.D g.' y &XfXi %X6 vXw.w.WX, x.jX4 . ....Y.jXJ.aXV.rXV.uXt.rXt.kX*X*.r.u.u.kXtX*Xt.k.kXtX*X*X*X*.8 3.D.kXI.^Xo.8.8 3XK.Y v.n OXLXU.DXVXVXt.r.kX5 qXk.zXkXkXg.rXV.HXGXp.sX>.E.j.'.a ).uXx (XV :X5X5.5 s '.' T.w $ 1 TXl 'Xl.w 3X,X- RXD.w sXyXw.] y.!XP 9.' y s x vXq v.j & H.q.q M HX+Xr MXrXw.1Xw.iXc.aX,X,.} # :.,X3., |.SXM.8.} ~.8.8XI h hX3 V ` h.a.M.M.a.} h h x XM .gX2.pX2.sXsXs.D C CXsX=.v H.!XLXL.n v v vXG xXG sXh s.>Xw z.;.+ zX8.xX4X>Xf.J.; M.@XrX0 HX0Xp H._ U.[ $XKXlX, $.9X,XJ TX,Xc :.a 8XD RXDXD.ZX5X, c.ZX,X1XcXHXlX-X,XD R.aXD.Z.Z cX,XS.' aXS xXDX,X,X5.ZX,XD 3Xl $X1 KXc TXDX,.w.D $.Z $X,X-.% 1 K K m.a a R.aX-X- RX-XIX-.e Y :.ZXNXcXDX,.ZX5XI :XMXI aX- a aXI.e RX,XeXs.W.=XLXLXK s a.a #.5.r.8.`.`.`XI.`.`.rX-.k.5X-XV.5", +"Xc R xX- RX-.K.Z.Z TXKXIXDX1 RXD RXDX,X-X,Xl.%.,.wXDX, :Xc :.u cXDXI RX,XlXl ' mX;.%XK 3.D $XDXlXDXD 8 8.' m hXyXP !XU ! 'X-.5 D.AX5 )X9 q.A Q.zXx.X lX@XkXgXg.b.oXg.o.o.b.b.o.b.o.o.o.o.o.oXgXgXgXg.b.o.o.U.o.cXk.c.c.U.U.c.c.U.U.c.U.c.U.c.U.c.U.c l.c.c.c.U l.I.U.U.c.c.U.UXk.#.U.UXk.cXg.o.b.o.X.b.oXg.o.X.b.b N.oXg.^XdXt.kXt.kXtXtXt.kXt.kXt.kXt.rXdXt ~.kXo.r.uXtX*Xo.r c.&XJXx (.% 5 D.$.H 3 ~.rXt.kXdXj.X.X.b.b.b.X.X.z.b.X.b.o.b.o.b.b.b.b.b.b.^ eXtXjXt.^.X.oXg lXg.o _Xo.kXVXd.,XKXm n HX4.sX:.@.;Xw =X0 W MX2.y ...j.WXq.- `X,X5 RXDXl.Z.ZXD 8 R R R $XD $XDX,X,XDXIX..2.-XJX-XD c.ZXlX-XIXDXD.M.GXHXwXNXlXDX1X,X,X,.u $ $XDXD.Z Y.' s.DXl $.Z $ $ $Xl RXH.ZX,XH [ aXD aX- R R RXD.~.3.].,XcXl $X5 RX,XD cXcXc.aX-XI a.a.`.e.aX-.* U.nXe.= /.=.E b h.a.a 3.K.KX*.u.K.e R.`.`.~.]X3XXXl.%", +".~.u.~ RXI cXc 3X5 m.9.Z.Z.aXI RXI.~X,XI BXc., $ RX-X-XcXK.,X5Xc :Xl $ D T DX; DXc.w $.DXc 'X,.D.ZXD 8.w.9 R.0 1 !.>.2.ZXxX1XIXd D.A N.k N.z.$X .b.z.RXkXg.bXgXg.o.o.oXg.o.o.o.oXgXgXgXg.oXg.c.cXgXg.o.o.b.z.bXg.U.U.U.U.UXk.U.U.U.c.U.c.U.U.c.U l.cXkXgXgXgXg l./.U.U.U.U.U.U.U.U.U.cXgXg.o.o.b.o.o.o.b.b NXz.k.^.^.X.X N.kXdXtXtXt.kXtXt.kXtXt.kXt ) qXkXx.rXtXtXtXt.kX*.5X*.K.5.5XXX9.5 ` )X9XV ~.r 3XtXtXjXj.b.o.X.b.b.b.b.z.b.oXgXg.oXgXg.b.b.b.X N.^ e.rXjXt.^XzXz.XXg.c.o.b.^.^X1.5.0.0XJ v.ZXp.@Xf.sXf 0XG v J.@.@.; vXrX, 3X*XV.k.kX*.u.kX*X*.K 3.u }XJ 5 | 5 V.A }.,.A :X* c $.9 1XwXhXD ` 3.H.H c.kXIXIXlX.XcXl.DX*X*.rXtXt.kXdXd.kXtXt.b.k.k.uXD TXK y.Y.wXD.H.H.u.uX9 q.KXV :.% ! Y @X;XyXy.O @Xy.2XU.0.0 '.n '.wXPXy ] !X;Xw ! =.>.>.q.qXCXC w.E.v.s..Xi w ^.@.F._X.j.nXD B C.* t.9.Z.W.2 RXa.*.w g.j M z w %Xf.J %.. %.s vXn.;XG MX+ M.x y ^.E 2Xe.n.jXl # c.K c c $ B RXD.MXD.ZXD.aXDX- B x.u.3X,XlX,.YX, :XI a.aXD $X1.M Y.,Xl K.9.}.ZX- RX, : x TXl $ a.G DXlX,X,XlXD.Z.Z.ZX,XlX. ` $ R $XD.a h 3.a aX- kXcXl.a R.ZXDX,XDXlXl s m : c a.a 3 aX- a.eX- RX- a t.wXs.W 0.WXn s hX- #.KX9X*.k.K.8XIX-.} R.5 h.]XHXH", +"X1 T ` : $.aXIXKXc D.DX, $ cX, RX1XDX,X1 1X.XK.' :.w :XK TXJ T D.2.% m.]XJ.] TXKXJ.0 :.n.Z.DXI.w.Z R BXKXOXK.9 ' gXUXJ m.5.8.8X*.kXx.A q.f.X N AXk.&.tXg.IXk.o.XXg.o.cXk.cXg.oXg.cXk.U.UXk.U.cXkXg.o.o.oXg.U.oXg.U.U.cXg.c.U.c.U.U.U.U.U.c.U.U.U.U.cXg.b.o.X.oXg. .U.U lXk lXk.c.cXgXg.o.o.o.b.b.o.X.o.o.X.o.b N.^Xj.X.k.^XtXtXtXt.kXt.kXt.kXtX*Xt ~.k.r.r.kXtXt.r.kXt.k.k N.u.K 5.| )XJ.% 5.$XJX*XVXV.rXt.k.b.X.b.b _.X.b.b.b.UXg.c l.cXk lXg.o N.o.b.^Xt.k.kXdXtXj.^Xz.b.o.b.^Xd.rXd.u.HXIX1.HXIXD 8.jX4.s.. vX>XwXr.j &.j.j 1X1 3.rX*X*.kXt.r 3Xt 3 # IXJ.%.3XHX#X3 }X#X. }XH k VXw.[XGXL M.hXwXH :XIXo.uXo.r 3 : )Xl.].5.u.rXt.kXtXtXtXtXdXtXt N.k.5XoXVX5.Z TXK :X1XV.HXx.r.5.r.u.u (XJ.2.%.2 YXyXO @ !.D.Z.'XPXO.n.0.!.] m.0.n T T.WXw.q o b 0 o.v 0 O.v 2.s ..4.@Xn._X+XB.S.T [Xh.1.h.h.h VXB x #.MX,X, $XK.- xXc IX.X3 T : :XXX3 [.OXJ gX.XJXJ., :.9XK.nXcX, h .F.-Xr vXs 2 2 b J w H ' $ 8 t R.wXDXKX.XD UXDX,.M.w.9 H 9 M.;Xf ^ {X:. z.@X> O OXe.Y.[ $X5XM.5Xl.M RX,.ZXDXD.aXDXD.a tX5.9 :XNXD R.aXDXI.MX,.a BX- h R.e.%Xw.Z KX..ZXDX,X,XDX, xX,XIXcX5Xc 1XD : 8 $ : $XIXD $.aX,XD.Z.}.a.aX-X-X-X, cXcXJ $XIXD.aX,X,.aXD 1X.., :X-X1.a a tXDX-.`.a.eX-X-X- < R.i xXG.= O._Xq.a h.8.8 3.8X-.`X-.`.~ R RXIXDXK $", +" $ D ` T ).2X1.%XHXH TXcXcX5.- RX-.DX1.ZXO.2 g gXcXO m gXU.2XJXUXU.2 m DXU g DXy gXwXO mXc.'.D $XD.M 8 8.'.OXU T mXP D.KX*.8.uXd.k.k.I P./XgXg.XXg.I d.I dXk.b.c.c.c.U.#.U.cXg.o.c.c.U.U.U.U.U.c.o.b.X.o.UXgXg.oXk.UXg.o.c.c.c.U.U.c.U.c.U.c.c.U.U l.o.o.o.o.oXg.I lXk.c lXg.o.o.X.o.b.o.X.o.X.o.b.o.o.b.o.oXg.X.b.k.XXj.k.r.k.kXt.kXtXt.kXdXtXt.r.X.r.HXt.kXdXt.kXtXt.k.k.5.u )X9XMXX :.K :X9.5.KXt.r.rXj.^ N.o.X.o.X _.b.X.o.zXg l lXg l lXg.b.X.o NXjXtXjXt.r.^XdXdXj.^XjXjXj l (.z.5X9X5 cX5XV : $ XwXnXpXw.9.}X,X,XDX,.H 3.8X*Xt.rX*.kX* #XXX3 V }XZ.S : : `XHXJ.,.-XcXH `XX.[Xw.jX>X=.. z.YXHXM D.2.2 ).| FXIX*XI.~ DXXXtX*XjXtXtXdXtXdXtXt N.k.K NX5.r.HXMXI TXI.H.`.H.H ~.k cXV.8XIXI.H 3 cXy g 4 (XD.k cX5 gXPXPXP ! :X1.DXI 8.9 ! & 0 O.= O 2.W 2 /.v.vX>XfXnXb p E 1 x $ 1.j y.pX%XXi.s .X+X+ U.M.ZX5.HXdX5X*XV 3 DXl ).r.kXt.^XtXtXtXdXtXt.k.K.kX*.k.^.k.k.rXI.XXV.H.H.H.8 ~.8X*.`.u.HXoXJX*.u.D ) 'X5.uXV.u.uX5XPXP.]X5XIXI.HXIXD s &.E O.=Xn.WXL.s.NXs.s 2 ^.@Xn._._ < 3.} <.ZXlX+ WX%X7.SX<.,Xc.ZXD RX,XDX, $ $ 1Xc.3Xl k.' x h $.MXD.M 3.Z.uXIXIX- B.a B RXD.a $ ` .[Xw.j.q oXC &Xm s.nXDXD T., xXlXDXD a.Z x.Z R U T '.!XC M.;.C.P.4X8.CX>.<.@X0.;X0.>.OX0.OX0.E.E ^ 0XpXc v xXD #.Z $XDX, R.MX,XD t.a.a x.M cXe.a x $ < 1Xl.} t 3XDX-XIX,X,X,XD $ s.M.M $ TX, hX,X,.Z.e c $ :Xl $XDXlX5XD.a.a h.uXDX, hXlX,XD.M 3 x 1XcXD $.ZX,XDXD RXD.,Xc m 1.MX1 RXI RX1 a R aXIXDXD.~XD.~XI RX1 #.KX-.'XGXGXLXGXDX-XI.`.~.8.8X-.` F.8.~ F.`XI.5", +".u.D.u.HX-X1 R.' g.9 8XlX1X, h.}X1.u D.2 $X1XDX-X1.,.' RXI $XV : DX,X5.Z.D '.]XlX1X1 $XDXD T.' m VXDXD s.w T @.O 4 D.uXV.rXtXoXd.^.XXg.oXgXg.b.o.oXg.QXgXg.c.#.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.cXgXg.o.z.o.o.oXgXk.UXg.oXg.c l.U.U.U.c.U.U.U l.cXk.b.o.X.o.XXkXgXgXg.o.b.b.o.X.o.X.o.XXg.X.o.b.o.o.o.X.o.X.b.X N.^.XXtXt.k.rXdXtXtXtXtXt.kXt.rXt.r q.^.k.k.k.kXtXd.kXtXo.K.uX9.K :X3XX ` V I V q ) N N N.o.X.b.b _.b _.oXg l.I l l.U.c l.c.o.b.^Xj eXt.kXt.k NXo.b.bXo NXz.X.X.z.z (XkXx.5.KX9XlXl 1Xp n UXD 3.8 3.H.Z.HX1.r ~ ~X* #.8 V.,XJ VXBXBX3 .9 Xl.YXJ [XhXHXwXMXB.[.[ MX>XiXbXA.xXr 1XUXK T.0X9Xx : |.5.G.2X9.r.kX9.z NXt e.kXtXt.u.k.5X*X*Xj e eXt.r ~Xd.H F ~ ~ ~ ~.`.u.u.H.8.k.uX*.u ( Q.2 ) ) ) ( (X9.5X1.H.HXI 3XVXI 1XGXG ^XpX>.9XeXw $.9 &.v.BX>X4 pX,.M.}XI.a.Z.j.+XpX% rXZXHXH K 1.DXD RX,XDXq.w x x.} 3 Y.SXlXH.a.M.M.u.uXI.HX, BXIX-.`XI RX- R $Xc s.,Xw.EXG.qXm b.n.'.ZXIXDXc.'X5.eX, RXl $.Z.aXwXw.YXm.!X0.; wX6 L.{ ;X: M S = M = H &.O.>.OX0Xh zX> vXpXC._.Z $ $ #X,X,X,.M.} R <.M.a U.}.a < R.} Xi.P ^.{.j H.9XK.5 ) D.K : :Xl D.u TXx q N ).kXt.kXk.^.kX*X* N.rXjXtXjXjXtXt.H.r.uXd.H.`.8.` 3.H.`XV.H ~.u.rXt ).R.f 5.$ IXJ IXJ I c #Xl qXIXIX, v.Y OXp = t n t.3 xXG.T H ^.{XnXe._ t.a c.~ R aXG.jX2.g.TX#XHX.XK.HX,X1XD R x.w.}X,Xl.a `X# }XH :Xl c 3 3X-.8 $XV RX, 3 3XI RXc.]Xw D =Xh.+ 9 v.n.n.n 8 RX- D $ : s xXDXc.wX,XDXw nXh g gXm.;.;.@ L.4X8 S.y S H HXm.>.>X;XOXwXwX+ =X0 =.; ^Xp.s.w U h.i x.9.W t.d U t.i x U h U.MXq._ x.i.9 k $.aX,XD.aXD R.a.Z x.wX,XD $ x.w 1XK.uX, x.ZXI tX5 $X5.Z 3XDX- R xX5 RXD R.MX, R x tXlXU.a $X,X, nXwX..-XJ h $.ZX, RX- RXVXcXK DXc k.9 : :XK.5XMX, R.~ B.`.~X1 U.> = bXm gXl : : D.].$X5 RX1.`.~.8X-.`", +" T :Xc.0 T D gXUXKXD $X,.w $ sXD D.2Xl RX,X1.a aXcXK.Z.~X-X1X-.u D RXDXDXIXIXl.].ZX,XUXK T $.n.'.w.'.n.9 g.wX1.a 3 ).,.f.X.k.k.b.X.bXg.o.oXgXg.c.U. .c.U.U.U.U.c.U.U.U.c.UXkXg.o.oXg.oXg.oXg.oXg.oXg.bXgXgXg.X.bXg.c.U.cXgXg.U.U.c.U.c.c.c.zXg lX@.QXg.b.X.o.X.z.bXx.z.^.X _X@.o.o.X.o.X.o.b.X.b.X.o.b.o.XXjXz.kXt.z.z 5 (Xt.K.rXtXjXtXtXt.5 q IXt.kX*.k.k.kXtXtXt.r.kXtXx.u.kX*.kXt.r ).^.kX*.o NXg.o.X.b.b.b.o.b.o.b l lXx.U.I.z l.UXg.b.X.^XdXdXtXtXdXt.k N N.b.b.X.b.X.b.b.b _XoXzXdXd.k.r 3.8.K 1Xe yXn.@._.M.}XDXI cXIXI 3.8XXX3XM :XX : x x h h h $ x : :.SXc 1 R.WXDXe hXBX+ W. JXG x tX1X-.8.H FXV.`.HXI ) (.2 )X9.KXtXxXkXkX*XtXo ).k.kXtXj.rXjXtXV.8 ) D D.9.9 T $.kXDXo ~.8XV.r.kX9 ).X.]Xx ) :XX ` [XZXZ.SX5.HX1 3XDXG v O v.M hXD UX,X, v J.PX> ..m U <.aXI.} RX- E.iX4 WX% k.Y `.Z.Z.DXD.D.M.DX,.MX, : c 3 `.] D V.3XK | $ ` R R 3 R.u.a.ZXD c VX3X#.1XH.G.OXm.O.'.w R.~X5XD.9Xl xXZ.wXH.-X.Xw gXc 'Xw sXC gX0.4.C.JXn.xXn.y zX0 o.9 yXm mXP ' gXP g.T.+ HX>X8 v.dXeX,.w.iXrX+XqXq.XJ ` :X9XJ.5.`.8.`.8X-.8.`", +"X1 BXIXD RX,Xl D.2X, BX1.eX-.e.Z m $X1X, R.* R.ZXJ :X- R RX1 3.DXJ $XJX,X1.e.Z.] :XDXDX; T.'Xc.9 gXPXU m x.uXD.aXI ) 5 5 q.^Xk.X.o.o.o.o.o l l.U.#.I.c.U.c.U.c.U.cXk.UXk.cXg.o.o.o.o.XXg.o.b.oXg.b.o.o.oXg.oXg.o.oXg.cXk.cXg.U.c.c.U.U l l.U.z.#X&.X.b.o.X.o.bXk.o.&.(X .t Q l.XXg.b.oXg.X.z.& A l.b.o.b.o.b.XXjXt.5Xo.H P q.r.k.k.k.r.kX*Xx.k Q.|Xt.kXo.u.k.u.k.k.k.kXtXoXx.k.r.r.k.X.z.^.XXg NXg.^ N.o.b.bXg.b.b.b lXgXg.o.z A.I lXg.b.X.b.^XjXjXt.kXtXtXt.kXd.b.bXzXg.b.b _.X.b _ _XdXtXtXt ~ 3XVXD.NXn.).v.EXp s 1.'.0.'Xl x V V :XMXl 1.ZXD.} hXD.M.}X. sX. h.M R 8.Z $ $XlX7X7 WX+Xi.@Xf.E..XG v.aXIX-.H.`.H FXV.8 ~.8.uXo.$ I.$X9.K.KX9XtXt.z q.rXtXt NXtXt.k.rXVX1 $ $XK DXKXKX3XV.8.8.rXjXt.k.R ( 5.| D 7X3 IX#X#.SXhXc T 3XV 3 3XG b.s.s.N C R R R C._Xb ^.@.. E x < v.Y xX,X-.8.`.`X1.H.`.8 3 3 ~.8XVXo q.& q.r.r.k.kXk.zXt.k.^.z.kXdXdXxXo.k 3.8.} 3 h 3.`.8.rX*.rX*XtXtXx NXxXo.k.5Xo : 5 m DXcXD.8.8.8 3XI.jXw v.).WXs R C.a * vX=X4X>.jX4Xq H.4XfX4 vX+.j.;X0.+.+.jXm.9Xa $X, sXl.DXU gX0 M.; H.@XnXG x s E E u <.m E X4 HX>.j.Y 1 3.u.8.`.`.`.HXV ~.8.8 3XI.H.H.rXo.^.kXjXt.kXt.X.r.^ N.zXj.r.^.zXx.K.K.uX* 3.r #.rX*X*.rXtXtXj.k.rXdXoXdXdXdXdXo P.0 ) : : )X9 )XJ 3XJXr.j 0.=Xs.* <.W.N.. v.E.@XqXe x $X-.uX1 c B U._XqX2X+ XB hX5XD 3.ZX,XD UXlX, 3 R RX1 3X1.u.ZX, aX-X5 R R cX1.e RX- BX, 3XI.i `Xc., nXU v.w 8X1 T $XVX, x.ZX,.a.Z R.Z.D c.Z.w.Z s.'.+X0X>.x.+.1 =Xc.< 0X2.;.; 9XG.9.nXDX,.2.Z.w y & =X0 &X> v v.W hXn.[X7Xq._.F >.pXBX+.a.MXDX1 R R t.a.MX1 t.M c.MX, $ $.Z.MX, h $ $Xl : x.9 :XlXDXD.Z.w : 1.MXM x RX,XlXD.a $.Z.ZX1XDXD h.M.Z h.* $.ZX, $.Z $X,X,.} R.aXDX, cXI.} T kXJ 1X-XIX-X-X-.~XIX- : D T.,Xl D.a.K $ RXaXLXC.q o.9 !XD Y $ ]XX 3 D.5.| T I", +" 3X-.~ 3XD R T D $ :XDX5XI.Z $XJXl BX,XDXDX,XlXw sXl T.9XJ.] :Xl.,X,X, UXD.D.Z $Xw.9.0XcXJ gXw.]X1X1.`.`X-.8.8.8 ~XtXtXoXg N.o.oXgXg.UXg.U l l.U. Xk.c.UXk.U.UXk.cXgXg.b.o.XXg.X.o.o.X.oXg.X.oXg.o.o.b l.o.o.o.o.o.b.V l.U l.U.U.c.UXg.U.U.IX&Xu.:.#Xg.z.zXg.U.oXg.X.o.:Xg.o.b.oXz.cXz.o.b.z j.bXg.zXz N.b NXt.k.r.X.uX@ ) j.X.KXtX*Xt.k.k.k )XxX9.$ 7 ) N.k.rXt.r.u.k.k.5.k.5.:.k.k N.o NXg.o N l.X.(X&Xg.UXgXg.cXg.U.6 jXx.z A.o _ N.o.b N N.^ N N.^.^.K.^.^.X NXkXzXoXg N.X N.b NX Xk.5 ).u $.5XIXa v.=.WXeXs =XG.jXCXpX=Xb.@.[ x hXM : xXc x T t R 8 RXIX,X,.ZXDXl x ` `Xw [X+ M SX0.;.T nXKXwX3XcXl.`X1.`.`.H.8.8 ~.8 ~ ~XV.k.u.rXtXtXtXt e.X.r.kXt.kXtXd N N.X.rXdXVXtXVXt q.5Xt.k.k.^X*.k NXj.kXoXtXt.rXo.r P.|Xy ( I : PX3 q kXS MX> 0.v.N.NXD.s / ^X>XnXe p h.M.}XI cX5XIX, h._._X<.gXB XM .}X,XM U RXl 1X,X, RXIXI 3X, 3X- RX1 R.}XD 3XD R RX1.a R :XlX,.aXM.-.YXw y 1.nXD.D ` DXDX5 RX1XDXDX1X,.u.HX,.Z TX1.> o.+.h.y.y [.[X, 8.WXn.C S M.; & 9XG.'XU.w ' $.'.0 9 MX0 &Xm.9.9.Z.iXqXp UXe.iXeXq x UXDX1 RX- $X- R R.M.} R.eX,X5Xl t R h.M $ U x #.iXMXM 1X, $ ` x hXD $.n TXD x 1 U 1.Z.aXD x c.MX, t $ tX, x.Z xXK.a.MX,.aX,.ZX,XDX,X, h $.M.a.9.G.,XK : `X1 RX-X-X-X-XIXIXlX3 )XJXcXcXUXwX, UXK.EXG 2 ! g T.% mXJ D YX3X3.]XH", +".~X1.e.e.a c D `.`XcX1X..DX1.u m $ hX5X- 8.a.'XUX, R.e aX5 # c :.- $XJ.Z :.Y g.w gXc TXw.0.%XlXI.8.8XI.8.r.8.u.8Xt.kXt N.oXg.o.oXg.c l.#.U.z l.z.I.U.U.UXk.U.z.UXg.X.o.XXg.o.b.b.oX9.o.bXg.o.oXg.b.o.o.U.o.b.o.o.o _Xg.c.U.c.c.c.c.I.U.cXkX&.U.I j.t.I l.U.U.I.UXgXg./ jXg.bXg.oXg.o.b.b.b.(X .b./.f.oX9Xg NXt.kXdXoXxX9.k f./ ~.^Xt.k.r.r.k.kX9 N.r f ,XtXt.KXt.kXtXV.kXo.kX9.7 ~ N N.X.b.b.^XgXkXg.7./.cXg l.UXgXk.o X.(Xg. .X.b.X.b N.^.^ N N.K.k.kXt.kXj.^.^.oXjXg.b N.X N.o.XX9.& 5 PX..3XwXc x ! vXs.NXe.[XG U n nXq.) 0XiXrX+ $ # 3XD 3.Z CX,XDX,XD h hX,XDXD # cXX k y.xXp. K.j o.Y x.W.M U.w U E xXe.M.ZXD R RX1X5X- RXDX,XDXI.MX5 1XlXIX,X, $X, $.Z xX,.}X, $ 1 : x cXl 'XDXI.Z 1XlXD $XKXK.YXK t.Z 1XDXI.M.D h $ $Xl $ $.' R.MX,X,.MX,X,.ZX, $ $Xl $.Z x hXJ.2X. : :X1X- R.`X- RX-X1 RXD Y.'XJ.-Xc 1._.j b s 2XK ` $ c.H 3 3XIXIXI.0", +" R.e.u.Z.~X1 D `.DX-X-X- B c.2 :X- $.ZX, aXlX..wX-.ZXD RX. kX.X#.] a.*.a.M 8X, x s.2 gXI $XDXD.`XI ~.8 ~ 3 F.r.k.rXd.bXg.bXg.b.U l.z iX XuXuXuX i./.f i./.I././.I.U q.U./.^Xj.^.o.b.X.o.bXg.o.o.o.o.o.U.oXgXg.cXgXg.c.U.c.U.U.U.cXg.U d. .U l l l l.U.c.c.z.I.U.U.U.c.o.X.bXgXz.b NXgXg NXz N.b N.o.kXjXjXj.kXd.^.kXtXd.k.r.rXkXtXt.kXtXtXtXt.kX*.k.kXt.kXjXtXtX*.kXt.5.kX9XxXxXx N.b.X.b.X.o.b.o.I./. XkXg.#Xg.UXg.cXkXu.t./Xk.bXzXd.^Xj.k.^.kXtXtXtXtXj.^ N.^X XzX ].t ]X@ ,.f.f IXJXJXl nXwXU v H.W.).M <.MXD.M v.M.).W..X4 W.p x x.} 3X- aXIXD.M.M.M.M.}.aXI R R.a.a.a # XcXpXp.s v.s pXi.@.E.Y.M RX1XIX1XI.u )XV.5.2.R :.^XVXt.rXt.r.r.kXd.rXoXdXVXd.k.r.kXtXt.kXt.rXdXt.rXd.kXtXd.k.rXtXt.kXtX*Xj.K N.f I q 5.RX9 ).5X5.5XxX5XdX.Xw H ^X=.@ 2 ^X> H.4Xi >Xe.d U U.a aX-.`.~XI.Z.aXq U x .[ [.T.- [X3 .} h.}X, $ 3XDX1 c c.2 $ `., `.9.,X5Xc ` ` B.aX1Xl : $.aXD.a `XKXcX. yXU.'.D.D.MX-.a.a RX5 3XIXD.HXD.D.wXlXa '.EX0.;.@ E n.- ]Xc.>Xq.xX4.<.. 0 o.q & &.nXw T gXUXm & J OXGXL.w $ x 8.DXeXwXw C U.M RX,XIXDXDXI.Z 3 $.ZXKXDX5XDXJ T., g mX..- nX..,X.XJ $XD.a.}XI c c h.,XJXJX;X.Xc U h T xXD $ U $.MX,X, 1 s $ x.w T $X- $ BXD RX, R.- 1XK 1Xc `XK :X, R R 3X,XI.5XH c RX-X-X-X-X-.uXVX-X- R t UXKXwXhXw <.a.a c 3X-.~X1X1X-.` 3", +"X- B 5 $ R R D.0 3XDX-X1XD.2 T 3 B $ :Xc.2XH.GXl., TXlXc.aXIXJXH kXc `.wXD R.w.w TXU.ZXD.uX1.8 3 ~ 3.8 ~ ~.rXt.k.k.k.^ NXg.o.c.U l.#XuX X&.fXuX X X X&X .t./X .t.(.t.t.&.tXj ~.r.XXg.b.XXg.o.o.o.o.oXg.z.o.c l.U.U.U.c.U.c.c.U.#. .6 i.I.c l.U l.#Xg.U.U l.#.U.U.UXkXg.oXg.o.bXg.oXg.o NXg.o.X.o.o N.bXjXt.k.kXt NX5.k.kXj.k.IXk N.rXt.k.kXtXt.k.^.r.k.k.kXt.kXtXt.kXt.X.kXt.r.kXt.^ N N.o.b.b.o.b.b.zXg l lXg.U.cXg lXgXg N.z.^.b.^XtXtXt.rXV ~.r.r.r.k.^ NXg NX@ d.| A ] ]X@.A 5 5 ) TXKXUXy oXpXe.) U <.MXeXDXeX, xXD UXe .XiXp.j.FXq 3.}.aXI.aXD 8XDXD.a.MXD.M.M.MX-.a.aXM xXcXwXGXn p %Xb.v.. 0XGXGXq.aX1XI.u c D T ) :.HXI ~XI.r.u.k.r.kXt.uXtX5.k.k.rXV.u.r.HXd ~Xt.k.kXtXjXt.rXd.r e.kXt.kXt.kX*X* N.kXVXt.H.5.5.5 )X* '.u T.5 '.2X0.E 0XbX= 2.@.@ ^.{ pXn u < < t t.a.~ RX1 $ B.uXDXl.iXp.-.Y.- k.g k.9 h hXD $ R RXD $XlXHXJXcXJ YXJ D.- m.9.9XI.a.a c 3 $.a R.a #.Y `XwXOXh !.w RXI.M.MXDXI #XDX1XIXDX1.Z.'.nXG vXG S MX>._ hXKXlX5 sXw z.1X2.x ^.@ &Xm.OX;.ZXD xXPXy &Xm O.=Xn.wXe.w BXD.ZXc.' 1XD RX,XDXK.e 3XI.a RX, h.a 3 x 3 $XcXc k.-.'.9Xw.9.n.wXl $Xl $X5X, < c xXB.9.w.[XG x.a.MXe.-.MX,XD 1XD $Xl.' x 1Xc.- x nXc.-.9 kXc.,XJXHXJXJX,.Z xX,.Z.9X, 3XV `.8 : )XV ).uX-X-X-X-.5.e RX- R R.M.WXs y o o.9XqX3XJ.u.u.H 3XVXV 3", +"X1 RXK DX5X5 :.]X1XV BX-.5.2.ZX1 R $ $.Z TXw m s T.'XlXlXD R `XKXDX,.9 T.-XU.2.2.2 $X1XDXV.` 3.8.8 ~ ~ 3 ~X*.kXjXtXj.^.o.b.oXk.c l l l l.U.U.#.I.z.I.I.z./.U.zXkXgXxXk l.^ q F.^.o.X.o.b.oXgXg.b.o.oXg.cXgXg.c l.U.c.U.U.U.U.U.U.I.#Xk.U.c.U.c l l.c l.c.U.I.U.U.U.UXk.o.o.XXg.b.bXg.o.b.bXg.o.X.b.X N.kXj.kXtXt.5.^XdXtXtXt./ q q.kXt.kXjXtXt.kXjXjXtXj.kXj.kXjXt.kXtX9Xt.kXtXt.kXt.^.b.X.o.b.b.bXg.c.c.cXg.c.c.c.U lXgXg.o.z NXjXjXjXt.k.r F.8Xt ~Xt.^.X.b.b.o N.^XdXd e.HXt.5.kXV RXI xXL s.NXs.) U t h 1X,.w $Xl.W hXe.sXr.WXnX+.Y x.l.u RXI R R 8.M.M R.a.M.a R.a R.a < h x .YXrXn.sXb p %XiXb 0XnXwXm.Z s.G.2XlX5.uXV.HXI.H.8XVX*.rX*XtX* ~.H.r.u.H.DX5 :Xo.u.`.H ~.HXtXtXtXt eXj ~XjXd e.rXt.k.r.k.5.u.kX5.8.]XJ 5 f T 5 D f.0.%.2.>XCX6Xi LXf ^Xi.sXf p . E U u.Y a tXlXJX5.5XD.Z k RXlXpX< [.[.Y.[ [X7 `.i.a.MX5 x.Z R.aXI xXlX5.a.Z hX, RXD.a.a t 3 R.a RXD R.a 3X, V : nX.XKXK sXD R.a RX,X,Xl.uXDX5XD s.'.nXG y.j.qX0.;.EXq x UX-X1X1XD 1 UXr.{.; S.> &Xw.Z.a aX,.O.O @ & o O 0XnXL $ $X-XD x $.i.Z.9XD hXK :X,.a c a.2XcX5 c $.Z :Xc R $ RXD UXl.ZXe.D.Z.W.a.a.} h x UXc xXn U.w.W.-.M.M.}XK RX,Xq s x.Z x sX..9XcXKXcXJ :.9XlXH '., $.9X,.MX,.MXD x., D mXl c )XIX5 D.u :XIXI )X3.8XDXV.Z.}.D.WXL o O 0 O b.E :.8X-.`.`.`.`X-", +" R B $ RXIX,.] TX-.ZXV '.2XJ.].]XcXK 8XD.ZXl.'X;.'.D.Z $.'XKX;.9X1 R RX5XU.]XU @ m ! D D DXV.8 ~.r 3.r ~.rX*.k.k.k.k.k.b.XXg.U.U.U.U.U.U.U.U.I.z.U i.f.UX .tXgXkXgXg.X.X NXz.^ N.o NXgXg.b.o.o.c.o.o.#.cXg.c.U.c.U.U.U.c.c.c.U.c.c.c.c.c.U.c.U.U.c.U.U.U.U.#.UXk.cXgXg.o.o.o.o.o.oXg.o.o.o.b.^Xj.k.^.^XjXj.kXtXt NXtXtXd.kXtXk.X NXt.kXt.k.kXtXt.kXj.k.^ N N.k.kXjXjXt.XXt.kXt.kXjXt N.b.b.b.b.b _Xg.cXg.c.U.U.U.cXg lXk.o N.zXjX*.^.k.k.rXd I.H.H.r N N.b.b.b.b.XXdX5 e.0.XXxX9 5 : :.'X0 s.!.jXL.9 x [ 1 h x.ZXeX,.W.w & 0X>X=._ >.j x 1.}.}XDXI t R.M.M R.a $.w x <.}.a.} x 1.Y XrX+ 2.mXb.B {Xb.v J HXmXUXw Y.3 D.0Xa.HX1.5XV 3.8.8 ~.uXV.8.HX1X5.D $ D g D gXJ T.D.8.u.r.^XtXtXtXtXtXj.rXdXtXd.r.k.HXoXo.u.`XIX5 : :.0 :X9 :.0.K.2.>.>X0.h.4.T.4X: w.4 S.4X%._._.WX%.* Xm & J J H.v v x R.' 1 <.W hX, xX5XDXlX, :.Z : $XH : RXK $X,XwXlX,.Z x x.Z.2 n.Z yXe.W x.W > xXq x._.YXe.[XpXqX+XH.Y.Y.[Xw.M $ xXl.9 $ x.w $ t.M.Z.MXDXDX,X- R $XD $X, R h $ $ xXlXJXJ.] cX3.H :XVXX.uXIXV 1 ) 5.r.`X1.e.~.M.a tXs O 2 / / 0.Y s.8.8.`X-.`.8.`", +" R B.eX1.e.DXKXl B B B T D TXU ( TXP TXP TXyXKXyXy.OXyXy.OX; @.Z t RX1 B $ $.'.2X,XD.HX5 ).`.HXV ~.8.8 ~XtX*XjX*XjXjXj.b.o.oXk.c.c.U.U.U.U.U. .U l.6Xu./X .f.UXk.bXg.o.o.o.X.b.X.o.bXgXg.o.oXgXgXg.b.#.U.U.c.U.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.U.c.c.c.U.U.U. .cXgXgXg.o.b.o.oXg.o.X.b.X.bXg.X.o.bXtXt.kXj.k.kXtXtXk.r.kXtXtXj.k.^XtXt.k.r.rXj.^ NXz N.^ N.b N.^Xj.k.^.kXxXtXt.kXtXtXt.^.b.b.o.b.oXg.c.c.V.c.cXg.c.U.c.o.o N.oXkXt.^.^ N NX9.k F.8.`.HXo N.b.X.o.b N NXtXdXx P 4.fXlX.XwXH.n =.j.WXy v YXlXKXsXa x.Z x.j.j.@ 0.sXb pXGX7 1 1 3XD.a.aXDXDXDXDX, x 1 sXJXc., `.YXc.[., n >Xr. n.'XlXGXc :.-XJ : #.Z x s o.j.>XZ.;X0 HX0 & yX+XwX+Xc.0.] 5 h.- p %.s.@.>Xm.0 xX1.a RXD.9 9Xm.q o w.@.EXn oX+ n.j.- y nXH s R c.uXD cXM 3 $XDXDXDXD.Z.,XK $.wXlX,X, 1.9Xe.pXp.pX4.pXr MX: WXn.< >X4 WXp xXw x.w xXc.9.a x xX5 x $X,Xl $X, $.ZX,.Z x $ c 3 $ : h $Xw., mX.XH :.Z 3 R.u `X5.`XIX-XIX-X- RXx.`X-.`X- R RX-.} U C.s.WX=XiXGXK.8.`.`.`.`.~.`", +"X1X,XD.DXD '.]XDXD.uXl T.]XD m.2XyX; !X.XyXy.2XUXU '.'Xa gXm g.nX5.D.ZX,.n.wXc ' R.HX1.KXV.8 ~.8XV ~ 3.rX*.k.kXj.k.kXj N.XXg.U.U.U.U.U.c.c.c.6.I i./.U.6.I.#Xu.z.I. .oXkXg.c.o.oXk.c.b.cXg.o.cXgXg.U.6Xk.U.#.U.U.U.c.U.U.c.U.U.c.c.UXg.U.c.U.U.U.U.c.c.c.U.IXgXg.o.o.o.o.o.X.o.o.oXg.o.o.b.b.X.bXj.kXjXtXjXjX*.^.X.r.rXt.kXtXj.kXtXtXj.kXjXtXj.X.X.b.X.b.X.o N.^.X.o N.z.^XjXdXt eXj.^.b.oXgXg.c.c.c.c.U.U.c.cXu. .fXu././X@./ qX9.& 5XX q.R q )Xx.^.b.X.b N.o N.X.kXdXV ( (X@X3.|XlXU.j.q.9 n vXK T.'XU s x s.n y.Y.+.EXnX>Xn.@X+.jXcXp $ h.aXD R.aXD.a RXDXD.D xXD.9 # < $ h x x.[XM.YXr.< {Xb.PXf wX> &.E s.w '.n.nXa 'XU.5XJ D 5 ).] I.$XX (.2 D D 4Xl g.!XK.> yXOXwXy !.n.nX5X1XV.kXVX*XtXt.kXtXd.r ~.r 5.]XJ D.5 m ]XJ.%X3 I.,Xc 4 K !.pXf % {Xf w.x.x.xX>.pXr >Xn EXe.) E E.M < R a.uX-X1X-.a aX,Xp X7.S V h.}X-.OX, hX,XDXlXHXKXlXD RXD a : Y.'.a.M RXDX-XJXc D a.MX,Xc 1.,X#.O @X;XwXU 1 3.a R B R.wXLXmX0 M.;XhXr &.T.O nXrXHXK g m D 5 h u EXiX6Xm & '.' sXDXI.a.M s.'.!X0 =.+ =XnXeX0.j yX>X>XGX0.9 1.Z.ZX,XIX1.a.aXDXDXD RX,XD.aX1X,.a.ZX,X,.w x._Xp.FXe.FXn...JX4.<.<.JX4 >.d >.MXGXpXD.W.-.9XK x :.9.9.9X5.w xX,XcX, xXIX5 $X1 $ 1X1XD.aXJ.- x.9X, R.aX1XD.8 c.8X-.8XI R.aX-X-.5.u.k.~XI a a.a a.a t.M.W.).s v T.H.~.`.`.`.`.`", +".w.n $.wXl s $.w.n.w '.0.2 KXy Y.O.> ! g mXU g mXOXUXO g.wXLXPXU !X;XJ ! 1.0.2 $X1XDX1XV.H.HXV ~.8 ~XV.rX*X*.k.^Xj.^Xj.^.bX9.cXk.U.c.U.U.U.U.6.IXuXu.I iXu.U.(.6.U. .bXu.6Xk.o.b i.zXg.6 iXg. .6.cXuXu.U.U i.U.# i.c.6. .U.#.c. . .c.6.U.#. .U.#.c.#.# l.U. Xg.bXg.o.o.X.oXg.o.b.b.b.b.oXg.XXzXdXdXdXt.kX*Xj.kX9.$.k.kXtXt.k.rXjXtXtXtXjXjXjXj.X.o.X.o.b.X.b.o.X N.o.X.z NXj.kXjXj.k.b.XXgXk.c lXg.c.c.c.U.c.#.AX X&./.f.f f }.A ).f I./.A 5X ././Xx N.X.b.b.b.^Xj.r.rXdXdXV.rX* 3XD s sXLXs.*.M R 8XDX-Xl.w.M._XGXLXn._ &.p.[.[X7.[ X, $.aXD.M.a.M.}.M R R R RXD.a RX, < R t.a h.lXqXpX2..XA.@ H.E O H.'XP.W R 8Xs.w 'XcX5XIX1.H R.8X9.K.8.HX-.HX5XU $XO.w y.'XPXK ! !XU g gXO.'.D.Z.uXV $XV.u.r.kXt.r 3.k 3.KXDXIX1X1XI.` 3.}XI $Xw 1.9 zX> %.4 r S.; M.xX4X:Xr WXrXrX2.F._XeXe E t a RXV 3 3XI a.a 1 x k.[ `XBXX : h.S 3XDX,XD 1XJXcXIXl.a R.~ `X,.-.aX, a RXIXJ a $ R R.a ` 1 :Xh.3XZ ! sXl 8.DX1X1X1.M.w v H.E.E ^ o.@XnXLXe.M.'.w E RX- 3 R R.d.s ..@ &.! b.nXsXK R.MX1.ZXeXP y & o = M.@ O..XnXi vXn v.OXL.jX1 $X1 hXIX- t R R R.9X,Xc x.9XJXJ.wX,X,X, x xXq.W...@ M.; S.C SX2X2X8.{.J.p.M.- U.wXhXwXK xXc.' k.'XHXK.%.-Xc k.%XcXH ) KX,XVXDXI BX5X,.a.M.aXDXIX-.H : : c R R.~X- RXDX-XV.uXM 3XD.~X- aX-X,X,.a.WXe.) v T.H.`.`.`.`.8XV", +".'XKXU.0 T g 1 'Xl.0 g ! D gXU.0Xy.]X1XI.nXl.' $ 8XDXc T T.'XP.> @XwXOXUXyXU m s.DXI.Z.K.` 3.H.8XV.H.H.rXj N N.X.X.X.b.bXgXg.c.U.U.c.U.U.U.#.#.#.c. .cXu.U.U.#.#.U.#Xz.U.U.o.c.c./.I.c i. .c. Xu.UXuXu.#.I i.U.6X&.c iXu. .U.UX& i.UXu. . Xu.c i.U iXu.U.U.I.UXg.oXg.o.o.o.b.X.o.^Xj.^Xz.X.oXz.k eXt.kXjXj.k.^X9.A qXtXt.kXt.kXtXt.k.rXt.k.^ N.o.b.b.X.o.o.b.b.b.b.XXgXg.bXtXjXj.^ N.o.oXg.UXg.c.c.cXk.c.c.cXg.zXgXkX9.&XxXX )X9X9X9 ).X qXx NX9Xk.b.b.X.b.X.^Xt.k.k.kXdXt.k.k 3.uXDXGXLXmXe nX,XDXDX,XlXMX, U nXn ..EXr.g >XM .9 x xXDX,.M.a.a.a R R RX1 RX1 R.a R.a.e R.a.a.a < #.lX4XrX6X6 S o v vXL.w.9 xX5.w R 8Xs T g RXI 8XV.H.`.H.H.H.HX1X5 m.w TXs B RXsX,Xa s sXLXG.>.9 ' s.w x $ 3.H.5.8 #.8XVXJXHXJXlXUXl $ BX,.~.a.M.ZXO g.EXn.. w.{.TX:.y z WX4.1 z z M.y.TXrX4XA EXe U < < aX1X1 3 c.}.Y `.g.[.[X3XMXMXX ` # h.MXI 3X1XIX,X,XV aX, R R.aXDXD.MX1XI xXlX-.a R a.Z xXMXcXwX. y.n.wXI.DX1X- BX,.wXGX0X>.@.sXpXe t.M.M.M 1X,.ZXD R.Z R.M p.s 0 &XC.nXa.D 8Xc.aXl h T gXlXU x s & K.+X> S H M M yX0.+.OX; s x xXK.9 xXl x n 1XHXwXcX..SX.X. TXHXD hXD.WX,Xe.wXe w z.y.;X8.4X8 WX8 WXnXL xXL 1Xw.9X;XH m.3 n.%XhX.XH mXKXK `Xl Y T 3.~ R.u $X, aX,.MXDXl B RXD.Z #X5.K.~.`.a R.e RX-Xl 5 I., c.9.'XK.9 : kXlXh & &.+ m c.`X1.`X-X1.k", +" @X. KX;X.XO g gXOX.XOXwXO.2XOX$.GX. ' cXV 3XVXV.uXV.Z.'X. gXK !Xw !.O g !.O.OXKXwXc.%X.XJXJ I.u.8 ~.8 ~.r.^.bX9.o.X.b.b.o.b.o.c.U.c.U.U.U.#.U.U.#.c.U.c.U.c.#.c.U.U.c.o.o.o.b.b.o.o.bXg.o.b.U.U.c. .#.U.U.#.c.#.I.U. .#.U.c.U.6.#.U.6. .UXu.U.6.U i i.U.I.#Xk.o.o.b.o.b.o.X.o.b.b.^.k.^.^.^XjXjXdXdXj.kXj.kXj N q NXjX*Xj.kXtXtXtXjXj N.o.X.b.X.b.o.o.X.o.b.b.b.o.oXgXx.b.^Xj.^.b.b.X.bXg l.cXk.cXk.c.cXk l.cXxXg.X N.&.$ I.% I kXJ 5 |.RXx N.b.b.X.o.X.b NXdXtXt.rXtXt.kXt.r.` c $.YXmXwXGX, h.}.Z xXq $Xr v o 0 0.jXrXB ` 1 1 x c U R.a.M.a.a.}.MX- t R R RX1.u.aXD R.a RX-X-.a.a # .x.@ ^ & b.sXL.* RXD c # ' xXa.Z.n g.'.kXd.HX1.H.H F.H.H.H 8 D.0.nX, t B R.*.M.Z.W.nXm @Xm oXK y 1XUXUXc m T.9 :.>.1 s.9XL.Y sXK.'.ZXeXLXGXPXU.q.> JXiXiXb ^.;.;X>.x < v.p.YX+.<.x.x.{.p.J E EXe a.a a.`X-X- cXB.l k., k.[ k V X3 ` 1 $X,.M hXDX1 3XlXlX-.aXDXD a.a.MX, BX.XK :X,Xl $ 1XX., |.,X;XKXL.D 8.DX1XD.Z.w s b.; o HX2XpXr xXe 1XJXJ.9.]X- cX- R u.).@ w &XP s s 8XD.-XK kX.X..%XwXPXU.> @XhXh.1.1 nXrX%.+.j n.jXw o.'.1XwXwXw.9 `XHXwXl xXlX, $ sX,X,X5X5X,.ZX, $ y n oXh.+ =X0.+ M w ^ ^X> v.YXe.9X,Xw.[.' 1.' hX5 $ m.9 xX..a R B 3XlX5 RX1XI RXIX, $XDXD RXDXDX, c.H.u.u.uX-XI a.eXD.} RXlX3 `XJ.9XHXc.9 :.5 ` ` yXm O.q ! c.~.`.`.`.`.K", +"XwXy K g 8 8.D 1.]X, g.]XO.0 TX;XJX.XlX-XIXI.8XI 3XIXIXD 5Xw D.D.nXK.0.'.9 g n $ 1 :.] )XK ) q.KX5.k.k.k NX9XkXgXgXk.cXgXgXg.c.U.U.U.#.c.c.6.U.U.c.#.c.U.c.U.c.UXg.U.o.oXg.oXg.oXg.oXg.oXg.U.U.U.U. .I.c.c.#.U.c.c.U.c.c.U.#Xk.c.U.U.U.c.U.c.#.c.c.U.U.U./.cXg.oXg.o.o.o.X.o.b.b.X.oXg.X.b.^XdXj.kXtXjXtXj.k.k N.o.kXt.kXt.kXt.kXj.kXt.X N.b N.o.o.b.b.o.X.o.b.o.b.XXg.o.o.^Xj.b.X.o.b.bXgXk.c.UXk.c.cXk.cXkXgXkXg NXxXxXx.$ ) ) ).$ I q.IX9XgX9.b N.^.^Xj.k.rXdXt.^XoXoXt NXxXXXJ.%.j.EXG 8 U.aXe.i x.Y uXnXnXn 0.EXp.-XBXMX,.}.a.a < R.aXD.a .E y nXyXwXUX0X; y.OXG g v b.' &Xm s s s v H.q &.q.@ %X6.PXi.@X2XrXp E.*.Z.d vXnXn.X0 M = M.; 0 0.jXq yXnXe C.Z.W $.ZXI.Z.ZXD.Z $.u 1 x `Xl #XDXI R RXDX, c.0 1X1.aX,X, $XV 3 : :X9.Z.uX- R R R.a 3 a.a <.a R tX-X- RX- R tXa.= o.'.u.`.`X-.8.~.`", +"XJ.0XKXJ DX- RX1XIXI R D.2.2XUX. (XV.2 ( 3.HX1.H.HXI.`XI 3.H.aXI RXP.n.wXa.'XK RXIXD cXI.8.H.8 ~.r ~.r ~.XXgXk.oXkXgXgXkXk.U.U.z. . . . .6 iXuXuXuXu.t. .6. .6.I.#.#.UXk.cXk.c.U.cXgXg.cXk.U.U.U.U. .U.U.U.U.c.c.c.U.c.c.c.c.U.c.c.c.c.c.c.U.c.U.UXk.U.c./.cXg.oXg.o.bXg.o N.X.k.^.^.^ N NXo.^Xt.k.k.kXj.k.k.rX9Xd.k.kXjXtXjXjXjXjXj.^.b.o.X.o.o.X.o.o.X.b.b.X.o.b.b l.o.X.b.X.b.b.b.X.bXg l.U.c l.cXg.UXg.UXkXg.o.X.b.X.b.XXx.X.^Xg.X.b N.X.b N.X.^.rX*XtXt.uX*.r.|.f.$ I.f VX9 k xXL.s.s.iXeX, xXp.YXe v v v ^.EXwXr.[ xX3.}X-.a < R <.a.a R R s.'.n s.0 g gX5 8XD.D.DXO.'.w.9.w RX1X- a R 8XL bXP J.s.s *XsXs.W.W.W.WXa O /Xa.N $.'XK v.ZXGXp JXm J y & M H.4 M.4 r S S.+.TX<.Y aXDX,.M.M pXqXp.J.x.p ..m E U.} t.e t U h E .gXH.S.3., | }X.XJ.- k $X,.aX,XI 3X,.5.Z 3X, h hXDXDX,.Z.u x x 3 c c.,.- mX;Xw.j.!.'.0.! 1 o y.E.j &X0.;X> JXe U h R.a R 8 $.~XV.rX- aXpX=X6 HXG.n.w R B R R.a RX,X-X1XDXI.D TXU.>Xh k.[.,.[XB [.,.g n.9.Y & &.T = o.- y k.9.,., x R 8Xs.MX,.W.w.wXG.j =X> &XC =.q.> o HX0 & &.E J JX0XGXG y.M U.ZX,Xl 3.ZX,XD.ZX, : TX5XDXD RXDXD R.a.ZX,XwXDX.XcXK T.GXJXwXJ mXw.3.,., R R R a BX,XI.a.}.a.aXDX1X- 3.a < C.v 2 b :.8X1X-.`.`X-.`", +"X,.uX1 I D.5XI.`X1.~XIXV : c D.` 4X5 B q.2.8 ).u.8 3.8.`XI.8X-X1XlX..'.!.9 yXwX,.Z.u.u.H.8.8XV.8.8.8.r.^.b N.o.o.X.b.o.b.o.X.o.o.c.cXk.c.#.I.6.6Xu i i.#.U.U.U.U.I.U.U.c.cXg.c lXk.U.U.I.I. .I. .6 d. . . .6.6. . . ./. . .I. . . .I. .I. .I. .I.I.U.I.# i.z.UXkXg.cXgXgXxXgXg.^.k.k.k.^.k.^.kXtXt.^.rXt.rXtXj NXjXtXtXj.^.b NXj.k.^.^ N.b.b N.b.b.X.b.b.b.b.b.b.b.X l.X.o.b.o.b.X.b.o.bXg.c lXg.U.c.c.UXg lXgXg.b.b.b.X.X lXg.b.X.b.o.X.b.b.b.X.r.k.k.r.8.8XtXdXVX@.2 qX3.5 c cXI UXG vXn.).W h._._.YXp.s.W J.j.>X+ ` XM h h.a.a R a R.aXD < R.M t.a $Xl 1 x $Xl TXK `XcXJ.M <.a aX-.i x.Y.p o H 9XL.Z t RX-X- R R R R a.D.' TXwXKXU s.'.' T gXD.D gXK.D x.D.w B.eX- a tXDXL bXC 0 /.) C u 8 8.).N.).= /.NXe 8 R.jXU.> H H & 0 o.E J wX0 S S.CX>Xf H.; MX0 [.iX1.ZX5X,.M U._Xn.p.<.x W.< . .._Xe hXe._XnX+ zXS.3X#.,.] 6XH.3 K.S [X,XD c $XJ.].K : :.aXl.}X,.}XIXI.a.a.a.a 3.aX-XK :.- n y o.EXm 9 H.j M.;X0 H w J.4XfXG._ hXD.a.M.a.M sX-Xt #.uXe._.vX6 H 9 xXD 8 R a R BXD 3 R RX,.*XD.w.9XwX; k.-.[ kXX0XmXw.j y.q.q.; H w =XhX0XGXp v.* $ hXl c ` R.Z $X,X3XI.}XD 3X, U $ UX,X,XD.9XcXJXJ.,.9XK :Xw xXlX,X,X,X- RX,.aXc.9.5XD.a h.a $ :X5X5XJ $.j.W.) 0 b $.`.`.`.`.` R.`", +"XIX-.8 R ) m.5XIXI.`XIXIX-X1.u R.u.8.HXI.` )X5.$.`.`.H.`X-.`XI.~ DXyX;XU !.GX;XK D ).%.`XV.H ~ ~ 3Xt.r N.X.o.X.o.X.oX9.o.o N.oXgXk.U.c.c.I.U.U.U.U.U.#.U.c.U.U.#.U.UXkXg.o.oXgXg.o.oXg.U.UXk.cXk.U.#.cXk.U.c.c.U.U.U.U.c.U.U.U.c.U.U.U.U.U.U.U.U.#.U.I.I.6.UXkXg.U.UXk.UXk.UXk N.o.X.X.XX9.X.XXx NX@XxXkXxXx.X q.XXgXgXk.U q.z.U.z.U.z.z.z.z.z.zXk.UXk.UXkXk.cXkXkXg.IXkXgXxXgXg l.cXg.c.U.z.I.#.z.U.#.z.#.U.z lXgXgXgXg.b lXx.o.o.XXgXgXx.X.XXdXoXdXdXt.H.rX*XtXV.kXV.H c.kXV.H.DX, o.s.).N.W.= MXpXG.s.sXn.jXcXB XMXM #.} 3.a a.aX-.a RXD R.a.e.a.a R.M $ $ R xX,X5 hXD xX,.a.M.a.}XM x.-.;.jXC bXaX,.a R R R R RX-XD.M.aXD.W.w 'XK g.'XU.' gXOXU.] gXl.wXD RXDXIXD 3.a.n s.!.q 0.s...)Xs.ZXa hXLXeXL 2Xa.nX,.wXK =.O.>.> H H.; &.;X8 zX0 wXfX6 ^.4.;.pX+.Y CXDXIXD.a.M.M.M.dXnXG >X+.x >XA E EXe p p._.@Xr.1XZ T V 3X5XVX3XJ.3.-X,XM.G.a m.,.% T.] T.% :XcX-XI.aX1XI R BX,XD aXM : `.[XmX+.4 &.;.4.@Xf.J.@.@ 0X6.@Xn..Xe.Z.ZXIXDXDXD.Z.aXlXM.aXL.sXi HXCXL.>.> cX,.ZXJ.a :.ZX-XDXI R 8.D sXKXH.-XK.-.SX#XH.-.gXr n [Xh M.T.1.j.+.>.E yXw.YXG o JXnXC W.j z.+.;Xp J H & &.j.jXG gXe J.jX0X0.>.+ H.T n M =Xs.9 $ # D.]Xl.Z.Z.ZXKXDXD.Z $ h.wX,XD.MX,.aXDXD.ZX1X-XDXI xX5 t.a R.MXD $.*X. :Xw :.,X..- |.9X. T.2XJX.XK n.).= b vXVX1.`.`.`.~.`.`", +"X-.`X-.8XI V )X3.u.` R.`.`XI.u.`.8 3 ~XV.u.K.$.$ ) :.8X1X1.8XIX-XVXUXOXKXmXPX. : :X3 D.uXV.8.8 ~XtX*Xj N.b.UXg.bXg.b.oX9.oXg.bXg.U.c.U.U. .U.U.U.c.c.U.U.U.U.c.U.c.U.U.o.b.b.o.o.c l.U.U.U.U.U.U.I.#.c.U.UXk.U.U.cXk.U.U.c.U.c.U.c.c.c.c.c.c.U.U.U.c.U.U.I.cXg.o.b.o.o.X.b.bXz.kXtXt.kXtXtXtXtXt.k NXkX9.rXjXtXz.k N.X.X N.b.XXg.o.X.o.X.o.X.o.XXgXgX9Xg.oX9Xg.oXgXg qXgXgXgXgXgXkXgXgXk.#.z.#.z.#.U.Q.Q.Q.z.Q.QXxXg.z lXx.Q l.zXk.zXgXk.X.z.X.^Xo.^Xo.5XoXo.5.5 N.K.k.K.5XoX5X5X5 $.Y.s v ^ oXp.E y H.Y.E n [.[XB.,.l.l 3X, cXlXDX,X,XD 3 hXDX,X,.MXD h hXDXDXDX,XD 3X,X,XDXDXDX, 3.}XX .- MXw yXL.wXDXD.a 3XD.aXI 3XD cXD.aXD.MXD.M $XlXPX5.n.0.0.w.' $.a tXD RX-.a.aX-X,XL s.q OX=.) u t.M 8.M t.w t t x hXcXcXwXOXL v o o 0.v.).s v.; wXiXi {XfX2 ^X+XGXG C R RX1X-X- R a.*.a._.FXn.<.pX4XA.m.m.m.m...jX+ M.O :X5XlX-XI c x.-XJ.lX,XMXKXJXJ mXc., cX..]XKX,.a RXDXD 8 R.*X-X- c `Xr WXp 0X6 ^.BX:.{ % M.. v.;X2 vXr vXcXcX,.,Xw.MXc.[.}.1X+X>X= 0 w.E.WX; 1XHXHXlXJ mXJXl I.eXIXD.aXD.n 1.>Xw n [Xw.1 n.-XwXH [ n WXHXS MXnX> &X0.+Xw.E J ^.@ ^.y zX%X%.j.4 0 0 H H b s y.w oXG =XG.>Xp H.T nX<.1Xh.jXh n.,.% `X..2XUXlX,XcX1 hX1 hXDXD hXD R.MX,.} c RX,X, R.M.ZXD.aXD R RXDX, RX-.e : RX5 : 3XcXlX,X, 8XI h.a.E.w.s.s.!XD.`.`.`.`.`.`.`", +".8.8.aX-.8.~ 5Xl }XI RXI.`.u.8 3 ~.8.r.rX*X*.`.5X9 qXV.`.H R.`X1 8 T.0.n x gXw m.aX5X*.H.`.8.k.rX*Xt N.bXgXkXg.b.b.b.X.oX9.b.o.oXg.c.UXk.6.U.U.U.#.U.c.U.c.U.c.U.c.U.c.c.oXg.cXg.U l.U.U.U.U.c.U./.U.U.U.U.c.c.U.U.c.U.cXk.c.U.c.c.U.U.U.U.c.U.UXk.U.U.I.UXg.o.X.o.X.o.o.X N.^XjXj.kXj.k.kXj.kXt.kXtXkXxXj.k.^Xx.b.X.o.X.o.o.b.X.b.o.X.o.X.o.oXg.X.o.o.oX9.o.bX9.o N l.b.X.b.o.b.b.bXg.cXk.c.c l l.U l l l lXx.z.bXz.XXo _.z.XXz.^.b N.o.X.^XtXd.rXdX*Xt.rX*.k ~ 3.8.8XI.H.H.` FX1.nXa.N.s...s oXrXrX0Xr n.[.9XM # a a aX-XD s.~X- a a a 3.* a aX- R a a R < a.e.a a a.a.e t R a.a a h.lXl.Y.jXm.D.W.*X- a a.~X-.~ R aXI.e t R t R R.* t R.D.wX5 $ $ $ R.e.MX5 RX-X- aX-.aXaXLXm o.s.).d C t R aXKXqX, n `Xc k :.9.'Xa 2 J J.s 2X=X=XiX8X> w.P ^.4..J.<.@.; H = K g kX5XX ` I V 6 V .u h c 3 RXIX-XD :XIXDX5.H $ cX,XD 8XD RXDX-.} hXXXBX<.x ....sXb.y S p.+Xr.MXh.j Xw !XH n.,.-.gXZ [.-.,.[ [Xh.1X0 o zXC &X>XG.@ ^ ^ SX:X:.y >.x & H =.q.q.9 v.Z.9XG.'XG bX0 n = W [Xh MXw.j.9XKXDXD $X..e $X5 1X1X, RXDX,X,X,XD.MX,.Z $ RX,X-.a.aX,XlXDXI R.a RX-X,.a aXD aX-XD R RXD.a RX1 R BX, U.M p.s.W.jXD.`.`.`.`.r.8.`", +".a.`.8.`.8.8.~.$X9 I.k.` 3X*.}.r 3 ~X*X* ~.kX*.8.u I.$ :.~X1XI RX1.].'.w.n.j @XJ m q T q D.X |XxX9.k.X NXgXg.b.o.o.X.o.bXgXg.o.o.U.U.U.#.I.c.U.U.U.c.c.U.c.#.U.U.U.U.c.cXg.c.U.U.U.U.U.U.U.c.U.c. .U.U.U.U.U.UXk.c.U.U.U.U.U.U.U.U.c.c.c.c.c.c.c.U.U.c.IXkXgXgXg.o.o.X.b.o NXjXj.kXj.kXjXt.kXj.k.r.kXdXt.^Xt.^XkX9.b N.o.b.X.o.b.X.b.o.b.b.oX9.b.X.b.X.b.b.b.X.b.b.o l.X.o.b.X.b.b.oXgXk.cXk.c.c.oXg l lXg lXgXg.o.X.XXz.XXg.X.b.X.X.^.^.XXtXtXtXtXt.u.rXtX*.r.r.` F 3.8.8.8.HXV.H.0Xs.s vXnX>X0Xw.-XcXK Xl.lXMXX h.a.a.aX- R 8 RXI a R R $ aX-X- tX- t t RX- R R aX-.a a < R B tX- a.a #.i.9.j yXL.Z wX8.;X8X>..4X> & &.9.D cXl.u VX* #.,XX.l.a.a #XIXDXDXI BX1XIX-XIXIXIX, $X,XDXD.eX1XDXD x.F.pX< WX4..XbX:XF vXe y.M.-XK 1 1 s.wX5 RX,X,XD.-Xn .Xi.B.B 0XCXC v.nXD.e t.e.* a RX- R VX. cX-.ZX1XDXl s.9Xm.jXw.>XH n.,XHXH.[ [XZ.T.O.L.T = &Xh.+ y.+ = MX:.L.T.y.T.j.;.+.+.>XC.jXG.wXwXD.W.9 sXG 9.Y =.-XB n.1Xw v.wXK $XDXD `X,.aXK.aXIX,X, t.Z xX, .{X>X4.FXq u t a RX- aX,.~X-X-.~.`.~X1 a.* EXnX4Xn.F .X4 >.@XpXp.EXwXUXD RX1.KX9 3.8 VXXXXXX # $.a.} a a 3.aX-XI.8XDXIXD 3X, RXVXDX1X-X, h 1.F.[.g M nXn.)Xe.* t BX,.a h.a h.D.D RX1.M.MXqXeXn .X> LXi J SXC.! $X1.a aXK `.ZXK c $XIXl.aX- RX,.Z.Z g = !.' oXw n =X.Xw [ k.[ K kXhXSXZXhXH.>Xh =Xh.+ M =XZ.T.jXrX+.; M =.; y y.w $X, $.' sXG.!.j.>.SXH.Y k.1 n y.- x : R.Z.9XIXDX. $XD.w $X, $ x.9 $XK.a.aXD.a.a 3.e 3XD RX,.}XDX-XDX,XDX-.a a.a RXVXI R.a.,XDX1X, $Xc.M.jXn J JXKX,.`.~.8X*.K.8.`", +".8.8XV.8.8XI.8.H.8.H.$.AXXXV.8.8.rXtXtX*X*.k.r.rX*X*.8XV.K I 3XIX1 mXU.O.' sX..uX5.`XI.8.8XV.rX*.k.^.oXg.b.oXg.b.o.o.bXgXg.oXgXg.U.U.U.I.#.U.c.c.U.c.c.VXg.c.U.U.U.U.U.U.U.U.c.U.U.c.U.c.U.c.U.U. .U.U.c.U.U.U.c.c.U.U.U.U.c.U.c.U.U.U.c.U.c.cXk.c.UXg.U.o.b.o.o.o.o.o.b.o.X.^.k.kXjXj.k.kXj.kXj.r.^Xt.kXt NXk.oX9.b.X.o.b.o.b.b.o.o.o.X.b.oX9.b.o.b.b.o.b.o.b.b.X.o.z.b.b.b.o.b.o.c.UXk.c.cXk.c d.6X .t.t.&.&.RXx.&.&.R.t Q.& A.fXx ~Xx ~Xt.u.r.u.kX*.r.u.rXt.5.8.u 3XI.aX-X,Xl.n s.. 0X> WX+ ` ` x $ h $Xl a hXI.aX- RX-X1X1X- RXV aX,X,X-X- a RX- a R R RX-.e.a aX- < R R R R.~X- <.a # 1Xc.j.nXa RX- aX-X-X-X- R 3 a R R a R.* R R aX-X-X-X-.aX-.a R R a B BX- a tX-X- 8XL.nXm vX=.M.N B RX-X- BX1 aX- RXDX- R $ s.N o.s J.v / o 0 yX>.@X4Xp.F.d t R.aX-X- a 3X-X-.`.~X-X- a B < t.MXeXnXn.FXnXp.FXnXpXp y y y RXI.`XXX*.8., V `X3 ` ` h.aX,.}.aX-XIX-.}XDXD #XD c R R.DXDX-.D a c.F 1XBXB.-XpXG p.M v RXIXV :X, $ h.Z.a B a $Xe.s.. w S w H.;X0 =XyX.XcX.XD.9XlXJ TXcXcX-XIX,.eXIXD R.2 g.9.w s.9.nXKXU.>X;.1X..O.S.1 |XHX#XhXw k.1 n.O.+.+ =.T.T.1.+ M z.O.hXh.>Xh x.9 $ s x sXm ! = =.S.SX7X7 n =.j o ' 1.a.Z `.Z $.,XUXcXJXKX. g kX.XwXH x.OXIX, cXI hXD.a.aXDXDXI.a 3XD.a R a R a R B c aX1X. #XJ TX3 m.j M M =XZ.>X5.`.8.uXxXV.8.`", +".8 ~.8.8 ~.H.HXI.H.u.`X9.KX*.rXVX*XtX*Xt.r.kX*.k.r.u.8 3.8 3.`.a RXJ.n g !X..GX. 5 D 5.`.H.u.r.k.k.bX9.b.o.o.bXg.b.oX9.o.o.bXg.U.U.U.c. .U.U.U.U.U.c.cXgXg.c.U.c.U.c.c.U.U.U.U.c.U.U.U.c.U.U.#. .6.#Xk.U.U.U.U.U.U.U.U.c.U.U.c.U.U.c.U.c.U.U.U.U.UXgXg.z.bXg.o.X.o.oXg.bXg N.^XjXjX*.^XtXk N.kXt.kXt.kXjXj NXk.o.b.o.b.o.o.b.o.b.b.b.b.b.o.b.o.o.X.o.b.b.b.o.b.b.oXgXk.b.o N.b.o.cXk.c.U.c.c.U.c.c.UXk.I./XgXk qXk qXkXk ).RXk.z )Xo.8Xo.`.H.u (X9 ]XlXo.5 ` DXV.k.].u x 3 $.9 v.wXi.v 0XrX+ #XD X, 1 : x RX-X,X1X-.aX-X-X-.aX-.aXIX-XI.e RX-X-X-.e BXI t RX-.a a.a a a RX- R.eX-X-.a #XM gXUXL.Z 8 aX1 a R RX-XDXDX- R.e R RX- a RX- t aX- a R aXD.aX- R s c.e RX- t B 8.ZXLXC 0X=.N u t R BX- R BX-.~X- 3 a c 3X3XeXs v J._XG O o vXmX+XGXp.. u u t R aX-X- R 3X-.e.e R.~X-X- a B a.a t t C t u U.d uXnXnXpXp yX, RX1.8XXX*X*XJ.$ V XMXM.}.aX,.}.} a h :XM kXhXX 1XK.u D.0X5XJ.DXKX3.l.l.F . J JXG.9 $X1X, a h.Z.MXDX,.aX- a 3 3.~XJXJXJXc.w $XD.wXw gXGXUXw.>.G K.GXSXZX. [ nXJ.-.3 k.1.O.+ =.OXZ KXh.O.O.+.O K.O =XU.a $.9 :.'X. [Xw.-.-X. V k.1.jXa x.9 RX, T :.aXU.,XK T.ZXK xXl.wX,XJ $Xl.}.Z 3 R R.aX- 3 RX,.M.a.a aXD.aX-.aX- aX-.DX1.a #X1 : c c h.d.s.s v b.0.Z.8.`.`X* 3 ~ c", +".8.8 ~.8.8.8 ~.8.8.8XtXV NXtX*.rXtXtXt.kXtXt.rX*XtX*.r.8.8.}.8.` RXc.n.'.' gXH.] D.k )XV.H.8 3X*.k.XXg.b.o.b.b.o.b.X.o.o.bXg.c.c.U.c.U. .c.U.U.c.U.U.U.c.U.c.U.U.U.U.U.U.U.U.U.c.U.c.U.U.U.#.U.6.I.#.U.U.#.z.U.#Xk.c.U.c.U.c.U.c.U.c.U.c.U.U.c.UXkXgXg.U.b.o.b.o.o.bXg.b.o NXjX*XjXt.r.K.fXkXj.^.kXtXjXj.^ N.U.X.o.b.o.b.b.o.o.b.b.o.b.o.b.o.b.b.o.o.o.o.o.b.o.o NXgXg.b.o N.o.bXg.c.c.U.U.c.c.cXkXk.zX@.& 5.fX@ q.AX@.A.&X X@.f.$.K.u.8XV.KX3 ].u m.|.%.] P ] ] $Xx.9.'.j =XC ^ 0 ^XfXi.jX7.- ` # xXJXc $ x.a B R R 3 RX- R.e RX- RX-XD.e.a R a a.e a R a.a R.aX-.a a a a.aXD R B RX- a 3XMXM.-.q s.W B.aX-.a B RX-XI B RX- R B a aXD $XIX-X-X-.a.e.uX, $ R.M TXD.a R h a R 8.n OXC 0.=.) C R.~ RX- BX- R R.e.ZX-.u 3X, xXs.=Xp vXLXGXG.9.-.YXpXqXq a.}.* R.8.~X- aX-XDX- a.eX- aX-X- R.~.e.eX- BX1.* a a aXq .Y o.Y yXDXI.8.r.K ~X*X*XX.$XBXM # h.} 3XX `.-X#.3 Y.- DX. mXJ $.u 1XX a #.l.FX+..+.O.+.OX;X; =.+ MXw y.' xXl $ $ s.jX. nXcX. V.-XBXB.,.S &.s v `XlXl cXl $ x T.e.aXDXDX-X, U.aXD.a a.a.aXDXDXI R.a a R.u.aXD a.aXI aX-.MX- R BX1 3 a.aX-.`X-X- < u * / 2XL.9X5.8XVXX.8X-X3.5", +" ~.r.8.8.r.r 3.rXt.rX*.k.5.k.rX*XtXtXtXt.kXtXtXjX*Xt 3.8.8.`X-X-X1.2XKXa.'.'XJ DXIX*.`.H.8.H ~ ~.^ N N.bXgXg.o.o.b.o.b.bXg.c.U.c.U.U.U.I.c.U.c.U.U.c.U.c.U.U.U.c.U.c.U.U.c.U.c.U.c.U.c.U.I.I.#.6.#.#.U.#.I.#.#.U.U.U.U.U.U.U.U.U.c.U.c.U.U.c.U.c.c.o.c l.b.o.o.bXg.bXg.X.X.^XjXjX*X*.^.kXtXk.z ~XjXt.k.k N.b.z.b.X.b.o.b.o.b.V.o.o.o.b.o.b.b.o.o.b.b.b.o.b.b _.b.oXgXg.b.o.b.o.b.c.cXk.c.c.c.c.c.UXgXk.UXkXg q.XX9XxXx.X.X q.X.X NXV.u.8.kXV.5.u 3 5 $.H cXl.` 3X1XaXGXG oX6 2X=X=XiX= %X2 yX< :XBXM h.a.a.e.a RX-X-XDX1 a R R aX-.e a.uX-XI.e RX- R a R t a.e R aX-X-.a a 3 R.* B RX- a h # .-XUXaXa.M.eXwXD R.*.* R RXI.e aX- R a #X. `.*.a BX-XD.ZX. :.e R a R BXD.G a.a B 9XaXm J 2.N C R t.~X- R R.eX-.*X,.~XI #X5.M.WXsXaXm.W x.9.}XI `XcXp Xe < C a R B R B R.M a.*XD.e R a.~X1.e.`.` BX-.~X-X1.}.e.gXq MXqXGX+ TX,.`X*.8.5XVX-X-XMXJXXXM ` ` V.G.,.,X3 1Xl R.ZX5.H.Z c.uXIXI.}XM >X%X: ^ pXe.D R R 3 R.MX, 3.e cX,.W 0X6.; wXa.n.n.D.W t t $XK m `Xc mXc TXHX,X- R RX- ` cXI R.~ 1XJ.' :Xl x.9 'Xl 1 ' s sXP.9.j MX; =.>XH.O [.+ =X0 =.>.+XC.!XcXm.'.E !.j x $X,XcXK = @X;Xh [.-X3 .9X7 n &Xa v.-.9XKX,.ZX.XlXD 8XDX,.MX, RXDXI.} RX,.a.M 3X,.}.ZX,X, a.Z.aX,X5X-X, :.ZXIX,X-X-X-X,X1.a.a.~.a.a < C.s /.v s.0XoXV.K.u aXl $Xc", +".kXtX*.r.rXtXt.rXtX*.r N NXtXt.k.rXjXj.rX*Xj.kX*.kX*.r.8.8.`.` 3.a.0 D.w ' : mXK.` c.u.5XV.k.K 3.^.XXg.b.X.b.b.b.X.o.X.o.c.c.U.c.U.U.#.I.c.U.U.U.c.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.c.#.#.#.6.I.#.I.#.#.#.I.U.#.#.#.U.U.U.c.U.U.c.U.c.U.c l.cXg.b.UXgXg.bXg.o.o.o.o.oXgXjXt.kXt.k.rXj.kXjXt.^.k.^.^.^Xg.b.z.b.o.b.o.o.b.o.b.b.b.o.o.o.b.b.oXg.cXk.UXk.c.cXk.cXg.#Xg.b.b.bXgXgXg.c.c.c l.c.cXk.cXgXkXk.XXk.f 5.& q./.X.X ) N.XX*.rX9.8 3.r.rX* ~X3 ~.u.H 3XVXDXl gXG O 0 0.vXi ^X6Xi.P.jXBXJ :XlXMX-.aX-XI.a.~XlX,X1 RX- a RX- $ )X1XD.a.a aX1 1.Z a.e R RXlXK $ R aX-X-X,XlX5 R.eX-.a c `.3.[XU.n.w 8.*.,.a 8 R R.e R.a.eX- RX-X- $XJX. RX1.* C R.eX..Z.aX- a.a.eXc.,XlXD.'.wXLXC b 2 / C.a.~X-.e R aX- R R 3 R R # c sXsXs.sXGXpX,.a 3 3.}XK.9XGXG a t R.e B R.eXDX1 t a.* t R RXD.eX-.e.H.H.` B.~.e.a h x.-.F.1 = y.-XcX1 c.`X*.5 #.8X* :X3 VXXXMXX :X3.,., `XX 6X. n.3Xl., ` 3 3XV a.a R h.FXq.pX2.xXf v CX1 RXD R.M.Z.}.eXl BXeX6X6.4.q.!XL.nXs t.M aXKX5XX.ZXJ.Z $.a $.a R.e.aXIXIXIX5 cXIX-.ZXV.~XJ.ZXV.ZXK.0.'Xa 'Xw y.' b.9X0.> = n nX0.+ M =.+.O &Xm.j y [.>XUXUXUXK n.>.GX;.GXSXHXH c 1 $XB.[ n M b v.>XJ 1 kXJ m.9 R U.a.ZXD.M RX,.M.M.aX- R.a.a R tX- RX,.a 3Xc :XMXKXKXcXcXKXl R RX-X,.aXIXIX-X-.M.* u.W 2XLXm.Z.8.r.5 3 `.O.GX,", +"XtXt.rXt.k NXtX*.r.^XtX9Xt.k.rXt eXt.r.r eXtXt.r.rX*XV 3.`.`X-X-X1 ' g s.w.n.2X5XV.8 q ).]Xd.KX9 N.X.b.o.o.oXg N.o.bXgXg.c.U.U.U.c.U.#.#.c.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.U.c.U.U.U.#.U.c.#.U. i.#.#.#.#.U.#.#.#.#.#.#.#.U.U.c.c.U.U.U.c.U.c.U.cXg.b.U.oXg.b.o.o.o.b.o.X.o.kXj.kXjXtXj.kXjXj.kXj.^ N.b.X.o.b.z.b.b.o.b.b.o.b.o.o.o.oXg.o.o.oXg.c.U.c.U.c.cXg.cXk.c.I.c.o.o.bXg.c.cXk.c.c l.c.c.c.c.U.UXg NXg q./.$ q q.XXk l.b.^XtXt ~X*XtX*.k 3X*.8.u.uX*.8XVX1XKXG J.@ ^.C J J ^ wXf ^Xr.jXc : #XZ hX-.}.eX- a.-X, R.e.* R a xXlX,X-X,X-X1.aXDXH c R R t.e `XJ T B RX- 3 a 1 $ R R.~ a.} kXZXcX0 s.nXD t T.'.Z t R t B 3.eXI.eX-X- h :X, a a R R R t 1X, BX-.uX5.a h R xX- B.wXaXm J.=.) C t B.aX- aX- a a.eXD.~X- c 3 1 RXs CXLXGX,XIX-.8 3 c.-.YXn s t t.9.eX-.a aXHXI R a aXJ.M m.eX1.e ` DXJ.~XI.e )X5.a a.}XnX7 [Xh.1XcX,.H.`.8.u 3X*.u 3XX 5., V V kXJ., 3XM.,X#XHX# XJ.- #X- 3X- 3.}Xl X+Xr.{ ..s v.MXIX1X,XDXDXDXD RXl.* UXnXi L.; &.!Xa.n.Z t R.e B a.}XI a RXI R.*X, c.aXlXl :X- 3 3 c 3X#X5.G $ 4Xc m g.%X. m.2.w.9.9 &XyXZ.9XGXG.qX0 H &.;X0 M.EXL vXLXL.9 T.wX,XD s.!Xw.O.> ` 1 h 1 1 kX7Xw &.E.w x 1.2 1XJXJ TX,XDXD xXKX-.aXDXD RX,X,.ZX5 tX5.a.aX-X, 3.*Xl.a.9Xl c.Z hXDX, RXI aX, R.a 3X- R.M R.) 2.= v 'X-.`X9.5.a sXw [XG", +"Xj.r.^X9XgX9Xk N q NXk N.z.X N.k.X.X NXk.X.^.k.k.rX* ~.8.`.uX*X5.DXlXK.w ' TXJXIXI.8.H.u.`.8XV ).k.X.X.X.b.bXgXg.b.XXgXk.U.c.c.U.U.U.I.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.U.U.I. .#.#.#.#.#. .#.#.#.#.#.#.#.U.#.#.#.#.U.c.U l.c lXg.o.U.bXg.o.X.o.o.o.o.o.XXjXj.k.k.kX*Xt.k.k.^ N.b.X.o.b.X.oXk.b.o.b.b.o.oXgXgXg.cXg.U.c.c.c.c.c.c.UXk.U.c.U.c.c.c. Xk.cXgXg.c.c.c.c l l.c.cXgXgXg.cXkXg.b.b.bXx.X N N.b.X l.^XjXd.rXtXt.rX* ~.kX*Xt.u.k.uXV.`.5XGXG.sX=.v 2.v.v.v ^.vXiXr.j `XMX. | k a.a.aX- aXJ :.Z R.a R a.Z VXJ hXD 3.a.a.aX. $ RX- t aXKXwXK RX-.a.} a :Xl.e aX-.a.} [ | =XU s.n.M t.9.M R $ xXI #.e a.e R.a.e.a.eX-.a.eX- R.e c RXDX-X- 1 s R.a t a R B.w.nXC o 2 O.w a.aX,Xl.aX-.aXl.Z $XDX1XKXJ cX,XK.q o v 1.a 3XV.`XD :XK.Y v U t :.MX-X-X, Y.'.e R.eXJX- m.eX- RXl c.-XD B.~ T.u RX- < a UXB.j [.O.SX,X1.`.8.8.K.K.K.KXX.5X3XJ c ) 3X1XIXIXJ VXM #.} h RXI h.a aXM xXB.[X+.@ %..Xe.M tXDXD CXDXe.W R.u $ t._ % % ^ HXC b.w.nXD.e R R.u.~ R RX5.*.MX5XlXc mXc 3 #X-X-X-XIX9XMXIXXXl $.ZXD : $XIXDX,.5 TXy T g s.n s vXC.q H HXr M =XG v s.' s.n s v.n.DXK.'XwXHXw XMXDX, 1 kXBXH HXm U x $ h.a.aXD $ $XDX, mXJ xXKXcXJ mX..-.,.S.,X.X, 3 R.M.u.M c $.e a.* R.aX- RXD.aX- 3 :Xl 'XDX,X,._ 0.@.@X0 h.`XVXo.ZX1XG v v o", +".kXt ~./.rXxXk.^ q.^X9 N.$.bXj NXgXg.X q.b.kXt.r.kX* ~.`.`XMXJ m `XK @ !.' gXJXI.HXI.8.8.8.8 ).k.k N NXk.I.f dXgXgXgXgXk.c.U.U.U.U.U. .c.U.U.U.U.c.U.U.U.c.U.U.U.U.U.U.U.U.c.U.U.U.U.U.U.U.U. .I.#.U.U.#.#.#.#.U.U.#.#.#.#.#.#.#.#.#.U.U.c.U.c l.c.o.U.b.o.b.o.b.o.o.o.b.bXj.kX*Xt.k.^Xt.k.k.^.b.o.bXg N.bXkXg.o.X.b.o.oXg.c.c.c.c.U.UXk.cXk.cXk.c.c.U.c.c.cXk.cXg./.cXk.U.c.c.U.cXk.c.c.c.c.c.c.c.c.c l.o.X.^.b.b N.X.X.bXg.rXd.rXt.rXtXtXtXt.rXtX*.uXt.u.`XV ' yX>.@ M.+.;.; H J.;X0.v.EX%.- `.-XlXc h.a < aX-X, c.a a a a.a a 3X, R R hXI aXD x 3.a a.a.eXDXDX, R R 3.a a.a.a RX- tX-X,XMXqXwXwXL.wX1 R x TXw.9.'XKXcXlX- R a a BX-X- a.a.a.aX-.aX-.aX,.e.aX- aX-.a.e R a B s.'Xm o 2.; y RXI.' $.a.a aXK m.aXIX-.|.,XM R R.>.=.v 9X,X1.8 3.8.} yXGXpXG.e `.}.a.eXKXlXJ R RX- $XcXKXD t.e x.9 h.eX- B $.Z.~ B.e a a UXpXpXp =XlX9 R.8X-.~.8X*X5.u.`.`.8X1X- FXI.H.a VXXXBXBXB ` 1 #.iX3 `.-.[ JXnX6X6._.N E._ v.s...s.mXe 8 c.M u.mXA.B H.qXC.!.ZX5X1XDXIX-.~X-.eXlXJ mXU kXlX,X-.aX-.e.a 3.uXVXV cXI 3 3.eX-X-XD.uXJ.2X..] D.5 'X5Xl.nXa bXC & H H =X0Xm s 9 9.!.qXP.!.' s o s !.1.-XMXMX, h : [ k [ JXL y h x.w cX, RXaXDXJX..9Xc `XJ :XKXc TXc $ $X5.SXIXDX, R c.a.aX, R.a RX- R t.eXI.a.a a `XKXUXJXw gXwX0.;.>Xw 3.`.r NXV.ZXGXG.s H", +".r.kXt.^Xk.^XgXkXkXk.IXg.zXtXtX9XkXk.X.zXt.r.k.kX*.rXV.8X-.u.5.K : T.2.O T.G.0XIXI.8.` FX5XV ).KXo.RX .(X Xu./XgXgXk.UXk.c.c.U.U.c.U. .c.U.U.U.c.U.U.U.U.U.U.U.U.U.UXk.U.U.U.U.U.U.U.U.U.c.U. .#.U.U.U.U.#.U.U.U.U.U.#.#.U.U.U.U.U.U.c.c.U.c.U lXg.o.U N.oXg.b.o.oXg.o.b NXtXjXj NXtX*.^XjXtXzX9.o N.o.o.b.UXg.o.b.b.b.o.cXk.U.cXk.U.c.c.c.c.c.U.U.U.c.U.U.U.c.UXg. .c.c.U.cXk.c.c.c.c.c.c l.c.c.c.cXgXgXz.o.b.X.b.XXzXzXx.bXd e eXtXtXt.r.k.rXtXt.uXd.rX1X1.Z 'Xs.@ ^ ^X4.@.v OX6 b O..Xr.-XJXwXK ` x 1 c a.a a R aX-X-X-.a a.aX- RX- a.u.a RX-X- < aX-X-X- R t B RX-.a a.a t R a R R a # x `.[.j.n.w C RX,.MX,X,XD R h a tX- B RXK R R t R a.a a h.a RX, a B BX- B t RX-X- B.DXa 9.E / &.Y tXIXU.9 $X-X- hXKX-XI RX. a c #.e.>.N.=XL 1X1 3.8 3XDXl yXGXn.i < a tX-.~XV.~.~X- a.e.e.eX- a t a.e < < $ RXVX1X5.D x : <.F.M [ MXw.O mX5XI.u (.HX9.k 5.k ).H qX5X- DX5X-XM., VXXX3XB 1XBXBXB V .g.jX4 % { %.m.. vXq.s.mX6.P %.. $XD x < uXAXbXf ^XCXP.n '.DX1 RX-X1 RX-.9 R.M RXD.e RX-X- R a.HX-X-X- 3X- 3 c c.K.u 3.] }XJ : 3 3.8.] D.|X..2 ! & 9XCX0X> M MX0 & M &.>.> ! y s.!.' sXw KXHX< kXKX. k.SXHXr J b pXcXG R #.uX,XDXD ' x $X-.aXD $ $ RX,XD RXD.MXl.}.a.a.MXDX,.aXDXD B R RX-.a.a a.a a.a 3X, xXD.M.NXe.W.vXnX,.a.8X9XV 3XG =.; H.+", +"XtXtXt.r.kXt.rXtXtXt.XXt.k.kXtXt.^XtXt.kXtXtX*XtX*Xt ~.8.aXI aX1 RX1X1 D.] g.u.H.`.8.`X-.K #XH I 5.t.RXx _.o.b.c.c.U.c.U.U.U.c.c.U.c.I.c.U.U.c.U.U.c.U.U.U.U.c.U.UXk.U.UXkXk.cXk.U.c.U.U.U.c.6.U.U.U.U.c.U.U.c.U.c.c.c.U.U.U.c.c.c.c.c.U.U.cXgXg.oXgXk.o.b.o.o.b.o.b.b NXjX*Xj.k././Xk.kXj.kXj N.bXg.b.b.oXkXg.b.b.o.bXg.c.c.c.U.U.c.U.U.U.c.c.U.c.U l.c.c.cXk.c.c./Xg.cXk.c.cXk.c.cXg.o.o.o.c.U.c.c.cXg.b.b.o.b.X.b N.XXg.^XtXt eXd.r.kXtXtXjXtXt.r.8XI.H.w s.s.)X=X=.) 2 2 / 2 /XiX= O.q 9XGXUXUX+ 1XM.l 3 XCX%XrX2.jX>.x H M & 9.9 bXw @XZ.SXH.SXc :XHX#XHXrXn w v.. y h # 'XDX,X1 :Xl.aXV 3.uX,XD.aXDXD.MX,.a #.a.a aXD 3 3 c hX- R.a t a <.aX- a.a a.a.} t.M 2 2 2 sXG.aXVXX F.8.` sXwX> H H", +"XtXtXt.k.rXj.^XtXt.rXx.r.kXt.kX*XjXt.^.k.rXt.rXtXtX* ~.8.`.8.`.a.8XIXVXJ.2.5 3XIXI R.` # c cX5X5.RXV.^.X.X.X.oXg.U.c.U.c.c l.U.z.#Xg.#.#.c.c.#.c.U.c.U.U.c.U.U.UXkXkXkXk.I.U.U.c.U.U.U.U.U.c. .U.U.U.U.U.U.c.U.c.U.U.U.c.U.U.c.c.#.U.c.U.c.cXg.b.oXgXg.o.o.X.o.o.o.oXz.^ e.kXj.k N./.^XjXjXj.kXg.b.o N.o.b.U.XXg.b.o.oXg.c.U.c.U.c.U.c.c.U.c.c l.U.U.c.cXk.U.cXg.c. Xg.U.c.c.c.c.c.c.o.b.bXgXk.c.c.c.c.o.o.b.b.o.b.b N.b.X.^XtXt.r.k.rX*.kX*.H.r.8XV.8.`XlXLXL / 2 * 2.s.v 0.v 0 O b O 0 H b O.n.jXU V XM # h.a t.e a.a RX- R tX- a a aX-XI.M.u 3.uX-.e.a a R aX-X- B.a a.a t.aX- aX-.a # xXB.[Xc.n.Z R.M.Z.* a :X,.* a.* R.a.e RXDXIX, $ h x h $ hX, RXD B RX-.'XlX-X-X-X- BX, s.>.;.s / C t B.* R BX- t.eX- RXJ a 3 c cX5 `Xc sXs.=XnXeXDXI ~ F.8.ZX; yXp ` R a.a.~.8.`.~.e R t t a.~X-X-.a a R aXc :XlXl 1 cX5 xXl.W xXGXc.YXw.Z gXy.9 m `XVX5X5 cXV x $ $XG vXK a.8.}.8X* 3X*XMX3 k k.[XJ.,Xr HX+X>.@X>X>X>.Y.E.Y._Xn *.x 0.w.WXe E t t.m...s b.;Xm 9.w.DX-X1 a.aX- xX1X,.a c.'X-XD D 3 RXI RXHX.X. 3.~.aX-X, 6 3X1.~.a R K V a.M.a R B.e.Z.n yX0XCX>X+X2X2X4..x H.; &.E y s ' =.OXc `X3XDX, x.-XpX.@ bXnXe h xX,X5X5 BX,X,XlXI # R.a 2Xn.) E E pXA ^X= o.qXC.wX, RX1 a RXI.G RXDXI R 6.3 a.| a 3 R.e.%X5 :.G.e R.`X- YX,X,XI cX5.,Xh.aXD.e R 8 R.Z s.'.>X> o JX%Xr.<.<.pXrX> M H.'.qXUXOX;X..Y.-X,.a c :XJ.- MXp M.x vXG.j xX,.ZXlXDXD.M.w $X, U.M.ZXs._ v._.W.W.M.M T : BX5.DX5X5XVXV : DXVXl ' $.MXGXs.*.W G.= 2 2 J.Y xXDXI.rXtXt.` :.9 y v O H", +"XtXj eXk.I.z.b qXgXj.I q.^ q.b NXtXk NXk.r.rXtXd.rXt.r ~ ~ ~X*.rXI #X*X* ~.rXVXIX1 RX5XlXJ IXt F q.8.k.^ NX9.X.zXgXg l l.QXgXk l.UXg.U.U.U l.c.z.#Xg.c.U.U.UXk.#.I iXkX d.6Xk.I.U.U.U.U.U.# i.I.U.U.U.U.U.U.U.U.c.U.U.U.U.c.c.U.c.c.c.U l.U.cXg.X.cXgXg NXg.b.o.o.o.^XjXj.k.kXj N.X.X.X.X.b.X.b.b.o NXg.b.zXzXg.b.oXgXk.c.c.U.U.c.U l.c.c.U.c.UXg.U.c.c.c.c.c.U.c.I.c.U.c.c.c.c.U.c.c.c.c.U.U.c.c l.cXg _Xz.b.b.b.b.X.b N.^X*.r.k ~.r.k.r.u 3 3.` cX, $.E.s.s.W p.=.s.E oXG b J bXmXGXG sXLXaXa.s.n.YXw.,.Y 1 x x.} a aX-X-X- tX-X- R a R.aX-XI a cX-XI aX-.a.a :X,X, c $ t RXDXD R R R.} # 1Xc ! 9.wXa BX-X1X-XD.~XD.9XI `.a aXD R.eXD R R a aX-X- aX- 3X-X- R.e.a a.e.a R B 8XL.n w.v.N.) RXIXK : ' : $XlX-X-.Z.e RX- a RX- $ R 8.WXs 2 sXD ~X* N 3 h yXpXG u.M a RX1X1.~.e R t t a RX- R a a.eX- R RX-X-X-XIXDXD $ R.M t C 1 yXc gXh ' D :XJ 5.] T m a x oXGXCXO 8 3 ~X9.k ~ ~.r 3 3.K.8 ~.`.8 3.G m :.G DXU 5.%.% :.%.,X. !XhXnXCXe p.. ..s..Xi ^X0.9XL.D.M aX- R R.3.e 3XD a.| D.3X..aX1XI a.| 1X-X# a.aX1X, KXI R R.eXcX. Y T.*XD R R RX,.wXG.> MXr. & HXmXLXL sXa.9Xa.n.w.wXDXa.n s b.!.jXwX+ .l cX,.aX-X-.a aX- a a BX-X1 B R RXI.a aX- aXlXl.9 TXJXwXK a tXD.MX1 RXI.M xXM.9Xw y.q.' gXD '.u B.`.` 3X- ` 3 aXl.Z.eXl : R 3X1 a RX-X- 3 aX- R RXD a.aX-.e BXDXa o.O J / u.*.MXDXIXIXDXD BX-.eXDX1 RX- B.~ R 3.K B C.=.= bX, 3 ~ ~.8 3X,.-Xp p u tXD R.HXIXDX-.* RXDX- a.e.~ R a RX- R.e.~.ZXJ D $XH x s 1 x.YXH.hXw.j $X, 3.8.H 3 3XD .jXq z &.+.'XD.H.5.^XoXtX9.X.kXt F.r e ~.H qXkX9 D.X.kXx.5.XXxX*.H.uX1XG nX+ p..XpXn ^X> J.E.j.EXe x R RX- R RX#X- c.a.eX.X-X3X$.eX,X-.eX.XJ T D.eXI.Z B 6.ZXIX-XD.% aXlXHXD RX-.aX- R.w.w.Y y = M zXrXp.hXS.+.1 K K.+X$ K.G K k : xXDXD xXD.Y.Y.g.[X% nXrX0 &Xh.Y nXK.[ =.j.Y.) bXn b.....@ ^X>..X6.@Xn & n 1.-X3 1 $ mX,.Z $.Z xXs.'.s v.v 0 O.N.=.=.= v $ aXI.`.`.`.` F.` RXq yXL =", +"Xt.r.k.^X*.^.k.X NXk.k N.k.r.k.X.rX9X9.r.8Xt.K.rXtX*.r ~ ~ ~.u ~.8 ~ ~.8.8X*.`.H.`X1.H T.H 3.`X-.`XVXX.$.A ).7.&.( Z./.7.t X Z.7.I j.7.I.QXg.IXgXg.z.U.c.U dX Xu.z.IXkXg.U.U.U.U.U.U.U.U.U. .#.U.U.U.c.U.U.cXk.U.U.#.#.#.U.U.c.c.U.c.U.c.U.cXg.b.o.z.b.o.b.b.b.o.bXg.bXjX*XjXjXtXj.^.b.b.o.b N.b.b.b.o.b.b.U.b.b.oXgXk.U l.c.U l.c.U.U.c l.c.c.U.U.c.c.U.#.#.U.c.U.#.UXk.c.c.U.c.c.c.c.c.c.c.c.UXk lXg.o.b.b.b _.b.b N e NXtX*XtXtXt e e.r.rX-.u 3.KXGXwXn..Xp v . bXn yXmXa.w.DXs.'XDXsXIXs R.Z.Z.!.q.qXC &.j.- 1 .l h.a a.a.aX- aX- a BXD.* R.e.a.uX,.a B.} RX-X,X, h.M.MXD RXDXD R.a R # x.9Xw = !XUXUXUXyXl.~X-X- R.e RX- R hX, tX, c.eX-.~.~.`X- aXIX- tX- aXK $ a.eX1 R BXLXLXCXiXe.N a a.~.eX1.eX- R.~ BXD.e R.~ R RX- R cX, 8.=.NXL.'XI 3.8.8XVXD yX+Xn.i.MXDXl c DXJ $ x : :Xl.u x.a a t B.e a R.e.`.,XK $XJXc xXK.[Xc.1XH n nXD.MXIXIX1 R R x.1.+X8.+XZ.O.G :X1.H.r.XXkXxXk.r.R.X.zXdXx.o ~ ~.r.r.r.r eXj ~Xd ~ F.`XI U.j yXn.YX+ v...j vXs.j.' x.Z R R RX- R.3.aXI R.aXJX,.e #X1 3X-X1XlXlXIXDX1.eXI 3XDX,XI aX1.a RXDX- R.a R BX1 R R.w s y.j.j.Y.p MXh.hXHXh.+ @X;X; @XHX. | : $ h c 1 R 1Xw.,.,XH [.1Xm.@.>.s xXe.w._ vXp o...sXf ^Xi.@ S.4Xf .Xi 0.s v C a a RXDXD.M < t.a a 8.W.).@ w 2 2 O 0 J 9 sXD R.`.~.`.`.`.`X-XI.Z.G.jXZ", +".kX*.rX*.r.kX*.r.r.5.8 ~.`.`.8.~.8.8.` ~XtX*.r.kX*X*.uXVXI.8XI.8 ~ ~.H.8Xt.k.H.8.`XI.`.] c 3 R #XIX-.K.5 ) q.X.&.A AX X@X X .t XX .t.7.6Xk.z.c.Q.I.I.6X Xu.I. .I.UXk.U.I.U.U.c.U.U.#.U.U.U.#.U.U.U.c.U.U.U.c.U.U.#.I.#.#.#.#.U.U.U.c.c.c l.cXg.o.b.U.bXg.b.o.bX9.b.X.X.kXjX*.kXtXjXj.bXg N.bXg.o.o.b.b.oXgXk.o.bXg.c.c.c.U.c.c.U.c l.c l.c.c l.U.U l.U.U.#.#.U.U.#.U.U.c.U.cXk.c.U.cXk.c.c.c l l lXgXg.X _.b.b.b.X.b.^.r NXtXtX*X*XtXj e F.H F.`XI.aXD v 2.) <.*.s /.sXC y.n.n 8 B.ZX- R.e t B $.n.E o O O O 0.Y.j x x x.}X-.}.a.a a aX-X1 BX- R R R.a.eX- .+ n.1XrXZXh.hXhXh.G = !.>.>X..-XJ.i.a.aXI c.}XDX,.i .-XB.j &XG.;XG U EXpXnX=.. 0.@ J ^ ^X2X8.CX2 SX8.4X6.s .._X,.M.aX, U.a <.* < 8 C.W 2 0 oXp v.1 =.'.Z t RX-.`.`.~Xo.HX5.`.DX1 $XKXU", +"X*X9X9X9X9X*X9X9XX.K.uXVX*XVX-XVXV.u.uXt.5Xj.K.k c.K c c.Z cXD 3 3XD.8XIXVXI FXI.`.`X-.5XV 3.a.a 3XI.`XI.`.8.K NXxXkXk.z lXk.UXk.U.6.z l.z.U d.I.6.tXuXu. .U.z l.U.U.UXk.U.U.UXk.c.U.U.U.U. .#.U.U.U.U.U.U.U.U.#.#.#.#.#.#.#.U.U.#.U.c.c.U.cXg.o N.# N.o.bXg.b.oXg.b.X.^XjXt.^XtXjXj.b.b.o.b.b.b.X.o.b.bXg.c.o.o.c.cXk.c.U.U l.c.c.U.c.U.U.c.c.#.#.#.I.#.U.U.c.c.U.U.U.cXk.c.c.cXk.c.c.c l l lXg l l.o.b.b _.X _ N.bXj.r.X.k.rXtX*.r.rXj ~ F.`XIXI.j.j.jXrXp yXe.T b =XU y.n.ZX1 R.D R R RX-.a.WXa.! o 2X=.=.).s.F.jXK 1 x #.}.a a a aX- aXI a RX-X- RX-.a.a a R R R.Z.ZX,.M R R RXDX,X1 R.} # 1XcXH nXwXU o.w.w.M t a R B R.* R R t R B R B B BX-.~ B.eXD.a a R a aX- a R.~ B BXaXLXC & v.N u a a R t a a t t a.ZX. x.- :.Y.-.9 VX.X, C.N.NXe o $.8.H.XXxX, x XGXpX, tX, t a B.~.e R a.e t a RX-X-X-X-X1X-X-X- BX,.a a R a.Z t tXp.9X+.jXpXqXKX+.9X+XpX4 p.C.;Xh.O.>Xy 4XO FX1.`.H.H.K.kXo.rXd.^.k.^XxXx.oXxXtXtXtXt.r ~ F.`.`X-X1.~ $Xx TXlXlX5X5 $X1 :.DX1X1XDX1XD.aX,XDXIX,XIXDXI 3.a.3 c.3XKXKX,XD $XIXDX, c.ZX-X,X,XD.aX1.a.9XlXlXl m DX..' !Xw.>Xh =.OX;.+.hXZX#.OXh.q.O.>Xh.,.- V `XIX, R cXDX,X, c.aX3.[.YXw.j.E & E.s..XfXf ^ w.@.4X:X>X8 WX+..XfXfX> w...s G.).WXe.WXe t u u CXsXs.W 2 vXq.-.GXHX#X3X. : m.5 TXx.~ D fXd 5 : ].2 D Y", +"X*.rX*X*X*.r.u.8X*.`.`.`.a.`X-.`.8.8.K I q.%.$.% I |XHX3XH.9.GXHXG h U R.kXI ~.8.8.`XI.`.}.8.` ~XI.H T ~XVX*.rX*XxXgXkXk.z.I.I.I q d.6.IX .6.(Xu.Q. .6.Q.I.#.I. ./.U.I. .#.I. .U.#./.U.#.#.6.I.U.#.U.U.#.U.U.#.#.#.#.#.#.U.U.#.U.U.U.U.c.cXg.o.bXgXg.b.b N.o.b.b.X N NXt.k.k.^Xt.^.X.b.b.o.b.b.o.b.b.o.oXgXg lXk.c l.U.c.c.U.c.U.U.c l.c.c.c.c.U.c.c.c.c.#.c.c.U. .U.U.c.c.UXg.U.c.c.c.U.c.c.c l.UXg.o.b.o.b.X _ N.bXdXt.5.rX*Xt.r.kXV.8 ~.8X1XD y ...XF.).d * p.).v vXm oXl.Z 8 R c R.a a.a a.ZXL 9Xm O / / * *.)Xe.s.9.j 1 # h a.a aX-.a.~X-X- B a R R.M t R.M.M U x.Z UXD RXD B.a RX1.M.a c x `.9 x.YXwX+ vXL.wXLXLXD.M.D.w.w.W.w.w.Z 8 BX1 BXD B RX1 t.e.aX-.a #.a <.e R 8XaXLXC J 2.W.*.M t < a a a <.* a u < a.e < a t.e.l.*.M.M C u.N v TXD.H.H F F 3 hX7XpXH.1 U.a RX1X.XJ.eX1.a RX. n.e RX1X5.,X.X- RX- D.DXDX-X,XH.3 a U y M.O.+ z MXpX>.+.x z.xXi.4X0XG.n '.].0.0 ( @X$ D D ) I.X.X.XX9.UXt.K.k.K.kXtXdXt.r ~.8.8 3.8.`X-X1 B ' (.0.0XOXOXP.DXa.DXa @.'.% ' a BX1 RXD cX-.]X1 RX, :X5 x :XJ.,X..%Xc :.a.aXl mX5XcXKXKXlX,XI $.9Xc T g.'Xw.q KX0.>.E.Y.j.-X..-.9 K =.O KXhX#XH.- kXw k `XH.'XK 1 x 1.,.Y [X0Xp.@X> 0...4 S.4X8 S wXn ..p..Xq._._XnXnX8 L {.v.. O 0.W 2.s *.) 2 p v v oXG $ h : aX-.`X-XI.8X1 5.5.`XV.H.H.K.k c.KXJ.$", +"X*XdXt.r.H F.8.`XV.`.a.`.`.aX-.`X- 3XV.k.K (.5 ` ) 1.- nXH n.O zXn.<.Y.-.0X1.H.HXtX-.8 3X-.8X-X-.`.`X9.u ~.8.H.r.k N N.XXgXkXg l l.6X@.tX&.Q l.U.#Xg l.#Xg.U.U.U.zXk.z.z. ./Xg.I.#.#.U.#. i.#.U.I. .I.#. . . . . i. . . . . . .#. . . .I.U.U.U.I.zXg.z.#XkXg.z.U.zXg N N.X.XXtXgXk.UXg lXk.UXkXg.cXk.c.z.I.z.#.U.c.U.#.U.U l.#.U.# l l.#.U.U.U.#.c.U.U l.c.U.c. .c.U.UXg.U.U.cXkXgXg.cXk.cXg.U l.X.b.b.b.bXz NXz.X eXt NXt.k.uXVX* 3XV.8X-X1 s.xX>X4XnX4..XnXn.@ ^X>.q.9.w.Z B.e `X-X- R.e RXD v vXC 2X= * C.d u.N.s OXGXm.F xXM 3 a a.aX- aX- aX- R a t t R tX, R.Z $ x.M.a.aXD.aX-.e 3.ZX5.l VX< |Xq 1X+ n.@XpXnXLXe.nXa.w.n.' y o.n.w.w.Z 8 BXD RX-XD 3.a.e R.a <.a a.MX1 B.nXLXC.E.s.) UXp h.} UXe U h._.iXqXe.M._Xq._ x x.g xXe.WXn.vXn o.DX5Xd.r.r # $XKXw.T.1Xw.MXD $ mXcXl.} R.9 h., xX1 aXl D TX- R.` `X,.a.e : R 1X,.*.wX+X>.jX>Xp.@ ^Xn ..{ ....xX>.w.wXsXa '.!X5.].GXJ D.2 I 5.|./.R qXtX*XVXt.rXtXtXd.r.H ~ 3.8XI.8.`.HXV B.n ]XP.0XP.0.n '.DXa.' D m g.DXlX-X1 R.O.wXc k D nX5XD R B B 1.Z hXD.aXI B.ZXc 1 TXD aX- aX,X,X5.0.w.Z.D.'XcXy =.GXwXGXwXcX3 x.Z.>XU = = [XBX7 1 UXl.aXD ` c.Z.a :.aXB k.S nXh M.@.; {Xf w S.; SX8.p ..iX7.d U U v .X>.{ wXi 0Xm J v.s ^X= 2.s bX> s.'.jX.XJ ` q.].X I : cX-XI.8.8.8.H FXdXd.rXtXo.r", +"Xd e.r F F.` F.`.H.`.`.`.`.`.`.8X-.8.8 3.8.u.8XIX,.9.Y.9XcXq x X> pXAXq.YXa RX1XI.8X-.8.`.` F F ~.`.`.`.5X9 ~ ~.r.r.k.oXg.b.U.z./.IX&. .I l.c.U l.#.U l.c.#.U l.U.IXu.t.:.I.#.U.U.c.U.U.I.#.U.c.U.U.U.c.U.c.U.U.U.U.U.c.c.c.c.c.c.c.c.cXg.o.b.oXg.X.bXg.b.b.b.b NXg.^XjXjX*Xt.^Xj.XXg.b.oXgXgXgXgXgXg.o.I.#.U.#.I.U.#.I.I.#.U.U.U.6.U.U.I.I. .I.#.I.I.U. .6. .U d.IXu.t iXuXu.6.#.#.#.I.#.#.I.#.I.Q l.U.z l l l.zXkXo N ).X.5.k.X.5 cXV 3X*.Z.' O ^.. % EXe . ^X> & & & gXG.ZX,.Z $.}X,X, hXD.wXG y H 0 v p p u EXe.s O.sXm n.-Xq 1 .}.} 3.a 3XD 3 a.ZX,.aX, h.ZX,.w.Y.9XK $.Z.9 T : ` ` V kXBX3 V.-.-X7.j.jXrXr.; H.j oXLXm.q & 9XC &.! sXL.n.ZXD R RX,X,.a.aX1XI.a h.a RXDXIXLXLXmXC.@ 0 pXGXnXq v.F v._Xn._Xe._.) E._.F p._X7.F.F U.)XFXb.s.E.wXI F F.H.` 3.}.-.YXG.Y t aX- R.~ B B a a R a.e a BX-.e.eX- R.e a.~.eX-.e.a.e.e.M.MXGXpXp.TX:.T z.y z z.+X6.x.YXL x 8 8X5.D s s.wXwXKXIX5.KXtXt.kXj.rXtXjXt eXtXt.r.r.r.r.H.8 ~ ~X- 5.]X5.u D.D D @.0 sXaXL.! D.' T.] DX.XJ ' $ : :Xl.2 1.2XJXw.,XlXcXI $X-X- R a.a R.a R.e.a RXI.aXD R R B B.D.n.wXP.-XyXyX;.j.O.Y RXI t.w g [.1X<.- V $ h hXl a cXc :XwX.XK.3.3Xh.LXhXZ =.+.4 ;.4 ; wX2Xr.pX+._ U Xe U E._XnXfX+.j s.w.N 'XG oXL 0Xm.nXDXDX,X1.5.5.5Xk.5Xo '.kX*.8X- ~XI.8.8 FXV.rXdXd.XXt", +" e.H.` F.`.`.` ~.H.8.`.`X-.`X-.8.a.8.8.8.H.r.u.`.9.9XKXp.MX, h.-. ..EX+XK.j 1XK #X*.`.8 F.`.`.`XV.u.8.r ).8.k.k.r.kXt N.X l.(XuX .zXgXg.z l.Q.#Xg.#.U.U.cXk.IX&.6.7 dX .U.U.U.U.U.#.c.I.U.U.U.U.U.U.U.U.U.U.U.#.#.U.U.c.U.c.U.U.cXg.cXg.o.o.b.UXg.o.o.bXgXg.bXg.bXtXt.kXjXtXtXd.^.o.oXg.o.bXg.o.b.oXz.I lXg.U.c.c.cXg.c.c.U.U.c l.c.c lXgXg.U.UXg.c lXg.o l.c.I.c.6 i.#.6.6.#Xk.cXg.cXg.cXg lXg.bXz N _.bXzXz.X.bXo.rX9 ~.uXdXV.H.H 3.`XI 8 s 2 / u C u.w.).vX> y.E.9 vXaXD RX-X,.a aX- aXl U.w bXC O /.) < a t yXmXC b 2.s 0 bXC o vXL.wXsXs R.aXDX- a aX-XD x $ a R B.DXL.E JXb.) *.d u.d.d C u u C u.s p.*.d.d.)._ E ..d uXF...BX6.@X>XG R.H.8.rX9XIXD xX+.F.Y < t aX-X- a t a t.eX-X-X-X-X- a.~.a.eX-X-.e R.~ aX-X-.~.a.*XeXpXp n z.y MX: z z rX>.;.j vXL.wXsXs 8 8.w.w sXUXc.D.u.kXdXdXtXtXj.k.rXtXtXd.rXdXtXt.r ~.` 3.8 ) ).,.$.G m.G.>XKXy.w.n y !Xy.OX.XD 'Xc.3 m.%.9 :Xc RX,XDXl $ c.9.e c R.a R.aXI aXIXD RX1.a.aX- 3 a.~XDXa.w.w.'.2XP @Xy K.G.3.,X,XI $X,Xw.jXHXBXB.-Xe $ $ $X5.a RX, T sXK $XH k k [.T.+ = r w.4.C.{XfXr.< >.-.F xXB x 1XH .XqXw.jXs B.Z B.DXm 9 g 8XI.~.8.`XI B.`.`.~.`.~.~X-.`.8.8 ~.`.8.H F.r.r.r.r.^Xd", +".H.H.`.`.`.` BXVXIX-X- RXIXI.`.aX-.8 3.rXd.`.u.] D : $.a x cXDX,.9.[Xr z z vXhXh YX3.H.8.8.8.r.8Xt.r.`X9.`.8X*X9Xt.kXo q.X././Xu.z l.U.zXg.QXgXg.#Xk.U.U. .U.t.7 d ZX@.#.U.UXk.#Xk.UXk. .U.UXk.c.U.c.U.U.c.U.#.#.U.c.c.U.c.c.U.c.U.c.U.c.o.b.b.U N.oX9.o.b.b N.bXg.^XjXt.kXtXjXj.b.^.b.b.b.b.b N.o.b.b.6.c l.c l.U.c.c.c.U l l.UXg.U.U.U.U l.cXg l lXg.Q.U l l. .c.U l.c.U.c.c.c.c.c.cXgXg.cXgXg.o.b.o.b.X.b _XdXo.b.kX9XV.u.rXtXt.8XI.`.a.Z.n 2 8 * <.MXq.) O & o vXLXl.Z R t RXD a.M < `.ZXDXGXG.qXC vXL.N h h.M t.WXs.=.s bX+X+Xq $ x.aX- aX- R R.9X,.' h T.Z.M.M.- sXc.Y xX,XD.a.a a.} # .lX7X7.p n v.W pXeXeXqXLX+ H 0.v /.v o 2 0XCXCXG OXa xXLXD.aX- RX1 R.e.}.M a R R.DXa o o / /.).sXF.).).dXFXF.d.)XF . ....d.<.< WXA >X4 .Xb.J.xX2.<.x .ZXI ~.k.8 cXD.-XGXp.W R.*.e RX- t R.*.a.eX- aX-.aX- a.eX- a aX-.eX-.~.e a $ 1X, sXw M.pXrX+ = MXhXr.yX>X> HXwXGXa.n.* 8 8 8.Z s 'XUXdXV.HXtXt.r e.r eXtXjXt eXd.rXdXtXt.r.r.8 ~.8XI.`XJXJXJXK s.nXGXG.! @ T.GXU.0.Z 8X1XDXD :XJ.-X.XK.,.wXJ a.a a RXDX, RXIX-.a.a 1 $XD 3XDX- aXIXD R 8X5.n gXJX5.]XJ.]XlXl : : D DXJ DXHXH.1X7.- V.} $XD.ZX,.~.ZX-X,XD R.M 1.l.- k.[ n MX8 wX8.4XfX8 r r .X4 W.-XpX7XhXhXXG y.n.w $ TX,.a R R $ 1.2 & ! = = &XC.YXq 1 ` a.W.wXs G.=.sXp.-Xq.i x 3.} a.aX- x :.9Xc 1.9 U.Z x x $X, R U 3X- aX,.l #XB >X%XB.F.Y.j.j.-.[Xw [X%X0.@ ^X= 2Xi J.. J.s J H yXG.w s.9Xl B R BX- R tX- aX-.~XaXa 9 w.BXbX=XF.).)XFX=XFX=XvXFX=.J .XfX=X2X2.J L L.P.B %Xf.{.{.JX4.x.-.ZXI ~.8 R R.Y.YXp x U.a c R.e.e.*X-.e RX- a.e.e.e.a aX-X-.e aX-.~ aXI.~ #.,X.XcX+XHXwXH.1 [.j.T MXhXp.@X> & y v.w R R.} B.Z.w '.2.`XVXdXtXdXtXjX*XtXt eXt e.r eXtXtXtXt.r.r.8.r.8XIX-.Z gXP.9.n = g.G.O ' DXOXlXD RX1 R.aX-X- RX5.'XcXJ.9.e R RX-.}.u R.aXDXDX- DXJ $ x :Xc c : T 8.Z.wXP TX1 RX-.`X-XIX-XI cXVX5.0XlXJ K.SX%.- [.[ :., T cXK.ZXwXK sXJ x `., $XS [XH z.4.{.C ;.JX:.h.T.y.+.h.y.1 zXp [.F.g XDX9 :.5.0.DXKXc x 1 :.`.`.8X-.~XI.`.`X1.`.`X- 3.8.8.8.H.8XV.8.r.r.r.rXt.b", +"XV.8X- 3.`X,X- $ x x vXGXn vXnXK.ZXI.8X*.rXt.k.rX*X*XIX9 ).`Xt.r.H.kX5 cXl.Y.p.x .Xn.xX+X,XI cXtX*.rXt.rX*X*.rXIX*.K 3 ).K.8.r.k lXg.z.z.U.IX&X& d.#.I.:.6.t.f l l.zX ./.UXkXg.#.U. .U d./Xk.#.U.U.c.U.U.U.c.c.U.U.c.U.c.U.c.U.c.U.c.c.c.cXg.o.bXk.b.XXz.b.b.b.bXg.bXg.I.$ NXt.rXj./.bXg N.b.b.b.X.o.o.o.IXg iXg.U.U.V.c.c.U.I.6 d.6XgXg.#XkXgXk.U.c d.(Xu lXg l.Q l l.U.U lXg.c.c.cXk.c l.c.cXg.b.b _.b.b.b.b.XXk.I.|.& ) I.$ ] ( 5.]XJXB x ..sXs.N C C E.)X=.vXm.'Xm.n.9XK.9 $Xc x R a t R RX, v v.q oXaXa 8 8.a.e.a tXe.M.)XsXe.).Y y xXq x.}.a a.a.M.a a <.a.a R.wXq $ $ UXI h B.} xXM x Xc.gX+XeXeXe.iXD.WXDX,.WXe.. p.C.s *.) G ^.@X=X> O.@ HXm o g o.Z 8X- BXD.e <.a.~X-.DXL 9XC 0X6X6X6...@Xi ^XiX6 0XiXi ^X6X6.J.;.C.4 ;.{ w {X8X8X:.{.X>.CX>.4.L.4.C.@X> w.@.4.4.4X>X8X2.CX>.C.4X8XfX8X>.J.Xi.@X8.C.p..._.p.Y.a.8X-.`.`X1 8.MXG 1.Z.'.].HX5 5.u.KXo.K.u 3X*.KX*.kX*.rXd.u.k.KXo.k.^.^Xj N", +"X3.K #XXX3 n n o vXF.).s 2 2.NX0 T.X.5 ).R.R q./.$XgX*XjXt ~ ~.r.rXt.k (.$ $ R Xq v %.s .XpXpXl 3XVX*X* ~X9.$Xt.k cX*.K 3 ~.u.k.XXtX X .t.Q A Q Q X.A.zXk././.7 Q.7 AXk q./ d.( iXu i./. .U.c.U.UXk.U.c.U.U.c.U.U.U.c.U.U.U.U.c.c.U.o _.b.o.bXgXx A.(.XXk jXg.X.bXg.k.b./.R.(Xo.zX .b.b.b.o.o.X.o./Xk.:.tX X&Xg.U.U.c.U.c.c.c l l.I jXg.QXg.z.c.o.b.o.b.X.: AXx.t Z.6.z l.cXg l.c.c.c lXgXg.o.b.o _.b _.b.b.o N.b N.^.k N.r.uXV ~ 3X1X-.w v.= 2.= 2.=.) 0Xv /.vXC 'XLXD R RX- R RXD R R m.aXD R.wXLXm o 2Xs 8 t R tX-X- R t R.MXK MXeXe v.pXp.i x 3 < a.eX-X-.aX, cXlX, =X. s.M h.l.l.FX7.[Xp._XqXGX, W ..y.+.jXn . ^XnX4X4Xp .XpXrXnXn MXr.@.x S.;.xXp.Y.MXpXpXpX2.9.` ~.8XI `XSXp.j t.aXI.eX1.eX1.e.eX-X-X- a.~ aX-X-X- a R a a aX- a a tX, a R.e.aX-X- a a R a.MXpX4.Y.q o.w.n.MXy 1.ZXlX5.0 (X1 FXdXt.rXtXt eXtXtXtXt.r.kXjXt eXt.k.r.rXtXt.rXtXd Q : (XI.Z g (.0 g (X1X1.] @X..w : $XD :XDX5X-.e R.~.eX- R a.e.,.GXl.%XwXcXHXc mXcXl.aX- $ 3.D.Z.n.'Xy.] T )XJ.$ T.% ) f.5.H.8X1.`.`XI 3 | 5.,XX k.,X#.Z :.9 :X. hX.XlXS., |.[.O =.O HXi..XnXp.Y v.T.x.P ;X8X8X2.x >XwXcX, c.HXV.uX,X,.n.Y &.>XwXcX. D m D DX3 D.8 ~ ~.8.8.8.8.8 F.8.uX*.r.rXt.r.kXt", +"X1.a.a a RXq b /.).) *XG ^.N v.'XD ) q f q.A.$X .f q.b.^ N.^.^.k NXt N IXX.KXM X+Xn.X4X+X4.gXr.xXqXGXqXnXq v.j 1.pXGXpXqXrX+ [.j.jXr.pXG.- R.' vXp.x.j $ F.8 ~X,.[Xr zXn.wXc ' :.Z : :.e RX-.~ RX-X-X-.e.e a.~X-.~X- aX-X- aX,.e aX- a.e RX, c h t._XnXp.j H.n.nXs R a sXl.n.0 gXaX1.`X5XtXtXtXtXtXtXtXtXtXj.rXt.rXt.r eXtXjXt e.kXt.r.k.r.`.HXV.` '.2X5XD.`.`.Z.].wXD.e.a aX- BX-X-.~X- R RX- a R a $Xl xXl :XcXc R $.Z.MX-X-X-X-XD.'.0 4Xy.].H.k cX*.u.u.u.`.k.uX-.8 3.`.8.8X*XX.,.,.% k.3 1XK V T.- x.3XH.3.SXh.3 = =.>.T.; & &X+Xp.E.XMXIX-.~X-.` B R x v.. 0 v v.ZXDXIX1.`.`XV.8.8.8.8.8.8 ~ ~.rXVXt.rXt.r.kXtXt.rXt", +"X1X1XI.a.M x O.) C t.).< / v.nXX.8.8.r.kX9 N N.b N.o.KX9X9 NXt.^X*.rXM.kX*.K., # h.i v.@...s.CXpX+.9X, 3.r.8.r.r.a.r 3Xt.u.kXt N.X (.z A ZX@.t AXx l./Xu.7.tX@Xx l.t.( dX X .z.z.UXkXk.z.I.U.c.z.z.zXk.6.U.U.c.U.U.U.U.U.c.U.c.c.c.UXgXg.b.o.bXkXg.:X9.X.z.7Xg.o.X.bXtXt.kX$Xd N.XXz.b.b.b.b.oXg NXg.z jX X .U l.U.c.U.cXg.c.c.c.6.&.: i.U lXg.o.o.b.^.o.z.R ( jX@Xk.bXgXg l l.cXgXg.o.o.b.b.b.b.bXz.b.b.b.b.X.b NXjXjXtXoXtXt.u.8.8X-XIXK gXCXP.q H & yXC yXCXCXP.n s.Z a a a R.a.a R.ZXcXD.a t.ZXa o o.s.N.d t t RX- RX-X- R.a h.M.W.N.)XeXnXp .i c.} a a.aXDX,Xl.M x $ x h `XBXBX7X7.FXe.m.W UX, a.e.aX- t aXD.eXD t.* E...@.sX=.N.* t.M tXDXL v y o.. y 0XC.q 9.n.w.nX, R.*.MXaXG.q oXq C.d.M.M <.M.M.M t.M < h.M 1.M.M.M.M.W.W._Xq._XL.M.* RXD UXpXp.j `XI.8XIXDXJXHXh.1.1.-XwXK.%Xc D 3XDX-.aX- aX- BX1X-.~ R.eX- a a a a.~X, a.a.eXIX-XD.a x.9.M.9XnX>Xr.!.w.w.*Xl $.n.w T g DXV F.8.kXdXtXtXtXt.rXtXtXtXt eXtXt.kXt.r.kXt.rXtXt.r.k.kXt.u F.8XVXIXI BX-XI.~XD g s RX- aX- B.~.e.~ a.e.e.e.e.~ R aX-X, 3 RXDXDX,X,XD RX1X,.MXDXI '.0 ' TXy.DX5.u.uX5.KX5Xo.KX5.5.k.u.kX*.uXt 3X9.$ k | `.-XMXD hXI a.aXKXc k kX.XUX0.!.>X0 w w.. y._ *Xn %.P.CX8X2.<.F.p h a.8X1.`.`.~.aXG v 2 v v.9 RX1X1.` 3XV.8 ~.`.8.8 ~.r.r.rXtXtXtXt.rXj ~Xt e.kXj", +"Xd.D 3 cXG 9 oXL E E.xXG.vXK.}X*X* NXk.XXkX9XkX9.f qXkXkX9Xo.KX5X*.rX9Xt.K 5 ).8.a.MXGXnXb.. % . v.9XK 3 3Xt 3.rXVXI.HXI.rX*.r.& ].R.t.7.t X.I.I ZX&.7 X.&.U.z X.t A.7Xu qXg.z.UXk.zXk.IXk.I q.I./.I.U.&.I.UXk.U.c.c.c.c.U.U.c.U.c.U.U.c.o.b.b.U.XX Z.U Z q N N.XXj.k.r N 7 ).X.R.o.X.o.b.b.o NXg N.z.:.z.z d l.U.cXg.U.U.c.U.z.t.IX&X XgXgXg.b.b _.o.X l lXo.t.:Xg.o.X.o.o.oXg.o _.o.b.o.b.X.b _Xz.b.b.b.b.bXz.kXtXtXd N.uXt.r ~.H.`X1 T.!.! 0XG J.nXn.wXGXa bXL '.Z RXD.e R a RX, R.* aX- R R.WXa 9 o 2.N.N t t a aX- B B a t t a C u.N.sXsXn y.Y.F # $.} XK b & =X0X0 HXr.s.m GXAXA.C.{XA.J.{X2 # R.`.`X-.`XI < v.sXb.s b x BXIX-XIXI.` 3.r 3 ~ ~.r.r.r.rXtXt.rXd.rXtXt eXtXj.X", +"X-.`.`.M vXL vXs tXp.s.) 0 v.}X*Xt.XXgX9XgXkXkXg.f.$ } I.A.%X# IXX.|X9X5Xt.5.k :.0XJXwXUXr.j.p nXr g.Y.K 3XVX* 3XV.u.Z c.ZXdXx ,.X.f ,.7.&.z.I.I Z fX d.I.(X XuXu.z.U l l.QXg.zXk.UXg.f.zXkX q././Xk.IXg.c.#.c.c.U.U.U.UXk.UXk.U.c.c.c.c.o N l.o.b l q.bXzXg.b NXjXj.kXt.k ).IXg.b.b.o.o.o.bXg N.z.7.: i.7. .zXg.c.U.U.c.UXu.7 i.U.(.:. .z l _.X _.X.z.7.t.zXxX .^Xg.b.b.o.b _.b _.b.b.b.b.b.b.X.b.b.b.X.b.b.kXj eXt.kXoXt.u ~.8.H.`X1.H.' g.nXmXL xXa.w.w s.wXaXy sX5X, c.a R.aXI R R R B.a t.DXLXGXm O.N.N C tX- RX- RX-X- t R <.*.* C 2.N 2 v.EXBXM.l #.} < nXH n.jXe._.W.>.= 9XC v JXCXm bXeXLXLXe b H.E s 1 t.a aX-X-.~.e.` B.~ 3.KX1X-X1.~.uX, WX> s.w.D R RXc.w.0 g 8.H 3X*.K.5.XXo N N N N.X.XXo.XX9 N.X.X.X.X.5 NX9 N NXx N.K N.5Xt.u.kXI 3.H 3.8 3.DXJ 'Xl $.a cXIX-.~X-.e.e RX-.e.~X-.e R D 1 `Xc.,XcXK DXJ xX.Xw.'Xw !X;X; 'X5XV D.u.5X9XoXo )XoX5.$XV.8.H.8 ~.8 ~.8.8.5 I DXXX3 #.a.}X-.}XKXKXHXw yXUXm s.qX> w & SX0X6.sXFXf...JX8.{XA +.y x.aX-.`.`.~.` t v..X= 0X+.w.9X5 ( ) q D ).f.r.8.rX*.r.rXt.r.r e.r NXg N.r eXj.b", +".`X-.a h b.s.s u UXn.)..XG x.`.8.^ N.b.b.b N N.5.kX9Xx.KXlX5 c cX*.K.X ~.r.r.^.&XxX5.wXDXeX, x x hXDX,.ZXV V I.,XMXl.-XK.%XJ : T.$ } Q.t.AX&.:.tX& XX .7.7X .(X&Xu.6X .( Z./.6.6.fXu./ Z.f./X ././.I.I.I.I.I. .I.U.U.z.#.z.U.U.U.U.U.U.UXkXg.o.QXgX9.oXgXkXg.X.b.b.k.^.r.k.k.^Xj NXg.bXg.b.b.b.b.oXg.bXkXk l.o.c.c.cXg.c.c.c l lXkXg.z.#Xg.oXg.b.b _.b.o.b.X.^XgXk N.b.bXz.b.oXz.b.b.bXz.b.^.b.b.bXz N.b.b.^.k eXt.r.r.k.k.r.r.r.H.`.8.` BXI.!.0 sXa RXD.MX1 8XD T.n 1 :.,Xl aX- R R R a B.M R RX,XaXGXC.sXv.N.* t aX- a B.e aX- a a t t.* 8Xs.N.)._X+XB.FXM # h.a y.jX0 H o s.w $X.X,.nX5XP.0.HXV ~.rX*Xd.X.rXtXtXtXtXtXtXtXtXt.rXtXtXVXt.rXt.rXt.r.rXt.r.H.r ~.H.u.`.`X1X-.`.~.HXU 1.GX,XK :XK `.] 1 5 hX- RX1 a RX-XIXDXl.a.aXI.a RX, a RXD $ 8.0.w.2.2 5X9.% q.$ ] 5 Q.A.R.$ 5 )XI.H.8.8 ~.8.8.r.`XI 5X# |.,Xc.}XD c h.,X# K.>XwXw 9XDXm yXG HX0 SXn %XnXi . w.T.T.{ rX% aX1.`.`X- B.aXG.s.v.. y s.5XX ).5 )XxXX.5X*.rXtXtXtXt e.rXtXtXjXg.IXj e e.b.^", +" 3.a.}._XL...=.WXp *.).).9.w.r e.^Xg N.X NXgXo.kXdX9.5Xl )X3X*.5.rX*Xt ~.^.^.^Xx N.KX9.KXM.5Xl ` : cX5XV.uX5X3 I.,XH.Y nX>.j.9Xh.0 5 ).$X .7.(.t./.& PX ZX@./ i.& d.7X&.6 d.z lX@.&./ d.I qXk.z.UXk l.U.I.U.U.#.U.#.#.#.#.U.z.#.#.#.U.U.U.cXk.IXgXk.UXkXgXk.cXk q./.XXx N N N.XXk.U l.U.U.#Xk.IXk./.6X@.6.I.6. .I. . .I./.6.6. ./. . .I./. .I.U l.z l.z.z l.z.I l.UXk.UXk l.z l l l lXk l lXk lXkXg lXkXg.X.bXo NXo N.X.XXoXo.K.rXt ~XVX,XD ' ! 'XlXDXD.ZX1X1XD RXs.aXD.a.}XI.M.}XDXDXDXD R RXD.W.n 9 & b.WXe.M.M.MX1XIXIXDXD.M.M.a.MXI RXDXs.WXL 0X4.p kX+.F `.i ` n W [.9Xq x.w U.M.}XDX,XeXDX, 3XIX,XDXD 3XDXI h h.. .X>.4Xn vXG s.' '.9.9.YXG x sXDXL.w M b.@ 9.E &X0X0X0.;X0 y yXDX,X,X,XDX,XDX,XDXDXI c 3 :XI 3XDXJXl 3XDXl $.9XcXDXV ' xXp nX%Xw 3 3.k.XXVXVXl x.YX+XpXn h.M c RX-.eX-.~ RX- aX-X-XD.e.a.e tXD UXJ.M h.M h._XnXGX4 J.YX> & yXGXL.0 s.,.2 $.Z.nXP 'X1.`.8 ~.k.r.X.rXt eXtXtXdXtXtXtXt.5X*Xt.rXt.k.k ~XdXd.rXoX@.z.RXV.8.kX1X1.K c.8XVXD.2 g.OXcX.XKXM DXKXJ : 3 R.e.~X-X1.a a.`X5X-X1XI RXI RXI R 8.M s x gXIX5 3.r.uXtXV.r.r.X N.K ~.8XV.kXt.k F.8 F.r.H.k ~.$ }X.XHX#.% kXc.-XJ K K.O @ !XUXD.wXK J =.xX8.@..Xi.v w S.y.4.4.{ LX2 h RX-.`.`.` R x oXe ^ T.*XI.8X*.8XtXt ~.r.rX*.rXt.r e.rXt e.r.^Xz.^.^ e e.k.b", +".u c s ..)X4 vXp.).s.)XL.9X1.HXo.b.b N.b.b.k.rXtXt.k q.KXkXXX9X*.r.X.^.X.o.bXg.^Xg P./XoXtX*X* I.|.K Y.k D I )X#.SXh.T & . OXn.j.3.5 N }.(.f./ qX@ f.7 Q./ lXk l Z.(.6.I.I.IX&X .#.6.U./ l l.U.U.z.z.UXk.U.U.c.U.c.c.c.cXk.c.c.U.c.c.cXg.o.b.b.U.o.o.b.b.o NXg eXt.^./.kX*.kXt.r.b N.o.b N.b.b.b.b.XXg. Xg.cXk.cXk.c.c.c.c.c.cXk.c.cXk.UXgXg l.b _ _.X.bXg.X.b.zX9Xg.o.bXg.o.b.o.o.o.o.oXg.X.b.X.b.X.X.b.^Xd.kXd.^Xd.k.5Xo.k.kX*Xt.r.u.8.HX1.' g.n.nX1 $XVXDXIX1 8XD.aXDXD.a.aXIX1.Z.MX1.M.a.MXDXDXLXG.q 0.= 2 C <.a.a R RX1 RX- <.aX- R RXD 8XL.s.).)...<.[XBXM XB XB.pXw.Y._XeXe U.a <.a.a.M t.Z RXl R 3 a R.aX-.aX- t.M E.m.@Xi.)XeXsXD.W UXa.M xXe x 1 $ t C u.WXm.NX> O.@.;.@.@XGXGXG $ a.e.e.e.*X-.* a a aXD R.u a.* RXJ :Xc DXc.Z h D.]XJXcXJ.1 z WX#XD.H.8.H.r.8XV.Z.M.pX4XnXq.M h.~X-X-X-X-X-.~.~ RX,XJX,.w hXc.9.eXeX+.FXpXpXpXpXnX4Xp.jXrXrXG.nXa.'XD.*.9 'X1.nXa ' DX-.8 ~XVXt.rXo.rXtXtXtXtXtXtXt N ) PXk ) ) q.$ ( )XxXx (.XX$ Y Q D.R.2 Q.| ).%Xo.%Xx.2XU.'XD R.~XDX,X- RXI hXD.u 3 3X,XI.u RXl 3X-.eX1 R.aXD.a R x.n T mX1XI.rX*XtXtXd.k N.$.XX*.k q F.k ).u.r ~.rXd.r.rXV.H.k.,.-.,XK.}XDXXXX [X..OXGX;X,XD.w.jXU zX0 MXi w ^ z = & = w L.{.CX+XBXqXl.`X-.`X-X-Xe s s.WXI.8 ~ ~X* ~ ~X* ~ ~ ~XtXtXtXtXtXt e e e.^ N e eXt.bXj", +" v.n.w.n.nXOX5 BXaXaX5.0 (XP.H.8 ~.rXt.rXo.r e.r.rXt.rXtXt.5Xk f.f }.&.|.f f P.R 5Xx.X ].R I 5 QXJ 5 ).] 5.5.| : '.0XKXl 1 '.a.e R R BX- a aX-X-X-.~X- 3XD cXI R R RX1X1XDXs.9.' g.]X1.rXVXt.k.r.rXt.X.z.X.^X9 )X*.5Xx ~Xt.rXt.rXtXt.r.rXI #., `Xc.}X-.} ` [.%X.XhXy.jXw., @X;.GXZ.T.O.L =Xh.OXC.E =.@X6.4 ;X2X# X1.`.`.`X-X1X- tX,.H.8 ~.8 ~.8.8.8.8.8.r.rXtXt.r e.r.rXjXj.bXg.b.r eXzXt", +"XLXn.sXvXF..XFX=.v 0XGXBXI ~.r.X.^.X.b.bXjXtXjXj.rXj NXkX9XgX9.bX9.IX9.o.k.k F 3.H 3XV I.k.HXoXdX*.r.K.K ~ NXMXJXh.1Xp..Xb 0 SXh.O.OX..K.kXt.X 5X5.K.AX9.A.$Xd.5 N q.A.&X@.I.z.z. .#.U.Q.U.c.# l.#.U.c.U.U.c.#.c.b _.o _.o.o.U.#.o.b.b.b.b.b.oXg.o.b.b.b.b.b.bXj.^.kXjXt.rX* N.o.X _.b.b.o.b.o.b.bXg.b.I.cXk.c.c.U.c l l.U.c.UXk.c.UXk.c.UXg.o.b.b _.b.b.b.X.bXk N.b.b.b.b.o.b.b.b.b.b.b.b.X.b N.^.kXdXdXt.rXt.rXd.rXt.^X5.rX*XtX*.r 3.8.8X1 T.'.DX.XlX..e m.* DXl c kXK hXc `.,X,XHX. x $.2 a.>X1Xa.wXC 0.=.N C a R.eX- R.e a t a.e R.e.~X- 3.e C.* *.) 0.j.p.Y.p.[X7Xp._Xe v h U a.a R a.a.a.a 8X, RX1.Z.~X,X,X,Xl.e a R U E...CX=.s.).M.9Xw sXK.YXK x hXD.aX- t a < R uXs / /Xi.CXf.F E < t.*X,X,.YXlXK $ :.9 1XcXl.9 a R RX- 3.u.~XVXI t aX-X-.~ R.MXp.< [XD.8 F ~.r.u.rXt R RXBX+Xp v UX1.~X- RX-X- R aX- UX,.a U 1.FX4Xn.F.J..+.+X0.+ @ = 9 b H.;.C ; r.{XrXp.aX-.8.~.`.~X1X1.HXV.8.` ~.8 F.8 ~ ~.r.rXt.rXt.k.r eXd e.^.I./ l.r e.kXt", +" ^.v 2 2X6XnXbX= 0 JXc x.`Xt.^ N.oXoXtXt.r eXjXtXjX9Xk N.z.f q.z.A./ qXx ).u D.0XUX5X5XD.8 ).R.r.H q.$ qX3X9XM IXZ KXp o oXG.j.O !Xc :.8 3.k.5XoXo ( T.A :.uXx.0.zXx.f.X.XXkXg l.z.Q.#. .U.c.#.c.U l.U.#.U l.U.c.b.c.oXz.c.U l.b.o.b.bXgXz.oXgXg.b.b.o.b.b.b.bXj eXtXtXj.k N.b.b.o.b.b _.b.o.b.o.b.b.o.IXg.c.c.c.c l.c l.c l.cXk.c.U.c.cXkXg.b.b.b.b.b.o.b.b.b.UXz.b.b.o.b.b.b _.b.b.b.b N.^.^.^XtXjXtXtXt.rXt.rXtXVXd.k.k.r.uXtXtXt.8XV.8.`Xl gX5XyX..2 xX.X5Xc T x mXJ $ :.Z 1X,.% :.-XlXJ h.2 1.w.sXC 0.= *.M.* < aX-X-.e R.* a R.eX-X- R 3 a a t C.) v.@.EXp.YX+Xp.W.i.W 1.a.M < R XA ..m E p U p._X>X> x.nX1 BX1X1 $.wX5 ' (X1X1.`.8 ~.rXt.r.r.kXj e.rXt.rXtXtXt.rXt.rXtXt.k.rXtXtXtXt.rXt.rXt.rXt.r.rXt.K.r ~ F.~.`.~X1 g.'XPXDX1X1 B.~ B.eX-X-X-.eX-X-.a.~X-X-.Z.~X, R R R $ T sXO.] B ' :XxXoXx ).X.XXoXx qXx NXjX9.k.XXo.k.kXdXt e.r.rXtXt.r 3 # VXXXXXJXM.,XBXJXH nXwXP.'XaXs gXLXO &.q 9 s.n.n.w.wXL 9X0 rX:X:.{.@Xr.- k ~.`.~.` F.~X*.r.8.8.8Xt.`.8.H.`.HXtXtXt.r e.r.b.X.b.b.^.b NXjXt.r", +" ^ 0 &.jX0 &X0.xXpXp xXI.8.rXxXx.& ].R PXk.X.^ NX9.o.X.X.R 5.z (.R IXX ).$ :XJ.2 k IX# 6 V 5 c D D.u.u.r.8Xt.r 3X1 'XK.Z.D.u.K.r.u 3.8.K.~Xx ]XO.2 (X5.8.8.8.8.H.8.K.8XtXtXo fX@X@.Q ZX X Xu.6 X.tX&.f X ZX&X .I.7.&.(.6.t.t.(Xg N.b.b N.o.oXgXgXz.b.o.b.b.X.b N eXtXjXtXj N.oX9.b _.b _.b.b.b.b.b.bXg.IXg.U.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.o.b.b.b.b.b.b.b.b l N.b.b.o.b.b.b.b N NXz.^Xt.rXt eXtXt e.rXtXt.r.uXtXtXtXo.kXtXtXt.rXt.r.8.8XVXDXOXl.nXD R R t R tX- R.aX- t B R.aXD.a a.a R a a R.*.DXaXm bX= /.M.*.a a a R.~.e.aX- a R.e aX-X- R a.e tXsXs.) 2.).@Xn E h t.}X, 3.% 3.9XI RXJ.ZXD $XU x.~X-.9 D a a hXJXK.e.} p.m.@.B.) u.Y 1Xc :Xc.Z U.a aXD a BX-.eX-X-X- t.N / 2 wX6X4 E a R aX-.~.eX- R.~.~.~.~X- 3.u R.~.HX,X-X-X-.` 3XD a RX-.` a.a u vXpXr.- RXDXI.` ~Xt.8.8X1 x.-XG.pXG U U UX, U.M < t < tXe.F >X+X4XA.m p U . E U E.d.W EXn n v.nXD BX1.n.n.0XU D T B.`.` ~.8XtXt.r e.k.k.rXt eXtXt.rXtXtXt eXtXt.r.rXt.rXj.r.r.k.r e.r eXtXtXt.X.r.r ~.8.`.`.` g.0Xl 'X-X-XIXD BX- aX-X-X-.~.e.eX- cX,X1 R.ZX5.D.D.w.0X;.].DX1X9.uXd.r.rXd.rXt.k.r.r.k.rXt.r.kXt NXt.rXtXt.rXt e.rXt.r 3X*.,XXXM VX3 k V V.-., =XU 9 sXD.!.n sXm.' 9.n.n $.DXs.w v &XCXA {.{.4 W.TX+ a 3 c.`.`XIXtXI.`.8.8X-.r.5.8.8.8.H.kXV.r.r.^.^.^.b. . Xg.^XtXt e", +" w J &.!.!XG.;.@X+Xp :XV qXk 5.K.A.A.A.A.z N N N.^X*.^.k.r.r.HXt 3 3 ~X-.8XI.`X1.HXI 3 c V ).5.HX5.k.k.KXk NXo.k.u :.5X*.KXt.XX*.rX*Xt.^.rXd.H.H.H.H ~.8.r.8.8.8.~.8XV.` ).^Xo.z.IXk d.I.I.I.z.I.I.I.Q.R.Q.I./.z q.I./XxXg.I.$Xg.XXg.^.b.X.b.cXg.b.o.b.o.b.bXgXg.^XjXtX* N.o.b.o.b _.b _ _.b.b.b.X.b.c.UXg.cXg.c.c.c lXg.c.c.U.c.c.c.U.c.cXk.c.b.b.b.b.b.b.b.b.U.b.b.o.b.b.b.b.b.bXzXjXt e.rXtXtXtXtXtXtXt.rXd.rXt.u.rXo.kXt.r.rXd.HXt.H FX1XI @X; : 8XD ...W U U # c 3XK.|.Z R.e nX,.M.- x.'.eX- :.Y.M.a.}X. `.*.M E pXfXb.) 8XeX,.9 x 1XD 3.a aXDX1 RX- a aX-X-.*.N.=.B.CX6XnXe a.e.~.~.a R.e BX-.eX-X-X-XI.eXx ` DXl 3 1X5X- 1XK.Z.a R.~.~ t tXeXpX+ nXcX,XD.H.`Xo F.8 RX-.9.YX+XpX4Xp.Y..+.T.h [XJ I I.R |.f./XkXg.^.KXj.^Xt.rXj.r ~Xt.r ~ 3.8.r.`Xt.8 F.H.HX1XV.8XV.`XX.].2.kXt.r l.(.zXx.RXd.H.r.KX9.XXk.^.^XtXt.rXjXxXzX5.^.k.r ~X* ~.8.8 3XV.`.$.r.K.z ) AX@ f.&X@ AX@.RX@Xg.I.I.R.f./.z./.zXk q.z.$XgXk.z.z.X.#.^XzXk.b.b.b.X.b.b.bXg.z dXxXjXj.bX9.b.b.o.b _.o.b.b.o.b.o.bXk.#Xg.cXg.c.c.c.c.c.c.c.c.c.U.c.c.cXg.U.c.b.o.b.b.b.b.b.bXk.b.b.b.b.b.b _.bXzXzXd e.rXtXt.rXtXt.rXt.r.r.r.rXtXd.r NXtXtXtXtXt.rXt.H.`X1.H @X;XP n : $ h $ $ 1 x $.9 x.w.'XKXcX1 a R a aX-X-.e.WXa b o O.=Xe = [ D.eX- a B t.'.3 R R <.a < c 'X- 8 8 C.W.j *X4 v p x.a.}X- 3 :XIX, R R 1X,X,XDXJXlX-.eXl 1XD.*X, xXM R.} E.sX> ..)._XDXD.ZXDXD.M $.} R.a R.e a R.eX- R RXs.=.s.@ ^XnXe tXI.K.e.~.e R a R.eX- BX-XI.~ 1 :X5XKXDXM.KXJ :X..Y k.uX1 R.e u v >.jX2XH 1X1 3.`XdXI.`XI.8XI.Y.YX>.J >X4..< . EXF u t RXD.e R a.M EXn yX> v.w.Z.wXaXP.0 3XV.H.`XI ~.8.r.rXtXtXt.r N.rXtXjXtXt.rXtXtXtXtXtXj.rXt eXt.rXjXtXtXt.r eXt.rXt e.^.k.kXtXt.`.`.H.D gX5.0.Z.~X-X- RX-.u.aX-.aX- a cX, : ` : 'XJ.9XUXOXP.G D.0 5X9.fXjXj.rXt e.r.rXjX*.8Xj.kXjXtXt.5Xx.rXtXtXtXtXtXtXtXtXtX*.8.,XXXX |.,XS.l V |X3.[XHXU y.' sXD.W $Xl 8 '.ZXl 8 BXaXL yX0 ^.B.PX6 ;X2 ;.T h #.5XoXd.H.u R.`.`XV.`X* ) D.$ I ) ).$.k q./ N.bXz _.b.bXt eXt", +".@Xm =Xc.!XK.j z.1XB : ].$ )X9.K.K N N.KXt.r.r ~ ~.8.`.8.8.8.8.8.8.8.r.`.8 ~.r.kXV.`.8.`.HXIXV ).f.R.XXxXxXg ( QX9.k.AXgXk.IXk.U.X q.6.fXkX NXg.b NX9 N.kXV.r.H.8XV.5X-.`.k.AX@.(.f.tX X .A.tX Z.6.&.(.(.tX ./.:X .( ,./.7X .f.tX .6.(Xg.b.z.o.o.b.b.o.o.bXg.z A.oXtXj.b.o.b.o.b.b _.b.b.o.b.b.b.b.U.I.c.U.c.c.c l.c.c.c.c.U.c.c.cXg.c.c.cXg.b.b.b.bXz.b.b.b.U.b.b.b.b.b.b.b _.X NXj eXtXtXtXt.rXt.r.rXtXtXtXtXtXt.rXoXtXt.rXt.r.k.rXI FXIXV g.n T x gXc.9XcXJXJXK T x :Xc 1Xl.9.a aX- aX-.e tX-XDXa o o.= G b x $ V a.eX- < R.'.w x a a cX- cXJXl.e t C._XC pX4Xp.F U <.M 3X-.~X1.eX1 R R.MXD .j.jXGXcXw.]Xw `X, a t RX1X- tX- B c R.*Xe / 2Xf.@ ^Xe a.eX-X-.a.e R.e.e R a.e RXD R.aX1XDXD a 3.a RXD 1 h R RX-X- R._Xp . WXr.x.jXDXD.HXo :.k.8X-.a.a.pXp >.x.{ WX2.pX4XnXpXp ..JX2.F p E u RX- R.a.e $.* <.WXnXn.jXGXL.n.n ' T T.~.8 3.8.8.r ~XtXt.rXtXt e N.rXtXt.rXj.rXtXtXj eXtXt eXt.rXtXt eXtXt.rXdXtXt e.rXt.K.k.r.r ~.r ~.`X- g 'X5 :X5X5 R.`Xl.H 3.` R RX1XI R.`.e x $ B.ZX5 '.0 g B F.`Xt ~Xt.r e.r.^.rXt.k.rXt N.X.zXt.5XkXxXt.rXtXtXtXtXtXtXt.u ~ 3.,.$X# }X# V.} 3 |.[ VXH n.q g x $ $X. T 1.2XKXJ.9 gX..! b.q.qX6Xi ; r ;X8X+.TX,X- BXIXI.k.`.8XV.`XI 3XI qXX.5.KX*.r ~.k.X.o _.b.o.b.b eXjXt", +"XiXn H y v.Y M hXV.5Xt.rX* 3.rX*Xt.r.r.`.8 3.8.8 ~XI.8 3.8.8.8.`.8.8 ~.8 ~.8.8.8.8.8.8 ~XV.K.&.R fX (.X.^XoXj.k./.^./.cX@XgXk.&.A.6Xg.tXgXgXg.^Xg N NX* ~.8.`.8XV.8.kX* ~.X.X.I./Xk.I.Q.z. .z l./.Q.U./.U.z./.I.I.z.U.zXk.I.UXk.UXkXg N.U N.b.o.b.X.o.X.b.z./ NXj.^.b N.o.b.o.b.b.b.o.b.b.bXg.c.U.U.c.cXg.c.c.c.c.U.c.U.cXg.b.b.o.b.bXg.o.b.b.bXz.o N.bXgXg.b.^.XXz.b.b.XXz.bXzXd.r.r.r.r.uXt.rXtXtXtX*.r.uXtX*.r.5.rXdXtXtXt.rXV F.H RX5Xc.w.w.w.w.Z C t.* t a t t a a t R.a.a a.e a t a a a 3.Z J.E.v /.N R aX-X- aX- R a a.* aX- aX, a a a.e t <.* *.d 2.xX4.m U < <.}XI RX1 R R aX,XDX,XDXDXD a a R.a BX-.~X- R t <._XeXf ^.sXe.N.9.a.M.a.a R aX- R 8 a B.aXl ` 1Xl y.E.sXfXf .._ a.aXI 3.~X-X-.eX- a.~X- aXIXIX-X- a RX- a RX-X,XD R.u a R a.MXnXp..x >X2.<.{Xr.<.@.XOXGXK $ cX,XJXKXcXKXl $ '.wXKXa.! &X0.4.T.{ L.xX2.TXw RX1.`.`Xd F.8.8.`.8.8 3XM.5 V ` q :.$.kX9 N.b.bXzXg.^Xt.^.r", +".v O J & bXGXr .aXV.8 ~.rXMX*.r 3 ~.8.8.r.8.`.`.`X-.`.`.8.8.8 ~.8.8.8.8 ~.8.8 ~.8 ~ 3 ~ ~X*.r.K.kXx q f 5.&.k.r.^ N.X lXk.6.zXg.$.zXk.b.c.bXz.b q.b.RXkXx.5.u.5 #XV.`.8 ~.r N.X.X.Q.z.z.c.z l.U.Q.cXk.UXkXg.UXkXk.UXk.cXk.b.b.b.b.o.b.o.b.z.b.b.X.b.b.b.^.rXj.XXjXtXj.X.b.o.o.b.o.b.o.b.o.b.bXgXk.#.c.cXg.c.U.U.c.c.cXk.cXg.o.cXg.o.b.b.b.b.o.b.b.b.b.b.b.oXg N.o.b.bXz.oXz.b _Xd e.r.5Xo ~X*.r.rXt F.8.rXtXt.u.r.r.XXtXtXtXtXtXVXt 3.` B :XK.w.n.w.w.w.w.Z R RX- R R a R.a.eXD RXI T.a a.M.aXIXIXe b H 0.=.N tX-X- R B.eX- aXD RXI R a.u.~X-X-.a < t u.)XvXn.< . E U < a.aX-X- R a RX5.'X,X,.a 1.aX,.a.e.e.~X- R.e R t U.W p.@.B *.).*.a.aX- R R a R.*.aX1X- R.eXIX, :XG y w 0.@X4XnXe tX1 # R aX1.e aX-.e R.eX1X,X,X-.eXI.e R.eX-XD.% #X- R c a a.MXp ..4Xf %Xf.@.j.aXIXV 3.H.`.`X*Xl.}.-X>X4.J %.mXAX4X+.x.{.x.{.{.mXe U a.`.~ R.M :Xe E.} UXqXq.YXwXU.0.Z 3.H.` ~Xt.rXt e.^.^Xj eXtXt e.r.X.b NXg e.rXxXkXkXtXjXt.z.rXj N.IXk.rXt.IXdXtXt q N.r.rX@Xk.X.r.kXt ~.`XV.DXU.nX5 sXlXM :XM c ` ` DX5XlX1.a.uX-XD.9.n.0XP.0X5.H ~.r.rXtXtXtXtXt.rXt eXtXtXtXt.rXd.r.^Xd.r.X.rXtXd.r.rXt.5 fX9 7 D 5 | , k.$X9.`.a < 3.$XB VX0 y.'.' ` x.,XD R BXDX1X,X1.eXD sXa o.;.@.C...@.{.CX4X+XqX-X-.`Xt ~.8.8.`.8.}XVXMXMXX : :X9XxXo N.b.b _.^Xz.X.^ ~.k", +".@ 0.!.q bXU yXp <.}.`X* ~.8 3.8.8.`.8 3 3XV ).`.`.`.8.`.`.8.8 3.8.8 ~ ~ ~.8 ~ 3.r.r.r.rXV.r.k.rXj.k N.X.X NXk.k.^.r NXg NXk N.b N.o N.b.X.bXgXg NXuXk.& qXx qX9 ) qX9XV.` ~.` FXk A.zXkXg.I.Q.U.z l.U lXg.z./XgXkXgXkXgXk.c.bXg.o.b.b.b.b.b.U N.bXz.^XtXtXj e.r.rXtXjXj.b.o.b.o.b _.b.b.b.o.b.bXg.c.I.UXg.U.c.c.c.cXk.c.cXg.o.b.cXg.c.c.o.o.b.b.b.b.b.b.b.b.oXk.b.b.b.b.bXz _.XXz.XXz.rXdX9.r.8 ~.r.r N.`Xt.k.rXtXV.u.X.rXdXtXt I.X.ZXVXVX5XU.' s T yXK.'.wXa.ZXI B.~X- RX-X-X-XIXI.~Xl.5.9 TXc TXUXU.j.O.;Xp.j sXlX-.~XVXD.DX5 3X, 3.uX-.u.~X-.e a.*.* u.N 2XfX4._.W.M < R RX-.a 3 R :XKXcXcXJXw T k 1 $ a R.~X- B aX- t U.d...@.s.).) U.* R 3.a 3 a.e.a 3.a B R $ 3 t t t G.N - ^.@XnXq.}.aX,XI.e.eX-.~X- R.eX-XI $.e RX-.e R.e.aX- `XJXIXlX1.~ 3 R UXG.JX> {XA %.@.j EX-.uXV F.`.`.$ k.a.wXr.@.s._.m.m.m p ..<.JX2 >.m E.a R B.0X- 3 Xm.9XaXU.ZXJXwXJX. !X.XK T.e R.n s.w H z ^.vXA.{.4.JXpXB 3.} 3 3.r F.H F.8.`.8.uXVXV.u.rXo.^ N _.b.o l lXzXtXjXt e", +".> !.q.q b.q.jXG c.}X9.` ~XVXI V #.5.$.u }.K.A 3.`X-.`X-.8.8 ~.8 ~.8.8.8 ~.8.rXtXtXtXt.rXjXt.kXtXt.^X9 NXjX*Xt.k.r.^.^.k.^Xk.o.X.oXzXg.b.o.b.b.o.b.I.z./ qX9Xx.5.K )X5.`.u (Xo.k qX@X@ A.t.tX .t dXu./Xu.t.IXu.f i./././.I.IXkXkXg.oXg.b.oX9.U.b.^ eXjXt eXjXjXd e.kXjXt.X.b.b.b.b.o.b.o.b.b.b.o.b.c.I.U.c.c.cXg.cXg.c.cXg.o.o.b.cXg.U.UXkXg.b.b.o.o.X.o.b.b.oXg.o.b.XXz.b _.XXz.b.bXoXt.8 F.u ).H.H.8Xo.`.k.r.rXtXd.r.X.r.uXtXd.$ 5 5 5 DXJ.OX.XwXUXUXwXU.9.n.wX5X1X1X1XD B BX1X1X1 B 8XD.ZX,.DXaXsXG yXr.E 0.s x x $ cX1X1X1.~.~X-.~X1X,XIX- a R R t 8.N * 0 0 v pXe <.a RX-X1X-X-X,X, R.MXc $XD s.aXDXD.e a RX-.e R t u.W._.J.s 2.W y x.*.e.- : `.eX1 h.3 R.a.e k.9 $ C 8.NX= /Xf.@XnXq.M R.eX- BX-X-X,X-.~.aX1X1XDX-.e.eX-X-X-.~Xl B R `XcXJ 1Xl.aXeXp.Xq v.a.* aX-.e a x $ ` $Xl $ :Xl.5 x :.Z $X5 :XDXI.e.e.~XD `XcXK.jXG.@ SXb.P.B % WXB aX*.K.`.`.8.KXM V Xw.+X+ v.M U U UXe.m.F >._Xe x : :XIXlX,.Z.e < U hXq .a 3.8.rXt.r.r.r.r.r.rXtXtXtXt.k.b.^Xd.^Xj eXzXz.b.bXdXj e e ~ e eXtXjXtXj eXt.r eXt eXd e.rXtXtXjXt.k.b.r 5.R 5Xk 5 q ) TXyX; 'XlXD RX-X- RXI.e ` $.e.uX5.w.wXO ' RX- ~.rX*XtXtXtXtXtXtXtXt.rXjXd e.rXj.r.r.r.zX@.| X.R (.tXo.rXdXV.H.k.HXt.HX-.`.`X-.`.`.`.~.~.8.}.,.,X..GXO.> T 'Xl.]XD.9XwXD.Z.O.Z.G.>XK =X0 M.;.BXi L LXA >X% [.}.} 3.r F F F F F.rXtXtXt ~.^.b.oXz _ _ _.c.b.b.XXk.Q.X", +"XKXP gXU s gXwXH VX3XMXXXJ.S |XH |.S }XHX3.K.aXDXI.`.8.`.` ~.`Xt.5 ~.rX9 NXt.^.IXk.rX9XgXjXg./Xk.^.I.I.bXj.zXg.^.^XgXg N.^./.^Xx.b.o.b.o.b.bXg.b.X.bX9.X.K.k.rX*.k.8X*.u FXV.uXxXoX@Xx.^Xx.zXk.RXk.I./.z.UXkXkXkXk.cXkXk.UXkXgXgXk.U.cXg.b.bXg N.b eXtXtXtXjXtXtXjXtXtXt.b.X.b.b.b.o.b.o.b.b.b.b.oXg.I.U.c.c.c.c.c.c.c.UXgXg.o.o.UXg.cXg.c.c.c.UXg.cXkXg.cXgXk.U d.I d.I.tX .7Xx.z.t d f q PXx.A (X.XxXx.`.^Xt.rXtXt.r.XXt.u.rXtX* ~XV.8X-XMXcXXXMXM xXl.9Xc., g.n.nXa.n.nXLXLXL.n.wXa v.ZXaXG s b g.j H M z.E JXn xXI.e.HX5X1X- aX- t R CXl.* tXs.M.).N.).vX6 ^Xe U.N R RX-X- R.~X- R R a.M R RX-XD R R a.aX- a a < a.W.W . .Xb.).N C xX,.e.eX,XI $.e R h R # a aX,XD t.N.=X=.v.v ^.pXn 1 < a a aX-.eXDXK `.]XcXcXK.,.9 $ TXKXJ :Xc.,XIX1.e R R R RXc = z.@.; { % % %XnXwX, cXoXV.~.8XI a a $XB.YX< 1.Y $.M.M E._XeXp.W $ n.,.S R.a < 1 xXqXe E.i `.}.`.rXtXj.rXjXtXtXtXtXj.r.r eXj.^.^.b.b.^ e.^ l _.b.bXjXjXt eXtXjXj.rXt eXt e.^.rXd.r e.r.k eXtXt.r ~.X.rXd.rXV.r.5.8.` B.k g 'XlXl R B RX, c :XJ.]X3 TXc ! !.O D R ~.8X*.r.rXtXdXtXtXd.r eXt.r.r.rXjXtXt eXt.k.^.^.rXt.XXt.k.r.rXtXt eXt.r.`.`.~.8.`X- F BX1X-.8.`XX k g @.nXy g DXcX.XlXK.2 $XwX;.jXOX0 9.+ &.;.; 0 w ;.P.J.p.1.[ < R c F F F.8 ~ ~.r.rXj eXj.bXzXzXz _ _Xz.o.o.z.: 7.I", +".] g.0 DXUXHXH.-XB |XH., | [.[X< VXBXc.,.-XJ.K V D I :.8.H.`.5Xx.H NXkXkXt.X.$.c.r.b.b.r.U. Xk.o./.I.^.r./ NXt N.6.$Xj N././ _.o.o.b.o.b.o NXk.&.f.f.$./ ) ).k ) ) ).R.uX9 ).R }.f f ,.R./.7.&.(X@X .tXkXk.UXgXkXkXk.cXk.UXk.U.c.c.cXg.oXgXk.bXjXt eXtXt.kXtXt.kXtXjXt.b.b.X.b.b.b.o.b.b.b.b.b.b.o.I.c.c.cXg.c.cXg.c.U.c.cXg.U.c.c.U.c.cXk.c.cXgXg.c.c.c.U.#.I.( qX&X&X&XkX . .^.(Xx X.R P.& D (.|Xx.r.rXt.rXzXdXjXt.X.rXd.uXt.u.8.8.8.aX3XX #XM # #.lXM 1X3XJ.9XL.nXmXm bXL v.' y b b 9XGXG bXG J s J o b 2.N.w a.a.K.K cX-X- C C.).M.N v.s.W G.).N.)XbX6.@ ..W.W < y HXr HXCXmXC wX>XCXmXC &.+X0 O.=.N.w < a hX- t R 8 U.N.).W C 2Xn.) ..;..X6X>X4.@ v p E t t t a RX- a R a.a tX3.ZXlX-.a R aX- a.a a a < U U.s.s -XF.d.*XU 1 R R aXIXD a t a RX-.} a a a t.N /X=.@ H zXpXGXq x t.e tX-.e RX- $XJ xXlXDX, :XKX,.u.MX5Xl x.%.%X1X-X-.e < aX, yXn S.@Xf H.4.+ MXh.>.> $XI.aXI.~XIXIXI `._ E hXwXl T k U.MXq ! x < < < < UXe E 1Xq X7Xl.}.aXIXV.uX* ~Xt.r eXj.r.rXt.rXtXtXtXt.^.b.^.bXz _ l.b _Xz.bXz.^ eXjXjXk l e e.b.zXjXjXdXg q eXtXt eXt.r e N.kXt.X ]X9XtX*.8XVX1 ' m.0.'XlXD.eX- a R.e.e aX-.e.w.w gXJXl.5.8.X.$XdXtXdXdXt eXdXt e.X q.kXd ).bXt.X.z.X.r.X.XX9X*.^.z ~X* l.rXt ~.`.`.8.`.`.` B.`X-.`.a.8XV `XHX.Xw.n sX5XDX1 R R.D.n.n.qXC J o J J.E w w S w {Xf ; .Xq x.- cX-X*.8.r.u.r.rXt.rXj.rXt.^.b.b.b _.#. .V _.o.b.XXo.b", +"XU.+.G = =.1.1.S.S.SXB.[ X7 >XBX<.TXhXhXH n.3X,X1 3.8.`.8 ~.8.H NXt.rXtXtXtXtXj eXj.r.^.bXz.b.b.bXjXjXjXtXj eXtXjXg.b.bXg.o _.o.b.b.UXk.U.z qXk NXX.K.k.KX*.r.rX*.K.k N.u.8.8 ~ 5.$ ).K NXkX9Xx l.I.z l.6XuXk.U.UXk.U.c.U.UXgXk.cXg.c.b.o.cX9.bXtXjXtXtXtXtXjXtXt.kXt eXtXj.^.o.X.b.b.o.b.b.o.b.b.b.U.o.b _.c.c.cXg.c.c.c.cXk.c.c.c.c.c.c.c.c.c.UXg.cXk.c.c.#.UXk.UXk.cXg.b.b.b.b.b N.X N NXt.H.$.% q F.rXj.b.b.b.^ A.zX*.K NX*XV.H.`X- : ` # $ a <.a a.} x x ` n.jXG H 0 HXCXi b ^.s 2 2 2.v 2 2XLXG.q 2.WXs.M # # a U R u.N.N.d.)Xe ...._ v.. M zX4XrXn.... E E.M t t < t aX- a R t tXDXw k.Z aXD R a a < a < < <.W.W .X=.) * C.* [ x.eX-.`XIX- B.e R.* tX, a t a t.N.).vX6X0.4XnXn 1X, <.* t a aX- t $ TXK :.,Xc 1XcXcXc TXc D : `X3X-.~.a.eX- a.WXhX+.+.T z M.@ J w H H M M y xX, xXI.uX- #Xp E E.MX,.M [.M U.aXe.M t < u E.iXq XcXB c.a.`.8 3 ~.r.kXt.rXt.rXj.rXt e.r.k.rXtXj eXtXzXz.b.b.o l _.b _.bXzXz.^ eXj.U q.^.r lXk.o.r.o N.Q.^ e.^.^XjXjXj.k.kXdXx ).f f.f }.$ D D @ 4XO.G :.,.e.e R R aX-X- R.Z.nXw Y D 5.|.R IX@.t.R fXoXd.rXt.r.X.Q N.r.IXo.rXx l NXtXk.bXkXtXx )Xt.XXx.K ~ F 3.` 3.8.8 N ).`.`.~.~.` aXcX. m.>.1.9.9Xc.9.wXaXa.n.!.q O 2 2 2 2.v.v.. H wXb %.{X6.s._.Y.9X-.rXV.r.r.r.rX* ~Xj.rXjXz.b.b.b.b.I.U.V _Xz.X.b.b N", +".>X;.+ n.jXrX< n.-XB k.LX<.S.1.S zXrXe.W.WXe s.aXIX-XI ~ 3.rX-.r.k.rXtXtXtXj.^ N N i.z.b.c./.o NXgX@XtXtXj.rXjXj N.^.o.b l.o.b.o.b l.z./Xu.f./X9X9 N.5XX.$Xx 3 3.8.rX*.r.uXtX9XV.kXX.K.X.K.5 NXxXk.&.I.I q l.I.I. .#. .#.U.c.c.U.c.c.c.o.b.c.X.b.b NXz N.^XtXtXtXjXtXt.kXjXtXtXj.b.b.b.b.o.b.b.b.b.o.c.b.b.b.cXg.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.U.c.c.c.UXk.c.UXk.cXg.cXk.cXg.o.b.b.^XgXg N.^.XXx.X.kXtXt N.^.b.b.X.^X .z.& 5.& 5.$.5 DX$ }.3 k.,X3.S XH $ X3.-Xh n z J.s.s.s.N.s.W G / / G.N G C * bXG.N.N C RX, a < a.).N.sXn.pX+XpXq._.X+.* < t t.e.a a aXl.9 xX- xX, a R RXD t a t t R a cX-.~ 3X- aX- <.a.MX+Xp y.@ HX0 &.>.+ =XCX0X0.Y.jXw.'X5 c.u.a ._.i.W.M.M U.a EXeX,XeXl EXeXeXq.M < h.uXIXV ~.`.XXxXk.^XtXtXtXj e eXt.k eXt.r.r.rXt.rXjXjXz.b.b l.bXz.b.b.o.bXz.o.b.b.oXzXt.^XjXj eXj eXd.^.b.b.b.b N N.^.^.r.rXt ~.8.8.8.8XVXV BXU TX5 ' B RX- R.e.~X-X- aXD '.n !XI.`.H.HXd.HXd.r.kXd.r.k.r.k.rXt.r eXdXt.r eXtXd.r.^ N.k qXt.kXoXd.^ N.k.8.`XI.8 ~.8X3 }.% D 5 5X3 IX3.3.O.G @.OX;.3.G.].n.n OXmXC ^ 2 / *.NXs.) 2Xe.@.s.BX>Xf vX+.Y [.aXIXt.u.r.uXtXt.r.k.b.X.oXzXg.b.Q _ _Xz.b.b.b.^Xd e", +" =Xw =Xp M M.jXr.[ n.1.L.hXrXrXrXn...=.s.W.n.wX-X-.a.8.8.8.8.8 ~.kXtXtXtXtXj N NXg q./.^./.IXgXgXk./.X.^XjXdXjXt e N.b.b.UXzXgXzXg N.fX ./.$ NX9 q q.$ q.KX*XI ~ ~X*.k.^.u.r.`X9 : 5XV.5.5Xx.5 ).I.I.z l l l.U.U.cXg.c.UXg.c.c.c.c.c.c.o.b.U.b.o.X.X.bX9 NXjXtXt.kXtXtXtXtXjXjXj.^.b.b.b.o.b.b.o.o.oXk.bXz.b.c.c.c.c.c.c.c.c.c.c.c.c.c.U.c.c.c.c.c.c.c.U.c.c.#.U.c.c.c.U.c.c.o.b.o.b.I.t.f d.&.I.5.r.^.X.o.^.o.b.b.b.XXo.rXtXVXV 3.8XIXXXJ.3 k |XH ., kX3.- V.,.g.3 =.j.;.j.s vXeXL U.*.* C uX+Xn.* t.* C.* a a h U C C.) * %.pXnXM.l.i.FX7 ._XB.i U t t < U U E E U.W EX, UX, u < < a < a.M hX,.} < a.M < R <.W U.FXpXnXL.s.N.M t t.e.a.~.~X-XI.eX-XD R.*X,X- t a.N.N.sXf.x.@._ t.M R.e.a R a.e.Y : :XDXK 1Xl.e a RX1 R.e R a.e c R.~.8 3.eX- a < oXU & H MX0.+ HXC oXm B B.8.` Xn hXe.M.d U.m E x x._ $ x `.} 3 3.KXt e.^Xj.cXgXz.r.rXtXt.r.r e.rXtXtXtXt.r eXt e e eXj N.b.U.o.b _.b _.b _.b.b.^.b.oXzXz.^XjXjXj.bXz.X _.b.b.o N.o.^ N.r.k.r.H ~XV ~ ~.`XI B.ZXU '.0X- R R.*X1X-X-X-X-XD.w ' m $X1.~X1XdXd.uXtXt ~.k.r.k.r.k.rXt.k.rXtXtXd.rXdXt.A q ] 5.A.& I I.|.R (Xd.H.8 N 3 ~.r.u.kX*.8X-XX )X-XI.,XJ = gXwXl $XU 9Xa bXC.! 2.vXn U t B.M C sXG *Xb w.C.. ..L n $.8 c.r.r.rXt eXjXzXzXz.bXz _ _.c. .o _.b.^ NXjXt.r", +"XD t.9X0Xh.h y y y [X7XXG.@ v v.N.N.N s 8 R R.8.`.8 ~.8.rXV.kXt.r.rXt N N N N l.b N.oXx.b.X.o.^Xg.XXo.X.X N.o.X N.b l.X _Xx.X.RXk.XXxXkXkXk.f.$XxX*X*X*.8 3 ~.rXV.rXt 3X9 IX9X9.r ) ) 5.&.fX@ d.: lXg.U lXg.c.c.c.c.c.U.c.c.c.c l.o.b.U.b.b.b.b.bXg.X.^XjXjXtXt.rXtXtXtXjXtXj.X.b N.b.o.b.o.b.oXg.b.b.oXg.c.c.c.c.c.U.c.c.c.c.c.c.c.c.c.c.c.U.c.c l.c.c.I.U l l.c.cXk.cXg.o.b.b.U.IXgXxXgXdXz.X.XXzXz.b.XXzXz.XXzXkXd.u.k.kX* ~.8.`XXXcXX x # `.l.l.l # #XM xX3 yXa.s.jXGXr.-.[XlX,.*.a 3 #Xc .Y kXcXK g.9XwXL u.)X=.sX>X+XM.l h.l # .-.i UX+.M.YXe.>.,XlXqXnX+.F.-Xn x U h.W.M.w U.M.a xXB 1Xp x., 1Xp x hXeXnXnXL vXs C.N U t.M.a.eX- $XlXl.D $XI.0 $ $ a R U.)Xi.@.@.xXn t.e aX-X- t.a.a.eXD.aXD `XKXc ' h $.aX- t R aX- cX-X-.~ 3X- a t < W 9X0.! oXmXp y H.+ = & !Xm.!XIXV 3.iXn x E U E._._._.iXq x 1 TXlX,XI.8XV.r.^.k.^Xz.U.o.^ eXj eXt ~.r.kXtXtXt.r.rXtXjXtXt.r.rXj.^.XXz l.b.b.b.bXz.b.o.b.b.o.b.b.b.o.b.b.b.b _ _ _.b _.b.b.b.b.^.bXt.r.rXt ~.HXt.`.8XIX1X1.2.' TXD.e.~.e.e.eX-X-X- R s sXU 'X1.R.].X.u.^.KXtXx.kXx N.R.z 5 N.r.f.^Xo.^XoXxXdXo ).X (.5 :.5XxXo.5.HX9 ~.8X*XkXx.rXV.r.8.8.8.`.~XI 3.K k !.>XwX,X- '.!.n OXC oXC O W XJ TXUXc x KXp W.y.x .XnX4 XBX-.k.HXV e.r e.^XzXz.V _Xz _XzXz.b _.b.bXz.bXj e.r", +" cX5.[ sXpXH =.OXwXpXc WX+.s J v.s 0 v.=Xa s CX1X1.` ~ 3.r.8.`.k.kXt.uXtXt.k.^.k.^.k.^.kXjXjXjXj.X N.^.^ NXt.^.k.kXt.^.KX9Xd N.R.f.tX9XxXg qX N.I NX*X*.r 3XV.8.8.KXtXt ~.8 ~ cXdX5.u.KXoXxX9Xx.RXk.Q.z.z.z.U.U l.U.cXg.U.cXg.c.c l l.c.o.z.o.b.b N.b.b.b NXjXtXtXt.k.kXdXjXtXjXj.b.oXz.b.o.b.b.b.oXg.b.bXg.c.c.U.c.c.c.U.U.U.U.c.c.c.c.c.c.U.c.c.U.c.c.c.c.#.c.c.c.c.c.c.c.cXk.o.b.o.o.b.b.X.X.^Xz.b.^.X.b.b.bXx.X.XXkXo.r.k.k.uXI 3.` #XJ V ` k.[Xc X3XMXM #XM y o v.= vXL u.w tXDX, RX- a c < c h c.- sXK.jX0Xw.j 0.s.Y.p.F x $.a c.iXM.-.FXeXpXq =._.9.+.jXh.T M.O =.O.Y v U.W E UXe 1.pXwX+Xw.[ nX0.>XcXn.W E xXG.N xXa.WXs.N.MX, a R B.K :XKX3 T 1 x m : xXs.N.NX6X2.JX+Xe t tXDX1X-.a a a.aX-X- R aX- $ `Xc `XwXI BX-X- a.eX5 RX-XV.eX- a < uXpXn.j H v s y !XG s v vX0XU o.j.qXP 9 #X1.a.YXe._._._ E.FX+X+ 1XK # R.H.r.8.k.kXj.cXj.^.^ e e.rXt.rXt eX*Xt ~.k.kXtXt.k.r.rXtXtXjX*.^Xz.b.c.b.b.b.b.b.VXz.b.o.oXz.b.b.b.b.o.b.oXz.bXz.oXz _.b.bXz N.X eXt.k.r ~.R ].K.K ).u.]XUXO !XcXl.' `.u $XVX-X-.a.w.wXPXNX5X9.5.| 5.& f.R P P.R.$.z 7 Q f.& f.&X@ Z.|.z.r.u.r )XJX9 : )XxXJ )Xx.5.H.r.K N.8 F ~Xj.k.8.8.`.8.~X* c k k !XUX, R 'XO.!XPXm.q &.EX+.p., `.9X5 1 gXq ^Xf.{.x.m E >Xc.aX*.r.rXt e e.^.b _Xj _ _Xz i.o.bXzXzXzXj.kXtXt.r", +" 5 D D.M.}XHXc.GXU.ZXw.pXL.sXG b bXeXe v v.n.* RX-X1.8.u.`X9Xx.5Xd.rXdXtXtXt.r.r.rXtXtXdXt ~XjXt e.^.r.rXdXtXtX*.rX*.r.r q.5 q.R )X* NXkX@Xu.I NX9.oXt.r.kX*.8.8.r.rXt.k.8XV.H ~ cXVXd Y ).|.R.|.&.& f AX .& Z iXg.c.U.c.U l.c.U lXg.c.cXg.U.b.b.X.b.o.X.oXg N.^Xt.kXtXt.kXtXtXjXtXz.X.b.b.b.b.b NXgXg.oXg.c.c.c.c.U.c.c.U.U.#.U.#.#.#.U.U.c.V.cXg.c.c.c.c l. .c.c.c.c l.c.c.c.c.c.V.^Xz.X.bXzXz.X.b.b.o.b.b.bXz d.z.t ( Q.R 5.%Xx.$X9X9Xl }.-X.X7.S |.[.[.- .l.lXBXw.s.s 2 v U x h R.MXIX1X-X-.a.a.aX,X, CXs vXe.EXp =.h.1XB #X5XI aX-.i xXpXc.FXeXp v CXq h v y.j.jXm.jX0.j.Y vXe v v._.)XeXe._Xq v._XGXG v.sXe vX+.[XsXl s ' v.W v C t a.~ RX- R.e aXI.~ 3.e.* t.s . ^.{ .Xp.M.aX1 BX1XI a tX-X-.a a a R a R R RX5Xc t.e.M R R RXVX1XIXVX, R a tXeXpXp.j y v.w 8 $.9.w x v &X+ yXCXC.>XU $.M.aXK._.i._._._XnXcXD 1XM.a R.H.H ~.r.^.^XkX9 NXjXtX*XtX*.rXj.r.r ~.rXtXt.r.k N.^.k e.k.rXj.r NX9 NXk.b.b.b _Xz.b _Xz _.b _.b.o.b.o.bXz.b.o _ _ _Xz.bXz.o.b.b.bXt ~.k.r.H 5 I 5.|.$ IXJXOX$ mXyXJ #.2 3.2 $X-X- BXD.'.0 gXI D.5 qXk )XxXxXx D.X.^.5Xo NXx.kXx.^XoXo.^.kXt.kX* ) I.$ 5.R | 5 ) :.5.r ~ ~ q N F.r ~Xt.8 ~.`.`.`.8X*X3.,X. !X5 B.H.w.' T g y o 0 U.WX, c R.*.e.'.)Xb ..C.pXAXqXp X-XV.rXt.rXtXj.b.b.b.bXzXz.#.z. .V.b.bXzXt e.rXtXt", +".RX9XV #XK c `X, B YXr.1X+X0 v.j CX< y._.O x.]XlX9XX.r )XI ].%.XX5.r.rXt.rXtXtX*.k.k.(.K.k.^.rXdXt e.^Xt.r.k.r ~.r.8.r.}.A.$X9.KX*.r.R.f.RX9Xg.b.b.X NXj.r.r.r ~.r.kXt.u.`Xx.~.8.u cXx.5X9 ) qXxX@ A.R A q d.I dXkXg l lXg.cXgXg.U lXg l lXg.o.b.o.b.o.b.b.b.b.X N NXtXt.kXd.rXjXj.^.b.b.b.b.o.b.bXg.c.oXg.U.c.U.c.c.c.U.U.U.U.#.U.U.U.U.c.c.cXg.c.U.c.c.c.c. .c.c.c.U.c.c.c.c.c.cXg.o.bXz.X.b.b _.b _.oXzXz.o.b.t.t.t f Q P 5 Q 5 DXX |X.XS k.O.3.SXH.S.SX# VXM.l .[Xr 0 vXn.MX, E U.F E xXqXqXU vXa s b.'XGX0XnXp. >Xn._ pXqX>X2.j.;.j yXGX4.j y.Y 1 x.D.w v.sXL C.*X- R.~XI 3.aX-X-X-XMX1 C.D 2.)X6.x.X+ h ` kXcXJXJ.K.rXt.b.zXj q.kX*.rX*.^.rX*.r ~.8.`.`.8.5.r.r.k.X.bXt.^.^XgX9.^X9.^.bXkXz N.b.b.b.bXg _.b.b.o.bXz.b _.b.o.b _Xz _ _Xz _ _.b.b.b.o.rXjX*.r.H.k.uXtX*.5 3 ].Z m ' '.uX1XIX-.eX-.~ aX1 $.'.'XJ B.` ~ 3Xt.H.k.H.k.r.r.H.rXtXVXt.k.r.rXtXtXdXt.r ~.kX* DXM.rXM.k cXV 3X9.r F.r.U ~ ~ ~Xk.UXk ).` F.rX*.kXX k m m.0.`X1.` BX-XMXJ & 0 OXs.M.M.M C.! s.s.s.C.x .._X4 Xc c 3XtXVXt.rXj.^.b.^.b.bXz.c./.o.^.^.b.bXjXt.rXt.r", +"XdXd.&XX VXXXIXIXIXc.3Xw nXw v.+X+.+X+ y.GX;XlXl ).,X9 ,.k Q.2 , )XoXt.uXtXtX*Xt.r q P ZXx.HXd.r e.r.k.rXt.HXV ~.` 3.`.8X3 #XM DXxXX q N.z.b N.X.b.b N eX*.r.`XtX*.rXtXt.`.8 (XXX5.H ).5 ).HXx.X q ( ).z.I.z.z.IX@ l.I. .z.6.6 l i. .I. . .z.U.U.z.U.zXkXkXgXg.IXxXk.X N.XXoXtXdXt.k N.o.b.b.b.b.oXgXgXgXg.U.cXk.c.c.c.c.c.c.U.#.U.U.U.c.c.U. i. .#.U.c.cXg. Xg.U.c.c.c.c.c.c.cXk.o.oXg.bXzXz.XXz _.b _.b.b.b.bXx.XXxXxXx N.X.K.u.u 3X-XJ.3X..O.1X# nXH.S.SX7 .l XBX+Xp v.sXe EXeXs v.w.D.ZXlX-.~X1X, t U /.WX+Xp .Y ` `XX.,XlXI a a a.l.lXB .F._Xq.m E EXq yXG.! &Xw.!.9.>X0X0X0 MX0 yXp.Y.EXr.j oXG o.q &Xw y vXGXwXJ : 1XG 0.W.D.W $ : x.a RXIXD.a.eX,XD RXL 2.sX>.@.JX4 U < RX,XcXw R aX-.,X, :.e.~ RX,Xl `.ZXD a.eXKX;X, RX1X,.5XX K t.a._XnXG.EX0Xm s T xXc m.-XG mXwXJ n 9XGXG.q H.-XK.}XBXBXB .9 h : T.] `X3X9.KXjXtXgXkX*X9.rX*.r 3.K 3.r.u.`.K.5.5XI q ).R.R 5X&X@.fXx.& q.f.f.fX@ dXg.o.b.b.b _Xz.b _.b _.b _.b.b _.b.o _.o _.o _.b _.b.o.^ l eXtXtXt ~.8 ~.8X9.uX9X1X1.0XK.n.wXIX3 RXI.eX-X1X-.w.n.0.OXJ c.rX9X*.&.5X9 5X9Xx ) )Xo.kXd.HXt.u.r eXtXt.r.k.u ~ 5.$ )., ) 5.K.8.u.K FXt.XXgXt e NX9Xg.^.r.`X-.r 3.K., 5 ! :.~X1 R.`.`X-Xc.q b O.=.W.*.j.jXG.=XiX>XfXf p...[Xh.,XIXI.r.8.r.rXjXj.b.o.^.o.o.^Xz ~ e.b.^.^ ~ ~ F.rXt", +".R 7.X }X*.8 ~.`.`XD 'XK kXJ xXDXGXq v b.j $ T.HX9X9Xo.K.^.uX* 5 5 ].z.XXdXV.k.rX*.k.z.A 5 )Xo.rXd e.rXt.8.8XIX1X-.8.a.r :XVX*X3.5.&.K N.X N.b.o N.X.^X*Xt.8.rX*.rX*XVX*X*.K 3.kXJ #.|XX ).u.5 ]X@.&.(.& PX@ Z.z.tXg.7 d Z.tX&.I.&X@ ZX X&.I.&./.7 d.&X X .&.A.&.t ].AX@.&.RXtXtXtXj.^ N.X.b.b.o.bXgXg.b.c.cXg.c.cXk.c.U.c.c.U.U.#.U.U.U.#. .6 i i. .U.c.c.c. .c.c.c.c.cXk.c.c.c.c.cXgXg.o.bXz.o.b.bXz.b.b.b.b.X.o.X.oXk.b.X N.k.r ~XI.`.5X3XJXc DXUXwXHXwX7.-XBX7 kXBXBXp ^.) ..s.)Xn.E = n.-XJ $.ZXc h x.j._X+.[ XM.l :XH `XI.HXI.e R < # #XXX7X7.pX+ p._ .Xp.jXP.w.9.'.>.> =.O.>XwXw =XUXU.j y o s s s v sXmXP v.nXLXcXU.-.9 yXs M.YXa.9Xc : $ $ ` #Xl xXlXl.MXe.NXi.4X>.CXn._ t.MX,.2XK R a aXKXKXM.e a.e c D $ RX1 R 8Xl $ : a R.u #.a #X, UXpXnX>X0.j.'X..ZXJXcX. :XKXwXwXU.wXsXK b.j nXw =.Y hXM $ c.}Xl.u cX5.k.5X9.kXx N.c.XXj.X.r.r 3 ~.rXVXV.8.`.uXXX9.uX9 )Xk q.I A.z i.o.I.U q.IXk q.z.o.oXz.b _.b _ _ _ _ _.bXz _.b.b _.b _Xz.o _Xz _.b.b.b.bXg e.rXd.r.r ~.8.8 5./ } ) TXO 4XO.2XJ `X5XI 3X-X1 8.n.' YX. : I I 5.&.%.& 5 5 f 5 q.X.fXtXt.rXd.rXtXtXtXtXjXt.rX*Xx qX9XxXX ).K.`X9.r.8 ~XxXg.XXjXjXt ~.8.8.` ~ 3.8XX } Y.G : $XI.u cX5X-.,X. =.! oXr._.1XhX= ^.CX6XA.FXq.FX+XZXKX1.`.K.` ~.k ~Xj.b.b.b.o.z.XXz.^ F e.k.r F F.8 F.r", +" ].t.AXg.k.r.` 3.8X1 B g.O.O.iXD CXL.).s s B ~.8.`XV.8 FXd.k.r.5.5Xo 4 A Q.K #.rXt.kXt.k |.R.R.X.r.k.r.8XI.DXl.9 c.`X- 3.}.uXX.KX3X9 3.k.kXt.kXtXj.^XtXt ~.8 ~.uX* ~.k.uXV 3XV 3 c.u c.u.H.k.k.k.XXk.XXk.zXk NXkXkX9Xk./.U./.zXg.IXk.I././.z.z.zXk.z q.zXkXk.I q.z.z.z.XXxX9XtXtX*Xj.k.^Xz.b.o.b.bXg.o N.o.oXg.U.c.c.c.c.c.c.c.U.U.#.U.U.U.U.U.U.U.U.c.c.c.c. .c.c.cXg.c.c.U.c.c.c l.c.cXgXg.o.b.b.b.b.b.X.b.b.o.b.bXgXxXz.X.bXd.k ~.`.`XX., mX.XwXUXwXUXr [X7.g.[.[X<.[X> JXi.s % ^.@.s &.9.'XK m.,XK y.jXr &X%.gXM m k $.eXc.2 : R a a.i #.l.lXBX+.x SXnXnXw =.WXL B C t.w x '.9 s.n 1.n.j.!.n 9.9.w 8.w.'.wXa.nXaXa.!.j., =.T yXnXK C.-XlXKXJ `XK.9XK 1XKXwXD.N.N OXi H ^XnXq.M.M.Z.M a R R t.e.e t R.~ a B.e.~ RX,.e.a.M.e BX1.~ $X-.a a hXqXp.@XC y y.nXl.D BX, $ RX, tXl xXD.n.9XKXw.> MX#XH.- DX3 } D.5.|.0.$ T ) 5Xg NXg.k.r.rX9 3XV.`XI.uX*Xt.8XV.}.a.`.` 3.r.r.^Xz.b.b.o.^.o.^ N.X N.o.oXz.b.bXz.bXzXz _ _.b _ _ _.b _.b.b.o _.b _.b.b.o.b.o.b.XXg.^Xj.rXt.r.` ~ ~.5.R ( D.5.R g Y.0X.XD.e.e :X- B.D s 'XcX5XI.u.K.kXoXo.k.k.k.k.k.k.kXx ~XtXtXt.rXt.r e.r.rXt.rXt.k.k.r.u.rXV.r.8XX.r.8.r.^Xg.^.r.r.rXt ~.8.`.` ~X9 ) | } YX. DXJ DXJXJ 3X3X5.O yXC.YX+ v = ^X6Xf ..mX4 EXe.[.[XK BXIXVXI F ~.k e.^.b.b.oXkXgXd F.`.K.r ~ ~.` F.8.8", +" 5 (.k.XX9.X.k ~.8XI ].' Y.2 $ x U.sXe.s.wX1.~ ~ 3.8.8.rXt.HX* 5X3Xt.k.X.2 I I :.k.k.rX*X*.KXx Y )X5.8 RX-XlXl :.5.aXI.,X9 3 hXV.`.K.k.8Xo.^ ~ ~.rXt.r ~.`.8.r ~.`XVX-Xx.KX3 :., D ) 5XXXJXo.fXx.&.X.X.XXgX9Xg N.b.o.o.oXk.c.U.c.U.cXgXk.UXk.X.o.^ N.b.b N.bX9.X N N NXjXtXjXtX*XtXtXj eXj.^.b.b.bXk.V.b.b.o.oXgXk.c.c.c.U.c.c.U.U.U.U.U.c.U.c.U.c.c.c.c.c l. .c l.c.c.c.c.c.c.cXg.cXg.c.c lXg l.oXg.X.o.X.b.b.X.o.X.XXg.X.b.X.XXVXd.H 3X5.2XJ.] T.! s s.jXwXpX+.- z MXr H S w 0.@.@.;Xi bXs C.eXD.e.*.).N.).s.YXB kXlXKX-.a ` I $.a a a.}.} # # xXpXnX4 M..XZ.jXP.9.' xXl x sXJ 8XDXs.nXK YXK =XOXUXcXl RXDX,.ZXsXDXLXL.9Xw n = v.N.* R tXIXM aX- <.e R.eXD a.* 8.) 2 2.@X2XnXp U U h.ZXc.Z a a RX5.e.e.e.a.e RX- BXD R :X5X,.Z $.D c.~X- a $XpXn H HXGXG.Z.Z $X1XD ' x x.DXG $.M x s.YX..j.,Xh ]., ) D I : IXo D 5XoX9./.k.b.k ~XVXD cXIX5Xl.H.H.k.`.H.`.`.8 3.u.r.rXtXj.b.o.b.b.o.bXz.b.b.b.b.b.b.o.b _.b _ _ _.b _.b _ _.o.b.o.b.bXz _.o.o.b.b.b.b.o.bXg.XXtXtXdXt ~.r.`.8 ~XVXxXIX1 B g TX5.w B R 3XI B.Z.n.0 D.DX-.H.r.u.uXdXd.kXd.r.r.r.rXt.rXtXtXt e.rXtXjXtXtXdXtXtXtXoX*.uXt.u.u ~ ~.r.8X*XtXk.X eXdXt.r.8.8.8.`.~ ~ # I.,.]X,XI R.8 R.`.`X-.aXl.0XL.= 2 G.@.4 0.C.@.y._._Xp 1 1.Z.uXI.k.H.uXo.X N.XXoXkXdXg.X.r.r.`.k.r ~.r.` ~.8 F", +".u.X.r N.^X9Xx.5 ( DXJ.DXl.9.w hXe.s 2XG hX-X* ~.r.uXVXdXt.r.k q V )X9.XXt D 5 f q ( qXo 3 3XV.KXJ :.9Xl.9 1 DX3.aXI 3.$XX.aXIX*X5XV.8.HXo.r.` F ~.r.r.k ~.`.`.8 ~.` ~ 3.u ) `X3 5 VXl ) ).R D q.&Xk.o.X.^.b NXg.b.o.b.b.oXgXk.cXkXk.cXk.UXg.b.bXg.b N.oX9.b.b.X.o.X.b N.kXt eX*XjXtX*XjXt e.^.XXzXk.o.b.b.b.b.o.cXg.c.c.c.U l.c.c.c.c.c.c.c.U.U.c.U.c l.c.c. .c.c.c.c l.c.c.c.c.c.cXg.c.UXg.QXu dXu.t d.t.t d Q A A.z ] X d A A ]Xo.2.uXxXJX. @Xy.G.>.q.jXr.Y..; & M w.;XfX0 o 0.N.W t h <.M.N 2 bX>.g .SX3 x `.-.a.aXD aXD h h h 3 # 1 .Y ..sXn.j.>X;XO.].0Xc T TX1 R R RX1Xl.0 ' s.' 'XM x c R B RX-X1.*.N.n 9Xw.j J G.= C XB .[.gX3.-XH [XM.lXM # #.l.i.lXM x `.YXr J.. 2.EX0 T.w 8X-.e a.e t R BX-XD $ R.a.e R.MX1XIX-X- R.e.eX- 8Xs.nXP n.- o /.N.*.* a aX-X- R R a R BXDX-.eXD C / /.v w.@.jXp xXs R.a.ZXl.Z : $ sX1.e a BX-X-.eXD a.aX-.aX-.a.e c.e t.aXp.Y.Y & JXa.W R $ DXcXK nXUXK.j TXU.nX. !XH m.[.>.G.OXJ.].]Xx 5X5X9XoXl.2X9XI 3X1XIXD.w vXG v OXm.0 :XVXd.kXo.^XtXk.^.kXj ~Xj.b.b.b.bXz.b.b.o.bXz.b.bXz.bXzXz.b _.b _.o.b.b.b.b.b.b _ _ _ _.X.Q.Q.R A.&X@.I.R.&.AX@ 5 D qX9XV.`.8 3 ~Xt.k.HXIX1 g ' '.ZX1X- 3XDXD.' TXJ.ZX1.`.H.r.rXtXd.rXt e ~Xt.r e ~ eXtXj e e.r e.rXtXt eXtXtXo.rXtX*XdXV.`.8.`.rXtXt.^.I.k e.rXt F.`XV.`.`X9X9., m.u RXI.e.`.`.`.~.`.8 B.Z.w ' O O.@.y >._._X+X<.T I.,X- k cXJ.$XlXo.& 5.$ q 5.I 5.KXtX5.`.` ~XVX* F 3.8 ~.8", +".uX9.k.kXoXk PX@ fX* ~.`X1.u gXw.j.j vXGXD.` ~X*X*Xt.rXdXt.r.k.KX*X*.K q } 5 q cXdXo.R mXXXDXD.9 v.Y.j zXZ kXM aX-XMX3 k V VXJXc 3XI.8.8.8.8X-X-.`.8.8.8 ~.`.8.`.`.8.`.8XIXJ I #.5.].K cXV 5.5 fXkXk.X.z.o.b.oXz.o.bXg.b.b.o.b.b.b.o.b.o.cXg.o.bXz.b.o.o.b.b.b.b.b.o.o.b.b N N.^XjXtXtXjXt eXtXj.X.U.b.X.b.b.b.b _.b.b.VXg.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c l.I.V.c.c.U.c.c.c.c.cXgXg.c.oXgXg.c.z.U.z.z.U l lXx.U.XXx.X.zXx.o.X.XXo.k.8XV.8XlXx T.2 ! = y.j.EX>X+XG vXn.j M.Y.EXr W.x W.x w.s.sXe t U GX=.=XpX7X7X#., `.[XH .F #.l.l.iXB XB :Xq gXGXG z.v 2 w.q y.n R B RX-XI.~ a R.e.eXc $.uXlX5X5.} 3 R.e.~.aXI.~.Z.wXLXU.-XK o /Xs C aX-X- R a B.a RX- RXI aXD 8 8 / G.v.B.;X>XqXq <.a R.eX,.e.*.e.e R R.eX-.eX- aXI a a aX-XIX-XIXD.a R 1XGX> &X0 9 v.Z RXDX,., :.9Xq x 1 $XwXlXOXKXK =XcXw.>XcXU D ) D q ( 5.2XJ T.9XD.Z.Z s s vXe v 2 2 JXJX3 m.R (X@.A.(.tXg.bXz eXj.b.b.b.oXz.bXz _.bXz.bXz.b.b.b.oXz.o _.b _.b.b.b.b.b _ _XzXzXz.c.6.f.tX@X@X@.f.&.& 5.AXx.$ qXV.8.`.8 ~.8.u.r.H.HX1.XXPXa s RX- RXI $ T.] !X5.H.`.`.H.rXd.kXtXdXtXt N.XXx.b.X.^ ~.rXdXt.r eXtXtXt.r.r.X.rXt.r.r.r ~.X ~XV.rXt.kXk.bXtXtXt.8.8 ~.8.`.5 : I.2XI.H 3.`X-.`.` F.~.~XIXI $ ' sXmX4..FX+ [ : 3 3X-X-.}XIXVXV.`XVXt.r.k N 3.r ~XxX9 ( ) D q.$X3XV.H.8.8", +"X*XxX*X9 P.RXk.k.o.X.r 3.~ 'XUXPX0XwXmXK $ 3.`.k.r.r.r.rXtXd.KXt.K.8X*.r.k.A 5 Q.].uXI TXw K.9._XnX>X4XwXhX#XB ., VXX kX3XX V `.8.a.8X-.8.8.8X*X-X-.k VX* a.aX-X-X-.` R.$ : mXH ).KXx I I.u.f.| Q X QX .o.X _.b _.b _.b.b.b.b.b.o N.bXg.c.b.b.o.b.b.b.o _.o.b.o.b.b.b N.o.b.b N.^X*XjXtXtXtXt.^.U N.b.b.b.o N.b.b.b.b.o.o.oXg.c.c.cXg.c.c.c.U.cXk.c.c l l.#Xg.c.c l.c.c.c.c.c.c.c.c.c.c.c.cXgXg.cXgXk.cXg lXx.b.oXgXx.b.bXo.bXVXd.8.8.8X*., c ` m gXc.p.Y.j.< v h._ 'XeXp.Y.[.pXB >.xX6Xb.. * * G / 2.v.jXB.[.[.iX.XH n.jXB.[XBXBXB.[X7.[X+ g.Y v.sXC . 2 ^Xm s.]XD B.a BX-X- R a kXD m 1 m 1 ` m.5 R R R BX- R 8.w.wXPXw .-XGXL.s t R t R.eX1.e B.a R.eXI 3.e 8.N / 2.v ^.4XfXpXp < t R.eX- B R.e B.eX-.~ aX- R.~.}X-X- aX-.eX- cX, a U 1XG yXwX0XG.nX,XDXDXD RX,X, $.a.a 1.Z $XD sXl yXOXU H v b.MXK.HXV.`.uXVXDXD s v v vXL.WXa.N.s.sX= 0 $.}.r.uXo.R e.bXgXzXz.b.^ eXjXjXz.o.o.bXzXz.o.b.bXz.b.b.b.oXzXz _.b.b.b.o.b.b.b.b.b _ _.bXz.o.oXz.bXgX9XgX9.X.$ N.rX*.k ~ 3.8.8 ~.r.r.kXt.u.8.DXO.nX5X1.a RX- h.wXl.] 'Xo.D.r : q 5 NXtXt.r e.X.z.I.z.z.bXt eXtXj.r.rXt.rXtXt.r NXd.rXtXt ~.` ~ ~.`.r.rXtXg.XXt.r.r.8 F.~.`.8.k.u ] g.D.~XI.`.8.~.`.` F.`XI.`X1 T $XqX+.FX7XBX% x k.Z D ].]X3 3XV.K.K.5 N.5X9Xk.f.zX9.5Xk | )XX.$ 5 q I.r.k.r.k", +"X9 , ( PXxXdXtXtXtXk.k.8XIXV g.0 sXm.qXU.'X1 ~.r.k.rXt.k.r.r N.KXV q.rX*.kX9.kXk D.$ '.Z 1 y v.s.s.sX+ M.[X< 6 VXXXX V VXX X7X3X3 a 3X*XVX*.8.`.8.`.}X*XXX*X*X9.5.5.KX. } :.e c cX1X*XI.k.kXt.5.XXxXoXx.X.X.^.XXz.XXz.^.X.b N.X.b.b.o.bXg.o.b.b.b.b.o.b.o.b.o.b.o.b.o.b.o.o N.X.X.X NXjXtX*XjXt.rXg N.o N.b.X.b.o.bXz.bXz.b.o.o.cXg.c.c.c.c.cXg.U.c.cXg.c.U.Q.c.c.c l.c.c.c.c.c.U.cXg.U.cXg.c.c.cXgXgXgXgXkXgXg.b.b.X.o N.b N.b.k.r.8.8.a.`XV 3XIXcXc nXw M.<.YX% $.1.[.T k.d.S.F >..pX+X+ n.jXwXL.n.) CXv.) O H.n.' $X1 R.aXI RXD RXI.Z.aX, cX1XD $X, RXDX-XDX1 RXD.wXGXwXcXB.g &Xn.W.w t.eX- BX- R R R a.~ h.a t.N.N 2X6 wXf.C.CXnXpXq a a R.eX-.eX- aX- a BX-.~ aX-XD.eX- aX-X-XI.u a R sXp.Y & & & b.wXD.ZXD.aX,X, XD.}.a x.9 $ 8.w.n v.n y.4X=Xn v t.M.a 3.,X.Xw.-X0.E.@X>Xm.W.N.).).)Xv b.}.8 3 FXdXdXoXz.b.oXz.o.^ eXjXj e.^.bXz e.^Xz.b.o.b.b.b.b.oXz.b.b.b.b.o.b.o.b.b _ _.b _.b.b.b.b.b.X NXgX@.$ qX q qX*Xt 3.8 ~.` N.r.r.r.kXd.k.`.].0Xa.w B aXD T.0 4Xy.].2 (XJ )Xx I N.k.kXt.kXj.kXj.k.^XjXd NXt.k.kXo.^Xt.^Xo.^.XXoXo NXo.^.kXtX*X*.k N.^././ N N NX*.k.K.kXVXxXJ.%.|.ZX5.5.rXV.K.u.H.k.uX*.8.`Xt hX,.iX+XqX7XB h.2.5Xx ) : :X-.8.8X* ~.uXt.rXkX9 N.8.r.rX*.8.u.8XV ~ ~.8.8.8.8", +" 7 } qX9XtXtXtXdXt.k NX*.H.0 g.2.9.j.OXOXO.HXI.HXtXt.r.r.r ~.5.k ) P q.rXt.r.r.rXV )XJ.1 vXa.).) /XfXr n ` V., VXX.lXMXB hX, ` V kX3 |X#., |X*.a.`.8X-.KXXXJ., VXX.KXI | } DX3 D ).0Xx : (.$X9 (Xo 5.uXx (Xx d.z.z.t.Q.RX@Xg.R.o.I.z./.bXk.o N.o.b.o.o.o.o.b.o.b.o.o.b.b.b.b.o.b N.X.b.kXjXtXjXtXt.bXj.^Xz.b.b.b.b.b.o.bXz.b _.b _Xg.c l.cXg.c.c.c.U.V.cXg l.I l.c.c.c.c.c.c.c.cXg.c.c.c.c.cXgXg.c.c.c.c.o.o.oXg.X.bXg.X.o N N NXtXV.8.r.`.`.}.`.a 3 1Xw.1 M.p.+.+X+.h n =.O.YXHX+.pX:X> wXf ^X= 2 O O 0.v.jXZ kXM x VXc.j . ..s.. .Xn.4.@.@XCXm v.v.N.4.s.)Xi.j.'XUX, 8 Y $ :X, D.MXKXK.aXc.,.} ` kXc.eXw 8X,XH.*.w.w.' [ n.[X#.hX+ y.jXc g s : :X- R.e.a aX, R.N.d.) 0Xf.v.BX6 wXfXn.F.M aX1X1.~.~X-X-X-.e aX- a.~.aX,.eX- R BX-X1 3 < X+.x W.pX+.YX+X+X+ >.i.dXG J w HXC.v.sXC H 0 9.; [.- xXl 1 1.-XnXbXbX=.s .Xb..X> & o O 2 G GXFX= bXC ' 'XDXD :X. 1XDXK h ` :.M.9.9.aXXXH s.eX. aXc.3.nXe sX+XwXpXc.1 =X0 M.wXGXlXcXc : a.a.a.*XDX, <.NX=.vXiX6.B.B.BXfX8X4Xp x 3 B 3 3X-X-X-X-X-XI.~.a R BX,XDX-X1XIX1 c c.a U 1XpXmX0 &XmXU.'Xw.Z `.0 1 1.9 h hX,XlXKXlXD.ZXDXaXG TX0X> 0 0 b b J.vXL..Xn.W._ v U hXs.Z U.d v v bXG hX*.k.^.X.z.U.U.U.#.U.#.zXk.UXkXk.U q.c.b./.b.bXg l.zXg.c.c.U l.c.c l.c.cXk.c.cXgXgXg.VXgXgXgXgXgXgXgX9XkXgX9 qXgXX.kX* ~ 3 ~.r.$.z I.R.R (.R.] )Xy '.nXDXDXPXU ! 'X1 B TXDXM a q.| ).kX*.k.r.rXtXt.rXtXt.rXtXt.rXtXt.rXtXtXtXt.k.^XtXt.rXt ~ ~ ~.8.8XtXt ~Xk e.r ~ ~.8.8 F.`.8.D.RXO.0.H '.`XV.K.8.5Xd.r.`.r.8X*X- a c.FXeXq.Y.~.`.`.`.` RX-.`.` F.k.r.rXk F ~ F F FX* ~XV ~.8.` ~.r ~.8.rXt ~", +".K.kX*.r ~Xt.r.r.r ~XtXx.] ) 4 Y m.2XyXO.! !.nX1.8X*X*X*.5 ) Y (XxX1 ~ 3 ~.K.r.uXV.aXl vXe.=XvX=X= 0.1X+XJ.K.aX*.,XXXB X, U .-.-.,X..SX#X. |Xh.%.,X3 XB.- X3XJ 5XX #.u 3 3 c.K cX*X5.5.5.XX9.5X9.5X9.X.5.z.5XkXk q q.z./ q.I q.z.IXg./XkXk.UXk.U.U.U.U.U.z.U.z.U.z.U.U.z.U.U.z.z.U.X.b NX9 N.X.z N.X N.oXk.U.U.UXk.U.z.U l.#.U.#.#.I.I. . .I.I. .I.I. AX@.Q. . .Q. . .I. . .I. .I.I.I.I.I.I.I.I.Q.Q.z l l l.z l.Q.z.z l lXx.X (X9.u c.H.u.uXl.u h s n.j.jX: rX:X:X:X: M MX+.p UX> w &.>.>.qX0 HX0 & &XU [X;XcXw.-XwX<.x . .._XnXn ^...@ & H &.E 0.;Xi 0 JX0XPXc.nX, 'X5 x x.9.Z.9 y h.9XK x x x.j $XK $XM $.j.'XK.>.[ [.j.E.j HXG s xXDXD.Z h.MX, U 1.WXL.s.v {.@ w L.B {.PXfX8.jX+ h.aXD 3 3 3 3X, hX-Xc c T 3.]XI.0XD $.uXl.a.}.WXpXp.;.q y.'.nXU.O 1XKXHXw.,XD h.Z.M.- n T.ZXD R.a x v o.q 9 0 /.= 2X=.).) u.) UX1 RX1 RX- a <.W.NXL.Z a ~ ~ ~.^.bXz.b.^XzXzXzXzXz.^ NXz N.^.r l.^.o e.rXj.^Xz.o N.bXz.b.b.b.b.bXz.b.b.b _.b.b _.bXzXz.b.b.b.b N N N.z N.b NX*.r ~.8.8 F ~Xt.r.r ~.r.rX1 T TX5.wX5.nX5 gX1X1.`.3XJXB } V q 5.R P.kXt.k.rXt e.rXtXt.rXtXtXt.r eXtXt.r.rXo.^.rXtX*Xt.8.8.8.H.8 F eXt eXt.k ~.8 ~ FXI.`.`.k.2XO.0.]X5.8X5X*Xt.~.`.`.kX-.8.`.8X* 3.9 vXn $XI.`.~.`.~.`.`.~ ~.`Xd.8.r NXk.` F.` ~.HXd.`.8.H ~.r.r.r.8 ~.r.`", +"X9.r.r.u.rXoXxXd.K )Xt ).&XJXoX5X1.%XOX$.O.> ! x.Z cXXXH.% T ) D.%.]XKXIXIXVXtXV R.a v xXL.s.)XF.s.x n `X3XM.}.} V `XB xXe.MXM 3XM x # xXlXwX#X.XHXHXc V 1 $XX XJX3.$., #.`.` 3 3XIXI ~.u.kX*.rX*X*.rXt.uXtX*.r.kXj N N.X N N.^.b N.b N.U N.b.b.b N.b N.b N.b.b.b.bXz.bXz.b.b.bXz N NXjX*.rXt.rXt NXtXt eXtXj.^ N.b N.b.b.bXz.b.bXzXz.b.b _.o.o.o.o.b.o.o l.QXg.VXgXgXgXg.c.cXkXgXg.c.c.c.cXg.o lXg.X _.b.b.b.b.bXz l.XXz.bXo e.K (Xl ).5 )X5 :XJX,XK 1 $ M zXpX8.<..)XpXGXCXm b y 9XL v yXqXG yXUXw.2.jXwXrXpXb.).d.d p.).) ^ H JXC b 2 ^ / OXCXCXa.] R R.e a.e R.* R a.*.a <.e < aXD RXD a a.aXDXa.n yXw y.Y v v.. OXpXsXs t R a h R hXL u.NX= /Xv.vXfXiXbXF - -X=.{.xXnXpX, aX-X- R 3.aXIXIXD :Xc `XJ.,X.Xc D 5.0X5 a a EX4Xn H y o s R gXJX..jXJ.9.>X, U $.a n @ m., T kXK.9.w.nXCXC O O 0.@.@Xb p.W EXDXD.DX1 3.a a.*.WXaXL.ZXIXV F ~Xz.b.b.b.b _.b.b.o.b.b.bXg.b.o.^ e.^Xj.k e e.^.^.b.b.b.b.b.b _.b.o.b.b.b _.o _ _.o _ _.o.b.o.b.o.b.b.b.z.b.X.^Xj.k.r.r.8 ~.r.r.k.k.kXtXV.8.KXP.n ' $ 'XP.2 $XVX-.'.- h 3X*.k.KXo.k.r.r.rXtXtXtXtXtXtXtXjXt eXtXt.r.rX*Xt.kX* ~.r ~.r.H.8.r.` ~XtXt.k.z N ~ F.8.` F.`.~Xx (XP !XO.2X-.K ~Xx.uX9.K.KX9.K.5X9X*.` 1XG.}X-X-.~.`.`X-X-.`.~ F.`Xt ~ F.`Xt F ~.H.r.k.k.H.`XV.r F.8Xt.r.r ~.`", +" NX*X*.r.H.$.R.|.f 5.kX9Xt cX9 : ).0X5 @Xy.>.E nXq.3.YXc h x mX..G.O =.,Xw VXJ V.1Xw.>.WXeXL.s /Xi.;XrXcXBXJ.a c.[XMXB.Y h.Z $.M aXDXD.MX- tX,.9 1.3XHXcXHX3 k $XXXX )XX 5XM.` 3.8.` ~ 3.rXt.u.k.rXt.rX*X*Xt.r.k.`X9Xt.^.^.o.^.o N.o.X N.U.b.XXz.b.b.b.b.b.o.X.o.b.X.o.b.b.b.o.b.b.o.b NXjXtXtXj.r.X.rXjXtXtXjXj.^.b.b.b.b.bXz.b.b.b.b.b.b.b.b.b.bXz.b.b.bXg lXg.c l.c.cXg l.c.c.c.cXg.cXg.cXg.cXg _ _.bXz.b _.b.bXo l.X.b.b.bXdXo 5Xx.|XJX@.2 D f.].uXH $.1XZ..M.'XcXl sXD $ h :.- '.!XOXC.! J w.@ z.y.EXw = 1 TXJXJ.a.e.aXsXs sXDXI ~ ~.^.bXz.o.b.b.b.bXz.b.bXz.b.b.^.b.b.^.^XuXgXt.r.^Xj.^ N.o N.b.b.b.b.b _ _.b.b.bXz.b.o.b.b _ _ _.b.b.o.b.bXg.o.b.bXtXt.r.r.H.rXt.rXt.rXt.r.rXVXVXU.0.n.n g.].HX1XI #Xc xXB U.a.`.uXt.k.HXtXt e e.rXt.r.rXt.r.r.r.r eXt.rXt.^Xk qXk )Xx )X9.uXx.u ~.r ~.r.r N N ~.8 ~ F.8.8.~X5 gXP 4XPXO.H.u ~X-.k.r ~.r.r.8.8.8 3.~ `X5 a.aXX.8.`X-.`.`.`.`.` ~.r ).r ~.`.` FX5.R.$.| (.$.R 5.k ~ ~.rXV.8.8", +"X9Xt.r.r.u.K 5X9.K.r.KXx 3 q ,Xx | ) :.0XwXw.xXZ = [XG v yX0X.XHX..- o z 1 x `Xl.E.9.EXsXs.Z.s.....x M [ V.[ # VXB.-.,._X, h a.u R.a.aX-.aX- a.a R.a.a 3 `.lX3 3 #X3XX V.,X3.` 3.8X-.8.8.8.u.rX*.r.kXt.r.kXt.uX* ) q.X.r.b.X.b.X.b.bXz.b.U.b.o.b.b.b.b.b.b.b.b.b.X.o.b.b.b.o _ _.b.b NXzXjXt.r.kXt N.rXtXtXtXtXtXjXz N.b.b.b.b.b.b.b.b _.o.b _.b.b.b.b.b.b.o l.b.oXg.cXg.c l.cXgXgXg.o.b.o.oXgXgXz.b _Xz.b.bXzXoXzXzXg.o.bXo.bXd.r.k.k.r.H.H.D.H F.8X1.K R.9 n.gX4XA._._ .Xf MXp.pXG >XGX+.qXG.9Xa.w v.'Xc.9XG.!XU.'XaXL.;.@.s p U $ CXe *.@ & =XZXm 0 2 O 9.q oXO.KXlXI.~X1.~.a RX,XJX, T $ :Xs.Z 1 $.aXD.u R.w.w g.>.-.-., yXGXLX=XeXL.w R t t U v v.v ^XiXiXi.@ ^.v pXF u.)..X>.C.;X2Xr [.W.9X,X,X, T $ xXI cXl $XI.u.uX- c.e.` aX, x._X4X4 H H.n.nXlX;XK.9XcXwXl TXeX.XH $X,.9 t R R 8.}XD.Z yXUXC.>.>.qXmXn O 2 p.@.MXG.M B t t [.YXX V.[.S.1Xr.O 1XlX5Xl ` cX-X- aX- R aX-.aX-.a a a a < a #X3 V.fX3.` 3.8.8.`.`.8.rX*.r.k.rXt.r.r.kXx QXxX* ~Xd e.^XzXz.b.bXz.b.U NXz.o.b.b.b.b.b.b.o.b.b.b.o.b.o.b.o.b _.oXz N.kXtXtXt.k N.r.kXtXt eXt eXjXz.b N.b.b.bXzXz.b.b.b.b.b.b.o.b _.o.bXg.o.bXz.b.o.o.oXgXg.V.o.b.b.b.b.b _.b.b _.bXz.b.bXzXz.b.bXg.X.bXz.b N.b.K.r.kXVXV FXdXV.H.8XI 3 a #.Y x E....XqXp.xX+.x >.@ J.E.;X+.9 s s.DXl.9 1XOXPXw `.nXLXCX>Xi.s.M x U.W / o H y &.jXC H oXC s.n.5.Z.u c cX-X-XIX- :XHXKXwXUXw.,XJXc.%X5X, R.w.n sXm m XM 1.[ yXn.=.W.W C t t CXa 2X= w ^Xf w wXi.v.).) U t.s ..4X8X>X>Xn [X< 1 1XJXD 1XlXKXlXcXl 3.e.u c.` ~X-.~ R $X+XpX4XnX>.q sXa.2.2XJ.O n.OXw YXD.9 # h $XM aX1X,X,Xe.w.w._ g.j.'.j.q & H J v.s /.) /.).W.W.* t C GXLXl RXV.r.^.b.b.o.b _.b.b.bXz _.b _XzXz.o.bXz.bXjXj.I q NXj.rXj.^ N.o.b.o.b _ _.b _.b.bXz.o.bXz.oXgXz _.b.o.bXzXz.b.c.o.b _XdXtXt.r.r.r.HXtXtXt.k.r.8.8.K.'XyXP.0.0.~.`.8.8 hXc E.F.<.u.8 F.u.r.r.r e e.r e e e.r.r eXt.rXt e.rXtXt.kXtXxXo.5.5.k.uXo 3.u.r.8 ~.rXj.X N F ~.`.8 F.` F.u mXO 'Xy.! m.8X-X-.`.`.`.`.~.`.`.~.` B.`.~.8X-.`X-.` a.`.`.`.~.` ~ ~.$.r.8.` F.8.8 ~ 3.k.8.8.8.`.8Xt.rXV.8.8.5", +".5.uXtX9Xx.$ I.| D ( ) (Xk.kX* ~X*XI.H.K.9XwXp.@Xq...j.;.+.TXG a.MXnX>Xf.jXp._Xq 2.).= C.e h CXqXF..Xp zX7XM XBX.@XpXn h t RX-.~X- B.}XKX, R a 3 c.u.`.~X-XD xXGXrX+X>X> H.n.0Xl.n x x.wXK.Z.w.aXl h $XDX,X, $Xe.Z.w.w.Z.W $.j.9 9.' 9Xm.qXC o 0 2X=.= /.N.WXw.jXG 9.a.8.r.r.b _.b _.^.o.b.b _.b _ _.b _ _.^.o.bXz.^ e.^.kXj.^.k eXj.oXz.b.b.b.b.b _ _XzXzXg./ i. .6.#Xz _ _Xz _.o _Xz.c.o _.b.^Xj.k.k.^Xt.rXt.r.rXgXx )X9 IXJXPXO gX5.`.`.rXI 3.-Xe EX4XMX-.`X*.r eXd.r e e eXt.r eXtXt eXt.r.rXtXt.uXt.k 5.$.5XJ.$., 5 q.5 ~.k FXt.rXkXx.r.8 F.8.8 ~.`.r D.0XOXPXP.| c.`.`X-.`X-.`.~.`.`.~.`.`.~.`.~.`X-X-X-.`.`.~.~.`.X.K.8 ~.8.` ~.8.`.8 ~.r.r ~.8.8 FXt.r.8XV.8.`X*", +"X9.r.k.$X5 I ) q.$Xo.K.r.rX*Xt.rX* ~.8.`.`Xc.wXc.xXr M M W xX,.a R.M.CXfXCX>XGXnX=.) 8 aXD R.M.w *.s ^X0.[Xp VXc x.ZX,X,.~XIX-X-XIXIX-.a.` R B RX-.a aX- 3XV.u.K.8 3XM # VX7 V.gXB.}XIX1X-.8.` ~.8 ~X*.k qXk.r.8 F F.H F ~Xd.^.^ lXk.^.o l.b.b.b.b _.o.bXz.b.o N.b.b.o.b.o.o.o.b.b _.b.o.b.b.b N.bXg.kXjXt e e eXjXjXz N.b.o N.o.b.bXz.b.o.b N.b.b.b.b.b.bXg.o.b.b.bXz.bXz.b.b.b.bXz.b.b.b.b.b.b _.bXz.b.b.b.^Xd.b.^Xx.b.bXz _ N.b ).&.&.f Q.&.|.R 5 I.2 V T :.GXc UXe.m.m ..x.x.xX4.{X>X2 &.+.j ' 1.w 3Xl :.ZXl.5 s.9 yXG &.@ 0 x 8Xe xXsXmX>X0.+ y 0 ^XC 9Xa.D t R.5Xl :.8XIX*.`.a.~.aX1XD RXD R c $X- R.Z.w.9 ! n TXMXMXM.l 1Xr v.s.N.=.N.N /X6.v LXf.PX=Xi p.E s.YXmXUXw y.+ J.sX6.@.4X> .Xn U tX- aX-.`.H.e.e t tX,X, #.`.eX-.} xXpX> H H & y.'.9 8XDX, hXDXG $.}XD $XDX,X1XlX, 1 $.w $.ZXeX,.wX, sXl.nXGXa s 9XC H o 0 0 0 O /X+ =XL 1XI.8.r.^.bXz.V.o _ _.c.cXk.b _.b _.bXz.o.o N.b.^ eXt lXk.^ eXjXtXj.b.b.o.b.b.b _.o _.b.o.c.U.U.U.c.o.b _ _.b _ _.bXgXg.^.o.^XtXd.k.u.u.uXoXx q I QXx (X*XVX- cXV.`.` F.8.8X* `.i pXq.Y.}XI ~XtXtXj e ~ e.r.rXt eXt eXt.r e.r.rXtXtXtX* 5.$.$X3 q V D ) : FXt F.r.r.^X9.r.`.8 F F.8 ~.`.5XoXPXOXP.2.0.~.`.`X-.`X-.`.`.~.`.~.`X-.`.`X-X-X-.`.`.~.`.`Xt.`.5.8Xt.8.`.8.`.8 ~ ~XV ~.8.8.8Xt ~.rXt F F.`XV", +".kX* 3 I q N.5XtXt.rXtX*X*.rX*.r.8 F.8.r ~.`XI.a sX+ MXpXc.WX,X-X1X,Xp.@ wXC.;.. pXe B.D.ZXI.} hXs 2Xn.;.[X7 k.i $ UX5 cX, cX, c h :.aX1XDX1X1XI 3X-XM : cX-XV #.~X-XM.FXM.F >X%.lXc.a RXI R.`.` ~XV.5 IX* F.8.8 ~.8 F F.r.k.R.&.( q.XXx.z.bXz.b _Xz.b.b.b.b N.o.b.b.b.b.bXz _.o.b.b.b.b.o.b.b.b.oXk.b.b NXz.^.^Xz.^.b.b.b.bXz.b.b.b.b.b.b.b.b.b N.b.b.b.bXgXg.b.b.bXz.bXz.b.b.b.b.bXzXzXz.bXzXzXz.bXz.bXzXdXt e.^ N l.b N.b N.b.^ (.b (XxXk.RXk.z.].k.5.k $ : KXw E.m E EXn.@Xn ^Xf.@Xn W yXU ! s T cXJXc.uX3XlXKX.Xm ! H.E.@ .Xs.MXD h x.9 b.+.> & oXCXP b vXD RX-XD R 3 # c c 3XI cX1 RX-.Z R T.8 x.* R s.wXcX.XcXMXM c.a # x.Y > 0Xv.v 2X=Xi ;XfX6 {Xi p..Xs u.W.M.w.Z.w.ZXe v.. -XiX6.{.J.F.i a.eX-X-.e TXl x.M.a.a.} c.~X-.eX,XpXG.j HXC.E s.w.DXlX. $XD.O.,.ZXw :.3XVXlXK 1XJXwX..MXK.3X.XD nX5X,.9Xw 8X5XLXL.n JXm H HXC.vX= GXG.YX5X-.r.r.^.b.o.c.cXg.c.c.c.U.V.o _.o.b.b.o N.b.b.^ e e.^XtXk.r.rXj.rXz N.b.o.bXz.b _ _ _ _.b.b _.b.o.b _.b.b _.b.b.bXg.bXg.^XjXx.A.X ) ).R.| I (XxXoXt.`.H.H.`.`.`.`.` ~ ~ ~XVXc.i E._X+Xc a 3.H.^.rXj.rXt.rXtXt ~Xt e.r e.r eXt.rXt.u.rXXX9 cXVXX c cXt.H F F.`.`XtXtXt.8 F ~.8.8.8.` F.`X1XVXP !X..2 3.a.`X-.`.`.~.`.`X-.`X-.`.`.~.`X-.8.e.`.`.`.~.8Xx.^.8.r.8.` ~ F.8.`.8.8.8.8.8 ~ ~.rXt F.8.`.`.X", +"Xo.rXt.r F.r.k ~Xt.r ~Xt.r.r.r.8.8.8.8 ~.~X* $XJ $.-.jX+XKXKXDXIX1XDXp.x.@ J...s..Xe CXDXI RX,X,.N p.sX0X%.[X<.S.S 6 kX-.-XJXBX-X3 c.uX#XJXlXw.$ T $ |Xl.e.%X* 3 h 6XMXB.gX7.[._Xq XDXI.`.8.` 3 )XlX3X1 3.` 3.8.` 3 ~.r V./.f.5.X.Q ,.Q N.o.b.o.b.b _.o.b.b.o.o.b.b.oXg.b.b.b.o.b.o.b.b.b.b.b.b l.b.b.b.b.X.b.b N.b.b.b.bXz.b.b.b.o N.b.b.bXzXz.b.b.b.bXg.oXz.bXz.bXz.bXz.b.b.b.b.bXz.b.b.bXz.bXz.b.b.^Xj eXt.rXdXx.oXzXzXz lXxXgXx.XXgXxXxXo.5Xt.5.u cX- #XlXq.9.F._ E.XZX+X3 : q.&XkXdXt.r.r.u.rXtXd e.r eXtXtXt.rX*XtXVX9.$ V.$.,X3.f NXd.r FXd.` F.r.8.8.8.8 F.8.H FXI.`.8.~ c.2X.X; 'X-X1X-.~.`.~.~.`X-.`.~.`X-.`X-X-X-.`X-.` N.8 F.~.`.8.k.8.`.8.`.8 F.` F.8 F.8.r.rXt ~.8.`.`.a V", +" N.r.k.rXtXtXtXtXtX*.rXt.r.u ~.` 3.8.8XIXo ).] 1.-XD x : :XKXI.`.` R 1X4 b JX=.W p.W.DXDXDX1 3 U.M.s 0 WX<.[X7.L.-XMX#.[ # X3Xh 3 V # 3X.X1XD.] 1 #XI.% 3X1 | :.aX3XZXcXBX7XqXp._ E.l a 3XI c D TX1XVXIX1.~XIX-.` 3 # IX3.K.u 5 A Q.&.(.b.b.b.^.o.b.b.b.b.b.b NXz.b.^Xz.b.o.o _.b _.b _.b.b.bXgXg.b.b.b.b.b.b.b.X.b.b N.b.b.b.^ N.b.b.b.b.^.^.^.^ N.b NXg.o.b.b.b.b.bXz.b.b.b.b.b.b.b.b.b.b.b.b.bXz.b.^Xd.rXtXt e.X.bXz.X.c XX@ Q AX Q A f.z.7Xt ].k.%Xx : I KX<.1.lX4 J M ^.vXi.@ HX0.'.nX5 8.eX- 3X5.e R B B.D.'Xm y...).s 8 t R.}XM $.j H.> & b JXmXLXLX, a.9XJ.u xX1 g.K 'X5 cX-X-.,XlXJXUX;.> n ! !.q.G = ` `.i 3 #.l XBX+Xi ^XfXfXf 0 ^XnX=.j v.-XK 1.- $ :.-XB `.-.-.i C u p p %.CXf . vXD.* BXl.ZXIXD $X,XlX-.u.~X-.e U._Xn.@.@.EXr.E.s ' s g.'.*X. x.MXcXlX. 3.'.- TXG n xX,XlXc.Z.aXKX,X, :X5.K.~X- R.Z x v.j J.vX= H.=XL.w.u.8XtXj.b.b.c.V.c.c.c.c.c.c.oXz.oXz.b.o.b.b.b.b.^Xj e eXt NXg.^XjXj.r.^.^Xz _.b _.b.b _ _ _.o _ _.b _ _Xz.b _.b.b.o.o.oXg.b.^.r.^ ~ ~.` ~.5 P.5XtXt.r.` ~.8 ~.`.8 ~.HX*.r # $X#.TX4 >X7XHX. D )Xk A ~Xd.rXd.rXVXtXt.rXtXtXt.rXtXtXtXt.uX9X9X9.KX9.5.5 N.^.r FXx.r ~.u.r ~.8.8.8.8.`XI.8.~X-.8X-.] m TXUXlXlX1X1.`.`.`X-.`X-.`.~.`.`X-X-.`X-X-X-.5.X.`.` ~.8.u.`.H.8.8.8 F.8.`.8.8.r.r.r.r F 3.`X-X,.-", +".^.r.r eXj ~.rXt ~Xt.rX*.rXt.8.8.` 3XI qX9.% q.uX-X1.aXlXo.u.H ~ 3.H UXGXe.v.s.)XeXe.ZXDXD.DX,XD u.)XL.@ zX.@.@XfXiXi.v.B.)Xn.M.* CX1XD 3 BX, R.}.M.a < h R.a.* uXFXb.{.C.@X%X+ U R.eXl.~XIX, a RX-XIXV.~ t.*XeXpXq v.@.j y.9XGXm $XDX,.ZX5X,XDX,XD $Xl h x x $ $ h.ZX, cXD t R.eXI.~X-X-.` R.wXLXp.E 0X=Xv.s.) xXD c.r.r.^ _.c.U.V.c.V.c.c.c.o.bXz.V.b.b.b.o.b.b.bXz.k e.rXj././.k.k.r eXjXj.^.^.b.b.b.b.b _Xz _Xz _.b.o.b _.b.b.b.b _.oXg _.b.b.kXt ~ ~XX F.k.R qXt ~.^.r.r F ~.u FXVXVXx ) I.,.[Xr E .Xq 1XDXIXt.k NXd.rXdXV.k.k.k.rXd e.rXt e.rXtXtXt.r.5.rXVX*.uX*.r.k.^Xj.8Xt.H.H.H.8.8.8.8 ~.8 F F.H.`.` aX9 #Xw ! g yXU.n R.eX1.`X-.`X-.`.`.~.`X-.`X-X-.`X- ~.K.~.`.~.~Xt.`.8.`.8.8.8.8.8 F.8 ~.r.r.8.8X-.` .m >.} `.,XI.`.`.8XI.`.`.~ h.5.2.K R.u T.5 4.fX9.^ NXx.^.o.^.b N.o.b.o.^Xg.b l.b.^.b.o.b.b.b.b _.b _.b.b _.b.oXgXz.b.b.b.b.b.b.o.b.^ e eXj eXt eXt eXt.r e eXt eXt.^XzXk.X.bXz.b.b.b.b.b.b.bXzXzXzXz.b.bXz.bXzXd e eXt e.r.r.r.r N N.b.b.^.X.b.b.b.b.^.X.b N N.X.X.k.uXt.HX* 3.a $.Y.YXLXp &X0 J ^ O & 9.nXoX1X- RX- 3X-X1 RXD oX; =.+Xp MXe.j :XM.Y.Z.9 oXm.qXC 0 9Xm v $ s.w.nXlXDX, BX,X5X,.D R.* R R.w 1.>.O.G =XU.jXw nXcXc.u.}.} #.FXcX>XiX= /.B.BXb p U C a B.e RX1XIXI R.a a R < a a a.e t tXs p.PXfX2 z WXr.-Xc k :Xc D.Z $X1.eXVX1 R a a U..XpXn.@ & &.9 s TXa $.DX,.ZXDXl xX, UX,XG.wXq xX,.ZXVX, $X, R.u 3 3.~ B R $.w s H 0 2Xv.).).)XG aX5.rXj.b _.V.c.c.c.c.c.cXg _ _Xz.bXz _.b.b.o.b N.bXz.^XjXtXgXt NXgXjXt e.rXjXj.b.b.b.b _ _ _ _Xz _ _.b _.b.b.b.b.b _.o.cXz.b.b.r.r FXt.r.8.kX9.kXtXt.rXj ~XtXd.r.uXd q I.A.5.u x .i._ $XB )XJ.| (Xx e.|.X Q ) Q.r Q ~XtXtXtXtXt.rXtXtXt.k.k.kX*.r ~X*.^.XXj F.8.8.` ~.8 3 ~.8 F.8.8.`.~.`.`.~ 3 ) kXG y =.+.j.Z 3X- a.`X-.`.~.`X-.`.`.`X-.`X-.`X-.~.`.`.`X-X*.8.`.8.`.8.8.8.8.8.8 3Xt.H F FX-X-X,.Y.i", +".kXt ~XjX*.rXt.r.rXt.rXV.r.8XVXV DXX q ).rX* ~Xt.8 ~ ~.kXV.$ N qXtXo #.M.j y J u UXM RX,.Z.ZXD a <.W.) 2 v.@Xn vXi.s.j.j.F.F.l.l kX,.} R.e.eXDXD aX- RXIXVXI h.l X%.Y.FX+ > >.F.FX%.TXc.a.a 3.~X-.`XDX5Xl ( c cXI : 5 m IX9Xt.rX*XtXg.rXtXj.k e.^.^ NXx.zXx.(./.o N.b.o.b.b.o.b _.b _.b.bXzXg.c.b.o.o.b.b.b.b.b.^.^XjXt.^ N.b NXzXjXt eXtXtXd.rXdXj.^Xg.X.b N.b.b.b.b.bXz.b.b.b.b.b.b.b.b.bXz.^ eXtXtXtXtXt.r e.^Xd N _.X.bXz.X.^.b.b.^.XXz.bXx.bXx N.kXt.H.8 3XI.Z.Y.s b H.+ H 2.v &.!Xa 'XDX-X-X- 3XJXcX-.DXK.T.OX0 WX2X>Xq.- ., 1.ZXmXC.!.> b.+ !X; gXc ' '.'.' :XlX1.ZXD RX- 1.ZXc ! =.3 KX.Xc.j kXwXcX7XM.}.} h.l X+XnXb.)._Xb.j vXr.9., $ : s.ZXc.w ' sXDXJ c.,X5Xc :XlXl.- x....X:.{X2Xr.[ xX, x.} c h.a 3X- RX1X,.e R s.} t._X4Xp.E HX0 y s.'.Z.Z $.Z 1XDXD.Z $ x Xq $ xXeXI.ZXK $ TXK `X- 3 RX-.ZXL OXC 0.v.).; 2 *XL.D RXtXt.^Xz _.V.U.c.c.c.c.c.oXg _.b _.b.b.b.b.b.b.b.o.b.^XjXt N.^./ NXt.rXt eXtXj.^.b.b.b.bXzXz.o.b.b _.^.b.b.b.bXz.b.b.b.U.^.b.b eXt F.8.k.8.r.f N.rXtXtXj.k.X.r.$ q.fX@XxX*.u 3XM.Y.i x : # q.A.z.zX@ q.R.X q A (.R NXtXt e.rXt e.rXtXt.^.^.r.r.kXt.r.^.KX*.8 ~.8.8.u cXV ~.8.8 F F F.`.~X-.`X- 3 xXK vXw &XCXrXcX1.`X-.`X-.`X-.`.~X-X-.`X-X-.`X-.`.`.~X-.` 3.`.8XI.`.8.8 F.`.8.8 ~XV.`X1.~X1 R 1 1._", +".k ~X*.r.rX*.rX*.rXt.r ~.8 FX9 D q D c.rXtXtXt.r ~.8X*.u ~.A f f.R |.$.-XU & H.j.Y.,X5.Z.wXD a tXD CXa C v 0.s 2.= /XGX+XcXBX7X7.-X7X< kX, x x 1 :XM 3 a.e 3.`.} #.i .-.lXq EXq EX+ [X & y sXK sX,X1.w D xXl.n $ $XG x.wXDXlXIXD.5 c.D 3.u a 3 R UXaXLXC 9 O.N /.N H.W xXsXIXo.rXz _ _.c.c.c.c.c.c.o _Xg _.bXz _.b.o.b.b _.bXzXz N.b e.o e.r.^ q.bXtXt eXtXjXz NXz.oXz.b _.b.b.b.b.b.b.b.b.b.b.b _ l.o.bXzXt.r.r FXo ~.r NXx.^XtXj ~X@.k.&X@ qXkXt.r.k.r.u 3 VXMXB #.`.8X*.b N NXzXdXt e.r.r.r.r eXt e.rXt.r.rXt.rXt.k.^XtXt e.rX*.^.^X9 ~.` 3X*XVXo 3.` ~.8.8.8 F.`.`.~.`.`X- 3.9XnXnXh.+Xw.Y.i aX-X-X-.`X-.`.`.`XV.e RX-.~XV.~X-X-XVX-.HX-.8.`X5.8.`X-.`.`X1.8.8.`.`.~ R h.Y x._", +".KX*.r.KX* ~X*X* ~X*.8 F.8 ~XV.X.k.uXt.uXt.rXt ~ ~ F.r.r ~.$./ 5.f.A 5XcXw H & yXc.S x $.w.aXD.aX, a U.M._Xe U.N.).N 0XG.jX>.EXpXGXp kXM.- ` :X,XX ` c.e 3X-.`.KXB .[XB.mXq._Xq.mX%XpXpXpXe Xq aX-.8 R 3 :X-.8 : q |X9.u F F.H.rXV.K ).& I.k.r.K.X 5X9.7 ) ).5.^XtXtXjXj.o.b.b.b.b.o.b.b.b.b.bXgXg.bXz.b _.b _.b.b.b.b.b N.XXg.X N.kXtXtXtXtXt.rXtXtXt e.b N N.b.b.b.b.b.b.b.b.b.bXz.bXz.bXz.b.^Xz N eXt eXt.rXt.r.^.^.bXo.^.bXzXz.bXzXzXz.b.b.oX@X d.t.tX@.Q.R q.R.] | :X. n vX0.@.@X>XC.!.' ' 3 B.a : $ $.*.w.w.Y KX0 n.x .XrXq n.W U 9 vXm.OXH g.9 m ].5.5 $ T 4 !.] 'X5X, 3 B.'.DXU s gX.Xc ` `XM .Y .- V 3 $ a h.Y.-Xn.... E.M CXDXD.D.aXD h U hXe t.i <.M.a.a x cXD 8 R U U U U U..XnXi ;.4XfXn.YX, < < a a.} < a.a a cX-.K c.i.a <..Xp.@.j H vXw sXDXDXJXc T DXHXl.9XKXK n 1.9 :Xl :X5 3 3X- aXD U.w.s 9XC.v.N.N.N t C.W vX- 3XoXj.o.b _.c.c.V.V l.c _XgXg.o _.b _Xz.b _.b.b.b.b.b.bXz N.X.rXj lXk.kXtXt eXt e e.bXz.b.b.b.b.b.b.o.b.b.b.b.bXz.b.o.b.c _Xz.^Xd e.r ~.u N.8XoXoXtXtXtXtXk./Xk.k.r e.rXj.rXt.k.r.K #.r.`.8.r.k N.b.b.b.bXzXdXj e eXt eXjXt e e e eXt e.r.^.kXj ~ eXt e.k N N.r.8.8XI 3 :X5 $X1X1X1XI.`X-.`.`.~.`X-.a.lXGXnXC M MXn hX-X-X-X-.`.~.`.~ DXV c c 3.5XVXl.`X3XI.5XlX5 3 5.KX5X5 c.K.K :.K.5 3 a #XcX7Xq >", +" V qXMX9X9XX.KX9X*.8.8.8.8.8.r.k.k.rXtXt e.rXt ~.8 ~X*X*XVX9X*.r.uXd.r 3 v v 0._X,Xl.MX,.n R.a.}XD tXDXDXe.M.a < t.NXG.s vXa.s 2.)XpXc.Y.} t a.a a.a 1.a.}X-.}XXXXXX.[ ._.m._X4 UXrX+XnXeXe p x $ hX,.G `XKXcXX :.K.8.` F.~.`XI ) 5.$.5XVX9X3XX 5.$ 5XxX9.rXtXj.rXjXj.^.b.^.o.b.b.b.b.b.b.b.bXg.b.b.b _Xz.b.b.b.bXz.b.b.b NXz N.^Xt eXtXt.r.rXt.rXtXt.r N.kXt.^.^.b NXz.b.b.b.bXz.bXz.bXz N.b.b N.b.rXtXt.rXtXt.r N.k.^.bXz.b.bXz.b.b.bXz.bXz NXz.b.^.b.^Xo.oXdXd ~X*.u.}.u.Z.9Xe.+.j 0 O.q 9.0.n R :XU.Z s.Z.ZXa.' =XrX>Xp.<._XnXrXe.W s.jXUXKXcX,X1X5 D 3.`X1X- 'XU ( $X5.uX,X- BXsXa s.>XK ` x XcXcX3 $XI.}.a h.9.-.x.... u .@X>Xq t < t t.M.} a a a 3XV.~ a t < t C .XGX>Xr.EXUXG 8XDXK.]XK DXwXH ! n gXK :XU : 'X1XIXI s x.ZXG v b & O.) b.9.W CXs.wX5XIX1.X.b.^ _ _.U.V.c.cXg.o.o.c.c.VXz _.b.b _ _.b.b.bXz.b.b.o.o.b e.r.r.k.oXk.^Xj.rXj.rXj.o.b.b.o.b.b.b.bXz.b.bXz.b.b.b.b _.UXz.bXz e.rXt.k.r ~.`.z.f.kXt.r.rXtXt.rXtXjXt.r.r eXtXt.r.^ ~.8 ~.rXj.^.b.b.b.bXzXzXz.^XjXjXj.^.b.^ e.r e.r eXt eXd.k eXj.k e.r e.^.b.r F F.8X1.5 xXl.w h $ U RX-.`X-.`X-X-XD.,XG._X4.J.F._.lXB h aXI.~X-.`.~X- qXc qXM (XX k.5.~ 1 ).,.5.K.H.] )XK ) DXJ.$ ` m 1 h X+X.xXqXq p [ U EXq.xXnXe.s vXn v.1X+.-.- `XM.8XMXV., ) B c `., # 5 I.u.KX*X*X*X*.rXtXt.r.^.^.^.k.^.b.b.b.b.b.b.b.b.bXgXg.bXz.b _.bXz _.b.b.b.b N.^Xj.kXtXtXtXt.rXtXt.uXtXtXt.r NXt e.r.^Xz.b.b.bXzXz.bXz.bXz.bXz.b.b.b.^.^ e.rXtXtXtXt e NXj.^.b.b.bXz.bXz.bXz.b.bXz.o N.b.b.b NXz.b.^XzXtX* ~.r 3 3 $ x.W.xXn.+ 0.qXl.] @ g '.9XwXP @ K.O y ! o.W 2 2Xp = = : 3 <.}.`XXX.X5XVXo ( 5.K.`XI '.!.0.5XlX1X,Xa.n.nXcX;XJXKXS.-.3.O kXK.YXHXc $ [.YXh.LXr.jXb U.MX- RX-.D.DXe v..Xn .Xp...m.d < t U.M.WXs.).)X=..XnX> M =.{ M..XpX>XpX>XG v 1 .9.FX, < .1.>XcXc s.ZXD $.n.ZXD.w.ZXe.wX, R.D.a $.Z.n.9.!XCX0XC J.s.NXs.* v tXDXsX, R.u.r.K.b.o.oXz.c.c.U.c _.b.c.c.c.oXzXz _.b.b _Xz.b.b.b.bXz.^.b l.^Xj.r.r.kXtX* ~Xj e eXt e.^Xz.b.b N.b.^.^ eXj.^XjXz.b _.b.U _ _.X e.r.k.r ~.` ~Xo q NXdXt.rXt.r.r.r.r eXt e.b N.b.X l.^.b.^.^Xz.b.bXzXz _Xz _Xz _Xz.^Xz.b.bXz.^XjXj.^.^XjXj.^.o.r.kXjXt e eXz _Xd ~ F ~XI.DXl.nXL vXL.. xXl.aX1X-.8.~.`.}Xp._.m E.d.d._.l 1 $X-X1X-.~.8.~.~X-.`X-X-.8X-.` R.`X-X1X1X1.~ I : ]Xl.5 `X. :XcXKX+.1 MX+.J.mXA", +" kX*.,XX )X3 5X*.8.`.8.8.`Xt.r.r.rXt.rXtXtX*.rXtXtX*.r.r ~XoXVXd.u.rXt.8XG.s.)Xs cX,XD.D.w R.M a 3XI xX,.MX-X-.} a 3Xs.*.* C /.)XLXrXn.} h.a.aX, c hXl hX, 3.aXM.}XM.l X7Xr WX+Xn v [.g._._X4.x . 0..Xb ..@Xn.j >.F .[.l # :XIXD `.5 mXHX5 c cX9.$X3.rXtXtX*XtXtXt.k.^.bXt.^Xz.b N.b N.b.b N.bXg.o.b.b.bXz _.b _Xz.bXz.b.b e.r e.r.r.rXt.rX*Xt.r.rXt.k.r NXjXt.r.^ N.b NXz.bXz _Xz.bXz.bXz.bXz N.b.k e eXtXtXtXt.r NXj.^.b.bXz.bXz.bXz.bXz.bXzXz.b NXzXz.b.b.^Xz.b N.r.rX*Xt.8 #X-XG.W v MXmXP.nXU @XUXO.].0 D.2Xl 'XPXwXGXL v 9 b y.} aX*.} 3X*.rX3 cXVXd.H 5 )XVXI.H !.0.0.,X5.n.w.nXmXUX..SXH `XwXB yXK.9 :Xl xX3 $XK.[XwX%.@.T.Y XrXn.m p.) pXq.W pXeX=.mX6Xp. y.jX+.F._ U 1 UXw.Y.[ =.TX+.<.xXnX4.jXr.1XU nXGXKXG.D.W.DXmXc y.' o s.n s s v yXm OXa.=.= 2 v.N.j.j C.NXsXsXw 'Xo )Xx ).z.&.t.6. i.6. .6Xg.c.o.o _Xz.bXzXz _.bXz _Xz.b.b _ _XzXk.b.^.rXjXtXtXjXkX9Xj N.r eXt.rXj.^ NXzXj.r eXj.r eXz.bXzXz.#.oXz d.t Q.z fXx f.$.k ).^.rXt.r.r ~.rXt e e.rXjXj.b.bXz.c.b _.b _XzXzXz _XzXz _XzXz _Xz _.bXz.b.b.bXz.b.b.bXj.^.b.z.^.b N.r e e.^XzXz e F ~ FXI 8 x s ^.x.vXi J.9XDX-X-X-X- 3 x x E.m u E xXqXq : t.eXI.e.`.~.`.` R.`.eXIXIX-X-.`X1X1 3X-XV.~.eX- 3.e.e R.a x.JX2X2X4.CX8XfXf", +".rX* 3 3.r 3.` 3.8.`.8.`.r ~X*Xt.rXt.rXt.rX*X*X*XV ~.8.` FX5.H.k.u.r.HXI v 2.W._X,XD.W.ZXI 1XH :.,XHXH nXwXU.,XJ `X.Xl t.e <.W p v.j.F h <.a h XX.- XBXM xXBXMXBXK k.jXw.j.j y v pX+X%.pX4XrXpXe U C CXq. x XM.l c # #XB.[.[X+.[.-Xr W.jXpXpXp.p.-Xw n n & zXrX2 >.mX4Xn n.Y y n &.YXG.9 x.9.'Xm g.> & s v y.qXC w.v.=.= G.NXs.w =X.Xe u C *XaX5 T ] ).R.&.X.tX@XuX X d. iXgXg.o _Xz _.b _Xz.bXz _ _.bXz _.bXz.b.U.bXgXj ~Xj.rXtXtXjXk.bXjXj eXt eXj.kXtXt.rXt e eXj.b.b.bXzXgXz.X l.XXxXo.k.k I qXt q.rXt.rXtXj.k e.r ~ e.r e.r.b.b.b.U.o _XzXz _XzXz.bXz _Xz _ _XzXzXz.b.bXz.b _.bXz.bXzXj. .z.z e.rXj.rXj eXz.b.b.^ ~ F.8.HXI R v.WX=...v.s v x R.`X-.8 3.}.Y._ E._ uXe.-.,X< R.}.e.2XI.8X9XVX-X-X- I : 3 R ` V.` 3XVXJX-.` 3 `X-.M.}.3.FX4.<.JXf.{XfXi {", +".rXt.r.r.8.8.8.`.8 ~.8XV.rX*.k.rX*.rXt.r.u.uX*XV.r.8 ~ ~.8.k FXV.rXV F.u b.s p s a.M $Xe.MX, 1X,Xp 1.9 $XU xXlX1X5Xl.Z.* < u U *Xq.jXM.} a a # #XB., k.-.YXB V.[.,XwXw.q y ' H MXpX4Xe.TX2.g MXr._XeXqXGXn.9Xp.[.l.F # X3XZ |X. R 3.~ `XV c.} 3.8XV.8XtXt.k ~XjXtXtXtXt.^.bXtXj e.kXj eXjXtXj.^XgXg.b.bXzXz.bXz _XzXzXz.bXz NXdXt e.r.rXtXtXtXtXt.rXtXt.r.XXdXtXtXt.^.^.bXzXz.bXz.bXz.bXz.b N.b N.bXtXt eXtXtXd.kXtXg N.bXz.b.b.bXz.bXz.bXz N.bXz.oXz.^.^.b.bXz N.b.b.^.^XjXt ~Xz.D.HXIXD.ZX; !.uX1XV.u.| ( 5.kXt.rX*Xt.8.`.8.8.8.`.8.r.r.X ~.rXt ~Xj NXtXtXtXtXV.8.u ].w : mX. YXKXy 'XHXK k }.[X3 VXM h cX5 c ` :XI.u .S.F.i 1 `.-.-.jXrXr.p.pXB.lXM #XXXX # # h.u 3 h # # X7.[X7XB.FX7 W.jX4XnXr >Xn.X+.x MXr .._ .X4.j.Y.YX> M.q.Y 'XG s.9Xw &.j.j H.;.j H 0Xi 2 /.N.N C 8 aX, 1.*.M.W.)XL.D.8XV.u.r N.^.^ NXg.UXg.oXg.UXg.c.oXz _Xz _.bXz _.b.b _Xz.b.b _Xz.V.cXz.b N eXtXtXtXt.kXj.^. .k eXtXtXt e.rXtXt.r.rXj N.b _ _.b.#.b.b.b NXt.rXV ~.`.`.r.$ NXtXt.r.r.rXtXt e.r.r e e N.b.b.U.bXzXz _Xz.b _ _ _.b _ _ _ _Xz.b.b.bXzXz _.b _.oXz.^.^XjXk ~.k.r.rXt.^ N.bXz.^ e F ~.8.8 R $.Y o.) 0X6.. HX,X-X-.8 3.aXM._.s v.M xXBXh.OX-X-.u IXX.~ :X9XIX-XV I |.u.`.u.5.`XI.u I 3.`XIX3 aX- `.3.- . rX2.J.xXfX6..", +".r.rX* ~ F.8.8 ~XVX9.K ) 3X9XxX* qXk ) )X9.5X9.5.u.8.8.H.8.k.8XtXV.r.H '.YXL pXG .i V.SXHXJ.1XUXl RX-XV 3.`XI.8 3.8 ~X*.r.rXtXj.rXtXt e.k.XXtXtXtXj e.rXjXtXt NXg.X.b.b.b.b.b _.b.oXz.b.bXz.b.b.k.kXtXt.rXt.r.rXtXtXtXtXt NXd.rXt eXj N.bXzXz.b.b.b.bXz.b.b.b.b.b.b e eXj.^.^.^.^ NXk.b.bXz.b.b.b.b.b NXzXz.b.b.^.o.^.b.b.bXzXz.b N.^.bXzXj e e.X.H.H.uXVX5.R.Z.8.k.5 ).A q qXtXtXj.r.r.r F 3.r.r.rX*.^.b.X.^.^XjXj.kXt.rXtXtXt.H.H 3.k.2 'XIXV 3.ZX5 $X,.KXc | V., VXX.u 3 |.-X5 :X. V.,XH [XhXh.+.sX6.B.P ^.P {.v.@.pXM #XM :.lXMXBXpX+.-.gXBXM.lX3X3 D :Xl.5 :.K.` #XM #.l.l.l.l.iXM.[XrX+X> nXrX> y M & WX0 WX4 .._Xq.-.jXK yX+XrXr y oXG.YX0Xp..XnX>XCX> 0Xn / *.N C.* RX, aXD R.M.N C.s xX1.rXtXtXt.^ NXg.bXgXkXg.U.c.c.c.c.o _Xz _Xz.b _.b _Xz _.bXz _XzXzXz.c.oXz.b.^.rXj.rXjXt e.z.U.k.^Xt.rXtXjXtXt.r eXt.^.o.b.b.b.b l.b.b N.XXtXt.8.`.8.8Xt.r.r.rXtXt.r.rXt e.r eXt.rXdXz N N.#Xz _Xz _ _ _Xz.b _XzXzXzXzXz.b _.bXz.oXz _.bXz.b.b.^XtXj N e.rXtXt.^ N N.o N.X.^.r.^.k qXVXD.9Xw.> H z.@Xh v 1X1X-XVX-Xe.9XeXe E 1XG.YXK <.aXIX-.u.` ~.u.~.a ~X- :.8X-XIXIX-XVX- ~.`X-.a.a R < $.YXq >.p.{...{.@.v..", +".r.r.r.8.8.8.8 ~ c.$ V 5.k 5.,.KXJXJ., 5 |., 5 V.k 3.`.8.8X*XV.u.H.5.`X, yXnXn v.MX, h $ 8XD $ h $X- RX- a.~X- BX-X- 3 3XD h.w.) v.pXB # a R.ZXlXH.SXZ = ! ! =Xc.'XG.n.w.w.wXG &..;.; & MX0X+Xq.m.mXAXf...) v.d u.M.* a : 1 $ R.N 8Xs.NXGX, 3.r.r.k e NXg.^.oXg.c.cXg.c.c.c.V.bXz _XzXz _Xz _.b _XzXz _Xz _Xz _Xg.o.b.bXz.r.rXjXj e.k.rXtXgXk.o.r.rXt.k ~ eXt e.^.b.^.b.b.^.U.b.^ NXzXtXdXt ~ ~.8Xt.rXj.r e.rXt.rXt.r ~ eXt e.r.^.bXz l.b.oXzXzXzXz _ _.bXz _Xz _Xz _.b _XzXz _XzXz _.b.o.^Xj.r.bXtXt e.^.bXz.b.b.b.b.^.^.X , f D mX.XJX;.j.E.@ H 0 b.'XD 3 R.~XG W.1XnXq x.9 s a.a.`.`.`.~XV.K.`.`X-.8 a.`X-.`.`.`.H.`.~.`X-.`.a a t.9Xq.F >X2XAX4.4Xf.B %", +".r.r.8 F.8.8.8.r.r 3.rXX # 3XM.u c.u #.K #.u 3.8 3.`.8XI.8.k ~Xt.k.` D 1 =.E =Xe U $ $X,XDXD.M hXIX- RX- a.a.eX-X-.` #X-.M a.N.).W > .lXD.eX1 #XX.,XhXh.G.'X;XOXK.w.n.D.n sX+Xr v p pX4 zXrX>.J.. p pXF.d 2..Xn.pXM.S.lX7XcX+ 1 gX1X1X1.8.`.`.`.8XI.8 ~.rXtXtXtXt.rXtXj.k.b.bXz.b.X.b.^XdXj N.bXg.o.bXz.b.b.b.b.bXz.bXz.bXz.^XtXt.rXt.rXt.rXtXt.r eXt.rXt NXt.rXt.r eXt.^.b.b.b.b.bXz.b.bXz.bXz.bXzXzXz _ _Xz.bXz NXk.b.b.b.b.bXz.b.bXzXzXzXzXz.b.b.bXz NXz.bXz.bXz.b N.bXz.^XjXk.^.^ q.&.^Xj N.7 qX NXt.K F.^.kXjXt.r.r e.^.^.^.b.^.bXz.b.b.bXz.^.X.^.^XdXd.rXt.HXdXVXI F ` DXI.`.HXI.`.5 Y.K.aX3XJ.K # a.a < a t.a.H 3 3.iXMXB.p.@ ^ ^ {.B {Xi 0Xn.[ 1X,.} a h h # # #XM # 3 aX-.a 3 3 3X-.eX-.aXI a a.a.}.iX3X, ` VXB m.jXU.qXUXm b s b s.j.xXn..Xe $ xX,.Y n WX+Xn.@XnXp.F.m EXAXfX6 2.N U.M.a a B.e : ` $.MXs.N.N s h 3XtXtXj.rXjXx.X.o.b.c.c.c.c.c.cXg.cXzXz _Xz.b _Xz _ _Xz _Xz _Xz _Xz.b.c.o.b.bXzXj.b.^Xj N.^XjXt.o.z ~.I.^ ~ e eXjXjXj.X.b.6.6.z.IX@.z.fX@ A.&.X.z.8 ~Xt ~.r ~.r.r e.rXt.rXjX* e.r e eXz.b.b l.b _.bXz _XzXz.b _Xz _Xz _Xz.bXzXz _.b _Xz.b _.b.bXjXt e N.r eXj.^.bXz _Xz.b.b.bXoXo.$ q.5 :.uXV 3.9.sX>.; OXa v.9 $X-.} hXH =.p.9Xq vXq a #.~X-XV.k.`.8.~.~ R.eXI.e.`.`.~X- F.`.`.`X- < h 1.9.F._.yX2.mXn.4XfXi 0..", +" F ~.8 F.8.8 ~X*.rX*.5X9X9X3 qXX V V V VX3X3 # 3.8.8XI ~ F.k.rXt.r :X.Xc.>.EXw CXs hX5 t.DX, RX, a R.e.eX-.e.e.e.e $.a a.e C u.= 2.E 1 3 c.}XMXXX3 MXm.'XaXO g =XJXwXI.D.0 yXr v E E E.1XrX>.<.PXb %.mXb.)..Xp.Y.FXM .YXc.9.nXcXDX1.HXI.`.`.`.`.8.8 3.r.rXtXtXtXtXt e.^.bXz.b.b.b.b.bXz.^.bXzXx.oXz.b.b _.b _.b.bXzXz.b NXd eXtXtXtX*XtXt.r.rXtXt.rXd.r NXtXt.rXt.r eXd.^.bXz.^Xz.b.b.b.^.b.^.bXz.b _XzXzXzXz.bXz l N.b N.bXz.bXzXz N.bXz.b.bXz.b N.b.b N NXzXz.bXzXz.b N N.^Xk.X Q.tXgXo.X.X.& q.X N.^.k N N N.b N.^.k.^ N.b NXz.b.^Xz.b.bXzXo.b f A.&.R qXkXx 5.R ( D 5.5.$.K ` )XV.8XM.5X-.` #.$XMXM #.i 1 x.5.u #X1X-.}.l.l.[.[.4.@.BXv - - 2Xq.- xXM 3 3X- a aX-.a.a.}.} a.aX-X-X-X- R.~ aX1.~ R BX-X-.aXX `XGXc.S Y =.> g.nXG.wXL.n ' bXmXrXp._._ UXlX-.} xXr MXwX0.Y.@Xq._.m.m.J.sXv.N U <.* BX1 B aXD.*.W.N.).w sXD.u.rXt.rXd.X.o.o.b.oXg.U.c.c.c.c.cXgXzXz.bXz _ _Xz.b.bXz.bXz.bXz.bXz _ l.o.b _.b.^.U././.I.IXg.r e ~.zXk.r eXtXj.r ~ e.b.bX Xu.&Xu.( dX@ A.RX@.RX@ ~ ~.8.k q ).^.r eXt.r eXj.^.^.r e e.^Xz.b l _.bXz _XzXz _.b _Xz _Xz _Xz _ _.b.b _ _Xz _.b.bXzXjXt e.XXtXtXj.^.b _XzXzXz.b.b.b.^Xt.H.5.kX1 3XI.Z v.v.YXe.N.v vXpX-X-XI.9XGX+.TXn k W `.,X3 c.uX5 ( ` D ) D : :.5.,X- R.`XV.~.`.` x XpXq._XqX% >.m.m.<.C.@ O.s..", +".8.8.8.8 ~ ~.r.rX*.rXV.K.5.KXMX9XMXXXMXM #X9X*.8XI ~ ~ F.8.^.r.r.` 3 8.9.W.s.+Xe x n gX,XUXD.MX3XJ a T.}Xl cXKXc $ 1 .*XB.N.W 2.@X> 1.l.a h 3XM #.[ m o vXL.w.DXD $ ' !.'XU.j.Y.m.i.d.}Xq.d >Xf.JXbXbXb.vXb.s.pXB.l.i `.[XmXaXa DX,X1XD.8.`X-.`.`.`.8.8XVXtXt.rXt eXtXt.^ N.b.XXz.bXz.b N.b.b NXg _Xz.b.b.bXz.b.b.bXz.b.b.bXzXjXtXt.rXtXtXt eXt.r.rXtXt.r NXt.r.r.rXtXtXtXj.^ N.b.b.b.b.b.b.b.b.bXzXzXzXzXzXzXz.b.bXk.b.bXz.bXzXz.b.bXzXzXz N.b.bXz.bXz NXzXzXz.^Xz.bXz N.^Xz N.I d A.X N.b.^ NXg.^ N.X.b.bXz NXz NXzXzXz.b.bXz.bXz.bXz.^.o.^.b.b.oX&X@.&X@.&.R QXx ) 5 D.%XJ D ( I.$.5XVXx.8 3.`X9., $ #XJ [.3XJ., DXJ 5 ` V V.l XB.jXf.vXFXF /.).Y.Y #XM.aXVX-X-X-.~X-XI a.` R.aX- aX- R B a B RX-.* a a a a a R.a $ ` X.Xw gXa v.n.DXs 8.n s &.jXp._ hXIXI.}.M U E vXG.Y [Xe.i.m.JX6X=.) 8X, B B 'Xl R R a u.sXe.W 'XD.uXdXtXt.kXo.b.XXg.b.o.c.c.c.c.c.c.cXg.oXzXz.bXz.b.bXz.b.b.bXz.bXz.b _.b.c.o.b.b.b.b.UXgXgXgXz e eXjXt.^XtXz.r.r.r eXt e.^ N.bXg.b.bXgX9.b.X N e.k.r ~X*.rXt.^Xd.r.r.r.r eXt.^ N.^Xj e ~ eXz.b l.b.b _Xz.bXz.b _.b _.bXz _XzXzXzXz _ _ _XzXz _.bXj e e.r N eXt e.^.bXz _ _ _Xz.b _.^ N.r.X (.kX1.HXD b.WXGXrXL.) 0.j hX-X-Xl.9.jXX2.g.F.mXq ..x b.vXeXe", +".8.r ~ 3.r.r.r.rX* ~X*.r ~X* ~.u 3 3.u.u.u 3.8.8 ~.r 3.8 ~ NXV ~.8 h x s.W = v.MXH.Z.OX5.OX1.9Xl : 1., k.3 hXK.1.Y hXK.*.+.Y.N.s 0.@ 1.} a.lXX.[.[ yXO.' v.n.M R R.D.0XUXUX> pXe.d a >.F.x ..C {X6.PXfXf.@X+ .l x ` g s.nXa.!.n B.HXI.`X-.`.`.`.8.8 ~X*Xt.rXt.rXt e.^.bXz.b.b.b.b _.b.b _.bXg.o.bXz.b _.b _.b _.b.bXz.bXz N.kXtXt.rXt.rXtXtXtXtXt.r.rXoXt.u.r.rXt.rXt eXtXdXtXjXjXjXjXjXjXj.b.b.bXzXzXz _XzXzXz l.b.bXz _.b.b.bXz.bXzXzXzXz NXz NXzXz N.b.b.b.bXzXzXzXzXzXz./X@.X.b.XXz.b.b.b N.oXz.o.^.bXz.bXzXz.^Xz.b.o.b.o.b.bXzXzXgXz.b.^.^.z.U.zXkXk.b.k ).XX9.5X9 :XxX9X9.5 N I.r 3.8.`XM VXMXX `X#.,X#XHX# |.S.SX# V.lXB.[ ^ 2XvXF / 0.jXBX9 h.~ 3X-.r 3.K c.~X- RX-.~ RX1 R R.*X1X-.e RX-X1X1X-X-XI.a a $ ` ` nX. gXlXlX, RXD B.n s.E &Xn x $.} cX-.} < t <.a h s UXq EXf ^X= / CXD.eX-XD m.n a.M.sXG.s.- x c.u.rXtXd.IXg.X.Q.XXz l.cXgXg.c.c.c.cXg.V.b.b.b.b.b.b _ _.b.bXz _.bXz.b.b.c.o.b.b.o.bXz.o.b.b.o.^ ~XjXj eXt ~XtXj eXtXj.r.^.b.^Xz.oXz.z.o.XXz.^XjXjXt F ~.8 ~ 5Xx.rXdXt.r e.^ N.b.b N.^ e eXzXz lXz _Xz _Xz _Xz _XzXz _XzXz _Xz.b _.bXz.b _.bXz.bXj e N.^ ).rXj eXz.bXzXz _ _XzXz.o _.oXz.k ~Xx F.HX1 s xXLXn v.v 2.EXn._.n.eXI `Xn._.m EXB 1.a.aX-.~X-.`.`X-.K.eX-.~X- 3 aXIXVX-X- $ >.m p.J.JX<.F.m.mXAXf w OXn.n t", +" ~.r.r.r.r.r.rXt.rXt.rXt.rXVXtX*XtXtXt.uXt.8 ~.8 3.r ~.8 3Xo ~ 3XI.Y.w.W 2 =Xr x., mXU.D.OXK xXH `X5XK VXcXl.9XK.> sX+.-.E.+ 0.v 2.sX+ | 3 #XX |.[.O =.+.>XU.' R.a.~X- '.! =XpXe.m h EXp.hX+X4.CX6.CX8.;X: M.pXp ` Xc y.0XaXL.0.' RXDXIX-.`.`.a.`.`.` ~XVXtXt.rXtXjXt.^ NXz.b _ _Xz.b _Xz.b.bXg.o.b.b _Xz.b _Xz _.bXzXz.b.b.b.kXtXt e.rXtXt.rXtXt.rXt.r NXd.rXtXt.r.rXtXtXt e e eXjXd eXtXdXtXzXz.b.b _.b _Xz.b N.cXz.b.b _XzXz.b.b.b.b N.b.b.b.b.bXz NXzXz.bXzXz.bXzXz NXzXzXxXz _ _.^.b.bXz.bXz.o.^.bXzXz.b.bXzXzXz.o.V.cXgXg.oXg _XzXgXz.b.b.b N.b N.^X9 N.RXx 5 q., 5 I., QX9.|X9XV (.K 3XIX3 kX7X7.-., kXwXwXJ.-Xc.[.- ` .i .p OX=XF.) /XGXK.K #X*.KX3Xo.K cXt 3.` 3 : :X1XI R $XD R.eX-.~ R B.e.e .L.YXp.iX,.u a.a.a.a.a t R a .JX%._.m.m E..X>X> ^ O.M.a", +" ~X*.r.r.r.rXt.r.r.rXt.r.rXt.r.r.r.r.r.r.rXt.r.8.r.r 3.8.r.KXIXI.M.w 2.N.sXe 1X,.i 1X,XlXlXl $XDX,.e h.e R.}Xs U.N._ v.s p b.s 0 O.j.[.SXH.,XM kX3XZ.O.+Xh =.'.a aX1.e.'.'.jXwXnXe E U.-.pXn..X> ^Xf H.@ y n.[.- nXc gXP s.D.D.n.!.n.uX1.`.8X-.`.`.a.`.8 ~.rXtXt.rXtXtXj.b.b.b.b _Xz.b _Xz _Xz l.o.b.b _.b _.b.b.b.b.b.b.b.bXzXtXtXt.rXt.rXt eXt.rXtXt.rXoXtXtXt.r.r.uXtXt.r.r.rXt.r.rXt.r e.rXj.^.b.bXzXzXzXz.bXz l.b.b.b.b _.b.b.o.o.oXgXgXg.o.b.o.b _.bXzXzXzXzXzXz.bXz.b.^.z.o.^.^Xz.bXz.bXz.bXz.bXz.bXzXzXz.^Xz.o.V.oXgXg.cXgXgXzXz.c.b.b.^.b.b.o NXz.b.^.z.fX9.f q qX9 q 5 I ).R.kXV )XVXDXGX+.@.@X> & gXU g.jXC vXpX>.jXcXBXB.j 2Xv /.N.s y.-XXXX.K.K.K N DXoXo.KX5 q.] ` ` :., T TXI RX1X-.eX-X-X1 c.e a aX- 3XXX3XJXc !XH.2XcXl )XVX5 gXU =.;XG x x 3 :.Z xX, 3 #XDXD xXe pX4 ^ /.NXsX1.~X- t.M.N.N.=Xw.%XX ).$XxX3.&.f.&X@.IX@ A.6Xu l.c.c.c.c.U.c.cXg.c.bXz.b _Xz.b.b _.b.b.bXz _Xz.bXzXgXg.b.b.bXz.b _Xz.b.c _Xz.bXjXt eXt.r.r.rXt eXt.^Xz.oXz.b.b.cXg.^.b.^ e.r.r.`Xt.r.r.k.5Xt.rXt.r eXz.b NXz.b.oXz.b.bXz.U _Xz.b _.b _Xz _.bXz _XzXz _Xz _Xz.b _Xz _Xz.b.bXj e.^ NXk.r.r.^.o.b.b _XzXz _ _ _ _ _Xz.bXj.^ F.~ ~.8XD U v.s O.> &.sX=Xi y $.a a 1.F x xXpXDXDXI.~.`XIX-X- ~.8X-.8 R c .YXpXn a.FX4 E WX% >XAXAXA.J.<.4 0 2Xe.M t", +" ~.r.r.r.rXt.r.r.rXt ~Xt.r.rXt.r.rXt.rXt.r.r.rXt.r.r.r ~XVXo.8XIXDXe / / CXe U # $ c $ cXD R t RX- 3.~.a t R.*.WXs.sXpXG 0 J.@XC.E HXHXBXM h.- V `Xc M.qXw sXG.Z aX- a.H $ g.9 & vXe._XpXG.Y.p H.x H.j H bXn y.j.[.-XU y.Z '.D.w.n TXOX5X1.a.`.`.a.`.`.`.`.8.HXtXtXtXtXt e.b.b.bXz _Xz _ _.b _Xz lXg.b _.b.b.b.b _ _ _.b.bXz.^XjXt.rXt.r eXt eXt.r eXtXt.r NXtX*.r.uXtXtXt.rXtXtXtXtXtXt.rXtXtXtXt.^ NXzXzXz.^.b.b.^ l.bXgXg.c.cXg.o.c.cXg.cXgXg.oXgXgXg.o.o.bXzXzXz.bXzXz.bXzXz lXz.b _.b _.b _Xz.b _.^.o.^.bXz.b _.VXg.c.VXg.cXg.VXgXz.^XgXzXz.b.b.^.b.b.X.X N.X.r.r.rX*X*.uXV.k.r N.k.uXdX5.Z.D.EXn.vXi.@XC OXL OXC.E.v 2 2 vXG yX+ y.v /.).NXL.j VXXX*XXX3.$.K.8XV.`X-.~.~ ` cXDXD RXDX1 $ 3 3 3 3XD R 3Xc # c :Xl | V.,X3 3XK.w T c ).k.D.u.] vXrXrX+XqXh.wX.XDX..,XVX3Xc tXh x._XnXi.).) RXDX- t R U.N.sXKXl 3.rXt.rXj.rXkXg.^.bXz _.o.o.VXg.c.c.c.c.c.cXg.c.c.bXz _.bXz _XzXz.b _XzXzXz.b.b.b.c.o.bXz.b.bXz.b _ _Xz.b _.b.bXt.rXtXtXjXj.r eXt.^.b N.^XzXz l.b.b.b.b.r e.r.r ~.8XV fXx.rXd e eXjXz.b.b.b _.b.b _ _Xz.z _ _.b _ _.b _ _ _ _.bXz _.b _.b _ _ _Xz _Xz.o.bXj e eXt.bXt e.b.b.b N.b _ _ _ _Xz _ _Xz.b.b NXtXt.X 3X1 tXnXL 2 H M 0XFX= ^ v.9 : a x.FXwX;XJ T :.2 '.H I.K.,.5.] mX5X. vXpX>Xp.< > >.JX4 M.pX> SX8. ! =X. 1 ` 1X1XVXlXK.n.j yXnXG.j.j.j.jX4XG J.E.EXeXG.'.' s.9 g.n.w.n BX,Xa s TXU.H.a.`X- a.`X-X-.8.8.8.r.rXtXt.rXj N.b.b.bXzXz.b _.o.bXzXg.o.b.b.o.b _.b _.b.b.b _XzXj e eXt eXtXtXtXtXt.r.rXt e.r.X.rXt.rXt.rX*.r.r.kXtXt.r.r.rXd ~.kXtX*.^.X N.b N.b.b.b N.U.^.b.oXg.c.c.o.V.c.c.c.cXg.cXgXgXg.c.o _XzXzXz.b.b.bXz.^.^ l.b.o.oXgXgXg _.bXzXz.bXzXz.b.b.V.oXgXgXgXgXgXg.VXg.o.oXz.o NXz.b.^.X.^.^ NXz.^.kXtXt.r.rXV.k.r.A (.RXx qXo I DXKX0 &X>.; ^ H bXLXaXC.E ^.v 0 2 2Xa v.j.sX=.).N v y V.$X3X9.uXVX-X-.a R.~.aX- a.5X-X- RX-XIX1X-.~.aXIXI 3.uXc.5X3 x k }XH., hXc.n.n 1XlX5.K.k.] ' gX0.xXp v n 1 !Xl T 1X,XM 3 :.9X+ p.JX6X=.) t U.e.M.N.NXG v s 3Xt.r eXj.r N N.X.b.o.b.bXg.cXg.c.c.cXg.c.c.c.c.cXg.b _.b.b.b.bXz _.bXz.bXz _Xz.bXzXgXg.b.b _Xz.b.b.b _.b _.b.b.b eXt.r eXt.rXt eXtXj.^ e e.^Xz l.o.b.bXz.^Xj.r.rXtXt.r.k.k.rXt e e.^Xz.b.b _.b _.b.bXzXz l _.b _ _.b _Xz.bXz.b _Xz _Xz _.bXz.bXz _.b _Xz _XzXj.rXj N e.^ N.b.b.b.b.b.bXzXzXz _Xz _.oXz.b.kXtX9X9X-XD.D O.=.v.s.W.WXFX=.sXGXKXI.a KX#XJX9 :Xd.' '.5 )XV.5 c.0.nXw.v ^.4 ^.JXf.T.{.; W.; o z.;XiX:X0 p v y.M 1", +"X*.r.r.rXtXtXt.r e.rXt.r.r eXtXt ~X*.r.r.u.r.r.r.r.k.r.u.HXd.HX1XU 2.N 2XL.) s U.M U.}.aX- a a.* BXIX- cXV.9.ZXa v.v.; wXG OXL OXa.EXw [XJ ` k n.> =.>.9X0 1 ` :.a :X-XIX5 $ xXGX>Xm y H y.YXGXL.w.nXa.nXa.ZXeXl s.n.n.wXa R R B.wXa.nXJ.Z.`.`.`.`.8.`.`.`.`.`.8.rXtX*Xt.k.^.b.b.b.b.bXz.bXz.bXz l.X.b.b.b.b.b.b _.b.b.b.bXz.^XjXdXtXt eXtXt e eXt eXtXt.r N.r ~.KXtX*XtXoXt ~XtXtXtXtX*XtX*.k.k.k NX9 N.o.^.bXkXz.^.z.o N.oXgXg.c.c.c.c.o.VXgXg.o.o.b.o _XzXz _XzXz.b.b.o.o.o.o.IXgXgXg.oXz _XzXz.b.oXg.oXg.oXgXgXgXg.cXg.c.c.cXgXg.o.o.^XgXz N.zXg.z.I.zXg A.z.IXo.5Xx )X9 ~.uXxXx.5Xk.5X9.5.5Xw.j HX>.E oXCXLXLXLXm.+X0 z J 2.= /.) 0 0 G.N.s vXcXM V 3X- R 3.e.e.eX- R aXI a.aXl.uXI 3.HX-.e R.~.eX- RX1.aXDXD.KXX :XHX3 : ' x.Z RX-.K.5X9 : s.> MX> vX4 xX,XDXD.M.a a cXD t.}._ EXnX6.) * C.M R U.W bXGXaXIXtXt e e eXj N.b.oXz.b.b.bXg.c.c.c.c.c.V.c.c.c.c.o _XzXzXz _Xz _Xz.b _.bXz _.b.b.bXzXg.oXz.b.b _.b _Xz _Xz _ _Xz.^.rXt eXtXj eXt.r eXtXt e eXj.bXg.b.b.b.bXz.^XtXj.8 ~.H.f.z.r e e eXzXz.b.b _.b.b _.b _Xz l _ _XzXzXz.b.b _.b _Xz.bXz.b.bXz.b _.b.b _Xz.b.b.b.^ e.r.^XtXz.o.o.b.b.b.b.b.b _ _ _ _.o.b.b N.^XjXo :Xd BX1 bX=.)Xi U.N.= / *XLXUXc :XIX3 D ).u.`.~.~.~.`.e.KX-X1.*XsXn.sX= wXf.@.@.y.x J.; o 2.@Xi OXp.@.WXs.YX,X,", +".r.r.r.r.r.rXt.r.r.r e.r.r.r.r.rXtXtXtXtXdXdXt.rXt.rX*.r.8.H.Z.'Xm.j.v.sXLXG v.@.wXs t t a.a a.a a RXDX5XJXc.! y H =X0.E & bXLXaXL s.>Xc.-Xc.-XwXU.'.9 s.n.M h.a a.e R ~.KXI.wXL v o.E.' vXa._XGXsXDXa.D 8X1.D R 8 'Xa.D 8X,XD.a.Z.0.]XUXVX1X-.`X-X-.`.a.`X-.` F.8 ~.r.rXt.k.^.^.^.^.b.b NXz.b.bXk.oXz.b.b.b.b.b.b _.b.b.b.b.bXz.^.^XjXjXtXjXj.kXtXjXj.k.r.^Xt.^Xx.z.rXx 5Xk qXx.XXoX9X9X9Xx ) ).kX9.A.$Xk.zXg.t.I q.f.IX9XgXk.c.b _ _XzXzXz.b.^.bXzXz.bXzXz _.o.c lXgXg.cXgXg.o.UXz.bXzXzXz _.b.b.o.oXgXg.V.oXgXgXgXgXgXgXgXg.c.o.cXgXg.b.o.^XzX X@ Z./Xu NX X@ 5.f ,.|.f (Xk.k.rXt.r ~Xt ~.8 3 ' g M.q &.+XUXU ! !X; =.> H w.s.=.N.= G._.W.N.)XG.j `XXX-X- RXD DXc c kX,Xc 3 `Xl mXc.,.KXcX- 5 RXHXcXJX,XwXDX1X,XMXl mXHXw sXl.Z R.aX-X5 c (.]XPXh M M n =.Y R h R RXD c < 3.a < x pX4X6 / * u U pXs s ' $XIXdXV.r eXtXj N.b.o.b.b.o.b.bXg l.U.c.c.c.c.U.c.c.c.b.b.b.b.b.b.bXzXz.b.bXzXz.b.bXz.bXzXgXg.b.b.b _.b.b.o.b.b.b.bXz.^.r eXt.k NXt eXt e.r e.r eXj.^Xg.o _Xz.b.b.^Xt ~X* ~.rXoXt.kXt.^Xz.b _.b _ _.b _.b.b _Xz l _.b.bXz _Xz _XzXzXz _Xz _Xz _.b _Xz _XzXzXz _.b.b.bXj e.b N.b.^XzXz.b.b.b.bXz _ _ _XzXzXz N.b.XXt.rXx.u.HX1XG.sXb.. U U C.= / vXG y :XK c.KX*.`.~ F.`.`.`XI.`X-.~.aX, 0.)XF ^.s.s %.s ^Xi 2XL.NXs.N.w.WXDX,.M BXD 8", +".rXt.u.r.rXtXt.r eXtXt.rXtXtXtXt.r.r.r.r.r.r.rXtX*.r.r 3 c D gXJ J =.OXCXL ^ bXGXn.w U t < a a.e a B.~X, 3XD.W v 0 b 0 vXC sXaXa.Z xXcXw n = m n s s.n.w.M R tX-.a a.uX1.KX1.M.ZXeXLXaXa.w.Z 8XDXD B 8X1.* RX1XD B 8Xs.* RX-XDXl ' ' T.2X1.`.`.8.`.aX-.`.`.`.`X-.`.8.8.r.uXtXtXtXj.^.b.b.b.b.b.XXg.b N.b.b.b.b.bXz.b.bXz.bXz.bXz.X.b N NXz N.b.b.b N.b NXd.bXtXdXk.RXoXkXoX@Xx 5Xx N 5 ) 5.KX3.$X9.5 N./././.oX@ d./.t.IXg.o.bXz _ _.bXz.b.b.o.bXz.b.bXzXz.b _.oXg.o.o.o.bXzXz.^.zXzXzXz.b.b.o.o.cXg.c.c.cXgXgXg.oXgXgXgXgXgXg.oXg.cXgXg.bXgXzXz./.z.z./Xx.^.R.X.I.0.X.z.]X9.u q.rXt.k.rX*.r.8.8 :Xy !XUXm =XyXU.0 '.' s v o o 2.=.N G U.s.).).NXG.- V.K aX1X1X-XK xXK kXDXHXHXKXc.u kXJ : Y 3.%.Z.'X1XcXJXDXD R.a x :XHX; g.'.ZX- B R c.u , : Y @.O = zXrXr xX,.Z.'.9 x.a < RX- U x.d.J ^ %.W U.).sXG v $.H.u.rXdXtXtXjXj.bXzXz.bXz.b.b.bXg l.c.c.c.c.c.c.o.V.b.bXz.bXz.b.b.b.b.b.b.b.b.b.b.b.bXzXzXg.oXzXz.bXz.b _.b.bXz.b.b.bXj eXjXt.^.bXt eXt eXtXtXt eXtXdXgXg.b.b.b.bXzXt FXtXtXt.&Xk ~XzXz.b _ _.b _Xz.b.b _.b _.b l.bXz.bXz _.b _Xz _XzXzXzXzXzXzXz.b _.b _.b _.b.b.b.bXj.r.X N.bXz.o.o.b.b.b.b.bXz.b.b.b.b.o.bXgXg N.rX5.H.`.e.wXLXbXp E.M C 8.W.=.s v g.'.ZX-X*.8.`.`.`.~ 3.`.`X-.8X- UXn.)X= 0 / O.N.) %.s.= G 8.* C R.M.ZXDX, R RXD", +" ~.rXt.r.rXtXt.r.rXt.rXt.r.r.r.rXtXt e.rXtXtXt.rXtX* 3.8X, mXl.W.Z.>.+.> o.E.q 0 v.s v u u.* < R a RX-.eXD.a 8.W.= J H.;X0XKXL.D 8.ZXlXc yXJ o s.w.w.a.*XD.a t <.aX-.`X*X1.~XI 8XsXe.n.w.D C B RXI.e B RX1 a cXD.Z.*XD.e R R.Z.'.w g.].2.~.8.~.`.`.`.`X-X-.`.`.`.`.8.8.r.rXtXtXtXtXtXj.k.^.kXjXt.X.o.X.b.o.b.b.o.b.b.b.b.b.b.X.b.b.b.b.b.b.b.b.bXg N.b.b NXx.r ~.r.r.k eXd.r.uXt.r.uX*Xx.5.u.uX* #X9.rXtXt N.b.^Xz.^Xk N.b.b.b.bXz.b.o.b.^Xz.b N.b N.b NXz.b.b.bXzXz.b.b.b.b NXz.UXz N.b.b.oXg.oXgXgXgXgXgXgXgXgXgXg.cXgXgXgXgXgXg.cXgXgXzXgXz N.^.^.^.^.b N.b.X fX9.2 D 5 (.r.5.rXt.r.k.r ~.8.`.O.G g !Xw '.'.wXIX1 '.Z.wXC 0 O /.N C C U v.).W.'., c.a a R R.9Xl 3XK 1 #X, 1 # ` RXJ.u : DXI 1XlX,.9 3 :XD aX,X5.,.,X;.q 1.D 8 c $.%.%.|.%.%XO.9XnXBXq x $XwXwX.XJ x RX- a.M.}XqXq..+ =X0 M.xXpX> yXm yXJ.YXJ.- VX, $.Z.E J wX0XnXG.'.wX5 $X5.ZXl.w $.wX,X,X,X,XVX,.u.}X,.}X5 `X9XV.H $XD.}X,XD 3 3XVX,XD c 3 3XD $.a ` D `X3XJXX k m ! @XO m D ] (.].u.u.uXVXV cXV.uXVXVX*.u.uXt.k.5.5Xx.X.X.X.X.X.X.X.X.z.z.z.z.z.U.U.z.U.z.z.z.z.z.z.z.U.U.U.z.U.U.U.U.U.z.z.z l./.UXk.zX9.zXk.b N N N.5.5.5 )XXXXXXX3XX ) NXxXgXk.#Xg.U l.6.z.U.z. . .I.zXk.cXgXg.X.b N.b N.b.XXg l l l l.cXkXg lXgXg.IXxXg l.cXk.#Xk.#.U.#.#.#.U.U.U.U.U.U.U.#.U.U.U.U.# l l.oXkXgXg.X q.R.z.I.RXg ( q q ) ) qX9.k.u.k.^XoXoXdXVXV.uXUXU.O s g x 'XK xXl T.' gXCXi.v 2XsXD.WX+.j JXLXw VX3XM 3X*.a cXI.ZXI.a RXI aXDXI RXI $X1XI h 3XDXDXDX-.}XI.a 3 #XM k.,X;XK.Y.w.u.k.2.5 c.r.K :X3XcXX..O !XU H M z = n &XC.jXG v x x `X, R t 8 C.v J H.EXe.w.a B.~X-.Z 8XD 3XD.a B R 3X- aX- aX- a 3X5.5.`.eX1.a a.~ aX-.`.e.e.a.8 aX- a aX-.e a.a.e a.8XI 'XLXUXOXO.] (.] (.] TX5XI B RX1X-.`X-X-.`X-X-.` ~.r.r.r.r.r.r.r.r.r.r.^Xd.^.^ NXz.^ NXz.b NXzXzXz.bXz.^XzXzXz.bXzXz.bXz.b.b.^.^Xk N N.^.b.^.^XtXtXt.r.r.r ~ 3.r.rX* 3Xt.r.^ NXz.z.oXz.I.zXu i.U.c.cXg.bXz.^.kXj.r.r.rXt.r e.r e.^.^ N.^XzXz.^.bXz.^.^ l.^Xz.^.^Xz.bXgXg.V.o.VXg.o.c.cXg.c.U.U.c.c.cXg.oXg.o.o.^.oXz N.^./.t A./ QX .& q.f 5 I.AX3.rXt.r.rXt.H.H F.` $.] = g.0X. T hXHXlXK :XK =XC w.= / C U XG.wXLXeXJX3XM.K 3.a 3.u.}.u 3 cXDX- 3.aX-X,XI #.aXD cX, 3 tX- h a h.a a #XXXJXK !Xm ' TX5 ' : 5Xt.kX*.K V # U.MXDXD $ $X,Xl.}.a aX-XDX,.l EXnX6X=.N.=XP T.u.$.R.R.f./.A./.A.&./.U.b _.b.oXz.b _.V.U.c l.c.V.c.bXzXzXz.bXzXzXz.b.b.bXz.b.b.b.bXz _.bXz.bXzXgXgXz.b.b.b.o _.b.b _.b.b.b _.b.b.b.b.bXzXt eXtXtXtXtXtXt e.XXg.b.o _.b.o.^Xt N FXtXj.r.bXz.b _.b.b _Xz.b _.b _.b.b.b.U.b.b.b.bXz.bXz.b.b _.b.bXz.b.bXz.b.bXz.b _ _.b.b.b.^.r e.^.r.^.b.b _Xz _Xz _XzXz.b.bXz.o.b _.b.b.I i N F )X1.8XI B.!XLXL v.) <.d.M.= 2 bX,.}X3.8X-.`.`.`.`.`.~.`.`.` BX5XG.) v G t t.a aX1X-X- R U.M $XDXD.e.a < t.W", +".8.` ~ ~.`.r.r.rXt.r.rXt.r.k.r.rX*.r.u.H.8.H.H.8.uXVX-XlXJ s.'Xs.M.w.-Xw.O K =X; =XZ.jX+X+._XL v.W h $ 3.8.e RXs.N o ^ H J.wXD aX-.~ 3 c 3XI.} 3 #.` 3 3.u.a.~X-X-XD.~X-X-X-X1.aX- aX-.e a R aX- 3 aX-X-X- RX-X- R 3X- RXl $.0 ! g mXPXP.!.0 '.0 T R $XDX- R.`XI.`.`.`.`.`.`.r.rXt.r.kXtXt e.rXtXoXd e.k N.b.b.b.b.bXz.b.b.b.b.b.b.b.b.bXz _.b.b.b.b.b.b N l.b N.b.o N.^.oXtXtXt.kXt.rX*X*.rXtXtXj N.UXk.#.6XkXg.z. X .I.c.bXz.o N.^.kXjXtXtXt eXtXt.rXtXtXt.k.b N.^ N NXz.b.bXz lXz.bXzXz.b.bXg.cXg.c.c.c.c.c.c.V. i i iXu.IXg.o.b N.^Xz.o NXz N. .XX@X@./.z.z.&.R q.X q.z.rXtXt.rXdXt.8.HX1 : T TX; v $XG c.9XD `XlX5.9 J H.v /XsXs._.jXL v 1.[X3 #.a.a.8X-XIX,X.Xl DXcXKX.XJ $Xc `.O : `XH : :.e TXK ` | $ XL.W.w.* 8.W 2 2 0 8 RXI.8.~.`.~.`.`.~.`.`X-X-X-X,XG.W O *.) t u <.a RXD.}X,.MX1 RXI a <.M.N.)", +".r.5.` ~.8 F.8.8 ~.rXt.r.rXtX*.r ~ ~.$ 5Xo.$ D.5 I 3.%.5.GX;Xw.9 g.3XD kXl.n.w.' gXH [ VXBXq 2.).W t a aXIXIX1 t.N O ^ HXG.s $.eX1X1.5 c.u.K cX9XI.5XI.~.a.u.8.Z B 3.eX- R.eXI R.e.eX-.aX-.eX-.aXI.e.eX-X-.~ R aX-.~XD.~.n.Z.0XO.0.2.!.nXaXa.w.!Xl 'XK DXc 'XDX1X1X1.`.`.`.` ~X*.rXt.r e.r.rXtXd.^.k ~Xt.^.b.b.b.b.b.b.b.b.b.b.b.bXz.bXz.b.b.b _.b.bXz.bXzXk.b.b.bXz.o.bXz.^.^XjXjXj.k.^Xt.^ NXk.I.c.I i./.#Xg.U.c.o.U.b.b.bXz.^.^XjXt.r.r eXtXt.k.kXjXt.rXtXt.^.^.k.^.^.^.bXzXz lXzXzXz NXz.b.o.V _.b _Xg.c.c.V.c.c.U.U.U.U.c.o.b.bXzXz N.oXzXzXz.k.o.k.^.X.k N N.kXtXt ~Xt.rXt.r.rXt.r.8.8X9.O m g '.*.a.e.eX5Xl.~XD.e x.qXm.v /.) v.EXC.sXGXwX3XX.i.aX-.aXI cXD.3 1.-XlXc :Xl `XJXK k IXc IX..ZXD.- x :.- a.aXM., n.>.>.>.>.> nXw.HXx.^.k ~X5XBXMXq._ $.WX,X5.Z $XD.a <.a.} a h._ E..X4X=.s bXI.`Xt.r.r.rXt.rXjXz.X.o.bXz _Xz.b _ _Xz _.c.#.c.c.o.b.V.o.b.bXzXz _Xz.b _.b.b _.b _.bXzXz.b _Xz.bXz.o.oXz.b.bXz _Xz _ _Xz _.b.b _Xz _.b.b.b.^ e e.r eXt e.r ~ e N.o.b.b.b.bXz.bXt e.rXtXt eXzXz.b _Xz.b _ _Xz.bXz _Xz _Xz.U.b _ _ _Xz _.b _.b.b _Xz _Xz _XzXz.bXz.b.b _.bXz.bXjXj.r.bXj.^.b.bXz _ _.o _.b _.b _Xz.o.b.b.o.b l.I.f.& D I I :X3., n.sXsXLXD C C.W /.sXG $X,.`.~.`.`X-.`.~X-.~.`.`.`.aXKXn J *Xs.d t a.-XJ 3X5 ` 'XDXV h R U U.s 0", +"XV.r.8.`.r.` ~ ~ ~.8.rX*Xt.r ~.8XV.8 IXo.A c.5 ) ] 1 6XHX; m.O.Z g.1 xXM.aXDXs.nXGXw | X7X7 v.).W.N.M.* a.a.a.}.N.)XnXC y.w.ZX1.eX-.e 3.u.KXV.`.a 3X-X-X-X1 ` mX9 :X5X5X5 ` : :X5X-.eX-.eX-.~ 3X1X-X-XI.eX- aX-X- a 3X-X, '.0XOXP g.n '.w.n s g.wXw ' s.0 T TXJ.HXI.`.`.`.`.` FXtXt.rXtXt.k.r.r.kXo.k e.r.k.^.^.^.^.b NXz.^.b.b.bXz _.b _.b _.b.bXz _.b.b l.o.b.bXz _ _Xz _Xz.b.o _.c.c.#.#.6 i.6XgXg.c.bXz _.c.oXzXgXz.b.b.bXzXjXt.r eXj.^.^.^ N.b NXt.r.rXt.rXtXt.rXjXj.^.b.^.cXzXzXzXzXz N.b.bXzXzXz _.VXg.VXg.VXg.oXg.c.o.o.bXzXzXzXz.b NXz N.bXzXkXg.XXg NXX NX9.K.kX* ~.k.r e.r.r.H.`X5.|.3X..OXJXJ 1 x ` $XOXcXUXUX0Xm O /.NXG.O.WXG nXBXM # 3.` a.~X1X,XI t cX, hXDXDXD x.uX,.uXD :X,.5XD.eX, c <.} a h `.- n.G =X0X0 y.j T.uXxXtXg.kXJXH z.pXr.[X+Xe nXJX,.aXDX, R a.aX, x E._Xp vXn.M.H.r.rX*Xt.rXjXt.^.^.b N.b.b.b.b.b.b _.b _.U.U.c.V.V.b _ _ _Xz _XzXzXz _Xz _Xz.bXz.b _Xz.bXzXz _Xz _.o.o.b.bXzXzXzXz _XzXzXz.b.b _Xz _.bXz.bXj.r e.rXtXtXt eXt.rXz.b.b.b _.b.b.bXt e.rXt eXj N.b.bXz _Xz _Xz _Xz _.bXz _Xz.c _Xz.b _.b _Xz _.b _.bXz.b _XzXzXz _Xz _.bXz.b.bXzXt e.r.b eXzXz _ _XzXz _.o.o _.b _.b.b.b.^Xz.bXz.o.b N.H.0.H.` 3 :.w v b.w CX, x.j.W.).WXG 1.e 3X1.`.`.~.`.`.8.`.~.`.8 :X,XG 2.N C < B gXUX.Xc TX..'XJX. VXw & MX0", +" ~X-.8 ~.` ~.`.8 ~.r.r ~ ~.k.r ~.8.`.5 :.u ) ~ : ).KX5.3XJ ! 8.'Xa xXl.aXD.M v.n oXw.[X7 XB.-Xn.) *.N.* t t.M.M UXnX4 o H.n.w B.~.`.eX-.~X-X-X-X-.eX-X-.~ RX1 ` :XH c c # )XJXJ ` RX-.e RXD aX- 3 3 R.~ RX-.~X-X-X-.~ 3 R.0XU g.]XU.Z s.n.wXc.wXU K '.9.D s.0 g g.5XD.`.` F.`.8 ~Xt.rX*Xt.r.kXtXo.r.KX9.z.$.I.rXdXd.^.^.^Xj.^ N.b _Xz.b.b _XzXz _.b.b.b.b.U.b _Xz.V.U.o.#.#.c. .U.6 iXu.#.#.V.VXg _.b _.^.^.b.b.^Xz.U.b.bXzXz NXjXj.^.^.^.b N.b N.b.^ e.rXt.r.r e.r e.r e.^Xz.^ lXzXz.^.bXzXz.b.^XzXzXz _.bXg.VXg.VXgXg.cXgXg.bXz NXzXz.^.bXzXz.^.b N d.f.& 5.&.A.A./.f.K.rXt ~Xt.r.r.r F.8.8 T 4.0 ! 'X-XlXD 'XOXUXPXmXU HXC.vX= 9.TXeXe.YXcXl # # 3X- aX- RXDXD.a.e.e R R.e.eX1X,X, RX-.a.~ $XIX-Xl hX,X, hXM.,X..> & = 9X0 H.Y.- c.k.r.XX9XKXpXGX>XpXqXnXq.T.,.3.,X, c xXI h U [ xXnXLXp xXD.8Xt ~XtXt.rXtXt N.X.b.b.b.b _ _.b _Xz _.o.U.U.c.c.cXz _Xz _Xz.bXz _XzXzXzXzXzXz _XzXz.bXzXz _XzXzXzXg.o.b.b.bXzXz _Xz _ _XzXz.b _.b _.b.bXz.^ e e.r e.r.rXtXt.r.b.o.b.b.b.bXz.b eXt eXtXjXj.b.bXz _Xz.bXz _Xz _.b _Xz _Xz.U _Xz _.b _Xz.b _.b.bXz _Xz _.bXz.bXz _.bXzXz.b.b.b eXjXtXk N.o.bXz.^ i.6 i.6.#.c.o.b.bXz N.o.b.o.b.X l.X.H.0X9 3XI cXD.' 2Xa.W t.i.} U.) o.N g 8.a $.u 3.`.8.~.~.~ BXI ~ R B o.=.=.N 8.M.D.ZXDXI.}.a.K 3 c x.w.s 0 o", +".`.8.8XV.8XV.r.r.HXV.rXt.rX*.8.r.8.8.8.8.8XV.uXV 3XI c gXlXK.W B.W xXD.M.M s.w.'Xw [ ` XX XBX+...)XF.N.).N.M *.).s.s wXCXa.ZX1 R B.~.eX1X-.~.~.e.~X- R B.e R.e.~.eXl.eX-.e 3.u.a.e.~ B.u x.5XDXIXl 3 3.e R.~X-X-.`XI.Z : g.Z 'Xl xXl.nXl.0.! sXU 'X; !Xc gXP ! g.%X. '.~ B.`.`.`.8Xt.HXtX*Xt.k ) 5 5 q I q.k.r.rXtXt eXt eXt.^Xz.b.b.bXzXz _.bXz _Xz _.b l.b _ _ _ i i.#. i.6. .#.U.o.oXz.V _Xz _Xz.b.o.b _.bXzXzXkXzXzXzXzXzXz NXz N.bXz.^.^ N.^Xt.r eXt.rXtXtXtXt eXt.^.^Xz.cXzXzXz.bXz.bXzXz.b.bXz.b.o.oXgXg.oXg.cXg.bXz.bXzXzXzXz.^.oXz NXz.X N.XXgX9 NXXXx.k.KX*.k ~X*Xt.rXt.r.r.8.8.`.5 g.0.0.DXsX,.wXaXa b b.n J.9XC 2.v MXn o x nXMXM c c # aX-X-X-XD.eXDX-.e aX- RX-.e RX-XI.~XI RXDXI B x.'Xc `., |XhXHXU =Xh.>XZ HXZ.> ,XxX 5 } T =Xe.JX>X>X4 > W.i.-.S.].%XK.,XK nXh M.j x TX, 3.rXtXt.rXtXtXtXj.b.b.b.b.b.o.b _.b.b.b.b.V.U.U.V.V.c _XzXz _XzXzXz.bXz.bXz.b.bXz.bXz.bXzXzXzXzXz _Xz.c.o.b.b.bXz _Xz _Xz _Xz _.b _.b.bXz.b.b NXjXtXtXj e.r eXt eXg.o.bXz.b.o.b.b e.r e.r e.^.b.bXz.bXz _.b.b _Xz _.b _.b.b.c.b.bXz _Xz _Xz _Xz _ _XzXz _Xz _XzXzXzXzXz.b.bXz.b.X.^.^Xg N.b.o _ _.o.o.cXgXg.o.bXz.b.oXz.b.b.^.X.b.o.XXdXV :XV.8 cX1.wXL.sXL u < <.}.d.j 0X0.>XJX#Xh )X1X-.~.8.`.`.HX1 BXs.!.=.= 8.M R t t R t < < a.eX, R.N.) O J", +" ).KX3X9X9X9XxX9.RXxX9XtXt ~Xt.z.5 3.8.8.uXV ~.uXVXIXV.2XU g.W.' s.Z $ R.Z x vXw nXB XX.l # .- >.sX=.N.= / *.) *Xb.vXCXm s ' 8.H 3XV c c : $ cXD cXD $.e R.e tX-.~ 3 3.eX-.a cXl.eX-.eXlXVXc D : k :.3 $.e RX-XIX5 # 3.~Xl.ZXl '.5Xl :XK.' T T '.DX;XK.2.0XUX;XO.OXy.].DXIX1X1.`X1 ~.8XV c ) qX3Xx.KXt ~.r.rX*Xt.rXt.rXt.r eXt.^.b.bXz.b.b.b _.b _XzXzXz lXgXgXg.o.#.U.U.U.U.U.c.c.b.V.o.cXzXz.b.o.bXz _.bXz.b.b.^.c.b.b.b.b.b.b.bXz.bXz.^XzXzXz.^ e.r.rXt.rXt.rXtXt.r eXjXz.^XkXz.^Xz.bXz NXz.bXz.^.b.o.cXg.oXgXgXg.o.b.bXzXzXz NXzXz.^.bXz.b.^.fXgXkXXXk qXk ) q.5X9X9X*.r.r.rXt.rXt ~X-.`X1.2XP '.Z.wXaXa.n 9Xm &.!.E o.E /X>X=XC.W.[X3 # #.a 3.5X-.~ a.~XI aXIXl $.uXDXI $XD.e $ $ h $.~ 1 R x.Z.Z $ a hXMXJ., y.OXZXrX0.; x.- $X9 (.RXx xXn.s.s..X4X2.p._XA x.w c $X, h Xr s.YXK.u.} ~X*.rXt ~XtXtXt N.b.b.b.b.b.b.o.b.b _.b _.c.U.U.c.V.c _ _XzXzXz.bXzXz.b.b.bXz.b.b.bXz.b _Xz _XzXzXzXzXg.oXz.b.bXzXzXz _ _Xz _XzXz.b.b.bXz.b.b.bXj e e.r eXtXtXt.^Xg.o.bXz _.bXz.bXt eXt.r e.^ N.b.b _.b _Xz _.b.b.b _.b _Xz.c _.b _Xz.b _.b _XzXzXzXzXz _Xz _XzXz.b.b _ _.bXz.bXzXk lXk.o.^ _Xz _ _ _ _.b _.b _.b.b.o.I.b.b _ N lXgXzXo.H.HXI ~X*XIX5XL.=X= U.a < a u G.v 9 HXGXc TX, a.`.`.` B.` '.HX1XD bXa.= J.M s.w R t a a a c x.i.*.M.=.v J", +".$.K D 5 ) I.R I q q.z.H.rXd.K.$Xx ).5 5 ).$XJ ).| :XJ.|XwX; !.'XK.Z.n.9XL x.jXwX3 x # h.l #.lX3X2..X= 2.v.s.s.s.sX=.vXC bXa.D.~.~.eX1 cX5.,X3.,.5 ` c k.e a a BX- a.eXl.e.~ 3X-.`XI.a.8.e.uX1XIXI.K.5XIX5.K.e 3 $X-.e.a.~ $ BX5XI 8 RXD.Z '.n.nXa.Z.nX1XI.a 8 $.n.nXlXJX5.~.~X1.H c.`XlXx.5 D.uXV 3.`XV.u.kXt.rXt.rXtXtXt.rXdXt e.^.b.b NXz.b.b.b _.b.bXz lXg l.UXgXgXgXgXkXgXg.cXg.c.c.cXg.c.cXg.c.c.cXg.c.o.bXzXz.c.bXz.bXz.bXzXz.bXzXz.b.b.bXz.^Xj.r eXt.rXt.r e.r.r e.^.^.^.UXzXzXz NXz.bXz.bXz.^Xz.oXg.c.o.oXg.o.b.^.b.b NXzXzXzXz.^.b N.b.^X@ q./ q.&.$.$.$.$.f.$X9.r.r.rXtXt.r.r ~.`.8 R.0 gXPXa.n.w.qXC.!.q bXC & H.v w b z ^ v.[ #XMX* a.8 #.`X-X-X-XDX-XIX. $.,XJXlXHX-X5X5 : :XJXH.]X3 hXl.9.Y h #XM k.jXP y.>X0 z.qXn yXM D.k ) c $ t.).WX=.@X+X8 >Xq E.FXl RX1 t UXeXp xXK 3XI ~X*.r.rX*.r.rXjXj.b.b.b.o.b.b.b.b _.b.b _ _.c.U.U.cXg.V.b _XzXz _XzXzXz.b.b.b.^.^.^ N.b.b.b _Xz _Xz _.bXg.o.b.b.b.b _ _Xz _ _Xz _Xz.b _.b.b.b.b.bXj.rXjXt.r e e.rXjXg.oXz.b _.b.b N.^.rXt.rXj N.b.b.b.b.bXz.bXz _.b _.bXz _Xz.U.b.bXz _Xz _Xz _Xz _.bXzXz _Xz _XzXz.V.bXzXz _XzXz e.r.r.b.^Xz.bXzXz _ _ _ _Xz _.b.b.V.z Z d.A.& A.tX Xu dX@ (.k :X*.8 3 s.s.sXe t.} < <.W.) 2 v.w.} s.D.aX-X-.`X1.~.%.ZX- a 9.s.N =.+._XC C G.N t uXM [X..Y G.= O 0", +".K.u.K c NX*.k.u NXoXt.r.rXtXt.f 5.A.$ }Xx 5.A 5.| ).3.% 4 @ ! s 1.9XKXG.9 y.,.[.lXM.i < aXM.lXM.[XpXp.@.j.j.p.p...v J.E b.nX1.~.~.~.~XD.u.`Xl c RX- a.e R.* aX- aX-X-XI 3X- RXIX-XIX-XIXV R.kX5 # c.eX1 3XK.,., 3 RX-X- 3X,X1 R $ B RX1 R.'.Z.w $ 8 3X- aX- 3 R.D.w.n g '.wXlX5 `.] 5.] 3XI.` R.HXI.8.H.8XVX*.r.rXt.rXtXtXt.rXd.r.k.b.b.b.b.b.b NXz.b.b.b l.X lXgXgXg./.oXk.U.z./.UXk.c.c.cXg.V.U.b.c.c.o.VXg.cXg.b lXz.bXz.bXzXzXzXzXzXzXz.bXz N.bXjXt eXt.r eXt.rXt eXt.^.bXz lXz N.b.b.^.^.^.bXz NXz.oXg.cXg.oXzXzXz.bXz.^.bXzXz.bXzXz.bXz N N N NX9.zXX.XX9.5 N.K.5.kX*.rXt.r.r.rX* F 3.`.`X1 gXw.nXa sXC 9 J J O 0 J.@ 2 w /.. /XG.-XM #X-X-XIXVX-.~X- RXD.~ aXJ 3 mXK :XJ $XI., c mXl cX. :Xc `XJ 1X, # # kXUXGX0 MXS.> z M.1 YX.Xx.u.uX- t t.N.W.s .X+X2.JX4 WXcXJ U $.wXq.- [ 1 3.K.k.rXt.rXtXtXtXjXj.b.b.b.b.b.o _.b _.b.o.b.b.c.U l.c.c.VXz _Xz.b _XzXzXzXzXz.^Xj eXjXzXz.b.bXz.bXz _Xz.b.c.o.b.b.b.bXzXz _ _ _ _XzXz.b.b.b.b.b.b N e eXk.z.k e.r e NXgXg.o.b.b.b N.oXj.r eXtXj N.bXz.bXz _Xz _Xz.b _.b _Xz.bXz l _.b _ _ _Xz.bXz _.b _XzXzXz _Xz _.bXz _.b _.b _.^ eXjXt.b e.^Xz _ _Xz _Xz.b _.b.b.b.^ l.z.I.t.Q A.z A d (X@.z.r.8.5.`XV.nXa 2.s U.M <.* t.N.= JXG.Y s.n #.` R.HXV.~ |.8.} <.'.s.NX> yXZXp / / /X= uXp.9._ M *.=.v o", +"XX.5 q D.KXxXk q ) q q.XXt.rXtXt.rX*.rXt N.^Xt.rXxXV.`X5 D ! g s sX;XU yXUXH n `XM.i < a a =Xw.s.W 2 v 2", +"XX.KXX ).kXXXxXx.5Xx.X.KXt.r.r.rXtXtXt.r.kXtXt.kXt ~.`X1 'Xc g.! !.>Xh K KXh |X#.[ | a a tX-.}XX #XM #.l #.l.l.FXB.j.EX0XGXK #.8.K a.~.e.e 3.e c.uXI R I.3 1XJ :XJ :XJ ` DXJXM D.e.~.~.eX* c.8 3.`.eX-X- c.~X-XlX5XM.u.uX5.KX3 B 1.Z.u 3 3 3.eX- RX-XI.eX-.aX-.*XDXaXlXOXU ' 'X5.!.] g !.] y.]XU D.0X1.`.`.8 ~X*.r.k.rXd.r.XXdXo.zXxX@XtX9.b.^.^.zXx.z N.(.6.t.f.(X .o.fX@Xk./Xk.z.UXg lXg.c.c.cXgXg.cXg.cXgXg.c.cXg.Q.b.^XzXzXz.bXzXzXzXz.bXz.bXz N.b.^Xt.r.r.rXt.r eXt.^.^ N.^ lXz.^Xz.^ NXz NXz NXzXz NXzXz.b NXz.bXz NXzXz NXzXzXzXz.^.o.b.^ NXz N.XXxXk )Xk qXk q )Xk.^Xj.^XtXtXtXt.r.8.8.8.`X-XlXwXl 9Xm.E.=.BXvXFXF * *Xv G.N.=.j.-XXXX.8.~X- 3.8.e aX- 3.~X-X1 R.~X-XD.eX-X-X- R 3 R.~.Z 3 R R R.aX- hXM k.1XO = M & zX>X>XeX, 3XIXD.u.a.a R <.a.M.W.s...4 +X:.YX7XKXBXr.jX7 X* 3Xt.k.r.rXtXtXt.r.kXz.b.o _.b.b.b.b _.b.o.o.o _.o.U.U.c.cXz.b.b.b.bXz.^ e.r eXjXt e ~ eXtXj.^.b.b.b _.b.# iXz.^.^.^.b.bXzXzXz _ _Xz.b _.b.bXz.b.^.^XjXjXj.z d.r eXtXz N l.b.oXgXgXgXk.c N.^ N.k.oXgXg.oXzXz.b.b.bXz _.b.bXzXzXzXz.U.o _ _.b _ _ _.b _.b.b.b.b _.bXz _.b _ _ _.b _.bXj e e.r l.b.o _XzXzXz _Xz.b _Xz _.b.^.b.b.UX&.(X&.(X P X Z X f NXXXkX- 3 sXL.N O.WXD.Z.Z XJ c c : T.H 3.`.`X-.ZXs xXl UXlXL 2 O b 0 O.s.s.s.N.=.sXG.N", +".K.kX*.kXVX* ~.r.rX*.r.r.r.rX*Xt.rX*Xt.r e.rXt N.k.`.`XIX1 gXO.9XK.G =.1Xc `.- ` h 3 < aX-.e B.MXXXM # #.i #XMXq yXG JXCXaXa R a c.eX- c.KXIXD 3 # c RXMXlXM D $ : ` T D $ 5.] D #X5.K.K 3.8 3.eX-X-X- R 3.~X-.e.eX-.eX-X- 3XD 3X1X- a.a 3X*.e.aX-X-.`X-X-XIX-X- 8.wXa gXU.n.ZXaX5.n.0 s.0.n s.w.' D T.D.`.`.`XV.k ~ N N ) ( ] ] ]./.A.kXg )Xk.X.t.t.&.X.Q.R.zXgXkXk.cXgXgXkXg.cXgXgXgXgXg.c.c.o.V.VXg.cXg.VXg.oXg _.U.bXz.b.b.bXz.b.bXz.bXz.bXz N.b N.^XjXt.r.rXt.r.r.k.^ N.^.^XkXz.^.b.^XzXz NXzXz N NXz.bXzXzXzXz.^XzXz.^.bXz.^ NXzXz.^.oXz NXz.^ N N N N N N N N N N N N N.^.^.^XjXj.r.8.8.8.` RXV.ZXP o.jXC.v.= * u.d.) * *.WXs.W.j : #XMX* 3X1X-.`X,.`.a.aX-.eX-.eX-X-.~X1X- a R.u m )Xl $ 3 $XD.9.a.aXMXX k.3XZ.>XZ.TXZ.+.+ y.9.' m ` :Xc.u aX-.~ R 8Xs...@X:.T.T.1.1X%X<.Y 1 3.a ~X*Xt.rXt eXtXt e.^.b.b.b _.b _.b.b.b.bXzXz.bXz.o.#.cXg l.b.b.b.b.^.b.b.rXt.r.r ~ ~.r.rXtXt.k N.b N.b _.I d.^.^ e.r.^Xz.b.bXzXz _Xz _Xz.b _.bXzXjXj e e.r.r.r.^.r e.X.^ l.o.b.b.b.b N NXt.r.r.r.^.bXz _ _.b.o _ _.b _.b _ _.b _Xz.U.bXzXg.c.cXg.V.bXz _Xz _Xz.b _Xz.bXz _XzXzXz _XzXj eXj.rXg.^XzXz _ _ _XzXz _Xz.bXzXz.b.oXz.bXg.c.b.X.X l l.c.oXxXoX9XX.8.`XD s O O.= sX1 R t C *XL.N gXU m.].| `.%.uXD.8.`.`X1 B B a aXM v s s.W.wXG vXm /.=.s O.E.M", +" q q V qX* ~XtX*.r.r.r.rX*.rXtXt.rXt.rXt.rXtXt NXt.8.`.` gX..' v s.O K., ` # h ` aX- a 3.a a R.~ a.i # c # #.lXcX+XL HXm bXKX,.uXl.eX- 3 cX3XX DX5 VX-.e 3XD.e a.~.~.eXI.u cX1Xl.8X*XX.5.8XI.8X-.~ a.e.e 3 a.~.a.~X1XI.eXD cXV.}X- a a.a 3 cX-.`X-X- RX-X-.aX-X-.e.w.w.0.'.w.DXs.Z s.nXa.n s.n.w.nXl.0 DX5X1.5 ~XoXk 5 I QX@ )Xx.k.k ~ ~.tX@ AXtXg.X.X.XXoXk.XXg.z.cXgXgXg.o lXgXg.U.c.V.c.c.c.c.V.cXgXg.o.V.oXg.bXz.U.b.b.b.bXz.bXz.b.bXzXzXzXz.bXz N.^Xt.rXt.rXt.r.rXj.^ N N.^Xk.^.^Xz.b NXz.^Xz NXz.b.bXzXzXzXzXzXzXz NXz.b NXzXzXzXz.^.bXzXzXzXzXz NXz N.^.^Xz N.^.^.^ N.b.^.b.b N.^Xj.r.8.8 ~.~ ( T.9XO 9 oXi /X= *.)XqXs G.N.N x nXM.l c c 3X1X, 3.~XIX,.KXDXVXIXDX1X- 3X-XIX1XI cXJ m.,.2 kXcXJXJXKX3 k., K K KX0.+.1.+.xXpXn x $ R.u x 3.}X- 3.KXD.wXsXn.@X: M.X2 z WX2Xp.[XK.K.K.u.8.r.rXtXt.r e.^Xz N.b.b.b.b.b _.o.b.b.b _.bXzXz.oXg l l.b.^.b l.z.&.XXg.X.kXV.r.`.8.` ~.`.8.rXtXj.^.b.b.o l.IXj eXt ~.rXjXzXz.b _Xz _ _.b.bXz.b.bXz.^ eXgXj.r.rXtXtXt.rXg N.b.b N.b.^ e.rXt eXtXg.b.b.o.c.c.c.c.cXg.cXg.V.o.o.o.b.U.b _.b.V.o.o.o _Xz.b _.bXz _XzXzXzXzXzXz _Xz _Xz.^Xz.zXgXk.^.bXz _ _ _Xz _Xz _.b.bXzXz _.b.o.b.UXg.V.b.b.b.c.c.cXg l.r.` ~.`X1XD.9.s.w s.N < C u G 2XDX-X1 B.~.` R.`X-.`.~XoX5X1.`.~.8X-X1.e BX-X-.a.aX,XM.a tX- hX-", +".r.r.rX* ~.rXt.r.r.r.r.r.rXt.rXt.rXtXtXt.rXt.k.KXt.rX3 D m n.YXn [.- :XM.aX- RXD.eXI.eX-X-.eX- a cXM # #XXX3 V.-XU n @ = gXw :Xl `Xl 3.aXI.e.~ aX-.e R.e.~XI.~X- ).`XXXI.~X-.K.5XV.`.~XIX-.`X-X-.~X-XIX3.] :XlXJ.] $XcXK.].e.eX-X-X- a R.u h.8.~X-X-X1 R R aX-.~ aX- R RX- 3 RX-XlXl R.*XDX,XD a 8XDXDXa.w.'.2.D BX1.`.8.8.r.`.8Xt ~Xt.r N.^XtXzXx N.RXxXx./.zXk.z.t.z.zXk.z.UXkXgXgXg l.U.c.oXg.V.c.c.cXg.cXgXg.c _ l.b.bXzXz.b.bXz.b.b.bXz.^XzXj e.r e.rXtXt.rXtXtXt.r e.k e.r.^ eXj.^Xz N.^.b.bXz NXz NXzXzXzXzXzXzXzXzXzXz.b.^ NXz.^.^.oXzXzXzXzXzXzXz.b.bXz.^Xz.^.bXzXzXz.bXzXz.^.b.^.^Xt.r.8.r.k.~X1X1.ZXL.s ^ ^.s.) y o vX;XS.,XHX..9 VXJ.,.]X. D mXJ.,XJXV RX-X-.e.e.eX- 3 a.~.e aXDX-X1.u.uX-.aX-.a #X5 kXc hXw & 0.sXe t R.aX-X-X- < < RX-.`X-X1XD c U vXGXnXf.x.pXn X, 3XI.` ~.r.r.rXt.rXj N.b.b.b.b.b _.b.o _.b.bXz.b.o _.o.o.cXg.b.b.o.b.X.t ).t q.$ 5 ) ).$.K IXV.`.8 ~.r.r.^ N.bXz _Xk eXtXjXj e e.^.b.b _Xz _.b _ _Xz.b.b.b.^.^.^ qXzXt e.r e.r.oXz.X.bXj e ~ ~ eXt.r.^.c.o _.V.cXg.c.c.c.V.VXzXz _.V _ _.#.o.VXgXg.b _XzXzXz _.bXz.b _.b _XzXz _Xz _Xz.b _XjXjXj.^.c.^.oXz _Xz.b.bXz.b _Xz _.b.b _Xz _.bXgXg _Xz.bXzXg.o.o.V.z eXj.` F 3.~XDXG.w.sXL.N.) ..s.W R.u BX5X1 cX-.8 3.u.8XVXV.H.~.8 3X-.HXIXI.8.a ~X-X-X-XIX1XI RX1", +".rXt.r ~XtXt.r.rXtXjXtXtXtXtXt.r.rXt.k.r.rXt.^.K.8.K., kX..1 nXw =.[XB `.a.aX-.H.~X1X1.eXV.a.a 3XM.K `.-.- g gXm yXw.9 s $.*.aX- RX- 3.eX-.eX-.~ R.~X-.u.eXI 3 3X*X-X-.`.K c c.`X-.e 3.u.~X-.e.~X-.K.e c ` `Xl ).9.K T `XIX- a.~.e B RXV.u 3.~X-.~ R RX1.eX- a.aXI R.e.~X1X,.ZXc.e ` :Xc 1XcXJ hXD C.D.w.n.0XUXdX1XI.`.8.~.`.`.r e N NXj N.b.R A.z.z.zXx.f qX&.IXkXu dXkX .&.I.I.6./. .6.6Xg.V.c.V.c.c.c.VXg.VXgXz lXz.b.b.b.b.^.b.^.b.^.^.^XjXt.rXtXt.rXtXt.rXtXt.r.r.r.r.r ~XzXd.^.b N.bXz.b.^.bXzXzXzXz.^XzXzXz.bXz NXz.b.^ NXzXzXzXz.oXzXzXzXzXzXzXzXzXzXz _.b.b.bXz.bXzXzXzXz.b.b.^.kXt.r.r.HXt.H.8 R.a s JXCX0XpXLXcXKXcXw.G } V : $ h h c # $ $ c $X5 $X-XVX-.~X-.`X- a.8X1.e R.e.uX-.aX-X1X5X- a.a c.lX3XK $.Y.E v p u u RX-.e.a a a a t a BX-X-X,.M U U.WXf .XfX2.j.M cXV.8.8.r.rXjXtXtXt.^.b.b.b.bXz _ _.b _.b.b.b.bXz.b _.bXz.Q.b.o.X.b.X N.bXk.X.kXt c.rXVXV D.% ).`.` F ~.rXjXj.^.b.^Xg NXj ~.rXt.rXz.b.b _Xz.bXz _ _Xz _Xz.o NXz.k ~ e.rXtXt.rXt.b.^.b N e ~ F ~.r.r e.kXgXz.o.V.c.c.c.U.c.c _ _.c.V.c.c.c.#.c.cXg _ _XzXz _.o _Xz _XzXzXzXz.b.b.b _ _.b _XzXj e.b.XXkXz.o.^Xz _Xz _Xz _Xz _.b _Xz _XzXz.V.c.c.o _Xz.b.b.U.c.V.Q _.r.8 ~.8.8XI.}.9.)......X0 2XL `.K )XlXoX5 #X3 h.uXX cXJ.5.`XI.5 $ TXD., 3 ) cXXX5.~.uXV.].`.5", +"X*.rX*.r.rXtXtXt.rXt.r.r.rXjX*XtXt.rXt.rXt.k N.^ 3.K qXc.,.,.jXH.1 kX3 xX, 3.DXVX-X-XI.u.a c.8XM.l XB V.jXc o sXa.n 9.Z.w R aX- aX-.a.a.eX-X-.e.~.~.e 3.eX1.~XI.r.~X- ~.uX*X- c.e.~X-.~ 3.eX-X-X-XM.eX- 3.` 3XI.e.eX-XD.eX-.eX- a R BX-XI 3 3X-X-.~.~X-.a.~X-X- aX1 aX-X- a.u : :Xl.9Xl :.9Xc 1.WXD tXD 8.w.'.0 g 'XIX1.`.H.`.8 ~.r N.o.b N.o.I.R.t.I.& PX .t.AXu.$.AX q d.&X d.&XuXuXuXu.UXg.c.c.c.cXgXg.c.c.oXzXg.b.bXz NXz.b.^.b.b.^.k e.r e.r eXt.r.r.r.rXt.rXtXtXt e.r.r N.k.^.b.^XzXz.bXzXz.^XzXzXz.bXzXzXzXzXzXzXz.^XzXzXz.^.^.^.bXzXz.^XzXzXz _.b.o.oXz.b.^Xz.^.bXz NXz.b.b N N.kXtXtXt.u.k.8.8X1 R xXU.j.j y.p.,XwXc : V., #XMXD.a aX-.e x T ' $XlXlX1X-.K.KX- R.~.~X- 3XI.e.eXIX-X-X- RX,XIXI a cX5X3 V.M.-XGX>Xr UX, $.eXMXD $ <.9 h R '.e $ 1 1.Y.M.wX4 .Xi.@ x h DXI.8 ~ 3XtXt.rXtXj.^ N.b.b.bXz.b _ _ _ _.o _.o _.b _.b.o Z.t X d Q.t.t f.| Q.H.8.8.u ~ 3XVX9.8.`.`.`.8.r.rXt.^.^.b q.U.k.^.r e e.^XzXz.b _ _ _Xz _Xz _.b.b.b.b.b.^ e.r.r.r.k.r NX*.^Xj.r F F F.r.rXtXzXg.b.o.c.c.c.c.c.c.c.c.c.V.c.c.c.c. .c.V.c _ _XzXz _.bXz.b _.b _Xz _.b.o.V.cXg _.b.bXjXj N.b.c.^.oXz _ _Xz.b.b.bXz.bXz.b _Xz.bXz.c.c.o _ _ _.bXzXg.c.V.#.c.^ e.8.8 ~.8XI.WXG %.sXiX= 2.s hXIX1.HXV.` 3 3.8.}.uXV cXD.`.u cX1 c.` h.8 #.8.r.r.~XVXI : 3.u", +"Xt.r.rXt.r.rXt.r.rXtXt.rXj.^.^.^Xt eXt e e.^ N.k.r.8X3X3XM kX7XHX#.[.9 $.}X, $X. :XVXI.~XI 3X-XM #XB., y.'.w.wXL.n.D.' $ RX- RX5.e cX5XI.eX-.eX-X-.eXI.` aX-X-XI.~X-X-XVX*.e 3 3.~ a a RXIX- R.e c.`XV.a 3 3.K.a.` a aXV c RXl.e a.*.e x R 3.K.eXIX-X1.~XI.e R aXI aX-X- aXIXI.e 3.e.e.e aXD.a aXD.D RXD BX,.0.D '.!XPXPXP.].D.`.HXd N N.^.o.bXz _XzXgXkXgXk q qXgXxXgXk.zXkXg.cXg.cXg.cXg.cXg.c.cXg.c.V.c.cXgXg.bXz l.b.bXzXz.b.^.b.^XjXj eXt e eXtXt.rXtXtX*.r.r.r.r.rXtXt.r.r NXtXtXtXjXz.b.^.^XzXz.bXz.^XzXz.bXz.^Xz.b.bXzXz.^XzXz.^Xz.oXzXzXzXzXzXz _.o.cXgXg.b.bXgX9 N.^ N.XX9X9 N.^X9.k.kXo.k )XI.k.uXIXD.9 k : X3X3 kXX 1 ` 1 # kXc #XD a.a.a h., ' :X. :XH., I.aX-.e B B.~ 3.~ B aXIX-.` B 3X,.a.a 3.K : kX,.p.E.@ n t x.%.*.' k :.e.,.aX,.O R.Z.>., k t.- z 2XpX> h #.5.H.8.8.k.rXt.rXdXt.^.o.^.o.o _ _ _ _.b _ _.bXz.oXzXz.V.b.I.6.I.QXk A (.z.zXx F.`.`.kXVXt.u.8 F.`.`.` F.8 ~XtXt.^.bX@ l.oXj e e eXz.bXz _XzXz _ _ _.bXz _.bXz.b.^.b e eXjXj.^ e.X.rX*.r N.kXt F ~Xt.rXzXg _.V.c.c.c.U.c.c.c.c.c.c.c.V.c.U.#.c.UXg.o _ _ _ _ _.V.V.b _Xz _.o.V.c.c.V.c _Xz.bXj.k.b.XXk.^ _.bXz _ _XzXz _.bXz _.bXz.b _.b.c.c.o.o.c.b _.o.o.V.c.#Xg.bXt ~.8.8.8XIXD.D b.sXb %X= v aX- F.~ FX-.aX- a.}X-X*XK.%XV.3XI.8 a.~.8X-.e.aX-.`.~X-.`.~.`.~", +".k.rXtXtXt.r.r.r.rXtXtXt.^ N N.^.^.^XzXz N.b.X N ~.8 q VX3XSXH [XHX# X,XeXJ.3XJ mX* 3 3X* a cXM xXcXUXGXe.nXsXD 8 8X,.e.~.}Xl.9Xl.]XcXI R.eX-.e a 3X-.e.e.e 3.`.e.K.` : a c :XMX,XIXDXlX-.aX1 cXl.e.~.`XI.5XI.8.e.`X- RXc `.,.9Xl .9X3 1XJ 3XJ 3 3XI 3X1X- RXIXD a.e.aX-.aX-.` 3X- RX- RXD 3 RX1.wX-X- a cXD.wXa.n.0 '.n.0 gX1.H.rXzXz.b.b.b _ _.b.c.cXg.zX@.AX@.fX@.6.f.UXg.cXg.c.c.cXgXg.c.c.c.c.c.c.c.c.cXg.bXzXg.b.bXz N.bXz.bXz e.r.r e.rXtXjXjXt.r.r.r.rX*Xt.rXt e.r ~.r.k.rXt.rXtXj.^XzXzXzXz NXzXzXz.b.^.b.b.oXg.oXz.^.^.^Xz.^Xz.bXzXzXz.^.b.b.oXg.cXg.bXk.b.tXk.& q.&X3 5./ q ) q.z 5 f 5 5.|.$XJ.5.% )XJXK `.,.GX#.S.3.3.SXHX#.[ $ # a X.XH.>X;XHXHX;., x.l 3.e xXK $.a.Z 3 3Xl.a hX- c 3.eX-.~X5Xl T :.e.5X5 B 1 ` | c )Xc | V.}.jX4.s.W.M.aXI ` $.* aXD.a t.e a.*.*X,X,XD.M uXq.) J.wXK.` I.K I I q.|.$X@ fX@X@ N.b N.b.b.o.bXz.o.o.oXzXz.b i i. i.t.U.oXg.& fX .&.f ~ ~ F.k.k.A.k ~Xt ~ F F ~ F.8 F ~ ~Xj e l l.b.b.^ e.^Xz.b.b.bXzXz _Xz.b _ _.bXz.o.#.I.UXj.^Xz.bXjXj N.rXt.r.`.` F F e.r.^XgXz.o.U.c l.V.c.c.c.V l.V.U l l.c.c.I.U.c.c.V.V _ _.o.V.c.c.c.c.c.c.c.c.c.V.cXg.bXz.bXj.r eXj.X.b.b.b.b _Xz _.o _.b.oXgXg _.b _.o.cXg.oXgXg _.o.o.cXg.U.c.c.c.bXj ~.8 F.8.8.8 3 1.Y s o.'XDXD BXd TXV ) DX; ' ]Xl.HX-.`.`.r ~.kXo.`Xd.HXoXd.8.`.5.` N.HXt", +".^Xt.^ N.^.^.^.^.^Xj.^Xz.b NXz N.bXz.b N.b.b.o N.k.`XtX3XM VXM.i $.} <.Z hX, $XD c aX-X-.} c #XM.-.-.9.w v.* B t.*.e 3 aX-X-.e aXI.aX-X-X-XD.eX-.e.e c.eX-.e.~.`XlXVXI 3.eXIXI cX1.a 3X-.a.aXI c.`X-.e 3.~.u.H 3.`X-.~X-X,.e.e a.e.*.e a.a.e a.e.~ 3.e 3X-X- RXD.e RX- aX-.`.e.8X1X- a B aX,.aXDXDXD R R $XI RXD R 'Xa.D.w ' T '.`XdXj N.bXz _ _ _.c.cXg.c.UXkXkXgXkXgXkXgXg.oXg.c.c.cXg.c.c.c.c.cXgXg.c.c.VXg.cXzXzXg.b.bXz NXz.bXzXz.^.^.^XzXz N.b.b.^XtXtXt.r.rXt.r ~.rXt e ~ N.r.r.rXjXjXz.^Xz.^XzXzXz.^XzXz N.b.^Xz.^XzXz.bXzXz.^Xz.^.oXzXzXz.b.VXgXg.o.o.b.oXg.oXgXz N.^ N N.^.^ N N.^ e ~.r.rXoX* ~.8.`.`XV., TXU T.0.! 9.! g y.9Xc kXM # h a.l., `XH., kXZ |.,XJ V.,XJ.e.e.]XX k D.0., D ` #X3.,XJ., kXHXH.- h.YXGXe.s U R aXc :XK :.- :XKXJXK :Xl :XD.}XD < vXL o.NXhXX (.0X9.5X9XkXxXxX9 qXt.X.b NXg.o.^.b.b.o.bXz.bXg.b.o.o.bXz.c.o.bXz.b.o.X.X.r.k.~.RXX.r q.KXt ~.k ~ ~.r.r.8 F.8 ~.rXt q l q.oXz.bXz.b.b.b.bXzXzXz _XzXz.b _.bXz.o.U.o.b.b.b eXj.r.b.r.r ~ F.` F.`.r.r.^.XXz lXgXg.V.V.c.U.V.V.U l.o.o.o.c.U.QXg.c.c.c.c.V.V.c.c.c.cXg.V.c.c.V.V.V.V.c.V _.b.b.rXjXjXj.b.b.o.c.cXg.o _Xz _ _Xg.c.c _Xz.bXg.c.o.o.c.o.oXgXg.c.V.U.U.o.UXkXzXt ~ F.8.8.8.`XV.0Xl.w.] RXDXI B.| T 4 'X5XIX1.D.5X5.`.8.r.`.rXx.H.H.`.H F.~XtXt.`.r F.r", +".b.b.b.b NXzXz.bXzXzXz.b.bXz.b.b.bXz.b.bXz N.bX9Xt.8 )X3XMXX.l.}XI.M.a.}.Z hX,X, $ B.a c h.aXMXM.-Xw.'.wX, t RX-.a a.Z a.e.eX- aXD R aX- aX-.eX-X-X-.8 RX-.e : 3 c.`.H.eX1 aXIX,.e RXI a.~XD c a.~X-.eX1X-X-XX.8 3.`.~ aXV.aX-.e a RX- RXI.e.aX-XI 3.~XIXI.~.aXI RX-X-X-X-X-X-.a 3X- R.eXDXD.a.} x.Z cXc.YX3 : : mXJ sX,XD '.' g FXd e.bXz.bXz _ _.c.c.V.c.U.UXk.cXkXgXgXgXg.c.c.cXg.cXg.c.c.cXg.c.c.V.cXg.VXg.c.bXzXg.XXz.bXzXzXzXz.b.b.b N N NXz.^.^XjXt.r.r.r.rXt.r e.r.r.r.r N.rXt.r.^.^.bXz.^XzXz.b.^Xz.^XzXz.^Xz.^ NXzXz.^XzXzXz.^Xz.bXzXzXzXz.oXgXg.o.o _.oXg.cXg.o.bXz.^ N N N.b.^.^ eXtXt.k N.8.8.8XIX-XI.] gX5 sXaXa.nXaXaXaXlXG.,.9 x c a h aXXX3 1X3 `XK | #XIX-.a a.a #X1XIXD 3 `X, a 3 3.} 3 #X3XM., h.-.YXnXL._.MX-X3 : ` :.'.0.5Xl.ZXcXMXl.}X-X,Xe v.s H.sXl 1.H.HXI.8XVXV.rXt.r.rX*.^ N.b.b.bXg.o.b.b.b.b.b.b.oXz.oXg.b.U.oXz.o.^.X.b N.k.X FX* q.rXt.r ~.r ~.r ~.r.r ~.8 F ~.rXt.o.r.b.^.b.^.^.^ N.b.bXz.b.b _Xz.bXz.b _Xz _.b.b.b.^Xz e ~ e N.r e F.r.`.`.r.zXk.I.R.I i i.&.#.I. d d iX@. X .t./.I AX@.I dXg.c.c.c.c.c.c.V.c.c.V.c.c.c.c.c.c.V.V _Xz.b e eXjXj.^.b.b.c.c.c.c.bXz.oXg.c.c.c.o _ _Xg.V _.o.c _.o.cXg.c.o.U.UXg.cXkXgXjXt.r F ~.`.8.H.H.`X5.ZXlXw.OXc.SXD.uX-X-.`.`.8 3.8X-X-.`X-.~.8.8.uX* ` 5 ).2XV.`.`.~.8", +".b.^Xz.bXzXz.bXz.b.bXz.bXzXzXz _Xz.b.b.b.b.b.b.b N 3.rX3.$X3XMXMX, 1XD < h.wX, R h 3XI a.a h 1XUXwXK.w.Z R a a.eX-.aX-.5 hX,XD R a a RX-XI.e a.e.e.}.`.~ c.u.KX1 3X-.e.~ BXIX,X-.eXI B 3XIX- a a.~.e 3.e.~X-.u #.eX-X-.e c.eX-X- a a.e hX-.e aXI.a.~ RXI aX1X- a.~ a.eX-XI.a RX, R a.M RX, tXDX1 #X, 3.uXK.Z x ` h.ZX1XsXl.n g.HXt.k.o.^.b _.b.V l.c.c.c.U.#.cXkXgXgXgXg.VXg.V.c.cXg.c.c.c.cXgXgXg.c.c.cXg.cXg.bXzXg _.bXz.b.bXz.bXz.b N.^.^XjXjXj e e.r eXt.rXt.r.rXt e.r.kX9 qXgX9 NXz.^XzXzXz.^XzXz.b NXzXzXzXzXzXzXz.bXz.^XzXzXzXz.^Xz.^Xz.^.b.oXg.V.o.oXz.o.V.o.o.o.b NXzXz.^.bXz.^.^Xj e.rXtXoXt FXIXd D.H : D.n TXa.DXsXa.ZXa s.'Xw.Y # # a.a # XMXc `.- ` x # # #.e.a a.8X- B B 3X- a a hXIX-X-XI xXM.- 1 h s.Y.sX>XD.a 3.aX-XIX1.~ BX-X-.e a aX- h h.MXe.) v &XH : ).u.HXVXV.^.H ~.uXtXk.XX9XkXg N.b.^.b.bXz.oXgXz.b.b.b.bXz.c.b.o.^.o.b.6.^Xt.z.K.rXtXt.rXtXtXtXt.r.rXtXt ~.8 F.8.r.r.XXj e eXjXj e e.^ NXz.b _Xz.b.b _XzXz _Xz.b.bXzXz.b.r eXj.k.b e ~ ~ ~ F F.rXx.I.f.tX X .&Xu.IX X&X&.& i.t.(./.t.tXu.( ZXu.t.c.c.c.c.V.c.c.c.c.cXg.V.c.c.c.c.c _.c.b.b.^ eXt e.^.^.b.bXg.V.V.c _ _.VXg.c.c.c _.o.VXg.o _.oXg _.o.c.c.V _.c.c.c.o.c.U.bXj e ~.`.r F F F.`XI.D x.>.1XG.Y 1 ' R.` F.~.u.`.` 3X1XI x ) :XJ D.5 I.K :.$X*.8.`X- ~", +".o.bXzXz.b.b.b.bXzXzXzXzXzXzXzXz.b.b.b.o.b.b.b.XXjXt.8.a # V XM # x h a.ZX, $X, $ B.a c.} ` .- nXUXm.n $ tX-.aXIX-XXX3XKX5XcXl 1.9XKXlXJ $.e.~XIXIXI.eX-XV.KX-XV.e.~X-X1.eXD 3.eX- 3 a.u aX-X-X- a.~XI aX- 3 3XVX-X-X-X- R.8 aX-X- a RX1 R a.u.a aX- 3X1X- RX1 RXIXI 3 3 $.uX, $X5 3Xl.Z x h $ : xXD a t.}.a $X- a.a B R s sXUXo.rXd.b.b.b.b _.c.c.c.U.cXk.UXg.cXk.c.c.c.c.c.c.c.V.c.c.c.c.cXg.VXg.cXg.cXgXg.o.bXz l.X _ NXz.b.bXz N N.^.kXtXtXtXt.r.r e.rXtXtXt.r.rXt.r.r.^Xk.IXxXg.X.b.^XzXzXz.^Xz.bXzXzXz NXzXz.^Xz.^.^Xz NXz.^.^Xz.^.bXz.b.b.o.VXg.o.c.U.U.V.c.c.o.c.bXz.^XzXz.^.bXz.^.^ eXtXt.^.H ~.HXd.]XP g 4.OXU s s.*.* C 8.w s g.- x # <.}.lXXX3., n k.-.9 :.l.KXM.a a.`.a.}X-X- RX- a a.8 3 R B < h # V., 1XDXK v y sXMX5.5XMXI BX1 B.~.~.8.a a.}.aX- t U...=Xr.G 1 I 5.].k 5.`X@ ) (.r.AX9.6X@./.6X@./.t.&XgXz.b.b N.o.b.b.b.UXz.o.cXu.^ q./ ~.8Xt.r.r.r e ~.rXj F.r.r.rXt.r ~ ~.8 ~.r N N./Xg.r.r.r eXjXj.^.^.bXz _.b _.b _.bXzXzXz.o.bXz e eXj.X.XXt ~ ~ F F ~ F.k.k.X N.z q.I./.U.IXk.U.I.#.I.z.#.#.# l.#.I.c.c.c.c.c.c.c.c.c.c.VXg.c.c.c.VXg.c.c.c.c.bXz.^.^ eXjXg.b.o.o.cXg.c.c _ _Xg.c.VXg.c.bXg.c.c _ _.cXgXzXgXg.V.oXz.c.c.cXg.V.UXkXzXj.r ~.`.8 ~.`.H FXl.W._XnXF.s.sXn.DX-.~.~Xd.e }.] kXc mXK.0 : 3.` 3.` a 3.~X-.`.8XI", +"Xg.bXzXz NXzXzXzXz.b.b _XzXz _.bXzXzXzXz.bXz.bXg N.r.rX-.aX*XJXM #X, ` t.}.wX, 1.M.a.aX, $ 1 V nXwXU s.nX, R 3X, 3X1XD.e # cXD RX5XI $ :XD.a.a a.eX1.`X-X-X-.` 3X-X-.~X-.e RX1 cX1.e RX1 3XIX- a.~ a.e.aX-X-X-X-X- c aX-X- c R.~ R BX,X- 3.eXIXDX-.eX-X, RX-X- RX-X-X-XDXV 3X- 3 :XcXK.,.-XKXJXK 1.,.9X,XD.Z $.aX-X- aX, R.'.n.0Xx.H.k N.oXz.b _.cXg.c.c.c.U.#Xg.cXgXg.c.c.c.c.c.c.c.c.c.cXg.c.c.V.c.c.c.c.cXg _.bXzXg _ NXzXz.^Xz.b.b.^.k.rXtXtXt.r eXt.rXt.r.r.rXtXt e.r.r.r.r.^.r eXj.^XzXz.^XzXz.^XzXz N.^XzXzXzXzXz.bXzXz.^Xz.^XzXz.^.o.b.o.o.o.o.oXg.U. i i i.#.c.o.oXzXz.b.^.bXz.^XzXzXj.rXt N.r.H.`.HX5.H.HXl g : R B tX- B R.w.n yXJXM # # # #XB.,XJXwXUXc.-Xw VXM X* a a.`X-.~.eXI.~ a.aX-.uXVX1X-.} #.l., | x x.Y.E.Y $ # 3.u.8.`.~.`.`.a.`XI 3XDXD R t UXs.s.sXw 3.3Xx.| qXx.u Q ).f.r.&.A ,.f.& Z.(Xu.tXu.c.b.o N.b.b N.b.b.#.c. XzX .IXz.^Xj ~.rXtXj.r.rXtXt ~Xt.r ~.rXtXt ~ ~ ~ F ~ NXjXgXjXtXj e.r e.r e.^.b.bXzXz _Xz _.b.o.U.^Xz.oXjXjXjXz.XXg.r.r ~ F.r.K ~Xt.k N N.$.&.A././X XuX X .AXuXu./.cXk.U.U.#.U.U.c.c.c.c.c.c.V.c.V.V.V.VXg.V.c.c.V.cXg _ _Xj l e.^.c.b.b.V.UXg.c.c.o.oXg.c.c.c.o _.c.c.c.b _.c.cXzXg.V.o _Xz.c.c.V.cXg.o.U.cXj eXt.r ~.`.r.`.] ` v.sXbX4.xX=.v.Y.nX5.Z xXl.9Xh nXU s.N t tXIXI.`.`X-XI.K.~XIX-.`", +"XgXz.bXzXzXz.b.bXzXz NXz.bXz.bXz.b.b.b.b _.b.b.b.XXt.r.`.8.aXXXKXMXDXM h.M hXl $.M 3.aXl.lXMX7XH.-.'.n s.Z $XIX-X- a 3 R a a a t a aX-.a.e R BX-X1 3 RX-.~X-X- 3.e.~.~.e R.e : :.0X5Xl : ` : :XlX- aX-.aX-X- a RX-XIX1X-.uXI.~X-X-X, 3 $ x cXl : #X5 c $.~X- R.~ B.` B.u #.e.`X1 c t a.'.ZXD a tX,X, RXK.* R a a a.aXDXD.M.w '.! ( F.kX9 N.o N.bXg lXg.c.cXk.#Xg.c.c.c.c.cXg.c.c.c.c.c.cXg.cXgXg.c.c.VXg.c.cXg.o.bXz.o.oXzXz.b.b N.X.b.r.r.rXt.rXt.r.r.r.r.r.r.r.r.r.r.r.r eXt.r NXtXt.rXz N.^XzXz NXzXz NXzXzXz.^.^.^Xz.^ N.bXzXzXzXzXz.^.o.o.c.o.oXg.VXg.c.U.U.c.U.c.c.o.o.b.^XzXz.^Xz.b.bXz.^ eXt N.r F.`.HX1XIXI.HXJ $X1.eX-.e R B.D xXK.jXc # #XM #XKXw y.' y.j gXw., ` : hX- aXI aX-.eX-X- a R.8.`.~.D a.a hXM V k VX,X+ yXcXD R.aX-.`.`.`X1.`.~X*XM.~.Z.a R R < pX= .XK R.u.8.rXV.u.rX*Xd.kXt.kXj.bXgXg N.bXg.b.o.bXzXz.o.o.b.oXgXg.I.tX .b.o.o NXg NXt.rXjXjXt e.r eXt.rXtXtXt.r.rXt.r ~.8.8 N F.rXjXt e.rXt.rXjXtXj.b.bXz.b _.bXz.b _.VXz.oXz eXjXz.^.b N.rXt F F ~.^.rX*.K 5X9.z q.$.z.$X3./.$ q.$./.$.cXkXgXg.U.U.c.c.c.c.c.c.c _ _ _ _ _Xz _ _.V.c.c.c.c.V.b.b.^.#.z.U.UXgXgXg.c.c.cXg _.o.c.c.c.V.b.o.c.c.o _.V.cXgXz.V.cXg.VXz.#.VXg.V.c.c.c lXg.^ eXt.r.r.r.HX1X,XGXp M.; S.sX=.@ ^ 0Xn ^.hX>..Xb 2X4 v.9 sXl.9XMXD 3XDXJX3.K D 5", +" lXz NXz.bXz.b.b NXz.bXz.bXz.bXzXz.b.b.bXz.b.b.o N.X.r.`.8XI.u VXX xXD 1X,.9XqXD RXD h 1 ` [X..j 9 s s.w B.eX-.e BXDX- a B.eXD aX-.e R 3 RX- 3XD R.e.eX-.e 3.~.~X-X-.e R.~ 3Xl R 3 `XK c D c `XDX- aX- aX-X-X-.a.~ 3X-.uX-.eX- B 3 xXlXJX,Xc :XlX5 DXM :.e.eX1X-X, 3.u 3.a a.- `XKXDXc.-Xw.-XK kX..9.e.a t R R R.} R.aXDXa s g '.8Xt.k.^ N.o.o l.U l.cXg.U.z.c.c.c.c.c.c.c.c.c.c.c.cXg.cXg.cXgXgXg.cXgXgXg.cXg.bXzXg.XXzXz.b.b.bX@XkXx )Xx.5XXX9X9Xx.` F.k ~.rXt e.r.r e.r e.r.^Xt.r.r.^XzXzXzXz.^XzXzXzXzXz.^XzXzXzXzXzXzXzXzXzXzXz.b.bXg.oXgXg.cXgXg.VXgXg.c.VXg.o.oXg.o.bXzXzXzXzXzXz.^Xz.^.^.^.k.r.r.r.8.8.HX-XI.]X5XI R.~ a B.*XD.w s mXc 1 x XK.- !.! v.n s.'.! k : h aX-.}X-.e RX-.~ R.e.u.`.~XD c cXM XX.,., hXp y.9Xw.9XlXl : #X5.5.k `.5 :X5 :.Z R.a Xl.] : P T Y 5 D.]", +"Xg N.bXz NXz.bXz.b.bXz.bXz.b.b.b.^.b.b.b.b.b.bXg.U.XXt.rXI 3 3XlX3X3.}.-XJ.9 kXD xX.Xh.3 .Y.-.,.j.nXUXm.ZXl xXD x $ $Xl x 3XDXK.u R x ` $ R.Z.~.eX-.~X-X-X-.`.a.eX-.e.~.e.a 3XV R.e.eXI B 3X1 R 3.~ a.~ R aX-.aX-X-XD.~ #X-X-.~.eX-.eX-XD.e RX- a aX, R.eX1X-.eX-XD.H aX-XI.e : x : t.Z.9 : 1.Z $XJ $.*XDXDXD a.aXI RXDXs s.0 ! 4Xx.A.XXgXk.zX@Xg.^Xg.c.U.U.#Xg.c.c.c.cXgXgXg.cXg.c.c.c.c.c.c.c.VXg.c.VXgXg.cXg.bXzXg.o.bXz N.b.X.R.R.$ ) q ( 5 (.$.X.5 F.rXtXt.r.rXt.r.r.r.r.r.kXt.r e.^Xz.^XzXzXzXz NXz NXzXzXz NXzXzXzXzXz.^Xz.^Xz.o.bXg.oXg.b.o.cXg.o.o.o.o.o.o.o.o.o.o.bXzXz.^Xz.^.^.b.^Xz.X.^.X e.r ~.8.8.`.8.` T :.Z B B RX-X- a.w.Z yXwXc y gXwXw ! v sXaXLXL.9XwXKXM # R.e 3X-X- 3X-.~ R.`XV.HX-.8 : .lXM `., | #XnXw v y.9 x $ c c 3Xl.8 3.u.u $ BXV 3Xe._.@Xn y :.5 ~.8.rXdXV.rXt.r.rXtXt.^Xz.X.b.b.oXgXzXzXz.o.b.o.tX9.I i.U.b.o N.b.b.b.b.X.^ e.b.b.b.^Xt e.rXt.rXtXt e.rXt.rXt F ~X*.`.o q.XXt.r e.rXt.rXj.^Xz.^.bXz.b _Xz.o.b.bXzXjXz.b.^ eXt.^.rXt.8 ~ ~X*.rX*Xk )X3Xk././ 5 q.$.z.$./ 5././X@./.U l.U.c.V.c.c.c.c.c.V.bXzXz _ _ _Xz _.V.c.V.c.cXg _.^Xz e e.b.#.c.c.c.cXg.c.V _.V.c.V.c.V.o.V.c.UXg _.c.cXg _XgXg.c.c.o.#.V.c.c.c.c.c.V.c.#.#.c.o.^ ~.r.R ( T.0 xXK bXLXG J.EXn M.;.s.vXf.v.v 2X=XZXe gX3X. `.u :.uXVXIX1Xd", +" lXz.bXz.bXz N.bXz N.b.b N.b NXzXz.b _.b.b.b.oXg.(.z.z.kX9X9XJ #XJXM x h.- nXK.M.'.,XK.,.-XMXB n n.'Xm.0 xXGX,XK.0.9 : : x c $X3 :XIX3 :X, R.e.e R B aX-X-.e 3XI R.eX-.eX-XV.e.Z RX1 RXI 3XDXDX-.aX-.~ aX-X- R aX-XIX1.~.uX-X-X-X-.e.~.e 3.~ 3.a.e.eXD.eX- a.eXIXIXDXI R.e a.eX-.e.* RXDXD.a c.ZXD $XDX,X, R aXIXDX,X,X,.W.0 9XU.'.z.AX .A.A dX@ ZXg.c.cXgXg.I.c.c.c.c.c.c.cXgXg.c.c.cXgXgXgXg.c.c.V.cXg.c.c.cXg.bXz.o.XXzXz.bXz.X.^XtXo.5X9 cXx c.r.r.r ~.rXt ~.rXt.r e.r e.r.r.KXt.rXt.^XzXzXzXzXzXzXzXzXzXzXzXzXz.bXz NXzXzXzXz.^.b.b.oXg.o.o _.o.o.oXg.VXgXg.cXg.o.oXg.o.oXzXzXzXzXzXzXz.b.b.^.bXk.kXtXt ~ ~XVXI.`X5 g.Z B.*.e B B.*.DXl 'XwXwXw gXmXUXU.n b 8XaXa oX..- : x t RX- a.e R.~X-XI 3 c.eX1XD.l ` k V.- [.S x uX+ vXe v.9Xe.M.a R.a cX- R RXI.eXI.~XD < UX=.@ 1 .<.@ . %XnX4 [ yXr.w.MXD a 3X-XVX-.M u.s ^X+ aX* ~Xt.r.u.rXtXtXt eXt eXtXj.k.^ N.o.^.^.b.tXkXg.UXg.b NXgXkXj.rXt ~ e e.b.b.VXz e.^.b.b.^Xj.r e.rXtXtXtXtXt.r.r.r.8.r FXt.zXkXj.r.rXtXtXt eXt.b.bXz.bXzXzXzXz.U.UXg.^ eXjXd.^ NXtXt e.r.r.rXtXj.X NXgXgXk.zXk.z l.UXg.I.U.z q.z.z.U q.U.I.c.c.c.c.c.c.c.c.c.c.c _Xz _.V.cXg.V.c.cXg _XzXz e e.b.o. Xg.c.c _Xg.V.V.V.c.c.c.c.c.cXg.c.V.c.o.c.cXg _.V.cXg.c.c.U.c.c.c.c.c.#.#.U.cXgX&X X .I.UXg.^ eXt.rXt.k.r.uX9 qXM TXD.Z.'.' bXG 0 J JX> b v o.9X5 `X5.a.u 3X-", +" l.b.bXz.bXz.bXz.bXz.bXz.b.b.b.b.b.b.bXz.b.b.b.b.b.o.X.XXV.r cX-.a V x ` $ 1.}.Z 1XDX,.Z 3XM.YXBXw.[Xw x xXD aX,.Z.wX,XD.e.`.}XIX- 3X-.~X-.eX1 R.a aX-.a.} cXN.e.G : a RX-XI a.` R R 3XI K : c KXIX1X-.~.e BX- R.a BXK.% KXV 3X- R.eX-.eXD.u.e R.e., K B R.~.aX-XDX-X1 a RXN <.a.MX,X,XDX, 3XD RXlXNXIXI.eX5XDXIXDX, 8 $ 'Xl T T.8XdXt.o N.b.b.b.b.o.bXz.o.c.# l.cXg.c.c.c.cXg.c.c.cXgXg.cXg.cXg.c.c.V.cXg.c.VXg.b.b.oXgXz N.b.bXz.^ eXt.rXVX*.rX*.r.r.rXk.I.6.r.rXt.r.r.rXt.r.r.KXt.r.r e.^XzXzXzXz.bXzXzXz.^XzXzXzXzXzXzXzXzXzXz.b.o.o.o.cXgXgXg.V.VXg.VXgXgXg.VXgXg.VXg.VXgXg _XzXzXzXzXzXz.^XuXx.t.R Q.R P g.2.RXy Y.G.ZX1 BX- aX-.e.e.* R 8.Z.Z 8 R.D.ZXDXD.*.Z.nXKXwXX # c.*X-.a.e.e.eX-XV.`.~ aXD.i #XX ` 1 x U .Xq .Xn.F ..J.C.{Xf.x.x.+.+X% = = y.,XJ.8XIX-.a p.v...YX, c ~.r.rXtXtXtXt.r.k.rXt.r.^.^.k N.X.r ~ ~./.I.b.oXz.b.bX9.b.r ~ ~ F ~XjXz _ _ _XzXzXz.b.bXjXt eXt.rXtXt.r e.rXtXt.rXV ~ ~.rXt eXt.r.r.r eXt e.b.bXzXz _Xz eXzXg.c.b e eXd.b.b.bXdXtXtXt.r eXj.^.b.b.bXg.UXg lXg.c.c.c.c.c.c.cXgXkXg.cXg.#.c.c.V.c.c.c.c.c.U.c _ _Xz _.V.c.VXg.c.o.V.oXzXjXj e.o l.IXg.c.V _.c.c.c.c.c.c.c.c.c.c.c.c.c.c.V.c.c.V _.c.V.VXg.c.#Xg.o.cXg.c.#.U.cXg.c.I.U.o.U.c.#.X e.rX* ~Xo 5 ) PX9.rX* 3.` RX1.Z h.Z 1.ZXsXG b s.Z.'.9 s.Z s T x", +".U.b.bXz.b.^.b.b.bXz.bXz.b.b.b.b.b.b.bXz.b.bXz.b.o.^XkXg.k ~XV.`.a ` VXM x c.Z.w.u R $.Z ` ` XBXwXH.YXlXe h x.w s.n 1XD.}X-.8 3X1XI R.D.w $.w $.Z.MXD t #XN.3XN ` 3 3.eXI.` RX1XI.~X1 K.3X$ $ 3X1.e R aX- aX- R RX#XcXN ` RXI R.e a.~X,.a a R hXN $X-.a B.e RXI R.e t RXNX,XD.ZX,XD 3 R.DXIXDXlXNX1.e #.~X,.a.a R BXl '.nXJ $.rXt.b.^.b.o N.oXg.b.b.VXz.c. .o.c.c.c.cXk.c.c.c.cXg.V.cXg.c.c.c.c.cXg.cXgXgXg.c.bXzXg.oXzXzXzXz.b N e.rXtXt.rXtX*.rXt.rXz.6.^ eXt.r.rXt.r.r.r.r.^.k.rXt.r N.^Xz.^XzXzXz.^XzXz.b N.bXzXz.^XzXzXz.^.bXgXg.o.cXgXgXgXg.oXg.c.o.VXg.o.V.c.V.oXg.V.c _.bXzXzXz.b.bXz.I A.t.R 5XxXxXx (Xx 'XJ (X,.*X-X-X-.e $ $XD.' RXl.w RXDX, h 3X, R.D.n.]Xw ` 1XM.a x hX,XI :XM 3X5 3 xXD `XM.[ VXp h E.m E vXqXp p..XAXf.;X8X> W MX>X>Xe.wXl h 3X- R <.d.).sX> h c.8.rXtXt.r.rXt.rXt.r.k.rXt.k N N.K.r.^ FXt.X e eXz.b.b NXk ~Xt F F ~ NXz _Xz _XzXz.^.bXzXj.r eXt eXt.r eXt.r e.r ~ ~ F.8 F F.8.r.rXt.rXtXt e.bXz.bXz e e.^.bXg.bXzXjXjXzXzXo.bXd.r e.r.rXjXj.^.bXzXgXg.cXgXg.c.c.c.c.V.U.cXg.c.c.c.c.c. .c.c.c.c.c.c.c.c.c.V _Xz _.o.cXgXg.o.V.c.oXzXzXz l.b l l.#.c.cXg.V.c.c.c.c.c.V.c.c.c.c.c.c.c.c.c.cXg.V _.cXg.V.c.U.U.c.V.c.V.V.cXg.V.c.c./Xg.cXg.UXg.zXjXt.^Xk.A.& qX*.rXt.K.r ~.8.8.8.8.8X1XIX1X1.D '.wXG.OXD.' 1.' s", +"Xg.b.oXzXz.bXz.bXz.^Xz.bXz.^Xz.b.b.bXz.b.b.bXz.o.b.bXgXg N ~.^X-.` #X3XMXB.l x h h.w 8X, $ 1 1 Xc.gXw nXG.wXG.n oXK.' 'XD a.eX-.~.e 3.Z.W x sXa.w x s t t #XS.e :XNX-XI.eX-X-X1 3.~ aX- K :.3.S.e 3 3XIX-X-.e 3 R $XHX5Xc 7X-XD.~ R.~X-.Z RX- a.% YXD.- RX- R a R.} aX-.aXNX, cXD 3.ZXIXl c 3 3.ZXNXl V T a 3.uXIX1XD.n.n.].0XI.r N N.X.o N.b.c.c.c.oXgXg.U.IXgXg.c.c.c.c.c.c.cXgXgXgXg.c.c.VXg.c.c.VXg.c.cXgXgXgXg.cXgXzXz.bXzXz.b.bXz N N N.K.^.^X* ~ NXk qXj.r.r.r.r.r.r.r.r.kX*.r ~ e.^.^.^Xz.^Xz.^XzXz.^.^.b.^.^.^XzXz.^.^.b.o.o.o.oXg.c.oXg.oXg.V.oXg.V.o.o _.o.V.o.o.o.o.b _Xz.^.^.^.^Xz.^.^Xg.k.r.r.r.H.`X1 B.0.0 : R RX1 RX1 x 3XJ TXJXKX.Xc.9Xc.,X,XD B.D.w.0XUXc : `X,XcX, : h xXJXD `.Z ` h kXKXB.- 1Xe E U t.M.Z v._.W._X>.xX4._.YXpXnXn.M 8 c a RX- a < E.)..XG h R 3X*.rX*.rXt.r.k.rXtXt.rXt.rXt.X.k.8.8X*.k.X F.oXz.b NX9 ~ ~ e.r eXz.b _Xz.b.b.b N.b.^XtXtXjXt.rXjXjXtXj eXt.rXt.r F.`.k.5.r F ~Xt.r.rXtXtXj.^.^Xj eXj.b.o.b.b.bXj.^Xz.b.^ lXd.r.rXt e e.^Xz.b _Xg.c.c.c.c.c.c.c.c.U.c.c.c.c.V.c.c.c.IXg.c.c.c.c.c.c.c.cXgXz _.oXgXg.c.c.b.bXg.b.b.bXj.V.# i l.U.cXg _.c.c.c.c.c.c.c.c.c.c.V.c.c.c.c.c.cXg.o.o.c.c.VXg.U.U.V.c.c.c.V.c.c.c.UXuXu.o.cXg.c.U.QXg.IX@.&X9.^.r ~Xj.r N.rX*.8 ~.8.8 ~.8.8XVXV.`.k D.KX1.u : ' ' '", +" l.b.^.^ N NXz NXz.b NXzXzXzXz.b.b.^.b.b.b.o.UXz.bXzXgXkXgXj N F.`.8X3 `XX .l x 8Xl.DX,.Z h.-.F .,X<.1Xc s v oXw.>.9.9.ZX- R RX- B.w.w b.E o.q y o.Z U a :XSX3XH IX- 3 R.e 3.eXD.aX- 3 K kXD YXJ 3 RXDX-.e R.e cXH :.~ 1X# `X-.~X- B.e.u.e R.H n.3X. `.e a a t a.M R a.eX. :XIXIXD cX5 c 3.e R :XcXK.].} RX-X-XD.DX5 '.0XPXVXd.k.b.b.b.b.o.o.cXg.U.c.c.c.U. l l.U.c l.c.c.U.U.U.U.U.U.U.U.U.c.U.U.U.U.U l.U.U.U.z.#.zXgXg l.XXg.oXgXxXgXgXg.XXx N.^.^.KXj N.^.k.^.K.^.k.k.^.k.X.5.^.^ N.X.XXgXxXgXgXxXgX9XgXgXgXgXgXgXgXg.U.U.U.U.U.U.U.#.U.U.U.#.U.#.U.U.#.U.#.U.#.U.#.#.#.U.U.# lXg l.cXgXkXk.z.IXx.X N N N.k.kXt ' g ' $ $ c c.u cX5 $ $ $XlXM.9 x `XK s x.DXl 9.9XUXH.[X3 XX 1.i c h x h $ 3XM h 1.[.- [XBXq xXq U U.i.9 x XqXpX+.;XrXnXnXw.@ ^XL x c cXIXDX, U.W .XnX> v 3 cXtXo.k N N N.k.5.k N.^Xo NXo.k.5 N.kX9Xt.r ~.bX9XgXkXx.k.k.kXj.b.o.o _ _.o.o.b.o.o.o.^XjXjXjXj.X.bXjXd.kXjXt.k ~.`.`.5.z.`.`.`.8.rXtXtXt eXtXtXdXjXz l.6. .b.b.^ N.b.bXzXxXt.r.r e.r e.^XzXz.b.o.V.V.c.c.V.U.c.c.V.c.V.c.V.c.c.V.o.#.VXg.c.c.c.c.V.c.b _XzXz.cXg.VXg.o.^.bXg.o.oXzXj eXj l l.UXg.o _XgXg.c.c.V.c.c.c.c.c.c.c.c.c.V.c.c.V.o _.c.c.cXg.#.c.c.c.c.c.VXg.c.o.VXg.#.VXg.c.UXg i Z d.&.oXt.r.rXtXt.r.X.r.r.r.k.r.r.r.kXdXt F.R.R./.k ~ ~.8X1XI.u", +"Xg.b.^.b.b.b.b.bXz.b.bXz.b.b.^.b.o.b.b.b N.c.f.#XzXz.o.cXkXz N.8.8.e # V.l #XMX,X,XDXsXIXD.l 1 1XB ` n nXw.j.>XwX0.9.'.Z.* t.eXD s.w b & H w o.q.9.wXa R xX5 x c a c a.a R.uXD 3XI RXD 3 $X,XI 3XIXI.a 3X1 3XDXDX1 3.a $.aXI.} 3X1XI 3 ' 3XD 3XI.u.a 3X, 3XDX,.Z $ 3XD.Z $ $X5 c : :X5XI 3 3 c.a $XD $X,.a h.u.Z.n g.0XO.5.5Xo.XXk.zXx l l.U.I.#.I.#. .I.# i.#.#.U.#.U.U.#.U.#.U.U.U.#.U.U.U.U.U.U.#.U.U.U.#.#.z.U.I.# l.XXg.o.o.o.X.o.b N.^.^.k.k.k.k.kXt.k.kXjXjXj.k.k.kXt.k N.^Xj.k.^.b.b.o.b.b.b.b.b.b.b.b NXzXzXz.b.bXgXgXg.oXz.o.oXg.oXgXg.VXgXg.cXgXgXgXgXgXg.cXg.c.VXg.cXg.oXz.b NXz.b.b.bXx.^XdXtXt.r.8.8X1.HXOX5.Z R RX- R.~ c a aX- R R hX-.M $ hXD RXD.D.wXKXwX3XX #XMXM # $ 3.a.a a.M.a.aXMXc.-.-Xq E U x a.aXD.ZXD U.M.F.@.pX>.j uX+Xn %.WXe.M.}.M u < uXF....XnXw x.`.uXt.k.k.H.KXt.kXt.k.^XdXtXoXt.k.K.K.zX9 NXtXxXg.^.K N.kXd N N.b.o.oXg.cXg.cXgXgXgXg.o N.kXt.^XxX9Xx N N.^Xo.K.kX*.rXV.K.r.r.rXt.k N N N.X N.bXg l.U.#X Xu l.U.z.U.zXk.o.z N.b.X N.b.oXk.U.U.#. . .#. . . .#.#.#.#.#.#.#. . .#.#.U.6.U.#.#.#.U.#.#.#.VXg.cXg.U.U.U.c.o.o.cXkXg.o.b _Xj _.U.U.Q.U.V.o.U.c.cXg.c.c.c.c.c.c.cXg.c.cXgXg.c.V _.bXg.V.c.o.#.oXg.b.o.cXg.o.cXgXg.c.cXg.^.o i.zXz.zXg.z.^.^Xj.r eXtXj.X.r e.r.r.r.rXV.H.rXd ]X@ )Xt.^.rXj.k.r.k ~", +".oXg.o N.b.b.b.b.b.o.o.b.oXg.o _.bXg.b.X.o.o.UXg l.c l.U.I.z.z N.k 3X*.,X3XB XK 1.' 1X5 $ xXHXH 1.-.- nX<.SX. [X. =XUXKXG s.w s.'.!.+.T S.@X6 =.+Xm.9Xl.D.H.wX,.a.M $ R RXDX, R.ZX, RXIXDXIXD 3X-.aXIXI $ R R RX1.a.a a.uX-.aX- R.~X-XI $X1.~ a.eX, t.ZXDXD.eX- a tX,XD.aXDXDX-XDXD.uXIX-.a.` R.e.ZX-.a.a R.a R.D $.0XU.5X1.u.u.^.^.bXz.b.b.b.c.c.cXg l.cXg.#Xg.c.cXgXg.c.c.c.cXg.c.c.c.cXgXg.cXg.c.c.cXg.o.cXg.c.c l.zXg.bXzXz.b.bXz.b.^Xj.rXt.rXtXt.rXtXtXt.r.r.r.r.r.rXt.r.r.KXt ~Xt.^ N.b.^Xz.b.bXz.b.bXz.bXz.bXz.b.b.o.VXg.o.bXz.o.o.cXg.c.oXgXgXgXgXg.cXgXg.oXg.oXgXgXgXgXgXg.o.b NXzXzXz.b.b l.k e.r.r.r F.8.H.`.0X5 $ 8X-X-X- RXIXD.e R aXDX, R.a $ cXDXD R.W.nXKXwX3XX #XMXM.l c.lXMXc c $ xXM V V.gXB x.M h <.aXD 3X, U.MXpXn .Xr.Y U.9Xf...WXs u.M uXsXe p pXbX= 0XK., 3.`.8Xd.r.^.uXt.k.k.rXdXtXt.r.kX*.r.r.K.^ ~.^X9.XX*.k.K.u.k.rXj N.b.b.^XzXzXzXzXzXz N.b.k eXt.k./.5 NXk.X.K.K.r.K.`.~.`.`.~.`.~.` F ~.r.r.r e.k.^.^.bXzXgXg.^.bXz.^Xj e e.b.r.r.r.r e.^Xz.b.oXg.cXg.V.U.c.V.U.c.c.U.c.c.U.c.c.c.U.U.#.c.c.c.c.c.U.U.c _.o.c.c.c.cXg.oXgXg.U.U.c.cXg.oXz l.U. .Q.#.U.U.U. .U. .#. . . .#. . .#. .I.#. . .I.U.#. .I. .z i.#.I.#.6.I.I.U.z.Q.#.z.z lXgXk. .b l.I.6.I.UXk.o.b.^ eXj.bXtXd.k.r.k.rXd.^ ) ].$ N.k N N.^XtXt e F.r", +".z.z lXgXgXgXgXgXgXgXgXg.cXg.cXgXg.cXgXgXgXg.o.o.b.o.o.oXk.UXk NXt ~.`XM V .lXq h $ h.D.'Xh., n.aXD 1 : `XMXBXc.[.YXn.wXLXe.n.s.jXh MX: r.s.T.T.>XO.2.0 gXlXcX, a.M.M.e $X,XIXcX5 R 3X-Xl $ 3X-X-.e.~ 3X-.e aX-X-.e RX,.eX-.e a.~X- 3XIXI a RX-XDXIX3 $Xc 1 ` :.a :X3 : : : )XJ.]XK.u RX- R RX-X,XD.M RXD.aX,Xa.n g.]XoXt.H.r N.bXzXxXz.bXzXk.cXg.c.c.c.c.I.c.c.cXk.cXk.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.cXgXgXg.U.U.oXz.^.b.^Xz.^.b.^.r eXtXtXt.r.r.r.r.rXt eXt.rXtXtXt.rXt.^XjXt.^XzXzXzXzXzXzXzXzXz.^XzXz.^Xz.^.b.o.o.o.o.b.V.o.o.o.c.o.o.o.o.oXg.o.V.oXg.V.o.o.V.V.o.V.oXg.o.o.bXzXz N.^.b.bXg.^.rXd.r.r.8 ~ ~ B.DX5.w.D R RX-.a R 3X- a.e R.aXD R hX,X,.} 8.Z sXK nXcXc.-.-XcXBX3 xX#X#.-XB k.,XZ.SXh.h k h h h R.aXDXDX1.a U vX4.<.@.jX,Xp.@X6.s p.. p.s.sXn.sXb.s 0X>.> gXI.HXt.u.r.rXtXt.rXd.uXtXtXtXt.r.rXtX*.k.K.^.K.5.K.5 )Xx.5 (.X N.bXz.b N.b.bXz _XzXz.b.b N.k FXx.f.A } 5 5 5 | ).$XV.` #X9 #.`.`.8.rXt e.rXj.b.o.bXz.bXz.b.oXz.^.^XjXj.r e.oXt.k.r.r.^Xz.b.b.V.c.c.c.c.c.c.c.c.c.c.c.U.U.c.c.c.c.c.U.#.c.cXgXg.c.c.c.c _.o _.V.o.o.b _.o.o.cXg.bXzXzXj e.o.o.U.cXgXzXg.V.c.c.V.c.c.c.c.c.c.VXg.c.c.oXg.cXgXz.V.c.c.cXg.#XgXgXg.6. .&.I.6.6./ AXk l.o.z.b.^.^ iX .#.I.#.#. .UXu.#Xu. Xg.b.X.XXxXk.A 5.&Xo.5.X lXg.z.z lXkXx.o", +".o.o NXz.bXzXz.b.b.^Xz.b.^.^Xz.b.bXj.bXzXz N.o.^ _.bXz.b.oXkXk.XXt.8.8 3XJ .l.l $ $.WX,X,.'XH.-X,X, 3 # ` .-X3 ` nXc y.9 9 JXGX>XC.@.@ %XA {.xX0Xm.n ' 8X1.DX, a.a.e XD : 1 $ T D DX5X. :XKXJ.e.~.a R a.a c 3XI.e.uXD 3 aX-.~ aX-.~ 3X1 3 a.~X-XDXl.ZX-XlX, hXlX,X,X,XMXlXl $ : : T 3X- RXD RX- $ R.a.a t t.Z.n.0 4X5.%.z (.R A.R.t.6./Xg.b.o.c.c.c.c l.c. Xg.c.c.c.c.c.cXgXg.cXgXg.cXg.cXgXgXgXgXgXg.cXgXgXg.c.c.c.z.b.b.b.bXzXzXz.^.^ e.rXt.r.rXtXtXtXj.rXtXt.rXt.r.rXt.r.r.^.k.^.^Xz.^Xz.bXzXzXzXz.bXz.bXzXzXzXz.b.o.VXg.o.oXgXgXg.b.cXgXg.o.o.V.oXgXgXg.oXgXg.VXgXg.VXgXgXg.oXg.oXzXz.b.b.^.bXgXd.r.rXt.r ~.8.8.HX1.0X5XD R RX-X- R RX,.e R.eX,XDXD.u x.Z 3 <.D.'.EXOXUXw g.jXw k.9X3X7XX `XB ` 1 k.[.Y.iXM.Y RXD.uX1 R.a.ZXq.x WX> MX,.9.E.@ b 0 . . 2 0Xn..X6 ^XC HXUXwX5XxXx.$.R 5.R ( 5.$ QX9.R 5.&XtXtXt.r.r N ) q D q I.A 5 : 5 qXg NXzXz.b.bXz _Xz _Xz.b.b.b.^.k.kX9 q.5XM.KXk.u.rX*X*X-.8.u ~.`.8.r.r.rXj.k.^.^.b.^Xz _.oXzXz.^Xj.r e.r e.^XkXjXj.rXt.^.b.bXz.V.c.V.c.V.c.c.V.c.c.c.c.#. . i. .U.c.c.U.c.c.o.cXg.c.o.oXzXzXz.o.V.o.V.o.VXg.c.c _Xz.^ e e.oXg.#.c.oXz.o.V.c.c.c.V.c.c.c.c.c.c.c.c.V.c.c.c.VXz.o.c.c.cXg.#XgXgXg.f.6.t.6.fX .&X&.& f.Q qXz.o F.#. .U.c.U.c.U.U. . i.6Xg.XXg././X Xk.r.k.r.r ~.r.b.^.^.^.^XgXd", +".^ lXzXz N.^.c.bXz.b.b.b.cXg.^.bXzXg.oXk.b.b.b.o.UXg _.b.bXgXkXkXt ~.8.`.lX3XM # h U h.ZX,XcXl aX5.} $ 3 h : c.l 1 k.,X.E.w.w R B.e B t.eXD a 3X,X,.eXIX, $ a 3XDX- 3 R R.e.~ 3.u $ TXlXKXlXcXK `X1 aX-X- aXI R 3X-.e.eXD.e a R.e.e a.e.e.aXI.a aXI.aX,.e.~.~.a RX-XDXD.ZX,.M R t.M.w.w gXD.] ).R.XX d.I X AX@.o.o.^.o.c.cXgXg.V.#.o.c.c.c.c.c.c.c.c.c.cXg.c.c.c.c.c.c.c.c.c.c.c.cXg.o.cXg lXz.bXzXzXz.b.b.b.^.^Xt e.r.rXtXt.r N NX*.rXt.r.rXt.rXtXt N N.b.bXzXzXzXzXzXzXzXzXzXz.^.^Xz.b.b.o.VXgXg.V.o.o.o.o.oXg.V.o.V.oXgXg.VXg.VXg.o.VXg.VXgXgXg.V.o.VXg.o.^.^.b N.b.b.XXd.rXd.r.r.8 ~.8.H B.5.n.Z.aXD R.aX-X- 3 aX-.e.aX- cXD c c.}X,.w s sXP y 9.9 9Xw y.-X7.gXq.F xXMXqXBXB.-XB.l U.-.-.a 1.e.` R.Z._.jXn.x.h.j.uXl.jXC J JXi %Xi o w H.;.; HXm g g.kXJXx.R.$.|.| 5Xk.R.& 5.z q.A.^XtXjXtXjX9.$.$ ) :.K.5.5.kX9.XXx l l.oXzXz.bXz _Xz _XzXz N N.X.$ qXxX9 ).5XMXXX9 cX*.`.8.`X-.` ~ ~.r eXdXz.b.b.b.b.bXz.oXj e e e.r e ~Xj NXkXtXt.r eXz.bXz.bXg.c.c.c.c.c.c.V.c.V.c.c.#. i i. .U.c.U.U.c.c.o.c.c.c.b _ _ _.bXg.V.cXg.V.b.V.o.b.b.b e e e.bXg. .c.b _.V.c.c.c.V.c.V.c.c.c.c.c.c.V.oXg.cXg.o _Xg.V.c.c.c.I.oXgXgXk.z N.b.XXkXk NXx.X N NXzXj.^.o.o.cXg.c.V.c.c.cXu. .#.U.U.UXu.f.rXj.kXt.r ~Xt e e.^.^.b.bXj.o", +"Xg.tXk.b.b N.6.I.b.oXzXg i.IXz.b.^. .b.I.^.b.b. ./.c _.bXz.oXkXk.^Xt.8.8.` V 1.i h $.aX,X,.ZXlXlXDXI.ZX,.a.a 1.lXc.[.g.j.jXp HX>.@ p.)Xe._..XbX>.jXL.Z 8 B R a aX-.aXDX, T :Xl : :XcXl : ` $X- 3X-X-X-XDX- a.u cXMX5 1 c x.aX-.~ a.~ 3X-XDX-X-X- 3 aX- a R.e RX-.a.e.a.a.aXDXIXIX- R R R R RX,XD $X,.a.M t.Z.w 9 TX1XV.r eXd.^XoXz.z.b.b.^.b.oXz.o.c.V.cXg. .c.U.c.c.c.c.c.c.c.cXgXg.c.c.c.c.c.c.c.c.c.cXgXg.cXgXgXg.cXz _XzXz.^Xz.bXz.b.^.k.rX*.r.rXt.r.XXgXgXt.rXtXt.rXtXtXtXg.oXz.^.bXzXzXzXz _XzXz.bXzXzXzXz.b.oXgXg.o.o.oXg.o.o.o.o.o.oXgXg.o.o.o.o.oXg.V.o.o.VXgXgXg.o.VXgXgXg.oXzXz.b.^Xz.b.oXd.H.rXt.rXt ~.`.HXD '.n 8X, $X,.ZX-.ZXDX,X5 3XDXDXK.ZXDX5X-X-XD '.w.n.nXL s b yXqXnXq.[X7 1XpX7.SX%X7X<.S [X% kXhX#.,Xc.]Xc.[ [ M.<.@.jXw.DXV &.> &.jX>X>.E &XrX0 y J b O gXJX1.H.u NXV.k.r : I ~X5.r.K.k.kXt.rXt.r.rX*.5 ).KXxX3XJ D q.RXoXzXz.bXz _ _Xz _XzXzXz.bXz.b N.o./.f.&.f.f.f q qXX q ).8 ~X- F.` F.rXjXdXz.b.b.bXjXz.oXz.Q.UXg ~ eXt e.r N.bXg eXt e eXz.bXz.o.V.V.V.V.c.c.c.V.c.c.c.V.V.c.c.V.c.V.c.U.U.c.cXg.c.o.oXzXzXz.b.o.cXg.cXg _Xz _Xg.oXzXz e.I i.#.o.#.cXz _.c.c.c.c.V.V.c.V.c.c.VXg.V _Xz _Xg.V.oXzXg.o.VXz.b.c.b.oXgXkXu.z./X@X@././ q./.IXk N.bXg.c.c.c.c.V.V _.V.VXu.#.c.cXk.cXkXgXk.o.X.^.^.^ e.r.r e e eXj.^Xj", +"Xg d.oXz.bXz./.UXz.o.bXg. .#Xz.b _.U. .#.o.^.oXk.oXz.^.b.b.o.o.I N.r ~XVX-XX VXM.l $ hXK k $X,XlX- 3 3X,XIXD.M $.lXM XpXrX+ ^ . %Xn h u.W p...@ w 0.wXsX- aX- R.eX-XI cXDX5 c.u $ cXD $ c.} R RXI.e.~X,.eX-X- a.eXDX-.eX-.e a.eX- aXIX- c.e.~X- 3.~ a.e.a aX- aX-X-.a RXIX-XI.aX- R R.a RXDXD R.D.M R.a.MXaXaXKX5.H.k.rXt.^.X _XoXz.b.b N.b.b.b.b.cXg.U.o. _XgXg.cXg.c.c.c.c.V.c.cXg.c _.cXg.U.o.cXg.c.cXgXg.c.o.b.c.b.b.bXzXz.bXz.^.b.^.k e.r.r.rXt.r.r.r.r.r.rXtXtXt.r.r.^Xg.XXzXz.bXzXzXzXzXzXzXzXzXzXz.bXz.b.o.V.o.VXg.VXg.o.oXg _Xg.V.o.o.oXg.V.VXg.VXgXg.V.o.c.V.V.c.o.c.o.c.o.^.^.bXz.b.bXoXd.r.r.rXt.k.`.8.HX1X5.'.DX.XKX,.9 mXc.e gX,.Z.~.2 : 1 R.,.e.~.wXyXs.nXa 1XL x.jXq E E.F.p.[.p.-.g [.SX.O.g.9XKXlXK `XcXpX%.J.@XpXK.DXIXU.> g.q.; &Xr.j o o v sXaXyXOXU.`.8Xt c.k cXx P ,.KX*.u.r.r.k.r e.rXt.r ~.rX9 `X3Xo.KXoX*.^ N.b.bXz _XzXzXzXz _Xz _Xz.b.bXz.b.b.X.XX9.XX9X9.^X*X*X*.8 ~.8 F.8.r eXj.^XzXzXz eXjXzXzXz.c.U.o eXd.r.r.k.b.X N.r e.rXj.b.bXz.V.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.V.#.c.c.V.c.o _Xz _ _Xz.b.c.V.c.c.V.b _ _.c.o NXj eXj.#XkXg.#.bXz.VXg.c.c.c.c.c.c.V.c.c.c.V.bXzXz _ _Xz.bXz.c.VXz.bXgXg.b.b N l.z q./.$.I.$./.& q.t q.oXg.U.o.o.VXg.V.VXz _Xz. .cXg.cXgXu.U.oXg.b _.c.U.VXg.c _XzXj e e e e", +"Xz.I NXzXz N.cXg.b.b.^.bXg.bXz.bXz.bXz.^ N.b.bXz.b.o.o _.o.b N.IX@.^.r.8.8.a `X3XB #.-.- x 1.Z x 3 3XDXl CX,.D.aXM.l.l XpXrXnXbXb.d.*X, tXe.) L.; J.s.s.Z $.aX-X1X-X- BXI 3 B 3 a RX-.a.a a a a 3X-X- 3X-X-.~ RX-.u a.*.eX-X-X-X- R 3.~ c.e aX-XDXDXDX- a.e.e R a.a RXIX- aXIXI.e `.' aXlXDX,XDXD ` c x.n.w 'XJX1.u ~XjXd.b.^.^ _ N.b.b.b.oXz.o.b.b.o.cXg. .U.c.#.#.c.c.c.U.6. .c.c.c.c iXgXg.V.V.6 i.U.c.c.U.o.c _.6.b.bXzXzXzXz.b.^.b.^Xj.rXt eXtXtXt.r.r.r.rXtXtXt.r eXt N.o.b.^XzXzXz.bXzXzXz.bXzXzXz.^.bXz.b.oXgXgXg.oXg.VXg.oXg.o.cXg.o.c.c.o.cXg _.o.VXgXg.o.o.c.cXg.c.o.b.c.b.bXzXzXz N.bXg.r.r.r.kX*.r.r.H FXaX5.n $ TXJXD :X,XK RXlXJ.w.e.9 :XD.D DX5X-.0.] sXDXlXs.w v.jXG.W E.mXqXq .FXBXB.Y.p.[ ._X7.9 U $.e R.M.M._Xn...@.T g.HXVX; g.! gX0 o.9 o.'Xm.nXaXaXy 4.G.2., 5 I 5 I q.5 qX-.8.`.8XtXt.rXt.rXt.r.r.u c 3XlX1 cX*Xt.k.b _XzXz _Xz.bXz.bXz.bXz.bXzXzXzXz.b.b.b.b.b.b N.k.r.r.k ~ F.8.`.r.r.r eXz _XzXz e.^.b _.^Xz.^ e e.r e.k.b N.^.^ e.r eXjXz.b.b.V.V.c.V.c.c.c.c.V.c.c.c.c.c.c.c.c.c.cXg.#.c.c.o _ _XzXzXzXz _ _.cXg.c.c.oXz _Xz.c.^.bXz e eXz.V.c.U _Xz.V.V.c.c.c.c.V.c.U.V.c.V.oXz _ _Xj.bXz _Xg.V l _XzXgXg.^Xz.XXj.X N.^.b N.^.k N.^ N N.o.oXg _.o.V.V.V _Xz _.^.U.^.b.o.o.IXz e e _ i.U.c.c.V.U.c.U.V.V _.oXg", +" NXg.b NXz.b.^.b.bXz.b.b.^Xz.b.bXz.b.b.b.b N.o.oXz.bXzXz.b.b.b.z.A dX .AXX |.5XZ } XM $X,.MX, $ cXI cX5.*.D.M x h c.}.iXBXq.j.< .X6 t.*X, B.Z.s 0.;.4.@XGXK.W 1X,XD BX- R.eXDX,XI R R.aXDX- aX-X-X1X- a RX-X-X- aX- a 3X- aX- t a RXI 3 R $.~ R R 3 T ` : $X5 c cX-.a R 3.eX- R 3 aXK.KXH.,XwXJ.- 1X..OXcXy s T.0.8X*XtXt.b.bXzXz.XXz.^.b.^.b.bXz.b.b.cXgXg.#.c.cXuXu.U.c.c.UXu i.c.V.c.UX&.U.c.U _. . _.V.c.#Xg.#.b d.oXzXz _XzXz.bXz.^XjXt.r.r.r.r.r e.rXt.r e.rXt.rXt.rXt.^.X.o.^.b.bXzXzXzXzXzXzXzXzXzXzXz.^.b.c.cXg.o.VXg.o.o.o.V.o.cXg.o.o _.VXgXgXg.c.c.V.o.V.V.o.VXg.V.o.c.U.bXzXz.zX&.b.X.X.rXoXt.k ~ ).u.HX1 TX5.w B.* a.* R 8X,XDX,.e R.e BX- RX1 R RX-.DXaXa.n s.wXe v HXn p E U E E h EXq X+.p.-X%X% WX+XeX, UXD x.1.g._Xf.@ yX,X1 (XyXwXyXPXy n s.9 'XD 8 BXa.]XO.|.u.u.kX9X9.5.5.u.`X5XI )X-.kXtXt eXt e.r.u.rXI 3XJ RX5.8.rXtXz.bXz _XzXz _Xz.b.b.b _Xz _XzXzXzXzXzXz.bXzXz.b N.kXt ~.r.kXk N.r e eXj.bXzXj eXz.^XzXz _.oXz.^XjXjXj N.b.k.^XtXt.r e.^XzXz _.c.c.c.c.c.c.V.c.c.c.c.c.c.cXg.c.c.U.c.c. .V.c.oXzXzXzXzXz _.bXg.c.c.cXg _XzXz _Xg.o.o.^ ~ e.^Xg l.cXzXzXg.c.c.c.V.c.c.c.c.c.V.o _Xz _Xj e.cXg.bXg l.V l.Q l.oXgXx.^.XXxXo.X.X.b N.oX9.^.b.b.cXgXgXz _ _.o _XzXz _Xz.z.b.b.^ e.^ eXj ~Xz. _Xz.V.#. .#.U.c.U.#.#.U", +".b.o.o.bXz.o.^.b.bXz N.oXz.b.b.^ _.b.o.b.b.b.b.bXz.o.#. .b.b.b.c.tX@ q.zXx 5 c YX#Xl.lX,X,X,.Z h :.}.Z $ R.DXDX,X, h.}.} xXBXr.C.J 8 B.H.~ C.WXb ^.@XCX0 = M nXwXcXKXc.9XK R.DX, R RXDX- a.MX- RX-XDX- 3.e a.~ aX-.~.aXI aX-.eX-.~X,XDXI 3.e.e B a c $ :X5 :Xl $XIX-XI RX-X-X1X, a xX,.Z xX, x.Z.wXJ.0 gXUXPXU.`X* ~ eXd.X.^.XXz.bXg.^.b.o.^.o.b.b.o.b.UXg.6.c.c i i.U.c.c.c. .6.c.U.o. .#. .V.V.c i i.UXg.c.U.VXg _ i.z _Xz.^.bXzXz.b.^ e.r eXtXtXtXtXt.r e.rXt.r.r.r.r eXt.^Xg.XXzXzXzXz.bXzXzXzXzXz.bXzXzXzXz.b.o.cXg.oXgXg.o.V.oXg.oXg.o.V.cXg.c.b.c.c.o.VXg.c.cXg.o.VXg.c.c.V.bXz.bXz.zX&.t ZX@ A.A 5 5 f.R ].0 ]XO $X, t RXDXlXlXDX,XI.Z.~.eXDX1.*.eXI.a BXD.w.Z 9XG.9XGXG.Y HXe U E U.d h.W h E.i 1XqX7.y.TX<.1.YXp xXq t nXp.. J ^.j !.H DXy g ( '.0Xl.Z.Z B RX1X1.D ' (XU.H.8X* 3 :X9X9.k #XV.5 #X*.8.rXt.rXj.r.rXV.8.} T xXlXD.rX*Xt.^ _XzXz _.bXzXzXzXzXzXz.bXzXzXz _ _ _XzXz.b.b.bXj.r.rXt ~.`.XXgXt.r e.^.^.^ e.^.bXz.^.^Xz.bXz.o.^.b N N.^Xt.^Xj e eXjXz.b.b.V.c.V.c.c.V.c.c.c.c.c.c.c.c.c.V.c.c.c _Xz.# _ _XzXzXz.b _XzXz.o.c.c.c.c.cXzXzXz _ _XzXzXj e eXz.c.cXg _.b.V.c.c.c.c.c.c.c.c.V _Xz _XzXz F e l.6.6X X .Q. X X&X .t./X@ AXk.I.&.RX@X@.t.6.oXg.o.o.c.cXz _Xz.b _XzXz.b.b.X eXjXj e e eXz eXz.c _Xz _.V i i.V.V.V i.#.c", +"Xz.o.X.^Xz.bXz.b.bXzXzXz N.b.bXz _XzXzXz.b.b.b.^.b.o.I i.oXz.bXk.o NXtXt.u.`X- 3 V XM c.}.M 3 $ $ $ R TXcXD.ZXD x.u h hXM.FXB W.{.. u B.D.~ B.N.)Xn.s.j.>Xr.q = &.Y.E yXKXG RX,.W $XsX5Xl RX-.e BX-X1.eXV R aX-X-.e.a aX-X- B.a R.e 3X,XD.}X-X-X-.eXD aXI.e a.e R B R 3X- RX-XI 3.e., c 1XKXw.,.9.9 k TXUXP (X5Xx.R.K.k./.^Xg.bXg.6.b.oXk.o.I NXg.#Xg.IXg. .Q.cXg.U.U.c.V.c.o.c.c.c.o.c.VXg.c _.U.c.V.V.c.c.c.c l _.b.oXzXz.b _XzXzXz.^.^ e.rXt.rXt.r.r.r.rXt.rXt.rXt.r e.rXt.^.X.b.b NXz.^.bXzXzXz.b.b.b.b.b.^Xz.b.b.oXg.V.o.VXgXg.o.c _XgXgXg _.U _.V.V.o _.U _.V.V.V.VXg.V.c.V.o.cXz.^Xz l.zXgXxXx.^ ].X.XXoXoX5 (XOX5Xa R aX-XI T.,XJ :XlXK x D : TX5 $X,X1.e.DXLXmXU.qXw H y y.j vXs U t.M t < t UXe XqXh WX.;.q yXG x sX, RXD BX-.e.e RX-X1.~XI.a a.~X- aXX.]XMXl 1Xl TXl T 1 :.ZXV 3X-X-X- R 3X1X- R aX-.eX-X-X1 3.aX- tXDXD.Z hXDX,.Z.!.n g '.HXV.rXj.r.^ N.^.oXd.oXz.^Xz.b.b.^Xz.b.bXz.bXk.o.# l.UXg.c.c.c.c.c.c.c.cXg.c.U.c.V.U.c.c.o.V.cXg.V.V.b.o.b lXz.bXz _Xz _Xz.b.^.^XjXtXtXt.r.r e NXg.zXtXt.r.r.r e.r.^.b.b.^Xj.^Xz.bXzXzXzXz.bXz.bXzXz.bXzXz.bXg.VXg.VXg.V.o.o.oXgXgXg.o.U _.I.c.V.U. .U.V. .6.V.c. .#.o.U.I.o.b l.UXz NXdXd.r.rX*Xt.r.D ( '.nX1XDX,.a.a 3X- 3 3.~.aXD RXI cXI.}XI 3.a t.wXL y.EXe U._ E U xXB 1 s cX, 8 a t $ t.M.i U U.p.iXrXqXw x ._Xe...j.J bXC.jXlXlXwXw g.]X1 3XI.aXDX- R.,.2XOXU.0 B.H.8.r.r.5.KXX VX3XJXXXX.$X*Xt e.rXt.r.HX5 xXL v o sX1.8XtXtXz.b.b.b.b.b.bXz.bXz.bXzXz _XzXzXz _Xz.bXz NXz.r.^.r ~.`.r ~X*.r.rXtXj N NXj eXt eXj.b.b.b.^XjXj.r e.rXt e.X.r.^.b.bXz _Xg.V.c.c.c.c.V.c.c.V.c.c.c.c.c.V.c.c.VXz _.o.VXzXg.c.o.c.c.V _Xz _ _ _.bXzXz _.b _.^.b.^.^.b.#.I lXg.I _Xg.c.V.c.c.c.c.c.c.c.c _ _ _ _XzXzXzXz.bXg.b.cXkXg.c.I.IXg N.^.^.^.bXz.^.o _Xg.c.c.cXzXz.V _.VXzXzXz.^Xj.r.rXj.cXz.^Xz.b.b.oXz N.bXg.cXgXg.cXg.cXgXgXgXg.o.c.c", +"Xt eXg.^ N.b.^.b.b.^XzXzXzXz.bXzXzXz.b.b.bXz.b.b.b.bXz.o.^.#XkXgXg NXg q.RXk ).KX* # k V :.i.M R R.W $ 1 3 3 :XK DXlX, hXcX3 [X.j o v.Z 8X1X-.~ RX-.eX-XI aX-XIX-.~X-.~ cX, :X, :XlXl `., ' : `.aXD.eXI RX-.aXIX-X- BX-X- R RX- 3 aX-.a.a.aX,X,XD UXDXKXaXP.D.8X*Xt.r.k.b.b.X.^.X.b.^.b.o.b.b N.b N.bXz.o.oXg.#.U.c.c.cXg.c.U.V.c.V.c.V. iXu. Xu.#.c.c.c.V.cXgXg.V.oXz lXzXz _XzXzXzXz.bXz N.^ N.^.^XzXtXt.r.r.r.r.r.r e.r.r.rXtXjXj.r eXj.^.b.^.bXzXzXzXzXzXz _XzXzXz.o.cXgXgXgXg.o.o.o.V.c.c.VXg.o.c.VXg.c.V.c.V.c.o.V.c.c _.o.c.o.o.^XzXz.bXoXz.k.^.rXt.r.r.uXo g.D.n 8XD.aXIX-.aX-.`X-.aX-X-X-.aX,.aXDX- $ a.MXeXL yXpXe.i <.} a t.e.e.eX1 B RX-X-XI t.e t U E.-Xp M [.1 M n [ M.h =Xh.+.OXU.O.w y HXU T.u.`.a.a.~.MX1X,.'XlXP.0.~.8XVXtXt.rX*X*.u.u.uX*.uXVXt.r.r eXt.rXV.'Xp 2.s b g aX*Xt e.^XzXzXzXz.b.bXzXzXz _Xz _Xz _ _.b.b.b.bXzXz NXj.k.8 F.`Xt.r.rXjXt.rXj.^Xt eXt eXt.^.b.bXz.^ e e eXtXt eXtXk e.^.bXzXz.b _.V.c.c.c.c.c.c.c.c.c.c.c.c.V.c.c.c _XzXz.oXgXg.c.c.c.c.c.o _Xz _.b.b.oXz.bXz.^Xj e.^.b e ~Xg.I.cXg.c.bXgXg.c.c.c.c.c.c.c.c.c.V _.bXzXz _.bXzXg.c.bXg.V.c.c.I.#.U.b.b.b.b.b.b _Xz _.c.c.c.V.V _ _.c.o.bXzXj.r eXjXj.^.U _.o.o.o.b.c.b.bXg.cXg.o.cXgXg.o.c.c.c.o.V.c.c", +" e ~.b.k.bXz N.b.bXz.^.bXz.bXz.bXzXz.b.bXz.b.bXz.b.b.bXzXg.z.I.UXgXz.b.bXg.X.rXt ~.` V :XMX, < t .>.+.E.OX0 9XC !.n 'XD 3.D D 3XD B.Z.'Xc TXl.u.K.8X*X*.K.K.uXdXd.rXtXt.u.r.k.r.rXt.HXc.s.s 0 bXKX1.r.rXt.^Xz.bXz _.bXzXzXzXz.bXzXz _XzXz _XzXz.b.b.b NX*.5.8.8X-XxXk.rXtXt e.r.r e.r eXjXjXz.o.b.# N ~ eXj ~Xj.rXj.U.rXz _.bXz _.V.c.c.V.c.U.c.c.c.U.c.c.c.c.cXg.c.c _ _Xz.U.cXg.UXg.c.o _XzXz.b.b _.b.b.b.^.^ eXt.rXt.^.r ~XjXzXg.c.c.V.c.cXg.c.c.c.c.V.c.c.c.V.V.b _.bXz.bXz.o.c.b.c.c.c.c. .U.U _.bXz.b.b.bXz.V.c.c.V.#.c.V.c.c.o.c.bXzXj eXj.r e.b.IXg.cXgXgXg.U.c.c.c.cXgXgXgXg.VXgXgXg.c.c.c.c.c", +".r.r N.k.b NXz N.b.bXzXzXzXzXz.b N.bXz.b.b.bXz.bXz.bXz.^Xz.o.oXz.#Xz.^.b.X.b NXkX9.5 I V | #.} < a hX,.MX,XDX1 $.] ' :XlXB k.- r W.x.NXeX-.`.e R.~ R 3.~.~XI R <.* t *XeXb -.B {.;.EXa.D.` RX-.a aX- a aX1 3.~ 3.`X-.~XIX-X-X-X- 3 RX1 3 a.` R.~XDX-.e a a.a 3 aX- RX-.aX-X-X1 3.~X-X- a R R.a.M.M B.'X5 g.Z.K )Xt.k.X.^.b.^.b.bXz.b.b.b.b.b.b.b.b.b.b.b.b.b.U.U.c.c.c.U.#.c.V.c.c.c.#.V.c.U.V. .U _.c.c.U.c.c.c. .Q.o lXz _Xz.bXzXzXz.b.b.^.kXjXtXtXj ~XtXt.rXt.r.rXt.r.rXt.rXt.kXd.r e.r.^XzXz N.b.^XzXz.bXzXzXzXz _.o.c.b.c.oXg.V.oXg.o.cXgXg.V.V.o.oXg.VXg.c.V.cXg.o.V.cXg.c.c.o.o.^Xz.^.b.^ N.^.k.r.r.kXt.H.XXP.D.D R R R.KX-.e.~XIX-.eX- RX-.a R.Z R.~.Z.a R $XL yXpXe E h t t.eXIX-XI 1.-XJ RX- RX- a R aXwXB._.FXpX+X+X>X0XU yXm y.+ &X0.j oXC J.>.'.n.Z 3XcXl T R 8XD '.].2 D.2 D.f q.$ 5 D.I F.r eXt.r.rX* ~XtXtX-Xl.'.s.... o.!X-.rXt.r.^.bXzXzXz _Xz _.b _ _Xz _XzXz.bXz _.^.bXzXz NX* #.8.8.8.5 N.r.r.rXtXj.^Xt e.r e.b.^.b.o iXu.^Xt e ~Xt.r.k.cXj.^ _XzXz.o.V.c.c.c.c.c.c.c.c.c.c.c.c.c.c.cXg.o _.b.b.U.c.c.c.c.o _ _Xz _.o _.b.bXz.^ e eXt e.rXtXt ~ e.^.b.VXz.cXg.c.c.c.c.c.c.c.V.c.c.c.c _ _ _.bXz.bXz.o.VXz.V.c.c.c. .#.U.b.b _XzXzXz _.V.c.V.c.c.c.V.c.c.VXg.o.o.^Xj e eXj.X.#.V.c.V.c.c.cXg.VXgXg.c.V.cXgXg.V.c.cXg.c.c.c.c", +".r e.bXz NXz NXz.bXzXzXzXz NXzXzXz.b.b.b.b.b.b N.b.b.b.b.bXz NXzXkXz.b.b.b.b NXk 5X9 }.,.,XX h.a.a hXDXDXD $XD.D.ZXD RX,XK.[ .1XrX4 U hX1X-X1X-.a.eXI R 3XK 3X,XD U 8._ C.PXAXi.4.;Xa.wXDX- B a aX- RX-XI RX-X-X-X-.}XI.e R aXIXI.eX-XI.~ R R.~XD.e R.~X-.aX,.eX- RXDXI R R RX-X-.e RX- R RX,XD R.aXGXaXU : (.$ 5 (X .z./.I.b.b.b.bXz.b.b.b.b.b.b.b.b.oXz.b.c.UXg.U.V.#Xu. .V.c.V. Xu.V.c.c.c i. .V.c.c.I.U.c lXu i.c lXzXz.bXzXz.b.bXz.^.k.r eXtXtXtXtXtXt ~Xt e.r.rXtXt.r.rXtXt.kXt e.r.^XzXzXz.bXz.^.b.bXz.bXz.oXz.c.bXgXg.cXgXg.oXg _XgXg.cXgXg.V.o.oXg.V.o.V.o.VXg.VXgXg.V.o.c.o.^.bXgXgXx NXV.^Xd.5Xt.u.H g.'.w sXl $XlX.XKXcXK `XcXK `.*.a.eX-XDX- RXVX1X1.w.nXmXpXe h h a.a.u T :XK #XcX-.e RX-.e R a t E xXeXr M &Xr y.9.!XG s vXU = & = & & b.>.0.' R.a.e `.e R R.D.9.0.O 'X5 qXJ.$ ).$ ).R.rXd eXt.r.k ~X*X*.8.5XUXpX>.@ 0XG.9 BXtXt e N.bXzXzXz.bXzXzXzXzXz _Xz.o.bXz.b.X NXk.fX9.$.$ qX9.5X- F.rXt e.r e.^.bXj eXjXz.b.oXz _.c _.o.^.r e.r e.^X9.^ _XzXz _.V.c.c.VXg.c.c.c.c.c.c.c.c.V.c.c.c _Xz _ _ _.#Xg.c.V _ _XzXz _.b.b _ _.b.^ e e.r ~ ~ e.r e F.rXj.oXg.b.V.c.c.c.U.c.c.c.c.V.U.c.c.c.o _.b _.b _.b.oXg _.c.V.c.c i.c.# _.o.o _.b _.V.c.c.c.#.#.V.V.c.cXgXg.V.bXz.^ e e.^.c.U.V.cXg.c.c.c.b _.b.o.cXg.cXg.c.VXgXg.VXgXg.c.c", +"XtXj.X.XXzXzXzXz.b.b.bXz.bXzXz.b.bXz.bXz.bXz.bXz.bXz.b.b.b.bXz.b.c.bXzXz.^.o.X.bXtX*.` : V.5XM #.} h hX,.M.9 x hXlXD.a #XKXBXw.gX2...W.W.aX1XDX- aXIXDXIXD c.9XlXKXlXcXp n W ^Xi.CX0.W.Z 8X-.M RX-.e.aX1X-.eXI aXIXIX-.~.a aXIX-X-X-XIX-X-X-.aX-XDX-.e a.e 3 R.e RXDXD.e R.a.uX-.a.eX- a a RX,XDX, R.'X5XUXPXx D.z.R 5.t.6XuXzXz.b.b.b.b.bXz.b.b.b.b.b.b.b.bXg.UXg.cXg.#Xu. .c.c.c. Xu.#.c.UXg i i.c.o.V. .#.c.o. .QXg.UXz.bXzXzXz.b.bXz.^ e.r.r.rXt.rXt.r.r e.r.r.r.rXt.rXt.r.rXj.kXt eXj.^ NXz.^Xz.b.b.bXz.^.b NXz N.bXg.oXg.o.o.o.oXg _XgXgXg.o.VXgXg.VXg.o.VXg.V.o.V.VXg.c.oXg.c.o.^.o.oX&.&.$.$.& ) I q ( :XUXa.n.W s x 1 Xl T.w $., sXl R R aX-XD.H.e 3 BX1.w.n y JXe h E a.}XK ` c 3 a.M.e.K :., a.e t.}.W EXnXrXrX+ 1 sXG v.w.n.n 9.9 & &XG b J !XG.9X, RXD.e 8 R.D.0 g.2.]X1.H.H.r.`.5Xd.u.H.r eXt.rXtX*.rX*.8XI.- x v.) % 0XL.]XI ~Xt.r.bXzXz.b _XzXz _ _.b _.b.b.b.b.b.^XgXkXk.$./.fX3 ) 3.8.r.kXt.r.r e.^.b.bXjXj.^.oXzXz _ _Xz.bXzXzXjXt e.r.kXg N.o.bXz _.cXg.V.V.V.c.c.c.c.c.c.c.c.c.c.c.V _XzXzXz.o.I.V.V _ _Xz.b.V.V.V.V _Xz _Xz e.r e F F.r.rXt ~ eXz _Xz.VXg.c.c.c.c.c.V.c.c.V.c.c.c.c.c.o _ _Xz _ _.V.V _.V.c.c.c i.c.#.c.VXg.V.b.V.V.c.c.#.#.c.c.c.c.c.cXgXg.b _.^ e e.b.U.U.c.V.c.cXg.V _Xz _ _.V.cXg.V.cXg.c.cXg.VXgXgXg", +".^.^XgXg.^.b.b.b.bXzXz N.bXz.b.bXz.bXz.b.bXz.bXz.bXz NXzXz.b.bXz.U.b.^.b.b.b.b N NXt.`.8XX V #Xl : $ hX, hXw `.Z $ hXDX,.-.- [.[X>.mXe.MXDXI.e t R a R 3.uX1XVX,XDXDX, h.W ....C H H s.n RXD B.M R 3.u R R.a.eX-XDXI.aXIXIXDX- a.~XIXI aX- RX1XI.eX-.~X-.~XD aX-.aX,.aXI R.eXDX- R.~X-XI RX,X,X, cXD T.n.0 :.`XVXV.HXz.^ N.^Xz.b.b.b.b.b.b.b.b.b.b.b.b.b.bXz.o.#Xg.c.c.c.U.c.c.c.c.U.U.c.V.c.V.c.U.V.c.c l.o.c l.o.oXz lXz.b.b.b.b.b.^XjXt e.r.rXt.r.rXt.r ~.X.rXt e.r.rXt.rXt.r.k.^.rXd.^XzXz.b.b.^.b.^.^.b.o.^.^.b.bXzXgXgXgXgXg.V.o.o.oXgXg.V.o.o.VXgXg.V.cXgXg.V.c.c.VXg.VXgXg.c.cXz.^.#Xk d.f.& I ( q.$ D D @XaXLXD.D.e aX-XD a.e.* $XD.a a aX1.e RXD.e.u.e B.w.n yXGXe E $ a $.aX-.e a RXI.~X1.,XX hXB x._Xe._XG.jXw.>XU gXl.w CXLXL.!.9 & H o b o.q y.2XK xX,X,X,.wX. g KXy.| D.2 D.& (X@XJ (XtXd.r eXtXt 3X*.8Xl 1 v O.sXb.) J bXc.D ~Xt e.b NXz.bXzXzXz.b N.o.^Xj.o.b.6.6.t.X q NX9 N.K 3.K.`.8 ~ NXk.r e.^Xz.bXzXz.^ _XzXz _ _Xz _ _Xz.b.^Xt.r e.^XgXz.bXzXz _.o _Xz _.c.c.c.c.c.c.c.c.c.c.c.V.o _XzXz _.o.# _ _Xz _ _.V.c.c.c.oXz _.bXzXj e e F F.r.r e.r.rXz.oXz.V.V.c.c.c.c.c.c.c.U.V.U.U.c.c.cXgXz _Xz _.o.c.c _.c.V.V.c i.c.#.c.V.V.c.V.V.c.V.c.#.c.c.c.c.V.V.VXg.c.o.oXzXj.^Xg.z.c.c.c.cXg.b.bXzXzXzXz.oXg.c.V.cXg.cXgXg.V.c.c.c", +"Xz.^.o.c.^XzXzXz.^Xz.bXz.bXz N.bXz.b.b.b.b.b.b.b.b.o.bXz.b.b.bXzXg.oXz.b.b.^.^.k.^.KX*.rX-X3 qXX # ` :.iXK.-.W h x UX, hX3.-.-XwX+Xn nX.Xl $XwX..a.>X,.Z.2XlXKXK $XH.* x [.N pXi.4 H b.nXsXD R.a R.Z.e.M.eXD : $XI x R $ aXD RX-X-XI.eX-.~ R.aXI R.e R.e 1 cXlXcX- R.a RXD `.ZX-.e a R 3X, cX, 3.aXI.n '.0XP.H.H.r.rXoXgXz.b.b.b.bXz.bXz.b.b.b.b.bXz.b.b.b.bXg.U.c.c.c.cXgXg.cXg.c.V _.cXg.V.c.V.cXg.V.o.c.V.o _Xz.bXz l.b.bXzXz.bXz.^Xt e.r.rXtXtXtXtXt.r.rXgXtXt.r.rXt.r.r.r e.k.^XjXj.bXzXzXzXz.bXj.b e.z qXxXg./ q.zXg.U.U.cXg.o.o.V.o.c.c.o.oXg.c.o.VXg.V.o.o.cXgXg.c.V.o.VXg.o.o.bXz.^.b.^ N.kXt.r.H.H.H T.0.nXa.D hXD RX-XI BX1.e.] 3XJ.ZX, $.Z.u.Z h $XD.*.w v yXG.w U 1X,.e.e.~.e IX1 3 3X, $XD x.S [ E.F..O Y !XH !X; =XP.> =.G.>.q v.q.>XU n m 1XDX,.DXD ' g m 4 DXx.5.f ( ( ( (XxXtXt.rXt.r 3.8.` c.9XK.EXn.; S 0X>XK.0.u ~.rXj.bXzXzXz _Xz.^Xz.X.^Xk.I.&.&.&.IXg.XXg.b N.X ~.rX9.`.`.8 ~Xt.r e.^.bXz.b.bXzXz.bXz _XzXz _.^.bXz N e e.r.b.oXz.b _XzXzXz _Xz.b.V.V.o.V.V.c.c.c.c.cXg _Xz.b _.b _Xg.UXz _Xz _.V.V.c.c.c.o _Xz.b _ e ~ e.r ~ e.r.r l.^Xz.cXz.c.o.cXg.cXg.c.V.c.c.V.c.cXg.c.c.V.o.oXz _.V.c.V _.c.c.c.c.#.U.#.U.c.c.V.V.V.c.c.c.#.c.V.c.#.U.c.V.V.cXg.o.b.b.oXg.#.c.cXg.c.o _Xz.b _XzXz.o.V.c.cXgXg.c.c.oXg.c.cXg", +".bXzXzXgXz.^XzXzXzXzXzXzXzXzXz.b.b.bXz.b.b.b.b.bXz.bXz.b.b.b.bXzXg.bXz.b.b.^XjXt ~.k.^X* 3.8 V VXXXMX3 1.} U $ h.wX,XD hXK k 1 [XnXn.jX#.' mXDXcXqX. a.Z m.eX..2.eX..eXcXh.dXb %.@.;XaXL.DXD.wX5XDXVXDX1 : x $ x x 1 1Xc :XcX1 R.a R.e.e.~X-X1X- R.eX-X,X. DXc D.-XlXw D TXcX5 k.~X- RXIXIX1 RX- R a.Z.' T (.`.H.HXd.r N.b.^.b.^Xz N.b.b.b.b.b.b.b.b.bXz.b.b.b.UXg.c.c.c.c.c.U.V.cXg.c.c.c.V.c.c.c.c.c.c.V.bXzXz _ _Xz.U.b.bXz.b.b NXj e.rXt.rXt.r.rXt.r.r.r.^.r e.r.rXt.r.rXtXtXt.^.^.^.^.bXzXz.b.^ _ F.^.X A.zXx./.t.& X.tX .t.oXg.oXg.o.cXg.V.cXgXg.VXg.cXg.V.V.c.V.V.c.c _Xg.V.c.b.b.^.b.^.bXz.k.^.rXdXVXd gXl.n.DXaXD B.~ 3.` B.`.~ '.] TX..] 1 .9 kXJXl.M aXaXL.jXGXe U.[X, a aX-XI :X-X- B.a a.,.Y n.- >.[.gX% [ nXH.O.%X;X.XKXUX; y.q =.j.qXL H = yXcX, h.Z.M 8Xa.n.0 !XV.e.8.rX*.rXV.H.rXVXtXtX*.8.aX1XlXc s.nXG.s / ^.@ vXGXG :.u.r e.^Xz.^XzXzXzXzXz e./.$ d./.zXk.b.^Xz.X.^.b.XXt.^X* c.8.8Xt ~Xt eXj.^.bXz _ _.bXz _.bXz _ _. iXz.b.b.rXj eXg NXzXz.bXzXz _XzXz _ _Xz _Xz _.o.VXg.V.o _ _XzXz.bXz _.VXgXz _ _.c.V.c.c.c.c.V _ _.b.b.^ e.r eXt e.r e.I.z.U _Xz.c.V.cXgXg.V.c.c.c.c.c.c.c.c.c.o.o.c _Xz.o.V.c.VXz.V.c.c.#.#.#.c.c.c.c.c.V.c.c.#.#.c.#.#.#.c.#.c.c.c.V.c.o.o.oXg.c.#Xg.c.V.c.bXz _.b.b.bXz.o.V.cXg.VXg.VXg.cXgXg.c.c", +".b.^Xz.UXz.bXzXz.bXz.b.b NXz.b.bXz.b.b.b.b.b.b.bXz.b.b.b.bXzXz.b.oXz.b.z.I.b.r eXtXt.k.K.rX* ~.K VX3 `XM 1 1 h.M h.M.}X, `X. h $.< v.1Xw.O :.S.j $.1 :XlXH.eXl $ 8X. $XKXqX+ pXb ^.; bXaXL.w.w 1.'XD RX,Xc.}Xc $ `.9 T 1 :XK 3.aXI.e R.eX-.eXD.e.aX-X- B ` c : ` s $.-.9 1Xl xXKX-X- RX-X- a RX1.}.u.'.0.0 gX1.`.`.rXtXj.^.o.^.bXzXzXzXzXz.b.b.bXz.b.b.b.b.b.b l.o.cXg.c.c.VXg.c.c.V.cXgXg.c _.c.c.c.V.cXzXzXz.bXzXz.^ l _.bXz.b N.bXj.rXtXtXt.r.rXt.r.r eXt ~.r.r e.rXt.rXtXt.rXt.X.^.bXz.bXz.bXz.bXj e.`Xd NXxXx.z.z.zXkXg _.c.VXg.o.c.oXgXg.o.o.VXg.V.U.U.c.V.c.U.c.c.U.U.V.c.cXg.#Xg.b.bXz.^.b.^XdXd.r.r.H.2.n.n.n g.'X1X- B.H B.` BX- BX-X, a R R.Z 1 aXD t.M.wXeXwXGXe EXH $ aX- a B R.~ R a VXKXc.Y.MXq.[X+ X7., k mX. !X.XUXc.'XPXm.0.q.!XGXC.>.OXmXcXsX,.DXD.w.n 'XP.2 B 3 ~Xt.r.rXtXtXtX*Xt.8 ~XIXl TXK v.EXa O.=Xe u.N 0XG $.0.`.rXj.^.bXzXzXzXzXzXj F.bXk.X N.I lXk.z.zXkXg.fXgX9 ~ 3.r.8XtXkXkXj.r eXz _.bXzXzXz _Xz _ _Xz.o i.I.o.b.^ eXt e.UXz.bXz.b.bXz.bXz.bXz.b _XzXz _Xz _ _ _ _ _ _.b _Xz.bXz.o.o.b.V.c.V.c.V.c.c.c.V _.b _XzXzXj e.r e.r.r.r eXjXgXzXz.#.V.c.c.c.V.c.c.c.V.c.V.c.c.VXz _.U.c.V.V.c.#.V _.c.c.c.#.#.#.U.c.c.c.V.c.c.c.c.#.V.c.#.#.c.#.#.c.c.V.cXg.o.c.c.c.#.o.UXg.o.b.b.b.bXz.b.b.b.o.c.c.V.o.c.VXg.c.c.cXg", +"Xz.o.^.cXzXzXz.bXz.b.b.^.U.bXz.b.^.U.^Xg.bXg.U.U.b.b.b.bXz.b.bXz.o.^Xz.IXzXj.rXjXtXtXt.k N.k ~.8X*X3 VXXXM .9.i h R h.} kXK ._.jXpXcX5.a x xX,Xe.Z.aXD.uXI.eXD R R a t u.d.s ^.; w b.!.9.E.9.'X. : $ x $ hX, $ $ hXD aX-.eXD a.a a.e.a.eXD B.eX1.aX1 B a.e.e.a.a.e R.aX-.e RXD.eX, R R RXIX,X, R.D.n.].]X1.`.H.r.rXdXj.b.bXz.b.bXz.b.bXz NXz.bXz.b.bXz.b.b l.b _.c.cXg.c.cXg.c.c.c.V.c.c.c.V.cXg.c.cXz.bXzXzXz.bXzXg.XXzXz.bXz N.r.k e.r.rXtXt ~XtXt.r.r.rXt e.rXt.r.r.r.rXtXtXgXoXdXz.^XzXzXzXzXz.^Xd.^.^XkXk.R q.t lXgXgXgXgXg.VXg _.c.cXgXg.VXgXg.cX&.U.c.#Xu.c.V i. _.#.UXg i iXgXz.b.^.b.^Xj eXt.HX5XJ.n.n s 9 '.wXD.Z.DXDXIXDXDXIXD.DXDX1 RXD B BXD B B.w.w.j.Y._ x U U.a t R B aX-XD `X+XwXe h x .[XX.l VXBX3XKXcXJX.XH.>XOXm.!.! g &XC.q & &.O.9.MXD.w.w.n '.0XOX5.8 ~ ~X*.rXt.r.r.r e.r.}Xl.'XLXL 0Xa b 2.= bXe.M.)XeXG.Z.`.8XtXj.bXzXzXzXzXzXzXz ~ e _XzXz. .IX .z.t Q.A./ 5Xx.r.r.`.8 ~.8.^Xt e.^.b.^.b _.bXz.^XzXz.b _ _.o.U.b.^Xj e e N lXz.b _.^.o.b.b.bXz.b _.b _Xz _Xz.bXz _ _XzXz _.o.^.b.^.c.c.U.V.c.U.V.c.c.c.c.c.c _Xz.b.b.bXz.^.^ e ~ eXt e.V.o.b.U.cXg.U.V.U.c.V.c.V.c.o.c.o _ _.c.6Xu i.c.c i i _ _ i.#.#.#X&.#.c.# i.c.V i i.c.c i. .#.#.#.#.#.U.V.c.c.V.cXgXg.c.U.cXg.VXg _.b.bXzXz.b.b.o.V.c.V.o.V.c.c.V.cXg.V.c", +". i.bXg.b.^.I.U.bXz.b.c.f.cXz.b.^. Xz.b.oXg i i.b.b.bXz.b.b.b.b.b.b.b.o e.r e.rXt.r.r.^ N NX*Xj 3.`XXX3 V.-.l # x.} $ $.a kX3.Y.pX+XrXK.Y.aXD h.Y.FXD R R.~XDX1.~XD.~ R t.e.).)X6 w H H H HX>.; y s.9 sX. 1X.XK xXwXc.9 BX, ` RX-X1.ZXD.e RX, a B.eX-.aXI.eX-X-.} RXD aXD a R R : :X..u 1 :XK : $ $ $ ! g.2XIX5.5Xx.XXjXj N.b.^Xz.b.b.bXz.b.b.b.b.bXz.b.b.bXz.U.b _.cXg.V.c.c.cXg.VXg.c.V.o.V.cXg.c.o.c.b.bXz.b.bXzXz l.b.b.^.o.b.k e.r.rXtXt.r.r.k ~.rXd e.r e.r.r.rXtXtXt.r.rXt.k.^.b.bXzXzXzXzXz _XzXz.b N.b.IXk.I.6.U.bXgXg.V.o.cXg.o.cXg.VXg.o.o.V.c i.UXg.#. .U.c. .#.c.#.UXg.#.U _.bXz.b.^.b.k.r.r.H.5.2 'XC g & y x.n.0.w.w.w.w.w.w.w.w '.w.wXl 8X1XD B B.ZXa sXr.9 UXe.i.i h U.W.M $ nXp.Y U h x.l c XM.lX3.lXX `XK.9.-XJ.>X; g.0.!XUXC @XCXm.9 9.Z $Xl s.w ' g g.DXV.8 3.rXt.r.r.r.rXt ~.8 3Xq.W.s / /.= O.=Xa.9 1 xXsXL.9 cX- FXtXz.b.bXzXzXz.bXzXzXjXzXzXzXzXzXz.X.I.z N.r.k 3 ~X-XV F.8 FXt eXt eXj.bXz.bXzXz.^XjXjXzXzXz _Xz.bXz.^ e.rXjXz lXz.bXz.cXzXz.bXz.bXz.bXz.bXzXz.b _.b _.b.b.oXzXz.b.bXz.U.cXz.U.c.V.U.c.c.c.V.V.cXg.o _.^Xz.b N.^.rXj e eXjXgXz.o.#.V.c.o.UXg.c.U.U.c.V.V.V _ _.c.U.#.#.#.c.#. .# _.V i. i.#Xu. .c.#. .V.#Xu i.U.U iXu iXu iXu i.#.c.c.cXg.cXg.V.U.U.c.VXg.o.b.b.b.b.b.b.bXg.c.c.V.o.o.o.V.c.o.c.U.b", +".Q i.bXg.c.b i./.bXz.^Xg.6.c.bXz.^.#.bXz.b.o.U.I.b.b.b.bXz.b.b.b.^Xz.^XzXjXj eXt.^XjXj.k N.X.bX*.r ~.8.}X9.,X3 #XM 1.}.a `.-X7 n.jXZX.XJ tXc < =XcXc.-XIXD.eXDXI.~ F.~.~ R.) pX=Xn ^.vX6XfXf HXp s.MXD t R.M.a.a R R a R `Xl : ` 1 `Xl.,Xl :XK : x R.~.a R.e R.e t t a R R.eXJ :X.XcX. m 1 : `.-XJ.9XU ! ! I IXx 5.AXkXjXjXz.b.b.bXz.b.b.bXz.bXzXz.b.bXz.bXz.UXz _Xg.cXg.c.cXg.c.c.c.c.c.c.c.o.c.cXg.c.oXzXzXz.bXz.bXgXg N.bXd.bXjXjXtXtXt.r.r.r.kXt ~Xt ~ eXt.r e.r.r.r.r.rXt.k.^.^ NXj.^.bXzXzXz.bXzXz.b N.^.^.^XgXg.o.c.o.VXg.oXgXg.o.c.VXgXg.V.o.oXg.U.VXg.VXg.o _.c.c.VXgXg _.VXzXzXzXzXz N NXjXt.u 3 :XwXw &.j.j.q.9 o.9 v v sXn s v v.n.9.n.w.Z 'X1.H B B 8.w.D 9.jXGXe EXq.m.d.p._X%.i E U U x xXJX3XM # h.a.a.iXM V.-.Y m.OXU s.' ' ! =.> 9XmXa.'.w.n T.] g ( B.DXV ~.rX*.r.r ~ ~.r F F B.ZXL.N / / / C.sXa.M.Z $XDXaXn.9X5X-.rXt.bXz.bXzXzXz.bXz.b.b.^.b.^.b.o.b.IXg.z.I )Xx.z.k.8.r.8.` q.k e.r eXjXz.oXzXz.bXj eXj.b.bXz.bXz.^Xj e e.rXj.b lXz _ A A.7.z.b.b.b.b.b.bXzXz _Xz _ _ _Xz _.o.b.b.b.b.o.I.o.#Xg.c.V.c.c.U.c.c.c.c.c.oXz.b.oXz.^XjXt F e e.^.VXz.V lXg.c.U.c lXg.c.V.c.c.V _.V.c.U.U.c.c.c.c.V.c.cXz.V.c.U. .U.#.#.#.#.V.c.#.#.#.c.c.#. .#. i. . .U.V.c.V.cXg.c.o.#.c.V.c.V _.b _.bXz.^.b.oXgXgXgXg.V.V.c.V.c.oXg.oXg", +".c l.o.oXgXz.o.b.b.b.b.b.c.b.bXz.b.b.bXz.b.b.^.b.b.b.b.bXz.b.b.bXz.bXz.^.r.r e.z N e.r.^.oXgXg.bXj N.r.r.8.aX3 VX3XlXMXM 3XBXcX7 MX+.+ x.,XcXwXD 1XqXJXJ $ R RX-XI.`.`.HX- a.* UXb.)..XbX=.B ;.4 b v.n.M.*.a R R aX- RX1.eXl., :XK :XJ.0 1 : TXJXlX,X-X1.aX-X-.e R R aX- R a R aX1 h.Z.e.e t.a RXDX-.w s T.5X-.8 3.rXt.r.rXt.^ N.b.^.bXzXzXz.bXz.bXz.b.bXz.bXz.UXzXz.cXg.c.c.c.c.c.o.VXg.c.c.VXgXg.o.UXg.c.o.^.b.^.b.bXg.bXz.o.b.^XtXt eXt.r ~.kXt.r.rXtXt.kXd.rXdXt.rXt.r.r.r.rXt.^ ~XtXj.r.^Xz.oXzXz.bXzXzXz.bXgXgXgXgXg.cXgXgXg.VXgXg.o.cXgXg.c.V.V.cXg.o.V.cXg.o.V.c.c.c.c.V.cXg.oXzXz.bXzXz.b N.kXt c.HXl.j y.E.@ oXr M M.j & & &Xr.q HXU.qXw &.0.n.n ' '.uXa.D.n.wXLX>.j...mXA W %XA zXq E E EXq 1 1X3 #XX #XI c a.a a.a $Xc `Xw =XO.!.! s y.G.GX;XG.' '.0.] D gX5XDXV.8X*.r.rXt.r.r.r ~ F FX1 R v.s.) *.N u u.Z.M t.ZX1.~XL 9.9.K.8 ~Xj.b.b.bXz.b.bXz.bXzXz.^.oXz.b.bXz.I./X .zX q qXx.`Xt.8X*Xx q.rXjXjXj.^ NXzXz.bXj e e.o lX@.I.o.^ e.rXtXj.^.b.cXz _ NXzXg j.bXgXgXg.o.b.bXzXz _Xz _XzXzXzXzXz.o.^.oXg. .o.V.c.c.U.V.V.c.c.c.c.c.c.o.b.o.^.b.bXtXj.r ~ e.b.o.^.#.U.I. .V.c.c.V.V.U.c.VXz _.c.#.U.c.U.U.cXg.U.V.U.b.V.c.c.#.c.#.#.c.#.#.#.U.U.c.c.c.c.c.V.c.c.c.c.V.c.o.VXg.VXg.o. .VXg.V.o _XzXz.^Xj.^Xz.bXgXgXg.cXg.o.V.oXgXg i.IXz", +"Xz.^.b.^.c.b.^.b.^.b.b.b.bXz.bXz.b.^Xz.b.b.o.^.b.b.b.b.b.b.b.bXz.^ N NXj.^.kXt.X./.^.r.^ N.^.b.cXg.X.k.rX*.8.8XM., VXMXX x [.SX2X2.M hX1XD R U.a.M.a a 3X,XD t a 3.8.~X1X1 8 C uXF.. *XbXbXf.4.EXG v.w a RX-.~X- B.e.e R R a a a.e a a R.eX, R B R BX-X,.~.eX-.a aX- t aXIXD.aXD $X-XD R R.a.}.M.M.n.'XPXlX1.` ~.r.rX* eXtXjXz.b.b.b.b.b.bXz.b.bXz.b.b.b.b.b lXz _Xg.cXg.c.c.c.c.c.c.V.oXg.c.c.VXgXg.UXgXgXz.b.bXz.bXg.bXg.^Xz.b.b.k eXtXt.rXtXtXt.rXt.r.r.z.X.r.r.r eXt.rXt.rXt.KXt e.r e.k.b.QXzXzXz.b _.o.o.o.o.c.o l.b.6.z.cXgXg.o.o.cXg.VXgXgXgXg.c _XgXg.V.o.V.oXg.c.VXg.c.V.V _XzXz.bXz.^Xx.kXtXV 3XMXcXGX>X>.@.jX>.E.@X>X>.@.EXp.EX+.EXmXmXwXG.n s gXa.wXaXL v 9.E HX8X>X2.<.x.x.J E E.m x.-Xc V #.K 3.u.e.}.e aXD H M.E M x.M.eX-X-.~X-X-XIX-X- a a a a a B a.e.aX, RX-XIX1 BX- 3 3 3X- a.` hX-X- R RX,.aX,X, hX,.M t $.wXP.0 BX-.`.`.`.8 ~Xt.rXtXtXzXzXz.bXz.bXzXz.b.bXz.b.b.bXz l.b _Xg.V.cXg.c.V.c.U.c.cXg.o.UX&Xu.U Z.z.cXgXgXg.U.b.b.o.z Z l A.7.b.b.b.^Xt.r.r eXtXtXt.:.X.uXkXkXj ~Xt.r.rX*.rX*.^X9Xx.:.X.^.X NXzXz.^.bXgXgXgXg.:.zXz j.I.XXg.o.oXgXg _Xg.V.VXg.o.VXg.o.c.o.c.V.o.V.c.o.V.c.VXg.V.o.o.o.bXzXz.^XgXdXt.H.r.` .9XqXp U u.MXe.M.a < t < t t t uXeXnXnXnXnXp.@Xf.C.@.@.CXi.v.BXi.{X>.P.s.s vX+ `XM 1 $.a R RX,X1X,XD R $ R $.FXc.1XH.'XKX,X1X; gXaXO DXU.0X1XI.`.8XtXt.rX9.rXt.rXt.r.r.r.rX* ~X-.wXe.).N R 8X1X1Xl xX, h.MX, v sXIXVXt.k.b.XXz _.b.bXz.bXzXz _ _XzXz.bXz.6 q.$XkXxXXX9XM.5.KXX.^X9 N.rXj e.r.r e.rXtXj ~.r eXt.^.R P eXt.r e eXt.^.^.UXz _ _XzXzXz i.o j./Xz.b.b.bXz _XzXzXzXzXz.bXz.b.U.:Xg.z.:Xu.c l.c.c.c.c.c.c _.c.oXzXuX .^.b N.^.r.r F e.^.o.o.c.#XgXgXu.6.:.cXg.V.oXz.V.c.#.U.c.c.c l.U.# Z.:.U.6.U.c.c. .c.#.#.#.c.#.c.c.c.V.V.c.c.V.c.c.V.U.VXgXg.c.c.V.c.cXg.#.c.c.o.VXz.^.b.^ e.r.rXt.r.r e.r e e.r e e.^ N.k ~.r", +"XzXzXzXz.o.oXz.b.b.bXz.bXz.bXz.bXz.b.b.b.b.b.b.bXz.b.b.bXz.b.b.b.^.XXtXj.^ eXjXz.o NXg.UXz.b.o.^Xz.oXg.cXkXg.$.&.A q 5 DX# [XZX4X6 SXn p UXeX,X, h xX5XDX, 1XK Xl x 3XVX-XIXI R.M.M.}.d.M t.d vXi.@.; 'XDX1 3X1.a.a.a a.eX-.eX-.eX- a.eX- aX-XIX-.a 3 3XI 3X-X-.aXI a.a :X- a R RX,X, hXDXD h.aXD $.ZXm :.`.~.8.`.~ ~.rXtXtXt e.b.^ _Xz.bXzXz.bXzXz.^ _ _.^ _Xg.o.b l.cXg.c.c.o.V.V.V.U.V.V.cX .: A.IXkXg.o.c.c.cXg.b.b.:.RXoXz j.oXg.^.^.b.^.^XdXj.kXt.:XtXdX9.^.r.rXtXt.r.u.r.r N.r./.(.^.X.^XzXzXz.b.b.oXgXk l.:.t.R j.X.o.X.oXg.V.o.oXgXg.c.o.VXg.oXgXgXg.c.VXgXgXg.c.VXg.c.VXg.cXg.o.bXz.^Xz.oXd e.r.H.8.8.Y.9Xq x u t.MX,X1.u.a 3 c.e <.* tX, xXq vX4 > ^ wX6.sXb 0X= -.v.PXiX= p.) pXrXn # #.lX5 aX- R BXDXD.wXIX1XDX, $XMXc.1.>.'Xc 8XU.O.n ' g.2 $.`.`.8 F.H.rXt ~ NXtXtXt.rXt.rXt.rXt.` :.'Xa.=Xs.M R R RXcXc h hXs y.w.wX,XV.rXt.bXzXz.XXz l.^Xz.^.bXz.b.bXz.b.^./.$.$.f VX3X3X3XX V.f.$.k.kXtXt.rXtXt.rX* ~.rXt e.r.r N././.^.^Xj.r.r e.bXz lXzXzXz _XgXu Z.b l.UXzXzXz.b.bXzXz.bXz _Xz.b.c.U.t.7.#X& Z.c.U.V.c.c.o.c.c.c.c lXz.^.7.U.b.b N.^.r F ~ eXz.bXz.U l.c.IX&. j.UXg.o.b.V.c.U.#.c.c.U.c.c.c i.U Z ZXu.c.c.c. .#.#.c.c.#.c.c.V.V.V.c.c.c.V.c.c.c.cXg.V.c.c.VXg.V.c.c.#.c.V.c.o.b.bXz.^XtXt.r.r.r.r.r e.r.r e.r.rXt.r.r.8.8", +".^XzXz.^.oXgXz.b.b.bXz.b.bXz.b.b.bXz.bXz.b.b.b.b _ NXz.b NXz.b.b.b.o.r N.#.^.^.b.b.^Xz.o.bXz.b.oXz.b.o.c.UXgXgXk N NXt.r.u.-XpXn ..4.. v U h :XDXD.nX, $.w h.a x.S VXK.Z B.e.* R.M u E p E *.) 2.B w H.nXI.~X-X-.a.a.e a.eX-XI.eX-.eX-X-X- R.aX5XI 3.~.e.~.e RX- a 3 aX, c a.aX-.*XDX,X,X,.}XD.a.a s.w gX9.e.H.~.`.`.8X*XtXt.rXdXz.b _XzXz.bXzXz.b.b _Xz.^ _.bXg.o.o.oXg.c.V.c.V.c.c.V.o.c.U l.U.A j.(Xg.U.c.oXg.c.o l.b.:Xg N.X j.o.^.^.b.b.^.b.^Xo.b.X 7X* ~ ).kXtXtXt.r.r.r.r.k N ~ f.I NXz.b.bXz.bXz N.oXgXg.z.:Xz l.:.o.bXg.V.cXg.cXg.c.cXgXgXg.VXg.VXgXgXgXg.c.o.o.o.V.V.o.V.c.c.c.oXz NXz.^.XXd.r.H.8.8.a c.-XGXG u a.MXD R.KX*XI aX-.eX-.e t.* < <..XG ^.{XiXb.W.s 2.sXFX=.).) *.).d.pX+.l.S :.ZX3 :X, m B DX, m #Xc.,.,XH kX; n.9 s.aX1.0.n.0XO T.~XI.8 F ~.r.rXt.r.XXtXt.rXt.rXtXtXtXt ~.HXD sXs.= 8XDX-.aXD.[XHXrXp.OX. D D.$.& A AX A d.& d AX .IXzXzXzXzXz.b.X.^ NX* 3 c 3 cX*.uX* N.k N N.b ~Xt ~Xj ~.r.^ e.r eXt.r.r.r.r e.z.6.U e e.b.b lXz _XzXz _.^Xz.^.o.^XzXz.b.b.bXz _Xz _Xz.b.o.c.Q.U.Q.I.6Xg.cXg.U.c.V.c.c.c.c.o.c.c.#.7 i.b.b.^.b ~ F.r eXz.bXz.U.z i ZXg.U.: d.#.bXz.o.c.U.U.c.c.c.c.c _ d.c l.:X&Xg.U.#.#.#.V.#.#.#.c.c.c.c.c.cXgXg.c.c.c.c.c.V.c.VXgXg.c.V.c.c.#.cXg.V _XzXz N.^Xt ~.r.r ~.rXt.rXt.r.r.rXt.r.r.8.8 F", +"Xz.bXzXzXz lXzXz NXz.bXz.bXzXz NXz.bXz.b.bXz.b.b N.bXzXz.b.bXz N.^ N e e.X.^.b N.o.b.b.^.b.b.o.b.oXzXz.V l.UXk.X.b.k.r ~ 3XDXhX8.;X8XpX4 x E x 3X,XV $X, xX, $ a.M.9.-.-XU v.j.) p.)Xb {XbXb.BXb { w.j.' RX1.e.e.a.e hX- c.eXD.e.eX- RX- RX-XIXD.~ aX-.e.~X-.e.~ a 3.~.e.Z a R tX-X,X,.aX,X,XD.M R.W.n T.0X-.`.`.`.` ~Xt.r.r.rXdXgXz.^.b.o.bXz.bXz.b.^.b.o.^.oXg _Xg l l.V.c.VXg.VXg.cXgXg.o.6X&.o.z.:.U.oXg.c.c.o.U.bXz j AXx.t.&.b NXz.b.b.bXz.b.^ NXk.7XtX5.z ~ e.r.rXt.r.rXt.8.X N.:.I.X.^.^.bXzXzXz.b.b.o.X d.7.XX@.7 lXgXgXgXg.oXg.V.cXg.o.cXgXgXg.o.o.V.oXg.o.o.V.VXg.VXg.o.VXg.oXz.^.^.b.k.X.r.H ~ ~.8.} a.Y 1.Y x a R R B.`X1.e.` aX-.e.a.a R a t EXp . wX6XF.N.W.* u.wXq._ C t u pX4.p XH xXc., $.,XlXJXlXc T :Xw 1X#.- = ! gXG x.n.w.0XO.ZX1.H.e.8.8 ~ eXt.r.r N.rXtXt.r.rXt.r.r.r ~.`.aXGXsXs.M 8X1XD R hXh.YXp 9XwX5XJ )XxX@.t l A.t l.z.Q.Q.I.^Xz _XzXzXzXz.bXt e.r.r.rX*.r.k.^.X.^.^XgXd eXj e ~ N.^.r.k.rXt.rXtXV.r.r.r.b.X.^.rXj N.bXgXz.bXzXzXz _Xz.bXzXz.bXzXz.bXzXzXzXz _Xz.V.V.o.U _Xz l. .o.cXg.cXg.V.c.c.c.U.c _XzXzXz.^.b.b.bXt.r F e eXzXz.b.#.c.I iXg.#Xu. XgXz.o.c.U.U.c.c.c.c.c.UXu.: i.V iXu.c.U. . .#.c.#.c.c.c.V.c.c.cXg.c.c.cXg.c.c.V.V.V.c.c.VXgXg.o.c.U.V.o _XzXzXz.^Xj.r ~ ~.8 ~ ~ ~ ~ ~ ~.r 3.r 3 ~.8.8.`", +" NXz.bXz.^ l.^XzXz.bXz N.bXz.b.bXz.b.bXz.b.b.bXz.b.b.bXzXz.bXz.b.b N.z.^ e.^.bXz.b.^.oXzXzXg.z.b.bXz _Xz _.cXk.c NXzXj ~.`X,.9X0 S w.T n z xXl x.DX, 8Xl.3.9 x 1 h.M u 8XqXrXrX8 ^ {Xi L {.P.P.BXi.4 M.>.0 T :X5.9XKXc :Xc.eXIX-X- R.~X- RX5.e 3X-.~.eX- R.eX-.eX-X-X,X1.ZX- RX-X-XDX, RX,.aX-.M.a.D.wXP.] F.~.`.`.~XV.rX* eXdXdXz.b.b.bXz.^.^.bXg.^.b.b.b.b.^XgXg l.o.c l l.c.oXgXgXgXgXgXg. .f.&.tX@ lXg.o.c.oXg.c.bXg.zX@X@.z NXz.o.^Xz.b.bXz.^.^.^XtXx.RXk.rXtXt.r.rXtXt.rXtXtXg q./.RXzXg.bXz.bXzXzXz.b.bXz.I q l. ./XgXk.bXg.c.o.VXgXg.V.VXg.cXg.c.oXgXg.c.V.o.VXg.o.VXg.V.c.o.o.b.b.bXzXzXt.^.r F.`.8XI.8.a 1.Y nXw t < RX-X-.`.e a RX1 R R t.a a.*XeXpX6.{.PXb U U a < a <.M a C tXeXn.xXB .l.l.a.a RXIX- R.ZX,X, $.}Xl VXc =Xw g.n $ '.0.| @.Z.K c.k.8 ~.rXtXtXtXt.X.rXt.rXt.rXt.rXt.r.`.HXD vXa.W.W RXlXlXl.* $Xe..XL.9.~.K.u N NXj.bXzXz.^.b.^.^Xz.bXz _Xz _XzXz.oXj F.8 ~XV.rXt.r.X.b.X.bXjXj e e ~.rX@Xk )Xk q ) qXxXx qXxXt ~Xt.r.rXt.^ N.o.^Xz _.oXj.b.oXzXz _Xz _Xz _Xz _Xz.bXz.b.V.cXg.c.o _.b.#.c.c.b _.c.U.o.cXg.c.cXzXz.oXz.o.b N.^Xj.r F ~.^.bXz.o.IXg.c.o.U.c.c.o.b.bXgXg.c.c.c.c.c.VXg.UXg.V.c.#.U.U.#.#. .#.U.c.#.#.c.c.V.c.V.V.c.c.c.V.c.V.c.c.c.VXg.c.o.cXg.o.U.oXzXzXzXzXzXzXj.r ~.8.8 F.`.8.8.8.8 F.8.8.8 ~.8.8.8.8", +"XzXz.b.^Xz l.bXzXzXz.bXz.bXzXz.b.bXz.b.bXz.bXz.bXz.b.b.bXzXz.bXzXj.^.IXg.^.b.^XzXz.^XzXz.^.c.U.b.bXz _ _ _.o.oXkXkXg NXt.H BXG 0 *..X0 M.Y xXe 3X, $X5XcX;XwXUXc xXG 1.p.pXf.@X:X8 ;Xf.4 L L ; L.P.4XmXcXDXd 8 $X,.MX,XD.uXI.eXDX-.~X-X-.K.u.e.u.e RXI.a.~.e R.eX1.e BX-XI BX- R RX1 hX1 c a a.M.ZXG s ! : B.`.`.`.`.H.r.r.uXtXtXz N.b.b.b.X.b.b.^.^.oXzXz.X.b.o.o.o.bXg.o.oXg.c.oXg.cXgXk.b.XXg.b.b.oXg.o l.o l.cXzXz.bXgXd.^ N.b N.^Xz N.^.^.^ e e e.rXt.rXkX9 N e.r.r.r.rXt.r.kXx.^.^.^.^.^Xz.^.b.bXz.^.^Xz N.b.oXgXg.o.oXg.cXg.cXg.o.oXgXgXgXgXg.VXgXgXg.oXgXg.cXg.V.o.b.b _.b.bXzXzXz N.^ e.r.^.r ~.H.8.H 3.aX,.- y n.*.M R R.eX-X-X1 hX1 BXD R R a .! y.GXy @XU gXJ 5 (X9.K.r.r.r.r.rXt.^.rXt.rXt.r.r.r.r.r ~ 3 B v 2.N U t.ZXc U.M U.W bXGXlX1X9Xt.^ NXg.^.b.X.I l.^.^Xz.b l.b _.oXzXx.^ N ~ F ~.r.r.X N ) N.b.XXdXjXtXtXt.rXXX3.$.,XX ).$ D.$ (.5.r.rXt.r.rXtX* N.^.^.^.b.bXzXzXzXz _.b.bXz.bXz.bXzXzXz _Xz.b.V.cXgXz.o.o.#.o.oXz.U.c.V.c.c.V.c.oXzXz.^.b.bXz.bXj ~ eXt e.^Xz.o.c.U.o.c.cXg.VXg _.o.o.cXg.c.c.c.c.UXg.c.c.U.c.U.U.c.#.#.c i.#.c.#.c.#.c.V.c.c.c.V.c.c.VXgXg.c.c.VXg.VXg.c.o.cXgXz l.bXzXzXzXzXzXj e ~ F.8.8.8.8.8.8.8.8.8.` F.`.8 F.`.`.`", +"XzXzXzXz.^Xg.bXz NXzXz.b.b NXzXz.b.bXz.b.b.b.b.bXz.b.b.b NXz.^.^.r.^.b N.^.b N.bXz.oXz.b.b.oXz.bXzXzXz _ _.b.bXk.cXk.bXt.HXD x b.)X=X2 vXe.w $X,X,X,.ZXD 'XlXJX.Xw.-XpXnX>.x ;Xf ^Xi.BXi.B.B.P L.C H.Y.nX1 B.e B t t aX- R.eX-.eXIX-.e :.G.uXl.,Xl R c.] `Xl 3Xl $XlX5XlXJXK.'.H 1 3XD RX, a R R $.n.'.2X1XI.H.HXI.H.H.kXt.^Xd.^.XXz.b.X.o.b.o.XXgXg.XXxXg.oXx l.UX9 l.XXg.U.I.U.I.U.U.z.I.I.U.I.I.z.#.U. .#.Q.Q.Q.z.z l. Xk.zXk.z lXk l l l l.UXg.X.^.o NXgXx.R.z.X N.X N N.X NXg q.zXx lXk l l l l.U l.c.U.U.U.z.I.Q.U.I.#.#.#.#.#.I.#.U.#.I. .#. .I.#.#.#.#.#.#.#.I.#.U.cXg.c.cXk l lXx.oXz.^.^Xx.^Xt.rXt c.u c 3XcXc =.M hXDX1.Z cXl $ 3 $ $ $.w 3 U.M x.jX>.4 ;.. v $X,.H #X5XD 3XDXDXe vXnX> W.gXB ` h 1 cXlXJ s x 1 1XwXJ.[X;X;.!.0 ! ! '.Z.5.HX*.K.k.k N N N.^ N.XXxXo.^ N.k.K.^ N.^.kXtXVXD yXnXpXG $.ZXI.Z.ZXL v.@XG.ZXV.5.^.X.X.b.b.b.b XX d AX&Xk.IXx.IXkXk.I.I.k.rX*.H.rX9 N N.z lXo.o.XXt.r.kXV.8XX c.K h 3 $ ) c.k.u.rX*.r.r.r.rXt.r.^Xt.kXj.^Xz _.o _Xz _Xz _XzXzXz _Xz.b _XzXz.VXg.cXgXz _.c.UXgXz.V.cXg.o.c.cXg.c _.b.oXzXz.b.b.^Xj eXkXk.b.^.bXg.U.U.o.cXgXg.c.c _ _Xg.c.U.c.c.c.c.c.cXg.c.c.V.c.#.#.#.U.#.#.#.#.#.c.#.U.c.V.V.c.cXg.VXg.c.V.c.V.c.c.cXg.c.c.o.oXzXg.^Xz.b.b.^Xj e e.r F F.8.8.8.8.8.8.8.8 F.` F.` F.`.`.`", +".^XzXzXzXz.oXg.bXzXz.bXz.bXz.b.bXz.b.b.bXz.b.bXz.b.b.b NXz.b.^ e.^.X.X e.b.b.b.b.^.bXzXz.b.bXz.o.^Xg _XzXzXz.bXgXk.UXkXj.rXIXDX> 2X= & y 1.-X,X,XI.uX,XV $X,XD.ZX, R u.)XbX6.P.BXFX= /.v.)X= -.P ^X0X0X. 8.DX-X,XDXDXI RX- 3X1XIXI.uX-X3.%.3.,.%.%XK :.-.,X.X.XcXJXJ IXw 5.,.% : mXK x.K $ c $ c g g.>XOX5 '.k.u.k.uXoXo.5.^.^.b.X A ].z.X.XX@Xg Q.Q.I.z.z q l ] (.^Xd.rXx A iXk l l.&.6.z.z./.z l.I./.I.c l l.cXg _Xz.bXk.b N.o.^.b.b NXz.bXz.^.^.b.^ e e ~ e.rXj.r ~.r.r.rXt.r.r N.^.b.^.^.^.^Xz.^Xz.^Xz.b.o.o.cXg.bXg _.V.c _.oXg.o.o.b.V.o.o.o.o.o.o.o.o.b.o.o.o.b.bXz.^Xz.^.^XzXz.^Xj e.r.r.r.^ ~ F.` F.`XIXI a cXK.j.a.e a RX,X- a.eXD 3 a B.a.e a.e._XnXn ; {XF.M.eX,XV.`.HXI.H B.e tXe._.. .X+.Y $X< :X.Xl #XJ x v.9XB., [Xw.OXm.nXa.0XUX1XI.~.8.8.8.8.kX*XtXtXt.r.k.kXt.kXjXjXjX*XjX*XjXVXI.D v.WXe.M hXlX5Xl.wXGXG 0 y 3XoXxXx.U lXgXk l.z d.z.t.t.IX@.&.& fX .( f ,.R P q f f.| Q.t Q Z.f P.& QX@ ] ) cXJ IXJ |.,XJXc.,.$ q.$ qX9.XXxX*.kXt.5XtXjXj N.b.bXzXzXz.bXzXzXzXzXz.^XzXz.^XzXzXz.V _.VXzXz.cXg.cXj.c.V.c.c.cXg.o.bXzXz _.bXz.b.^.^ e.r ~.oXk.^XzXg.#.UXgXg.oXg.VXgXz.VXg.V.V.c.c.c.c.c.c.V.c.c.#X&.c.#.# i.#. i.#.#.#.#.U. .#.c.V.c.c.V.c.c.V.c.c.c.VXg.c.c.o.b.bXzXg.^.^.^.^Xj e.r ~ ~.8.8.` F.8.8.8.`.8.8.8 F.`.`.`.`.~X-", +"XzXz.^Xz.b.bXgXz.bXz.b.bXzXz.b.bXzXzXz.bXz.b.b.b.b.b.b.b N.^.^.r.rXd lXj.^.bXzXzXz.^.bXz.^.^.b.^.b. .UXz _.o.X.b.o.U.z.oXtXVX,XK 2.s.j MXeXK 1 c hX5 $ x $ 1 x :.' sXeXpX6 ;.4.v.. O.s v.s.v 2Xi.@ H.+ y.2 D.,.-XJ.- h RXD R R.a RXV R.5Xl.K RXVX,.e cX5X1.MX-.a.u 3.a.uX-X-X-X-.eX-.~.Z B aXI 8.9XPX..] D ).$ (.RXx.$XxXk ~XtXjXd.RX@ A.RXk.t N./.RX@.& Q.t.&.t.f.8.r.rXg.R.AX&.(.zX&X&X&XuX XuX .cX&X X&.U.c.c.c.o.b.b.U.^.^.b.o.^.b.b.^.bXz.bXzXz.^Xj.r eXt e.r eXt.rXt.r.r e.r.XXjXj.b.b.^.b.bXzXzXz.bXg.c.c.o.V.c.c _Xg _ _.o.c.oXg.V.c.cXg.oXgXg.V.o.VXgXgXg.V.b.bXz.b.^.b.^.^.^Xt e.r.r e.r.^.r ~.8 FXI.8.8.8XIXKXG.Z U.9Xl R :.M `XK xX5 mX, ` <.9.iXp.@.{ {.d.W UX5X-X-.~.~.HX-.uXDXe._.).mXn.p.F 1 x k.-XJ n.3XcXH.3.1Xh.G @.w.nXL.'XPX1X-.8X-.8.8.8.rXtXtXtXtXtXd.^XtXtXtXtXt.rXtXt.u.8.H.n.s.).) UXwXcX, $XL s.s o v.`XV.b N.^.b.bXz.bXzXd.X.^.^Xz.^.^.XXt N N.^ FX@ 7 qXk.$.z.I.R d.R.R.I (.I ].R )Xt # c #Xl # :XM.5X9.5.5XxXo NX9Xo N.kXk.^ N.^.b.U l.U.c.#.U.c.U.U.c.U l.U.U.c.U.U.V.I.I.UXg.c.6.#.V.U.U.U.U.c.c.c.o.bXg.b.^.oXzXz NXj e ~ ~ ~.rXz.^.o.c.b.o.o.c.cXg _ _ _.c.c.cXg.c.cXg.c.c.c.c.V.#Xu. .# iXu. .#Xu i.#. . .U iXu.#.c.V.c.cXg.c.c.c.c.c.c.VXg.c.o.b N.bXgXj.^.rXtXt.r.r.8 F.8 F.8.8.8.8.8.8.` F.`.`.`.`X-X-X-X-", +".^.^Xz.bXz.^.c.^.^XzXz.^Xz.^.^.^Xz NXzXz.b.b.b.b.bXg.b.b.oXg.^.^Xg NXk.bXkXgXk lXk.c.U l.U l.U.U dXu.z.U l d d.t.R.t.t Q q.]XJXwX>.) &.j.M E.M hXD h 3X,.MX, $.a hXD.).).BXf { - * C.* 8 t.*.N G 2 wXmXc $XD RXK aX, cXD.~.~X- B.~X-.` cX5.`X- RXI a.e a R aX-X-X-.uXIX3.u.aX-.~.aX-XI.ZX- BXD.9.' g.2X1 DXo ) q 5.$X9.$.&Xt.r e.k.^ N.^Xj.^.^.k.bXgX9.bXxXg.XXx.X.r.8.8Xt.X.U q.#.U.U.U.#.U.U.U.c.c.c.#.U.cXg.cXg.o.oXz l.b.b NXz.bXzXz.b.b.bXz.^.b.b N.^.^XjXjXt.r.r e.rXt e.r.r.^Xj.^Xz.^.b.bXz.bXz.b.cXg.V.VXgXg.o.V.V.cXg.o.cXg.VXg.oXgXg.VXg.VXg.oXg.c.V.o.oXz.^XzXzXz.^.^.bXjXj eXtXj.^.^ N.X ~.r ~.H ~.8.` 3X-.9.'XJ hXc.- x.OX5 |X.X5 xX.XKXK xXHXpXnX4 w %.).W $.a.e a a.e.u.e 3 3.a u.)X= ..jXM.l h.a.aX5XD $.}.} ` `XH n.9Xa.>XPXP g.5.`X-.`.8 ~ ~.u.r.r.rXd.H.^X5 e.rXt.rX*.rXtXt.r.8.ZXL.=.).N <.}.u.aXD.M O.sXG U.8.k.X.bX .I./Xz NX@ d NXz.XXg.X.XXtXtXj.^.b.rXjXk e.X.^.b.^XzXg.b.^.^.b.XXg l.r.rXt.rXt.r.r.r.r.r.u.r.r.r.r.r.r.rXt.r.k ~.r e eXzXzXzXzXzXzXzXzXzXzXzXzXzXz _Xz.b _.o.V _ _.U.6.U.c.U.U.U.U.c.V.c.c.c.c.U.U.U.U.U.U.o.b N.b.bXgXk.#.U.I.c.U.c.#.U.#.U.U.#.#.U.#.c.c.c.U.U.U.c.c.V.c.#.#.#.#.# i.# i.#.U.#.#.U.#.#.#.c _.c.V.V.c.c.c.V.c.c.cXg.c.bXzXzXk.^Xj.rXj.rXt.8 ~.` ~.8.8.8.8.`.8.8.` FX-.`.~X-.8X-X-.~.`", +".o.oXgXgXgXg qXg.c lXk.cXk.U.U.U.U.U.U l.U l.c.U.c lXgXkXg.b.^.^.b.kXg.X.o.b.o.b.b.b.bXz.b NXz.b N.o.^XzXz.zX@ f.& Q.t Z.& qX3.jXG.) WXr E.M t h.}.}.MX,.}.M U x.MXD pXbX6 L {Xv.N.*XlX1 8 R C.) 2 ^X;Xm.w R.ZXD ` < cXV.eX-.*X-.~.eXV.K 3 3XI RX1.e aX-.e.e R a.~.e.u c cXI.eX1.eX1X,.*X1X-.w TXcXO $X1.u.`.r 3.r.r.HXtXt.^.^ N.k.^ NXj.kXtXtXj.^ N N.b.b N.b.z.$ c.u.r NXkXk lXgXgXg.V.c.c.cXg.cXgXg.cXg.oXg.V.cXgXg.b l.^.b.^.b.b.b.bXzXzXzXzXz.^Xz.b.bXz.^ NXt.r.r e.r.r e.r.r.b.^.^XzXzXz.bXzXzXz.b.cXgXgXg.VXg.V.cXg.V.V.V.cXgXg.V.oXg.V.o.o.oXg.oXgXgXg _XzXz.^Xz NXz.^.^XtXtXj ~XjXdXz.^.I./.XXd.r F.8.8.8.`XI.u.jX;.i.M CXD.Z h.aXDX,X,.wXDX,.M U.jXnXf.CXfXe.W.9XM 1XlXM c TXXXJ :XM x.@.s vX+.F xXM.l 3 hX,.a 3XXXMX3.,XUXl sXaXOXPXU '.~.8 ~.` ~.k q q )XkXxXo.kXt.rX*XtXj ~XtX* ~ ~.H sXs /.N C UX, cX,.M s 2XL.9 a FXoXg.^.t.t.tXg A.t A P QX@.&.(Xg P N e e.^XjXj.r.b N.^.b.oXgXg.b.bXg l i d d e eXt.rXt e.r e.rXV.r.r.r.r eXtXt.rXt.k N.r e e eXzXz _XzXzXzXz _XzXz _Xz _Xz.bXz _ _Xz.bXz _.U.#.c.V.c.cXg.oXzXzXzXzXzXzXzXzXzXzXz.^ e.r e ~.r.^.bXgXz.UXz _.b _.U.U.U.U.U.U.U.U.U.U.#.#.#.#.#. . .# i i. i iXu.#. . .#. . . . .U.U.c.c.U.U.c.c.c.V.cXg.c.c.cXgXz.^.^Xg e.r.r.r.r 3.8.8 3.`.`.8.`.8.` FX- FX-.`.~ 3.~.~.`X-.8.~", +".o.o.o.o.b.o.UXg.b.b.b NXzXzXz.^XzXz.^.^XzXz.^XzXzXz.bXz NXj.r.r eXt.b.X.b N.b.^XzXzXzXzXzXz.b N.b.b.b.o.^ N.X.QXo.oXg.6 N ~XI 1Xn.) 0 &X>XG._.W.W <.M U.M.WX,Xe._ u - - { ;.BXv C 1.>XK.a t.*.N / 0 = =X;XK.Y.-.-X..aX-.~.~.eX-X-.eX-.u.eX-.`X, 3 BX-.e R.eX- aX- aX-X9 R.K.}X-XI.aXDX1.M.*.Z.0XPXJX1.H c.8.k.rX*.r.k.rXd.5 NXz.^.b N NXg.^ eXj.b.b.b.b.b.b.o q f.$ 5 5X@.f lXgXgXg.c.c.c.V.c.V.cXg.V.o.o.V.VXg.cXg.c.o.UXzXzXzXzXzXzXz.^Xz N.b.b.^.b.^.^.^ N.b e.r.r.r.r.rXt eXjXg N.b.b.^.bXz.bXz.b.oXg.c.V.c.c.c.c.VXgXg.VXg.VXgXg.o.o.oXg.o.V.o.VXg.o.V.o.bXz.^XzXz.^.^.kXj e.r e eXd.^Xz.b.^ l.k.r.r ~ ~ ~.8.8X1 B 1.' x.M.aXD.aX- tX- R RXDXD RXe.-Xr.. H S.4X0XsXD.WX,X7 h 1 #., cXlXK xXnX4X2.EX+ .lXM 1XK.}.} c.lXX.-XH g $.w.D ' '.0.0.`X-.8.8 3.X.$ q q D q.HXdXdXtXt ~X*XtX*Xt.r 3 $.w.=.= u.W `XD.} c.M v O b xX- ~.o.XXz.U l.UXgXx q (XkXx.z.z q NX ./ F.r.^Xz.^.^.X.b.^ NXz.o.b.o.z.6X& A.z _ ~ e e.r.r.r e.r.r e.r.rXt.r F e F e ~.kXj e.r eXj _XzXz _XzXz _XzXzXzXz _XzXz _XzXz.bXzXz _.o.U.U.c.c.cXgXg.VXzXz _.b.b _.b _Xz.b.^Xz e eXt e.r.^.bXgXz lXzXz _ _.oXgXg.V.cXg.c.c.V.V.c.cXg.V.c.c.c.V.#.c.#.#.#.#.U.#.U.c.#.#.#.#.c.U.U.U.U.#.U.U.#.U.#.#.#. .#.I.U lXk.I.b NXz.kX*.r.8XV.` ~X* 3.r.` 3.8.`X-.`.e.`.e.`X-.~.~.`.~", +".b.b.b.bXz.^.o.oXzXzXzXzXz.bXz.bXzXz.bXz.b.b.b.b.b.b NXz.^XjXjXt.r.r.bXg.^Xz.b.b.b.bXz.b.b.b.b.bXz.b.^.o.bXz.^.X.b.oXg.z NXtXI x JX= 0 w &Xf v.W u.W._Xe.N U.N.) p._XF.B {Xf.B.).N U aX-.a R t C /.NXC.j s.WXDXD UXD.~.eX-.~ B.e.eX-.~ 3.~X-.eX- cXD a RX-.~.eX- a.`.e # c.~XDXI R.e B.D R.DXl.wXU.0X-.`X*.`Xt.r.r.r ~XV.^.b N.b N.b NXz.b.b N.o.b.b.b.b.b.b.bXg 5.z./ q q.z lXg.o.V.c.c.c.V.c.c.cXg.c.V.cXg.cXg.o.VXg.o.UXzXzXzXzXzXzXzXzXzXzXz.^.b.b.^.r.^ e ~Xt.r.r e.rXjXd.^.^Xg.b.bXz.^.b.bXz.bXz _.o.cXg.c.oXg.VXg.V.V.o.c.o.oXg.o.o.VXg.VXgXgXg.VXg.o _XzXz.b.b.^.kXt e.r.r.r.r e.^XzXz.b.^.X e.rXdXt ~.` F.8.`X-.w xXp 1 R a < R a R t $ '.M h.- M.h.y.y.+ H.@Xs.M t t a < < aX-.~X-.*.* < p.)XnX+.jXB.Y.iXBXM.lXMXM `.- g '.'.w B 8X5.n DXIXI.`.8.5.5X9 c.k ).r.HX9.rXtXtXt.r.k ~.rXV.uXK.W.WXs.NXw.9X, 0....XnXp....Xn._ .X4..XA.CXfXb * G.* R tXU h.e.N.)X=.E o.sXaXL.s.wXa.w.~X1X1X-.e.e.~ 3.e a.`.e aXIX- R 3 R.~ a.~ B.e B BX-X-X1X-XDX1X,.' T s s 'XK.0.~.8.k.`.kXtXt.8XdXd.r.^.b.^.bXz N.bXz.b.oXz.b.bXz _.bXz.oXg.I.UXg.cXg.V.c _.c.c.V.cXg.c.V.VXgXg.c.o.V.V.cXg.VXg.c.o.UXz.bXzXzXzXzXzXzXzXz.^Xz.^XtXj FXj e.r.r.rXt eXtXd N.b.^XgXz.bXzXzXzXzXzXzXzXz.oXg.VXg.c.c.VXg.VXgXg.cXg.VXg.o.o.VXg.VXgXg.VXgXgXg _XzXzXzXj e.r eXt.rXt.r e.^XzXz.o.#.I.z eXd.r.rXj ~ ~ ~.H R tXc.pXr.a.a a aXD 1.2XH y $XG.F.EX2XAX6Xi.)Xs C 1XKXK : U 1 :XlXl.9.- vXpX4 S.@Xv.vX6.;X+ n.-.-XBXwXw.'Xa.n t : c.0XaX5 gXl.8.H 3 ).KX*X*.k.u.5XV.5 ~Xg q ~.K.rXVXVXVX5XL 0._ u 8 R.~ 8XD U v.s.Y.Z.` ~Xt l.bXzXz.b.b.X./Xk.5Xx N N N N.k N N.XXx.I.I q.&.AX@.$.I.z.I.b.^ N.oXz.b.bXj ~ eXt.r.r.r.r.r.r.r.r e e e e.^.k e ~.^.r.r e.^.bXzXzXz _XzXzXz _XzXzXz _XzXzXzXzXz.bXz _.b.c.#.c.c.cXg.o _XzXzXz.bXz.b.b.b.bXzXz.bXj e.6 q.o e.b.o.b lXz.b.bXz _.b.c.c.V.V.V.V.V.c.V.c.c.c.c.c.V.c.U.c.U.U.U. .U.U.c.c.c.cXg.cXgXzXzXzXzXz.o.c.o.o.o.o.o.V.V.V.c.cXz.U.^.^.^ e ~.`.8.`Xd.8.X.5.uX*X5.K.,XM.3X. [.Y.[ =X< 1XqXq._", +".b.b.^.bXzXzXzXgXzXz.^Xz.b.b.b.bXzXzXzXz.bXzXz.bXz.^.bXzXt ~.rXj.rXj.^Xk.b N.b.bXz.bXz.bXz N.b.b.b.b.bXzXzXzXz.^.bXz.V.cXg.^.HXI o...) ^..X0 S .Xi .X2X:.xX:X2 ..x.xX2.xX>X4.s U.N.*.*.*.DX,.eXw.s 2 HXmXm o & b vXL $XD.~.H.e RX- 3.e `XKX- RXIX5 3XIXI.ZX- B.~.e R.~ RX- B RXl.w.'XK.].' TXP ! g.D.`.~.kXV.r.rXtXt.rXd.HXzXo.oXz.^.bXz.XXdXz.bXz.bXz _XzXz _Xg.# l.c.c.o.c.c.c.c.V.VXgXgXgXg.o.c.VXg.V.VXg.V.cXg.c.c.b.UXz.bXzXzXzXzXz.bXzXzXzXd e eXt eXt.rXt.r e.r.r.r.^ N.^Xz l.^.b.bXzXzXz.^Xz.bXz _.o.V.V.V.o.o.oXg.VXgXg.o.VXgXg.oXg.cXg.VXgXg.V.V _.bXz.bXjXj e.rXt.r.r e ~ e.b.^Xz _.cXg lXd.r.rXt e.r F FX-X1XDXK nXr.Z RX- a.-X.Xc s.Z U.wXnX4X2 { - - p.M a R.e R a.e R R BX-.* a.d.*Xb.)..Xi ^.@Xi.vX4XpXn s.q oXa.w 8.eX1 TX,X5.n g )X- 3.u ) )XX )X3Xx ) ~X9 ~ ).$.f ~X*.u.H.D.n.N.) t aX,.wXDXD.MXs v vXpXD.8.HXd.cXz.b.bXz N.b./ q.f.f 5.&./.A N.&X .6.6 d.I.#.Q l.o.oXzXz lXz _ _.^XzXz _Xz.o.^.^ e e.r eXt e.r.r.r.r ~ e ~ e.r.r.X e.r e.^.^XzXzXzXz _XzXzXzXzXz _XzXzXz _Xz.bXz _ _ _.c.#.VXg _ _XzXzXzXzXz.b.b _.b.b.b.b.b.b e e e l.rXj N.bXg.cXz.b _Xz.b _.V.c.c.V.c.c.c.c.c.V.c.c.c.c.c.U.#.#.U.U.#. .U.c.U.c.cXk.c.oXzXz.^XzXjXzXz.V.o.o.o _ _XzXzXzXz.o _.U.bXz.^XjXt F ~ F F F.`.`.8.` 3X5.a.i.Y.YXB x E U EXeXp", +".^.bXzXz.^Xz.^Xg.oXzXzXz.bXzXz.^Xz.b.bXz.bXzXzXz.b.bXz.r.r.^Xg NXjXj.^Xg.oXzXzXz.b.b.bXzXzXzXzXz.bXzXzXz.b.b N _ _Xz.o.UXgXzXtXIXp.s M J..X>X8.<.p r.y.p.<.[X+ W.jX%XpXnXp.pXpXLXeXa C.*.M R.* C /.= O.W 2.=.v.E 9Xa.Z B.~ 3.aXVXDXIXl $ cX1XIXDX1XIX-.eXI 3 R 8 RXD 8.M T T.]XJ DX;.%.G K.O.0 D '.` ) P (.A.k ~ QXx f ( fX@.( d.tX&.t X l.bXzXz _.bXzXz.o l.o.#Xg.c.c.V.c.c.V.cXg.c.c.c.cXgXg.cXg.V.cXg.c.o.cXg.c.c.b lXz.XXzXzXzXzXzXzXz.^.^ e.r e.rXt.r.r eXt.r.r.r e.^.^Xz.^ lXzXzXz.^ N.b.^.^Xz.^Xz.b _.o.o _ _.o.o.V.o.V.cXgXg.V.o.oXg.o.o.VXg.o.bXz.^Xz.^Xj.r.r.r.r.r.r.r.^.^.^Xz.#.U.b.^ l.^Xt e ~.r.r ~.8 FX1 R.Y.pX+XD a aX-X- a R x.Z v xXpXf.xXAX6 u E t.} RXIXI.Z.aX1 3X,.} a < *X=X=XiXf %X=X=X=.sXn.) 2.s o.j.nXa R B.eX- BXaX5 T.0X-.8XIXt 3.u.rXV.r.u.k.KXt )Xk.KXxXoX9.5X5.n 2.).M.}X,.Z R.aXD.d v.@ hXI.H eXj l.bXz.bXzXz.b.^.X N N N N.K.bXz.b.^.bXzXz _XzXzXj.bXz.b.bXg.bXzXz _Xz _XzXz.b.bXz.^ N.b.^Xj e.r e.r e eXt.r e.^ e.^ ~ eXd.b.bXz.bXzXz.bXz.bXzXz.bXzXz _XzXz _ _XzXz.b _.c.# _ _Xz _ _.b _XzXz.bXz.b.b.bXz.b.b.^Xj ~ eXj e.^.b.o.UXgXz.b _Xz _.b.V.c.o.c.V.V.c.V.c.c.c.c.c.U.#.#.U.#.U.c.U.#.c.c.c.c.c.c.o.^ e e ~ e e e.^XgXg.bXzXz.^XzXzXz _.V.U.c.o.bXz.^.^.r.r F.` F.`.8X-.}.} 1.- h h.}X, h E.} < t a.} t", +".^.b.^Xz.^Xz.b.b.c.^Xz.^XzXz.bXz.bXz.bXzXzXz.b.bXz.b.^ e.^.r.rXt.r.b N.bXkXz.bXzXzXzXzXz.bXz.bXz.b _Xz.b.b.^.b.^.^Xj.o.cXg.X ~XVXq & vX0XL 0 S.x rX.n.NXs.N 2 ^XmXa.ZX1.e 3.a a a aX- t R cX, c $X-X-.~X- R.uX- R RXDX5 'Xw.2Xw !X. m 4.% IXJ.2 (X- 5 } 5.A.r ) f.R P A A.&.(.IX@X@.zX&.X.b.^.bXz.^.bXz.oXgXg.U.U.cXgXg.cXg.c.V.c.c.c.cXg.c.c.c.oXg.c.cXgXg.c.c.cXgXg.cXgXzXz.o.b _Xz.X _.XXd eXdXdXd e.kXjXdXtXd.k.kXd.k.bXx.b.zXgXg.o.o.o.oXg.o.o.oXgXg.o.b.oXgXg.c l.U.U.UXg.U.U.U.U.o.#.U.U.c.U.U.c.oXgXg.X.^Xj.^ N.^Xj.^ N.o lXd.#X@.QXg.o.zXgXzXd.^Xo.k.k.8.uXV 3XcXr M h CX1.aXD.ZX1 $ x 1._X+X>X8Xf S._Xw xX,XKXlXcXl ' :.- cXM a.).s.BX6.C 0.v.NXa O.N.w *.W.s JXrXP.wXD.e : 'XD.n.nXPXo.H.` ~X*Xt.u.r.k.rX*.u.K.r VXk IXX m.,.,.' v.=.=Xs aX1.H R 8.N.WXnXG tXI.r e.^Xg.bXzXz.b.^XzXzXz.b.b.^XzXz.b.^.bXzXzXz.bXz.bXzXz.bXzXz.oXgXz.b.bXzXzXz.b.bXzXz.bXz.b.b.bXz.^ eXt.r.rXt e.r.z ) qXtXj.rXjXz.^XzXzXz.b.bXzXz _XzXz.b.b.b.b _.b.bXzXz.bXz.U _.bXz _Xz _XzXz.bXz.bXz.b _Xz _.o.b.^XjXt.r e eXzXz.o.UXzXzXz _XzXz _.o.c.c.V.c.c.c.c.V.U.U.c.c.#XuXu iXu.V.V.#.V.U.c.U.c.cXg.o.^ e e e e e e.^Xg.o.b NXj e.^.b.^.b _. .o.V.o.bXzXz.^X* F F F.`X-.}.F >.l h xXM.a.}XD.a a a.e a.} a", +".b.b NXzXzXz.^Xz.U.b.bXzXzXzXzXzXz NXz.b.b.bXz.^.bXz.b.rXxXg.k eXt.^XzXz l.^.bXzXzXz.bXzXzXzXz.bXz.^.b.o.I N.^.^ eXtXzXx.U N.^.` $ =Xs = J vXr W WXr.pXB $.YXB.lX3.l.l h.i.lXBX+ v.W.N.N.N.w.a <.a xXU.n.N C.)X= ^.E.wXa.DX,.u.e a.eX-.e R.e.e RX-.K : 3Xl.` R.u h BX,.w.wXJ.2XO.u.D.H.~XI 3XV.8 3.HXV.5 N.X.5.k.k.kXoXo.XXj.X lXx.I.^XxXg l.X.U lXg.o.U.#./.#.c.6. .I.#.#.I.#.#.U.#.U.#.#.U.#.#.#.U.U.#.#.U.U.#.U.U.U l.z l _XgXg.X.o.bXgXg.bXdXd.^.^.^.rXd N.k.kXt.k.^.kXd.^.b.XXk.b.b.X.b.b.b.o.b.b.b.o.b.bXz.oXg.VXg.c.cXg.c.o.c lXg.c.oXg.c.c.o.VXg.oXz.bXz N eXtXtXj.r.rXj e _.^ _.o.b. .^.X l.bXjXtXtXt.k.u ~.H.8.aXc.j.+.M t.aX-X1XDX-.aXD hXpXnX>.4.. %.Z.M.MXD.a.a RXI 8X1X-.} u.* %.vX6XfX6Xb.N.= 2 8XDXs u._.s J.q o T.ZXDXlX;.D.0.0 gX5.uXtX*.^Xo.^Xd N N N NXX.K.$XX.u.5X9 `X5X, 1.@ vXaXw.9.Z x RXGXn.jXn 3X5.X N.o lXgXgXg.c.oXg.o.o.o.o _ _.o.o.o.b.b.o _.bXz _.b.bXz.^.bXg.oXzXzXz.^XzXzXzXz.^XzXz.bXzXzXzXz.^Xj.r.r.r e.r.r.XXgXk eXj e.^Xz.b.oXzXzXz _.b.bXz.b.b.bXzXzXzXzXzXz.b.b.oXz.c _XzXz.b.bXz.b.bXzXz.bXzXz.bXzXz.b.b.b e e eXj.^Xz _.c.U _Xz _ _ _Xz.o.c.c.c.c.c.c.c.cXg.V.V.c.c.c.U.U.c.U.c.c. .c.c.V.V.cXg.c.oXz.^Xj e ~.r e NXg.bXzXj e eXj.^XzXz _.U.o.V.VXzXz.^ N.r.r.`Xt :.}.[.l.m.m E U a 3.a.e.eX- a.a.eXD.e", +"XtXjXj.^.^Xz.bXzXg.b.bXz.bXz.b NXzXzXzXz NXz NXzXz.b.b.^XjXk.^.r.rXz.b.^XkXz.bXz.b.b.b.b.b.b.b.b.b.bXg.z.I.b.b.r e e.bXg.z.X.^ cXG o.W 9 v s.@.<.p WX7.9.i $X,.i x : h <.}.l.l.-Xr v.sXe.WXL.M.M U xXG aXDXD 2 2 ^ H o.n.n g.0.ZX-Xc.-Xl `XI x 3XlX. }XlXl DX,.2 s.OXcXc.2Xw 'XIX,XI.H.` 3 3XV.8XV ~.kX*X*.5X*.k.k.H.^Xd.kXd.b.X.b.o.^.b.o.b.bXzXz.b.o.cXgXg.cXgXk.UXgXgXgXg.VXg.o.V.o.c.V.o.c.oXg.V.V.oXg.V.o.o.oXg.o.b.o.b.^.^Xz.bXz.^.^Xz.^ eXt e.r eXt.z.k.r ~ e.r e.r.r eXt.^ l N.bXzXzXz.bXz NXz.b.^XzXz.^ _.oXg.o.VXg.V.o.o.V.c.oXg.oXg.o.V.b.V.o.V.b N.^.^Xt ~.r.r ~ ~.r e.^XzXz.b.bXj.bXzXxXz e e.r.r.r ~.8 ~.8 RXcXq.j.M a R a RX1 B.* < U.YX4X>.{ %.).M R.*.*.a.* aX- a R a t t.d /Xi.@XiXv.) G t.* B.MXD uXe 0 0.q 9 '.D.* D.].Z.D.0 gX1.`.8 ~.r.r.rXt.r.r.rX*.k.uX3XX q )X3XX :Xc.wXG 2.jXw.a.a HXm.q.w.wXD.]Xc.'.,Xl.].a R.9.e : $.w ' ' ' g TXUXoX,.~.`.`.`.8.8.8.` ~.8 ~XVXtX*.rX9 ~.kXt e.r e.X.^Xz.b.^.b.^.b.^ _Xz.bXzXz.b.c.c.c.c.V.c.#Xg.c.c.cXg.c.V.c.V.c.c.VXg.V.o.VXg.c.c.c.c.oXgXg.bXz.bXgXzXz.^XzXzXz.^XzXzXz.b N.^.^XjXgXjXt e.r e.r eXj.^.b.^XgXzXzXz.bXzXz.bXz NXz NXzXzXzXz.bXzXzXz.o.VXg.V.oXg.oXg.cXg.o.V.o.V _.V.o.oXzXz.kXt.r ~ ~ F ~ e.r.^.b.VXgXz.b.^XgXz.^Xj.r.rXt.u.8 ~ FX1.9X+.j 1 a a.aX, BX1 R t.M.Y.pX>.4 -XF._XG h x.iXD.Y C., tXp.M J.@ 0.C 0.=.) C t a.eX,Xl k.-Xe 2.=.!.!Xa.0XD.nX5.w.n.0.0.`.8.8XtXt.r.r.rXtXj ~ NX*.rX* ~.rX*.r.8 cXVXl.).) u C t tXs vXaXmXlX1.8Xt.^XzXzXz.b.bXz _Xg _XzXzXzXzXzXzXzXzXzXz.bXzXzXzXz _Xz.b.bXzXz.cXz.bXzXz _XzXz _.bXzXz.b.bXzXz _Xz.bXz.^ NXjXj.r e.rXt.^.r e.r e e.b.^Xz.b.bXz.^XzXzXzXzXzXzXzXzXzXz _.b _ _XgXg.o _.V _.o.V.V.o.o.V.c.c.cXg.c.cXg.c.b.b.I e.cXkXg.c.# l.oXg _.oXgXg.c.c.c.U.c.c.c.c.c.V.V.c.c.c.V.c.V.V.o.V.#.V.c _.V.c.c.cXg.c.o.o.b NXzXz.b.oXg.b.b.k e.r eXj.^.b.cXg.o.bXz.^.^ e ~.8XD >Xq.m.i x t a a.e.e a aX-.a 3XD.eXc 3.e", +".rX*Xj.k.k.^.XXgXgXkXgXgXxXgXgXkXg.b.b.XXgXgXz.k.oXz N N l N.^.^.k.o.b.oXzXkXz.o.^Xz.b NXz.^ N.b l Z.&X@.&.R.&.R.f.(.&.( , f 5 5 n o.).NXG vXLXnXrXwXB 1 h $X, tX,XO TXc $ $ `., k.,.Y.gXH.1X+Xp._.d.).MXD u.9 C *.s.v 2 OXC s.wX,.*X-.e.e.e.eX-.e.aX- B B B.wX5.wXP g R B.`.`.`.`.8.8 ~ ~.8.8.8X*.r.r.r.r.X.8 e.rXt.r.r.b.^XzXzXz.b.bXz.bXz.^XzXzXz.V.cXg.VXg.cXg.U.oXgXg.V.V.c.c.cXg.cXgXgXgXg.VXgXgXgXgXg.o.o.o _.bXz.bXg.bXz.bXzXz.b.b.bXzXjXj.r e e.r ~Xz.r.r.r.r ~ eXt.^Xj.^Xg.^XzXzXzXz.b.b NXzXz.bXz.b.^Xz.bXzXzXz.oXg.o.oXgXgXg.o.cXg.V.o _.c.o.V.oXgXz N.^Xj.r ~ F.8 F.r.r.^Xz.^Xz.bXz.^Xg.^XzXj ~.r.rXt F ~.8X1 $.YXnXG.MX- 3XD RXD R t yX%.; M M M S.;X: H.y ^.@Xv.) 8Xs.* $., x.u RX. =.j.....v.qXm.nXP g T c BX1X1XI.8.8.rXt.rXt.r eXjXj.r N.r.^.k.^XzXjXj ~.k.r.k s 2Xs.N.W v v b.0X1.H F.^.b.^.b.o.bXzXzXgXg.c.VXg.V.V _ _Xz _XzXzXzXzXzXz.V.c.o.V.c.b.b.V.bXzXzXzXzXzXzXz _XzXzXzXzXzXzXzXzXzXz.bXz.^.b e eXt.r.^.k e ~ ~.r.r e e.^Xz ~.bXzXzXzXzXzXz _Xz _Xz _.bXzXzXz.UXzXz.bXzXz.bXz.bXz.bXzXzXz _ _XzXz.^Xt e.rXj eXjXzXz.c.#XgXzXzXz.bXz.c.c.c.c.V.c.c.c.V.c.c.c.c.V.c.c.V.o.V.c.c.UXg _ _Xz.o.V.o.V.V.c.oXzXz _.o.oXg.cXz N eXtXtXjXj.r.^Xk.X.bXg N.^ ~Xt c 3 ._Xq.m u tX-.`.a.8.e aX-.e.e a.eX- #.e.e a", +".r.r.r.r.r.r.r.r.r.^.k.rXt.^.^.^.^.^.b N.bXzXzXz N.b.b.zXjXj.^.^.^ _.^.b.^Xg.b.b.b.^ _XzXz.oXzXzXzXz.oXg.b.^ eXj N.b.b.o.cXk.b.r hXL.N.s.s.j M.Y k kXl.- mXl x x.a.} a aX-.e.eXlXDX,X,X, h h.Y x y.[XrXp = y U t CXs.N.NXL.EXGXLXJ R R.eX, 3XD c xX1XD.D.w.9Xc mXI.`X-X-.`.`.`.` F F.8 ~ ~.rXtXt.rXt.r.r.r.kXdXt eXj.^.^XzXzXz.b.bXzXz.bXzXzXz.b _XzXz _ _.V.c.VXg.#.V.o.c.c.V.cXg.c.c.cXg.VXg.o.bXz.bXz.^XzXzXzXzXzXz.bXz l.^XzXzXzXzXd e e.r e.r e.r.r eXt e.r e ~ e e e.r e.^.b.bXz.^XzXz.bXzXz NXzXzXzXzXz.^XzXz.^XzXzXzXzXzXz _Xg.o.bXg.c.V.V.V.V.V.o.bXz.^.^Xz e.r F ~ F ~Xt.^ _XzXzXzXzXzXzXgXz.^XzXjXt.r.r.r F.8X1X,XKXGXG < RX,X1.a.Z.M t UXnXn SXi.CXiX6._XnXn ^ HXf.@.@Xi..X6 ^ ^ * * C.M $XKXB aXI R.Z y vXn 0.@ &XmXPX;.' :X1XIXIX1.`XV.`.rXt eXt eXj.^.b.^.o N.b.b.bXz.^.^XjXt.rXVX5 sXLXe v 9 s $X1X1 F eXz.bXz.b.o.b.bXg.c.VXg.c.oXgXg.o.bXz _XzXzXzXz.V.V.V.V.c.V.VXg.VXgXz _XzXzXzXzXz _XzXzXzXz _Xz.bXz.bXz _ _Xz.bXz e e e.r N.rXt ~Xj ~ e.r e.^ e e.^XzXzXz.bXzXzXzXzXzXzXzXz _Xz.bXgXz _XzXzXzXz _Xz _Xz.b _XzXzXz.b.b.^ e e.r ~Xj.^.b.b.U.U.c.oXzXz _ _.c.V.o.c.c.V.o.c.c.V.c.V.c.c.V.c.c.VXg.V.#Xg.b _XzXz _.V.c.V.c.o.c.V.oXzXg.c.cXg.b e e.r e ~Xt.rXj.^XzXj.r F.` F.`.`.uXB.i E U t t.~X-.8.aX-.a.`X1 a.a 3Xl c.e 3XI", +".r.r.r.r.r.rXt.r.rXj N.r eXtXt.^.^.^XzXz.^.^XjXjXj.^.^.bXj e ~ e e.^.bXzXz.b.o.^.b.b.b.^ _.^ _Xz.b.b.^Xj.r.r e.^Xz.bXz.bXgXk.X.r 3XG.).W 0.@ [ n |.SXHXc n nXKX3.i a 3.a a R.*.e `XJ : ).Y., k.,Xw =XHXh.TX0.)XG &XK 8.D v oXG =.w g : D 1 DXc TXHXlX. sX;XOXw '.a.`.`.`.`.`.`.`.8.8 ~ ~ ~.rXt.r.rXt.r.r.r.^ eXtXj.^XzXz.b.bXzXzXz.bXzXzXzXzXzXzXzXz _Xz _.o.o.cXg.#.c.c.c.c.cXg.VXgXg.VXg.c.V.bXzXzXzXzXzXzXzXz.^XzXzXzXz l.^Xz.^XzXzXj ~ e.r.r.r.r.rXt.r ~.r.r.r.r.r.r.rXt.^.^ N.o.b.^XzXz.bXzXzXzXzXz.b.^XzXzXzXzXzXzXzXzXzXzXzXg.oXg.oXg.cXgXg _ _XzXzXzXzXzXzXj ~.r.` F F.rXj.^XzXzXzXzXzXzXzXgXzXzXz.^.r e.r.r F F.8XD.Y 1Xq 8 t hX,.M.Z R a .4X6 wX6 2 pXbXb ^.vX=XiXf.@Xf ^ 0Xi * u a R.,XHXl R.wXlXsXLX4X>.; ^X0.OXP m.|.2 D TXJ )Xx 5 )./.k.r ~Xt.^.b.b N.c N.b.b.b.bXzXzXzXjXj.r.8XI.Z '.n R.e.a.8 ~ ~XdXz.b.b.b.cXg.o.cXgXgXg.c.V.V.V.V.b _Xz.b.o.b.V.U.U.#.U.c.#Xg.VXg.#Xz.b _XzXzXzXz.bXzXzXzXzXzXzXzXzXzXz _XzXzXz.b.^Xj ~Xd.^.r.rXj.r e ~ e ~ e.r e.b.b.^.b _Xz _XzXz _XzXzXz.bXz.o.VXz.b _.b _XzXzXz.bXzXzXz _XzXzXz.^Xg.k.rXj.rXtXjXz.b.UXg.c.oXzXz.b _Xg.V.c.cXg.V.c.V.c.c.V.c.c.c.c.c.c.V.cXg.#.o _.bXzXzXz.cXgXg.c.o.c.o.V _ _ _Xg.oXj e.r.rXt ~Xt.r NXtXj ~.r.` F.`.` aXX 1X, E t.e.e.~.~ a a.aX-.e.eX-.e aX-X- a.~ a", +".r.r.r.r.r.r.r.r.r.r N.r.r.r e eXj.^Xz.^XjXj e.r e NXz N.^ e e e.rXz.^.b.^.b.c.bXzXz.b.bXz.bXzXz.b.^XzXj.r e.rXj.b.bXzXzXg l.o.kX-Xq v 2 2Xn n.- XJX, R.wXDX, hX, #.} R t.~X-X-Xl 3XM #.5 # 1 x.5X3 XBX%...N.NXK.MXs.N.n =Xr =XwXyXU T hXl `XlXK TX; gXH gXUXI.`.`X-.`.`.`.8.8.H.H.r.r.rXt.r.r e.r.rXd.rXdXdXj.^.b NXz.bXzXzXzXzXz.bXz.b.bXz.bXz.bXz _Xz _ _Xg.o.#Xg.VXg.V.V.V.o.V.c.VXgXg.oXz _Xz.bXzXzXzXz.^XzXz.^.bXz l.^XzXzXzXzXd.r e.r.r.r e.rXt.XXg N e.r.r.r.r e.^.^ NXz.bXzXz NXz.bXzXzXzXzXzXzXz.b.^XzXzXz.^XzXzXzXzXz _.oXg.oXgXgXg _XzXzXzXzXj.^.^Xj e.r F F F ~Xt.^XzXzXzXzXzXzXzXzXgXzXzXz.^ e.r.r.r F F.8XI.YXn 1 U tX, h RX, t t.WX+.E.;X6X6.C.B.4.s w.@XiX=.v 0X6 0X6 0Xn.W u.a h.aXl < 3.w.w y.).@ S.x.x.O KX; : TXJ I V.|XX IXx.R.&.r e.^Xz N.b.b.bXkXz.b.b.b.b.b.bXz.^Xj.r.r.`X-.` RX1XI.8.8.r eXd.^.b _.b.U.c.cXg.VXg.c.o.c.c.c.c.V.VXg.V.o.V.c. iXu iXu i.c.V.V.I _.oXz _Xz _Xz _ _XzXz _Xz _Xz _Xz _ _Xz.b.^Xz.b.b.k eXdXd e ~.r ~.^.rXt e.rXjXz.^Xz.^Xz.bXzXz _Xz _XzXz _Xz.c.oXzXz.bXzXz.bXz.bXz _XzXzXzXzXz.o.b.z.6 N.r.rXjXz.b _.c _XgXg _.b.b _.cXg.c.V.c.c.V.o.c.c.c.V.c.c.c.c.cXg.c.c.UXz _XzXzXz _.VXg.V.c.V.c.VXg.VXzXz.o.oXj e e.r e ~.rXtXgXt.r F ~ F.8.`X-X9 ` $X, <.*.e.e.eX-.e.e a 3 R R.~ 3.~ 3 a.e.e.e", +".r.r.r.r.rXt.r.r.r.r.bXt e.r.r.r e.^.b.^ e.r e.r.rXj.k.^.^ e.k F e.^.b.^ N.^XgXj.b.^.b.bXz.b.bXz.b.^Xj e ~ e.r.bXz.b.b.b.c l.o.k.` s v /.. 0X%XcXB :XDX,XeXe $XI h.M.a $ a a a.~ aX-X- a a a cX-.~.}.l.i.@.s.N C.a.*.Z.q 2 &.j.[.'.w $ 8XI.a.eX-.* B.Z x.nXU TX-X-.`X-.`.`.`.8 ~.r.rXt.rXt.r.rXt.rXt.r.r.rXdXo.^ NXz NXz.bXzXzXz.bXz.bXzXzXzXzXzXzXz.bXzXzXz.b.o.V.#.c.VXg.VXg.V.V.cXg.o.o.V.b.^Xz NXzXzXzXzXzXz.^XzXzXzXz l.^XzXzXzXz e e.r.r eXd ~ ~.r.b q.z.r.r e.r.r e.k NXz N.b N.^XzXzXzXz NXzXzXz.bXzXzXzXzXzXzXzXzXzXzXzXz.o.oXg.oXg.o _XzXzXzXzXz.^ e.r e ~.r F F.r ~ eXzXzXzXzXzXzXzXz.b.cXjXzXz.^Xj.r.r e F F.8X1.9.9Xp._ t h x.* $ t a UX+X> S 0Xf ^Xf S r.+.; MXC HX>.; M H &.j.j.9 : TXc a a.a t.9 b.s r.+X>.x W.OXU.~.u.`.`X*.u.`.8 ~.`.kXt ~.r.b.bXz.b.o.cXzXzXz _XzXz.b.bXzXj.rX*.8.8.`.`.8 ~ ~.r.rXjXdXz.b.b.b.#.cXgXg.V.V.V.V.V.cXg.V.V.VXg.c.c.V.c.U.c.U.c.c.UXg.c.c.#.o.cXzXzXzXzXzXzXz _XzXzXzXz.bXz _Xz.b _Xz.b.bXzXzXd.^Xd ~.rXt eXt ~ e FXjXj.b.^.bXzXz.^XzXzXzXzXzXzXz.bXzXz.UXzXzXzXzXzXz _XzXzXzXzXzXz _XzXzXz.^.IXg e.rXjXj.^.^.b.cXz.VXg _Xz _.oXg.V.V.V.V.c.c.V.c.V.o.c.V.c.c.cXg.c.o.U.oXz.bXz.bXz.oXg.c.V.c.V.c.VXg.o.b.b _.o.bXj e.r.r e.r.k l.r ~.` F.`.`.`X- ` x hXD.e R BX-.e a.eX- RX- BXVXD.e a.` aX-.e a", +".r.r.r.rXt.rXt.rXt.r.^.k.r eXt e.rXj.^Xj.r.r.rXtXjXt.r.r ~.rXjXt.r.^.^ N N.^Xk.b N l.^.#.^XzXzXzXz.b.rXj.I qXjXz.b.b.b _.c.U.o.kXVXG v * 0...j.g xXM h.MX,XlX,X,X, 8 R RX,.eX- a a.~.eX- aX-.a #.8 a .lX4.).) C.M t H o v.E.Y.-Xw s.wX, a.aXI.a 3XD.w ' T ! g R.`X-.`.`.`.8.8.r.r.rXt.r.r.r.rXt.r e.r.r.rXdXz.^ N.bXzXz.b.bXz _Xz.bXzXzXzXzXzXzXzXz.bXzXzXz.b.b.c.U.UXgXg.V.c.c.V _ _ _.o.b _XzXzXz.^ NXz.bXzXzXzXzXzXzXz lXzXzXz.^XzXj eXt.rXt ~Xj.r e.X.z.b.r.r.r.r e.r e eXjXz.bXzXzXzXz.bXzXzXz.bXz.bXz.b.^XzXz.^Xz.^XzXzXz _Xg.oXg.b.o.b.^XzXzXz.^.^Xj e.r e e F.r F.o N.bXzXzXzXzXzXzXz.^.bXgXzXzXz.^Xj.r e ~ ~ F.`X1 y.j.Y._ xXc.w.9.9 $XGX+X> SXi.@X6Xf.@ H b.v O 2.M 2.WXe.)XeXeX, RXl `X-XD XwXBXBXD.}.WX,X,X5.w.M gXVXD aX-.aX5 # $ R RX-.a 3.K # #.F.s.).N C.*.a p G 2X+XBXKXw 9.wXD a.eX-X- B 8.Z ' T.]XU B.`.`.`.`.`.8 ~.r.rXt.rXt e.r.rXtXt.r eXd.r.rXoXj N.b.^.b _XzXzXz _XzXzXz.bXzXz.bXzXzXzXz.b.bXzXz.c l.U.V.V.o.o.V _XzXzXzXzXz.^ _ NXzXzXzXzXz.^Xz.^.bXzXzXz l.^XzXzXzXzXjXt e.r.r.r.r.r ~ F eXj.r.r.r.r.r.r.r.rXt.^.b N.^Xz.^.bXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXz.o.V _.b.^.bXzXzXz.^XzXzXj e.r.r ~ e.r ~XtXg.#.cXzXzXzXzXzXzXz.b.b.oXzXzXzXzXj.r.r e ~ F.8X1 x.- W.j.[.-XHXc.9.9 1 kXrX> M.v.@.@.@.@.v.v.= C.M t.* a u.* a.e.aX1XDXIXD.* a.e.9.W o O.y.TX2 M.+X;X..2XJXJ.% D ) 5.r.` ~ ~.rXt.^.bXz.b.bXg _.b.bXz _ _Xz.b.b N.^Xt ~.r F.` ~ ~ ~.rXtXt e.^.bXz _.o.I.c _.c.c.c.c.V.c.c.c.c.c.c.c.c.c.c.c.c.V.c.V.V.c.V.V.U.c.c.V _Xz _XzXzXzXz _XzXzXzXzXz.bXz _XzXz.b.b.^.b.^ FXo.rXd F.rXj.IXg.^XjXt ~.k.X.^.b.^.zXzXzXzXzXz _ _ _Xz.b.cXzXzXzXz.^Xz.oXzXz _.^XzXzXzXz _.^Xj.^.rXtXtXtXz.^.^.c _XzXgXg _XzXzXzXz _ _.o.c.c.c.V.V.V.V.c.V.cXgXg.V _Xz.o e e.^.b.b.oXg.c.c.c.c.c.o _.o.VXg _Xz.oXg.bXj.r ~ e.rXd.k.r F.8.`.8.` 3.a [.[.Y.1XK $XJ., ` : D :Xl.uX-X..G.e 3X-.e.eX-.e", +".r.r.r.r.r.r.r.r.rXjXt.o.kXz.^.^ e e ~.r.rXt.r.r.XXxXx.XX* qXx qX9 ).f.$./.r.rXt.8Xk.$.UXk.b.bXz.bXj.rXt e.k.b.^Xz.bXz.bXg.UXg.bX1.DXL pXbXn.j WXKXc h.a hXD RX, $XI.]XK.,XJ : R kXU sXJ.-XlXwX. c h .. /.N G u.N *X= v.[ X3Xw s.w.Z t.a a aXD RXD.wX5XP.]XDX1.`.`.`.8 ~.rXtXt.rXtXtXtXt.rXt.rXtXtXt.r.r NXt.bXz.bXz.b.bXzXzXzXzXzXzXzXz.bXzXz.bXz.bXz.bXz.b.o.c.UXg.cXg.V _XzXzXzXzXz.^Xz NXzXzXzXz.bXz.bXzXzXz.^Xz.^ lXzXzXzXzXz.^XjXd e.r e.r.r eXt.r ~ e.r.r.r e.r.r.r e.kXz.^Xz.^Xz NXzXz.^XzXz NXzXzXzXz.^Xz.^XzXz.^XzXz _XzXz.^XzXz.b.^XzXz.^Xj e ~.r.r.r eXj.^Xj.c _XzXzXzXzXzXzXzXz.bXgXzXzXz.^.^Xj e ~ e F FXIX,X+XpXp.M.M $ tXD.M tXGXr & M 0XfX6Xi.sX= G 8 C.e aX- a a a aX-X1 R.` RX1.3., $.aX,Xe v.xX2.xXrX+XK $XI.u 3XVX1.8 3.8.H F.rXtXj.b.b.b.bXzXk.b.b _Xz _ _.b.b.b.b.^X*XtXV.8 F F.` F.r.r.r.rXjXzXz _.o.#.c.oXg.c.VXg.c.VXg.c.V.V.V.o.V.o.V.o.c.V.c.V.V.U.V.o.#.c.V.bXzXzXzXzXz _XzXz _XzXz _Xz _Xz.bXz.bXzXz.b.z A.t l.rXt.rXt ~ e e ~ ~XjXt.^Xt eXj eX@.^.bXzXzXzXz _XzXz.V.oXzXz _ _.bXz. Xz.b.bXzXz.oXzXzXz.^Xj e N N N ~ NXz N.UXzXzXg.V.bXzXzXz _Xz _ _.o.V.c.o.c.V.cXg.c.cXg.V.b.^.^.^ ~ eXz N _.o.c.V.c.c.VXg _Xz _ _.V.o.oXgXg.b.^XjXt.r.r.^.r ~ F F.8.`.`.r.aXB.m hX,.} $.a # h.~.uXlXo c | K.KX,.~ a R.e.e", +" ~ e.r.r.r.r.rXtXt.^.kXx N.^Xt e ~.r.r e.r.r.rXt N.$ q 5X9.f.&.$.k N q ).z 3 ~.rXtX9.z.bXk.^.&Xg.z AXgXg.I q.z.I.^.bXz.b.o.cXg N.H.Z.s.W %XiXn n.- 1.iX, hXD U.ZXDX1Xl x DXl.ZXDX,X,X,.wXK hXDXMX- # #XBXe.).N.NXs.).).m.[Xc.lX3XU.'.w $ R.a.a R aX- 8.D.'.'Xw.DX-X-X-.`.8 ~.rXtXtX*XtX*XtXt.r.r.r e.r.r e.r N e NXzXzXz _XzXzXzXzXzXzXzXzXzXzXzXzXz.bXzXz.bXz _ N.o.c.o.V.o.V _Xz _XzXzXzXz.bXzXzXz.^Xz.bXzXz.^XzXzXzXz.^ lXzXzXz.^Xz.^ NXz.^Xd.r.r.r.r.r.r.r.r.rXt.r.r ~Xt e ~XjXz.^XzXzXzXz.^XzXzXzXzXzXzXzXzXzXzXzXz.^XzXzXzXzXz.^XzXz.bXzXzXzXzXzXj e.r.r e.r.^Xj.z.bXzXzXzXzXzXzXzXzXz.^Xz.X.oXzXzXzXz.^Xj.r.r e F FXD R.9.YXqXpXn.Y <.a t W H S ^X= /.N /.= G C R a.~ a.e aX-.~X-.`.~X- R R.'XwXD a.M v.sX> H.T =XZ =X..kXJ (X3.r I ) q q 5 ~Xj.k.bXz.b.b.o.U.b.b _Xz.b.b.o.b.b.b N.k.r.8.8 ~.` ~ F F F.r.rXtXjXz.b.o.U.c.c.c.VXg.c.V.V.V.V.c.c.c.V.c.c.V.V.c _.c.V _.V.V.V.U.V _ _XzXzXzXzXzXzXz _XzXzXzXz _XzXzXzXzXz.bXj.I Q eXx jXd.r.r e.rXj.rXtXj.r e.rXtX& qX@X Xj.bXz.bXz _XzXz.b.c.bXz.b.z.Q.Q.UX Xz.bXzXz _XzXzXz.bXz e.o N N.(Xk.^.bXzXgXzXz.V.oXzXzXz.b.o. X&.6.b.o.c.oXg.c.V.c.VXg.c.oXzXj.^ e e e.bXzXz.o.cXg.cXg.o.VXzXzXzXzXg.cXg.VXg.o.b.bXj eXt N.r.r.8 F F.~.`.} aXp._ E.M aX-.a a R.e.~.`.~Xl.3 hXJ.3.e.e.e a.~.e", +".r.r.r e.r.r e.rXt.^XjXg NXt.r.r.r.r.r.r.r.r.r.r.r.r.rXtXj.k.kXt.r 3.rX*.KX*XV.KX-X9.A.A./.U.6.& i.f./.z.f.6.I.U.^.bXzXz.oXkXg.bXVXVXe.sXb..Xn.Y [X+XM h.iXD.DXDXG : c c $.ZXJ c.aX,X, c $ x $.Y .l.lXB xXe / 2.).s.W.jXB.iXXX3.>.!.9 $X,.aX-XDXI RXD.ZXl.'Xc.0 B.5X5XV.8X5 ~XtXV.^.k.rXt.u ).^.k.rXt.r.r.r.b.^.b.bXz _XzXz.bXzXz eXjXz _XzXz.bXz.b.bXzXzXz.bXzXz.b.c.^XzXzXzXzXzXzXzXzXzXzXzXzXzXz.bXzXzXz.bXzXz.^XzXzXz.c.bXzXzXz.^.b.^.^ N.^Xt e.r ~ e.r e.r.r.r.rXt.r.r e.r.r e e.^XzXzXzXzXzXzXzXzXzXzXzXzXzXzXz.^XzXz.^Xz.^XzXzXzXzXz.b.^.^Xz.^ e e ~ eXt.^.^Xz _.#XzXzXzXz _XzXzXzXzXzXz.b.oXzXzXz.^Xz.^ e.r.r F.8.`.8 $.9XnXGX4.xXp x u 0 v C.* a R a R a.e B.eX1.8.e.eX-XDXG t.).s.N.N C.MXe U.W / 0 OXL mXI.8.8.8 ~.8 F.r.r 3.8.8 ~Xj.bXz.b.bXz.oXgXzXz.bXz _ _.b.b.bXzXjXt ~.r ~.r ~.r.r.r.r.r e.r eXt eXk.o.V.c.c.c.cXg.V.c.c.V.c.c.c.c.V.c.c.V.V.V.V.c.V.V _ _.V.bXzXzXzXzXzXzXz _.bXz.b.b.^Xz.o.o.oXzXz.b.bXz.tX&Xx Z.X.r e e e.rXj.^XzXjXj.rXj jXt.rXj.k.r.^.b.b _ _Xz.^.VXgXz.b.b l.:X@ d.^.bXzXz _.bXz _Xz.bXz.r.rXj.X.z.:.U.^.#.^XzXz.V.bXz _Xz.bXz.^Xz NX .:XgXx./Xz _ _ _.bXz.bXzXg.o.bXz.b.bXzXz _ _Xz _Xz _Xz _Xz.o.VXg.V.c.c.VXg.V.c.oXz l.^.r.8.`.8 ~.~X9 :.[XpXqXe h R.MX,Xl.K 3XI.eX-X-.~X-X-.aX-.e a.~.e.e", +".r.rXt.r.r e.r.rXt e.r.r NXt e ~.rXt.r.r.r.rXt.r.rXt.rXt.rXt e.rXtXtXj.rX*.^ N.kXgXtXj NXz.^.^Xz.b.b.b.b.U.$.o.bXz.b.b.b.o.U.c.b ~.DXG...s ^X< nXBXB hX,X, R R.aXD.aX,XD.a aXI.eX-.eX- aX-.eX. K.G.,XXXXXMXM #.l.l.l.l.- n.- yXKXK.' $X, h $X- RXD.a B.w.w.' g '.e.`.`.`.`Xt.r.r ~.rXj.k.rXt ~.r.r.rXt.r.r.r N.oXz.bXz.b.b.b.b.bXzXzXzXz.^Xz.^Xz.^Xj e e e e.r.r eXjXg.^Xz.^XzXzXzXz.o.VXg.cXgXg.V.o.o.bXzXzXzXzXz.bXz.bXzXg.o.b.^Xz.^ e.r eXt eXj ~ ~XkXk.z.rXj.r.r.r.r.r.r.r e.rXj.r.^Xz.bXzXzXzXzXz.^XzXzXzXz.^XzXzXzXz.^Xz.^XzXz.^Xz.^.bXz.^Xz.^.^Xj eXz.bXg.U.6. Xg.b _.o.VXz _XzXzXzXzXzXz.o.oXz.^XzXz.bXj e e.r ~.8.`.`X- t.w.j ..4X>Xn o.EX>X+.; WX0XLXG xXK.aXD.}XlX,XI c 3.~ R aX-.* = WXb.) / 2.sXeXn U.N / OXaXL `X-.8.8.8 ~.8.8 ~ 3X* ~ ~.r.^.b.bXz.b.b.oXg.o.b _ _Xz _.b.o.b.^ e.r e.r.rXt.rXtXt eXt.rXt.rXt e eXk _XgXg.cXg.V.c.c.c.cXg.c.c.c.c.c.c.cXg.c.c.c.c.V _Xz.o.oXzXz _XzXzXzXzXz.bXzXzXzXz.b.oXj./.#Xz _.^Xz.b.b l.Q.X e e.r.r.r e.^Xz.^.r.rXjXtXk.& q l eXtXz.^XzXz _ _ _.V.o.b.^.oX@ ZXz.X iXz.bXz _XzXz _Xz.^Xz e.r.r.& q.7.6.^.cXzXz _ _XzXz _.b.bXz.bXz.U.z.t ZXg.IXzXzXz.bXzXz.^Xz.c.^Xz.bXz _XzXzXzXzXz _Xz _Xz.b _.VXg.V.VXg.VXg.V.V.oXg.V.c.^Xt ~.8.`.`.`XM `Xp Xe E u aX-.e.e a.~.~.e.e.e.e.eXI.e.e a.e.e.}.u", +".r e.r.r.r.r.r.r ~Xt ~.r.^.k.r.r e.r.r.r.r.r.rXt eXt.r.r.r.r.rXt.r.r ~Xj.k N N.^Xk.^Xz.bXz.b.^Xz.^.^.b.^.b.bXz.b.^.bXzXz.oXk.c N ~XlXe ^ ^.@ WXH.h.-X,X,X, R hXI hXDX-.eX,X-XIX-.~ R.e.e a.a.eXM Y.eXIXM 3.} # #.l #XB.- y s.w.W 8 R R tX-X- a RX1XD 8.nXl sXK T.`.` F ~.8.r.k.rXt.rXtXtXtXtXtXt.rXt.rX*Xt.r.^.XXjXzXz.bXzXz.b.b.b.bXz N.b.b.^.^Xj e.r e.r.r.r e.r.r.oXt.^.^XzXzXz _.oXgXg.cXgXg.cXg.o _Xz.^XzXzXz.bXz NXz.X.oXz.^.b.^Xj.r e.r.r ~Xt ~ e.r.zXj ~.r e.r.r e.r.r.r.rXjXj.^Xz NXzXzXz.b.^Xz.bXzXzXzXzXzXz.^Xz.^.^XzXzXz.^.^XdXz.b.^XzXz e ~ e _Xg _.o.U.UXg.V.VXg.V.b _ _.b.bXzXzXz.o.XXz.^Xz.b.^ e e.r.r.r.8.`.`.`.a RXq.s 0 S w.@.@ o w v ^X0XpXw.9XJX3 VXl :X3XKX5.5.e.e B t C o *X=X6X>.4X> 0X>.. v 2.s b T 3.8.8 ~.8 ~.8.8Xt.r.r.`.8Xt N.bXz.b.b _.o.o.oXzXzXzXz.b.b.b.b.^ e.rXtXtXt.rXt.rXtXt.r e.r.r eXtXt.U.b.V.cXgXg.cXg.c.c.cXg.VXg.c.c.c.o.V.V.VXg.V.V.oXzXz.V _XzXzXz.bXzXzXzXzXzXzXz _Xz _.b.V.o.6.cXz _XzXzXzXzXgXgXj e e eXj.^.^Xj e e.o q qXt ~.r.r ~Xj.bXz.bXzXzXz _XgXz _.b.zXu.t.6.( l.^.^ _XzXz _Xz.^.oXz ~.o PXg NX .(Xk.bXzXzXz.b _XzXz _XzXz.b.^.zXg.^.:.(Xz.oXzXzXzXzXzXjXzXkXz.b.bXz _Xz _Xz _XzXzXzXz _Xz _Xg.c.V.VXg.V.o.V.V.oXg.c.b.bX*.8.8 ~.`X-X*Xc 1.i UXD t.e a.~.~.e.e a a a.e a.e.aX,X5 c.ZXI aXI", +".r.r.r.r.r.r.r.r.r e.r.rXt N.rXt.r.r.r.r.r.rXt.rXt.r.rXt.rXt.rXt.r.rXt.^Xz.^XzXzXg.bXzXzXz _.bXz.o.b.bXz.b.^.bXz.b.b.b.b.o.cXgXz.8X5XsXb.@.j nX#.S.lXD UXDXDXMXI.}.aX-XDX1X-.~ 3X-.eX-X-X-.e.a.eXl.,.eXl.u.~ aXMXM x.-XcXG.w.DXDX-X-XI RX-X-XDXIXD R 8.nXm TXcXl.~.`.` ~ F.rXt.r eXj.rXt.rXtXt.rX* ~Xt.r.rXt.r.b eXjXz.^Xz.^.b.^ NXz.^.^.^.^.^Xj e.r.r eXtXtXt eXt.r N e.r.^XzXz.b.b.V.VXgXg.V.o.o.o.o.bXzXzXzXzXzXzXzXzXz _XgXzXz.b.^ e.r eXt.r e.r.r.r.rXj ~Xt.r.r.r.r.r.r.r.r e.^.^ NXz.^.^.b NXz.bXzXzXzXzXzXzXz.^XzXzXzXz.^XzXzXzXz.^.b N.^.^Xj e eXd.b.#XgXg.o.o _.c.o.c.VXg.VXg.o.o.o.bXz.o _.^Xz NXzXj.r e.r.r.r ~.`.`.`X- t.w._.s ^.@ H wX> 0 vXe u 1 a R.a hX-.aX-.D.5X-X1.eXDXK.*.N.).v ^.@X>X>.4Xn ^.sXi b OXcX,.a.8.8XV.rXV.r.rX* ~ ~ ~.r.k.b.bXz _Xz.bXgXg _.o _ _ _.b.b.bXzXj.r e.r.r.rXt eXt.r eXt.rXt.r e e.kXg.b.c.c.c.VXg.o.oXg.o.o.o.oXgXgXg.V.c.c.c.V _XzXzXzXz.cXz _XzXzXz _XzXzXz.bXzXz.bXz.b _Xj.o.c _XzXzXzXz.oXz.o.VXz.^.^Xz.bXzXj e e ~ q.^.z eXt ~XtXt.^.b.^XzXz _Xz _.cXz _XzXz.^XzXjXz.bXz _XzXzXzXz _XzXzXj.^.oXkXkXg./.I.I.b.b _XzXz.bXzXz.b.b.b.b.z Z./.oXg.(.^.^Xz.o.o.^XjXj.oXgXz.b.bXz _ _XzXzXzXz _ _XzXz _.VXg.c.cXg.V.c.VXg.V.o.c.#Xz N.^.8.8.8.8.` R E U E U.e.aX1.e.eX-.e.~.e.e.eX- RXl #XK 1 :XMX5.9", +".r.r.r.r.r.r.r.r e.r.r.r ~.b.rXt.rXt.r.rXt.r.r.r.r.r.r.r.rXt.rXtXt.r eXjXz.^XzXz _.VXzXzXz.b.^.^XjXz.b.^Xz.b.bXzXz.b NXz.o l.o.^ F.ZXL.) ^X%.j.-.- h.MX,X1X,.K <.a.a 3.eX- 3XD.eXVX-.e.~.e.~ a.~XIXIX- 3XlX-.a c x `.jXK.w.W 8X- a.~.aX- R R R R.aXD.w '.0 gXlX1.`.`.8.8.`Xt.r.r.rXtXtXt.r e.r.r F.rXt.r.rX*.r.X e.^.b.b.b N.X.^Xt e.r eXt e.r.r e.r e.r.r e.rXtXt.r.^Xt e.^XzXzXzXzXzXz.b.b _.bXz.b.bXzXz.^XzXz.^XzXzXz N _.XXz.^ NXj e.r.r.r.r.r.rXt.rXt ~.r e.r.r.r.r.r e.r.rXt N.k N.^.^.^.^Xz.^Xz.^Xz.^XzXzXzXzXzXz.^XzXzXz.^XzXjXzXz N.b.^XjXj e.rXd _.Q.I.c.o.o.o.c.V.o.V.VXgXg.VXg.o.oXz.X.XXzXzXz.^.^ e.r.rXt.r.8.`.`.~.~XI R v 2 2X= 0 2X= 2.N.w t.MX,X-.e 3.}.e 3.uX-.e 3 B., yXp.N.s.@X4XnXp.x.;.@Xf.v 0XnX+X,X- 3.`.8XV.rXtXt.r.r.8 F ~XtXj.b.b.oXz.bXz.c.o.bXz.bXz.b.b.bXz.k eXt.r eXtXt.rXtXtXtXt.rXt eXt.rXt.bXg.b.c.cXg.o.oXz _XzXzXzXz.o.c.c.c.c.cXg.V _XzXzXzXzXz lXzXzXzXzXzXzXz _Xz _Xz.bXz.U.c.b _.b.bXz _.VXz _XzXj.U.V.^Xz.b.b.^Xj e e.r e e.oXt.r eXtXt.rXj N.^ e eXzXzXg.c.^XzXzXzXz.b.o.^XzXzXzXz.oXzXzXzXz.b eXj.^ N N.^.^ N.c.bXz.^XzXzXzXz.^XzXz.b.bXg.b.o.^.^.o N.b _.bXz e e eXg.bXz.b.^XzXzXzXzXz _.bXzXzXz _ _Xg.c.c.cXg.cXg.V.cXg.c.c.U _Xz.^.r.`.`.`X-.` Xe h a.eXD.a.e cX1.~X1.} R aXD.eXI #.~X-.aX-X, c 3", +".r.r.r.r.r.r.r ~.r.r.r.r.r N.r.r.r.r.rXt.rXtXt.r.r.rXtXtXt.r.rXt.rXt.r.^XzXzXzXzXz.cXz.^.^.b.^.^ eXj N.b.o.z.o.bXz.bXzXz.o.cXg N F c.).WXq z k.- 1 U.M.D R $.}X- RXI R aXD.e R.u.eXV.e.~X-X-.e.~.a.8.~ c.K.e.u #XMXKXUXGXa.D a aX-X-X-XD.e aX- RX1 8Xa.wXOXc R R.`.8.8 ~.8.rXtXtXt.rXt ~XtXt ~ F.8 ~.8.rXt.r.rXzXtXz.b.bXz.b.^ e e.r eXtXt.r.rXt.rXtXt.r.r.r e.rXt.r.^.^Xt.bXzXzXzXz.bXzXzXzXzXzXzXz.bXzXz.b.b.bXz.b.^Xz.b.oXg N.bXz.k e.r.r e ~Xt.r ~.r.r.rXt.r.r e.r e.r.r.r.rXt.^.^.^.^XtXtXj.^XzXz.bXzXz.bXzXzXzXz.^Xz.^.^XzXzXz.^Xz.^.X.^XjXt ~ ~ e ~Xz.c.U.o.o.VXg.V.V.V.c.V.V.V.o.VXg.bXz.o.b.^ N.b.^Xj.r.r.rX* ~ F.8.`.`.`.~ BXl.s / /X= /.N.N.N U R.~XD.e.a aXI.uX-.e.u T D.eX, 1 UXLX>Xh MXnX> S.+.J 0 2Xn y.a.a.}XI.8.8.r.r.rXtXt.rXt ~.rXt.^.o.bXz _.b.b.U.V.bXz.V.b.bXz.b.^ e.rXt e.r.r e.r.r.r.r.r.rXt eXtXtXjXgXgXzXg.cXz _ _XzXz.b.bXzXz.o.c.V.b _.V.V.oXzXzXz _Xz.b.cXzXz.bXzXzXzXzXz.bXz.bXzXz. .U.cXzXzXz.oXzXzXzXzXz _.c.^.b.b.b.^ e.r eXjXj.rXj ~Xt.r.r ~.r e.r e eXjXjXz.^.c _ _XzXz.b.oXz.^ _.b.b _Xz _Xz _XzXz.b.r e.k.^ N.^.b NXg.^.b.b.b.^XzXjXj.^XjXjXj e.^Xj eXj NXz.b.^.^.^ e e eXk N.b.bXz.bXz _XzXz _ _XzXzXz _.oXg.VXg.c.cXg.VXg.V.c.c.c.U.c.^ N ~.8.8.8X-.a.F._ U.i.MXD aX- DXl.e 1 : 3.eXJXDXD :XM.a x :.e.e $", +".r.rXt.rXt.rXt.r.rXt ~Xt.rXt N.r.rXtXtXt.rXt.rXtXtXt.rXt.r.r.r.rXt.rXtXj.^XzXzXzXz.UXzXzXz NXjXt.rXzXzXz.IXg.#.^.bXz.bXz.b lXg.^ F : n.y.h.T.[.-Xq $XDX,.aX,XI.a hX1.aXlX3XlXIXI c RXI.~.e.~X- aX-.a 3X-X*X- #.K `.- y.w.ZXI B.~.~X-X-X1.e B.*.aX,.Z.n.n m.Z RX1.`.8.8 ~ F.r.k.rX*Xt.rXtXt.r.r.8 F ~.8 ~ ~ ~.r NXj.b.bXz NXz e.rXj.r.rXtXdXt ~.r.r.r.r.r ~Xt.r.r.r e.kXj.r.^.^.^.^.^Xz.bXzXzXzXzXzXzXzXzXzXzXzXz.^.bXz.bXz.^ l.b.^.b.^Xd e.rXtXtXdXt.r.kXtXtXtXt.kXjXtXt.^XtXj.kX*Xj.^.kXj.^.^.kXg.XXg.b.oXgXgXgXg.o.o.o.oXgXg.oXg.o.oXg.X.o N.^.^.^.^ lXgXz l.c.#.U.U.U.U.U.U.U.U.#.U.U.U.U l.V.z l.oXgXgXg.b.^.^.k.^.k.uXV.HXV.8.8XI.w s O.s.s.s.sXs.ZX, c T.u R.MX1.a.a.` :X1 c.2.a.a CXs.; z.h M M.T.+.x vXn.s.qXGXJXl.`XIX*.KXVXtX*.r eXt.r.rXt.rXj NXzXzXzXzXz.UXzXzXzXzXzXz.b N eXtXtXtXt.r e.rXt eXtXt eXt.r.rXjXjXzXk.b.b _.b.bXzXzXzXz.bXzXzXz.b.b.bXz _.b _XzXzXzXzXzXz.o.o _.bXz _.bXz.bXzXzXz.b.oXz.U.6XgXzXzXz.bXzXz.b.bXz.b.UXz.bXzXzXj e e.^XjXt e eXt e.r.r e.r.r.rXj.r e.^.bXz.UXzXz _XzXzXzXzXzXz.bXzXzXzXzXzXzXzXzXz e.r e eXt eXtXz.^.^.bXz.^ N.b.^ e.r eXt.r e.r e.rXj.^.b NXz.^Xj e.r.^.oXz.bXzXzXz.bXz _XzXz _Xz _Xz.oXg.oXg.V.V.o.V.c.c.V.c.o.I.o.c.b.^.r.8.8.`.a c.g._ h.a a a.e.~.~.` #.` # R.e.5X,.~X5.a.e :X3.e.a k", +"Xt.r.r.r.r.r.r.r.r ~.r.r.rXt N.r.r.r.r.r.rXt.rXt.r.rXt.rXt.r.rXt.r.r.r.kXzXz.^XzXz l.bXz.b.^Xj e e.^.^.^.b.b.o.^.bXzXzXz.b l.c.b.H `Xc.1Xp.T nXK 1Xq.aX,XI RXKX, 1XD :X,.%Xc : D ` D c 3XD 3.eX-X- 3 3.a.u 3 #.lXcXJ.w.w.w.*.~X-X- RX- R a R.a.D.Z.w.w.wXO RXI.`X-.H.8.8.`.u.8X* ~XtXtXt.r.k ~ ~ F ~ F.8.r.8.r NXd.X.b.X.b.^Xj.kXdXd.r.rXt.r.k.r.k N N.^.X N.^.b N NXx.X.b.X l.z.z.QXg l.c l.U.c.U.c.c l l.c.c l l.U l l.U l.I.o.zXg.X.b N.b.X.k.k.^.k.k.^.^.k.^Xd.k.^Xj.k.^.k.^.^.kXjXj.k.^.^.b.o.X.b lXg.o.b _.b.b.b.o.X.o.b.b.b _Xz.b.^.^XjXjXtXjXd _.Q.o.b.U.c.c.c.c.c.c.c.c.c.c.c.c l.c.o.b l.o.b.X.b.b.^XjXjXt.kXt.r.H.8.H F.H.8X1.'.W.sXL.dXs C 8XI.u.u.ZX1 R 3XD R.,X5 'X1XlXIX, $XrX>X+ z.L.+.T.EXf o.@XGXw T.]X. ( Q 5 f Q.AX@Xx N N.X N.X NXg.U.U.U.U l.c. .U.U.U.cXk lXgXg.^.k N.^.^.k.k.kXjXtXj.k.kXj.k.^ N.b.b.z.o.b.b.b.bXz.bXzXzXzXzXzXzXzXzXzXz.bXzXzXz.^XzXzXzXz.c.oXz.bXzXzXz _Xz.o.^.oXz.b _.^.oXz.^.o _.bXzXz.bXzXz.b lXz.bXz.^XjXj.^.^Xt e ~Xt e ~.r eXt.r e ~ e.r e.^.b N.VXzXzXzXzXz.bXzXzXzXz.bXz.b _ _.^Xz.^.^ e.r eXtXj.rXt.^Xj eXjXj.^Xz.bXj e e e e e e.r e.r.rXtXj.^.^Xt e.r e.r.o.b.b.b.b.b _XzXz _ _XzXz _ _.o.o _.VXg.VXg.c.VXgXg.c.c.#.V.c.b.^.r.` ~.` a $XG E U a a.e.e.~.~.~X- c.e.e.~.eXI.e.e.~ a.eX- a aX-", +".r.r.r.r.r.r.r.rXt ~.kXt ~.r.X.rXt.r.r.rXt.r.r.r.rXt.rXt.rXtXtXt.r.r.r.^ NXzXz.oXz.b.o.^ NXj.rXtXj.b.^.b.^.o.^Xz.b.b.b.b.bXgXg.^.HX1XB.TX<.T.-XK $X,.aXD R.'XDXJ : k cXK : c : DXK.a.eX-X- 3X1.eXIXD.a.} # # `.[ y.wXL.ZXD R.~ RX-X-XDX, R $.9Xc T gXO m.`.HX1X*.uX*XV ).z.kX9.X.5 NX9.5.K.X N.k.kXtX*.k.k.^Xx.XXgXg l.b.^Xo.^Xd.rXt.r.XX9.k ~X*.r.kXtXtXt N.^.kXtXj.^ eXt.^Xz.^XzXzXzXzXzXzXzXz.^Xz.^.^.^.^.^XzXz.^Xz.^XzXg.^.^XzXd.k.^ ~ ~ e.r.rXx NXtXt.r.r e.r.r.rXt FXt.rXt.r ~.r e ~ e.^.^Xz.^XdXz.b.oXzXz.bXz.^Xj.^.^XzXzXzXz.^ eXdXt eXjXtXg ~.^ eXz.o.V.o.VXg.c.VXg.V.o.VXg.V.V.o.bXz.o.oXzXz.^.b.^.r.r e.r.r.r F F.8.H.~.H.~.wXL.N._.N t t R 3XI.e.`XD BXlXJX-X5 DXl.~ $ c 1 n.[.W.;.TXrX2 ^ 2.v O b.9.ZXI.XXdXxXoXdXxXxXxX9Xj.r.r e.rXjXj.^.b.b _ _ _.o.c.b.b.o.o.b.o.b.b.k e.k.k.kXjXjXt.r.rXt.^.k.^.b.bXgXkXg.IXg.U l.c l.U l.U.c l.U.U.U.c l.U.U.c.c.c.c.c.cXg.c.o.#Xg.o.o.VXgXg.o.^.o.c.6. .bXzXz.bXzXz _XzXzXz.b.bXzXz l.o.^Xz.b.^.^.^ N.k eXjXjXj.r.r eXt ~Xt e.r e e.^.b.b.o l.b _.bXzXzXzXz.b.bXz _XzXzXzXz.b _.bXj e.r e.r.r.rXj.^.r e.rXj eXjXjXj.r.r e.r.r.r e.rXt e eXjXt.r e F e e.rXz.bXzXzXzXzXzXzXzXz _XzXz _Xg _Xz _.o.c.c.c.V.c.V.cXg.U.c.c.V _XzXt.8.8.r.e #Xq U.} <.e.e.e.e.e.~.~.e.e.e a aXI.e a.e 3X-.e.e aX-", +".r.r ~.r.r.r.r.r.r ~.r.r.r ~.^.k ~.r.r.r.rXt.rXt.r.r.r.r.r.r.r.rXt.r.r.^Xz.^Xj.^.b.b lXz.b.^.k.^.^.b.^.b.b.^.b.bXz.^.b.^.bXg l.b.r.u.1Xr.j.TXw.YXc h $ aXDXD.MXD x.~XDX- cXI R 3 $.u.uX- :.ZXI.uX, $Xl c.l `X7XH nX0.j oXG s.D.DXDXDXD RX,XD sXl.!X$.O YXy.]Xl ) 5X9 ).8 } 5.$ q.f q q.&.r.k FXt ~.8 F.8 ~ ~.r.kXg.X.^Xz ~ ~ e ~.` F ~.r ) NXx.8 F.8 ~XjXtXj.^ N.^Xj.k.^.rXdXz.^.b N.bXz.b.b.b.bXz.b.b.b.bXz.b.bXzXz.^.^XzXz lXz.^.X.b.bXj e.r.r.r.rXt N.z ~Xt.rXt.rXt ~.rXt.r.r.rXt.rXtXt.r.k.b NXz.bXzXzXz.^XzXjXzXzXz.bXzXz.b.^.^XzXd eXj e.r e.IXg e.r e.o.VXzXz _.oXg.VXg.V.c.V.o _XzXzXzXzXg.b.^XzXz.^.^Xt e.rXt.r.H ~.8 F.8 F.`.`XD x.W.) u.*.*X1X-.8.~ DXl RXcXlXD.e.e.D cXJ `., s M = M.4X> .X=.v OXG.0X-.H.r.H e.rXd.r ~.r e.r.r e.r.rXjXj.^.b.bXzXz _ _Xg.b.o _ _XzXz NXj e.8Xt.r.r.r.r ~ F F.rXtXtXtXj.^ N.bXz.cXzXzXzXzXzXzXzXzXzXzXz.bXzXzXzXzXz.b _.b.b.b.b.b _.b.I.oXg.oXg.o.o.c.c.c.U. iXg.U.U.U.c.U.U.c.U.U.cXk.cXg. .c.cXgXg.o.X.o.o.b N.b NXj.^.^ e.r e ~ ~ e ~.^.^ N.^.o.b.^.^XzXz.bXz.bXzXz.bXz _.b _.bXz.b.^ e e e.r e.r e.k.^.r e ~Xj.r.r.r.r eXt e e.r e.rXt e.r.r.rXj.r.r ~.r.r e N.bXz.bXz _ _ _.b _ _Xz.b.VXg _Xz.V.VXg.cXg.c.cXg.cXg.#.c.V.c.oXzXt.r.`.r.e #Xq E U a.e.eX-.~.~.eX-.~ a.`.~ c.H.~.~.eX-.e.~.e.e.e", +".r.r.r.r.r.r.r.r.rXt.rXt.r.rX* N.r.r.rXtXt.r.rXtXt.rXt.rXtXtXtXt.r.rXtXt.^ NXz.b.^.bXg NXz.^XzXzXz.b.^.^.bXz.b N.o.oXg.o.oXk.UXk.5XI.Y.. v.1.1.- k ` x c c $ $ $X5XM.5.uX, 3 R 3XD R cXIX3XJ.3 m.HX1X,XDXM # .[X8X> w.; vXa.wXs R B.e.* a.e.D.Z.'XU.Z 4.k.2 q.uXJ.R.$ ~ q 5 I q.A q.X 5XtXtXtXtXt.r.r.r.rXtXj.kXg.^.b.^ e N N.^ N.k FXtX* N.r.r.5.r.XXj.X ~.zXkXgXkXgXk.r e.^.b.b.^ _Xj.bXzXzXz.^Xz.bXzXz.bXz.^.b.b.b.b.b.^Xg.^.b.^.^ NXd.r e.r.r.k.r.r F.k.r.r.r.r ~Xt.r ~Xt ~.r ~.r.r ~ e.^.^.b.^.b.^.b.bXz.b.bXzXz.^.^.^Xd.^.b.^.^ e ~Xj eXj.z d.I F eXz.b.oXzXzXz.VXg.VXg.VXg _ _XzXzXzXzXzXg _XzXz.^.b.^Xj e.r.r.r.r ~ F.8 F.H.8X1.~ s.w.)Xs t RXD.8X1.e c m.~ 3.a aX- R RXKX5XD.e x.M.Y JXnXfXnX=.v.s v 9.Z.H.rXt e FXd.rXtXtXtXtXt.rXj eXtXj N.b.o.o.bXzXz.oXgXz _.b.b.b.bXzXj.r F.r.rX*.r.r ~ F ~.r.r eXj.^Xz.b.b.oXg.b.b.bXz.b.bXzXzXz.bXzXz.bXzXz.b.bXzXz.bXzXzXz.b.bXz.cXzXzXz.bXz _Xz.bXz.^.#.U.b.^XzXzXzXz.bXz.oXz.o.o.b.o.z.o.o.o.o.o.o.o.o.o.XXgXk.o.zXk.^.zX@.b N.b N.UXkXgXg.6 l.c.cXgXg.V.o.o.o.b.b.b.b.^Xz.^XzXz.^.r.r.r.r.r.r ~.^.rXtXtXtXt eXtXt.r.r.r.r.r.r e.r e.rXtXtXt.rXt ~.r.r e.^.^.bXz.bXzXzXzXzXzXz _ _Xg.c.o _.oXg.c.c.V.V.V.c.cXg.c.#Xg.V.c _.b.^ ~ ~.8.` cXq U U.e aX-.e.~.~.eX*.~X-.a #.uXI.~.e.~.~.e.e.eX-.e", +"XtXt.rXt.r.r.r.r.r.k ~XtXt.r.r N.r.r.r.r.r.r ~Xt ~.r.r.rXt.r.rXtX*.kX*.^ NXgX9XgXgXg.I lXk lXkXkXkXg.UXk.IXu.U.cXgXgXgXg.o l.UXg.k 3 v.W...;.1Xc `.i hX, B.a.a R R R.aXI.a R.eXIX- aXDXDX1.,.3XD.H BXV 3XX # >.[ 0.P 0X>XCXG sXa.ZX1 tX- t R.Z.w.'XO B.2X1.u.`.8.8.r.8X*.uXtX*.^ q.kXt.rXtXt.rXt.r.r.r.rXt.r.rXt.o.^.bXj eXgXg.o NXk.`Xk N.z.kXtXk NX9.oXj.^.z.cXk.z.o l ~ e.r.^.^.b l.^.b.bXz.b.bXz.b.^.^XzXz.bXzXz.^.^.^.^.c.XXgXg.XXz e.k FXtXt F.r.rXtXtXk.IXtXt.r ~.kXtXt.rXt.rXt.r e.k.^.^.b.bXd.b.^.#.^XzXz.^XzXzXz.^.bXz NXjXt e ~.^Xj.^Xj.QXz.r e.IXj.bXzXzXz.o.c.o.VXg _ _XzXzXzXzXzXz.cXz.bXz.bXz NXj.r e.r e.r ~ F F.8Xx.uXVXlXD.E.)Xe.M.eX1.~.H RXI R.eX-X- a a.e R R.eXDX, $XK U.W.. 0 0...s v.E TX-XV.r.rXj.r ~.r.r.rXt.rXt e.r.r e.k.b.bXg.o _XzXz.VXg _.b _.b.bXz.^.r ~ ~.r.rXtXt.r.r.r.rXtXtXt.^ N.b N.b.o.o.b.bXz.bXz _.b.bXzXz _.bXzXzXzXzXz.^.bXz.bXzXzXz.b.o.VXz.bXz _Xz.bXz.U.oXz.bXzXz.b.b _.b.bXz.bXzXz.b.bXz.b.cXz _ _XzXz.bXz.b.b.b.b.b N.r eXkXgXjXjXtXt e N.^Xj.^Xk.b.b.o.o.o.o.oXg.c.c.U.c.U.U.U.U.UXkXg N N.b N N N NXx.k.kXtXt.rXtXt.r.r.rXt.r.r.r.r.r.rXt.r.rXt.rXt.rXj.r.r.X.b.b.b.b _.b _Xz _XzXz.o.cXg _ _Xg.c.c.c.c.V.c.VXg.V.U.c.c.V.c.VXz.^Xt FXt.eXM._ E.} a.e.~ R.~.e.~.e.eX*.` R.`.~.e.~.e.e a.~.e.e.e", +" ~ ~.r.r ~.r.r.r.rXt.rXtXt.kXj.X.K.^.k.^Xo N N NX9.XX9.X NX9.X.X.^ N.^.^.^.^Xz.o.b N.oXgXz.b NXz N.^.b.bXg./.o.^XzXz.bXzXzXg l lX* 3Xs.s ^ MX0XK V h 3 h 3XD.M.a RX-.uXDX-.eX1.a R.a #Xl K.,X-X1XV.~.u 3XM.lXBX2XA.v.BXfXr W y v.w.w.ZXI.*XD.w.w.!Xl.n :.~.u F.8.8.rX*.rX*.rX*.r 3Xt.rXjXt.r.r.rXtXtXtXt.rXtXtXt.o.^.b.^.r.^.kXt.^.kXt.r ~ ~.8Xt ~.k ~XtXj.r e.^.b.bXj.oXdXj eXzXzXx.o.bXz.^XzXzXz.^Xz.bXzXz.^Xz.b NXz N.bXz.z lXg.I.(.X.b eXt.r eXt ~Xj.rXg.^ ) 7.kXt.r ~.8 F.kXt ~ eXtXj.^.^ q.^ e.b.b. .b.b.^.^.^.bXzXjXz.bXd.^ e ~ e e.b.^.bXz.^Xd e e.RXz.bXzXz _.V.V.V.o.V _ _XzXzXzXzXzXz.VXzXzXzXzXzXz eXt.r.rXt.r ~ F.8.r.KXo.| 'Xc.> yX> =XDXKX-.~ 3.a RX- a.e.e a t.eXDX, 3 cX,.wXs CXL.v 0.s H.EXHX5 `.5XkX9 NXtX*X*.rXtXt.r e e eXt.rXj.b.bXg.c.o.o.bXg _Xz _.b.b.b.^Xj e F ~X*XtXt ~ ~.rXtXt.rXj.^.^Xz.b.bXz.c.o _Xz.b _.bXzXzXz.b _.bXz _Xz.bXz _ _XzXzXzXzXzXzXzXg.bXz _XzXzXzXz _.#Xz.bXz _Xz _.b _.bXzXz _.b.b _.b.b.c.o.bXz.bXz _XzXz _XzXzXz NXjXjXj N.I.z.k.r e.rXj e ~.^.^Xz.b.bXzXz.bXz.^ _XzXzXzXz.^Xz.^.^Xj e e eXtXjXjXtXj NXj.k.^.^ N N.^.K N N N N N N N N N.^.^.^.^.^.k.k.kXjXd.b.b.^.^Xz.bXzXzXzXz _.o.c.c.V _.o.cXg.c.c.c.c.c.cXg.c.#XgXg.V.c.VXz.^Xt.r.8.` #Xq U h a a.e.K.`.~.eX-X-.8.}X9.~.e.~.e.e 3X- a.e.e R", +" N N N NX9 N.XX9 N N N N N.^.k N.X.kXtXtXtX*.rXt.r.r.r.r.r ~.r ~.r.r.r.r.r.rXj.^ NXz.bXk.b.bXzXz.bXzXzXz N.o.b.b.bXz.b.bXzXg lXg.k.8 v 2.v &XX0.E 9XLXa x U.Z.w.0 gX1 D 3.`XV.`.8 ~X*.rXt.rXt.rXtXj.rXt e ~Xt e.rXt.r.rXt.rXt e.r N.^.b.^ e eXj eXt e.rXt ~ ~ ~.r.XXx eXt.r eXj.^Xz N.^XkXk.^.^Xx.I AXzXz.^.b.bXz.^.bXg.I.I.XXz.b.^Xz.b.bXz.^Xg N.bXdX@X ~ e.rXt ~Xt.rXt.r ~Xj ~.z 7.r N./.&Xk ~Xt.rX* e N NXk.7.t.7.t.&.c.^.^.b.bXz.b.^.^.zX .t.^.r eXjXj.o.^XzXj _ e A.tX&XjXzXzXz _.o.cXg.V.c.VXzXzXzXzXzXzXz.cXz.bXzXz.^ N e.r e.r.r e.r ~ F.8X*.r.uXD RXe.E v.W.M.H.`.~ a R 3 BX-X- BX- B R.aX1 1 hX,XDXDXs.sXL o b &XJ ` k q 5 f.$.AX*X*.r.rXtXt.rXt.r.r e eXj.b.b.c.c.VXgXg.c.oXz.b _Xz _.^Xj.r ~.r.r.r ~ ~.8 ~Xt e.r.r.k.^.^ NXz.^.UXz.bXz.b _.bXzXz.b _XzXz _XzXz _Xz.bXzXzXzXzXzXzXzXz lXz _XzXz.bXz _.^.oXzXz _Xz.bXzXzXzXz.b.b.bXzXz _Xz.b.c.b _Xz _ _XzXz.b.bXz.^.bXj e.r e.r.r ~ e.r eXt.rXtXt.^Xj.^.^XzXz.b.bXzXzXz.b.bXz.b.b.b NXzXj e e ~ ~ ~ ~ ~Xt.k ~ ~.r.r ~Xt.r.r.r.r ~.r.r.rXtXtXjXtXjXj.k.k.K.^.^ N.XXg lXk.U.U.U.c.c.cXg.V.U.U.UXg.o.V.c.VXg.cXg.oXg.V.c l.#Xg.V.c.V.c.b.b.^ ~.8.a 3Xp EX, aXI cXIX-.~.e.e 3Xl.K.~.~X-.~ a.e 3X-.~.~.e.~", +".rXt ~Xj ~XtXtXtX*Xt.r.rXt.r.r.r N.r.r.r FXt.r.r.rXt.r.rXt.rXt.rXt.rXt.r.rXt.r e.^ NXzXg.o.b.bXzXz.^Xz.bXz.bXz NXz.bXzXzXz.bXg l NXV s.s b z nX+.- h 3 k T., ' )XcXlXcX5 1 : x Y.a.a.e BX-.~ a.eXI 3 3 a #XM .[ . 0Xb % %.s.sXi 0 &X>Xp v.n.n Y ( m 5 D )., m 5 I fXtX*XtXt.rXtXt eXtXtXt.r.r e.r e e.r.rXj.^Xz l.b.b.bXz.^.bXz.b.^ e.r e.r.r qX$Xd.kXjXj.b.b.^XjXt ~.R ~.R.&XtXzXoXzXzXzXzXzXz N.X.b.: _.bXzXz.b.^.b.^.b.^Xg.^.rXxXx.:.k.k.rXt.rXg qXz ~ e.r.rXx.k , 5X9.^Xt.r eXt.^ NXzXz.bXz.fX .XXzXo.b.^Xz.^Xz NXd.bXt.:.kXjXjXjXz.^.bXz.^.b.b.:.bXz.b.^XzXzXj _.o.V.V.oXgXg.oXzXzXzXzXzXz.cXzXzXzXzXzXzXzXt.r e.r ~Xt e.8.8.8.8.`.`.*.N b.W.WXDXD.~.`X-X-X- R.e $XD.D.DX1X,X1 $X,.M.MXs.N.WXe.9 sXI.D.5 ~.rX*X*.rXt.r.rXt.rXdXt.r ~ ~ F.r.r.^Xz.o.c.c.c.c.c.# _Xz _Xz.b.b NXj e.8 F.8 ~.8.8 FXtXtXtXtXt.rXjXt.r e.^Xz e e.bXz _Xz _XzXzXz.bXz _Xz _XzXz _.bXzXzXz _.^ _.b.cXz _ _.b i.UXzXz _Xz.bXzXzXzXz.bXz _.bXz.b _Xz.bXz.o.c.^ _.bXzXz.bXzXz.bXz e eXt.r.r.r e e.r.r.r.r.r e.r.k.^.r.^.b.b.^Xz.bXz.^.^.^Xz N.bXzXzXz.rXt.r ~ ~ F ~Xt.r NXtXj.^XjXj.r.r ~ ~.8 F F F.8.8.r.r.r.r.r.r e.rXt.rXtXt NXt.^Xz N.bXz.bXzXz _.V.oXg.oXz.VXg.c.V.V.V.V.V.V.U.V. .c.U.#.U.U.#.cXkXk.XX*.K.-Xq.iXD.a.8X-X9.e.~.~.e.e.e 3.}.e.~ a.e a.e.a #.eX-.~", +".rXj.r.r ~Xt.r ~ F ~XtXt.r.r.r.rXt.^ ~.rX*.rXjXt.rXt.rXt e.rXt.rXt.r.rXt.r.rXt.rXj.^ N.oXgXzXzXzXz.bXzXz NXz NXz.^XzXz.bXz.b.b lXx.HXl v v.;X<.-.,.Z.}X,XDX,XI.Z c aX- a XL ' g.].`XV 3 3 $X*X*.k.K ~.rXtXtXtXt eXtXj.^XjXjXtXtXjXjXjXjXj.^Xz.bXg.o.bXz.bXz _Xz.b.^Xj e.r.rXd q.7.XXd N.bXzXz.b e.rXt.K.r f q.r.b.bXz.bXzXzXz N.^.o.X.:.^Xo.I.bXzXz.^Xz.b N.bXd.r.|X9.:X9Xt.rXt ~Xk.8.z.r.r e ~X9.5.k.:.A ~.rXtXt.^.oXz.^ N.b.^ Z A.k.bXz.b e e e.^.^.^.k.k.:.^.^.b.^.^.^.b.b.^Xz.b.:.^XzXzXzXzXzXzXz.b.VXg.VXg.V.o _ _ _.b.b.b.UXz.bXzXzXzXz.^Xj e.r e e.r.r.r.8.8.8.8.` R.nXe.)XLXD 3.eX-X-.e RX- RX,X1 8XD.D.MX,.M.Z R.NXeXL.w y.'X1 3.8Xo.u.k.r ~.uXtXdXd F.r.r.r.r ~ F.`.8 eXzXz.o.c.o.c.c.c.I.b _ _Xz.bXzXzXjXt ~.8.8.8.8 ~.8.r.r.rXt.rXt.rXjXjXt.k.^Xj.^.bXz.bXz.bXz _XzXzXzXzXz.bXzXz.b _XzXz _XzXz.b.o.VXzXzXzXz.#.oXz _Xz.bXzXz.bXzXz _.b.bXz _ _.b.b.b.bXgXgXz.b.b _XzXz.bXzXzXj e.r e.r e.r.r.r.rXt e.r.r.rXj.k.^XtXj.^.b.bXz.^Xj eXjXz.bXz.b.b.bXj eXt ~.8 F F.r.r.^.^.^.b NXzXz.^.^XjXt.r ~.8.8 ~.8 ~.rXt.r e.r eXt eXt.r.^XjXt.r.^.^.b.bXz _.V.cXg.c.V _.o.V.V.c.V.c.c.V.V.c.V.U.U.V.c.o.c.c.o.^Xz NXt.8.} 1 E.i.}X-X- cXV.`.8X1 3 3 3 hXI.} RX1 3 c aX-X,.~X-.e", +".r.r ~XtXt.rXtXt.kXt.r ~.rXjXt.r.r.X.r.r.rX9.r.rXt.r.rXt.r.r.rXt.r.r.r.r.r.r.r e.r.^.bXzXk.^Xz.^.bXzXz.bXzXzXzXz.b.b.^.bXzXzXzXgXg.uX,.'.s.@.1X7 [ hX,.iX5X,XD :.2Xl.Y :Xc : ` mXJ :Xc c.eX-X-.e.~ c.e h #.l.l.[X4XF p t < t U U 0 %...@XrXG TXO.k B.`X-.`.8X* ~Xt.rX*Xj.rXt.r e.r.^.^.b N NXz.^.^.^ N.^XzXz N.b.bXgXz.b.bXz.bXz.bXz.^XdXj.r.r.z P.f.b.b.bXz.bXz.k.k F.^.k 7.^.k.b.^.bXz.bXzXzXzXz N./ Z.b.Q AXz.^XzXz.b.^ NXz.X fXt.r f f.rX* ~XtXt.rXzXtXt e.k P.K.rX9.tXt ~ e.^.^.b NXz.^.bXg.:X@.b N.^Xj e eXj e e.b.^Xk.: NXd.^XzXz.^XzXz.^XzXd d.Q.6.^XzXzXzXzXz.b.VXgXg.VXgXgXg.o.o.V.V.V.UXz _XzXzXz NXzXj e.r.r.rXt.r ~.r.` ~.`.`XlXG.W.NXeXD x.a.a R a a.a aX,.} R.M R.M t 8 v.N.W.s v M.> :X5.5 )./.k )XtX9 q.k.$ (XxXk N.r F.8 F ~.rXj.b _.V.cXg.c.c.U.#.o _.bXz.bXzXzXt.r F ~.8 ~.8.8 F.rXt.rXt.r e.rXt.r e.^Xz.^.b.b.b.bXz.bXzXzXzXzXzXzXz _Xz.b.b _Xz _Xz.oXzXz.V.o.bXz _Xz _XzXzXzXzXz.bXz.bXz.b _.b _.b.b.b _ _.bXz.c.oXzXz.b.bXz.bXzXzXz e.r e.r.rXt.r.rXtXtXt.rXtXt.rXj.^XjXt e.^.b.^Xj e eXj.^Xz.bXzXz.^Xj.r.rXt F F ~ ~ e.r NXt N.b.^.b.^XzXzXzXz.^ e.r F.8 F ~.rXtXt.r.r.r.r ~Xt.r.^.rXj.r.bXzXzXz _ _.V.cXg.c.o _.V.V.c.c.c.V.c.c.c.c.o.#.V.U.c.V.cXgXz.VXz.^X*.8XM U U a.e.e R.e.e.e.e.e.eX- aX-.eX1.~.`.HXI.`XIXIX-X5", +" e.r.r.r.r.r.r.r ~.r.r.r.r.r.r.r ~ NXt.r.r N.KXt.r.rXt.r.rXt e.r.rXtXt.rXtXt.rXt.r.^.b.^Xg.bXz.bXzXz.bXzXz.bXz.bXz.bXz.bXz _.b.oXk.K c y yXn.TX#Xw k., :XcXJ :Xl 1Xc #.Z.MXDX, 1 $XD R.eX-.e.~X-.~.k.e 3 a.l.lX7Xn p p u.a hXl $.)...s . yX0.n.2XdXV.`.~.8.`X*.8X*.rXtXt.r.k.rXtXt.^ N.b N.b NXz.b.b.b.bXz.b.bXz.b.c.^ _XzXzXzXzXz.b N.^Xt e.X.X.t 7Xk.^.bXzXzXzXj.r.kXt 5.7./Xd N.bXzXzXzXzXz N.^.c.t.t AX .o.o.^.bXz.bXz.^ NXxXx.5 NXxXx.X F.k.r.r eXt ~.r.r.bXxXk.rXt.k FXj.kXzXz NXz.b.^.b l.I l.bXz.^ e ~ e ~ e.r.rXt.XX9Xj e eXjXz.^XzXzXzXzXz e.o.^Xz.^XzXzXzXz.o.VXgXg.o.c.c.c.c.cXgXgXg.UXzXzXzXz.bXzXz.^ eXt eXt e e.rXt F F ~XIXD s.sXs.).M x.a R u.M.W U U.M.WXe.N U.WXs 2Xe.sXL vXp $XK DX..A ].RXtX@ q.| qX@ ]X@.t.RXxXt ~.8 F F FXj.b.bXg.c.V.c.c.U.UXg.o.bXz.b.bXz e.r F.8.8.8 F.8 F.r.r.rXtXtXtXj.r eXt.o.b.b.^.b _.b.b _Xz.bXz _Xz.bXz.bXz _ _XzXzXzXzXzXzXz.cXz _ _ _XzXzXz.bXz.bXzXz.b.b _Xz.b.b.b _.bXz.b.b.b.b l.b _XzXz.b _XzXzXz.^ e e e.rXt.rXt e.r.r.rXt.k e.r.r N.rXjXjXj.^ e e.rXjXjXj e eXz.^.^ e e.r ~ F F ~.rXtXt NXj.b NXzXzXz _XzXzXzXz.^Xj.r F F ~ ~.rXt.rXt.rXt.rXt e N.rXj.rXj.^Xz.b.V.c.c.c.V.c _ _.c.V.c.V.c.c.c.cXg.V.c.#.o.V.VXg.V.c.c.^Xz NX*.8 ` h U.d a a a.e.~.e.~X- aX-.} a.e.e.eX-.e c.`X1XI $XlXl", +" ~Xt e.r.rXtXt FX*.r.rXtXt.r.r.r.r.k.KXgX9.t.kXtXtXt.rXt.r.r.rXt.r.r eXt.r.r e.r.r.^.^.^.o.o NXzXzXzXzXz.bXz.bXzXz.b.^.bXz.b.^.^.V (Xc.O.+.; =.T.S [Xc.} $XD R 3 aXD.e.a a a a.aX- a.aX-XI.e.e.~.e.KX-.} 3 #.l >X%.@.pXp.1 mX3Xc xX4.@X>X0 TX$ ! ].8.` R.`.8X*.8Xt.r.rXtXtXj eXj e.^XzXzXz.b.b.bXzXz NXz NXz.bXzXz.U.^XzXz _XzXz _XzXzXz.b.rX@ NXkXg.b.b.^Xz.oXz.^.r.rXj N.rXt eXzXzXzXz _XzXz.b.oXj.^.bXdXzXz.^Xz.bXz N.b.kXj.^.r ~Xt ~Xt ~Xt ~.rXj ~Xt ~ e.r.r ~Xt.r.rXt eXtXj.^Xz.o.^.b.^XzXzXj.b.^.^Xz.^Xj e e.rXj.r.r e ~ eXt e e.^.^Xz.^.bXzXj _XdXzXzXzXzXzXz _.VXgXg.VXg.VXg.VXg.V.V.o.o.#XzXzXzXzXzXzXz.b.o.X N.^Xt.rXoXd.H.r.`.8 RXLXe /Xs.).w C.M.W.= 2 v 2Xa.sXe v v.=.W.W.s x.s v.MXIXIX*X*.k.k N.rXd.k.r.kXV.rXd.rXt.r ~ F F.8.r eXj.b.o.V.c.VXg.c.#.c.c.o _Xz.b.b.^ e.r F.8 F.8.8 F.8XtXt.rXt.r e.r eXj.^Xg.b.bXz.b _.b _.b.b.bXz _XzXz _ _Xz.bXzXz _XzXzXz.V.^.UXzXzXzXz _XzXz _ _XzXz.bXz _.b.b.b _.bXz _.b.b.b.b _.cXz.oXz.b _XzXz.bXzXzXjXj.^Xt eXtXtXt.rXt.rXt.^ NX*.^ NXt.r.r eXt e.r.r e e.r.r.rXj.^Xt.r eXt ~ F ~.r.r.r.^.^.^ NXz _Xz _XzXzXz _Xz _XzXj.r F.8 F ~ ~.r.r.rXjXt.r.^XjXt e eXj.^ _Xg.VXg.c.c.V.c _.oXg.V.c.c.c.V.c.V.c.V.U.UXg.cXg.c.c.oXgXz.^.b.r.8 1Xe E U.e.aXI.eX-X-.~ 3.eX- a.e a.e.uX, 3 xXKXK ` 1.i.a", +"Xt.r.r ~.r.k./ ,.X.k ~.rXt.r e.rX*.r P q.k.A.^Xt.r.rXt.r.rXt e.rXtXt.r.r e.r.r.r.r.^.^.^.bXkXzXz.bXz.bXz NXz.b.bXz.b.b.bXz.^.^Xd.X.k.kXs y.@X+XH.T., kXBX,.aX-XD.aXD R.e.a t.e.M R.e mXJXl :XDX- ~.`X*.`.}.i.l.[Xr M M nXH c `X3.9.Y.Y & =XU.G D (.eX1.` a.8X*.8.rXjXt.rXj.r e e e.^XzXz.bXz.bXz NXzXzXzXz.bXz.bXz.UXz.bXzXzXz.bXz.b.bXzXzX@Xg.b.b.b.b.b.oXzXz.b eXjXtXt.b.r eXtXzXzXzXzXzXzXz.bXz.o.^XzXzXz.bXzXz N.^.^.^ eXt.^XtXt ~XtXt.rXtXt e.rXt.r e.r.r ~Xt.r.rXt.r.r.^.b.^Xz.oXzXzXz.^Xz _Xz.^.b.^.^.b.r.rXt F FXtXtXtXt e e eXz.^XzXzXzXzXzXzXzXzXzXjXzXz _.oXgXg.V.oXgXgXg.V.oXg.oXg.o.UXzXzXzXzXzXzXz.b.&Xg lX9.QXd.z.R.XXd.kX*.Z s M v 2.W v.W.sXs.) 2.= 2.s vXG.s._ b.9 o.j y 1.aXI.}.u.u.u ~.^.k.r.rXt.rXd.k.rXtXt.r e ~ F F F ~.r.^.oXg.V.cXg.V.c.#.c.c.oXz.b.b.b.^ e e F.8 F ~.8.8 ~.rXt.r e.r eXj.^.b.b l.b.b.bXzXzXz.bXz _XzXz.b _ _Xz.bXz _ _XzXzXzXz.#.I.c.cXz _Xz _Xz _XzXzXz.bXz _.b.b.b _Xz.bXz.bXz.b _Xz.bXg.cXz.bXz _ _ _XzXz.bXz.^.b.bXjXt.r.r.rXtXtXt q.z.zXt.^XtXjXt.r e.r eXt e.r.r.r e.r.rXt e e ~Xt ~ ~.r e.rXtXz.^.bXz.^XzXz _XzXz _XzXzXz.bXz.^ e.r.r ~ F F F ~ ~ e.r NXt e.r eXz.b.o.cXg.cXg.VXg.c _Xg.V.c.V.c.c.V.cXg.V.c.#.o.o.c.o _.c.c _.b.^ NXVX- `.i E < aX-X-.e.e.e.eX-.eXI.eX-.eXlXl ) 1XK U 1.e.e.e a", +" e ~.rXt.r.8Xk P ~.rXt.r.r.r.rXt ~.$ ,.8X*.KXt.r.rXt.rXt e.r.r.r e.rXt.r.r.r e.r.rXjXtXj.kXg NXz.^XzXzXz.bXzXzXz N.^.b.b.X.^.X.z A.RX3Xc.+.;.EXr.O.[.SXH.M.MXIX- 3 a R : R.e tX- TX- 1 1 mXH.~X1.e.e.uX. 3 # XB.p.@XpXe C hXDX, <.}.N.s.YXw m.H.`.`X1.a.`.}X*.rX*.rXt.rXt.rXj.^Xj.^Xz.b.b.b.b.b.b.b.b.bXz.bXz.bXz.c.b _Xz _Xz _ _.oXzXg A.o.^Xz.b.b.b.^.bXzXz _Xj e e.r.X.rXj.bXzXzXzXz _XzXz.b.^Xz.bXzXz.bXzXzXz.b.b.^Xt.r.r.X ~Xt.r.r ~ e FXt.rXt ~Xt.r.rXt e.r.r.r.r.r.rXz.^.b.^.bXzXzXz.^.bXzXzXz.b N.^.^.r.r ~.r e.rXj.b.^Xt eXjXzXz.b.bXzXjXzXjXzXzXj _.^ _.oXg.VXg.o.VXg.VXgXg.VXg.VXg.V.#XzXzXzXzXzXzXz.^.t.6.(.( Z.XXg.X ].R.A.$X3XJXhXC 2 2.s.W.W.).W.n 9.9Xm.9 s 1.9.j $ = T.2XD.K.5.r }Xk.z.^.5.^.zXdXd.X.X.rXt.rXt.r.r.r.rXt e.rXjXz.oXg.c.c.c.V.c.IXg.U _.bXz.bXzXj.rXt ~ F.8.8.8 F ~Xt e.r eXt.kXzXzXz.o.c.b _.b.b.bXzXzXz.b.b _XzXzXz _Xz _Xz _.bXzXzXz. . .#.o _XzXzXzXz _Xz _Xz _Xz.bXz _Xz.bXz _Xz _Xz.bXz.bXz l.bXzXz _.bXz.bXz _XzXzXz.bXzXt e.r.r.r eXt e.r.r.^.r NXtXt.r eXt.r.r.r eXt e.r.r e.r.rXtXt eXt ~.r.rXt.rXj.X N.o.b.^XzXzXzXz _XzXzXzXzXz.b.^.^.^XjXj.r.r ~.r e eXtXz.r e.r eXz _.oXg.c.c.c.cXg _ _.V.V.c.V.c.c.V.c.V.o.c.U.V.c.o.c.cXg Z i.oXgXxXx.aXM._ E U a.e a.e.~.~.~.eX- 3.e.e.eX1.`X-X-.e.e a.e < a.e", +".r.rXt.r.rXt q.t ~.r.r.r.rXtXt.r.8.& }.^ ~.rXt.u.r.r.r.r.r.r e.rXt e.r e.r.r.r.rXt.r.r.rXtXg N N.^.^.^.^Xz.^ N N.b.^.X.^Xo e.X.RX@./ : TX> vX> n.1X.XZXHXe.M t.e.ZX,X, $ a 3.e.a T.}.e.e.eX-.~.e B BX- : # # XcXp.sX= u.M a t a t u.)Xe v y #X-.`.`X-.8.}.`.r.k e.r.r.kXj N.^.b.bXz.b.b _Xz.b.bXzXzXzXz.bXz.b.b.^.V.oXzXz _XzXzXz.U.Q.#XzXz _Xz _XzXz _XzXz _Xz.b.^.bXjXgXo.oXzXzXzXz _XzXzXzXz.bXz.^.bXzXz.^.b.bXz NXz.r.k.r N.r.r e.r.r.r.r.r.r ~ e ~ eXt.r.r.rXj ~ e eXjXz.^.^.^.oXz.^Xz.bXzXzXzXz.^Xz.b.rXt e ~ F eXt N.^.bXzXz.^Xz.^.bXz.^XzXzXzXzXzXzXz.b.o.V.V.oXg.VXg.o.c.VXg.o.o.o.VXg.#XzXzXzXzXzXz.b.bXz.bXz.R.bXzXoXdXd.r ~.8.a #XU.9.= vXL.WXL._XG xXD.~ RX-X- BX,XD.~.~X9X9 5 (.&.k.tXxX@X@.& X.t.& fX X@.zXt e.r.r e.rXt.r ~Xj NXz.V.c.V.c.cXg.U. .V.c.oXz.bXz.^Xj e e.r ~ F F.8 F.8XtXt.rXtXjXzXz.b.b.bXgXzXz.b _.bXz.bXzXzXz _XzXzXzXz _XzXzXzXz.oXzXz _.c.cXg _Xz _Xz _XzXz _.bXz.bXz.bXz.bXz.bXz.bXz.bXz _.bXz.UXz.b _.b _ _.bXz.bXzXz.b.bXj.r.rXt.rXt.r.rXtXt.rXtXj N.rXtXj.r.rXt e.r.r.r.rXt.r.r.r e.r.r.r.r.rXt.r e.r.^XgXzXz.^ _.^ _Xz _Xz _ _XzXzXz.bXz.b.b.bXz.^.^.^Xz.^.^ NXz e e e e.^.bXg.cXg.V.c.c.VXz _ _.c.c.V.c.c.c.V.c.o.#XgXg.c.o.o _.c X.U.7 A.f | :XB.- U U a.~.e.e.~.e.e.eXI.~ a.~.` 3.eX-.~.~ a a.e a.e a", +" e ~Xj ~Xt ~.&.$.r.r.r.r.r.r.rXt.rX9.:.5.KXk.r.rXt.r.r.r.r.r.r.r e.r.r.r.r.rXt.r.rXtXt.r.rXt.oXt.r e.r.k eXd e.^.z.U.^XoXtXtXt.k.R NXI.}XG 0X>.h.TXw.- X, x.Z :Xc 5Xc.e R RXl.-XcX5.e.e a.eX-.e B.e B.e hX3.[X7Xm.s.W p.N.W < t u u -Xv.s.9.aX-X-.`.`.H F.rXd.^XtXtXt eXj.b N.bXz.b.b _XzXz _ _Xz.bXz.b _.bXz _Xz.o.o.bXzXzXz _XzXzXzXzXz _XzXzXz _XzXzXzXz.bXz.b.bXz.^ l.b NXzXzXzXzXj.VXg.o.o.oXzXz _XzXzXzXz.^Xz.^ eXtXt.r N.r.r e.r.r e.r.r e.r.r.r.r.r.r.r.r.r e.r.rXjXz.^Xz.^Xg.^Xz.bXzXzXzXzXzXz.^.^Xt.r ~ ~.rXt.^XzXzXz NXz.^Xz.^ _XzXz.^XzXzXzXzXzXz.VXg.o.o.VXgXg.VXg.o.V.c.VXg.cXg.o.U.oXzXzXzXz.bXzXz.b.bXzXz.b.b.^Xd.rXt.r.r.8.aX- $.nXLXG s x $.a.`X-.`X-.`X-X-.`.`.`.8.r FXz eXo.^Xx.z.z.z.6.I.I l.z.zXg.bXtXt.r.rXt.r.rXtXt.^Xz.oXg.c.c.V.cXg.c.#.c.cXz _.b.b.b e.rXt ~ F.8 F.8 F ~Xt.r.rXt.^.^Xz.bXz.o.o _.^ _Xz.b _Xz.b.bXz.b.b.^ _XzXz _.b _.I _XzXzXzXz.#.c _XzXzXzXz _XzXz _Xz.bXz _.bXzXzXz.o.bXz.bXz.b.b _XgXz.bXzXzXz _Xz _Xz.bXzXz e e e.r e.r.rXt.rXtXtXj.rXtXjXt e.r.r.rXt.rXtXt.r.r.r.rXt.r.rXt.rXt.r.rXt.rXj ~Xg N.b.b.bXzXz _Xz.bXzXz _XzXzXz.bXz.bXzXz.bXz.bXzXz N.^.z.^.bXz.^.^Xz _.cXg.V.c.c.c.c _.oXz.V.c.c.cXg.c.c.c.V.U.b.bXg.o.^ _.b.o.b.U.k )X9 1XH [ E U a.e.~X-.e a.eX-.8.e.~.e.~X*.~.~.~.e.~.e.e a a <", +" ~Xt ~.rXt.k f.f.r.r.r.r.r.r.r.r.r.r.X 5Xx ~.rXtXt.rXt.r.rXt.r.r.r e.rXt.rXt.r.r.r.k.8.rXt.rX9 F.r.r.r eXt eXjXx.:X9.R q.&.z Q.R.t.& 5Xw = z 0.jXw.1.[.-.YXJXc ` $ $ cX-X5 kXl c.a a.e.eX-.~.e.~.e.e a a.8.i c k.YXG...s.s.).) p pXF -.s..Xq a.8.8.`.8.8.r.r.r.o.r.rXjXj N.o.b.^.b.b _Xz _XzXz.bXz.b.b _Xz.b.bXzXz.o.cXzXz _XzXzXz _XzXz _XzXzXzXz _Xz _.bXzXzXzXz.b.b.^Xk.b.bXzXzXz _Xz. l. .#.UXz.^XzXzXzXzXzXjXj e eXt.r.r N.r e.r.r.r ~ e ~ ~.r ~.r.r.r.r.r.r e.r.r e.kXzXz.^Xz.o.^Xz.^.^.^XzXzXz.^Xj e e ~ ~ ~Xt.^.^Xz.^XzXz.^XzXz.^.bXzXzXzXzXzXzXz.b.o.o.o.o.oXg.c.VXg.c.V.VXg.o.o.c.o.c.#.V.bXzXzXzXzXzXzXzXzXz.b.bXz.bXd e.rX* 3.8.8X1X- $.' x R.eX-.8X-.`X-.`X-.`.`.`.` F F.r ~.^XdXzXj.bXzXz.^Xx.^.^XjXz.^.^Xj e.rXj.rXtXtXj.rXj.^.b.V.V.c.c.V.c.c.U.UXgXgXz _.bXz.b e.r e ~ F F.8.8 ~.rXtXt.r eXj e.^.^.b.c _.b _Xz.b _.b.b _.bXz.b.bXz _XzXz _.b.bXu.#.b _XzXg.#.oXz _XzXz _XzXzXz _Xz.bXz.bXz _Xz.b.bXz _.bXz _Xz.o.V.b.bXz _Xz.bXzXzXzXzXz.^ e e.r.rXtXt e.rXt e.r.rXt.^.^.r.r eXt.rXt.rXt.rXtXtXtXt.r.rXt.rXt.r.r.r e.rXt eXg.bXz _Xz.bXzXzXz _XzXzXz.bXz _XzXzXzXz.bXz _XzXzXz.b.bXg.bXzXz.b _.b.o.cXg.c.c.c.c.o _.V _.VXg.V.V.c.V _Xz.V.bXz.b.bXzXz.b.bXz.b N ~X-XI $ 1X7.i t aX1.e.e.e a.eXIX-.~.~ a.uX- a.e a.e a a.a.} EX,", +".r.r e.r ~.k.X N.rXtXt.r.r.r.r.r.r.rX*.k.rXt.u.r.r.r.r.r.r.rXtXt ~Xt.k ~Xt.rXt.rX*.r.r ~ ~.r.XXtXt.r.r.r.k.kXd.bX P.7X .A.A.R.&.( Q D.3Xr M.s oXpXZXh.SXw x 3 R.eXc 3 T ` T R.e.e aX- a.eX-.e a R <.e.e.}X* #X3.iXeXpXpX4..Xe.m.W.).s %.YXeXDX-X-.`.8XVXtXt.r.bXdXj.^ N.b N.b.b.b.bXz.bXz _.bXz _XzXzXz.b.bXzXz _.b.cXzXz.bXzXz _Xz _XzXz _XzXz _XzXz _XzXzXz _Xz _XzXzXg.o.bXzXz _Xz _.o.V.b _XgXzXzXzXzXzXz.^ e e.r.r.r.r.r N.r.r e.r.r e.r.r e.r.r.r e ~ e.r.r.r e.r e.^Xz.^.bXzXg.^XzXz N.bXzXz.^.^ e.r ~ F ~.rXj.^.b.^XzXzXzXz.^Xz.^ _.bXzXzXzXzXzXz.V.o.o.o.VXgXg.VXg.VXgXgXg.c.V.o.VXg.c.#.o.b _XzXz _XzXz _XzXzXzXzXz.b.^ e.r.r.r ~.8.`.~.` 3X1X-XI.~.~.`.`X-.`.`.`.` F.8 ~XtXj N.^.b.^.b.bXz N.b.U.b.b.b.bXz.^.^.r.r.r.r eXt.r eXj.^.o.c.c.V.c.c.cXg.U.U.c.o _.b.b.b.bXj eXt.r ~.r ~.r.r.r.rXt e e.r e e eXz l.^.b.b.^XzXz _XzXzXzXz _Xz _ _.b.b _ _Xz.# _XzXz _.U.U _Xz _XzXzXz _XzXz.b _Xz.b _.b.bXz.b _Xz.b _Xz.bXz.c.b _Xz.b _Xz _ _Xz _.b.^ e e.r.r.r eXt.r e.r eXtXj.r N ~Xt.rXtXtXtXt.rXt.rXtXtXt.rXt.rXt.r.r.r.rXt e.r e NXgXz.bXz.bXz _Xz _XzXz.b.bXzXz.bXzXz _XzXz _XzXzXzXzXzXg.b.bXzXzXz _ _.V.c.c.V.c.c.V.o _.V _.V.c.c.oXgXzXz.^.b e.^Xz.b.^.oXz.^.^.^ ~.8.a a.-., [Xp.i $Xl.u 3XIX, $XI.e 3.~.~X-X- a a.e < < E h U.i U", +".r.r.rXt.r ~.r ~.r.r.r.r.rXt.r.r.rXt ~.r N.r.r.r.r.r.rXtX*.rXt.r.k ~ ~.rX* ~.r.r.r.r.r ~ ~.r.^.K ~.k.^.XXxXk l./X@.oXkXxXg.k NXx.U.kXx.9._ 2.)Xr =Xh.S.,Xc.i xXl 3Xl DXD.a.e t.a R a.e.e.e.eX-.e.e 3XX.eXI.u hX3 m E < ", +".r.r ~.rXt.r.rXt.r.r.r.rXt.r e.r.r.r.k ~.X.rXtXt.u.k.r.k.r.^Xo.X.r N.5Xx.r )X9X9 ) q.5 q ) ).&.A (.&.R Q.I.t qX@.^.b.b.bXt.^ N.X.bXtXI.MXG.).s.s o.+.[XB k m :Xc c.~.e 3X- BX-.e.e R R.eX-.e.e.~ B.aXK.u 3XIXMXcXhX# ` h a <.gXhX5 YXh.9.,.0.$ IXx I.$ D 5.%X@ P.(.6.X.b NXz.o.b.b.b.b.bXz.bXz.b.b _XzXz _.b.b _.bXz lXz.b.b.bXzXz.bXz _XzXzXz _Xz _Xz _XzXz.b.bXzXz _.b.oXg.bXzXzXz _ e.oXz.b.b.bXzXzXzXzXzXzXz.^XjXj e.r.r.r N.r e.r.r.r.r.r.r.r.r.r.r.r e.r.r e.r.r eXj.^ NXz.^.kXz eXt e e.rXj.^Xz N.^XjXj.r eXj.^XzXzXzXzXzXzXz.^XzXzXzXzXzXzXz _.oXg.V.V.V.o.o.VXg.o.VXgXg.V _.oXgXgXg.V.c.U.o.o.bXzXzXzXzXzXzXzXzXzXzXzXzXz.^ eXt.r.r.H F F.`.rX-.`.`.~.`.`.`.8.8.8 ~.r.r.^Xj.b.^Xz.bXz.bXzXzXz.b.o.X.^Xz.^XzXzXz.bXj eXt.r eXtXtXj.^.oXg.c.V.V.U.V.cXg.I.c.c _ _Xz.b.b.b.^ eXt eXtXt.r eXt.r.r eXt eXj.^.^Xz.o lXz.b.^Xz.b.b.b _ _.bXzXz.bXzXz.V.#Xz _ _ _Xz.o _.o.UXgXzXzXz _XzXzXzXzXzXz _XzXz.b _Xz.b _Xz _.b.b.b _ _ lXz _Xz _ _XzXzXz _XzXzXz.^.^.^.^XjXt.r eXtXt e.rXt.k.^ ~.r.rXtXjXt.r.r eXt e.r e.r e.r eXt.r.r e.rXj.^.^.c.o.^ _XzXzXzXz _XzXz.b.bXzXzXz.b _XzXzXz _ _XzXz _Xz.o.o.bXz.bXzXzXz.V.o.c.V.c.V.c.V.V.c.c _ _.V.c.oXzXzXj.b e e.r e eXj e e.rXt.8.8.a a 1 $ E h.e a t a a.e.} 1 h.M hXDXD.a t <.} h E EXe xXpXB $ <", +" e.rXt ~.rXt ~Xt.r.r.r.r.r.r.r.rXt.r ~.r.k.k q qXkXx.f q.A ).& qX9./ 5.$X* q.$ q I.$.KXx ) q ) qXkXk q l.z.z.U l.b.o.b.^.b N.o N.oXt.HXDXn..X=.WXG MXH .- xXlXDXI R.~XI.eX-X- RX- m.eX-.e.e a.e.e.~.eX-.u R c # |XMXB V 3X-.u.K.H ` ) `X3 : 'XoXxXx.XXXX9.$X9.zX@XkXz.b.b.o.bXz.b.b.b.b.bXz.b.b.b.b.b.b.bXz.b.b.b.^.c.bXz.bXzXzXz.b _XzXz _XzXz _Xz _.bXzXzXzXz _Xz.b.b.bXg.bXzXzXzXzXz.^Xz.^.^.bXz.^XzXz.b.b.^Xz.^XdXt.r.r.r NXtXt.r.r e.r e.r.r.r.r.r.r.r.r.r.r.r.r.rXtXj.^XjXt e.^.r e.r.r.r eXj.^Xz NXz.k e e e.^Xz.bXzXzXzXzXz.^XzXd.bXzXzXz _.o.o.o.V.o.o.o.oXgXg.VXg.o.V _Xz _ _.V.cXg.c.U.V.o.VXz _XzXzXzXz _XzXzXzXzXzXzXz.^.r.r.r.r F.`.` 3.`.`.~.`.`.`.` F F ~ ~ e.^Xz.^.bXzXz.bXzXzXzXz.^XzXg.o N.b _Xz _Xz.bXj.r e.rXt.rXjXj.b.V.V.V.V.c.c.c.c.c.#.V.VXz _XzXzXz N N e.r.r.rXj.rXt.r.rXt.r.r e.^.bXz.bXg.oXz.^ eXjXzXzXzXzXz _Xz.c.V.bXzXz.o _XzXzXzXzXz.o.o.# _ _XzXzXzXzXzXzXz _XzXzXz _Xz.bXzXz _XzXzXz _.bXzXg.VXzXzXzXz _Xz _XzXz.bXzXz.bXz.^XzXj.r.rXt e.rXtXtXj.z.zXkXjXjXt e.r e.r e.r.rXt.r.r.r.r.rXt eXt e.^Xz.bXzXgXz _ _XzXzXz.bXz.bXzXzXz _XzXz _Xz _Xz.b _Xz.bXzXzXz.U.bXz.^.VXzXz _.V.c.V.c.c.cXg.c.c.c.V.V.o.V.o.bXz.bXj.^.rXt.r.r.r e ~ e.r.r.` 3 aX, h h h h <.e.a a < < <.} t a < t a.e.a E E.l.Y.[X% `.-X- R", +" ~.k.r.rXt ~X* ~Xt.r.r.r.rXt.r.rXt.8.k.rXt q.$./ ) )XxXxX9.XXXX9Xx.5.k.K.^.KX*X*.uXtXt.r.r.r.8.^Xt.^Xd.XXjXz.^.bXz.bXzXz.b.bXz.bXz.r.` U v.N...sX>.+XwX3.l.} R RX,.e RXI.a.e a a.a Y.,XK :.~.e.~ R.e.~X-X-XD.a # k kX*XM V.uX9.5XIXV.~X-.~.`.~.` F.` ~X* ~X*.rXj.z.b.b.b N.b.b.b.b.b.b.b.b.b N.bXz.b.b.b.b _XzXz _XzXg.oXzXz.bXzXz _Xz _XzXzXzXz _XzXzXz.b.^XzXzXz _Xz _.b l.bXz.bXzXz.bXz.b.b.b.^XzXzXzXzXzXzXz.b.^Xz.k eXt.r.^.k.r.r.r.r.r.r.r e.r.r e.r.r e.r e.r.r.r.r.r e.r e.r.^.rXtXtXtXt.r e.k.^.^XzXz.^ e.^.^XzXz.bXzXz.^XzXzXz.^Xz.bXz.b.o.c.V.o.o.V.V.VXg.VXg.VXg.V.oXzXz _XzXz.VXg.c.UXg.c.oXzXz _Xz _XzXzXzXz _XzXzXzXzXz.kXt.r e.r ~ FX*X-.aX-.`.`.` F.8 ~.r e.^Xz.^XzXzXzXz.^XzXzXz _XzXz.o.b.bXzXzXzXzXzXzXd e.r e.r eXj.^.oXg.c.c.V.c.c.c.cXg.UXz _Xz _Xz.b.bXz.bXjXtXtXt.r.rXt eXtXt.r eXj.^Xz.b.^Xg.b.^Xj e e.^ _ _Xz.b.b.o.I.#.VXzXz _ _ _Xz.o _XzXg.c.UXzXzXz _XzXz _Xz _.b.b.b.bXz.b.b.bXz.b.b.bXz.o.bXz l.b _XzXz _Xz _Xz _Xz _XzXzXzXz.^.^Xt.r.r e.rXtXt.rXjXk.zXk.k ~Xj.rXtXtXtXt e e.r e.r e.r e.r e.rXj.b.b.bXzXzXzXz _XzXzXzXz _XzXzXz _XzXzXzXz.bXz.bXz _.bXzXz.b.b.c.b _Xz.V.o _ _.c.V.c.c.c.cXgXg.V.c.V.c.V.o.oXzXz.^.^.k.r.rXt.r eXt e.r.r.r.8.a #XB.i h.F a a.e.a.e UX,.d x U h UX, U U hXn X%.S [XB.K c cX-.`", +"Xt.r.rXt ~Xt ~X*.r.r.r.r.rXt.r.r.rXt.r ~.r N.r.u.r.r.u.r.r.8XtXV.rXV.r.kXXXx.5.5XxXXX*XVX*XV.k.kXoXt.^ N.XXz.bXz _Xz.o.^Xz.b.^.o.^.kX-X, v p.N 2Xm M nXBXX.}X-XDX- c.~.eXD.e.eX-X, m # D `.eX-.e.~.~X-.e BXD.e $ } kXM : ).8X*.r.KXV.8X-XI.~.`.` ~.8Xt ~Xt eXt.b l N.b.b.b.o.o.b.o.b.b.b.b.b.bXz.b.o.o.o.o.b _Xz.bXz.oXg.bXz.b.bXzXz.bXz _Xz _XzXzXzXz.bXzXzXzXz.bXz.b.b.b lXz.bXzXzXz.bXzXz.bXzXz.b.bXz.bXz.bXz.b.^.b.^.r.r.r.^XtXt.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r NXt.r.r.r.r.rXtXtXt.^.^.^Xz.^Xz.b.^Xz.^Xz.bXzXzXzXzXz.o.b.b.V.o.VXg.V _.oXgXg.VXg.oXg.cXgXgXzXzXzXzXz.VXg.c.UXg.V.o.b _XzXzXzXz _XzXzXzXzXzXzXz.bXzXjXt.r e.r.8X*.`.8X-.` F.8 F F.rXj.^.^XzXzXz e e e e.bXzXzXzXz.b.o.b.b.bXzXz.bXzXzXz e.r.r eXj.^.bXg.c.V.c.c.V.c.c.c.o.cXz _Xz.o.b.b.bXz.bXt eXt eXt.rXtXtXt e.r e.^ N.b.^ e.bXj e.rXt e eXz _.b _XzXz.#. XzXzXzXzXz.b.oXg _.b _.U.oXz _XzXzXzXzXzXzXz.bXz.bXz.bXz.bXzXzXz.b.bXz _.bXz.UXz.bXz.b.b.b.bXz.bXzXz.b.bXz.^.bXj e.rXtXtXt.r eXt.k.b.X.X.^.r e.rXj.k.^XjXtXt.r e.r.r e.r.r e.rXj.^Xz.^Xz _.b.bXzXzXzXzXzXzXzXzXzXzXzXzXz.b _XzXz.b.b.b.b.b.b.o.o _XzXz.c.U.c.o.c.V.c.V.c.V.V.o.V.c _.c.o.o _Xz.bXj.bXt.r.r.r.r e ~Xt.r.r.8 3 a :Xq.l.F < a a.a.M h U h._.i E h EXe n xX%.g.p [.} 3XI.a.`.8.`.8", +".r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.k N.r.rXt.r.r.r.u.rXt.rXtXt.k.5XX )X3 qX3X*.r.r ~Xt.r.bXz.^Xz.bXzXz.^XzXzXzXz.b.b.b.b N.r.` h.' J.@ M.@ HX + + CIAO application + + + + +

    Display example README

    +
  • To download the code of this example please refer to the CVS repository at $CIAO_ROOT/DAnCE/examples/Display.
  • +
    + +

    Example Description

    + +This example is an imaginary car +(software) instrument assembly which updates the display of +current coordination of the airplane periodically. It consists of +the following three components: +
    +
    + +

    The files you will find.

    + + +
  • 1. The interfaces, +data types and exceptions used by the components of this application are +specified in the + +HUDisplay.idl file, placed in this example root directory ($CIAO_ROOT/examples/Display_Base). +This is a IDL2 file and uses the familiar CORBA data types. The lib generated +from HUDisplay.idl is linked to all the components of this example.

    + +
  • 2. mpc files for each of the components +are available in the components directories. We use the MPC +to generate makefiles and Visual C++ project/solutions files for +all ACE, +TAO and +CIAO libraries. + +
  • 3. idl and cidl files for each component are placed in components directory.
  • + +
  • 4. The _exec.h and _exec.cpp files are the actual implementation of the components.
  • + +
  • 5. The NavDisplayGUI_exec directory: +The NavDisplayGUI_exec.cpp is just an executor version +for NavDisplay. In NavDisplayGUI_exec directory you'll find only the the +NavDisplayGUI_exec (and files for the GUI), which can be deployed with the +NavDisplay stub and servant. So, if you deploy the NavDisplay component +using NavDisplay_exec you'll be able to see the application running in the shell +you triggered the NodeDaemon, and if you deploy the NavDisplay component using +NavDisplayGUI_exec a graphical interface will show you a red dot moving over a +map according to the location being generated by GPS component when you start +the application. Notice that the NavDisplayGUI.mpc file includes qt, used for +graphical interface. You must give the right location of qt libraries in your mpc file. +
  • + +
  • 6. The controller: +The RateGencomponent is started and stopped by the controller, a CORBA client application. +The controller source is in RateGen directory, so the RateGen.mpc file also +include instructions for the controller +build. + +
  • + + + +
    + +

    Make

    +
  • Go to the directory $CIAO_ROOT/DAnCE/examples/Display and do:
    + $ACE_ROOT/bin/mwc.pl (use -type option if you are using a compiler/IDE other than gnuace -which by default generates GNU makefiles)
  • +
    For example, using $ACE_ROOT/bin/mwc.pl -type vc71 if you are using Visual C++ 7.1 IDE. + + +
    + +

    Assemble

    +Now we can step forward to build the assembly. + +
  • In the descriptor subdirectory, you'll find a XML descriptor file that describes your deployment plan, the flattened_deploymentplan.cdp: +
    +This file declaratively specifies how the component assembly is +constructed. Specifically, it specifies the component types, component +instances, component connections and implementation artifact +descriptions.
    +
    +
  • Please make sure that the Modified_Deployment.xsd and XMI.xsd files are in the +Display/descriptors directory. +The former file could be found in $CIAO_ROOT/docs/schema directory. +
    + + +
    +Note: Creating the deployment plan descriptor is a tedious and error-prone job, you can download CoSMIC to assist you in this step. +
  • + +

     

    + +
    +

    Run

    +Finally you are ready to test the application you have made. From different shells in $CIAO_ROOT/DAnCE/examples/Display/descriptors/ directory: +

    + +
      +
    • Start NodeManagers (NodeDameon) by running basicNodeDaemons.pl + +
    • Start the execution manager: + $CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat + The NodeManagerMap.dat file describes the deployment daemons CIAO's Execution_Manager + will contact to instantiate ComponentServer's, home's, and component + instances. Each line specify the name of a installation + "destination" and the corresponding IOR for + the CIAO_Daemon. For example, the NodeManagerMap.dat contains: + + AirFrameDevice corbaloc:iiop:localhost:10000/NodeManager + TimerDevice corbaloc:iiop:localhost:12000/NodeManager + + You can copy and modify the copy to deploy the components in various + different locations to let the application truely "distributed". + + Remember to start up the Execution_Manager using the + revised .dat file you created, and start up the CIAO_Daemon according to the specification. + +
    • + +
      • NOTE: As one can see, we use the "NodeManagerMap.dat" file to instruct the + Execution_Manager how to find the endpoint of each individual NodeManager (i.e., Node Daemon) where + component(s) will be deployed, so this is non-standard. We plan to use Naming Service to do this in the future. +
      + +
    • Start the plan_launcher: + $CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp -k file://EM.ior + + After this, components should be deployed successfully. + +
    • The Assembly_Manager is instructed 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. + Go to the $CIAO_ROOT/DAnCE/examples/Display/descriptor directory and run the $CIAO_ROOT/DAnCE/examples/Display/RateGen/controller + -o to start the application. To stop the application run $CIAO_ROOT/DAnCE/examples/Display/RateGen/controller + -f +
    • +
    + + + +
    +Email:
    ciao-users@cse.wustl.edu
    + diff --git a/modules/CIAO/examples/Display/RateGen/RateGen.idl b/modules/CIAO/examples/Display/RateGen/RateGen.idl new file mode 100644 index 00000000000..ef398f5df78 --- /dev/null +++ b/modules/CIAO/examples/Display/RateGen/RateGen.idl @@ -0,0 +1,34 @@ +// $Id$ + +/** + * @file RateGen.idl + * + * Definition of the RateGen (a rate generator) component. + * + * @author Nanbor Wang + */ + +#ifndef RATEGEN_IDL +#define RATEGEN_IDL + +#include "../Display_Base/Display_Base.idl" + +module HUDisplay +{ + component RateGen supports opmode + { + publishes tick Pulse; + + /// The attribute can be configured via the home or the + /// component property file. + attribute long hertz; + }; + + home RateGenHome manages RateGen + { + // Explicit operations + factory new_RateGen (in long hertz); + }; +}; + +#endif /* RATEGEN_IDL */ diff --git a/modules/CIAO/examples/Display/RateGen/RateGen.mpc b/modules/CIAO/examples/Display/RateGen/RateGen.mpc new file mode 100644 index 00000000000..2bf93df325c --- /dev/null +++ b/modules/CIAO/examples/Display/RateGen/RateGen.mpc @@ -0,0 +1,135 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Display_Base -u Display -c controller RateGen" + +project(Display_RateGen_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=RATEGEN_STUB_Export \ + -Wb,stub_export_include=RateGen_stub_export.h \ + -Wb,skel_export_macro=RATEGEN_SVNT_Export \ + -Wb,skel_export_include=RateGen_svnt_export.h \ + -Wb,exec_export_macro=RATEGEN_EXEC_Export \ + -Wb,exec_export_include=RateGen_exec_export.h + + IDL_Files { + RateGen.idl + } +} + +project(Display_RateGen_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Display_RateGen_idl_gen + idlflags += -Wb,export_macro=RATEGEN_EXEC_Export \ + -Wb,export_include=RateGen_exec_export.h \ + -SS + + IDL_Files { + RateGenE.idl + } +} + +project(Display_RateGen_stub) : ccm_stub { + libout = ../lib + libpaths += ../lib + after += Display_RateGen_idl_gen Display_Base_stub + libs += Display_Base_stub + + sharedname = RateGen_stub + dynamicflags = RATEGEN_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RateGenC.cpp + } + + Header_Files { + RateGenC.h + RateGen_stub_export.h + } + + Inline_Files { + RateGenC.inl + } +} + +project(Display_RateGen_exec) : ciao_executor { + libout = ../lib + libpaths += ../lib + after += Display_RateGen_lem_gen Display_RateGen_stub + sharedname = RateGen_exec + libs += RateGen_stub Display_Base_stub + + dynamicflags = RATEGEN_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RateGenEC.cpp + RateGen_exec.cpp + } + + Header_Files { + RateGenEC.h + RateGen_exec.h + RateGen_exec_export.h + } + + Inline_Files { + RateGenEC.inl + } +} + +project(Display_RateGen_svnt) : ciao_servant { + libout = ../lib + libpaths += ../lib + after += Display_Base_skel Display_RateGen_exec + sharedname = RateGen_svnt + libs += RateGen_exec \ + RateGen_stub \ + Display_Base_skel \ + Display_Base_stub + + dynamicflags = RATEGEN_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RateGenS.cpp + RateGen_svnt.cpp + } + + Header_Files { + RateGenS.h + RateGen_svnt.h + RateGen_svnt_export.h + } + + Inline_Files { + RateGenS.inl + } +} + +project (Display_controller) : ccm_stub, valuetype { + libout = ../lib + libpaths += ../lib + exename = controller + after += Display_RateGen_stub + libs += RateGen_stub Display_Base_stub + + IDL_Files { + } + + Source_Files { + controller.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp b/modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp new file mode 100644 index 00000000000..abead406761 --- /dev/null +++ b/modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp @@ -0,0 +1,289 @@ +// $Id$ + +#include "RateGen_exec.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 (); + + 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) +{ + + 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 () +{ + return this->hertz_; +} + +void +MyImpl::RateGen_exec_i::hertz (CORBA::Long hertz) +{ + this->hertz_ = hertz; +} + +// Operations from supported interface(s) + +void +MyImpl::RateGen_exec_i::start () +{ + if (this->hertz_ == 0 || this->pulser_.active()) + { + throw CORBA::BAD_INV_ORDER (); + } + + // @@ Start the rate generator + this->pulser_.start (this->hertz_); +} + +void +MyImpl::RateGen_exec_i::stop () +{ + if (! this->pulser_.active ()) + { + throw CORBA::BAD_INV_ORDER (); + } + + // @@ stop the rate generator + this->pulser_.stop (); +} + +CORBA::Boolean +MyImpl::RateGen_exec_i::active () +{ + return this->pulser_.active (); +} + +// Operations from Components::SessionComponent + +void +MyImpl::RateGen_exec_i::set_session_context ( + Components::SessionContext_ptr ctx + ) +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::RateGen_exec_i::set_session_context\n")); + + this->context_ = + HUDisplay::CCM_RateGen_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + // Urm, we actually discard exceptions thown from this operation. + +} + +void +MyImpl::RateGen_exec_i::configuration_complete () +{ +} + +void +MyImpl::RateGen_exec_i::ccm_activate () +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::RateGen_exec_i::ccm_activate\n")); + + this->pulser_.open_h (); +} + +void +MyImpl::RateGen_exec_i::ccm_passivate () +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::RateGen_exec_i::ccm_passivate\n")); + + this->pulser_.close_h (); +} + +void +MyImpl::RateGen_exec_i::ccm_remove () +{ + ACE_DEBUG ((LM_DEBUG, + "MyImpl::RateGen_exec_i::ccm_remove\n")); +} + +void +MyImpl::RateGen_exec_i::pulse (void) +{ + try + { +// 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 ()); + } + catch (const CORBA::Exception&) + { + // @@ do nothing? + } + +} + +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 */) +{ + Components::EnterpriseComponent_ptr tmp = 0; + ACE_NEW_THROW_EX (tmp, + MyImpl::RateGen_exec_i, + CORBA::NO_MEMORY ()); + + return tmp; +} + +::Components::EnterpriseComponent_ptr +MyImpl::RateGenHome_exec_i::create () +{ + 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/modules/CIAO/examples/Display/RateGen/RateGen_exec.h b/modules/CIAO/examples/Display/RateGen/RateGen_exec.h new file mode 100644 index 00000000000..438cbfbde1b --- /dev/null +++ b/modules/CIAO/examples/Display/RateGen/RateGen_exec.h @@ -0,0 +1,163 @@ +// $Id$ + +/** + * @file RateGen_exec.h + * + * Header file for the actualy RateGen and RateGenHome component + * implementation. + * + * @author Nanbor Wang + */ + +#ifndef RATEGEN_EXEC_H +#define RATEGEN_EXEC_H + +#include "RateGen_exec_export.h" +#include "RateGenEC.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 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. + long 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 ::CIAO_HUDisplay_RateGen_Impl::RateGen_Exec, + public virtual ::CORBA::LocalObject + { + 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 (); + + virtual void hertz (CORBA::Long hertz); + + // Operations from supported interface(s) + + virtual void start (); + + virtual void stop (); + + virtual CORBA::Boolean active (); + + // Operations from Components::SessionComponent + + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + /// 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 ::CORBA::LocalObject + { + public: + /// Default ctor. + RateGenHome_exec_i (); + + /// Default dtor. + ~RateGenHome_exec_i (); + + // Explicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + new_RateGen (CORBA::Long hertz); + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + +} + +extern "C" RATEGEN_EXEC_Export ::Components::HomeExecutorBase_ptr +createRateGenHome_Impl (void); + +#endif /* RATEGEN_EXEC_H */ diff --git a/modules/CIAO/examples/Display/RateGen/controller.cpp b/modules/CIAO/examples/Display/RateGen/controller.cpp new file mode 100644 index 00000000000..0eb9394eaee --- /dev/null +++ b/modules/CIAO/examples/Display/RateGen/controller.cpp @@ -0,0 +1,121 @@ +// $Id$ + +#include "RateGenC.h" +#include "ace/streams.h" +#include "ace/Get_Opt.h" + +/** + * @file controller.cpp + * + * This program interact with a RateGen component, using its supported + * interface "opmode" to switch it on/off, and set the rate of the + * RateGen. + */ + +const ACE_TCHAR *rategen_ior_ = 0; +int rate = 2; +int turn_on = 1; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:r:of")); + int c; + + while ((c = get_opts ()) != -1) + { + switch (c) + { + case 'o': + turn_on = 1; + break; + case 'f': + turn_on = 0; + break; + case 'k': + rategen_ior_ = get_opts.opt_arg (); + break; + case 'r': + rate = ACE_OS::atoi (get_opts.opt_arg ()); + break; + case '?': // display help for use of the server. + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s\n" + "-o (Turn on the rate generator)\n" + "-f (Turn off the rate generator)\n" + "-k (default is file://RateGen.ior)\n" + "-r (default is 3)\n" + "\n", + argv [0]), + -1); + break; + } + } + + if (rategen_ior_ == 0) + { + rategen_ior_ = ACE_TEXT("file://RateGen.ior"); + } + + if (rate == 0) + { + rate = 3; + } + + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv); + + if (parse_args (argc, argv) != 0) + { + return -1; + } + + CORBA::Object_var obj = + orb->string_to_object (rategen_ior_); + + HUDisplay::RateGen_var pulser = + HUDisplay::RateGen::_narrow (obj.in ()); + + if (CORBA::is_nil (pulser.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Unable to acquire 'RateGen' objref\n"), + -1); + } + + if (turn_on) + { + pulser->hertz (rate); + + ACE_DEBUG ((LM_DEBUG, "Start up the Rate Generator\n")); + + pulser->start (); + } + else + { + pulser->stop (); + + ACE_DEBUG ((LM_DEBUG, "Rate Generator stopped\n")); + } + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Who is the culprit\n"); + cerr << "Uncaught CORBA exception" << endl; + return 1; + } + + return 0; +} diff --git a/modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp b/modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp new file mode 100644 index 00000000000..2ebfcbc5f3a --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp @@ -0,0 +1,26 @@ + + + + + + + RateGen_Instance + RateGenNode + + + + GPS_Instance + GPSNode + + + + NavDisplay_Instance + NavDisplayNode + + + diff --git a/modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd b/modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd new file mode 100644 index 00000000000..65f5eb81d1e --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd @@ -0,0 +1,826 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat b/modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat new file mode 100644 index 00000000000..ac5c9a6486d --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat @@ -0,0 +1,2 @@ +AirFrameDevice corbaloc:iiop:localhost:10001/NodeManager +TimerDevice corbaloc:iiop:localhost:20001/NodeManager \ No newline at end of file diff --git a/modules/CIAO/examples/Display/descriptors/XMI.xsd b/modules/CIAO/examples/Display/descriptors/XMI.xsd new file mode 100644 index 00000000000..f4adac91934 --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/XMI.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl b/modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl new file mode 100755 index 00000000000..afebafb0c68 --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl @@ -0,0 +1,54 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$status = 0; +$iorbase1 = "NodeApp1.ior"; +$iorbase2 = "NodeApp2.ior"; +$iorbase3 = "NodeApp3.ior"; +$iorbase4 = "NodeApp4.ior"; +$iorbase5 = "NodeApp5.ior"; + +$iorfile1 = $tg->LocalFile ("NodeApp1.ior"); +$iorfile2 = $tg->LocalFile ("NodeApp2.ior"); +$iorfile3 = $tg->LocalFile ("NodeApp3.ior"); +$iorfile4 = $tg->LocalFile ("NodeApp4.ior"); +$iorfile5 = $tg->LocalFile ("NodeApp5.ior"); + +$tg->DeleteFile ("NodeApp1.ior"); +$tg->DeleteFile ("NodeApp2.ior"); +$tg->DeleteFile ("NodeApp3.ior"); +$tg->DeleteFile ("NodeApp4.ior"); +$tg->DeleteFile ("NodeApp5.ior"); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$SV1 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:10000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:20000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV3 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:30000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV4 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:40000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV5 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:50000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); +$SV1->Spawn (); +$SV2->Spawn (); +$SV3->Spawn (); +$SV4->Spawn (); +$SV5->Spawn (); + +sleep (99999999999); diff --git a/modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp new file mode 100644 index 00000000000..1d68739216f --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp @@ -0,0 +1,305 @@ + + + + Display_Plan_UUID_0001 + + + + 4edb0436-da3f-450e-baed-79127c1405b2 + + IDL:HUDisplay/RateGen:1.0 + + Pulse + IDL:HUDisplay/TimeOut:1.0 + IDL:HUDisplay/TimeOut:1.0 + false + false + false + false + EventPublisher + + + + + + + + HUDisplay-RateGen-mdd + + HUDisplay-RateGen_svnt + HUDisplay-RateGen_exec + + + + + HUDisplay-NavDisplay-mdd + + HUDisplay-NavDisplay_svnt + HUDisplay-NavDisplay_exec + + + + + HUDisplay-GPS-mdd + + HUDisplay-GPS_svnt + HUDisplay-GPS_exec + + + + + + + + HUDisplay-GPS-idd + AirFrameDevice + + HUDisplay-GPS-mdd + + + ComponentIOR + + + tk_string + + + GPS.ior + + + + + + + + HUDisplay-RateGen-idd + AirFrameDevice + + HUDisplay-RateGen-mdd + + + ComponentIOR + + + tk_string + + + RateGen.ior + + + + + + hertz + + + tk_long + + + 2 + + + + + + + HUDisplay-NavDisplay-idd + AirFrameDevice + + HUDisplay-NavDisplay-mdd + + ComponentIOR + + + tk_string + + + NavDisplay.ior + + + + + + + + Pulse_Refresh + + Pulse + EventPublisher + HUDisplay-RateGen-idd + + + Refresh + EventConsumer + HUDisplay-GPS-idd + + + + + Refresh_Ready + + Ready + EventPublisher + HUDisplay-GPS-idd + + + Refresh + EventConsumer + HUDisplay-NavDisplay-idd + + + + + GPSLocation_MyLocation_facet + + MyLocation + Facet + HUDisplay-GPS-idd + + + GPSLocation + SimplexReceptacle + HUDisplay-NavDisplay-idd + + + + + + + + + RateGen_svnt + + + RateGen_svnt + + entryPoint + + + tk_string + + + create_HUDisplay_RateGenHome_Servant + + + + + + + + RateGen_exec + + + RateGen_exec + + entryPoint + + + tk_string + + + createRateGenHome_Impl + + + + + + + + + + GPS_svnt + + + GPS_svnt + + entryPoint + + + tk_string + + + create_HUDisplay_GPSHome_Servant + + + + + + + + + GPS_exec + + + GPS_exec + + entryPoint + + + tk_string + + + createGPSHome_Impl + + + + + + + + + + NavDisplay_svnt + + + NavDisplay_svnt + + entryPoint + + + tk_string + + + create_HUDisplay_NavDisplayHome_Servant + + + + + + + + + NavDisplay_exec + + + NavDisplay_exec + + entryPoint + + + tk_string + + + createNavDisplayHome_Impl + + + + + + + + + diff --git a/modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl b/modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl new file mode 100755 index 00000000000..e07c2aedd67 --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl @@ -0,0 +1,32 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$iorbase1 = "NodeApp1.ior"; +$iorfile1 = $tg->LocalFile ($iorbase1); +$iorbase2 = "NodeApp2.ior"; +$iorfile2 = $tg->LocalFile ($iorbase2); + +$iorfile1 = $tg->DeleteFile ($iorbase1); +$iorfile2 = $tg->DeleteFile ($iorbase2); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$SV1 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:10001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:20001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV1->Spawn (); +$SV2->Spawn (); + +sleep (99999999999); diff --git a/modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl b/modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl new file mode 100755 index 00000000000..38af7a58461 --- /dev/null +++ b/modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl @@ -0,0 +1,187 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$daemons = 2; +@ports = ( 10001, 20001 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +$status = 0; +$dat_file = "NodeManagerMap.dat"; +$controller_exec = "$CIAO_ROOT/examples/Display/RateGen/controller"; + +$E = 0; +$EM = 0; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$ior_rategenbase = "RateGen.ior"; +$ior_rategenfile = 0; +$ior_gpsbase = "GPS.ior"; +$ior_displaybase = "NavDisplay.ior"; +$ior_displayfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +sub init_ior_files { + $ior_emfile = $tg->LocalFile ($ior_embase); + $ior_rategenfile = $tg->LocalFile ($ior_rategenbase); + $tg->LocalFile ($ior_gpsbase); + $ior_displayfile = $tg->LocalFile ($ior_displaybase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg->DeleteFile ($iorbases[$i]); + } + $tg->DeleteFile ($ior_embase); + $tg->DeleteFile ($ior_rategenbase); + $tg->DeleteFile ($ior_gpsbase); + $tg->DeleteFile ($ior_displaybase); +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/NodeApplication"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -d 30"; + + $Daemons[$i] = $tg->CreateProcess ($d_cmd, $d_param); + $Daemons[$i]->Spawn (); + + if ($tg->WaitForFileTimed($iorbases[$i], + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of node daemon $i could not be found\n"; + for (; $i > 0; --$i) { + $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1); + } + return -1; + } + } + $daemons_running = 1; + return 0; +} + +delete_ior_files (); + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + exit 1; +} + +# Invoke execution manager. +print "Invoking execution manager\n"; +$EM = $tg->CreateProcess ("$CIAO_ROOT/bin/Execution_Manager", + "-o $ior_emfile -i $dat_file"); +$EM->Spawn (); + +if ($tg->WaitForFileTimed($ior_embase, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - start the application -\n"; +$E = $tg->CreateProcess ("$CIAO_ROOT/bin/plan_launcher", + "-p flattened_deploymentplan.cdp -k file://$ior_emfile -o DAM.ior"); + +$E->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); + +if ($tg->WaitForFileTimed($ior_gpsbase, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of GPS could not be found\n"; + kill_open_processes (); + exit 1; +} + +if ($tg->WaitForFileTimed($ior_rategenbase, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of RateGen could not be found\n"; + kill_open_processes (); + exit 1; +} + +print "Invoking the controller\n"; +$controller = $tg->CreateProcess ("$controller_exec", "-k file://$ior_rategenfile"); +$result = $controller->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# put some delay here. +sleep (20); + +# invoking the controller again to stop the rategen +print "Invoking the controller to stop RateGen\n"; +$controller = $tg->CreateProcess ("$controller_exec", "-k file://$ior_rategenfile -f"); +$result = $controller->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# delay a bit more +sleep (2); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +$E = $tg->CreateProcess ("$CIAO_ROOT/bin/plan_launcher", + "-k file://$ior_emfile -i file://DAM.ior"); +$E->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl new file mode 100644 index 00000000000..18b300932ee --- /dev/null +++ b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl @@ -0,0 +1,21 @@ +//$Id$: + +#ifndef CIAO_HELLO_IDL +#define CIAO_HELLO_IDL + +#include + +module Hello +{ + interface ReadMessage + { + string get_message(); + }; + + eventtype TimeOut + { + public string data; + }; +}; + +#endif /* CIAO_HELLO_IDL */ diff --git a/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc new file mode 100644 index 00000000000..2ff1b9e7571 --- /dev/null +++ b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc @@ -0,0 +1,78 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Hello_Base" + +project(Hello_Base_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export \ + -Wb,stub_export_include=Hello_Base_stub_export.h \ + -Wb,skel_export_macro=HELLO_BASE_SKEL_Export \ + -Wb,skel_export_include=Hello_Base_skel_export.h + + IDL_Files { + Hello_Base.idl + } +} + +project(Hello_Base_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Hello_Base_idl_gen + idlflags += -Wb,export_macro=HELLO_BASE_STUB_Export \ + -Wb,export_include=Hello_Base_stub_export.h + + IDL_Files { + Hello_BaseE.idl + } +} + +project(Hello_Base_stub) : ccm_stub { + after += Hello_Base_lem_gen + libout = ../lib + sharedname = Hello_Base_stub + dynamicflags = HELLO_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseC.cpp + Hello_BaseEC.cpp + } + + Header_Files { + Hello_BaseC.h + Hello_Base_stub_export.h + } + + Inline_Files { + Hello_BaseC.inl + } +} + + +project(Hello_Base_skel) : ccm_svnt { + after += Hello_Base_stub + sharedname = Hello_Base_skel + libs += Hello_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = HELLO_BASE_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseS.cpp + } + + Header_Files { + Hello_BaseS.h + Hello_Base_skel_export.h + } + + Inline_Files { + Hello_BaseS.inl + } +} + + diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver.idl b/modules/CIAO/examples/Hello/Receiver/Receiver.idl new file mode 100644 index 00000000000..c43910e1874 --- /dev/null +++ b/modules/CIAO/examples/Hello/Receiver/Receiver.idl @@ -0,0 +1,22 @@ +//$Id$: + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "../Hello_Base/Hello_Base.idl" + +module Hello +{ + component Receiver + { + uses ReadMessage read_message; + consumes TimeOut click_in; + + attribute short iterations; + }; + + home ReceiverHome manages Receiver + { + }; +}; +#endif /*RECEIVER_IDL*/ diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver.mpc b/modules/CIAO/examples/Hello/Receiver/Receiver.mpc new file mode 100644 index 00000000000..bb69fe6c789 --- /dev/null +++ b/modules/CIAO/examples/Hello/Receiver/Receiver.mpc @@ -0,0 +1,143 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl Receiver" + +project(Hello_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += Hello_Base_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SKEL_Export \ + -Wb,skel_export_include=Receiver_skel_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h + + IDL_Files { + Receiver.idl + } +} + +project(Hello_Receiver_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Hello_Receiver_idl_gen + idlflags += -Wb,export_macro=RECEIVER_EXEC_Export \ + -Wb,export_include=Receiver_exec_export.h \ + -SS + + IDL_Files { + ReceiverE.idl + } +} + +project(Hello_Receiver_stub) : ccm_stub { + after += Hello_Receiver_idl_gen Hello_Base_stub + libs += Hello_Base_stub + libout = ../lib + libpaths += ../lib + + sharedname = Hello_Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverC.cpp + } + + Header_Files { + ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + ReceiverC.inl + } +} + +project(Hello_Receiver_exec) : ciao_executor { + after += Hello_Receiver_lem_gen Hello_Receiver_stub + sharedname = Hello_Receiver_exec + libs += Hello_Receiver_stub Hello_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverEC.cpp + Receiver_exec.cpp + } + + Header_Files { + ReceiverEC.h + Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + ReceiverEC.inl + } +} + +project(Hello_Receiver_skel) : ccm_svnt { + after += Hello_Base_skel Hello_Receiver_stub + sharedname = Hello_Receiver_skel + libs += Hello_Receiver_stub \ + Hello_Base_skel \ + Hello_Base_stub + libout = ../lib + libpaths += ../lib + dynamicflags = RECEIVER_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverS.cpp + } + + Header_Files { + ReceiverS.h + Receiver_skel_export.h + } + + Inline_Files { + ReceiverS.inl + } +} + +project(Hello_Receiver_svnt) : ciao_servant { + after += Hello_Receiver_skel Hello_Receiver_exec + sharedname = Hello_Receiver_svnt + libs += Hello_Receiver_exec \ + Hello_Receiver_skel \ + Hello_Receiver_stub \ + Hello_Base_skel \ + Hello_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Receiver_svnt.cpp + } + + Header_Files { + Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + } +} + + diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp new file mode 100644 index 00000000000..f78651ae0eb --- /dev/null +++ b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp @@ -0,0 +1,126 @@ +// $Id$ + +#include "Receiver_exec.h" +#include "ace/OS_NS_unistd.h" + +namespace CIAO_Hello_Receiver_Impl +{ + Receiver_exec_i::Receiver_exec_i () + : iterations_ (10) + { + } + + Receiver_exec_i::~Receiver_exec_i () + { + } + + void + Receiver_exec_i::iterations (CORBA::Short iterations) + { + this->iterations_ = iterations; + } + + CORBA::Short + Receiver_exec_i::iterations () + { + return this->iterations_; + } + + void + Receiver_exec_i::push_click_in (::Hello::TimeOut * ev) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Receiver - Informed by the Sender with message [%C]\n"), + ev->data ())); + Hello::ReadMessage_var rev = this->context_->get_connection_read_message (); + if (CORBA::is_nil (rev.in ())) + throw CORBA::BAD_INV_ORDER (); + for (CORBA::Short i = 0; i < this->iterations_; ++i) + { + CORBA::String_var str = rev->get_message (); + ACE_DEBUG ((LM_DEBUG, + "Receiver - Got message from the sender [%C].\n", + str.in ())); + ACE_Time_Value tv (1, 0); + ACE_OS::sleep (tv); + } + } + + // Operations from Components::SessionComponen + void + Receiver_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::set_session_context\n")); + + this->context_ = + ::Hello::CCM_Receiver_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete () + { + ACE_DEBUG ((LM_DEBUG, + "Receiver_exec_i::configuration_complete\n")); + } + + void + Receiver_exec_i::ccm_activate () + { + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate\n")); + } + + void + Receiver_exec_i::ccm_passivate () + { + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_passivate\n")); + } + + void + Receiver_exec_i::ccm_remove () + { + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_remove\n")); + } + + + ReceiverHome_exec_i::ReceiverHome_exec_i () + { + } + + ReceiverHome_exec_i::~ReceiverHome_exec_i () + { + } + + ::Components::EnterpriseComponent_ptr + ReceiverHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Receiver_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Hello_ReceiverHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + ReceiverHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_exec.h b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.h new file mode 100644 index 00000000000..0d64ea1c537 --- /dev/null +++ b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.h @@ -0,0 +1,97 @@ +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H +#define CIAO_RECEIVER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "ReceiverEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Receiver_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Hello_Receiver_Impl +{ + /** + * @class Receiver_exec_i + * + * Receiver executor implementation class. + */ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + + public: + /// Default constructor. + Receiver_exec_i (); + + /// Default destructor. + ~Receiver_exec_i (); + + /// Operation to set the value of the attribute "iterations" + virtual void iterations (CORBA::Short iterations); + + /// Operation to get the value of the attribute "iterations" + virtual CORBA::Short iterations (); + + // Operation which will be called upon receiving the timeout event. + virtual void + push_click_in (::Hello::TimeOut *ev); + + // Operations from Components::SessionComponent + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + virtual void ccm_passivate (); + virtual void ccm_remove (); + + protected: + /// Copmponent specific context + ::Hello::CCM_Receiver_Context_var context_; + + private: + CORBA::String_var message_; + CORBA::Short iterations_; + }; + + /** + * @class ReceiverHome_exec_i + * + * Receiver home executor implementation class. + */ + class RECEIVER_EXEC_Export ReceiverHome_exec_i + : public virtual ReceiverHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + ReceiverHome_exec_i (void); + virtual ~ReceiverHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Hello_ReceiverHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_RECEIVER_EXEC_H */ diff --git a/modules/CIAO/examples/Hello/Sender/Sender.idl b/modules/CIAO/examples/Hello/Sender/Sender.idl new file mode 100644 index 00000000000..222915630dc --- /dev/null +++ b/modules/CIAO/examples/Hello/Sender/Sender.idl @@ -0,0 +1,43 @@ +//$Id$ + +#ifndef SENDER_IDL +#define SENDER_IDL + + +#include "../Hello_Base/Hello_Base.idl" +#include "../Hello_Base/Hello_BaseE.idl" + +module Hello +{ + /* This is a Sender specific interface which will be used to get the + * process start. + */ + + interface trigger + { + void start (); + }; + + enum COLOR_SELECTION + { + empty, + white, + red, + yellow + }; + + component Sender supports trigger + { + provides ReadMessage push_message; + publishes TimeOut click_out; + + attribute string local_message; + // A test attribute to test setting attributes through XML + attribute COLOR_SELECTION color; + }; + + home SenderHome manages Sender + { + }; +}; +#endif /*SENDER_IDL*/ diff --git a/modules/CIAO/examples/Hello/Sender/Sender.mpc b/modules/CIAO/examples/Hello/Sender/Sender.mpc new file mode 100644 index 00000000000..b9cdd1c4f4d --- /dev/null +++ b/modules/CIAO/examples/Hello/Sender/Sender.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Hello_Base -u Hello -c starter Sender" + +project(Hello_Sender_idl_gen) : componentidldefaults { + custom_only = 1 + after += Hello_Base_idl_gen + idlflags += \ + -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h + + IDL_Files { + Sender.idl + } +} + +project(Hello_Sender_lem_gen) : ciaoidldefaults { + after += Hello_Sender_idl_gen Hello_Base_lem_gen + custom_only = 1 + idlflags += -Wb,export_macro=SENDER_EXEC_Export \ + -Wb,export_include=Sender_exec_export.h \ + -SS + + IDL_Files { + SenderE.idl + } +} + +project(Hello_Sender_stub) : ccm_stub { + after += Hello_Sender_idl_gen Hello_Base_stub + libs += Hello_Base_stub + libout = ../lib + libpaths += ../lib + + sharedname = Hello_Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderC.cpp + } + + Header_Files { + SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SenderC.inl + } +} + +project(Hello_Sender_exec) : ciao_executor { + after += Hello_Sender_lem_gen Hello_Sender_stub + sharedname = Hello_Sender_exec + libs += Hello_Sender_stub Hello_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderEC.cpp + Sender_exec.cpp + } + + Header_Files { + SenderEC.h + Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + SenderEC.inl + } +} + + +project(Hello_Sender_svnt) : ciao_servant { + after += Hello_Base_skel Hello_Sender_exec + sharedname = Hello_Sender_svnt + libs += Hello_Sender_exec \ + Hello_Sender_stub \ + Hello_Base_skel \ + Hello_Base_stub + libout = ../lib + libpaths += ../lib + + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderS.cpp + Sender_svnt.cpp + } + + Header_Files { + SenderS.h + Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + SenderS.inl + } +} + +project (Hello_starter) : ccm_stub, valuetype { + exename = starter + after += Hello_Sender_stub + libs += Hello_Sender_stub Hello_Base_stub + libout = ../lib + libpaths += ../lib + + IDL_Files { + } + + Source_Files { + starter.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/examples/Hello/Sender/Sender_exec.cpp b/modules/CIAO/examples/Hello/Sender/Sender_exec.cpp new file mode 100644 index 00000000000..93842337e76 --- /dev/null +++ b/modules/CIAO/examples/Hello/Sender/Sender_exec.cpp @@ -0,0 +1,164 @@ +// $Id$ + +#include "Sender_exec.h" +#include "ace/OS_NS_time.h" + +namespace CIAO_Hello_Sender_Impl +{ + char* + Message_Impl::get_message () + { + ACE_DEBUG ((LM_EMERGENCY, "Sender returning message: [%C]\n", component_.message_.in ())); + return CORBA::string_dup (component_.message_.in ()); + } + + Sender_exec_i::~Sender_exec_i () + { + } + + void + Sender_exec_i::local_message (const char * local_message) + { + message_ = CORBA::string_dup (local_message); + } + + char * + Sender_exec_i::local_message () + { + return CORBA::string_dup (message_.in ()); + } + + ::Hello::COLOR_SELECTION + Sender_exec_i::color () + { + // Your code here. + return this->color_; + } + + void + Sender_exec_i::color (::Hello::COLOR_SELECTION color) + { + this->color_ = color; + } + + Hello::CCM_ReadMessage_ptr + Sender_exec_i::get_push_message () + { + ACE_DEBUG ((LM_EMERGENCY, + "Sender_exec.i::get_push_message called\n")); + return ( new Message_Impl (*this) ); + } + + void + Sender_exec_i::start () + { + Hello::TimeOut_var event = new OBV_Hello::TimeOut; + event->data ("ACE/TAO/CIAO"); + ACE_DEBUG ((LM_EMERGENCY, "Sender initiates the process.\n")); + this->context_->push_click_out (event.in ()); + + ACE_DEBUG ((LM_EMERGENCY, "My current color is:")); + + switch (this->color_) + { + case ::Hello::empty: + ACE_DEBUG ((LM_EMERGENCY, "ERROR: Enum attribute initialization failed.\n")); + break; + + case ::Hello::white: + ACE_DEBUG ((LM_EMERGENCY, "white\n")); + break; + + case ::Hello::red: + ACE_DEBUG ((LM_EMERGENCY, "red\n")); + break; + + case ::Hello::yellow: + ACE_DEBUG ((LM_EMERGENCY, "yellow\n")); + break; + + default: + ACE_DEBUG ((LM_EMERGENCY, "Unknown color!\n")); + + } + } + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + ACE_DEBUG ((LM_EMERGENCY, "Sender_exec_i::set_session_context\n")); + + this->context_ = + ::Hello::CCM_Sender_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete () + { + ACE_DEBUG ((LM_EMERGENCY, + "Sender_exec_i::configuration_complete\n")); + } + + void + Sender_exec_i::ccm_activate () + { + ACE_DEBUG ((LM_EMERGENCY, + "Sender_exec_i::ccm_activate\n")); + } + + void + Sender_exec_i::ccm_passivate () + { + ACE_DEBUG ((LM_EMERGENCY, "Sender_exec_i::ccm_passivate\n")); + } + + void + Sender_exec_i::ccm_remove () + { + ACE_DEBUG ((LM_EMERGENCY, "Sender_exec_i::ccm_remove\n")); + } + + SenderHome_exec_i::SenderHome_exec_i () + { + } + + SenderHome_exec_i::~SenderHome_exec_i () + { + } + + ::Components::EnterpriseComponent_ptr + SenderHome_exec_i::create () + { + ACE_DEBUG ((LM_EMERGENCY, "(%P|%t) creating SenderHome\n")); + + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Sender_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Hello_SenderHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SenderHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/examples/Hello/Sender/Sender_exec.h b/modules/CIAO/examples/Hello/Sender/Sender_exec.h new file mode 100644 index 00000000000..e2e8a0982e3 --- /dev/null +++ b/modules/CIAO/examples/Hello/Sender/Sender_exec.h @@ -0,0 +1,136 @@ +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H +#define CIAO_SENDER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SenderEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Sender_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Hello_Sender_Impl +{ + /** + * @class Sender_exec_i + * + * Sender executor implementation class. + */ + class SENDER_EXEC_Export Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + + public: + /// Default constructor. + Sender_exec_i () + : message_(CORBA::string_dup ("Default Message")), + color_ (::Hello::empty) + { + } + + /// Secondary construction. + Sender_exec_i (const char* local_message) + : message_ (CORBA::string_dup (local_message)), + color_ (::Hello::empty) + { + } + + /// Default destructor. + virtual ~Sender_exec_i (); + + /// Operation to set the value of the attribute "local_message" + virtual void local_message (const char * local_message); + + /// Operation to get the value of the attribute "local_message" + virtual char * local_message (); + + /* Operations for obtaining the interface reference. */ + /* This method will be used in the assembly face so the + * ObjRef of this read_message facet will be sent to the + * client side(receptacle). + */ + // Note: You can specify the return type as ::Hello::CCM_message * + virtual ::Hello::CCM_ReadMessage_ptr + get_push_message (); + + virtual ::Hello::COLOR_SELECTION + color (); + + virtual void + color (::Hello::COLOR_SELECTION); + + // Operation inside of the trigger interface. + virtual void start (); + + // Operations from Components::SessionComponent + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + protected: + /// Copmponent specific context + ::Hello::CCM_Sender_Context_var context_; + + private: + CORBA::String_var message_; + + CORBA::Boolean log_time_; + + ::Hello::COLOR_SELECTION color_; + + friend class Message_Impl; + }; + + class Message_Impl : public virtual Hello::CCM_ReadMessage, + public virtual ::CORBA::LocalObject + { + public: + Message_Impl (Sender_exec_i& component) + : component_ (component) + { + } + + virtual char *get_message (); + + private: + Sender_exec_i& component_; + }; + + /** + * @class SenderHome_exec_i + * + * Sender home executor implementation class. + */ + class SENDER_EXEC_Export SenderHome_exec_i + : public virtual SenderHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SenderHome_exec_i (void); + virtual ~SenderHome_exec_i (void); + + virtual ::Components::EnterpriseComponent_ptr create (); + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Sender_Impl (void); + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Hello_SenderHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SENDER_EXEC_H */ diff --git a/modules/CIAO/examples/Hello/Sender/starter.cpp b/modules/CIAO/examples/Hello/Sender/starter.cpp new file mode 100644 index 00000000000..4a1c04fbe9a --- /dev/null +++ b/modules/CIAO/examples/Hello/Sender/starter.cpp @@ -0,0 +1,88 @@ +//$Id$: + +#include "SenderC.h" +#include "ace/Get_Opt.h" + +// IOR file of the Sender +const ACE_TCHAR * ior = 0; +const char * message = 0; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:m:")); + int c = 0; + + while ((c = get_opts ()) != -1) + { + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case 'm': + message = ACE_TEXT_ALWAYS_CHAR(get_opts.opt_arg ()); + break; + + case '?': // display help for use of the server. + default: + ACE_ERROR_RETURN ((LM_ERROR, + "Usage: %s\n" + "-k (default is file://Sender.ior)\n", + "-m \n", + argv [0]), + -1); + break; + } + } + + if (ior == 0) + { + ior = ACE_TEXT("file://Sender.ior"); + } + + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (parse_args (argc, argv) != 0) + { + return -1; + } + + CORBA::Object_var obj = orb->string_to_object (ior); + + Hello::Sender_var sender = Hello::Sender::_narrow (obj.in ()); + + if (CORBA::is_nil (sender.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Unable to acquire Sender's objref\n"), + -1); + } + + if (message) + { + sender->local_message (message); + } + + sender->start (); + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Unknown exception\n"); + return -1; + } + + return 0; +} diff --git a/modules/CIAO/examples/Hello/descriptors/Aliased_Map.dat b/modules/CIAO/examples/Hello/descriptors/Aliased_Map.dat new file mode 100644 index 00000000000..30e6930c2a3 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/Aliased_Map.dat @@ -0,0 +1,2 @@ +SenderNode corbaloc:iiop:localhost:60001/Alias.NodeManager +ReceiverNode corbaloc:iiop:localhost:60001/Alias.NodeManager \ No newline at end of file diff --git a/modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp b/modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp new file mode 100644 index 00000000000..a8408215438 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp @@ -0,0 +1,372 @@ + + + Hello_Deployment_1 + + + + + + Hello_ReceiverHomeImplementation + + + + + + home factory + + + tk_string + + + create_Hello_ReceiverHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_ReceiverHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Receiver_exec + + + + + + + Hello_ReceiverComponentImplementation + + + + + + + Hello_SenderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Hello_SenderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_SenderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Sender_exec + + + + + + + Hello_SenderComponentImplementation + + + + + + + Hello_ReceiverHome + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + ReceiverHome.ior + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + ReceiverHome + + + + + + + Hello_ReceiverComponent + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + Receiver.ior + + + + + iterations + + + tk_short + + + 10 + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + Receiver + + + + + + + Hello_SenderHome + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + SenderHome.ior + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + SenderHome + + + + + + + Hello_SenderComponent + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_SenderHome + + + + + local_message + + + tk_string + + + hello, world! + + + + + color + + + tk_enum + + COLOR_SELECTION + IDL:Hello/COLOR_SELECTION:1.0 + empty + white + red + yellow + + + + yellow + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + Sender.ior + + + + + edu.vanderbilt.dre.DAnCE.RegisterNaming + + + tk_string + + + Sender + + + + + + + MessageConnection + + read_message + false + SimplexReceptacle + + + + push_message + true + Facet + + + + + + EventConnection + + click_out + false + EventPublisher + + + + click_in + true + EventConsumer + + + + + + + Hello_Receiver_exec + + + Hello_Receiver_exec + + + Hello_Receiver_svnt + + + Hello_Receiver_svnt + + + + Hello_Sender_exec + + + Hello_Sender_exec + + + Hello_Sender_svnt + + + Hello_Sender_svnt + + + diff --git a/modules/CIAO/examples/Hello/descriptors/DeploymentPlan_without_ns.cdp b/modules/CIAO/examples/Hello/descriptors/DeploymentPlan_without_ns.cdp new file mode 100644 index 00000000000..6d5b3f05780 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/DeploymentPlan_without_ns.cdp @@ -0,0 +1,317 @@ + + + Hello_Deployment_1 + + + + + + Hello_ReceiverHomeImplementation + + + + + + home factory + + + tk_string + + + create_Hello_ReceiverHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_ReceiverHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Receiver_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Receiver_exec + + + + + + + Hello_ReceiverComponentImplementation + + + + + + + Hello_SenderHomeImplementation + + + + + + home factory + + + tk_string + + + create_Hello_SenderHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Hello_SenderHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Hello_Sender_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Hello_Sender_exec + + + + + + + Hello_SenderComponentImplementation + + + + + + + Hello_ReceiverHome + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + ReceiverHome.ior + + + + + + + Hello_ReceiverComponent + ReceiverNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_ReceiverHome + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + Receiver.ior + + + + + + + Hello_SenderHome + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + SenderHome.ior + + + + + + + Hello_SenderComponent + SenderNode + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Hello_SenderHome + + + + + local_message + + + tk_string + + + hello, world! + + + + + color + + + tk_enum + + COLOR_SELECTION + IDL:Hello/COLOR_SELECTION:1.0 + empty + white + red + yellow + + + + yellow + + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + Sender.ior + + + + + + + MessageConnection + + read_message + false + SimplexReceptacle + + + + push_message + true + Facet + + + + + + EventConnection + + click_out + false + EventPublisher + + + + click_in + true + EventConsumer + + + + + + + Hello_Receiver_exec + + + Hello_Receiver_exec + + + Hello_Receiver_svnt + + + Hello_Receiver_svnt + + + + Hello_Sender_exec + + + Hello_Sender_exec + + + Hello_Sender_svnt + + + Hello_Sender_svnt + + + diff --git a/modules/CIAO/examples/Hello/descriptors/Domain.cdd b/modules/CIAO/examples/Hello/descriptors/Domain.cdd new file mode 100644 index 00000000000..882b29724cd --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/Domain.cdd @@ -0,0 +1,17 @@ + + + +effd4bd0-6db0-4c50-9bb7-db9decebae1c + + Sender + + + + Receiver + + + diff --git a/modules/CIAO/examples/Hello/descriptors/Hello.pcd b/modules/CIAO/examples/Hello/descriptors/Hello.pcd new file mode 100644 index 00000000000..a0f5051444a --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/Hello.pcd @@ -0,0 +1,10 @@ + + + + 559d65e8-0407-48c0-a158-dafe21360fef + + diff --git a/modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat b/modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat new file mode 100644 index 00000000000..fb390806728 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat @@ -0,0 +1,4 @@ +SenderNode corbaloc:iiop:localhost:60001/Sender.NodeManager + + +ReceiverNode corbaloc:iiop:localhost:60002/Receiver.NodeManager \ No newline at end of file diff --git a/modules/CIAO/examples/Hello/descriptors/package.tpd b/modules/CIAO/examples/Hello/descriptors/package.tpd new file mode 100644 index 00000000000..d447a2abb4a --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/package.tpd @@ -0,0 +1,8 @@ + + + + diff --git a/modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl b/modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl new file mode 100755 index 00000000000..56d054f294a --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl @@ -0,0 +1,42 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$iorbase1 = "NodeApp1.ior"; +$iorfile1 = $tg->LocalFile ($iorbase1); +$iorbase2 = "NodeApp2.ior"; +$iorfile2 = $tg->LocalFile ($iorbase2); + +#for ($iter = 0; $iter <= $#ARGV; $iter++) { +# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") { +# print "Run_Test Perl script for NodeApplicationTest \n\n"; +# print "run_test \n"; +# print "\n"; +# print "-h -- prints this information\n"; +# exit 0; +# } +#} + +$iorfile1 = $tg->DeleteFile ($iorbase1); +$iorfile2 = $tg->DeleteFile ($iorbase2); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$SV1 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:10001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:20001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication"); + +$SV1->Spawn (); +$SV2->Spawn (); + +sleep (99999999999); diff --git a/modules/CIAO/examples/Hello/descriptors/run_test.pl b/modules/CIAO/examples/Hello/descriptors/run_test.pl new file mode 100755 index 00000000000..be24cb081f9 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/run_test.pl @@ -0,0 +1,238 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "Sender", "Receiver" ); + +$status = 0; +$dat_file = "NodeManagerMap.dat"; +$cdp_file = "DeploymentPlan.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); + $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --instance-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --node-map $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/examples/Hello/descriptors/run_test_alias.pl b/modules/CIAO/examples/Hello/descriptors/run_test_alias.pl new file mode 100755 index 00000000000..99ba23c1068 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/run_test_alias.pl @@ -0,0 +1,238 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$daemons = 1; +@ports = ( 60001 ); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "Alias" ); + +$status = 0; +$dat_file = "Aliased_Map.dat"; +$cdp_file = "DeploymentPlan.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); + $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --instance-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --node-map $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $$daemons; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl b/modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl new file mode 100755 index 00000000000..5c8c934a169 --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl @@ -0,0 +1,198 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; + +$daemons = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "Sender", "Receiver" ); + +$status = 0; +$dat_file = "NodeManagerMap.dat"; +$cdp_file = "DeploymentPlan_without_ns.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # daemon + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } +} + + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --node-map $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $$daemons; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/examples/Hello/descriptors/svc_em.conf b/modules/CIAO/examples/Hello/descriptors/svc_em.conf new file mode 100644 index 00000000000..2aa568bf9af --- /dev/null +++ b/modules/CIAO/examples/Hello/descriptors/svc_em.conf @@ -0,0 +1,9 @@ +# $Id$ +# +# Please see $TAO_ROOT/docs/Options.html for details on these options. +# + +static Advanced_Resource_Factory "-ORBReactorType select_st -ORBInputCDRAllocator null -ORBConnectionCacheLock null -ORBFlushingStrategy blocking" +static Client_Strategy_Factory "-ORBProfileLock null -ORBClientConnectionHandler RW" +static Server_Strategy_Factory "-ORBConcurrency thread-per-connection -ORBPOALock thread -ORBAllowReactivationOfSystemids 0" + diff --git a/modules/CIAO/examples/Hello/step-by-step.html b/modules/CIAO/examples/Hello/step-by-step.html new file mode 100644 index 00000000000..e40fb3fbee3 --- /dev/null +++ b/modules/CIAO/examples/Hello/step-by-step.html @@ -0,0 +1,234 @@ + + + + + Step-By-Step of How to build a CIAO application + + + + +
    +

    Simple CIAO tutorial

    +Note: +
      +
    • CoSMIC tools are not used in this tutorial.
    • +
    • This is only a GENERAL way of building up a CIAO application and deploying it with DAnCE. The user could always change the process in his own way. For example: the IDL file content, the project structure etc.
    • +
    • To download the code of this example please refer to the SVN repository at $CIAO_ROOT/examples/Hello.
    • +
    +
    + +

    Example Description

    +This Hello example is contructed in the following ways: +
      +
    • 1. There are 2 components in the system: Sender and Receiver
    • +
    • 2. The Sender will send out the timeout event to the Receiver.
    • +
    • 3. Upon receiving the timeout event, the Receiver will go and fetch data from the Sender.
    • +
    • 4. The user could deploy multiple instances of the Receiver without changing any C++/idl source code.
    • +
    +
    + +

    Step-By-Step

    +

    Hello_Base

    + +
      +
    1. Write an IDL file (Hello_Base.idl) which contains all + the interfaces and events common to all the components. The reason + we do this is because the generated lib of this idl file will be + linked in by all the components in the system. To reduce the size + of the component lib we have to include only the necesary part. In + this example, we have an eventtype timeout and an + interface ReadMessage, which are used by both the + Sender and the Receiver, so we put both of them in Hello_Base.idl.
    2. +

      + +

    3. Look at the Hello_Base.mpc file to get an idea how the Hello_Base_stub + and Hello_Base_svnt projects are organized. + MPC is a utility we used to generate makefiles or VC + project/solution files for all ACE, + TAO and CIAO + libraries.
    4. +
    + +
    + +

    For Every Components

    + +
      +
    1. Execute :
      +
        +$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Sender in Sender directory
        +$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Receiver in Receiver directory
        +
      +Note: +
        +
      • I have different directories for "Hello_Base", "Sender", "Receiver" respectively.
      • + +
      • For every _stub project, add:
        + "libs += Hello_Base_DnC_stub"
        + +
      +The output of this scripts includes an MPC file and 3 export header files +(..._svnt_export.h, ..._exec_export.h and ..._stub_export.h). +

      + +

    2. Write an idl file for every component (Sender.idl and + Receiver.idl).
      Here you can put the + component specific IDL definitions in this file. In this example we have a interface trigger + specific to the Sender. Please note that the Sender component + "supports" (IDL keyword) this interface.
    3. + +

    4. Write the CIDL file for every component (Sender.cidl and + Receiver.cidl). +
    5. + +

    6. Compile these cidl files, using $CIAO_ROOT/bin/cidlc.exe Receiver.cidl --gen-exec-impl -I$CIAO_ROOT/ccm -I$CIAO_ROOT -I$TAO_ROOT. + This'll result in ..._exec.cpp/..._exec.h and ..._svnt.cpp/..._svnt.h files. +
    7. + +

    8. Write _exec.h and _exec.cpp files which actually implement the component.
    9. +

      +

    + +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.

    + +


    + +

    The Entry Point

    + +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 starter. The +starter will make a invocation on a supported interface +called trigger on the Sender component to get the whole +distributed application started. The starter will first +obtain the Sender component object reference through the ior string +supplied as a command argument. Please see the the last part of +Hello/Sender/Sender.mpc file for details.

    + +


    + +

    Make

    + +
      +
    • Go to the directory $CIAO_ROOT/DAnCE and do:
      + $ACE_ROOT/bin/mwc.pl
    • +
      For example, using $ACE_ROOT/bin/mwc.pl -type vc71 if you are using Visual C++ 7.1 IDE +
      or $ACE_ROOT/bin/mwc.pl -type gnuace on Linux platforms.

      +

    • Look at the generated Makefile(*unx) or Solution/workspace files(Windows) and you got it.
    • +
    +After building DAnCE, a solution or makefile should be generated for this CIAO example. +Navigate to $CIAO_ROOT/examples/Hello and execute $ACE_ROOT/bin/mwc.pl -type vc71 for +Visual C++ 7.1 or $ACE_ROOT/bin/mwc.pl -type gnuace on Linux platforms. +Build this example using Visual Studio or make. +


    + +

    Assemble

    + +Now we can step forward to build the assembly. Here we are going to +build the simplest case only, which is 1 Receiver and 1 Sender. If you +are interested in CIAO you could try 1 Sender with multiple +Receivers. However, you need to change the Sender.idl to make it +publishes timeout event instead of emits event.
    +Note: Creating the deployment plan descriptor is a tedious and + error-prone job, you can download CoSMIC to assist + you in this step.

    + +

    + +
    +

    Deploy with DAnCE

    +Finally you are ready to deploy the component-based application you have developed. +

    + +
      +
    • If you wish to register one or more of your component + instances with CORBA naming service, then please start your naming service + first with multicast mode first ("-m 1" option). Use -o to define where + the output ior should be saved.

      + +

    • Go into the descriptors directory Start NodeManagers + (NodeDameon) by running run_NodeDaemons.pl

      + +

    • There are two ways to start the execution manager : +
        +
      1. Using the naming service to locate the node deamons
        + Navigate to $CIAO_ROOT/examples/Hello/descriptor and execute + $DANCE_ROOT/bin/dance_execution_manager -eEM.ior --domain-nc file://ns.ior
        + --domain-nc should point to the ior file of the naming service. +
      2. + +
      3. Without using the naming service.
        + Navigate to $CIAO_ROOT/examples/Hello/descriptor and execute:
        + $DANCE_ROOT/bin/dance_execution_manager -eEM.ior --node-map NodeManagerMap.dat
        + NOTE: As one can see, we use the "NodeManagerMap.dat" file to instruct the + Execution_Manager how to find the endpoint of each individual NodeManager (i.e., Node Daemon) where + component(s) will be deployed. This is non-standard. +
      4. +
      +
    • +

    + +

  • Start the plan launcher, with or without using the Naming Service:
    +
      +
    1. Using the naming service
      + Navigate to $CIAO_ROOT/examples/Hello/descriptors_naming and execute:
      + $DANCE_ROOT/bin/dance_plan_launcher -d deploymentplan_naming.cdp -k file://../descriptors/EM.ior +
    2. +
    3. Without using the naming service
      + Navigate to $CIAO_ROOT/examples/Hello/descriptors and execute:
      + $DANCE_ROOT/bin/dance_plan_launcher -x deploymentplan.cdp -k file://EM.ior

      +

    4. + After this, components should be deployed successfully.

      +

    +
  • + +
  • You can go into the $CIAO_ROOT/examples/Hello/descriptor directory and + run execute $CIAO_ROOT/examples/Hello/Sender/starter -k file://Sender.ior to start the application. Please make sure that the component IOR + file for the Sender component (Sender.ior) is present when you run this client.

    +

  • +
  • To stop deployment just run $DANCE_ROOT/bin/dance_plan_launcher -x DeploymentPlan.cdp -k file://EM.ior -q +
  • + +
    +
    +In addition, have a look at run_test.pl and see how this can be established. + +
    +

    More Features

    +Recently DAnCE is enabled with a feature called Redeployment and Reconfiguration (ReDaC). For more information +about how to use this feature, please refer to the ReDaC-Usage-Example.html under $CIAO_ROOT/examples/Hello/. +

    + +
    +Email: ciao-users@cse.wustl.edu + + + diff --git a/modules/CIAO/examples/Null_Component/Null_Component.idl b/modules/CIAO/examples/Null_Component/Null_Component.idl new file mode 100644 index 00000000000..78bc73becb3 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/Null_Component.idl @@ -0,0 +1,39 @@ +/** + * @file Null_Component.idl + * + * @author Abdul Sowayan + * + * $Id$ + */ + +#ifndef NULL_COMPONENT_IDL +#define NULL_COMPONENT_IDL + +#include +#include "Null_Interface.idl" +#include "Null_InterfaceE.idl" + + +/** + * @class Null_Component + * + * This component is intentionally left blank. Its purpose + * is to measure the footprint of a component in CIAO. + */ +component Null_Component +{ + provides Null_Interface null_facet; +}; + +/** + * @class Null_Component_Home + * + * @brief home for Null_Component + */ +home Null_ComponentHome manages Null_Component +{ +}; + +#endif /* NULL_COMPONENT_IDL */ + + diff --git a/modules/CIAO/examples/Null_Component/Null_Component.mpc b/modules/CIAO/examples/Null_Component/Null_Component.mpc new file mode 100644 index 00000000000..514f30a5c7f --- /dev/null +++ b/modules/CIAO/examples/Null_Component/Null_Component.mpc @@ -0,0 +1,114 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Null_Interface Null_Component" + +project(Null_Component_idl_gen) : componentidldefaults { + after += Null_Interface_lem_gen + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=NULL_COMPONENT_STUB_Export \ + -Wb,stub_export_include=Null_Component_stub_export.h \ + -Wb,skel_export_macro=NULL_COMPONENT_SVNT_Export \ + -Wb,skel_export_include=Null_Component_svnt_export.h \ + -Wb,exec_export_macro=NULL_COMPONENT_EXEC_Export \ + -Wb,exec_export_include=Null_Component_exec_export.h \ + -Wb,svnt_export_macro=NULL_COMPONENT_SVNT_Export \ + -Wb,svnt_export_include=Null_Component_svnt_export.h + + IDL_Files { + Null_Component.idl + } +} + +project(Null_Component_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Null_Component_idl_gen + idlflags += -Wb,export_macro=NULL_COMPONENT_EXEC_Export \ + -Wb,export_include=Null_Component_exec_export.h \ + -SS + + IDL_Files { + Null_ComponentE.idl + } +} + +project(Null_Component_stub) : ccm_stub { + after += Null_Component_idl_gen Null_Interface_stub + libs += Null_Interface_stub + + sharedname = Null_Component_stub + dynamicflags = NULL_COMPONENT_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Null_ComponentC.cpp + } + + Header_Files { + Null_ComponentC.h + Null_Component_stub_export.h + } + + Inline_Files { + Null_ComponentC.inl + } +} + +project(Null_Component_exec) : ciao_executor { + after += Null_Component_lem_gen Null_Component_stub + sharedname = Null_Component_exec + libs += Null_Component_stub Null_Interface_stub + + dynamicflags = NULL_COMPONENT_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Null_ComponentEC.cpp + Null_Component_exec.cpp + } + + Header_Files { + Null_ComponentEC.h + Null_Component_exec.h + Null_Component_exec_export.h + } + + Inline_Files { + Null_ComponentEC.inl + } +} + + +project(Null_Component_svnt) : ciao_servant { + after += Null_Interface_skel Null_Component_exec + sharedname = Null_Component_svnt + libs += Null_Component_exec \ + Null_Component_stub \ + Null_Interface_skel \ + Null_Interface_stub + + dynamicflags = NULL_COMPONENT_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Null_ComponentS.cpp + Null_Component_svnt.cpp + } + + Header_Files { + Null_ComponentS.h + Null_Component_svnt.h + Null_Component_svnt_export.h + } + + Inline_Files { + Null_ComponentS.inl + } +} + + diff --git a/modules/CIAO/examples/Null_Component/Null_Component_exec.cpp b/modules/CIAO/examples/Null_Component/Null_Component_exec.cpp new file mode 100644 index 00000000000..d9eff1f8476 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/Null_Component_exec.cpp @@ -0,0 +1,155 @@ +// $Id$ + +#include "Null_Component_exec.h" + +namespace CIAO_Null_Component_Impl +{ + //================================================================== + // Facet Executor Implementation Class: Null_Interface_exec_i + //================================================================== + + Null_Interface_exec_i::Null_Interface_exec_i (void) + { + } + + Null_Interface_exec_i::~Null_Interface_exec_i (void) + { + } + + // Operations from ::Null_Interface + + void + Null_Interface_exec_i::null_operation () + { + // Your code here. + } + + //================================================================== + // Component Executor Implementation Class: Null_Component_exec_i + //================================================================== + + Null_Component_exec_i::Null_Component_exec_i (void) + { + } + + Null_Component_exec_i::~Null_Component_exec_i (void) + { + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + ::CCM_Null_Interface_ptr + Null_Component_exec_i::get_null_facet () + { + // Your code here. + return ::CCM_Null_Interface::_nil (); + } + + // Operations from Components::SessionComponent + + void + Null_Component_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Null_Component_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Null_Component_exec_i::configuration_complete () + { + // Your code here. + } + + void + Null_Component_exec_i::ccm_activate () + { + // Your code here. + } + + void + Null_Component_exec_i::ccm_passivate () + { + // Your code here. + } + + void + Null_Component_exec_i::ccm_remove () + { + // Your code here. + } + + extern "C" NULL_COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Null_Component_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + Null_Component_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + + //================================================================== + // Home Executor Implementation Class: Null_ComponentHome_exec_i + //================================================================== + + Null_ComponentHome_exec_i::Null_ComponentHome_exec_i (void) + { + } + + Null_ComponentHome_exec_i::~Null_ComponentHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + Null_ComponentHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Null_Component_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" NULL_COMPONENT_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Null_ComponentHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + Null_ComponentHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/examples/Null_Component/Null_Component_exec.h b/modules/CIAO/examples/Null_Component/Null_Component_exec.h new file mode 100644 index 00000000000..277e7b28e69 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/Null_Component_exec.h @@ -0,0 +1,100 @@ +// $Id$ + +#ifndef CIAO_NULL_COMPONENT_EXEC_H +#define CIAO_NULL_COMPONENT_EXEC_H + +#include /**/ "ace/pre.h" + +#include "Null_ComponentEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Null_Component_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Null_Component_Impl +{ + class NULL_COMPONENT_EXEC_Export Null_Interface_exec_i + : public virtual ::CCM_Null_Interface, + public virtual ::CORBA::LocalObject + { + public: + Null_Interface_exec_i (void); + virtual ~Null_Interface_exec_i (void); + + // Operations from ::Null_Interface + + virtual void + null_operation (); + }; + + class NULL_COMPONENT_EXEC_Export Null_Component_exec_i + : public virtual Null_Component_Exec, + public virtual ::CORBA::LocalObject + { + public: + Null_Component_exec_i (void); + virtual ~Null_Component_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + virtual ::CCM_Null_Interface_ptr + get_null_facet (); + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::CCM_Null_Component_Context_var context_; + }; + + extern "C" NULL_COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Null_Component_Impl (void); + + class NULL_COMPONENT_EXEC_Export Null_ComponentHome_exec_i + : public virtual Null_ComponentHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + Null_ComponentHome_exec_i (void); + virtual ~Null_ComponentHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" NULL_COMPONENT_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Null_ComponentHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_NULL_COMPONENT_EXEC_H */ + diff --git a/modules/CIAO/examples/Null_Component/Null_Interface.idl b/modules/CIAO/examples/Null_Component/Null_Interface.idl new file mode 100644 index 00000000000..ed841b2a921 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/Null_Interface.idl @@ -0,0 +1,22 @@ +/** + * @file Null_Interface.idl + * + * @author Abdul Sowayan + * + * $Id$ + */ + +#ifndef NULL_INTERFACE_IDL +#define NULL_INTERFACE_IDL + +/** + * @interface Null_Interface + * + * @brief + */ +interface Null_Interface +{ + void null_operation(); +}; + +#endif /* NULL_INTERFACE_IDL */ diff --git a/modules/CIAO/examples/Null_Component/Null_Interface.mpc b/modules/CIAO/examples/Null_Component/Null_Interface.mpc new file mode 100644 index 00000000000..f9c74d79e19 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/Null_Interface.mpc @@ -0,0 +1,78 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Null_Interface" + +project(Null_Interface_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=NULL_INTERFACE_STUB_Export \ + -Wb,stub_export_include=Null_Interface_stub_export.h \ + -Wb,skel_export_macro=NULL_INTERFACE_SKEL_Export \ + -Wb,skel_export_include=Null_Interface_skel_export.h + + IDL_Files { + Null_Interface.idl + } +} + +project(Null_Interface_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Null_Interface_idl_gen + idlflags += -Wb,stub_export_macro=NULL_INTERFACE_STUB_Export \ + -Wb,stub_export_include=Null_Interface_stub_export.h \ + + IDL_Files { + Null_InterfaceE.idl + } +} + +project(Null_Interface_stub) : ccm_stub { + after += Null_Interface_lem_gen + libs += + + sharedname = Null_Interface_stub + dynamicflags = NULL_INTERFACE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Null_InterfaceC.cpp + Null_InterfaceEC.cpp + } + + Header_Files { + Null_InterfaceC.h + Null_Interface_stub_export.h + } + + Inline_Files { + Null_InterfaceC.inl + } +} + + +project(Null_Interface_skel) : ciao_executor { + after += Null_Interface_stub + sharedname = Null_Interface_skel + libs += Null_Interface_stub + + + dynamicflags = NULL_INTERFACE_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Null_InterfaceS.cpp + } + + Header_Files { + Null_InterfaceS.h + Null_Interface_skel_export.h + } + + Inline_Files { + Null_InterfaceS.inl + } +} + + diff --git a/modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp new file mode 100644 index 00000000000..817119e4cc7 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp @@ -0,0 +1,101 @@ +// $Id$ + +#include "plan.h" + +#include "NodeManager/NodeManager_Impl.h" + +#include "tao/IORTable/IORTable.h" + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + // Initialize the ORB so that CORBA::Any will work. + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + try + { + // Get reference to Root POA. + CORBA::Object_var obj = + orb->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var poa = + PortableServer::POA::_narrow (obj.in ()); + + // Activate POA manager. + PortableServer::POAManager_var mgr = poa->the_POAManager (); + + mgr->activate (); + + int homes_table_size = + sizeof (homes_table) / sizeof (HomeAttributes); + + CIAO::HOMECREATOR_FUNCPTR_MAP home_creator_fptr_map; + CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP homesvnt_creator_fptr_map; + CIAO::Static_Config_EntryPoints_Maps static_config_entrypoints_maps; + + static_config_entrypoints_maps.home_creator_funcptr_map_ = + &home_creator_fptr_map; + + static_config_entrypoints_maps.home_servant_creator_funcptr_map_ = + &homesvnt_creator_fptr_map; + + for (int i = 0; i < homes_table_size; ++i) + { + home_creator_fptr_map.bind (homes_table[i].executor_entrypt_, + homes_table[i].executor_fptr_); + + homesvnt_creator_fptr_map.bind (homes_table[i].servant_entrypt_, + homes_table[i].servant_fptr_); + } + + CIAO::Static_NodeManager_Impl *static_node_manager_impl; + + // Create and install the CIAO Daemon servant. + + ACE_DEBUG ((LM_DEBUG, "creating static_node_manager\n")); + + static_node_manager_impl = + new CIAO::Static_NodeManager_Impl ("NodeManager", + orb.in (), + poa.in (), + "", //exe location + "", //exe options + 0, //spawn delay + &static_config_entrypoints_maps); + + static_node_manager_impl->init (); + + CORBA::Object_var table_object = + orb->resolve_initial_references ("IORTable"); + + IORTable::Table_var adapter = + IORTable::Table::_narrow (table_object.in ()); + + if (CORBA::is_nil (adapter.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, "Nil IORTable\n"), -1); + } + + CIAO::NodeManagerDaemon_var manager = + static_node_manager_impl->_this (); + + CORBA::String_var str = + orb->object_to_string (manager.in ()); + + adapter->bind ("NodeManager", str.in ()); + + // Run the main event loop for the ORB. + orb->run (); + + poa->destroy (true, true); + + orb->destroy (); + } + catch (CORBA::Exception& ex) + { + ex._tao_print_exception ("Caught CORBA Exception: "); + return -1; + } + + return 0; +} diff --git a/modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc new file mode 100644 index 00000000000..5c256aef47a --- /dev/null +++ b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc @@ -0,0 +1,28 @@ +// -*- MPC -*- +// $Id$ + +project(Null_Component_StaticDAnCEApp): iortable, ciaoidldefaults { + after += Null_Component_svnt + exename = StaticDAnCEApp + requires += dummy_label + libs += Null_Interface_stub + libs += Null_Interface_skel + libs += Null_Component_stub + libs += Null_Component_svnt + libs += Null_Component_exec + + IDL_Files { + } + + Source_Files { + StaticDAnCEApp.cpp + } + + Header_Files { + plan.h + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat b/modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat new file mode 100644 index 00000000000..51d8967c561 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat @@ -0,0 +1 @@ +NodeOne corbaloc:iiop:localhost:10000/NodeManager \ No newline at end of file diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Homed.cdp b/modules/CIAO/examples/Null_Component/descriptors/Null_Homed.cdp new file mode 100644 index 00000000000..2332e2d346e --- /dev/null +++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Homed.cdp @@ -0,0 +1,109 @@ + + + Null_Homed + + Null_ComponentHomeImplementation + + + + + + home factory + + + tk_string + + + create_Null_ComponentHome_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Null_ComponentHome_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Null_Component_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Null_Component_exec + + + + + + Null_ComponentComponentImplementation + + + + + + + Null_ComponentHome + NodeOne + + + + + + Null_ComponentComponent + NodeOne + + + + + edu.vanderbilt.dre.DAnCE.ExplicitHome + + + tk_string + + + Null_ComponentHome + + + + + + Null_Component_exec + + + Null_Component_exec + + + Null_Component_svnt + + + Null_Component_svnt + + + Null_Component_stub + + + Null_Component_stub + + \ No newline at end of file diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Unhomed.cdp b/modules/CIAO/examples/Null_Component/descriptors/Null_Unhomed.cdp new file mode 100644 index 00000000000..c259d000b9e --- /dev/null +++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Unhomed.cdp @@ -0,0 +1,85 @@ + + + Null_Homed + + + Null_ComponentComponentImplementation + + + + + + component factory + + + tk_string + + + create_Null_Component_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Null_Component_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + Null_Component_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + Null_Component_exec + + + + + + Null_ComponentComponent + NodeOne + + + + + + Null_Component_exec + + + Null_Component_exec + + + Null_Component_svnt + + + Null_Component_svnt + + + Null_Component_stub + + + Null_Component_stub + + \ No newline at end of file diff --git a/modules/CIAO/examples/Null_Component/descriptors/run_test.pl b/modules/CIAO/examples/Null_Component/descriptors/run_test.pl new file mode 100755 index 00000000000..944dff4a533 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/descriptors/run_test.pl @@ -0,0 +1,219 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "NodeOne" ); + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('..'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('..'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('..'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('..'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService --instance-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +if ($#ARGV == -1) { + opendir(DIR, "."); + @files = grep(/\.cdp$/,readdir(DIR)); + closedir(DIR); +} +else { + @files = @ARGV; +} + +create_targets (); +init_ior_files (); + +foreach $file (@files) { + print "Starting test for deployment $file\n"; + + print STDERR "Starting Naming Service\n"; + + $NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + $NS->Spawn (); + + if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; + } + + $ns_running = 1; + # Set up NamingService environment + $ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + + # Invoke node daemon. + print "Invoking node daemon\n"; + $status = run_node_daemons (); + + if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; + } + + $daemons_running = 1; + + # Invoke execution manager. + print "Invoking execution manager\n"; + $EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); + $EM->Spawn (); + + if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; + } + + $em_running = 1; + + # Invoke executor - start the application -. + print "Invoking executor - launch the application -\n"; + + print "Start dance_plan_launcher.exe with -x $file -k file://$ior_emfile\n"; + $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $file -k file://$ior_emfile"); + $E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + + # Invoke executor - stop the application -. + print "Invoking executor - stop the application -\n"; + $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $file -q"); + $E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + + print "Executor returned.\n"; + + delete_ior_files (); + kill_open_processes (); +} + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/examples/Null_Component/model/Null_Component.xme b/modules/CIAO/examples/Null_Component/model/Null_Component.xme new file mode 100644 index 00000000000..bf6cc873282 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/model/Null_Component.xme @@ -0,0 +1,882 @@ + + + + + Null_Component + + + + Null_Component + + InterfaceDefinitions + + Null_Interface + + + + + + + + Null_Interface + + + + + + 518,318 + + + + + + + + + + + + + + false + + + false + + + null_operation + + + + + + 518,318 + + + + + + + + + + + + + + Null_Component + + + + + + + + Null_Component + + + + + + 518,318 + + + + + + + + 1E762719-4310-41B5-ADC0-084D15E4DA91 + + + + + + + + + null_facet + + + + + + 518,318 + + + + + + + + + + + false + + + false + + + false + + + + + Null_Component_Home + + + + + + 793,493 + + + + + + + + + + + + FileRef + + + + + + 243,143 + + + + + + ManagesComponent + + Ws + + + + + + + + PredefinedTypes + + TypeKind + + + TypeEncoding + + + String + + + Boolean + + + ShortInteger + + + RealNumber + + + LongInteger + + + GenericValueObject + + + GenericValue + + + GenericObject + + + Byte + + + + ComponentImplementations + + Null_ComponentImplementation + + ComponentIOR + + + + + + 282,168 + + + + + Null_Component.ior + + + String + + + + + + 518,318 + + + + + + + Null_ComponentMonolithicImpl + + + + + + 125,68 + + + + + DB0165FE-599E-485B-844E-E8D4C1FA3951 + + + 0.0.0.0 + + + + + + + Null_ComponentRef + + + + + + 910,568 + + + + + + Null_Component_stubRef + + + + + + 439,268 + + + + + + Null_Component_svntRef + + + + + + 596,368 + + + + + + Null_Component_execRef + + + + + + 753,468 + + + + + + ConfigProperty + + + + + MonolithprimaryArtifact + + + + + MonolithprimaryArtifact + + + + + MonolithprimaryArtifact + + + + + Implements + + + + + + Null_Assembly_Container + + Null_Assembly + + + + + + 212,114 + + + + + + 212,114 + + + + + AB4E18C0-187E-4FEF-95FE-462E199411E5 + + + + + + Null_Component + + + + + + 342,130 + + + + + + + + 6B477FA1-2C04-423B-9580-A2997DEA6ADD + + + + + + + + + null_facet + + + + + + + + false + + + false + + + false + + + + + + + + ImplementationArtifacts + + Null_ComponentArtifacts + + entryPoint + + + + + + 334,200 + + + + + create_Null_ComponentHome_Servant + + + String + + + + + + 518,318 + + + + + + + entryPoint + + + + + + 700,432 + + + + + create_Null_ComponentHome_Impl + + + String + + + + + + 518,318 + + + + + + + Null_Component_stub + + + + + + 151,84 + + + + + F8CECE24-F3D4-4162-9A28-1CC7FA48C01B + + + x86 + + + 0.0.0.0 + + + Release + + + + + + Null_Component_stub + + + Linux + + + + Null_Component_svnt + + + + + + 517,316 + + + + + 6DCFFB72-08DB-4546-B206-13B6AC2DB251 + + + x86 + + + 0.0.0.0 + + + Release + + + + + + Null_Component_svnt + + + Linux + + + + Null_Component_exec + + + + + + 883,548 + + + + + 7D050E10-E0DC-4A7A-810D-E847ED9ACC04 + + + x86 + + + 0.0.0.0 + + + Release + + + + + + Null_Component_exec + + + Linux + + + + ArtifactExecParameter + + + + + ArtifactDependency + + + + + ArtifactExecParameter + + + + + ArtifactDependency + + + + + ArtifactDependency + + + + + + + ComponentTypes + + Null_ComponentContainer + + Null_ComponentRef + + + + + + 518,318 + + + + + + + + PackageConfigurations + + Default + + PackageConfiguration + + + + + + 373,149 + + + + + 168FF6BD-40CF-4A06-A380-66266A32F168 + + + + + + + Null_Assembly_Package + + + + + + 573,146 + + + + + + + + + + + + + + + PackageConfReference + + Ew + + + + + + + + ComponentPackages + + Null_Component_Package + + Null_Component_Package + + + + + + 366,163 + + + + + FDCE9BA7-20C4-44B0-B1FB-10CC18EC1DB2 + + + + + + + Null_ComponentMonolithicImpl + + + + + + 130,158 + + + + + + Null_Component + + + + + + 545,137 + + + + + + Implementation + + We + + + + + + PackageInterface + + Ew + + + + + + + Null_Assembly_Package + + Null_Assembly_Package + + + + + + 282,135 + + + + + 051F0532-FC77-4867-8B97-58A8B1AC2692 + + + + + + + Null_Assembly + + + + + + 502,110 + + + + + + Implementation + + Ew + + + + + + + + DeploymentPlans + + Plan + + FD6E278D-20AC-4FFD-B359-382963C5D9A1 + + + + + + Null_Component + + + + + + 475,102 + + + + + + NodeA + + + + + + 305,123 + + + + + + InstanceMapping + + w + + + + + + CollocationGroup + + + + + + 114,128 + + + + + + + + Targets + + Domain + + E6198ADF-7421-46D8-9C4F-F70273837DAF + + + + + + NodeA + + + + + + 198,170 + + + + + + + + + + + TopLevelPackages + + Default + + TopLevelPackage + + + + + + 240,184 + + + + + + PackageConfiguration + + + + + + 517,181 + + + + + + package + + w + + + + + + + + ComponentBuild + + + diff --git a/modules/CIAO/examples/Null_Component/plan.h b/modules/CIAO/examples/Null_Component/plan.h new file mode 100644 index 00000000000..b6c5ada9ff2 --- /dev/null +++ b/modules/CIAO/examples/Null_Component/plan.h @@ -0,0 +1,37 @@ +// $Id$ + +#include "Session_Container.h" + +extern "C" +::Components::HomeExecutorBase_ptr create_Null_ComponentHome_Impl (void); + +extern "C" +::PortableServer::Servant create_Null_ComponentHome_Servant ( + ::Components::HomeExecutorBase_ptr p, + ::CIAO::Session_Container *c, + const char*); + +struct HomeAttributes +{ + char const * component_instance_name_; + /// Specify the entrypoint to component executor DLL. + char const * executor_entrypt_; + ::CIAO::HomeFactory executor_fptr_; + /// Specify the entrypoint to component servant DLL. + char const * servant_entrypt_; + ::CIAO::ServantFactory servant_fptr_; +}; + +/// Homes +HomeAttributes homes_table[] = +{ + { + "Null_Component.ComponentImplementations.Null_Assembly_Container." + "Null_Assembly.Null_Component", + "create_Null_ComponentHome_Impl", + create_Null_ComponentHome_Impl, + "create_Null_ComponentHome_Servant", + create_Null_ComponentHome_Servant + } +}; + diff --git a/modules/CIAO/examples/Philosophers/Philosophers.idl b/modules/CIAO/examples/Philosophers/Philosophers.idl new file mode 100644 index 00000000000..7a29bc03c23 --- /dev/null +++ b/modules/CIAO/examples/Philosophers/Philosophers.idl @@ -0,0 +1,75 @@ +// $Id$ + +// The famous Dining Philosopher example in CCM tutorial slides + +module Example +{ + exception InUse {}; + + interface Fork + /** + * Provided facet interface definition. + * It should be defined by the IDL file. + */ + { + void get () raises (InUse); + + void release (); + }; + + component ForkManager + { + provides Fork the_fork; + }; + + home ForkHome manages ForkManager + { + }; + + enum PhilosopherState + { + EATING, + THINKING, + HUNGRY, + STARVING, + DEAD + }; + + eventtype StatusInfo + { + public string name; + public PhilosopherState state; + public unsigned long ticks_since_last_meal; + public boolean has_left_fork; + public boolean has_right_fork; + }; + + component Philosopher + { + attribute string name; + + // The left fork receptacle. + uses Fork left; + + // The right fork receptacle. + uses Fork right; + + // The status info event source. + publishes StatusInfo info; + }; + + home PhilosopherHome manages Philosopher + { + factory new (in string name); + }; + + component Observer + { + // The status info sink port. + consumes StatusInfo info; + }; + + home ObserverHome manages Observer + { + }; +}; diff --git a/modules/CIAO/examples/Philosophers/README b/modules/CIAO/examples/Philosophers/README new file mode 100644 index 00000000000..96a56e61b73 --- /dev/null +++ b/modules/CIAO/examples/Philosophers/README @@ -0,0 +1 @@ +This example is unfinished. \ No newline at end of file diff --git a/modules/CIAO/performance-tests/Benchmark/Benchmark.idl b/modules/CIAO/performance-tests/Benchmark/Benchmark.idl new file mode 100644 index 00000000000..d363628c891 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Benchmark.idl @@ -0,0 +1,48 @@ +// $Id$ +//============================================================================= +/** + * @file Benchmark.idl + * + * Definition of test interfaces used in the Benchmark module. + * + * @author Diego, Arvind + */ +//============================================================================= + +#ifndef CIAO_BENCHMARK_IDL +#define CIAO_BENCHMARK_IDL + + +module Benchmark +{ + + /** + * @interface RoundTrip + * + * This Latency test provides operations to measure the round-trip + * latency of the ORB. The interface is same as that of + * $TAO_ROOT/performance-tests/Latency/Single_Threaded + */ + + /// Measure roundtrip delay + interface LatencyTest + { + /// A simple method to measure roundtrip delays + long makeCall (in long send_time); + + }; + + /** + * @interface Controller + * + * This interface is used to start the tests. + */ + interface Controller + { + /// Start the test + void start (); + }; + +}; + +#endif /*CIAO_BENCHMARK_IDL*/ diff --git a/modules/CIAO/performance-tests/Benchmark/Benchmark.mpc b/modules/CIAO/performance-tests/Benchmark/Benchmark.mpc new file mode 100644 index 00000000000..cdaa1adf905 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Benchmark.mpc @@ -0,0 +1,98 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n -c server Benchmark" + +project(Benchmark_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=BENCHMARK_STUB_Export \ + -Wb,stub_export_include=Benchmark_stub_export.h \ + -Wb,skel_export_macro=BENCHMARK_SKEL_Export \ + -Wb,skel_export_include=Benchmark_skel_export.h + + IDL_Files { + Benchmark.idl + } +} + +project(Benchmark_lem_gen) : ciaoidldefaults, anytypecode { + after += Benchmark_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=BENCHMARK_STUB_Export \ + -Wb,stub_export_include=Benchmark_stub_export.h -SS + + IDL_Files { + BenchmarkE.idl + } +} + +project(Benchmark_stub) : ccm_stub { + after += Benchmark_lem_gen + libs += + + sharedname = Benchmark_stub + dynamicflags = BENCHMARK_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BenchmarkEC.cpp + BenchmarkC.cpp + } + + Header_Files { + BenchmarkC.h + Benchmark_stub_export.h + } + + Inline_Files { + BenchmarkC.inl + } +} + + +project(Benchmark_skel) : ciao_executor { + after += Benchmark_stub + sharedname = Benchmark_skel + libs += Benchmark_stub + + + dynamicflags = BENCHMARK_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BenchmarkS.cpp + } + + Header_Files { + BenchmarkS.h + Benchmark_skel_export.h + } + + Inline_Files { + BenchmarkS.inl + } +} + +project (Benchmark_server) : taoserver, strategies, ciao_executor { + exename = server + after += Benchmark_skel + libs += Benchmark_skel Benchmark_stub Benchmark_stub + + IDL_Files { + } + + Source_Files { + server.cpp + LatencyTest.cpp + } + + Header_Files { + LatencyTest.h + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp b/modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp new file mode 100644 index 00000000000..2de09618b8f --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp @@ -0,0 +1,22 @@ +// +// $Id$ +// +#include "LatencyTest.h" + +LatencyTest::LatencyTest (CORBA::ORB_ptr orb) + : orb_ (CORBA::ORB::_duplicate (orb)) +{ +} + + +CORBA::Long +LatencyTest::makeCall (CORBA::Long send_time) +{ + return send_time; +} + +void +LatencyTest::shutdown () +{ + this->orb_->shutdown (0); +} diff --git a/modules/CIAO/performance-tests/Benchmark/LatencyTest.h b/modules/CIAO/performance-tests/Benchmark/LatencyTest.h new file mode 100644 index 00000000000..bafda6e76c0 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/LatencyTest.h @@ -0,0 +1,31 @@ +// +// $Id$ +// + +#ifndef LATENCYTEST_H +#define LATENCYTEST_H +#include /**/ "ace/pre.h" + +#include "BenchmarkS.h" + +/// Implement the Test::LatencyTest interface +class LatencyTest +: public virtual POA_Benchmark::LatencyTest +{ + public: + /// Constructor + LatencyTest (CORBA::ORB_ptr orb); + + // = The skeleton methods + virtual CORBA::Long makeCall (CORBA::Long send_time); + + virtual void shutdown (); + + private: + /// Use an ORB reference to conver strings to objects and shutdown + /// the application. + CORBA::ORB_var orb_; +}; + +#include /**/ "ace/post.h" +#endif /* LATENCYTEST_H */ diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp new file mode 100644 index 00000000000..d3c971aac80 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp @@ -0,0 +1,30 @@ +// +// $Id$ +// + +#include "Client_Task.h" + +Client_Task::Client_Task (Benchmark::RoundTripClient_ptr roundtrip) + : roundtrip_(Benchmark::RoundTripClient::_duplicate(roundtrip)) +{ +} + +int +Client_Task::svc (void) +{ + //Creat the Controller + Benchmark::Controller_var controller = this->roundtrip_->provide_controller(); + + //check if controller is non nil + if (CORBA::is_nil (controller.in ())) + ACE_ERROR_RETURN ((LM_DEBUG, + "Nil Benchmark::Controller reference\n"), + 1); + + ACE_DEBUG ((LM_DEBUG, "Sending Trigger\n")); + + //send out the trigger message + controller->start(); + + return 0; +} diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h new file mode 100644 index 00000000000..e3330a76307 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h @@ -0,0 +1,29 @@ +// +// $Id$ +// + +#ifndef CLIENT_TASK_H +#define CLIENT_TASK_H +#include /**/ "ace/pre.h" + +#include "RoundTripClientC.h" +#include "ace/Task.h" + +/// Implement the Test::Client_Task interface +class Client_Task : public ACE_Task_Base +{ +public: + /// Constructor + Client_Task (Benchmark::RoundTripClient_ptr roundtrip); + + /// The service method + virtual int svc (void); + +private: + + /// The object reference used for this test + Benchmark::RoundTripClient_var roundtrip_; +}; + +#include /**/ "ace/post.h" +#endif /* CLIENT_TASK_H */ diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc new file mode 100644 index 00000000000..c5a5c09eb00 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc @@ -0,0 +1,25 @@ +// $Id$ + +project (Multi_Threaded_client) : ccm_stub, strategies { + exename = client + after += Benchmark_RoundTripClient_stub + libs += RoundTripClient_stub Benchmark_stub + libpaths += .. + includes += ../RoundTripClient + libpaths += ../RoundTripClient + + IDL_Files { + } + + Source_Files { + client.cpp + Client_Task.cpp + } + + Header_Files { + Client_Task.h + } + + Inline_Files { + } +} diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt new file mode 100644 index 00000000000..a0ae140a0ee --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt @@ -0,0 +1,15 @@ +$Id$ + +PRE Condition: +============= +This test assumes that there is an appropriate svc.conf file present in +$CIAO_ROOOT/tools/ComponentServer. Moreover, the Component Server does not +curerntly expose interfaces to configure multi-threading. Hence, this +experiment, will produce the desired results *only* when this feature has been +added in CIAO. Till then, the server will run in single-threaded mode. + +Similarly, the client also requires the svc.conf file that enables +multi-threading. This file is present in this directory. + +The svc.conf file required for this experiment can be obtained from +$TAO_ROOT/performance-tests/Latency/Thread_Pool diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README new file mode 100644 index 00000000000..0cadcfc8e51 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README @@ -0,0 +1,12 @@ +/** + +@page Multi_Threaded README File + + This black box experiment measures "multi-threading" support present in CIAO. +In this test, a client component spawns four threads that concurrently invoke operations +on the server. The latency, throughput and jitter for each thread is printed out. The +motivation of this test is to observe scalability when a ComponentServer receives +multiple requests from parallel clients. A sister test, ../Multi_Process documents +behavior as parallel clients (separate processes) invoke requests on the server. + +*/ diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp new file mode 100644 index 00000000000..9cfc951f332 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp @@ -0,0 +1,90 @@ +// +// $Id$ +// + +//============================================================== +/** + * @file client.cpp + * + * This is a client program that also acts as an Event Trigger. Four client tasks simultaneously + * send out trigger to the ClientRoundTrip component to start the latency measurements in + * parallel. This test is used to test scalability as the number of client components increase + * + * @author Arvind S. Krishna + */ +//=============================================================== + +#include "Client_Task.h" + +//IOR of the components +const char *ior1 = "file://comp1.ior"; +const char *ior2 = "file://comp2.ior"; +const char *ior3 = "file://comp3.ior"; +const char *ior4 = "file://comp4.ior"; + + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + // Resolve HomeFinder interface + CORBA::Object_var obj1 + = orb->string_to_object (ior1); + + CORBA::Object_var obj2 + = orb->string_to_object (ior2); + + CORBA::Object_var obj3 + = orb->string_to_object (ior3); + + CORBA::Object_var obj4 + = orb->string_to_object (ior4); + + if (CORBA::is_nil (obj1.in ()) || + CORBA::is_nil (obj2.in ()) || + CORBA::is_nil (obj3.in ()) || + CORBA::is_nil (obj4.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Nil Benchmark::RoundtripClient reference\n"), + 1); + } + + //Narrow to appropriate interfaces + Benchmark::RoundTripClient_var client1= + Benchmark::RoundTripClient::_narrow (obj1.in()); + + Benchmark::RoundTripClient_var client2= + Benchmark::RoundTripClient::_narrow (obj1.in()); + + Benchmark::RoundTripClient_var client3= + Benchmark::RoundTripClient::_narrow (obj1.in()); + + Benchmark::RoundTripClient_var client4= + Benchmark::RoundTripClient::_narrow (obj1.in()); + + //Create Tasks + Client_Task task1(client1.in()); + Client_Task task2(client2.in()); + Client_Task task3(client3.in()); + Client_Task task4(client4.in()); + + task1.activate(THR_NEW_LWP | THR_JOINABLE); + task2.activate(THR_NEW_LWP | THR_JOINABLE); + task3.activate(THR_NEW_LWP | THR_JOINABLE); + task4.activate(THR_NEW_LWP | THR_JOINABLE); + + task1.thr_mgr()->wait(); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception Caught:"); + return 1; + } + return 0; +} diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl new file mode 100755 index 00000000000..5c31666c186 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl @@ -0,0 +1,95 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +# +# @@ Run this script from ../descriptors/ instead. +# + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +$daemon_base = "daemon.ior"; +$am_base = "am.ior"; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$daemon_ior = $tg->LocalFile ($daemon_base); +$am_ior = $tg->LocalFile ($am_base); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($am_base); + +# CIAO Daemon command line arguments +$daemon_args = "-c $CIAO_ROOT/tools/ComponentServer/svc.conf -ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +# CIAO Daemon command line arguments +$daemon_args2 = "-c $CIAO_ROOT/tools/ComponentServer/svc.conf -ORBEndpoint iiop://localhost:12000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +$assembly_manager_args = "-o $am_ior -c test.dat"; + +$ad_args = " -k file://$am_ior -a Multi_Threaded.cad"; + +# CIAO daemon process definition +$DS = $tg->CreateProcess ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args"); + +## Starting up the CIAO daemon +$DS->Spawn (); +if ($tg->WaitForFileTimed($daemon_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + +# CIAO daemon process definition +$DS2 = $tg->CreateProcess ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args2"); + +## Starting up the CIAO daemon +$DS2->Spawn (); +if ($tg->WaitForFileTimed($daemon_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + +$AM = $tg->CreateProcess ("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager", + $assembly_manager_args); +$AM->Spawn (); +if ($tg->WaitForFileTimed($am_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n"; + $AM->Kill (); + exit 1; +} + +$AD = $tg->CreateProcess ("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer", + $ad_args); +$AD->Spawn (); + +sleep (5); + +#Start the client to send the trigger message +$CL = $tg->CreateProcess ("../Multi_Threaded/client", ""); +$CL->SpawnWaitKill($tg->ProcessStopWaitInterval ()); + +$AM->Kill (); +$AD->Kill (); +$DS->Kill (); +$CL->Kill (); +$DS2->Kill (); + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($am_base); + +exit $status; diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf new file mode 100644 index 00000000000..46ff5409fdf --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf @@ -0,0 +1,5 @@ +# +# $Id$ +# +static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBFlushingStrategy blocking" +static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBClientConnectionHandler RW" diff --git a/modules/CIAO/performance-tests/Benchmark/README b/modules/CIAO/performance-tests/Benchmark/README new file mode 100644 index 00000000000..97390d0ec0b --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/README @@ -0,0 +1,22 @@ +/** + +@page BasicSP README File + + The most basic of the Boeing scenarios that form part of the +OEP. This is done to illustrate how the OEP can be implemented using +CIAO. + + Compilation of the CIDL compiler source code requires the +Boost library, which is not included in this distribution of +ACE+TAO+CIAO. The Boost library is available at + +http://www.boost.org + + Alternatively, a binary executable of the CIAO +CIDL compiler can be downloaded from + +http://www.dre.vanderbilt.edu/CIAO/CIDL.html + +Versions are available at the above site for Linux and Windows. + +*/ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/README b/modules/CIAO/performance-tests/Benchmark/RoundTrip/README new file mode 100644 index 00000000000..8bd003eaf72 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/README @@ -0,0 +1,9 @@ +/** + +@page RoundTrip README File + + The RoundTrip component. This component measures the round-trip +latency for single-threaded case. This test adapted from +$TAO_ROOT/performance-tests/Latency/Single_Threaded + +*/ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl new file mode 100644 index 00000000000..71411c1af1a --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl @@ -0,0 +1,30 @@ +// $Id$ +//============================================================================= +/** + * @file RoundTrip.idl + * + * Definition of the Component that provides the LatencyTest interface + * + */ +//============================================================================= + +#ifndef CIAO_ROUNDTRIP_IDL +#define CIAO_ROUNDTRIP_IDL + +#include "../Benchmark.idl" +#include "../BenchmarkE.idl" +#include + +module Benchmark +{ + component RoundTrip + { + provides LatencyTest latency; + }; + + home RoundTripHome manages RoundTrip + { + }; +}; + +#endif /* CIAO_ROUNDTRIP_IDL*/ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc new file mode 100644 index 00000000000..ffd1b189ee3 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc @@ -0,0 +1,134 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Benchmark -l .. -c client Roundtrip" + +project(Benchmark_RoundTrip_idl_gen) : componentidldefaults { + custom_only = 1 + after += Benchmark_idl_gen + idlflags += \ + -Wb,stub_export_macro=ROUNDTRIP_STUB_Export \ + -Wb,stub_export_include=RoundTrip_stub_export.h \ + -Wb,skel_export_macro=ROUNDTRIP_SVNT_Export \ + -Wb,skel_export_include=RoundTrip_svnt_export.h \ + -Wb,exec_export_macro=ROUNDTRIP_EXEC_Export \ + -Wb,exec_export_include=RoundTrip_exec_export.h + + IDL_Files { + RoundTrip.idl + } +} + +project(Benchmark_RoundTrip_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Benchmark_RoundTrip_idl_gen + idlflags += -Wb,export_macro=ROUNDTRIP_EXEC_Export \ + -Wb,export_include=RoundTrip_exec_export.h \ + -SS + + IDL_Files { + RoundTripE.idl + RoundTripEI.idl << RoundTripE.idl + } +} + +project(Benchmark_RoundTrip_stub) : ccm_stub { + after += Benchmark_RoundTrip_idl_gen Benchmark_stub + libs += Benchmark_stub + libpaths += .. + sharedname = RoundTrip_stub + dynamicflags = ROUNDTRIP_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RoundTripC.cpp + } + + Header_Files { + RoundTripC.h + RoundTrip_stub_export.h + } + + Inline_Files { + RoundTripC.inl + } +} + +project(Benchmark_RoundTrip_exec) : ciao_executor { + after += Benchmark_RoundTrip_lem_gen Benchmark_RoundTrip_stub + sharedname = RoundTrip_exec + libs += RoundTrip_stub Benchmark_stub + libpaths += .. + dynamicflags = ROUNDTRIP_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RoundTripEC.cpp + RoundTripEIC.cpp + RoundTrip_exec.cpp + } + + Header_Files { + RoundTripEC.h + RoundTripEIC.h + RoundTrip_exec.h + RoundTrip_exec_export.h + } + + Inline_Files { + RoundTripEC.inl + RoundTripEIC.inl + } +} + + +project(Benchmark_RoundTrip_svnt) : ciao_servant { + after += Benchmark_skel Benchmark_RoundTrip_exec + sharedname = RoundTrip_svnt + libs += RoundTrip_exec \ + RoundTrip_stub \ + Benchmark_skel \ + Benchmark_stub + libpaths += .. + dynamicflags = ROUNDTRIP_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RoundTripS.cpp + RoundTrip_svnt.cpp + } + + Header_Files { + RoundTripS.h + RoundTrip_svnt.h + RoundTrip_svnt_export.h + } + + Inline_Files { + RoundTripS.inl + } +} + +project (RoundTrip_client) : ccm_stub, valuetype, strategies, avoids_ace_for_tao { + exename = client + after += Benchmark_RoundTrip_stub + libs += RoundTrip_stub Benchmark_stub + libpaths += .. + IDL_Files { + } + + Source_Files { + client.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl new file mode 100644 index 00000000000..1f105b46051 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl @@ -0,0 +1,33 @@ +// $Id$ + +//============================================================================= +/** + * @file RoundTripEI.idl + * + * + * @author + */ +//============================================================================= + +#ifndef CIAO_ROUNDTRIPEI_IDL +#define CIAO_ROUNDTRIPEI_IDL + +#include "RoundTripE.idl" + +module Benchmark +{ + /** + * @interface RoundTrip_Exec + * + * The actually Test executor need to support + * Components::SessionComponent interface. Therefore, we need to + * define the component executor interface explicitly here. + */ + local interface RoundTrip_Exec : CCM_RoundTrip, CCM_LatencyTest, + Components::SessionComponent + { + }; + +}; + +#endif /* CIAO_TESTEI_IDL */ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp new file mode 100644 index 00000000000..ce52d1f2068 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp @@ -0,0 +1,124 @@ +// $Id$ + +#include "RoundTrip_exec.h" + +//-- ACE Scheduling Params +#include "ace/Sched_Params.h" +#include "ace/OS_NS_errno.h" + +#include "ciao/Logger/Log_Macros.h" +//================================================================= + +void +set_priority () +{ + int priority = + (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) + + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; + // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. + + if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, + priority, + ACE_SCOPE_PROCESS)) != 0) + { + if (ACE_OS::last_error () == EPERM) + { + ACE_DEBUG ((LM_WARNING, CLINFO + "client (%P|%t): user is not superuser, " + "test runs in time-shared class\n")); + } + else + ACE_ERROR ((LM_ERROR, + "client (%P|%t): sched_params failed\n")); + } +} + + + +MyImpl::RoundTrip_exec_i::RoundTrip_exec_i () +{ + +} + +MyImpl::RoundTrip_exec_i::~RoundTrip_exec_i () +{ +} + +::Benchmark::CCM_LatencyTest * +MyImpl::RoundTrip_exec_i::get_latency () +{ + return ::Benchmark::CCM_LatencyTest::_duplicate (this); +} + +/* Main method that invokes the octet_sequence */ +CORBA::Long +MyImpl::RoundTrip_exec_i::makeCall (CORBA::Long data) +{ + return data * data * data; +} + +// Operations from Components::SessionComponent +void +MyImpl::RoundTrip_exec_i::set_session_context ( + Components::SessionContext_ptr ctx) +{ + ACE_DEBUG ((LM_TRACE, CLINFO "MyImpl::RoundTrip_exec_i::set_session_context\n")); + //cout << "MyImpl::RoundTrip_exec_i::set_session_context\n" << endl; + + this->context_ = + Benchmark::CCM_RoundTrip_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + // Urm, we actually discard exceptions thown from this operation. +} + +void +MyImpl::RoundTrip_exec_i::configuration_complete () +{ +} + +void +MyImpl::RoundTrip_exec_i::ccm_activate () +{ + ACE_DEBUG ((LM_TRACE, CLINFO "MyImpl::RoundTrip_exec_i::ccm_activate\n")); + //cout << "MyImpl::RoundTrip_exec_i::ccm_activate\n"; + + // Starting method! + //set_priority(); +} + +void +MyImpl::RoundTrip_exec_i::ccm_passivate () +{ + ACE_DEBUG ((LM_TRACE, CLINFO "MyImpl::RoundTrip_exec_i::ccm_passivate\n")); +} + +void +MyImpl::RoundTrip_exec_i::ccm_remove () +{ + ACE_DEBUG ((LM_INFO, CLINFO "MyImpl::RoundTrip_exec_i::ccm_remove\n")); +} + + +MyImpl::RoundTripHome_exec_i::RoundTripHome_exec_i () +{ +} + +MyImpl::RoundTripHome_exec_i::~RoundTripHome_exec_i () +{ +} + +::Components::EnterpriseComponent_ptr +MyImpl::RoundTripHome_exec_i::create () +{ + return new MyImpl::RoundTrip_exec_i; +} + + +extern "C" ROUNDTRIP_EXEC_Export ::Components::HomeExecutorBase_ptr +createRoundTripHome_Impl (void) +{ + //cout << "Creating Round_trip impl" << endl; + return new MyImpl::RoundTripHome_exec_i (); +} diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h new file mode 100644 index 00000000000..99bac519c1e --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h @@ -0,0 +1,103 @@ +// -*- C++ -*- + +//============================================================ +/** + * @file RoundTrip_exec.h + * + * Header file for the Executor implementation. + * + * $Id$ + * + * @author Diego Sevilla + * @author Arvind S. Krishna + */ +//============================================================ + +#ifndef ROUNDTRIP_EXEC_H +#define ROUNDTRIP_EXEC_H + +#include "RoundTripEIC.h" +#include "tao/LocalObject.h" +#include "ace/Thread_Manager.h" +#include "ace/Task.h" + +namespace MyImpl +{ + + /** + * @class RoundTrip_exec_i + * + * RoundTrip executor implementation class. + */ + + class ROUNDTRIP_EXEC_Export RoundTrip_exec_i : + public virtual Benchmark::RoundTrip_Exec, + public virtual ::CORBA::LocalObject + { + + public: + /// Default constructor. + RoundTrip_exec_i (); + + /// Operation to test the data + virtual CORBA::Long makeCall (CORBA::Long data); + + virtual ::Benchmark::CCM_LatencyTest* + get_latency (); + + // Operations from Components::SessionComponent + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + /// Helper function to be called back by timeout_Handler + void pulse (void); + + protected: + + /// Destructor. + ~RoundTrip_exec_i (); + + protected: + /// Copmponent specific context + Benchmark::CCM_RoundTrip_Context_var context_; + + }; + + /** + * @class RoundTripHome_exec_i + * + * RoundTrip home executor implementation class. + */ + class ROUNDTRIP_EXEC_Export RoundTripHome_exec_i : + public virtual Benchmark::CCM_RoundTripHome, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + RoundTripHome_exec_i (); + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + + protected: + + /// Destructor. + ~RoundTripHome_exec_i (); + + }; + +} + +extern "C" ROUNDTRIP_EXEC_Export ::Components::HomeExecutorBase_ptr +createRoundTripHome_Impl (void); + +#endif /* ROUNDTRIP_EXEC_H */ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp new file mode 100644 index 00000000000..fd67b1290b4 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp @@ -0,0 +1,174 @@ +// $Id$ + +//============================================================== +/** + * @file client.cpp + * + * This is a simple client test program that interact with the RoundTrip + * component implementation. The single threaded client issues + * two-way operations, the total latency (response time) is measured + * NOTE: this client implementation has been adapted from the + * $TAO_ROOT/performance-results/Latency/Single_Threaded/ + * + * @author Arvind S. Krishna + */ +//============================================================== +#include "RoundTripC.h" +#include "ace/Get_Opt.h" +#include "ace/High_Res_Timer.h" +#include "ace/Sched_Params.h" +#include "ace/Stats.h" +#include "ace/Sample_History.h" +#include "ace/OS_NS_errno.h" +#include "ace/Throughput_Stats.h" + +const ACE_TCHAR *ior = ACE_TEXT("file://test.ior"); +int niterations = 100; +int do_dump_history = 0; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + // Parse arguments. + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("hxk:i:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'h': + do_dump_history = 1; + break; + + case 'k': + ior = get_opts.opt_arg (); + break; + + case 'i': + niterations = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case '?': + default: + /* Could be any other parameter like -ORBSvcConf file so ignore */ + break; + } + + // Indicates sucessful parsing of the command line + return 0; +} + +void +set_priority () +{ + int priority = + (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) + + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; + // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. + + if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, + priority, + ACE_SCOPE_PROCESS)) != 0) + { + if (ACE_OS::last_error () == EPERM) + { + ACE_DEBUG ((LM_DEBUG, + "client (%P|%t): user is not superuser, " + "test runs in time-shared class\n")); + } + else + ACE_ERROR ((LM_ERROR, + "client (%P|%t): sched_params failed\n")); + } + +} + + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + //set priority on the platform + set_priority(); + + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (parse_args(argc, argv) == -1) + { + ACE_DEBUG ((LM_DEBUG, "Error parsing Arguments\n")); + return -1; + } + + // Resolve HomeFinder interface + CORBA::Object_var obj + = orb->string_to_object (ior); + + Benchmark::RoundTripHome_var home + = Benchmark::RoundTripHome::_narrow (obj.in ()); + + if (CORBA::is_nil (home.in ())) + ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire TestHome objref\n"), -1); + + Benchmark::RoundTrip_var test + = home->create (); + + //Get the RoundTrip reference + Benchmark::LatencyTest_var round_trip = test->provide_latency (); + + //Warmup the System by making some empty calls + long start = 0L; + for (int j = 0; j < 100; ++j) + { + round_trip->makeCall (start); + } + + ///// Start Test //////////////////////////////////////////// + ACE_Sample_History history (niterations); + + ACE_hrtime_t test_start = ACE_OS::gethrtime (); + for (int i = 0; i < niterations; ++i) + { + ACE_hrtime_t start = ACE_OS::gethrtime (); + + //Test value to be sent to the server + long test = 0; + + (void) round_trip->makeCall (test); + + ACE_hrtime_t now = ACE_OS::gethrtime (); + history.sample (now - start); + } + + ACE_hrtime_t test_end = ACE_OS::gethrtime (); + + ACE_DEBUG ((LM_DEBUG, "test finished\n")); + + ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); + ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); + ACE_DEBUG ((LM_DEBUG, "done\n")); + + if (do_dump_history) + { + history.dump_samples (ACE_TEXT("HISTORY"), gsf); + } + + ACE_Basic_Stats stats; + history.collect_basic_stats (stats); + stats.dump_results (ACE_TEXT("Total"), gsf); + + ACE_Throughput_Stats::dump_throughput (ACE_TEXT("Total"), gsf, + test_end - test_start, + stats.samples_count ()); + + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception Handled:"); + return 1; + } + + + return 0; +} diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl new file mode 100755 index 00000000000..0364d8b16a4 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl @@ -0,0 +1,123 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +# +# @@ Run this script from ../descriptors/ instead. +# + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +$daemon_base = "daemon.ior"; +$svr_base = "server.ior"; +$home_base = "test.ior"; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$daemon_ior = $tg->LocalFile ($daemon_base); +$svr_ior = $tg->LocalFile ($svr_base); +$home_ior = $tg->LocalFile ($home_base); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($svr_base); +$tg->DeleteFile ($home_base); + +# CIAO Daemon command line arguments +$daemon_args = "-c ../RoundTrip/svc.conf -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +# CIAO Daemon Controller location: +$controller = "$CIAO_ROOT/tools/Daemon/DaemonController"; + +# Daemon controller common command line arguments +$common_args = "-ORBInitRef CIAODaemon=file://$daemon_ior"; + +# Daemon controller start_home command +$start_args = "start_home -s RoundTrip.csd -m $home_ior -c $svr_ior"; + +# Daemon controller end_home command +$end_args = "end_home -c file://$svr_ior"; + +# Daemon controller shutdown command +$shutdown_args = "shutdown"; + +# Client program command line arguments +$cl_args = "-ORBSvcConf ../RoundTrip/svc.conf -i 300000"; + +# CIAO daemon process definition +$DS = $tg->CreateProcess ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args"); + +# Client process definition +$CL = $tg->CreateProcess ("../RoundTrip/client", + $cl_args); + +## Starting up the CIAO daemon +$DS->Spawn (); +if ($tg->WaitForFileTimed($daemon_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + +## Starting up a ComponentServer running the Roundtrip home. +$DC = $tg->CreateProcess ("$controller", + "$common_args $start_args"); + +$DC->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); +if ($tg->WaitForFileTimed($home_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find home ior file <$home_ior>\n"; + $DS->Kill (); + exit 1; +} + +$client = $CL->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); + +if ($client != 0) { + print STDERR "ERROR: client returned $client\n"; + $status = 1; +} + +## Terminating the ComponentServer running. +$DC = $tg->CreateProcess ("$controller", + "$common_args $end_args"); + +$ctrl = $DC->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); +if ($ctrl != 0) { + print STDERR "ERROR: Fail to end component server\n"; + $DC->Kill (); + exit 1; +} + +## Terminating the ComponentServer running the RateGen home. +$DC = $tg->CreateProcess ("$controller", + "$common_args $shutdown_args"); + +$ctrl = $DC->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); +if ($ctrl != 0) { + print STDERR "ERROR: Fail to shutdown CIAODaemon\n"; + $DS->Kill (); + exit 1; +} + +$ctrl = $DS->WaitKill ($tg->ProcessStopWaitInterval ()); +if ($ctrl != 0) { + print STDERR "ERROR: CIAODaemon didn't shutdown gracefully $ctrl\n"; + $DS->Kill (); + exit 1; +} + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($svr_base); +$tg->DeleteFile ($home_base); + +exit $status; diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf b/modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf new file mode 100644 index 00000000000..e1706aae4e5 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf @@ -0,0 +1,6 @@ +# +# $Id$ +# +dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory () "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null" +static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0" +static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW" diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl new file mode 100644 index 00000000000..7e96ef6abe2 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl @@ -0,0 +1,31 @@ +// $Id$ +//============================================================================= +/** + * @file RoundTripClient.idl + * + * Definition of the Component that uses the LatencyTest interface + * provided by RoundTrip component + */ +//============================================================================= + +#ifndef CIAO_ROUNDTRIPCLIENT_IDL +#define CIAO_ROUNDTRIPCLIENT_IDL + +#include +#include "../Benchmark.idl" +#include "../BenchmarkE.idl" + +module Benchmark +{ + component RoundTripClient + { + uses LatencyTest latency; + provides Controller controller; + }; + + home RoundTripClientHome manages RoundTripClient + { + }; +}; + +#endif /* CIAO_ROUNDTRIPCLIENT_IDL*/ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc new file mode 100644 index 00000000000..3a9da26deea --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc @@ -0,0 +1,134 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Benchmark -l .. -c client RoundTripClient" + +project(Benchmark_RoundTripClient_idl_gen) : componentidldefaults { + after += Benchmark_idl_gen + custom_only = 1 + idlflags += \ + -Wb,stub_export_macro=ROUNDTRIPCLIENT_STUB_Export \ + -Wb,stub_export_include=RoundTripClient_stub_export.h \ + -Wb,skel_export_macro=ROUNDTRIPCLIENT_SVNT_Export \ + -Wb,skel_export_include=RoundTripClient_svnt_export.h \ + -Wb,exec_export_macro=ROUNDTRIPCLIENT_EXEC_Export \ + -Wb,exec_export_include=RoundTripClient_exec_export.h \ + + IDL_Files { + RoundTripClient.idl + } +} + +project(Benchmark_RoundTripClient_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Benchmark_RoundTripClient_idl_gen + idlflags += -Wb,export_macro=ROUNDTRIPCLIENT_EXEC_Export \ + -Wb,export_include=RoundTripClient_exec_export.h \ + -SS + + IDL_Files { + RoundTripClientE.idl + RoundTripClientEI.idl << RoundTripClientE.idl + } +} + +project(Benchmark_RoundTripClient_stub) : ccm_stub { + after += Benchmark_RoundTripClient_idl_gen Benchmark_stub + libs += Benchmark_stub + libpaths += .. + sharedname = RoundTripClient_stub + dynamicflags = ROUNDTRIPCLIENT_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RoundTripClientC.cpp + } + + Header_Files { + RoundTripClientC.h + RoundTripClient_stub_export.h + } + + Inline_Files { + RoundTripClientC.inl + } +} + +project(Benchmark_RoundTripClient_exec) : ciao_executor, avoids_ace_for_tao { + after += Benchmark_RoundTripClient_lem_gen Benchmark_RoundTripClient_stub + sharedname = RoundTripClient_exec + libs += RoundTripClient_stub Benchmark_stub + libpaths += .. + dynamicflags = ROUNDTRIPCLIENT_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RoundTripClientEC.cpp + RoundTripClientEIC.cpp + RoundTripClient_exec.cpp + } + + Header_Files { + RoundTripClientEC.h + RoundTripClientEIC.h + RoundTripClient_exec.h + RoundTripClient_exec_export.h + } + + Inline_Files { + RoundTripClientEC.inl + RoundTripClientEIC.inl + } +} + + +project(Benchmark_RoundTripClient_svnt) : ciao_servant, avoids_ace_for_tao { + after += Benchmark_skel Benchmark_RoundTripClient_exec + sharedname = RoundTripClient_svnt + libs += RoundTripClient_exec \ + RoundTripClient_stub \ + Benchmark_skel \ + Benchmark_stub + libpaths += .. + dynamicflags = ROUNDTRIPCLIENT_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + RoundTripClientS.cpp + RoundTripClient_svnt.cpp + } + + Header_Files { + RoundTripClientS.h + RoundTripClient_svnt.h + RoundTripClient_svnt_export.h + } + + Inline_Files { + RoundTripClientS.inl + } +} + +project (RoundTripClient_client) : ccm_stub, valuetype, avoids_ace_for_tao { + exename = client + after += Benchmark_RoundTripClient_stub + libs += RoundTripClient_stub Benchmark_stub + libpaths += .. + IDL_Files { + } + + Source_Files { + client.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl new file mode 100644 index 00000000000..784abd168d4 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl @@ -0,0 +1,34 @@ +// $Id$ + +//============================================================================= +/** + * @file RoundTripClientEI.idl + * + * + * @author + */ +//============================================================================= + +#ifndef CIAO_ROUNDTRIPCLIENTEI_IDL +#define CIAO_ROUNDTRIPCLIENTEI_IDL + +#include "RoundTripClientE.idl" + +module Benchmark +{ + /** + * @interface RoundTripClient_Exec + * + * The actually Test executor need to support + * Components::SessionComponent interface. Therefore, we need to + * define the component executor interface explicitly here. + */ + local interface RoundTripClient_Exec : CCM_RoundTripClient, + Components::SessionComponent, + CCM_Controller //Monolithic + { + }; + +}; + +#endif /* CIAO_ROUNDTRIPCLIENTEI_IDL */ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp new file mode 100644 index 00000000000..f805cfc43dd --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp @@ -0,0 +1,158 @@ +// $Id$ + +#include "ace/Stats.h" +#include "ace/Throughput_Stats.h" +#include "ace/Sample_History.h" +#include "ace/High_Res_Timer.h" +#include "ace/Env_Value_T.h" +#include "ciao/Logger/Log_Macros.h" + +#include "RoundTripClient_exec.h" + +const int niterations = 100000; //Default no of iterations +//================================================================= + +MyImpl::RoundTripClient_exec_i::RoundTripClient_exec_i () +{ + +} + +MyImpl::RoundTripClient_exec_i::~RoundTripClient_exec_i () +{ +} + +// Operations from Components::SessionComponent +void +MyImpl::RoundTripClient_exec_i::set_session_context ( + Components::SessionContext_ptr ctx) +{ + ACE_DEBUG ((LM_TRACE, CLINFO + "MyImpl::RoundTripClient_exec_i::set_session_context\n")); + + //Since this is in collocated mode; The server-component will change the + //scheduling strategy to real-time scheduling + + this->context_ = + Benchmark::CCM_RoundTripClient_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + + // Urm, we actually discard exceptions thrown from this operation. +} + +//Start the collocated test here +void +MyImpl::RoundTripClient_exec_i::configuration_complete () +{ +} + +void +MyImpl::RoundTripClient_exec_i::ccm_activate () +{ + ACE_DEBUG ((LM_TRACE, CLINFO "MyImpl::RoundTripClient_exec_i::ccm_activate\n")); +} + +void +MyImpl::RoundTripClient_exec_i::start () +{ + ///////////// Start test ///////////////////////////////////////// + + // Let's try to start tests from here... + Benchmark::LatencyTest_var lt = + context_->get_connection_latency (); + + ACE_DEBUG ((LM_INFO, CLINFO + "MyImpl::RoundTripClient_exec::start obtain obj ref\n")); + + CORBA::Long test_data = 0L; + + //Warm up the system + int i = 0; + for (i=0; i < 100; i++) + lt->makeCall (test_data); + + ACE_DEBUG ((LM_DEBUG, "MyImpl::start: warmed up the system\n")); + + ACE_Sample_History history (niterations); + + ACE_hrtime_t test_start = ACE_OS::gethrtime (); + for (i = 0; i < niterations; ++i) + { + ACE_hrtime_t start = ACE_OS::gethrtime (); + + //Test value to be sent to the server + long test = 0; + + (void) lt->makeCall (test); + + ACE_hrtime_t now = ACE_OS::gethrtime (); + history.sample (now - start); + } + + ACE_hrtime_t test_end = ACE_OS::gethrtime (); + + ACE_DEBUG ((LM_DEBUG, CLINFO"test finished\n")); + + ACE_DEBUG ((LM_DEBUG, CLINFO"High resolution timer calibration....")); + ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); + ACE_DEBUG ((LM_DEBUG, CLINFO"done\n")); + + ACE_Env_Value envar (ACE_TEXT("CIAO_DUMP_SAMPLE_HISTORY"), 0); + if (envar != 0) + { + history.dump_samples (ACE_TEXT("HISTORY"), gsf); + } + + ACE_Basic_Stats stats; + history.collect_basic_stats (stats); + stats.dump_results (ACE_TEXT("Total"), gsf); + + ACE_Throughput_Stats::dump_throughput (ACE_TEXT("Total"), + gsf, + test_end - test_start, + stats.samples_count ()); + +} + +::Benchmark::CCM_Controller_ptr +MyImpl::RoundTripClient_exec_i::get_controller () +{ + return ::Benchmark::CCM_Controller::_duplicate (this); +} + + +void +MyImpl::RoundTripClient_exec_i::ccm_passivate () +{ + ACE_DEBUG ((LM_TRACE, CLINFO "MyImpl::RoundTripClient_exec_i::ccm_passivate\n")); +} + +void +MyImpl::RoundTripClient_exec_i::ccm_remove () +{ + ACE_DEBUG ((LM_TRACE, CLINFO "MyImpl::RoundTripClient_exec_i::ccm_remove\n")); +} + + +MyImpl::RoundTripClientHome_exec_i::RoundTripClientHome_exec_i () +{ +} + +MyImpl::RoundTripClientHome_exec_i::~RoundTripClientHome_exec_i () +{ +} + +::Components::EnterpriseComponent_ptr +MyImpl::RoundTripClientHome_exec_i::create () +{ + return new MyImpl::RoundTripClient_exec_i; +} + + +extern "C" ROUNDTRIPCLIENT_EXEC_Export ::Components::HomeExecutorBase_ptr +createRoundTripClientHome_Impl (void) +{ + ACE_DEBUG ((LM_INFO, CLINFO "Creating RoundTrip_client impl\n")); + return new MyImpl::RoundTripClientHome_exec_i (); +} diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h new file mode 100644 index 00000000000..117ad723c01 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h @@ -0,0 +1,92 @@ +// $Id$ + +//============================================================ +/** + * @file RoundTripClient_exec.h + * + * Header file for the Executor implementation. + * + * @author Diego + * @author Arvind S. Krishna + */ +//============================================================ + +#ifndef BENCHMARK_ROUNDTRIPCLIENT_EXEC_H +#define BENCHMARK_ROUNDTRIPCLIENT_EXEC_H + +#include "RoundTripClientEIC.h" +#include "tao/LocalObject.h" + + +namespace MyImpl +{ + + /** + * @class RoundTripClient_exec_i + * + * RoundTripClient executor implementation class. + */ + + class ROUNDTRIPCLIENT_EXEC_Export RoundTripClient_exec_i : + public virtual Benchmark::RoundTripClient_Exec, + public virtual ::CORBA::LocalObject + { + + public: + /// Default constructor. + RoundTripClient_exec_i (); + + /// Default destructor. + ~RoundTripClient_exec_i (); + + // Operations from Components::SessionComponent + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + virtual ::Benchmark::CCM_Controller_ptr + get_controller (); + + virtual void start (); + + + protected: + /// Copmponent specific context + Benchmark::CCM_RoundTripClient_Context_var context_; + + }; + + /** + * @class RoundTripClientHome_exec_i + * + * RoundTripClient home executor implementation class. + */ + class ROUNDTRIPCLIENT_EXEC_Export RoundTripClientHome_exec_i : + public virtual Benchmark::CCM_RoundTripClientHome, + public virtual ::CORBA::LocalObject + { + public: + /// Default ctor. + RoundTripClientHome_exec_i (); + + /// Default dtor. + ~RoundTripClientHome_exec_i (); + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + +} + +extern "C" ROUNDTRIPCLIENT_EXEC_Export ::Components::HomeExecutorBase_ptr +createRoundTripClientHome_Impl (void); + +#endif /* CIAO_ROUNDTRIPCLIENTGEN_EXEC_H */ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp new file mode 100644 index 00000000000..5d75029d1bb --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp @@ -0,0 +1,49 @@ +// $Id$ + +//============================================================== +/** + * @file client.cpp + * + * This is a simple client test program that interact with the RoundTrip + * component implementation. The single threaded client issues + * two-way operations, the total latency (response time) is measured + * NOTE: this client implementation has been adapted from the + * $TAO_ROOT/performance-results/Latency/Single_Threaded/ + * + * @author Arvind S. Krishna + */ +//============================================================== +#include "RoundTripClientC.h" + +const char *ior = "file://test.ior"; + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + try + { + + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + // Resolve HomeFinder interface + CORBA::Object_var obj + = orb->string_to_object (ior); + Benchmark::RoundTripClient_var test = + Benchmark::RoundTripClient::_narrow(obj.in()); + //Get the RoundTrip reference + Benchmark::Controller_var trigger = test->provide_controller (); + + //Send a trigger to start the test + trigger->start(); + + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception Handled:"); + return 1; + } + + + return 0; +} diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl new file mode 100755 index 00000000000..f36ef2e64c7 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl @@ -0,0 +1,94 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +# +# @@ Run this script from ../descriptors/ instead. +# + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$status = 0; +$daemon_base = "daemon.ior"; +$am_base = "am.ior"; +$daemon_ior = $tg->LocalFile ("daemon.ior"); +$am_ior = $tg->LocalFile ("am.ior"); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($am_base); + + +# CIAO Daemon command line arguments +$daemon_args1 = "-ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +#CIAO Daemond Remote command line arguments +$daemon_args2 = "-ORBEndpoint iiop://localhost:12000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +$assembly_manager_args = "-o $am_ior -c test.dat"; + +$ad_args = " -k file://$am_ior -a RoundTripClient.cad"; + +# CIAO daemon process definition +$DS = $tg->CreateProcess ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args1"); + +## Starting up the CIAO daemon +$DS->Spawn (); +if ($tg->WaitForFileTimed($daemon_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + +# CIAO daemon process definition +$DS2 = $tg->CreateProcess ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args2"); + +## Starting up the CIAO daemon +$DS2->Spawn (); +if ($tg->WaitForFileTimed($daemon_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + +$AM = $tg->CreateProcess ("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager", + $assembly_manager_args); +$AM->Spawn (); +if ($tg->WaitForFileTimed($am_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n"; + $AM->Kill (); + exit 1; +} + +$AD = $tg->CreateProcess ("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer", + $ad_args); +$AD->Spawn (); + +sleep (5); + +#Start the client to send the trigger message +$CL = $tg->CreateProcess ("../RoundTripClient/client", ""); +$CL->SpawnWaitKill($tg->ProcessStopWaitInterval ()); + +$AM->Kill (); +$AD->Kill (); +$DS->Kill (); +$CL->Kill (); +$DS2->Kill (); + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($am_base); + +exit $status; diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl new file mode 100755 index 00000000000..896905c1659 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl @@ -0,0 +1,76 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +# +# @@ Run this script from ../descriptors/ instead. +# + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$status = 0; +$daemon_base = "daemon.ior"; +$am_base = "am.ior"; +$daemon_ior = $tg->LocalFile ("daemon.ior"); +$am_ior = $tg->LocalFile ("am.ior"); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($am_base); + +# CIAO Daemon command line arguments +$daemon_args = "-c $CIAO_ROOT/performance-tests/Benchmark/RoundTrip/svc.conf -ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +$assembly_manager_args = "-o $am_ior -c test.dat"; + +$ad_args = " -k file://$am_ior -a Test-IOR.cad"; + +# CIAO daemon process definition +$DS = $tg->CreateProcess ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args"); + +## Starting up the CIAO daemon +$DS->Spawn (); +if ($tg->WaitForFileTimed($daemon_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + + +$AM = $tg->CreateProcess("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager", + $assembly_manager_args); +$AM->Spawn (); +if ($tg->WaitForFileTimed($am_base, + $tg->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n"; + $AM->Kill (); + exit 1; +} + +$AD = $tg->CreateProcess("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer", + $ad_args); +$AD->Spawn (); + +sleep (5); + +#Start the client to send the trigger message +$CL = $tg->CreateProcess ("../RoundTripClient/client", ""); +$CL->SpawnWaitKill($tg->ProcessStopWaitInterval ()); + +$AM->Kill (); +$AD->Kill (); +$DS->Kill (); + +$tg->DeleteFile ($daemon_base); +$tg->DeleteFile ($am_base); + +exit $status; diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp new file mode 100644 index 00000000000..494491cbf38 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp @@ -0,0 +1,25 @@ +// +// $Id$ +// +#include "LatencyTest.h" +#include "ciao/Logger/Log_Macros.h" + +LatencyTest_Impl::LatencyTest_Impl (CORBA::ORB_ptr orb) + : orb_ (CORBA::ORB::_duplicate (orb)) +{ +} + + +CORBA::Long +LatencyTest_Impl::makeCall (CORBA::Long send_time) +{ + ACE_DEBUG ((LM_DEBUG, CLINFO"Sending Time back\n")); + + return send_time; +} + +void +LatencyTest_Impl::shutdown () +{ + this->orb_->shutdown (0); +} diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h new file mode 100644 index 00000000000..e2dbaf7cc0e --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h @@ -0,0 +1,40 @@ +// +// $Id$ +// + +#ifndef LATENCYTEST_H +#define LATENCYTEST_H +#include /**/ "ace/pre.h" + +#include "../BenchmarkS.h" + +#if defined (_MSC_VER) +# pragma warning(push) +# pragma warning (disable:4250) +#endif /* _MSC_VER */ + +/// Implement the Test::LatencyTest interface +class LatencyTest_Impl : + public virtual POA_Benchmark::LatencyTest +{ +public: + /// Constructor + LatencyTest_Impl (CORBA::ORB_ptr orb); + + // = The skeleton methods + virtual CORBA::Long makeCall (CORBA::Long send_time); + + virtual void shutdown (); + +private: + /// Use an ORB reference to conver strings to objects and shutdown + /// the application. + CORBA::ORB_var orb_; +}; + +#if defined(_MSC_VER) +# pragma warning(pop) +#endif /* _MSC_VER */ + +#include /**/ "ace/post.h" +#endif /* LATENCYTEST_H */ diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc new file mode 100644 index 00000000000..5c824ef9072 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc @@ -0,0 +1,22 @@ +// $Id$ +project (RoundTrip_server) : strategies, ciao_executor { + exename = server + after += Benchmark_skel + libs += Benchmark_stub Benchmark_skel + libpaths += .. + + IDL_Files { + } + + Source_Files { + server.cpp + LatencyTest.cpp + } + + Header_Files { + LatencyTest.h + } + + Inline_Files { + } +} diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl new file mode 100644 index 00000000000..b7f83dbedd8 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl @@ -0,0 +1,16 @@ +// +// $Id$ +// + +/// Measure roundtrip delay +interface LatencyTest +{ + /// A simple method to measure roundtrip delays + /** + * The operation simply returns its argument, this is used in AMI + * and deferred synchronous tests to measure the roundtrip delay + * without the need for a different reply handler for each + * request. + */ + long makeCall (in long send_time); +}; diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp new file mode 100644 index 00000000000..a41e38aa6f9 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp @@ -0,0 +1,94 @@ +// $Id$ + +#include "LatencyTest.h" +#include "ace/Sched_Params.h" +#include "ace/OS_NS_errno.h" + +const char *ior_output_file = "rtserver.ior"; + +int +ACE_TMAIN(int argc, ACE_TCHAR *argv[]) +{ + int priority = + (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) + + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; + priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, + priority); + // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. + + if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, + priority, + ACE_SCOPE_PROCESS)) != 0) + { + if (ACE_OS::last_error () == EPERM) + { + ACE_DEBUG ((LM_DEBUG, + "server (%P|%t): user is not superuser, " + "test runs in time-shared class\n")); + } + else + ACE_ERROR ((LM_ERROR, + "server (%P|%t): sched_params failed\n")); + } + + try + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv); + + CORBA::Object_var poa_object = + orb->resolve_initial_references("RootPOA"); + + if (CORBA::is_nil (poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the POA.\n"), + 1); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (poa_object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + LatencyTest_Impl *roundtrip_impl; + ACE_NEW_RETURN (roundtrip_impl, + LatencyTest_Impl (orb.in ()), + 1); + PortableServer::ServantBase_var owner_transfer(roundtrip_impl); + + Benchmark::LatencyTest_var roundtrip = + roundtrip_impl->_this (); + + CORBA::String_var ior = + orb->object_to_string (roundtrip.in ()); + + // If the ior_output_file exists, output the ior to it + FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); + if (output_file == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot open output file for writing IOR: %s", + ior_output_file), + 1); + ACE_OS::fprintf (output_file, "%s", ior.in ()); + ACE_OS::fclose (output_file); + + ACE_DEBUG ((LM_DEBUG, "%s", ior.in ())); + + poa_manager->activate (); + + orb->run (); + + ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); + + root_poa->destroy (1, 1); + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + return 1; + } + + return 0; +} diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad new file mode 100644 index 00000000000..6ab0dd70aa0 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini b/modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini new file mode 100644 index 00000000000..ffe36ca3422 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini @@ -0,0 +1,5 @@ +[ComponentInstallation] +DCE:cf88cb97-b5a8-4522-9fa3-e626c75c5470=RoundTripClient_svnt +DCE:568a3872-f7bb-4b3f-baba-44c6824d966d=RoundTripClient_exec +DCE:2498aa68-09aa-478c-8ae1-30ed67924f82=RoundTrip_exec +DCE:88c14bff-5158-4f48-9b22-8a1120e87f76=RoundTrip_svnt diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad new file mode 100644 index 00000000000..0c0be0cb71c --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remote + + + + + + + + + latency + + + + latency + + + + + + + latency + + + + latency + + + + + + + latency + + + + latency + + + + + + + latency + + + + latency + + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt b/modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt new file mode 100644 index 00000000000..7bcd2fbfade --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt @@ -0,0 +1,65 @@ +This directory contains various XML descriptors and configuration +files required to run benchmarking experiments using CIAO in +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 + 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: + + Benchmark.cad: Plain vanilla assembly descriptor. This file installs + the RoundTrip component on the location given in test.dat. + RoundTripClient.cad : A descriptor file for the client component + RoundTripClient that uses the interface provided by + RoundTrip. + Test-IOR.cad: This cad file should be used to for testing a CORBA server + with a CIAO client. The IOR of the server should added in + this file. + +There are automated perl scripts that can run the tests to generate the +required results. These are located in the individual component directories +Round Trip and RoundTripClient. The descriptors directory has the required +.cad files that specify the component configuration used in the various +experiments. + +To run a simple CORBA component with a normal client: + cd descriptors; + ../Roundtrip/run_test.pl + + cd descritors; + ../RoundTripClient/run_test.pl + Script that runs two components one acts as a client and the other as the + server. Statistics are printed for RoundTrip latency jitter etc + + cd descritors; + ../RoundTripClient/run_test_ior_cad.pl + Script runs a CORBA server and a CIAO component that acts as a client. + Similar statistics are printed. diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd new file mode 100644 index 00000000000..ebf8c4e1e15 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd @@ -0,0 +1,46 @@ + + + + + + + + + + + + CORBA Component + RoundTrip + + ISIS at Vanderbilt University + + + A RoundTrip component. + + + + + + + + + + + + + + + + + + + + + + createRoundTripHome_Impl + + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd new file mode 100644 index 00000000000..b9720b9f2f1 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd @@ -0,0 +1,43 @@ + + + + + + + + + + + + CIAO Servant + Benchmark::RoundTrip Servants + + ISIS at Vanderbilt University + + + Single-Threaded Latency test component for benchmarking. + + + + + + + + + + + + + TAO + + + + + + createRoundTripHome_Servant + + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad new file mode 100644 index 00000000000..d53416195a2 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latency + + + + latency + + + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd new file mode 100644 index 00000000000..c52288e3207 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd @@ -0,0 +1,44 @@ + + + + + + + + + + + CORBA Component + RoundTripClient + + ISIS at Vanderbilt University + + + A RoundTripClient component. + + + + + + + + + + + + + + + + + + + + + + createRoundTripClientHome_Impl + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd new file mode 100644 index 00000000000..86397731ed2 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd @@ -0,0 +1,39 @@ + + + + + + + + + + CIAO Servant + Benchmark::RoundTripClient Servants + + ISIS at Vanderbilt University + + + Single-Threaded Latency test component for benchmarking. + + + + + + + + + + + + + TAO + + + + + + createRoundTripClientHome_Servant + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad new file mode 100644 index 00000000000..a917affec85 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + latency + + + + + + file://rtserver.ior + + + + + + diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat b/modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat new file mode 100644 index 00000000000..1570574903b --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat @@ -0,0 +1,5 @@ +Default corbaloc:iiop:localhost:10000/ServerActivator +Remote1 corbaloc:iiop:localhost:12000/ServerActivator +Remote2 corbaloc:iiop:localhost:13000/ServerActivator +Remote3 corbaloc:iiop:localhost:14000/ServerActivator +Remote4 corbaloc:iiop:localhost:15000/ServerActivator \ No newline at end of file diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/test.dat b/modules/CIAO/performance-tests/Benchmark/descriptors/test.dat new file mode 100644 index 00000000000..d26b3d4e070 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/descriptors/test.dat @@ -0,0 +1,2 @@ +Default corbaloc:iiop:localhost:10000/ServerActivator +Remote corbaloc:iiop:localhost:12000/ServerActivator \ No newline at end of file diff --git a/modules/CIAO/performance-tests/Benchmark/server.cpp b/modules/CIAO/performance-tests/Benchmark/server.cpp new file mode 100644 index 00000000000..3091692da17 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/server.cpp @@ -0,0 +1,94 @@ +// $Id$ + +#include "LatencyTest.h" + +#include "ace/Sched_Params.h" +#include "ace/OS_NS_errno.h" + +//#include "tao/Strategies/advanced_resource.h" + +const char *ior_output_file = "test.ior"; + +int +ACE_TMAIN(int argc, ACE_TCHAR *argv[]) +{ + int priority = + (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) + + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; + + priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, + priority); + // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. + + if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, + priority, + ACE_SCOPE_PROCESS)) != 0) + { + if (ACE_OS::last_error () == EPERM) + { + ACE_DEBUG ((LM_DEBUG, + "server (%P|%t): user is not superuser, " + "test runs in time-shared class\n")); + } + else + { + ACE_ERROR ((LM_ERROR, + "server (%P|%t): sched_params failed\n")); + } + } + + try + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv); + + CORBA::Object_var poa_object = + orb->resolve_initial_references("RootPOA"); + + if (CORBA::is_nil (poa_object.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the POA.\n"), + 1); + } + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (poa_object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + LatencyTest *roundtrip_impl; + ACE_NEW_RETURN (roundtrip_impl, + LatencyTest (orb.in ()), + 1); + PortableServer::ServantBase_var owner_transfer(roundtrip_impl); + + //Get the RoundTrip reference + Benchmark::LatencyTest_var roundtrip = + roundtrip_impl->_this (); + + CORBA::String_var ior = + orb->object_to_string (roundtrip.in ()); + + // If the ior_output_file exists, output the ior to it + ACE_DEBUG ((LM_DEBUG, "%s", ior.in ())); + + poa_manager->activate (); + + orb->run (); + + ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); + + root_poa->destroy (1, 1); + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + return 1; + } + + return 0; +} diff --git a/modules/CIAO/performance-tests/Benchmark/svc.conf b/modules/CIAO/performance-tests/Benchmark/svc.conf new file mode 100644 index 00000000000..7b8129f5667 --- /dev/null +++ b/modules/CIAO/performance-tests/Benchmark/svc.conf @@ -0,0 +1,6 @@ +# +# $Id$ +# +static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null" +static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0" +static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW" diff --git a/modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp b/modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp new file mode 100644 index 00000000000..fee5d4c2bd9 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp @@ -0,0 +1,229 @@ +// $Id$ + +#include "SenderC.h" +#include "ReceiverC.h" +#include "tao/ORB_Constants.h" +#include "ace/Get_Opt.h" +#include "ace/OS_NS_string.h" + + +static const ACE_TCHAR *sender_ior = ACE_TEXT("file://sender.ior"); +static const ACE_TCHAR *distributor_ior = ACE_TEXT("file://distributor.ior"); +static const ACE_TCHAR *receiver_ior = ACE_TEXT("file://receiver.ior"); +static int shutdown_sender = 0; +static int shutdown_distributor = 0; +static int shutdown_receiver = 0; +static CORBA::ULong iterations = 5; +static CORBA::ULong invocation_rate = 5; +static int count_missed_end_deadlines = 0; +static int do_dump_history = 0; +static int print_missed_invocations = 0; +static CORBA::ULong message_size = 100; +static const ACE_TCHAR *test_protocol = ACE_TEXT("IIOP"); +static int print_statistics = 1; +static int number_of_connection_attempts = 20; +static int enable_diffserv_code_points = 0; +static int corba_priority = 0; +static const ACE_TCHAR *test_type = ACE_TEXT("PACED"); + +static int +parse_args (int argc, ACE_TCHAR **argv) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("a:b:c:d:e:i:m:p:r:s:t:u:v:w:x:y:z:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'a': + test_type = get_opts.opt_arg (); + break; + + case 'b': + enable_diffserv_code_points = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'c': + corba_priority = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'd': + do_dump_history = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'e': + count_missed_end_deadlines = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'i': + iterations = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'm': + print_missed_invocations = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'p': + test_protocol = get_opts.opt_arg (); + break; + + case 'r': + invocation_rate = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 's': + message_size = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 't': + print_statistics = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'u': + sender_ior = get_opts.opt_arg (); + break; + + case 'v': + distributor_ior = get_opts.opt_arg (); + break; + + case 'w': + receiver_ior = get_opts.opt_arg (); + break; + + case 'x': + shutdown_sender = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'y': + shutdown_distributor = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case 'z': + shutdown_receiver = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s\n" + "\t-a (defaults to %s [valid values are PACED, THROUGHPUT, and LATENCY)\n" + "\t-b (defaults to %d)\n" + "\t-c (defaults to %d)\n" + "\t-d (defaults to %d)\n" + "\t-e (defaults to %d)\n" + "\t-h \n" + "\t-i (defaults to %d)\n" + "\t-m (defaults to %d)\n" + "\t-p (defaults to %s [valid values are IIOP, DIOP, and SCIOP])\n" + "\t-r (defaults to %d)\n" + "\t-s (defaults to %d)\n" + "\t-t (defaults to %d)\n" + "\t-u (defaults to %s)\n" + "\t-v (defaults to %s)\n" + "\t-w (defaults to %s)\n" + "\t-x (defaults to %d)\n" + "\t-y (defaults to %d)\n" + "\t-z (defaults to %d)\n" + "\n", + argv[0], + test_type, + enable_diffserv_code_points, + corba_priority, + do_dump_history, + count_missed_end_deadlines, + iterations, + print_missed_invocations, + test_protocol, + invocation_rate, + message_size, + print_statistics, + sender_ior, + distributor_ior, + receiver_ior, + shutdown_sender, + shutdown_distributor, + shutdown_receiver), + -1); + } + + return 0; +} + +int +ACE_TMAIN(int argc, ACE_TCHAR *argv[]) +{ + try + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv); + + int result = + parse_args (argc, argv); + if (result != 0) + return result; + + CORBA::Object_var object = + orb->string_to_object (sender_ior); + + Protocols::Sender_var sender = + Protocols::Sender::_narrow (object.in ()); + + object = + orb->string_to_object (receiver_ior); + + CORBA::ULong test_protocol_tag = IOP::TAG_INTERNET_IOP; + if (ACE_OS::strcmp (test_protocol, ACE_TEXT("DIOP")) == 0) + test_protocol_tag = TAO_TAG_DIOP_PROFILE; + else if (ACE_OS::strcmp (test_protocol, ACE_TEXT("SCIOP")) == 0) + test_protocol_tag = TAO_TAG_SCIOP_PROFILE; + + Protocols::Sender_Controller::Test_Type test_type_tag = Protocols::Sender_Controller::PACED; + if (ACE_OS::strcmp (test_type, ACE_TEXT("THROUGHPUT")) == 0) + test_type_tag = Protocols::Sender_Controller::THROUGHPUT; + else if (ACE_OS::strcmp (test_type, ACE_TEXT("LATENCY")) == 0) + test_type_tag = Protocols::Sender_Controller::LATENCY; + + sender->start (iterations, + invocation_rate, + count_missed_end_deadlines, + do_dump_history, + print_missed_invocations, + message_size, + test_protocol_tag, + print_statistics, + number_of_connection_attempts, + enable_diffserv_code_points, + corba_priority, + test_type_tag); + + if (shutdown_sender) + sender->shutdown (); + + if (shutdown_distributor) + { + Protocols::Receiver_var distributor = + Protocols::Receiver::_narrow (object.in ()); + + distributor->shutdown (); + } + + if (shutdown_receiver) + { + Protocols::Receiver_var receiver = + Protocols::Receiver::_narrow (object.in ()); + + receiver->shutdown (); + } + + return 0; + } + catch (CORBA::Exception &exception) + { + ACE_ERROR ((LM_ERROR, + "Unexpected exception caught by client: %s (%s)\n", + exception._name (), + exception._rep_id ())); + + return -1; + } +} diff --git a/modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc b/modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc new file mode 100644 index 00000000000..af97a3d6520 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc @@ -0,0 +1,12 @@ +// $Id$ + +project (Protocols_Controller) : ccm_stub, rtcorba { + after += Protocols_Sender_stub \ + Protocols_Receiver_stub + includes += ../Sender + includes += ../Receiver + libs += Protocols_Receiver_stub \ + Protocols_Sender_stub \ + Protocols_stub + libpaths += ../common ../Sender ../Receiver +} diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl new file mode 100644 index 00000000000..94536a94bf4 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl @@ -0,0 +1,22 @@ +// $Id$ + +#include +#include "../common/Protocols.idl" +#include "../common/ProtocolsE.idl" + +module Protocols +{ + interface Receiver_Controller + { + void shutdown (); + }; + + component Receiver supports Receiver_Controller + { + provides test writer; + }; + + home ReceiverHome manages Receiver + { + }; +}; diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc new file mode 100644 index 00000000000..26ad7c41ce1 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc @@ -0,0 +1,116 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Protocols Receiver" + +project(Protocols_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + after += Protocols_idl_gen + idlflags += \ + -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h + + IDL_Files { + Receiver.idl + } +} + +project(Protocols_Receiver_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Protocols_Receiver_idl_gen + idlflags += -Wb,export_macro=RECEIVER_EXEC_Export \ + -Wb,export_include=Receiver_exec_export.h \ + -SS + + IDL_Files { + ReceiverE.idl + } +} + +project(Protocols_Receiver_stub) : ccm_stub { + after += Protocols_Receiver_idl_gen Protocols_stub + libs += Protocols_stub + libpaths += ../common + + sharedname = Protocols_Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverC.cpp + } + + Header_Files { + ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + ReceiverC.inl + } +} + +project(Protocols_Receiver_exec) : ciao_executor, avoids_ace_for_tao { + after += Protocols_Receiver_lem_gen Protocols_Receiver_stub + sharedname = Protocols_Receiver_exec + libs += Protocols_Receiver_stub \ + Protocols_stub + libpaths += ../common + + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverEC.cpp + Receiver_exec.cpp + } + + Header_Files { + ReceiverEC.h + Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + ReceiverEC.inl + } +} + + +project(Protocols_Receiver_svnt) : ciao_servant, avoids_ace_for_tao { + after += Protocols_skel Protocols_Receiver_exec + sharedname = Protocols_Receiver_svnt + libs += Protocols_Receiver_exec \ + Protocols_Receiver_stub \ + Protocols_skel \ + Protocols_stub + libpaths += ../common + + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverS.cpp + Receiver_svnt.cpp + } + + Header_Files { + ReceiverS.h + Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + ReceiverS.inl + } +} + + diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp new file mode 100644 index 00000000000..baa926d17b0 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp @@ -0,0 +1,287 @@ +// $Id$ + +#include "Receiver_exec.h" +#include "ace/Stats.h" +#include "ace/Throughput_Stats.h" +#include "tao/debug.h" + +static int do_dump_history = 0; +static int print_missed_invocations = 0; +static ACE_UINT32 gsf = 0; + +namespace CIDL_ReceiverImpl +{ + test_i::test_i (void) + : inter_arrival_times_ (0), + iterations_ (0), + session_id_ (-1) + { + gsf = ACE_High_Res_Timer::global_scale_factor (); + } + + void + test_i::start_test (CORBA::Long session_id, + const char *protocol, + CORBA::ULong invocation_rate, + CORBA::ULong message_size, + CORBA::ULong iterations) + { + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + "Session id starts %d\n", + session_id)); + + } + + ACE_DEBUG ((LM_DEBUG, + "Protocol = %5s Invocation Rate = %3d Message Size = %5d Expected Latency = %4d ", + protocol, + invocation_rate, + message_size, + 1000 / invocation_rate)); + + // Remember test parameters. + this->session_id_ = session_id; + this->iterations_ = iterations; + this->number_of_invocations_received_ = 0; + + // + // Initialize counters and tables. + // + this->inter_arrival_times_ = + new ACE_Sample_History (iterations); + + this->first_invocation_ = 1; + + this->invocations_received_.size (iterations); + for (CORBA::ULong i = 0; + i < iterations; + ++i) + this->invocations_received_[i] = 0; + + // Record start time. + this->test_start_ = + ACE_OS::gethrtime (); + } + + void + test_i::end_test (void) + { + // Record end time. + this->test_end_ = + ACE_OS::gethrtime (); + + if (do_dump_history) + { + this->inter_arrival_times_->dump_samples (ACE_TEXT("Inter-arrival times"), gsf); + } + + ACE_Basic_Stats stats; + this->inter_arrival_times_->collect_basic_stats (stats); + + ACE_DEBUG ((LM_DEBUG, + "Max Latency = %6d ", + stats.max_ / gsf / 1000)); + + ACE_DEBUG ((LM_DEBUG, + "Invocations expected / received / missed / missed %% = %6d / %6d / %6d / %5.2f\n", + this->iterations_, + this->number_of_invocations_received_, + this->iterations_ - this->number_of_invocations_received_, + (this->iterations_ - this->number_of_invocations_received_) / (double) this->iterations_ * 100)); + + if (print_missed_invocations) + { + ACE_DEBUG ((LM_DEBUG, "\nFollowing invocations were never received:\n")); + + for (CORBA::ULong i = 0; + i < this->iterations_; + ++i) + { + if (this->invocations_received_[i] == 0) + { + ACE_DEBUG ((LM_DEBUG, + "%d ", + i)); + } + } + + ACE_DEBUG ((LM_DEBUG, "\n")); + } + + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + "Session id ends %d\n", + this->session_id_)); + + stats.dump_results (ACE_TEXT("Inter-arrival times"), gsf); + + ACE_Throughput_Stats::dump_throughput (ACE_TEXT("Inter-arrival times"), gsf, + this->test_end_ - this->test_start_, + stats.samples_count ()); + } + + this->session_id_ = -1; + + delete this->inter_arrival_times_; + } + + void + test_i::oneway_sync (void) + { + } + + void + test_i::twoway_sync (void) + { + } + + void + test_i::oneway_method (CORBA::Long session_id, + CORBA::ULong iteration, + const Protocols::test::octets &payload) + { + if (this->session_id_ != session_id) + { + ACE_DEBUG ((LM_DEBUG, + "Late message with iteration id = %d: will not count message\n", + iteration)); + return; + } + + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + "test_i::oneway_method -> session id = %d iteration = %d payload size = %d\n", + session_id, + iteration, + payload.length ())); + } + + this->invocations_received_[iteration] = 1; + ++this->number_of_invocations_received_; + + ACE_hrtime_t time_of_current_call = + ACE_OS::gethrtime (); + + if (this->first_invocation_) + this->first_invocation_ = 0; + else + this->inter_arrival_times_->sample (time_of_current_call - this->time_of_last_call_); + + this->time_of_last_call_ = time_of_current_call; + } + + void + test_i::twoway_method (CORBA::Long &session_id, + CORBA::ULong &iteration, + Protocols::test::octets &payload) + { + if (this->session_id_ != session_id) + { + ACE_DEBUG ((LM_DEBUG, + "Late message with iteration id = %d: will not count message\n", + iteration)); + return; + } + + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + "test_i::twoway_method -> session id = %d iteration = %d payload size = %d\n", + session_id, + iteration, + payload.length ())); + } + + this->invocations_received_[iteration] = 1; + ++this->number_of_invocations_received_; + + ACE_hrtime_t time_of_current_call = + ACE_OS::gethrtime (); + + if (this->first_invocation_) + this->first_invocation_ = 0; + else + this->inter_arrival_times_->sample (time_of_current_call - this->time_of_last_call_); + + this->time_of_last_call_ = time_of_current_call; + } + + ReceiverExec_i::ReceiverExec_i (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ReceiverExec_i\n")); + + int argc = 0; + char **argv = 0; + + this->orb_ = + CORBA::ORB_init (argc, argv); + } + + ::Protocols::CCM_test_ptr + ReceiverExec_i::get_writer (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::get_writer\n")); + return new test_i; + } + + void + ReceiverExec_i::shutdown (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::shutdown\n")); + this->orb_->shutdown (); + } + + void + ReceiverExec_i::set_session_context (Components::SessionContext_ptr ctx) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::set_session_context\n")); + + this->context_ = + ::CIAO_Protocols_Receiver_Impl::Receiver_Exec_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); + } + + void + ReceiverExec_i::ccm_activate (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_activate\n")); + } + + void + ReceiverExec_i::ccm_passivate (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_passivate\n")); + } + + void + ReceiverExec_i::ccm_remove (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_remove\n")); + } + + void + ReceiverExec_i::configuration_complete (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::configuration_complete\n")); + } + + ::Components::EnterpriseComponent_ptr + ReceiverHomeExec_i::create (void) + { + ACE_DEBUG ((LM_DEBUG, "ReceiverHome_exec::create\n")); + return new ReceiverExec_i; + } + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + createReceiverHome_Impl (void) + { + ACE_DEBUG ((LM_DEBUG, "createReceiverHome_Impl\n")); + return new ReceiverHomeExec_i; + } +} diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h new file mode 100644 index 00000000000..d5213a5cb92 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h @@ -0,0 +1,94 @@ +// $Id$ + +#include "ReceiverEC.h" +#include "Receiver_exec_export.h" +#include "tao/LocalObject.h" +#include "ace/High_Res_Timer.h" +#include "ace/Sample_History.h" +#include "ace/Array.h" + +namespace CIDL_ReceiverImpl +{ + class RECEIVER_EXEC_Export ReceiverExec_i : + public virtual ::CIAO_Protocols_Receiver_Impl::Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + + ReceiverExec_i (void); + + ::Protocols::CCM_test_ptr get_writer (void); + + void shutdown (void); + + void set_session_context (Components::SessionContext_ptr ctx); + + void ccm_activate (void); + + void ccm_passivate (void); + + void ccm_remove (void); + + void configuration_complete (void); + + protected: + + ::CIAO_Protocols_Receiver_Impl::Receiver_Exec_Context_var context_; + + CORBA::ORB_var orb_; + + }; + + class RECEIVER_EXEC_Export test_i : + public virtual Protocols::CCM_test, + public virtual ::CORBA::LocalObject + { + public: + + test_i (void); + + void start_test (CORBA::Long session_id, + const char *protocol, + CORBA::ULong invocation_rate, + CORBA::ULong message_size, + CORBA::ULong iterations); + + void end_test (void); + + void oneway_sync (void); + + void twoway_sync (void); + + void oneway_method (CORBA::Long session_id, + CORBA::ULong iteration, + const Protocols::test::octets &payload); + + void twoway_method (CORBA::Long &session_id, + CORBA::ULong &iteration, + Protocols::test::octets &payload); + + private: + typedef ACE_Array_Base Invocations; + Invocations invocations_received_; + ACE_hrtime_t time_of_last_call_; + ACE_hrtime_t test_start_; + ACE_hrtime_t test_end_; + CORBA::Boolean first_invocation_; + ACE_Sample_History *inter_arrival_times_; + CORBA::ULong iterations_; + CORBA::ULong number_of_invocations_received_; + CORBA::Long session_id_; + }; + + class RECEIVER_EXEC_Export ReceiverHomeExec_i : + public virtual ::CIAO_Protocols_Receiver_Impl::ReceiverHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + + ::Components::EnterpriseComponent_ptr create (void); + }; + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + createReceiverHome_Impl (void); +} diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.cpp b/modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.cpp new file mode 100644 index 00000000000..bb503a6728f --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.cpp @@ -0,0 +1,133 @@ +// $Id$ + +#include "Custom_Network_Priority_Mapping.h" +#include "tao/debug.h" +#include "ace/Log_Msg.h" + +ACE_RCSID (Strategies, + Custom_Network_Priority_Mapping, + "$Id$") + +#define IPDSFIELD_DSCP_DEFAULT 0x00 +#define IPDSFIELD_DSCP_CS1 0x08 +#define IPDSFIELD_DSCP_CS2 0x10 +#define IPDSFIELD_DSCP_CS3 0x18 +#define IPDSFIELD_DSCP_CS4 0x20 +#define IPDSFIELD_DSCP_CS5 0x28 +#define IPDSFIELD_DSCP_CS6 0x30 +#define IPDSFIELD_DSCP_CS7 0x38 +#define IPDSFIELD_DSCP_AF11 0x0A +#define IPDSFIELD_DSCP_AF12 0x0C +#define IPDSFIELD_DSCP_AF13 0x0E +#define IPDSFIELD_DSCP_AF21 0x12 +#define IPDSFIELD_DSCP_AF22 0x14 +#define IPDSFIELD_DSCP_AF23 0x16 +#define IPDSFIELD_DSCP_AF31 0x1A +#define IPDSFIELD_DSCP_AF32 0x1C +#define IPDSFIELD_DSCP_AF33 0x1E +#define IPDSFIELD_DSCP_AF41 0x22 +#define IPDSFIELD_DSCP_AF42 0x24 +#define IPDSFIELD_DSCP_AF43 0x26 +#define IPDSFIELD_ECT_MASK 0x02 +#define IPDSFIELD_CE_MASK 0x01 +#define IPDSFIELD_DSCP_EF 0x2E + +static int dscp [] = +{ + IPDSFIELD_DSCP_DEFAULT , + IPDSFIELD_DSCP_CS1 , + IPDSFIELD_DSCP_CS2 , + IPDSFIELD_DSCP_CS3 , + IPDSFIELD_DSCP_CS4 , + IPDSFIELD_DSCP_CS5 , + IPDSFIELD_DSCP_CS6 , + IPDSFIELD_DSCP_CS7 , + IPDSFIELD_DSCP_AF11 , + IPDSFIELD_DSCP_AF12 , + IPDSFIELD_DSCP_AF13 , + IPDSFIELD_DSCP_AF21 , + IPDSFIELD_DSCP_AF22 , + IPDSFIELD_DSCP_AF23 , + IPDSFIELD_DSCP_AF31 , + IPDSFIELD_DSCP_AF32 , + IPDSFIELD_DSCP_AF33 , + IPDSFIELD_DSCP_AF41 , + IPDSFIELD_DSCP_AF42 , + IPDSFIELD_DSCP_AF43 , + IPDSFIELD_DSCP_EF +}; + +/* +static const char *dscp_char[]= +{ + "Normal", + "CS1", + "CS2", + "CS3", + "CS4", + "CS5", + "CS6", + "CS7", + "Assured Forwarding 11", + "Assured Forwarding 12", + "Assured Forwarding 13", + "Assured Forwarding 21", + "Assured Forwarding 22", + "Assured Forwarding 23", + "Assured Forwarding 31", + "Assured Forwarding 32", + "Assured Forwarding 33", + "Assured Forwarding 41", + "Assured Forwarding 42", + "Assured Forwarding 43", + "Expedited Forwarding" +}; +*/ + +Custom_Network_Priority_Mapping::Custom_Network_Priority_Mapping (void) + : corba_priority_ (RTCORBA::minPriority) +{ +} + +void +Custom_Network_Priority_Mapping::corba_priority (RTCORBA::Priority corba_priority) +{ + this->corba_priority_ = corba_priority; +} + +CORBA::Boolean +Custom_Network_Priority_Mapping::to_network (RTCORBA::Priority, + RTCORBA::NetworkPriority &network_priority) +{ + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, + "Custom_Network_Priority_Mapping::to_network corba_priority %d\n", + this->corba_priority_)); + + const int total_slots = sizeof (dscp) / sizeof (int); + + int array_slot = + static_cast (((this->corba_priority_ - RTCORBA::minPriority) / double (RTCORBA::maxPriority - RTCORBA::minPriority)) * total_slots); + + if (array_slot == total_slots) + array_slot -= 1; + + network_priority = dscp[array_slot]; + + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, + "Custom_Network_Priority_Mapping::to_network = %x\n", + network_priority)); + + return 1; +} + +CORBA::Boolean +Custom_Network_Priority_Mapping::to_CORBA (RTCORBA::NetworkPriority, + RTCORBA::Priority &) +{ + // This method should not be called. + ACE_ASSERT (0); + + return 0; +} diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.h b/modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.h new file mode 100644 index 00000000000..fac5d84a433 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Sender/Custom_Network_Priority_Mapping.h @@ -0,0 +1,58 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO +// +// = FILENAME +// Custom_Network_Priority_Mapping.h +// +// = DESCRIPTION +// Declares the Custom_Network_Priority_Mapping interface, +// +// = AUTHOR +// Yamuna Krishnamurthy (yamuna@oomworks.com) +// +// ============================================================================ + +#ifndef CUSTOM_NETWORK_PRIORITY_MAPPING_H +#define CUSTOM_NETWORK_PRIORITY_MAPPING_H + +#include /**/ "ace/pre.h" +#include "tao/RTCORBA/Network_Priority_Mapping.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class Custom_Network_Priority_Mapping : public TAO_Network_Priority_Mapping +{ + // + // = TITLE + // A simple implementation of the Network_Priority_Mapping interface + // + // = DESCRIPTION + // This implementation uses custom mapping between the range of + // priorities for a given scheduling class (ACE_SCHED_OTHER, + // ACE_SCHED_FIFO, ACE_SCHED_RR) and the valid range of CORBA + // priorities (0...32767) + // +public: + Custom_Network_Priority_Mapping (void); + + CORBA::Boolean to_network (RTCORBA::Priority corba_priority, + RTCORBA::NetworkPriority &network_priority); + + CORBA::Boolean to_CORBA (RTCORBA::NetworkPriority network_priority, + RTCORBA::Priority &corba_priority); + + void corba_priority (RTCORBA::Priority corba_priority); + + private: + RTCORBA::Priority corba_priority_; +}; + + +#include /**/ "ace/post.h" +#endif /* CUSTOM_NETWORK_PRIORITY_MAPPING_H */ diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender.idl b/modules/CIAO/performance-tests/Protocols/Sender/Sender.idl new file mode 100644 index 00000000000..200eaa0350a --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender.idl @@ -0,0 +1,41 @@ +// $Id$ + +#include +#include "../common/Protocols.idl" + +module Protocols +{ + interface Sender_Controller + { + enum Test_Type + { + PACED, + THROUGHPUT, + LATENCY + }; + + void start (in unsigned long iterations, + in unsigned long invocation_rate, + in boolean count_missed_end_deadlines, + in boolean do_dump_history, + in boolean print_missed_invocations, + in unsigned long message_size, + in unsigned long test_protocol_tag, + in boolean print_statistics, + in unsigned long number_of_connection_attempts, + in boolean enable_diffserv_code_points, + in short priority, + in Test_Type testtype); + + void shutdown (); + }; + + component Sender supports Sender_Controller + { + uses test reader; + }; + + home SenderHome manages Sender + { + }; +}; diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc b/modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc new file mode 100644 index 00000000000..8234f0546ec --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc @@ -0,0 +1,116 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Protocols Sender" + +project(Protocols_Sender_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h + + IDL_Files { + Sender.idl + } +} + +project(Protocols_Sender_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Protocols_Sender_idl_gen + idlflags += -Wb,export_macro=SENDER_EXEC_Export \ + -Wb,export_include=Sender_exec_export.h \ + -SS + + IDL_Files { + SenderE.idl + } +} + +project(Protocols_Sender_stub) : ccm_stub { + after += Protocols_Sender_idl_gen Protocols_stub + libs += Protocols_stub + libpaths += ../common + + sharedname = Protocols_Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderC.cpp + } + + Header_Files { + SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SenderC.inl + } +} + +project(Protocols_Sender_exec) : ciao_executor, rtcorba, avoids_ace_for_tao { + after += Protocols_Sender_lem_gen Protocols_Sender_stub + sharedname = Protocols_Sender_exec + libs += Protocols_Sender_stub \ + Protocols_stub + libpaths += ../common + includes += $(TAO_ROOT)/tests/RTCORBA/Diffserv + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Custom_Network_Priority_Mapping.cpp + SenderEC.cpp + Sender_exec.cpp + } + + Header_Files { + Custom_Network_Priority_Mapping.h + SenderEC.h + Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + SenderEC.inl + } +} + + +project(Protocols_Sender_svnt) : ciao_servant, avoids_ace_for_tao { + after += Protocols_skel Protocols_Sender_exec + sharedname = Protocols_Sender_svnt + libs += Protocols_Sender_exec \ + Protocols_Sender_stub \ + Protocols_skel \ + Protocols_stub + libpaths += ../common + + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderS.cpp + Sender_svnt.cpp + } + + Header_Files { + SenderS.h + Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + SenderS.inl + } +} + + diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp new file mode 100644 index 00000000000..b3cd02897df --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp @@ -0,0 +1,697 @@ +// $Id$ + +#include "tao/ORB_Constants.h" +#include "tao/debug.h" +#include "tao/RTCORBA/RTCORBA.h" +#include "tao/RTCORBA/Network_Priority_Mapping_Manager.h" +#include "tao/RTCORBA/Network_Priority_Mapping.h" +#include "tao/RTCORBA/RT_Policy_i.h" +#include "tao/Policy_ManagerC.h" +#include "ace/OS_NS_unistd.h" +#include "ace/OS_NS_string.h" +#include "ace/OS_NS_stdlib.h" +#include "ace/OS_NS_time.h" +#include "ace/High_Res_Timer.h" +#include "ace/Stats.h" +#include "ace/Throughput_Stats.h" +#include "ace/Array.h" +#include "ace/Sample_History.h" +#include "Custom_Network_Priority_Mapping.h" +#include "Sender_exec.h" + +static ACE_UINT32 gsf = 0; + +double +to_seconds (ACE_UINT64 hrtime, + ACE_UINT32 sf) +{ + double seconds = +#if defined ACE_LACKS_LONGLONG_T + hrtime / sf; +#else /* ! ACE_LACKS_LONGLONG_T */ + static_cast (ACE_UINT64_DBLCAST_ADAPTER (hrtime / sf)); +#endif /* ! ACE_LACKS_LONGLONG_T */ + seconds /= ACE_HR_SCALE_CONVERSION; + + return seconds; +} + +ACE_UINT64 +to_hrtime (double seconds, + ACE_UINT32 sf) +{ + return ACE_UINT64 (seconds * sf * ACE_HR_SCALE_CONVERSION); +} + +class Worker +{ +public: + Worker (CORBA::ORB_ptr orb, + RTCORBA::RTORB_ptr rtorb, + CORBA::PolicyManager_ptr policy_manager, + Protocols::test_ptr test, + ::CORBA::ULong iterations, + ::CORBA::ULong invocation_rate, + ::CORBA::Boolean count_missed_end_deadlines, + ::CORBA::Boolean do_dump_history, + ::CORBA::Boolean print_missed_invocations, + ::CORBA::ULong message_size, + ::CORBA::ULong test_protocol_tag, + ::CORBA::ULong number_of_connection_attempts, + ::CORBA::Boolean enable_diffserv_code_points, + ::Protocols::Sender_Controller::Test_Type test_type); + + void run (void); + + void print_stats (void); + + void setup (void); + +private: + + ACE_hrtime_t deadline_for_current_call (CORBA::ULong i); + void missed_start_deadline (CORBA::ULong invocation); + void missed_end_deadline (CORBA::ULong invocation); + + RTCORBA::RTORB_var rtorb_; + CORBA::PolicyManager_var policy_manager_; + Protocols::test_var test_; + ACE_Sample_History history_; + ACE_hrtime_t interval_between_calls_; + ACE_hrtime_t test_start_; + ACE_hrtime_t test_end_; + CORBA::ULong missed_start_deadlines_; + CORBA::ULong missed_end_deadlines_; + + typedef ACE_Array_Base Missed_Invocations; + Missed_Invocations missed_start_invocations_; + Missed_Invocations missed_end_invocations_; + + CORBA::PolicyList base_protocol_policy_; + CORBA::PolicyList test_protocol_policy_; + + CORBA::Long session_id_; + + ::CORBA::ULong iterations_; + ::CORBA::ULong invocation_rate_; + ::CORBA::Boolean count_missed_end_deadlines_; + ::CORBA::Boolean do_dump_history_; + ::CORBA::Boolean print_missed_invocations_; + ::CORBA::ULong message_size_; + ::CORBA::ULong test_protocol_tag_; + ::CORBA::ULong number_of_connection_attempts_; + ::CORBA::Boolean enable_diffserv_code_points_; + ::Protocols::Sender_Controller::Test_Type test_type_; +}; + +Worker::Worker (CORBA::ORB_ptr orb, + RTCORBA::RTORB_ptr rtorb, + CORBA::PolicyManager_ptr policy_manager, + Protocols::test_ptr test, + ::CORBA::ULong iterations, + ::CORBA::ULong invocation_rate, + ::CORBA::Boolean count_missed_end_deadlines, + ::CORBA::Boolean do_dump_history, + ::CORBA::Boolean print_missed_invocations, + ::CORBA::ULong message_size, + ::CORBA::ULong test_protocol_tag, + ::CORBA::ULong number_of_connection_attempts, + ::CORBA::Boolean enable_diffserv_code_points, + ::Protocols::Sender_Controller::Test_Type test_type) + : rtorb_ (RTCORBA::RTORB::_duplicate (rtorb)), + policy_manager_ (CORBA::PolicyManager::_duplicate (policy_manager)), + test_ (Protocols::test::_duplicate (test)), + history_ (iterations), + interval_between_calls_ (), + missed_start_deadlines_ (0), + missed_end_deadlines_ (0), + missed_start_invocations_ (iterations), + missed_end_invocations_ (iterations), + iterations_ (iterations), + invocation_rate_ (invocation_rate), + count_missed_end_deadlines_ (count_missed_end_deadlines), + do_dump_history_ (do_dump_history), + print_missed_invocations_ (print_missed_invocations), + message_size_ (message_size), + test_protocol_tag_ (test_protocol_tag), + number_of_connection_attempts_ (number_of_connection_attempts), + enable_diffserv_code_points_ (enable_diffserv_code_points), + test_type_ (test_type) +{ + // Each sender will have a random session id. This helps in + // identifying late packets arriving at the server. + ACE_OS::srand ((unsigned) ACE_OS::time (0)); + this->session_id_ = ACE_OS::rand (); + + // Interval is inverse of rate. + this->interval_between_calls_ = + to_hrtime (1 / double (this->invocation_rate_), gsf); + + // Base protocol is used for setting up and tearing down the test. + this->base_protocol_policy_.length (1); + + // Test protocol is the one being tested. + this->test_protocol_policy_.length (1); + + RTCORBA::ProtocolProperties_var base_transport_protocol_properties = + TAO_Protocol_Properties_Factory::create_transport_protocol_property (IOP::TAG_INTERNET_IOP, + orb->orb_core ()); + + RTCORBA::TCPProtocolProperties_var tcp_base_transport_protocol_properties = + RTCORBA::TCPProtocolProperties::_narrow (base_transport_protocol_properties.in ()); + + tcp_base_transport_protocol_properties->enable_network_priority (this->enable_diffserv_code_points_); + + RTCORBA::ProtocolList protocols; + protocols.length (1); + protocols[0].transport_protocol_properties = + base_transport_protocol_properties; + protocols[0].orb_protocol_properties = + RTCORBA::ProtocolProperties::_nil (); + + // IIOP is always used for the base protocol. + protocols[0].protocol_type = IOP::TAG_INTERNET_IOP; + + this->base_protocol_policy_[0] = + this->rtorb_->create_client_protocol_policy (protocols); + + // User decides the test protocol. + protocols[0].protocol_type = test_protocol_tag; + + RTCORBA::ProtocolProperties_var test_transport_protocol_properties = + TAO_Protocol_Properties_Factory::create_transport_protocol_property (protocols[0].protocol_type, + orb->orb_core ()); + + if (protocols[0].protocol_type == TAO_TAG_DIOP_PROFILE) + { + RTCORBA::UserDatagramProtocolProperties_var udp_test_transport_protocol_properties = + RTCORBA::UserDatagramProtocolProperties::_narrow (test_transport_protocol_properties.in ()); + + udp_test_transport_protocol_properties->enable_network_priority (enable_diffserv_code_points); + } + else if (protocols[0].protocol_type == TAO_TAG_SCIOP_PROFILE) + { + RTCORBA::StreamControlProtocolProperties_var sctp_test_transport_protocol_properties = + RTCORBA::StreamControlProtocolProperties::_narrow (test_transport_protocol_properties.in ()); + + sctp_test_transport_protocol_properties->enable_network_priority (enable_diffserv_code_points); + } + else if (protocols[0].protocol_type == IOP::TAG_INTERNET_IOP) + { + RTCORBA::TCPProtocolProperties_var tcp_test_transport_protocol_properties = + RTCORBA::TCPProtocolProperties::_narrow (test_transport_protocol_properties.in ()); + + tcp_test_transport_protocol_properties->enable_network_priority (enable_diffserv_code_points); + } + + protocols[0].transport_protocol_properties = + test_transport_protocol_properties; + + this->test_protocol_policy_[0] = + this->rtorb_->create_client_protocol_policy (protocols); +} + +void +Worker::print_stats (void) +{ + CORBA::ULong missed_total_deadlines = + this->missed_start_deadlines_ + this->missed_end_deadlines_; + + CORBA::ULong made_total_deadlines = + this->iterations_ - missed_total_deadlines; + + ACE_DEBUG ((LM_DEBUG, + "\n************ Statistics ************\n\n")); + + // + // Senders-side stats for PACED invocations are not too relevant + // since we are doing one way calls. + // + if (this->test_type_ == ::Protocols::Sender_Controller::PACED) + { + ACE_DEBUG ((LM_DEBUG, + "Rate = %d/sec; Iterations = %d; ", + this->invocation_rate_, + this->iterations_)); + + if (this->count_missed_end_deadlines_) + ACE_DEBUG ((LM_DEBUG, + "Deadlines made/missed[start,end]/%% = %d/%d[%d,%d]/%.2f%%; Effective Rate = %.2f\n", + made_total_deadlines, + missed_total_deadlines, + this->missed_start_deadlines_, + this->missed_end_deadlines_, + made_total_deadlines * 100 / (double) this->iterations_, + made_total_deadlines / to_seconds (this->test_end_ - this->test_start_, gsf))); + else + ACE_DEBUG ((LM_DEBUG, + "Deadlines made/missed/%% = %d/%d/%.2f%%; Effective Rate = %.2f\n", + made_total_deadlines, + missed_total_deadlines, + made_total_deadlines * 100 / (double) this->iterations_, + made_total_deadlines / to_seconds (this->test_end_ - this->test_start_, gsf))); + + if (this->print_missed_invocations_) + { + ACE_DEBUG ((LM_DEBUG, "\nMissed start invocations are:\n")); + + for (CORBA::ULong j = 0; + j < this->missed_start_deadlines_; + ++j) + { + ACE_DEBUG ((LM_DEBUG, + "%d ", + this->missed_start_invocations_[j])); + } + + ACE_DEBUG ((LM_DEBUG, "\n")); + + if (this->count_missed_end_deadlines_) + { + ACE_DEBUG ((LM_DEBUG, "\nMissed end invocations are:\n")); + + for (CORBA::ULong j = 0; + j < this->missed_end_deadlines_; + ++j) + { + ACE_DEBUG ((LM_DEBUG, + "%d ", + this->missed_end_invocations_[j])); + } + + ACE_DEBUG ((LM_DEBUG, "\n")); + } + } + } + + // Individual calls are relevant for the PACED and LATENCY tests. + if (this->test_type_ == ::Protocols::Sender_Controller::PACED || + this->test_type_ == ::Protocols::Sender_Controller::LATENCY) + { + if (this->do_dump_history_) + { + this->history_.dump_samples (ACE_TEXT("HISTORY"), gsf); + } + + ACE_Basic_Stats stats; + this->history_.collect_basic_stats (stats); + stats.dump_results (ACE_TEXT("Total"), gsf); + + ACE_Throughput_Stats::dump_throughput (ACE_TEXT("Total"), gsf, + this->test_end_ - this->test_start_, + this->iterations_); + } + else + { + ACE_hrtime_t elapsed_time = + this->test_end_ - this->test_start_; + + double seconds = + to_seconds (elapsed_time, gsf); + + ACE_hrtime_t bits = this->iterations_; + bits *= this->message_size_ * 8; + + ACE_DEBUG ((LM_DEBUG, + "%Q bits sent in %5.1f seconds at a rate of %5.2f Mbps\n", + bits, + seconds, + bits / seconds / 1000 / 1000)); + } +} + +ACE_hrtime_t +Worker::deadline_for_current_call (CORBA::ULong i) +{ + ACE_hrtime_t deadline_for_current_call = + this->interval_between_calls_; + + deadline_for_current_call *= (i + 1); + + deadline_for_current_call += this->test_start_; + + return deadline_for_current_call; +} + +void +Worker::missed_start_deadline (CORBA::ULong invocation) +{ + this->missed_start_invocations_[this->missed_start_deadlines_++] = + invocation; +} + +void +Worker::missed_end_deadline (CORBA::ULong invocation) +{ + if (this->count_missed_end_deadlines_) + this->missed_end_invocations_[this->missed_end_deadlines_++] = + invocation; +} + +void +Worker::setup (void) +{ + // Make sure we have a connection to the server using the test + // protocol. + this->policy_manager_->set_policy_overrides (this->test_protocol_policy_, + CORBA::SET_OVERRIDE); + + // Since the network maybe unavailable temporarily, make sure to try + // for a few times before giving up. + for (CORBA::ULong j = 0;;) + { + try + { + // Send a message to ensure that the connection is setup. + this->test_->oneway_sync (); + + break; + } + catch (CORBA::TRANSIENT &) + { + ++j; + + if (j < this->number_of_connection_attempts_) + { + ACE_OS::sleep (1); + + continue; + } + } + + ACE_ERROR ((LM_ERROR, + "Cannot setup test protocol\n")); + + ACE_OS::exit (-1); + } + + const char *test_protocol = 0; + if (this->test_protocol_tag_ == IOP::TAG_INTERNET_IOP) + test_protocol = "IIOP"; + else if (this->test_protocol_tag_ == TAO_TAG_DIOP_PROFILE) + test_protocol = "DIOP"; + else if (this->test_protocol_tag_ == TAO_TAG_SCIOP_PROFILE) + test_protocol = "SCIOP"; + + // Use IIOP for setting up the test since the test protocol maybe + // unreliable. + this->policy_manager_->set_policy_overrides (this->base_protocol_policy_, + CORBA::SET_OVERRIDE); + + // Since the network maybe unavailable temporarily, make sure to try + // for a few times before giving up. + for (CORBA::ULong k = 0;;) + { + try + { + // Let the server know what to expect.. + this->test_->start_test (this->session_id_, + test_protocol, + this->invocation_rate_, + this->message_size_, + this->iterations_); + + break; + } + catch (CORBA::TRANSIENT &) + { + ACE_OS::sleep (1); + + if (k < this->number_of_connection_attempts_) + { + ACE_OS::sleep (1); + + continue; + } + } + + ACE_ERROR ((LM_ERROR, + "Cannot setup base protocol\n")); + + ACE_OS::exit (-1); + } + + return; +} + +void +Worker::run (void) +{ + // Select the test protocol for these invocation. + this->policy_manager_->set_policy_overrides (this->test_protocol_policy_, + CORBA::SET_OVERRIDE); + + // Payload. + ::Protocols::test::octets_var payload (new ::Protocols::test::octets); + payload->length (this->message_size_); + + CORBA::Octet *buffer = + payload->get_buffer (); + + // Not necessary but good for debugging. + ACE_OS::memset (buffer, + 1, + this->message_size_ * sizeof (CORBA::Octet)); + + // Record the start time of the test. + this->test_start_ = + ACE_OS::gethrtime (); + + // Test with several iterations. + for (CORBA::ULong i = 0; + i < this->iterations_; + ++i) + { + ACE_hrtime_t time_before_call = 0; + ACE_hrtime_t deadline_for_current_call = 0; + + // For PACED and LATENCY, each sender call is individually + // noted. + if (this->test_type_ == ::Protocols::Sender_Controller::PACED || + this->test_type_ == ::Protocols::Sender_Controller::LATENCY) + { + time_before_call = + ACE_OS::gethrtime (); + + // Pacing code. + if (this->test_type_ == ::Protocols::Sender_Controller::PACED) + { + deadline_for_current_call = + this->deadline_for_current_call (i); + + if (time_before_call > deadline_for_current_call) + { + this->missed_start_deadline (i); + continue; + } + } + } + + // Use oneways for PACING and THROUGHPUT. + if (this->test_type_ == ::Protocols::Sender_Controller::PACED || + this->test_type_ == ::Protocols::Sender_Controller::THROUGHPUT) + { + this->test_->oneway_method (this->session_id_, + i, + payload.in ()); + } + else + { + // Use twoway calls for LATENCY. + this->test_->twoway_method (this->session_id_, + i, + payload.inout ()); + } + + // For PACED and LATENCY, each sender call is individually + // noted. + if (this->test_type_ == ::Protocols::Sender_Controller::PACED || + this->test_type_ == ::Protocols::Sender_Controller::LATENCY) + { + ACE_hrtime_t time_after_call = + ACE_OS::gethrtime (); + + if (this->test_type_ == ::Protocols::Sender_Controller::LATENCY) + this->history_.sample ((time_after_call - time_before_call) / 2); + else + this->history_.sample (time_after_call - time_before_call); + + if (this->test_type_ == ::Protocols::Sender_Controller::PACED) + { + if (time_after_call > deadline_for_current_call) + { + this->missed_end_deadline (i); + continue; + } + + ACE_hrtime_t sleep_time = + deadline_for_current_call - time_after_call; + + ACE_OS::sleep (ACE_Time_Value (0, + long (to_seconds (sleep_time, gsf) * + ACE_ONE_SECOND_IN_USECS))); + } + } + } + + // This call is used to ensure that all the THROUGHPUT related data + // has reached the server. + if (this->test_type_ == ::Protocols::Sender_Controller::THROUGHPUT && + this->test_protocol_tag_ != TAO_TAG_DIOP_PROFILE) + { + this->test_->twoway_sync (); + } + + // Record end time for the test. + this->test_end_ = ACE_OS::gethrtime (); + + // Use IIOP to indicate end of test to server. + this->policy_manager_->set_policy_overrides (this->base_protocol_policy_, + CORBA::SET_OVERRIDE); + + // Tell server that the test is over. + this->test_->end_test (); +} + +CIDL_SenderImpl::SenderExec_i::SenderExec_i (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::SenderExec_i\n")); +} + +void +CIDL_SenderImpl::SenderExec_i::start ( + ::CORBA::ULong iterations, + ::CORBA::ULong invocation_rate, + ::CORBA::Boolean count_missed_end_deadlines, + ::CORBA::Boolean do_dump_history, + ::CORBA::Boolean print_missed_invocations, + ::CORBA::ULong message_size, + ::CORBA::ULong test_protocol_tag, + ::CORBA::Boolean print_statistics, + ::CORBA::ULong number_of_connection_attempts, + ::CORBA::Boolean enable_diffserv_code_points, + ::CORBA::Short priority, + ::Protocols::Sender_Controller::Test_Type test_type + ) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::start\n")); + + gsf = ACE_High_Res_Timer::global_scale_factor (); + + int argc = 0; + char **argv = 0; + + this->orb_ = + CORBA::ORB_init (argc, argv); + + CORBA::Object_var object = + this->orb_->resolve_initial_references ("RTORB"); + + RTCORBA::RTORB_var rtorb = + RTCORBA::RTORB::_narrow (object.in ()); + + object = + this->orb_->resolve_initial_references ("ORBPolicyManager"); + + CORBA::PolicyManager_var policy_manager = + CORBA::PolicyManager::_narrow (object.in ()); + + object = + this->orb_->resolve_initial_references ("NetworkPriorityMappingManager"); + + RTCORBA::NetworkPriorityMappingManager_var mapping_manager = + RTCORBA::NetworkPriorityMappingManager::_narrow (object.in ()); + + Custom_Network_Priority_Mapping *custom_network_priority_mapping = + new Custom_Network_Priority_Mapping; + + // Set the desired corba priority on the network mapping manager + custom_network_priority_mapping->corba_priority (priority); + + mapping_manager->mapping (custom_network_priority_mapping); + + Protocols::test_var test = + this->context_->get_connection_reader (); + + Worker worker (this->orb_.in (), + rtorb.in (), + policy_manager.in (), + test.in (), + iterations, + invocation_rate, + count_missed_end_deadlines, + do_dump_history, + print_missed_invocations, + message_size, + test_protocol_tag, + number_of_connection_attempts, + enable_diffserv_code_points, + test_type); + + worker.setup (); + + worker.run (); + + if (print_statistics) + worker.print_stats (); +} + +void +CIDL_SenderImpl::SenderExec_i::shutdown (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::shutdown\n")); + this->orb_->shutdown (); +} + +void +CIDL_SenderImpl::SenderExec_i::set_session_context ( + Components::SessionContext_ptr ctx + ) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::set_session_context\n")); + + this->context_ = + ::CIAO_Protocols_Sender_Impl::Sender_Exec_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + throw CORBA::INTERNAL (); +} + +void +CIDL_SenderImpl::SenderExec_i::ccm_activate (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_activate\n")); +} + +void +CIDL_SenderImpl::SenderExec_i::ccm_passivate (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_passivate\n")); +} + +void +CIDL_SenderImpl::SenderExec_i::ccm_remove (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_remove\n")); +} + + +void +CIDL_SenderImpl::SenderExec_i::configuration_complete (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::configuration_complete\n")); +} + +::Components::EnterpriseComponent_ptr +CIDL_SenderImpl::SenderHomeExec_i::create (void) +{ + ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderHome_exec::create\n")); + return new CIDL_SenderImpl::SenderExec_i; +} + +extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr +createSenderHome_Impl (void) +{ + ACE_DEBUG ((LM_DEBUG, "createSenderHome_Impl\n")); + return new CIDL_SenderImpl::SenderHomeExec_i; +} diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h new file mode 100644 index 00000000000..9d2d307a406 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h @@ -0,0 +1,62 @@ +// $Id$ + +#include "SenderEC.h" +#include "Sender_exec_export.h" +#include "tao/LocalObject.h" + +class Custom_Network_Priority_Mapping; + +namespace CIDL_SenderImpl +{ + class SENDER_EXEC_Export SenderExec_i : + public virtual ::CIAO_Protocols_Sender_Impl::Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + + SenderExec_i (void); + + void start (::CORBA::ULong iterations, + ::CORBA::ULong invocation_rate, + ::CORBA::Boolean count_missed_end_deadlines, + ::CORBA::Boolean do_dump_history, + ::CORBA::Boolean print_missed_invocations, + ::CORBA::ULong message_size, + ::CORBA::ULong test_protocol_tag, + ::CORBA::Boolean print_statistics, + ::CORBA::ULong number_of_connection_attempts, + ::CORBA::Boolean enable_diffserv_code_points, + ::CORBA::Short priority, + ::Protocols::Sender_Controller::Test_Type test_type); + + void shutdown (void); + + void set_session_context (Components::SessionContext_ptr ctx); + + void ccm_activate (void); + + void ccm_passivate (void); + + void ccm_remove (void); + + void configuration_complete (void); + + protected: + ::CIAO_Protocols_Sender_Impl::Sender_Exec_Context_var context_; + + CORBA::ORB_var orb_; + + }; + + class SENDER_EXEC_Export SenderHomeExec_i : + public virtual ::CIAO_Protocols_Sender_Impl::SenderHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + + ::Components::EnterpriseComponent_ptr create (void); + }; + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + createSenderHome_Impl (void); +} diff --git a/modules/CIAO/performance-tests/Protocols/common/Protocols.idl b/modules/CIAO/performance-tests/Protocols/common/Protocols.idl new file mode 100644 index 00000000000..c7b3360e61a --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/common/Protocols.idl @@ -0,0 +1,32 @@ +// $Id$ +#ifndef PROTOCOLS_IDL +#define PROTOCOLS_IDL +module Protocols +{ + interface test + { + void start_test (in long session_id, + in string protocol, + in unsigned long invocation_rate, + in unsigned long message_size, + in unsigned long iterations); + + void end_test (); + + oneway void oneway_sync (); + + void twoway_sync (); + + typedef sequence octets; + + oneway void oneway_method (in long session_id, + in unsigned long iteration, + in octets payload); + + void twoway_method (inout long session_id, + inout unsigned long iteration, + inout octets payload); + }; +}; + +#endif diff --git a/modules/CIAO/performance-tests/Protocols/common/Protocols.mpc b/modules/CIAO/performance-tests/Protocols/common/Protocols.mpc new file mode 100644 index 00000000000..35c83ec727b --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/common/Protocols.mpc @@ -0,0 +1,78 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Protocols" + +project(Protocols_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=PROTOCOLS_STUB_Export \ + -Wb,stub_export_include=Protocols_stub_export.h \ + -Wb,skel_export_macro=PROTOCOLS_SKEL_Export \ + -Wb,skel_export_include=Protocols_skel_export.h + + IDL_Files { + Protocols.idl + } +} + +project(Protocols_lem_gen) : ciaoidldefaults { + after += Protocols_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=PROTOCOLS_STUB_Export \ + -Wb,stub_export_include=Protocols_stub_export.h \ + -Wb,skel_export_macro=PROTOCOLS_SKEL_Export \ + -Wb,skel_export_include=Protocols_skel_export.h -SS + + IDL_Files { + ProtocolsE.idl + } +} + +project(Protocols_stub) : ccm_stub { + after += Protocols_lem_gen + + sharedname = Protocols_stub + dynamicflags = PROTOCOLS_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ProtocolsC.cpp + ProtocolsEC.cpp + } + + Header_Files { + ProtocolsC.h + Protocols_stub_export.h + } + + Inline_Files { + ProtocolsC.inl + } +} + + +project(Protocols_skel) : ciao_executor { + after += Protocols_stub + sharedname = Protocols_skel + libs += Protocols_stub + + dynamicflags = PROTOCOLS_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ProtocolsS.cpp + } + + Header_Files { + ProtocolsS.h + Protocols_skel_export.h + } + + Inline_Files { + ProtocolsS.inl + } +} + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini b/modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini new file mode 100644 index 00000000000..379d481d131 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini @@ -0,0 +1,5 @@ +[ComponentInstallation] +DCE:83d9348a-3248-445c-82c6-e38294943d65=Protocols_Sender_exec +DCE:2c16cd81-a364-4422-b9e0-ee2ebe084954=Protocols_Sender_svnt +DCE:6b6d29ca-c6e7-4823-806d-157113767331=Protocols_Receiver_svnt +DCE:34b61767-2b7d-459d-985d-ece6255275d5=Protocols_Receiver_exec diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd new file mode 100644 index 00000000000..44606201edc --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd @@ -0,0 +1,40 @@ + + + + + + + + + CORBA Component + + Receiver + + + + + + + + + + + + + + + + + + + + + + createReceiverHome_Impl + + + + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd new file mode 100644 index 00000000000..83f896c5416 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd @@ -0,0 +1,37 @@ + + + + + + + + + CIAO Servant + + componentizedSender::Receiver Servants + + + + + + + + + + + + + TAO + + + + + + createReceiverHome_Servant + + + + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd new file mode 100644 index 00000000000..f2d899f3338 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd @@ -0,0 +1,40 @@ + + + + + + + + + CORBA Component + + Sender + + + + + + + + + + + + + + + + + + + + + + createSenderHome_Impl + + + + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd new file mode 100644 index 00000000000..411bbbc66d6 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd @@ -0,0 +1,37 @@ + + + + + + + + + CIAO Servant + + componentizedSender::Sender Servants + + + + + + + + + + + + + TAO + + + + + + createSenderHome_Servant + + + + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/default.cad b/modules/CIAO/performance-tests/Protocols/descriptors/default.cad new file mode 100644 index 00000000000..7f518423e70 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/default.cad @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + reader + + + + writer + + + + + + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/remote.cad b/modules/CIAO/performance-tests/Protocols/descriptors/remote.cad new file mode 100644 index 00000000000..d17a09a25e8 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/remote.cad @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remote + + + + + + + + + reader + + + + writer + + + + + + + diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl b/modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl new file mode 100755 index 00000000000..9683f61c553 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl @@ -0,0 +1,87 @@ +# -*- perl -*- +# $Id$ + +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = $ENV {'CIAO_ROOT'}; + +$ORBdebuglevel = 0; +$protocols = "-ORBEndpoint \'iiop://\'"; +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$ior_ambase = "assembly_manager.ior"; +$ior_daemonbase = "daemon.ior"; +$ior_senderbase = "sender.ior"; +$ior_receiverbase = "receiver.ior"; +$ior_assemblybase = "assembly.ior"; + +$ior_amfile = $tg->LocalFile ($ior_ambase); +$tg->LocalFile ($ior_daemonbase); +$tg->LocalFile ($ior_senderbase); +$tg->LocalFile ($ior_receiverbase); +$tg->LocalFile ($ior_assemblybase); + +$daemon_1 = $tg->CreateProcess ("${CIAO_ROOT}/tools/Daemon/CIAO_Daemon", + "-ORBEndpoint iiop://localhost:20000 " . + "-n \"${CIAO_ROOT}/tools/RTComponentServer/RTComponentServer -ORBdebuglevel $ORBdebuglevel\""); + +$daemon_2 = $tg->CreateProcess ("${CIAO_ROOT}/tools/Daemon/CIAO_Daemon", + "-ORBEndpoint iiop://localhost:12000 " . + "-n \"${CIAO_ROOT}/tools/RTComponentServer/RTComponentServer -ORBdebuglevel $ORBdebuglevel $protocols\""); + +$assembly_manager_args = "-o $ior_amfile -c test.dat"; +$assembly_manager = $tg->CreateProcess ("${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager", "$assembly_manager_args"); + +$assembly_deployer_args = "-k file://$ior_amfile -a remote.cad -o assembly"; +$assembly_deployer = $tg->CreateProcess ("${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer", "$assembly_deployer_args"); + +$controller = $tg->CreateProcess ("../Controller/Controller", "-x 1 -z 1"); + +# Remove all ior files +$tg->DeleteFile ($ior_ambase); +$tg->DeleteFile ($ior_daemonbase); +$tg->DeleteFile ($ior_senderbase); +$tg->DeleteFile ($ior_receiverbase); +$tg->DeleteFile ($ior_assemblybase); + +# Start the daemons. +$daemon_1->Spawn (); +$daemon_2->Spawn (); + +# Start the assembly manager +$assembly_manager->Spawn (); + +# Wait till the assembly manager finishes writing the IOR +$tg->WaitForFileTimed($ior_ambase, $tg->ProcessStartWaitInterval ()); + +# Start the Assembly_Deployer +$assembly_deployer->Spawn (); + +# Wait till the sender and receiver to finish writing their IORs +$tg->WaitForFileTimed($ior_senderbase, $tg->ProcessStartWaitInterval ()); +$tg->WaitForFileTimed($ior_receiverbase, $tg->ProcessStartWaitInterval ()); + +# Now start the controller +$controller->Spawn (); + +# Wait for controller to get done. +$controller->Wait (); +$controller->{RUNNING} = 0; + +# Kill daemons. +$daemon_1->Kill (); +$daemon_2->Kill (); +$assembly_manager->Kill (); +$assembly_deployer->Kill (); + +# Remove all ior files +$tg->DeleteFile ($ior_ambase); +$tg->DeleteFile ($ior_daemonbase); +$tg->DeleteFile ($ior_senderbase); +$tg->DeleteFile ($ior_receiverbase); +$tg->DeleteFile ($ior_assemblybase); diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/svc.conf b/modules/CIAO/performance-tests/Protocols/descriptors/svc.conf new file mode 100644 index 00000000000..711df131ebc --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/svc.conf @@ -0,0 +1 @@ +dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory() diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/test.dat b/modules/CIAO/performance-tests/Protocols/descriptors/test.dat new file mode 100644 index 00000000000..57f2cfb0c76 --- /dev/null +++ b/modules/CIAO/performance-tests/Protocols/descriptors/test.dat @@ -0,0 +1,2 @@ +Default corbaloc:iiop:localhost:20000/ServerActivator +Remote corbaloc:iiop:localhost:12000/ServerActivator \ No newline at end of file diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/README b/modules/CIAO/performance-tests/mico/mico-thrput-st/README new file mode 100644 index 00000000000..ee534c0c0a4 --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/README @@ -0,0 +1,26 @@ +// +//$Id$ +// +Throughput Experiment +==================== + +This experiment is used to gather latency and throughput related metrics for MICO ORB. +The benchmark uses ACE to analyze the data sample and generate results. In order to run +this benchmark the following is required + +1: MICO ORB configured in single-threaded mode +2: This directory placed under $MICO_ROOT/demo/ +3: The envrionment setting required for running this test is provided in + the mico-env file. +4: These tests can only run on *nix systems as of now. For windows project files will + be added shortly + +Compilation +=========== +To compile the files + +$make + +To run the experiment +===================== +./RoundTrip diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip new file mode 100755 index 00000000000..395ef4f73e4 --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip @@ -0,0 +1,40 @@ +#!/bin/sh + +MICORC=/dev/null +export MICORC + +# run Naming Service + +echo "Starting Naming Service ..." + +rm -f nsd.ior +nsd --ior nsd.ior & +nsd_pid=$! + +trap "kill $nsd_pid > /dev/null 2> /dev/null" 0 + +# wait for Naming Service to start + +for i in 0 1 2 3 4 5 6 7 8 9 ; do + if test -r nsd.ior ; then break ; else sleep 1 ; fi +done + +# start Server + +echo "Starting Server ..." + +./server -ORBInitRef NameService=file://`pwd`/nsd.ior & +server_pid=$! + +trap "kill $nsd_pid $server_pid > /dev/null 2> /dev/null" 0 + +# give server some time to start + +sleep 3 + +# run Client + +echo "Running Client ..." + +./client -ORBInitRef NameService=file://`pwd`/nsd.ior -i 500000 + diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl new file mode 100644 index 00000000000..475433dfec4 --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl @@ -0,0 +1,13 @@ +//$Id$ +interface Roundtrip +{ + /// A simple method to measure roundtrip delays + /** + * The operation simply returns its argument, this is used in AMI + * and deferred synchronous tests to measure the roundtrip delay + * without the need for a different reply handler for each + * request. + */ + unsigned long long test_method (in unsigned long long send_time); + +}; diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc new file mode 100644 index 00000000000..88338765186 --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc @@ -0,0 +1,10 @@ +// +//$Id$ +// + +#include "RoundTrip_impl.h" + +CORBA::ULongLong RoundTrip_impl::test_method (CORBA::ULongLong send_time) +{ + return send_time; +} diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h new file mode 100644 index 00000000000..86213cf1b9d --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h @@ -0,0 +1,9 @@ +// +//$Id$ +// +#include "RoundTrip.h" + +class RoundTrip_impl : virtual public POA_Roundtrip { + public: + CORBA::ULongLong test_method (CORBA::ULongLong send_time); +}; diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc b/modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc new file mode 100644 index 00000000000..8c3a1529975 --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc @@ -0,0 +1,150 @@ +// +//$Id$ +// +//FUZZ: disable check_for_missing_rir_env + +#define USE_POA +//#define NESTED + +#include +#include + +#ifdef HAVE_ANSI_CPLUSPLUS_HEADERS +#include +#else // HAVE_ANSI_CPLUSPLUS_HEADERS +#include +#endif // HAVE_ANSI_CPLUSPLUS_HEADERS + +#include "RoundTrip.h" + +#include "ace/Get_Opt.h" +#include "ace/High_Res_Timer.h" +#include "ace/Sched_Params.h" +#include "ace/Stats.h" +#include "ace/Sample_History.h" + +using namespace std; + + +int do_dump_history = 0; +int niterations = 1000; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + //parse arguments + ACE_Get_Opt get_opts (argc, argv, "hxi:"); + char c; + while ((c = get_opts ()) != -1) + switch (c) + { + case 'h': + do_dump_history = 1; + break; + + case 'i': + niterations = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case '?': + default: + /* Could be any other parameter like -ORBSvcConf file so ignore */ + break; + } + // Indicates sucessful parsing of the command line + return 0; +} + +void +set_priority () +{ + int priority = + (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) + + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; + // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. + + if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, + priority, + ACE_SCOPE_PROCESS)) != 0) + { + if (ACE_OS::last_error () == EPERM) + { + ACE_DEBUG ((LM_DEBUG, + "client (%P|%t): user is not superuser, " + "test runs in time-shared class\n")); + } + else + ACE_ERROR ((LM_ERROR, + "client (%P|%t): sched_params failed\n")); + } + +} + +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + CORBA::Object_var obj = orb->resolve_initial_references ("NameService"); + CosNaming::NamingContextExt_var nc = + CosNaming::NamingContextExt::_narrow (obj); + assert (!CORBA::is_nil (nc)); + + //Obtain reference from the naming context + obj = nc->resolve_str ("RoundTrip"); + + Roundtrip_var bench = Roundtrip::_narrow (obj); + + parse_args(argc, argv); + set_priority(); + + //Warmup the System by making some empty calls + CORBA::Long start = 0L; + for (int j = 0; j < 100; ++j) + { + bench->test_method (start); + } + + + CORBA::ULongLong time_stamp = 1234; + ACE_Sample_History history (niterations); + ACE_hrtime_t test_start = ACE_OS::gethrtime (); + + for (int i = 0; i < niterations; ++i) + { + + ACE_hrtime_t start = ACE_OS::gethrtime (); + + bench->test_method (time_stamp); + + ACE_hrtime_t now = ACE_OS::gethrtime (); + history.sample (now - start); + } + + ACE_hrtime_t test_end = ACE_OS::gethrtime (); + + ACE_DEBUG ((LM_DEBUG, "test finished\n")); + + ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); + ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); + ACE_DEBUG ((LM_DEBUG, "done\n")); + + if (do_dump_history) + { + history.dump_samples ("HISTORY", gsf); + } + + ACE_Basic_Stats stats; + history.collect_basic_stats (stats); + stats.dump_results ("Total", gsf); + + ACE_Throughput_Stats::dump_throughput ("Total", gsf, + test_end - test_start, + stats.samples_count ()); + + //Remove the component + cout << "client finished" << endl; + + return 0; +} diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env b/modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env new file mode 100755 index 00000000000..67b444acef9 --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env @@ -0,0 +1,14 @@ +############## +## MICO ENVIRONMENT SETTINGS +############# +# +# If MICO has been built in /build/ccm/mico-obj +# then add the following to your path and Library paths +# for Bash Shell: +# +#export PATH=/build/ccm/mico-obj/bin:$PATH +#export LD_LIBRARY_PATH=/build/ccm/mico-obj/lib:$LD_LIBRARY_PATH +# +# Note: The place where object files and binaries are built could be +# different from source files. The environment variables use the obj +# path rather than source path diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc b/modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc new file mode 100644 index 00000000000..f6c5b2a397f --- /dev/null +++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc @@ -0,0 +1,43 @@ +// +//$Id$ +// +// FUZZ: disable check_for_missing_rir_env +#include +#include + +#ifdef HAVE_ANSI_CPLUSPLUS_HEADERS +#include +#else // HAVE_ANSI_CPLUSPLUS_HEADERS +#include +#endif // HAVE_ANSI_CPLUSPLUS_HEADERS + +#include "RoundTrip_impl.h" +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "mico-local-orb"); + + //Obtain reference to Naming service + CORBA::Object_var naming_context_object = + orb->resolve_initial_references ("NameService"); + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow (naming_context_object.in ()); + + CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); + PortableServer::POA_var poa = PortableServer::POA::_narrow (obj); + RoundTrip_impl* rt_impl = new RoundTrip_impl(); + PortableServer::ObjectId_var oid = poa->activate_object (rt_impl); + Roundtrip_var rt_obj = rt_impl->_this(); + + //Add to Naming Service + CosNaming::Name name (1); + name.length (1); + name[0].id = CORBA::string_dup ("RoundTrip"); + naming_context->bind (name, rt_obj.in()); + + //allow incoming requests + poa->the_POAManager()->activate(); + + orb->run (); + return 0; +} diff --git a/modules/CIAO/rules.ciao.GNU b/modules/CIAO/rules.ciao.GNU new file mode 100644 index 00000000000..d181ccdb9b2 --- /dev/null +++ b/modules/CIAO/rules.ciao.GNU @@ -0,0 +1,66 @@ +# -*- Makefile -*- + +#---------------------------------------------------------------------------- +# +# $Id$ +# +# Common Makefile rules for all of CIAO +# +#---------------------------------------------------------------------------- + +ifndef TAO_ROOT + TAO_ROOT = $(ACE_ROOT)/TAO +endif + +ifndef CIAO_ROOT + CIAO_ROOT = $(TAO_ROOT)/CIAO +endif + +CIAO_ROOT := $(subst \,/,$(CIAO_ROOT)) + +ifndef TAO_IDL3_TO_IDL2 + TAO_IDL3_TO_IDL2 = $(CIAO_ROOT)/tools/IDL3_TO_IDL2/tao_idl3_to_idl2 + TAO_IDL3_TO_IDL2_DEP = $(TAO_IDL3_TO_IDL2)$(EXEEXT) +else +ifndef TAO_IDL3_TO_IDL2_DEP + TAO_IDL3_TO_IDL2_DEP = $(TAO_IDL3_TO_IDL2) +endif +endif + +ifeq (,$(findstring -L$(CIAO_ROOT)/ciao,$(LDFLAGS))) + LDFLAGS += -L$(CIAO_ROOT)/ciao +endif +ifeq (,$(findstring -I$(CIAO_ROOT),$(INCLDIRS))) + INCLDIRS += -I$(CIAO_ROOT) +endif + +# Turn on symbol versioning. The scheme that we follow is to allow +# applications dependent on libraries, with same version numbers (major, +# minor and beta) to run, but applications with dependencies on libraries +# with different minor or major or beta versions to fail. +# +ifeq (cmd,$(findstring cmd,$(SHELL))) +CIAO_MAJOR_VERSION := $(shell awk "/CIAO_MAJOR_VERSION/ { print $$3}" ${CIAO_ROOT}/ciao/Version.h) +CIAO_MINOR_VERSION := $(shell awk "/CIAO_MINOR_VERSION/ { print $$3}" ${CIAO_ROOT}/ciao/Version.h) +CIAO_BETA_VERSION := $(shell awk "/CIAO_BETA_VERSION/ { print $$3}" ${CIAO_ROOT}/ciao/Version.h) +else +CIAO_MAJOR_VERSION := $(shell awk '/CIAO_MAJOR_VERSION/ { print $$3}' ${CIAO_ROOT}/ciao/Version.h) +CIAO_MINOR_VERSION := $(shell awk '/CIAO_MINOR_VERSION/ { print $$3}' ${CIAO_ROOT}/ciao/Version.h) +CIAO_BETA_VERSION := $(shell awk '/CIAO_BETA_VERSION/ { print $$3}' ${CIAO_ROOT}/ciao/Version.h) +endif + +# Version number of the libraries +# +ifeq ($(versioned_so),1) + # Only set SOVERSION for CIAO if versioning is turned on and SOVERION is + # blank, which gives users to ability to override it. + ifeq ($(SOVERSION),) + SOVERSION = .$(CIAO_MAJOR_VERSION).$(CIAO_MINOR_VERSION).$(CIAO_BETA_VERSION) + endif # SOVERSION + + # Name that will be written into the dynamic library + # + ifneq ($(SONAME),) + SONAME = $(SHLIB).$(CIAO_MAJOR_VERSION).$(CIAO_MINOR_VERSION).$(CIAO_BETA_VERSION) + endif # SONAME +endif # versioned_so diff --git a/modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM b/modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM new file mode 100644 index 00000000000..df98c63f06d --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM @@ -0,0 +1,93 @@ +To: ciao-users@cs.wustl.edu +Subject: RTComponentServer: Session_Container::get_objref blocks + + CIAO VERSION: 0.4.7 + TAO VERSION : 1.4.7 + ACE VERSION : 5.4.7 + + HOST MACHINE and OPERATING SYSTEM: + Intel(R) Pentium(R) D CPU 3.00GHZ + Microsoft Windows XP Professional Version 2002 Service Pack 2 + + COMPILER NAME AND VERSION (AND PATCHLEVEL): + Microsoft Visual C++ .NET 2003 + Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 13.10.3077 + + THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform- + specific file, simply state which one]: + #include "ace/config-win32.h" + + THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you + use a link to a platform-specific file, simply state which one + (unless this isn't used in this case, e.g., with Microsoft Visual + C++)]: + + CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features + ssl=0 + qos=1 + cidl=0 + rwho=0 + sctp=0 + qt=1 + + AREA/CLASS/EXAMPLE AFFECTED: + CIAO/ciao/Session_Container::get_objref + + + DOES THE PROBLEM AFFECT: + COMPILATION? + No + LINKING? + No + EXECUTION? + Yes + OTHER (please specify)? +[Please indicate whether ACE/TAO/CIAO, your application, or both are affected.] + + SYNOPSIS: + A call of Session_Container::get_objref blocks forever. + + DESCRIPTION: + I'm running two clients simultaneously callings the methods acquireSession + and releaseSession of the CORBA component TSEC_CheckPoint ( please see + sample code in TSEC_CheckPoint_exec.cpp lines 233... and 283... and also + controller.cpp line 150... ) configured with realtime policies. After the + start of the second client the component TSEC_CheckPoint blocks in the + method Session_Container::get_objref ( please see the log file + DebuggerCallStack.log ). + + The serious code line of TSEC_CheckPoint_exec.cpp is: + CORBA::Object_var obj = this->getObjRef( p_sessionImpl) ; + + If only one client is calling acquireSession every thing works fine. + But if I start a second client which is calling acquireSession then the + block happens. + + I'm using the patch from 20051612 for the files + Container_Base.cpp and Container_Base.h which I merge with the CIAO + version 047. + + If i use CIAO version < 043 everythings works fine with no blocks. + + REPEAT BY: + Please build the sample code: + - cd interfaces + - mwc.pl -type nmake + - nmake realclean clean depend all + - touch *.idl + - nmake + - cd SEC_CheckPoint + - mwc.pl -type nmake + - nmake realclean clean depend all + + Please run the sample: + - cd descriptors + - start_da.bat + - start_am.bat + - start_test.bat + - start_testcase_1.bat + - start_testcase_2.bat + + + SAMPLE FIX/WORKAROUND: +[If available ] diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl new file mode 100644 index 00000000000..83d68fc4353 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl @@ -0,0 +1,27 @@ +//$Id$ + +#ifndef TSEC_CHECKPOINT_IDL +#define TSEC_CHECKPOINT_IDL + +#include "../interfaces/ENW.idl" + + +module ENW +{ + component TSEC_CheckPoint supports ISessionService + { + provides ISessionService sessionService; + + consumes ET_LifeToken lifeTokenIn; + publishes ET_LifeToken lifeTokenOut; + + }; + + home TSEC_CheckPointHome manages TSEC_CheckPoint + { + factory new_TSEC_CheckPoint( in string Version ); + }; +}; + + +#endif // TSEC_CHECKPOINT_IDL diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc new file mode 100644 index 00000000000..9e7a1102f55 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc @@ -0,0 +1,121 @@ +//$Id$ + +project(TSEC_CheckPoint_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=TSEC_CHECKPOINT_STUB_Export \ + -Wb,stub_export_include=TSEC_CheckPoint_stub_export.h \ + -Wb,skel_export_macro=TSEC_CHECKPOINT_SVNT_Export \ + -Wb,skel_export_include=TSEC_CheckPoint_svnt_export.h \ + -Wb,exec_export_macro=TSEC_CHECKPOINT_EXEC_Export \ + -Wb,exec_export_include=TSEC_CheckPoint_exec_export.h \ + -Glfa + requires += dummy_label + + IDL_Files { + TSEC_CheckPoint.idl + } +} + +project(TSEC_CheckPoint_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += TSEC_CheckPoint_idl_gen + idlflags += -SS -St \ + -Wb,export_macro=TSEC_CHECKPOINT_EXEC_Export \ + -Wb,export_include=TSEC_CheckPoint_exec_export.h + + requires += dummy_label + IDL_Files { + TSEC_CheckPointE.idl + } +} + + +project(TSEC_CheckPoint_stub): ccm_stub, event { + after += ENW_stub TSEC_CheckPoint_idl_gen + libpaths += ../interfaces + libs += ENW_stub + sharedname = TSEC_CheckPoint_stub + dynamicflags = TSEC_CHECKPOINT_STUB_BUILD_DLL + requires += dummy_label + IDL_Files { + } + + Source_Files { + TSEC_CheckPointC.cpp + } + + Header_Files { + TSEC_CheckPointC.h + TSEC_CheckPoint_stub_export.h + } + + Inline_Files { + TSEC_CheckPointC.inl + } +} + +project(TSEC_CheckPoint_svnt) : ciao_servant, event { + after += TSEC_CheckPoint_skel TSEC_CheckPoint_exec + after += ENW_skel ENW_stub + sharedname = TSEC_CheckPoint_svnt + libpaths += ../interfaces + libs += TSEC_CheckPoint_stub TSEC_CheckPoint_exec + libs += ENW_stub ENW_skel + requires += dummy_label + dynamicflags = TSEC_CHECKPOINT_SVNT_BUILD_DLL + requires += dummy_label + IDL_Files { + } + + Source_Files { + TSEC_CheckPointS.cpp + TSEC_CheckPoint_svnt.cpp + } +} + + +project(TSEC_CheckPoint_exec) : ciao_executor, event, ccm_svnt, ciao_session_container, naming { + after += TSEC_CheckPoint_stub TSEC_CheckPoint_lem_gen + after += ENW_skel ENW_stub + requires += dummy_label + includes += ../interfaces + + sharedname = TSEC_CheckPoint_exec + libpaths += ../interfaces + libs += TSEC_CheckPoint_stub + libs += ENW_stub ENW_skel + + idlflags -= -GT + idlflags += -SS -St \ + -Wb,export_macro=TSEC_CHECKPOINT_EXEC_Export \ + -Wb,export_include=TSEC_CheckPoint_exec_export.h + dynamicflags = TSEC_CHECKPOINT_EXEC_BUILD_DLL + + IDL_Files { + TSEC_CheckPointEI.idl + } + + Source_Files { + TSEC_CheckPointEC.cpp + TSEC_CheckPointEIC.cpp + TSEC_CheckPoint_exec.cpp + } +} + + +project(TSEC_CheckPoint_controller) : ccm_stub, valuetype, event { + exename = controller + after += TSEC_CheckPoint_stub + libs += TSEC_CheckPoint_stub ENW_stub + libpaths += ../interfaces + requires += dummy_label + IDL_Files { + } + + Source_Files { + controller.cpp + } +} + + + diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl new file mode 100644 index 00000000000..9cd47181299 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl @@ -0,0 +1,19 @@ +// $Id$ + +#ifndef TSEC_CHECKPOINTEI_IDL +#define TSEC_CHECKPOINTEI_IDL + +#include "TSEC_CheckPointE.idl" + +module ENW +{ + local interface TSEC_CheckPoint_Exec : + CCM_TSEC_CheckPoint, + CCM_ISessionService, + Components::SessionComponent + { + }; + +}; + +#endif /* TSEC_CHECKPOINTEI_IDL */ diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp new file mode 100644 index 00000000000..8f2b0c02d3d --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp @@ -0,0 +1,592 @@ +//$Id$ + +//------------------------------------------------------------------- +// Includes +//------------------------------------------------------------------- + +#include "ace/Timer_Queue.h" +#include "ace/Reactor.h" +#include "ace/os_include/os_assert.h" + +#include "tao/LocalObject.h" +#include + +#include "ciao/Version.h" +#include "ciao/Containers/Session/Session_Container.h" +#include "TSEC_CheckPoint_exec.h" +#include "TSEC_CheckPoint_svnt.h" + + +//------------------------------------------------------------------- +// Defines +//------------------------------------------------------------------- + +#define SEPARATION_LINE "----------------------------------------" \ + "----------------------------------------\n" + + +//------------------------------------------------------------------- +// Statics +//------------------------------------------------------------------- + +static const char* argv[] = +{ + "TSEC_CheckPoint" +}; + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_SessionEntry::TSEC_SessionEntry() +: _p_sessionImpl( 0 ) +{ +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_SessionEntry::TSEC_SessionEntry +( + TSEC_Session_impl* pSessionImpl, + ENW::TSession_ptr Session +) +: _p_sessionImpl( pSessionImpl ) +{ + if( !CORBA::is_nil( Session ) ) + { + _session = ENW::TSession::_duplicate( Session ); + } +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_Session_impl::TSEC_Session_impl +( + TSEC_CheckPoint_exec_i& Parent, + CORBA::Long Ident +) + : _isInUse(0),_ident( Ident ),_parent( Parent ) +{ +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_Session_impl::~TSEC_Session_impl() +{ +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +CORBA::ULong +Impl::TSEC_Session_impl::hash +( + CORBA::ULong Maximum +) +{ + CORBA::ULong hash = + static_cast (reinterpret_cast (this)); + + return hash % Maximum; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +CORBA::Long +Impl::TSEC_Session_impl::getIdent +( +) +{ + //ACE_GUARD_RETURN( TMutex, guard, _parent.getMutex(), -1 ); + + return _ident; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +CORBA::Boolean +Impl::TSEC_Session_impl::isInUse +( +) +{ + //ACE_GUARD_RETURN( TMutex, guard, _parent.getMutex(), FALSE ); + return _isInUse; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_CheckPoint_exec_i::TSEC_CheckPoint_exec_i() +: _p_sessionContainer( 0 ), + _isActivated( false ) +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::" + "TSEC_CheckPoint_exec_i\n" ) ); + + this->init(); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_CheckPoint_exec_i::TSEC_CheckPoint_exec_i +( + const char* /*Version*/ +) +: _p_sessionContainer( 0 ), + _isActivated( false ) +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::" + "TSEC_CheckPoint_exec_i\n" ) ); + this->init(); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_CheckPoint_exec_i::~TSEC_CheckPoint_exec_i() +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::" + "~TSEC_CheckPoint_exec_i\n" ) ); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +CORBA::Object_ptr +Impl::TSEC_CheckPoint_exec_i::getObjRef +( + PortableServer::Servant Servant +) +{ + return this->_p_sessionContainer->get_objref( Servant ); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +int +Impl::TSEC_CheckPoint_exec_i::init +( +) +{ + ACE_DEBUG ((LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::init\n")); + + int argc = sizeof( argv ) / sizeof( argv[0] ); + + CORBA::ORB_var orb = CORBA::ORB_init( argc, + const_cast (argv) + ); + _orb = CORBA::ORB::_duplicate( orb.in () ); + + return 0; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +CORBA::Object_ptr +Impl::TSEC_CheckPoint_exec_i::installServant +( + PortableServer::Servant Servant +) +{ + assert( this->_p_sessionContainer ); + PortableServer::ObjectId_var oid; + return this->_p_sessionContainer->install_servant( Servant, + CIAO::Container_Types::COMPONENT_t, oid.out ()); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::uninstallServant +( + CORBA::Object_ptr ObjRef +) +{ + assert( this->_p_sessionContainer ); + + this->_p_sessionContainer->uninstall( ObjRef, CIAO::Container_Types::COMPONENT_t); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +ENW::TSession_ptr +Impl::TSEC_CheckPoint_exec_i::createSession +( +) +{ + static long cnt = 0L; + + ENW::TSession_var session = ENW::TSession::_nil(); + + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::createSession...\n" ) ); + + TSEC_Session_impl* p_sessionImpl = new TSEC_Session_impl( *this, ++cnt ); + PortableServer::ServantBase_var safe_servant( p_sessionImpl ); + CORBA::Object_var obj = this->installServant( p_sessionImpl + ); + session = ENW::TSession::_narrow ( obj.in () ); + + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::createSession...[DONE]\n" ) ); + + return session._retn(); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +::CORBA::Boolean +Impl::TSEC_CheckPoint_exec_i::destroySession +( + ENW::TSession_ptr Session +) +{ + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::destroySession...\n" ) ); + + if( CORBA::is_nil( Session ) ) + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::destroySession...[ERROR]\n" ) ); + return 0; + } + + this->uninstallServant( Session ); + + return 1; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +ENW::TSession_ptr +Impl::TSEC_CheckPoint_exec_i::acquireSession +( + CORBA::Long Ident +) +{ + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::acquireSession...\n" ) ); + + if( Ident <= 0 || Ident > TSEC_SESSION_MAX_IDENT ) + { + if( Ident != -1 ) + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) ); + throw ENW::EUnknownIdent(); + } + } + + ENW::TSession_var session = ENW::TSession::_nil(); + TSEC_Session_impl* p_sessionImpl = 0; + + try + { + { + //ACE_GUARD_RETURN( TMutex, guard, _mutex, ENW::TSession::_nil() ); + p_sessionImpl = sessionVector[Ident-1]._p_sessionImpl; + } + + p_sessionImpl->isInUse( 1 ); + CORBA::Object_var obj = this->getObjRef( p_sessionImpl) ; + session = ENW::TSession::_narrow ( obj.in () ); + //session = sessionVector[Ident-1]._session; + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Reason\n"); + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) ); + + return session._retn(); + } + + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[DONE]\n" ) ); + + return session._retn(); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +::CORBA::Boolean +Impl::TSEC_CheckPoint_exec_i::releaseSession +( + CORBA::Long Ident, + ENW::TSession_ptr Session +) +{ + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...\n" ) ); + + if( CORBA::is_nil( Session ) ) + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) ); + throw ENW::EUnknownSession(); + } + + //CORBA::Long ident = Session->getIdent(); + CORBA::Long ident = Ident; + + if( ident <= 0 || ident > TSEC_SESSION_MAX_IDENT ) + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) ); + return 0;; + } + + TSEC_Session_impl* p_sessionImpl = 0; + + { + //ACE_GUARD_RETURN( TMutex, guard, _mutex, FALSE ); + + p_sessionImpl = sessionVector[ident-1]._p_sessionImpl; + } + + assert( p_sessionImpl ); + + + if( !p_sessionImpl->isInUse() ) + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) ); + return 0; + } + + p_sessionImpl->isInUse( 0); + + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[DONE]\n" ) ); + + return 1; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +ENW::CCM_ISessionService_ptr +Impl::TSEC_CheckPoint_exec_i::get_sessionService +( +) +{ + return ENW::CCM_ISessionService::_duplicate( this ); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::set_session_context +( + Components::SessionContext_ptr Ctx +) +{ + ACE_DEBUG( ( LM_DEBUG, + "Impl::TSEC_CheckPoint_exec_i::set_session_context\n" ) ); + + this->_context = + ENW::CCM_TSEC_CheckPoint_Context::_narrow( Ctx + ); + + if( CORBA::is_nil( this->_context.in() ) ) + { + throw CORBA::INTERNAL(); + } + + CIAO_ENW_TSEC_CheckPoint_Impl::TSEC_CheckPoint_Context* p_checkPoint_Context = + CIAO_ENW_TSEC_CheckPoint_Impl::TSEC_CheckPoint_Context::_narrow( Ctx ); + + if( !p_checkPoint_Context ) + { + throw CORBA::INTERNAL(); + } + + this->_p_sessionContainer = dynamic_cast < ::CIAO::Session_Container*>(p_checkPoint_Context->_ciao_the_Container()); + + if( !_p_sessionContainer ) + { + throw CORBA::INTERNAL(); + } +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::push_lifeTokenIn +( + ENW::ET_LifeToken* /* Event */ +) +{ + _awaitingLifeToken = false; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::configuration_complete +( +) +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::configuration_complete\n" ) ); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::ccm_activate +( +) +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ccm_activate\n" ) ); + + TSEC_Session_impl* p_sessionImpl = 0; + + for( CORBA::Long i = 0; i < TSEC_SESSION_MAX_IDENT; ++i ) + { + p_sessionImpl = new TSEC_Session_impl( *this, i + 1 ); + PortableServer::ServantBase_var safe_servant( p_sessionImpl ); + CORBA::Object_var obj = this->installServant( p_sessionImpl + ); + ENW::TSession_var session = + ENW::TSession::_narrow ( obj.in () ); + sessionVector[i] = TSEC_SessionEntry( p_sessionImpl, session.in () ); + } + + _isActivated = true; +} + + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::ccm_passivate +( +) +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ccm_passivate\n" ) ); + _isActivated = false; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +void +Impl::TSEC_CheckPoint_exec_i::ccm_remove +( +) +{ + ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ccm_remove\n" ) ); + _isActivated = false; +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_CheckPointHome_exec_i::TSEC_CheckPointHome_exec_i() +{ +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +Impl::TSEC_CheckPointHome_exec_i::~TSEC_CheckPointHome_exec_i() +{ +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +::Components::EnterpriseComponent_ptr +Impl::TSEC_CheckPointHome_exec_i::new_TSEC_CheckPoint +( + const char* Version + ) +{ + return new Impl::TSEC_CheckPoint_exec_i( Version ); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +::Components::EnterpriseComponent_ptr +Impl::TSEC_CheckPointHome_exec_i::create +( +) +{ + + return new Impl::TSEC_CheckPoint_exec_i(); +} + + +//------------------------------------------------------------------- +// Operation +//------------------------------------------------------------------- + +extern "C" TSEC_CHECKPOINT_EXEC_Export ::Components::HomeExecutorBase_ptr +createTSEC_CheckPointHome_Impl() +{ + return new Impl::TSEC_CheckPointHome_exec_i(); +} + diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h new file mode 100644 index 00000000000..7f09543ea32 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h @@ -0,0 +1,244 @@ +//$Id$ + +//=================================================================== +/** + * @file TSEC_CheckPoint_exec.h + * + * Header file for the Executor implementation. + */ +//=================================================================== + +#ifndef TSEC_CheckPoint_EXEC_H +#define TSEC_CheckPoint_EXEC_H + +//------------------------------------------------------------------- +// Includes +//------------------------------------------------------------------- + +#include "ace/Thread_Manager.h" +#include "ace/Task.h" + +#include "tao/LocalObject.h" + +#include "ENWS.h" +#include "TSEC_CheckPointEIC.h" +#include "TSEC_CheckPoint_exec_export.h" + + +//------------------------------------------------------------------- +// Defines +//------------------------------------------------------------------- + +#define TSEC_SESSION_ID_MAX 0xffffffff +#define TSEC_SESSION_MAX_IDENT 2 + + +//------------------------------------------------------------------- +// Type definitions +//------------------------------------------------------------------- + + +//------------------------------------------------------------------- +// Forward declarations +//------------------------------------------------------------------- + + +//------------------------------------------------------------------- +// Classes +//------------------------------------------------------------------- + +namespace Impl +{ + typedef TAO_SYNCH_MUTEX TMutex; + + class TSEC_CheckPoint_exec_i; + + class TSEC_Session_impl : + public virtual POA_ENW::TSession, + public virtual ::CORBA::LocalObject + { + public: + + TSEC_Session_impl + ( + TSEC_CheckPoint_exec_i& Parent, + CORBA::Long Ident + ); + + virtual ~TSEC_Session_impl(); + + CORBA::Long getIdent(); + CORBA::Boolean isInUse(); + void isInUse( CORBA::Boolean Flag ) { _isInUse = Flag; } + + protected: + CORBA::Boolean _isInUse; + CORBA::Long _ident; + + TSEC_CheckPoint_exec_i& _parent; + + CORBA::ULong hash + ( + CORBA::ULong Maximum + ); + + TSEC_CheckPoint_exec_i& getParent() { return _parent; } + + }; + + struct TSEC_SessionEntry + { + TSEC_SessionEntry(); + + TSEC_SessionEntry + ( + TSEC_Session_impl* pSessionImpl, + ENW::TSession_ptr Session + ); + + TSEC_Session_impl* _p_sessionImpl; + ENW::TSession_var _session; + }; + + class TSEC_CHECKPOINT_EXEC_Export TSEC_CheckPoint_exec_i : + public virtual ENW::TSEC_CheckPoint_Exec, + public virtual ::CORBA::LocalObject + { + public: + TSEC_CheckPoint_exec_i(); + TSEC_CheckPoint_exec_i( const char* Version ); + + virtual ~TSEC_CheckPoint_exec_i(); + + // Attribute Operationen: + // + + + // Interface ISessionService + // + + virtual ENW::CCM_ISessionService_ptr get_sessionService + ( + ); + + + virtual ENW::TSession_ptr createSession + ( + ); + + virtual CORBA::Boolean destroySession + ( + ENW::TSession_ptr Session + ); + + virtual ENW::TSession_ptr acquireSession + ( + CORBA::Long Ident + ); + + virtual CORBA::Boolean releaseSession + ( + CORBA::Long Ident, + ENW::TSession_ptr Session + ); + + + // Events + // + + virtual void push_lifeTokenIn + ( + ENW::ET_LifeToken* Event + ); + + + // Operations from Components::SessionComponent + // + + virtual void set_session_context + ( + Components::SessionContext_ptr ctx + ); + + virtual void configuration_complete + ( + ); + + virtual void ccm_activate + ( + ); + + virtual void ccm_passivate + ( + ); + + virtual void ccm_remove + ( + ); + + CORBA::Object_ptr getObjRef + ( + PortableServer::Servant Servant + ); + + int init( + ); + + CORBA::Object_ptr installServant + ( + PortableServer::Servant Servant + ); + + void uninstallServant + ( + CORBA::Object_ptr ObjRef + ); + + TMutex& getMutex() { return _mutex; } + + protected: + // Copmponent specific context + + ENW::CCM_TSEC_CheckPoint_Context_var _context; + ::CIAO::Session_Container* _p_sessionContainer; + TMutex _mutex; + CORBA::ORB_var _orb; + + private: + bool _awaitingLifeToken; + bool _isActivated; + + //TSEC_Session_impl* sessionVector[TSEC_SESSION_MAX_IDENT]; + TSEC_SessionEntry sessionVector[TSEC_SESSION_MAX_IDENT]; + }; + + /** + * home executor implementation class. + */ + class TSEC_CHECKPOINT_EXEC_Export TSEC_CheckPointHome_exec_i : + public virtual ENW::CCM_TSEC_CheckPointHome, + public virtual ::CORBA::LocalObject + { + public: + + TSEC_CheckPointHome_exec_i(); + + virtual ~TSEC_CheckPointHome_exec_i(); + + // Explicit home operations. + virtual ::Components::EnterpriseComponent_ptr new_TSEC_CheckPoint + ( + const char* Version + ); + + // Implicit home operations. + virtual ::Components::EnterpriseComponent_ptr create + ( + ); + }; +} // Impl + +extern "C" TSEC_CHECKPOINT_EXEC_Export ::Components::HomeExecutorBase_ptr +createTSEC_CheckPointHome_Impl(); + +#endif // TSEC_CheckPoint_EXEC_H diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp new file mode 100644 index 00000000000..8901cdbf20a --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp @@ -0,0 +1,197 @@ +//$Id$ + + +/** + * @file controller.cpp + * + * This program interact with a TSEC_CheckPoint component, using its supported + * interface "ISessionService" + */ + + +//------------------------------------------------------------------- +// Includes +//------------------------------------------------------------------- + +#include "ace/streams.h" +#include "ace/Get_Opt.h" + +#include "TSEC_CheckPointC.h" + + +//------------------------------------------------------------------- +// Defines +//------------------------------------------------------------------- + +#define SEPARATION_LINE "----------------------------------------" \ + "----------------------------------------\n" + +#define TESTCASE_NOT_DEFINED 0 +#define TESTCASE_ACQUIRE_RELEASE_SESSION 1 +#define TESTCASE_CREATE_DESTROY_SESSION 2 + + +//------------------------------------------------------------------- +// Statics +//------------------------------------------------------------------- + +static int _testcase = TESTCASE_NOT_DEFINED; +static int _loop = 0; +static int _ident = 1; +static const ACE_TCHAR* _sessionService_ior = 0; + + +//------------------------------------------------------------------- +// Function +//------------------------------------------------------------------- + +int +parse_args +( + int argc, + ACE_TCHAR* argv[] +) +{ + ACE_Get_Opt get_opts( argc, argv, ACE_TEXT("i:k:l:t:") ); + int c; + + while( ( c = get_opts() ) != -1 ) + { + switch( c ) + { + case 'i': + _ident = ACE_OS::atoi( get_opts.opt_arg() ); + break; + + case 'k': + _sessionService_ior = get_opts.opt_arg(); + break; + + case 'l': + _loop = ACE_OS::atoi( get_opts.opt_arg() ); + break; + + case 't': + _testcase = ACE_OS::atoi( get_opts.opt_arg() ); + break; + + case '?': // display help for use of the server. + default: + ACE_ERROR_RETURN( ( LM_ERROR, + "usage: %s\n" + "-i (default is 1)\n" + "-k (default is file://TSEC_CheckPoint.ior)\n" + "-t (default is 1)\n" + "\n", + argv[0] ), + -1 ); + break; + } + } + + if ( _sessionService_ior == 0 ) + { + _sessionService_ior = ACE_TEXT("file://TSEC_CheckPoint.ior"); + } + + if( _testcase == 0 ) + { + _testcase = TESTCASE_ACQUIRE_RELEASE_SESSION; + } + + return 0; +} + + +//------------------------------------------------------------------- +// Function +//------------------------------------------------------------------- + +int +ACE_TMAIN +( + int argc, + ACE_TCHAR* argv[] +) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = + CORBA::ORB_init( argc, argv); + + if( parse_args( argc, argv ) != 0 ) + { + return -1; + } + + CORBA::Object_var obj = orb->string_to_object( _sessionService_ior + ); + + ENW::ISessionService_var sessionService = + ENW::ISessionService::_narrow (obj.in () ); + + if( CORBA::is_nil( sessionService.in() ) ) + { + ACE_ERROR_RETURN( ( LM_ERROR, + "Unable to acquire 'SessionService' objref\n" ), + -1 ); + } + + ACE_DEBUG( ( LM_DEBUG, SEPARATION_LINE ) ); + + for( int i = 0; i < _loop; ++i ) + { + switch( _testcase ) + { + case TESTCASE_ACQUIRE_RELEASE_SESSION: + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase acquire release session...[running]\n" ) ); + + ENW::TSession_var session = sessionService->acquireSession( _ident ); + //CORBA::Long ident = session->getIdent(); + sessionService->releaseSession( _ident, session.in () ); + + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase acquire release session...[ready]\n" ) ); + } + + break; + + case TESTCASE_CREATE_DESTROY_SESSION: + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase create destroy session...[running]\n" ) ); + + ENW::TSession_var session = sessionService->createSession(); + CORBA::Long ident = session->getIdent(); + ACE_DEBUG(( LM_DEBUG, "(%P|%t@%T) Ident: %d\n", ident ) ); + + if( !sessionService->destroySession( session.in () ) ) + { + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase create destroy session...[ERROR]\n" ) ); + } + + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase create destroy session...[ready]\n" ) ); + } + + break; + + default: + ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Testcase is undefined!\n" ) ); + break; + + } + } + + orb->destroy( ); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Who is the culprit\n"); + cerr << "Uncaught CORBA exception" << endl; + + return 1; + } + + return 0; +} + diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp b/modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp new file mode 100644 index 00000000000..d814af11a50 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp @@ -0,0 +1,117 @@ + + + + + + CheckPoint_Plan_UUID_0001 + + + + c0965470-7b83-11d9-9669-0800200c9a66 + + IDL:ENW/Sender:1.0 + + read_message + IDL:ENW/ISessionService:1.0 + IDL:ENW/ISessionService:1.0 + false + false + true + false + SimplexReceptacle + + + + + CheckPoint-TSEC_CheckPoint-mdd + + CheckPoint-TSEC_CheckPoint_exec + CheckPoint-TSEC_CheckPoint_svnt + + + + CheckPoint-TSEC_CheckPoint-idd + CheckPointNode + + CheckPoint-TSEC_CheckPoint-mdd + + ComponentIOR + + + tk_string + + + TSEC_CheckPoint.ior + + + + + + InstanceUsesResource + CIAO:PolicySet + test_server_resource_id + + + tk_string + + + test_policy_set_id + + + + + + + TSEC_CheckPoint_exec + + + TSEC_CheckPoint_exec + + entryPoint + + + tk_string + + + createTSEC_CheckPointHome_Impl + + + + + + + TSEC_CheckPoint_svnt + + + TSEC_CheckPoint_svnt + + entryPoint + + + tk_string + + + create_ENW_TSEC_CheckPointHome_Servant + + + + + + + CIAOServerResources + + + tk_string + + + rt-config-example.csr + + + + + + diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat b/modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat new file mode 100644 index 00000000000..9ec03384ec9 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat @@ -0,0 +1 @@ +CheckPointNode corbaloc:iiop:localhost:30000/NodeManager \ No newline at end of file diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr b/modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr new file mode 100644 index 00000000000..e1d120352aa --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr @@ -0,0 +1,30 @@ + + + + + + + 0 + 6 + 0 + 2 + false + 0 + 0 + + + + + + SERVER_DECLARED + + threadpool-1 + + + + \ No newline at end of file diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl b/modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl new file mode 100755 index 00000000000..1b41f61bcea --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl @@ -0,0 +1,211 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; + +$nr_daemon = 1; +@ports = ( 30000 ); +@iorbases = ( "NodeApp.ior" ); +@iorfiles = 0; + +$controller_exec = "../SEC_CheckPoint/controller"; + +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$dat_file = "TestNodeManagerMap.dat"; +$cdp_file = "DeploymentPlan.cdp"; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../SEC_CheckPoint'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../SEC_CheckPoint'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../SEC_CheckPoint'); +} + +sub init_ior_files { + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -a \"-r\""; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + $daemons_running = 1; + return 0; +} + +create_targets (); +init_ior_files (); + + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + exit 1; +} + +# Invoke execution manager. +print "Invoking execution manager\n"; +$EM = $tg_exe_man->CreateProcess ("$CIAO_ROOT/bin/Execution_Manager", + "-o $ior_emfile -i $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - start the application -\n"; +$E = $tg_executor->CreateProcess ("$CIAO_ROOT/bin/plan_launcher", + "-p $cdp_file -k file://$ior_emfile -o DAM.ior"); + +$E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + + +if ($tg_exe_man->WaitForFileTimed ("TSEC_CheckPoint.ior", + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of sender could not be found\n"; + kill_open_processes (); + exit 1; +} + +print "Running testcase 1\n"; + +$controller = $tg_daemons[0]->CreateProcess ("$controller_exec", "-i 1 -k file://TSEC_CheckPoint.ior -t 1 -l 100000"); +$result = $controller->SpawnWaitKill ($tg_daemons[0]->ProcessStopWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + + +print "Running testcase 2\n"; + +$controller = $tg_daemons[0]->CreateProcess ("$controller_exec", "-i 2 -k file://TSEC_CheckPoint.ior -t 1 -l 100000"); +$result = $controller->SpawnWaitKill ($tg_daemons[0]->ProcessStopWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +print "Running testcase 3\n"; + +$controller = $tg_daemons[0]->CreateProcess ("$controller_exec", "-k file://TSEC_CheckPoint.ior -t 2 -l 100000"); +$result = $controller->SpawnWaitKill ($tg_daemons[0]->ProcessStopWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +$E = $tg_executor->CreateProcess ("$CIAO_ROOT/bin/plan_launcher", + "-k file://EM.ior -i file://DAM.ior"); +$E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl new file mode 100644 index 00000000000..f62febba8a3 --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl @@ -0,0 +1,52 @@ +//$Id$ + +#ifndef ENW_IDL +#define ENW_IDL + +#include + + +module ENW +{ + exception EUnknownIdent + { + }; + + exception EUnknownSession + { + }; + + eventtype ET_LifeToken + { + }; + + ////////////////////////////////////////////////////////////////////////////// + // + // ICheckPoint-Interfaces + // + + const long IdNotDefined = -1; + + interface TSession + { + long getIdent(); + boolean isInUse(); + }; + + interface ISessionService + { + TSession createSession(); + boolean destroySession( in TSession Session ); + + TSession acquireSession( in long Ident ) + raises( EUnknownIdent ); + + boolean releaseSession( in long Ident, + in TSession Session ) + raises( EUnknownSession ); + }; + +}; + + +#endif //ENW_IDL diff --git a/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc new file mode 100644 index 00000000000..d6881188b2c --- /dev/null +++ b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc @@ -0,0 +1,44 @@ +//$Id$ + +project(ENW_stub): ccm_stub, event { + sharedname = ENW_stub + idlflags -= -GT + idlflags += -Wb,stub_export_macro=ENW_STUB_Export \ + -Wb,stub_export_include=ENW_stub_export.h \ + -Wb,skel_export_macro=ENW_SKEL_Export \ + -Wb,skel_export_include=ENW_skel_export.h -Gxhst -Gxhsk + dynamicflags = ENW_STUB_BUILD_DLL + + IDL_Files { + ENW.idl + } + + Source_Files { + ENWC.cpp + } +} + +project(ENW_skel) : ciao_servant, event { + after += ENW_stub + sharedname = ENW_skel + libs += ENW_stub + idlflags -= -GT + idlflags += -Wb,stub_export_macro=ENW_STUB_Export \ + -Wb,stub_export_include=ENW_stub_export.h \ + -Wb,skel_export_macro=ENW_SKEL_Export \ + -Wb,skel_export_include=ENW_skel_export.h + + dynamicflags = ENW_SKEL_BUILD_DLL + + IDL_Files { + ENW.idl + } + + Source_Files { + ENWS.cpp + } +} + + + + diff --git a/modules/CIAO/tests/Bug_3769_Regression/Foo.idl b/modules/CIAO/tests/Bug_3769_Regression/Foo.idl new file mode 100644 index 00000000000..648c5150bf4 --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/Foo.idl @@ -0,0 +1,36 @@ +// $Id$ + +#ifndef FOO_IDL_ +#define FOO_IDL_ + +#include + +typedef sequence short_sequence; +typedef sequence long_sequence; +typedef sequence float_sequence; +typedef sequence double_sequence; + +struct Bar +{ + short s; + long l; + float f; + double d; +}; + +component Foo +{ + attribute short my_short; + attribute long my_long; + attribute float my_float; + attribute double my_double; + + attribute short_sequence my_short_sequence; + attribute long_sequence my_long_sequence; + attribute float_sequence my_float_sequence; + attribute double_sequence my_double_sequence; + + attribute Bar my_bar_struct; +}; + +#endif /* FOO_IDL_ */ diff --git a/modules/CIAO/tests/Bug_3769_Regression/Foo.mpc b/modules/CIAO/tests/Bug_3769_Regression/Foo.mpc new file mode 100644 index 00000000000..b26a046d7fd --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/Foo.mpc @@ -0,0 +1,132 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl Foo" + +project(Foo_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=FOO_STUB_Export \ + -Wb,stub_export_include=Foo_stub_export.h \ + -Wb,skel_export_macro=FOO_SVNT_Export \ + -Wb,skel_export_include=Foo_svnt_export.h \ + -Wb,exec_export_macro=FOO_EXEC_Export \ + -Wb,exec_export_include=Foo_exec_export.h + + IDL_Files { + Foo.idl + } +} + +project(Foo_lem_gen) : ciaoidldefaults { + after += Foo_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=FOO_LEM_STUB_Export \ + -Wb,stub_export_include=Foo_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + FooE.idl + } +} + +project(Foo_lem_stub) : ccm_svnt { + after += Foo_lem_gen Foo_stub + libs += Foo_stub + + + sharedname = Foo_lem_stub + dynamicflags = FOO_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + FooEC.cpp + } + + Header_Files { + FooEC.h + Foo_lem_stub_export.h + } + + Inline_Files { + FooEC.inl + } +} + +project(Foo_stub) : ccm_stub { + after += Foo_idl_gen + libs += + + + sharedname = Foo_stub + dynamicflags = FOO_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + FooC.cpp + } + + Header_Files { + FooC.h + Foo_stub_export.h + } + + Inline_Files { + FooC.inl + } +} + +project(Foo_exec) : ciao_executor { + after += Foo_lem_stub Foo_stub + sharedname = Foo_exec + libs += Foo_stub Foo_lem_stub + + + dynamicflags = FOO_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Foo_exec.cpp + } + + Header_Files { + Foo_exec.h + Foo_exec_export.h + } + + Inline_Files { + } +} + + +project(Foo_svnt) : ciao_servant { + after += Foo_lem_stub + sharedname = Foo_svnt + libs += Foo_stub Foo_lem_stub + + + dynamicflags = FOO_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + FooS.cpp + Foo_svnt.cpp + } + + Header_Files { + FooS.h + Foo_svnt.h + Foo_svnt_export.h + } + + Inline_Files { + FooS.inl + } +} + + diff --git a/modules/CIAO/tests/Bug_3769_Regression/Foo_exec.cpp b/modules/CIAO/tests/Bug_3769_Regression/Foo_exec.cpp new file mode 100644 index 00000000000..e23fc846f2d --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/Foo_exec.cpp @@ -0,0 +1,296 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// .\be\be_codegen.cpp:1278 + +#include "Foo_exec.h" + +namespace CIAO_Foo_Impl +{ + //============================================================ + // Component Executor Implementation Class: Foo_exec_i + //============================================================ + + Foo_exec_i::Foo_exec_i (void) + { + } + + Foo_exec_i::~Foo_exec_i (void) + { + } + + // Supported operations and attributes. + + // Component attributes and port operations. + + ::CORBA::Short + Foo_exec_i::my_short (void) + { + /* Your code here. */ + return 0; + } + + void + Foo_exec_i::my_short ( + ::CORBA::Short my_short) + { + if(my_short != 22) + ACE_ERROR ((LM_ERROR, "ERROR: my_short != 22, it is %d\n", my_short)); + } + + ::CORBA::Long + Foo_exec_i::my_long (void) + { + /* Your code here. */ + return 0; + } + + void + Foo_exec_i::my_long ( + ::CORBA::Long my_long) + { + if(my_long != 33) + ACE_ERROR ((LM_ERROR, "ERROR: my_long != 33, it is %d\n", my_long)); + } + + ::CORBA::Float + Foo_exec_i::my_float (void) + { + /* Your code here. */ + return 0.0f; + } + + void + Foo_exec_i::my_float ( + ::CORBA::Float my_float) + { + if(my_float != 45.67F) + ACE_ERROR ((LM_ERROR, "ERROR: my_float != 45.67, it is %f\n", my_float)); + } + + ::CORBA::Double + Foo_exec_i::my_double (void) + { + /* Your code here. */ + return 0.0; + } + + void + Foo_exec_i::my_double ( + ::CORBA::Double my_double) + { + if(my_double != 56.78) + ACE_ERROR ((LM_ERROR, "ERROR: my_double != 56.78, it is %f\n", my_double)); + } + + ::short_sequence * + Foo_exec_i::my_short_sequence (void) + { + /* Your code here. */ + return 0; + } + + void + Foo_exec_i::my_short_sequence ( + const ::short_sequence & my_short_sequence) + { + if(my_short_sequence.length() != 3) + { + ACE_ERROR ((LM_ERROR, "ERROR: my_short_sequence does not have the correct length\n")); + return; + } + + if(my_short_sequence[0] != 11) + ACE_ERROR ((LM_ERROR, "ERROR: my_short_sequence[0] != 11, it is %d\n", my_short_sequence[0])); + + if(my_short_sequence[1] != 12) + ACE_ERROR ((LM_ERROR, "ERROR: my_short_sequence[1] != 12, it is %d\n", my_short_sequence[1])); + + if(my_short_sequence[2] != 13) + ACE_ERROR ((LM_ERROR, "ERROR: my_short_sequence[2] != 13, it is %d\n", my_short_sequence[2])); + } + + ::long_sequence * + Foo_exec_i::my_long_sequence (void) + { + /* Your code here. */ + return 0; + } + + void + Foo_exec_i::my_long_sequence ( + const ::long_sequence & my_long_sequence) + { + if(my_long_sequence.length() != 3) + { + ACE_ERROR ((LM_ERROR, "ERROR: my_long_sequence does not have the correct length\n")); + return; + } + + if(my_long_sequence[0] != 21) + ACE_ERROR ((LM_ERROR, "ERROR: my_long_sequence[0] != 21, it is %d\n", my_long_sequence[0])); + + if(my_long_sequence[1] != 22) + ACE_ERROR ((LM_ERROR, "ERROR: my_long_sequence[1] != 22, it is %d\n", my_long_sequence[1])); + + if(my_long_sequence[2] != 23) + ACE_ERROR ((LM_ERROR, "ERROR: my_long_sequence[2] != 23, it is %d\n", my_long_sequence[2])); + } + + ::float_sequence * + Foo_exec_i::my_float_sequence (void) + { + /* Your code here. */ + return 0; + } + + void + Foo_exec_i::my_float_sequence ( + const ::float_sequence & my_float_sequence) + { + if(my_float_sequence.length() != 3) + { + ACE_ERROR ((LM_ERROR, "ERROR: my_float_sequence does not have the correct length\n")); + return; + } + + if(my_float_sequence[0] != 21.12F) + ACE_ERROR ((LM_ERROR, "ERROR: my_float_sequence[0] != 21.12, it is %f\n", my_float_sequence[0])); + + if(my_float_sequence[1] != 22.22F) + ACE_ERROR ((LM_ERROR, "ERROR: my_float_sequence[1] != 22.22, it is %f\n", my_float_sequence[1])); + + if(my_float_sequence[2] != 23.32F) + ACE_ERROR ((LM_ERROR, "ERROR: my_float_sequence[2] != 23.32, it is %f\n", my_float_sequence[2])); + } + + ::double_sequence * + Foo_exec_i::my_double_sequence (void) + { + /* Your code here. */ + return 0; + } + + void + Foo_exec_i::my_double_sequence ( + const ::double_sequence & my_double_sequence) + { + if(my_double_sequence.length() != 3) + { + ACE_ERROR ((LM_ERROR, "ERROR: my_double_sequence does not have the correct length\n")); + return; + } + + if(my_double_sequence[0] != 621.12) + ACE_ERROR ((LM_ERROR, "ERROR: my_double_sequence[0] != 621.12, it is %f\n", my_double_sequence[0])); + + if(my_double_sequence[1] != 622.22) + ACE_ERROR ((LM_ERROR, "ERROR: my_double_sequence[1] != 622.22, it is %f\n", my_double_sequence[1])); + + if(my_double_sequence[2] != 623.32) + ACE_ERROR ((LM_ERROR, "ERROR: my_double_sequence[2] != 623.32, it is %f\n", my_double_sequence[2])); + } + + ::Bar + Foo_exec_i::my_bar_struct (void) + { + /* Your code here. */ + return ::Bar (); + } + + void + Foo_exec_i::my_bar_struct ( + const ::Bar & my_bar_struct) + { + if(my_bar_struct.s != 3) + ACE_ERROR ((LM_ERROR, "ERROR: short value != 3, it is %d\n", my_bar_struct.s)); + + if(my_bar_struct.l != 4) + ACE_ERROR ((LM_ERROR, "ERROR: long value != 4, it is %d\n", my_bar_struct.l)); + + if(my_bar_struct.f != 5.6F) + ACE_ERROR ((LM_ERROR, "ERROR: float value != 5.6, it is %f\n", my_bar_struct.f)); + + if(my_bar_struct.s != 7.8) + ACE_ERROR ((LM_ERROR, "ERROR: short value != 7.8, it is %f\n", my_bar_struct.d)); + } + + // Operations from Components::SessionComponent. + + void + Foo_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Foo_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Foo_exec_i::configuration_complete (void) + { + /* Your code here. */ + } + + void + Foo_exec_i::ccm_activate (void) + { + /* Your code here. */ + } + + void + Foo_exec_i::ccm_passivate (void) + { + /* Your code here. */ + } + + void + Foo_exec_i::ccm_remove (void) + { + /* Your code here. */ + } + + extern "C" FOO_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Foo_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Foo_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/tests/Bug_3769_Regression/Foo_exec.h b/modules/CIAO/tests/Bug_3769_Regression/Foo_exec.h new file mode 100644 index 00000000000..b873ba292ed --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/Foo_exec.h @@ -0,0 +1,207 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * http://doc.ece.uci.edu/ + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// .\be\be_codegen.cpp:1217 + +#ifndef CIAO_FOO_EXEC_H_ +#define CIAO_FOO_EXEC_H_ + + +#include "FooEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Foo_exec_export.h" +#include "tao/LocalObject.h" + + +namespace CIAO_Foo_Impl +{ + class FOO_EXEC_Export Foo_exec_i + : public virtual Foo_Exec, + public virtual ::CORBA::LocalObject + { + public: + Foo_exec_i (void); + virtual ~Foo_exec_i (void); + + //@{ + /** Supported operations and attributes. */ + + //@} + + //@{ + /** Component attributes and port operations. */ + + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::CORBA::Short + my_short (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_short ( + ::CORBA::Short my_short); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::CORBA::Long + my_long (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_long ( + ::CORBA::Long my_long); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::CORBA::Float + my_float (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_float ( + ::CORBA::Float my_float); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::CORBA::Double + my_double (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_double ( + ::CORBA::Double my_double); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::short_sequence * + my_short_sequence (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_short_sequence ( + const ::short_sequence & my_short_sequence); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::long_sequence * + my_long_sequence (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_long_sequence ( + const ::long_sequence & my_long_sequence); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::float_sequence * + my_float_sequence (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_float_sequence ( + const ::float_sequence & my_float_sequence); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::double_sequence * + my_double_sequence (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_double_sequence ( + const ::double_sequence & my_double_sequence); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual ::Bar + my_bar_struct (void); + + // TAO_IDL - Generated from + // c:\middleware\ace_devo\tao\tao_idl\be\be_visitor_operation/operation_ch.cpp:42 + + virtual void + my_bar_struct ( + const ::Bar & my_bar_struct); + //@} + + //@{ + /** Operations from Components::SessionComponent. */ + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + //@} + + + private: + ::CCM_Foo_Context_var context_; + }; + + extern "C" FOO_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Foo_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/tests/Bug_3769_Regression/descriptors/DeploymentPlan.cdp b/modules/CIAO/tests/Bug_3769_Regression/descriptors/DeploymentPlan.cdp new file mode 100644 index 00000000000..e6173ec68e2 --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/descriptors/DeploymentPlan.cdp @@ -0,0 +1,138 @@ + + + + 118D5D70-E131-11DE-8000-00242C889DAA + + + PICML_default_xme_file.ComponentImplementations.FooImpl.FooImpl + + + + + component factory + + + tk_string + + + create_Foo_Impl + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + PICML_default_xme_file.ImplementationArtifacts.FooArtifacts.Foo_exec + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_Foo_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + PICML_default_xme_file.ImplementationArtifacts.FooArtifacts.Foo_svnt + + + + + + + PICML_default_xme_file.ComponentImplementations.ComponentImplementationContainer.ComponentAssembly.Foo + NodeOne + + + + edu.vanderbilt.dre.DAnCE.InstanceIOR + + + tk_string + + + FooImpl.ior + + + + + my_short + + + tk_short + + + 22 + + + + + my_long + + + tk_long + + + 33 + + + + + my_float + + + tk_float + + + 45.67 + + + + + my_double + + + tk_double + + + 56.78 + + + + + + + PICML_default_xme_file.ImplementationArtifacts.FooArtifacts.Foo_svnt + + + Foo_svnt + + + + PICML_default_xme_file.ImplementationArtifacts.FooArtifacts.Foo_exec + + + Foo_exec + + + + SameProcess + + + + diff --git a/modules/CIAO/tests/Bug_3769_Regression/descriptors/NodeMap.dat b/modules/CIAO/tests/Bug_3769_Regression/descriptors/NodeMap.dat new file mode 100644 index 00000000000..51d8967c561 --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/descriptors/NodeMap.dat @@ -0,0 +1 @@ +NodeOne corbaloc:iiop:localhost:10000/NodeManager \ No newline at end of file diff --git a/modules/CIAO/tests/Bug_3769_Regression/descriptors/run_test.pl b/modules/CIAO/tests/Bug_3769_Regression/descriptors/run_test.pl new file mode 100644 index 00000000000..d6e69f00739 --- /dev/null +++ b/modules/CIAO/tests/Bug_3769_Regression/descriptors/run_test.pl @@ -0,0 +1,228 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "NodeOne" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "DeploymentPlan.cdp"; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('..'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('..'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('..'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('..'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService --instance-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 5 seconds to allow task to complete\n"; +sleep (5); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Activator/Activator.mpc b/modules/CIAO/tests/CIAO_ComponentServer/Activator/Activator.mpc new file mode 100644 index 00000000000..df8ec43d6f2 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Activator/Activator.mpc @@ -0,0 +1,6 @@ +// $Id$ +project (Activator_CIAOComponentServer_Test) : ciao_componentserver_stub, ccm_configvalue, ciao_cs_client { + Source_Files { + client.cpp + } +} \ No newline at end of file diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Activator/client.cpp b/modules/CIAO/tests/CIAO_ComponentServer/Activator/client.cpp new file mode 100644 index 00000000000..7357e86679b --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Activator/client.cpp @@ -0,0 +1,190 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ciao/ComponentServer/CIAO_CS_ClientS.h" +#include "ciao/ComponentServer/CIAO_ComponentServerC.h" +#include "ciao/ComponentServer/CIAO_ServerActivator_Impl.h" +#include "ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h" +#include "ciao/Valuetype_Factories/ConfigValue.h" + +const ACE_TCHAR *cs_path = ACE_TEXT ("ciao_componentserver"); +CORBA::ULong spawn_delay = 30; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "s:d:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 's': + cs_path = get_opts.opt_arg (); + break; + + case 'd': + spawn_delay = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-s " + "-d " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + using namespace CIAO::Deployment; + + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var object = + orb->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + poa_manager->activate (); + + CIAO::Deployment::ComponentInstallation_Impl *tmp_ci; + + ACE_NEW_THROW_EX (tmp_ci, + CIAO::Deployment::ComponentInstallation_Impl (), + CORBA::NO_MEMORY ()); + + PortableServer::ServantBase_var safe_servant = tmp_ci; + + CIAO_ServerActivator_i *sa_tmp = new CIAO_ServerActivator_i (spawn_delay, + ACE_TEXT_ALWAYS_CHAR (cs_path), + 0, + false, + tmp_ci->_this (), + orb.in (), + root_poa.in ()); + PortableServer::ServantBase_var safe = sa_tmp; + + ServerActivator_var sa = sa_tmp->_this (); + + // Make our configvalues + // ::Components::ConfigValues_var configs = new + ::Components::ConfigValues configs(2); + //ACE_DEBUG ((LM_DEBUG, "Attempting to create componentserver with no configvalues\n")); + // Make a componentserver with no configvalues + ComponentServer_var server1 (ComponentServer::_narrow (sa->create_component_server (configs))); + //ACE_DEBUG ((LM_DEBUG, "Componentserver with no configvalues created!\n")); + + //ACE_DEBUG ((LM_DEBUG, "Attempting to create componentserver with UUID configvalues\n")); + CORBA::Any val; + val <<= "MyNameIsEarl"; + configs.length (1); + ::Components::ConfigValue_var cv_tmp = new CIAO::ConfigValue_impl ("edu.vanderbilt.dre.ServerUUID", val); + configs[0] = cv_tmp._retn (); + + ComponentServer_var server2 (ComponentServer::_narrow (sa->create_component_server (configs))); + + // Initialize servant + + if (CORBA::is_nil (server1.in ()) || + CORBA::is_nil (server1.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Nil componentserver references"), -1); + } + + Components::Deployment::Container_var tmp = server1->create_container (0); + Container_var cont1a = Container::_narrow (tmp.in ()); + if (CORBA::is_nil (cont1a.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 1 %u %u\n", + tmp.in (), cont1a.in ())); + return -1; + } + //ACE_DEBUG ((LM_DEBUG, "Got container from server 1a\n")); + + Container_var cont1b = Container::_narrow (server1->create_container (0)); + if (CORBA::is_nil (cont1b.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from second create op on server 1\n")); + return -1; + } + //ACE_DEBUG ((LM_DEBUG, "Got container from server 1b\n")); + + Container_var cont2a = Container::_narrow (server2->create_container (0)); + if (CORBA::is_nil (cont2a.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 2\n")); + return -1; + } + //ACE_DEBUG ((LM_DEBUG, "Got container from server 2a\n")); + + try + { + server2->remove_container (cont1a); + ACE_ERROR ((LM_ERROR, "Error: remove_container removed a container not belonging to the component server\n")); + } + catch (::Components::RemoveFailure &) + { + //ACE_DEBUG ((LM_DEBUG, "Server 2 Refused to remove container it didn't own\n")); + // expected + } + + ::Components::Deployment::Containers_var cses = server1->get_containers (); + + if (cses->length () != 2) + ACE_ERROR ((LM_ERROR, "Error: get_containers returned the wrong number of containers, %u should be 2\n", + cses->length ())); + else //ACE_DEBUG ((LM_DEBUG, "Got %u containers\n", cses->length ())); + + server1->remove_container (cont1a); + //ACE_DEBUG ((LM_DEBUG, "Successfully removed container 1a\n")); + + cses = server1->get_containers (); + + if (cses->length () != 1) + ACE_ERROR ((LM_ERROR, "Error: get_containers returned %u containers after removal, should be 1\n", + cses->length ())); + + server2->remove_container (cont2a); + //ACE_DEBUG ((LM_DEBUG, "Successfully removed container 2a\n")); + server1->remove_container (cont1b); + //ACE_DEBUG ((LM_DEBUG, "Successfully removed container 1b\n")); + + //ACE_DEBUG ((LM_DEBUG, "Removing component server\n")); + sa->remove_component_server (server1.in ()); + sa->remove_component_server (server2.in ()); + //ACE_DEBUG ((LM_DEBUG, "Componentserver removed\n")); + + orb->destroy (); + } + catch (::Components::CreateFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught CreateFailure exception.\n")); + } + catch (::Components::RemoveFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught RemoveFailure exception.\n")); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "Error: Caught unknown exception\n")); + } + return 0; +} diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Activator/run_test.pl b/modules/CIAO/tests/CIAO_ComponentServer/Activator/run_test.pl new file mode 100755 index 00000000000..ea9af0a7d2a --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Activator/run_test.pl @@ -0,0 +1,35 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; +$ciao_root = "$ENV{CIAO_ROOT}"; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } +} + +my $target = PerlACE::TestTarget::create_target (1); + +$SV1 = $target->CreateProcess ("./client", "-s $ciao_root/bin/ciao_componentserver"); + +$server_status = $SV1->SpawnWaitKill ($target->ProcessStartWaitInterval ()); + +if ($server_status != 0) { + $target->GetStderrLog(); + print STDERR "ERROR: server1 returned $server_status\n"; + exit 1; +} + +$target->GetStderrLog(); + +exit $status; diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Basic/Basic.mpc b/modules/CIAO/tests/CIAO_ComponentServer/Basic/Basic.mpc new file mode 100644 index 00000000000..1de96195bb9 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Basic/Basic.mpc @@ -0,0 +1,6 @@ +// $Id$ +project (Basic_CIAOComponentServer_Test) : ciao_componentserver_stub { + Source_Files { + client.cpp + } +} \ No newline at end of file diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Basic/client.cpp b/modules/CIAO/tests/CIAO_ComponentServer/Basic/client.cpp new file mode 100644 index 00000000000..8d36037c8f2 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Basic/client.cpp @@ -0,0 +1,143 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ciao/ComponentServer/CIAO_ComponentServerC.h" + +const ACE_TCHAR *server_1 = ACE_TEXT("file://test1.ior"); +const ACE_TCHAR *server_2 = ACE_TEXT("file://test2.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:j:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + server_1 = get_opts.opt_arg (); + break; + + case 'j': + server_2 = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k " + "-j " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + using namespace CIAO::Deployment; + + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var tmp1 = orb->string_to_object(server_1); + CORBA::Object_var tmp2 = orb->string_to_object(server_2); + + ComponentServer_var server1 (ComponentServer::_narrow (tmp1)), + server2 (ComponentServer::_narrow (tmp2)); + + if (CORBA::is_nil (server1.in ()) || + CORBA::is_nil (server1.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Nil componentserver references"), -1); + } + + Components::Deployment::Container_var tmp = server1->create_container (0); + Container_var cont1a = Container::_narrow (tmp.in ()); + if (CORBA::is_nil (cont1a.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 1 %u %u\n", + tmp.in (), cont1a.in ())); + return -1; + } + ACE_ERROR ((LM_DEBUG, "Got container from server 1a\n")); + + Container_var cont1b = Container::_narrow (server1->create_container (0)); + if (CORBA::is_nil (cont1b.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from second create op on server 1\n")); + return -1; + } + ACE_ERROR ((LM_DEBUG, "Got container from server 1b\n")); + + Container_var cont2a = Container::_narrow (server2->create_container (0)); + if (CORBA::is_nil (cont2a.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 2\n")); + return -1; + } + ACE_ERROR ((LM_DEBUG, "Got container from server 2a\n")); + + try + { + server2->remove_container (cont1a); + ACE_ERROR ((LM_ERROR, "Error: remove_container removed a container not belonging to the component server\n")); + } + catch (const ::Components::RemoveFailure &) + { + ACE_DEBUG ((LM_DEBUG, "Server 2 Refused to remove container it didn't own\n")); + // expected + } + + ::Components::Deployment::Containers_var cses = server1->get_containers (); + + if (cses->length () != 2) + ACE_ERROR ((LM_ERROR, "Error: get_containers returned the wrong number of containers, %u should be 2\n", + cses->length ())); + else ACE_DEBUG ((LM_DEBUG, "Got %u containers\n", cses->length ())); + + server1->remove_container (cont1a); + ACE_DEBUG ((LM_DEBUG, "Successfully removed container 1a\n")); + + cses = server1->get_containers (); + + if (cses->length () != 1) + ACE_ERROR ((LM_ERROR, "Error: get_containers returned %u containers after removal, should be 1\n", + cses->length ())); + + server2->remove_container (cont2a); + ACE_DEBUG ((LM_DEBUG, "Successfully removed container 2a\n")); + server1->remove_container (cont1b); + ACE_DEBUG ((LM_DEBUG, "Successfully removed container 1b\n")); + + server1->remove (); + server1->shutdown (); + server2->remove (); + server2->shutdown (); + + orb->destroy (); + } + catch (const ::Components::CreateFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught CreateFailure exception.\n")); + } + catch (const ::Components::RemoveFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught RemoveFailure exception.\n")); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "Error: Caught unknown exception\n")); + } + return 0; +} diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Basic/run_test.pl b/modules/CIAO/tests/CIAO_ComponentServer/Basic/run_test.pl new file mode 100755 index 00000000000..ed2f80825a6 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Basic/run_test.pl @@ -0,0 +1,110 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; +$ciao_root = "$ENV{CIAO_ROOT}"; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } +} + +my $target = PerlACE::TestTarget::create_target (1); +my $host = new PerlACE::TestTarget; + +$iorbase1 = "server1.ior"; +$iorbase2 = "server2.ior"; + +$server_iorfile1 = $target->LocalFile ($iorbase1); +$server_iorfile2 = $target->LocalFile ($iorbase2); + +$target->DeleteFile($iorbase1); +$target->DeleteFile($iorbase2); + +$client_iorfile1 = $host->LocalFile ($iorbase1); +$client_iorfile2 = $host->LocalFile ($iorbase2); + +$host->DeleteFile($iorbase1); +$host->DeleteFile($iorbase2); + +$SV1 = $target->CreateProcess ("$ciao_root/bin/ciao_componentserver", "-ORBDebuglevel $debug_level -u $server_iorfile1 -o $server_iorfile1"); +$SV2 = $target->CreateProcess ("$ciao_root/bin/ciao_componentserver", "-ORBDebuglevel $debug_level -u $server_iorfile2 -o $server_iorfile2"); + +$CL = $host->CreateProcess ("client", "-k file://$client_iorfile1 -j file://$client_iorfile2"); + +$server_status1 = $SV1->Spawn (); +$server_status2 = $SV2->Spawn (); + +if ($server_status1 != 0) { + print STDERR "ERROR: server1 returned $server_status1\n"; + exit 1; +} +if ($server_status2 != 0) { + print STDERR "ERROR: server2 returned $server_status2\n"; + exit 1; +} + +if ($target->WaitForFileTimed ($iorbase1, + $target->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile1>\n"; + $SV1->Kill (); $SV1->TimedWait (1); + exit 1; +} + +if ($target->WaitForFileTimed ($iorbase2, + $target->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile2>\n"; + $SV2->Kill (); $SV2->TimedWait (1); + exit 1; +} + +if ($target->GetFile ($server_iorfile1, $iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$iorbase1>\n"; + $SV1->Kill (); $SV1->TimedWait (1); + exit 1; +} + +if ($target->GetFile ($server_iorfile2, $iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$iorbase2>\n"; + $SV2->Kill (); $SV2->TimedWait (1); + exit 1; +} + +$client_status = $CL->SpawnWaitKill ($host->ProcessStartWaitInterval ()); + +if ($client_status != 0) { + print STDERR "ERROR: client returned $client_status\n"; + $status = 1; +} + +$server_status1 = $SV1->WaitKill ($target->ProcessStopWaitInterval ()); +$server_status2 = $SV2->WaitKill ($target->ProcessStopWaitInterval ()); + +if ($server_status1 != 0) { + print STDERR "ERROR: server1 returned $server_status1\n"; + $status = 1; +} + +if ($server_status2 != 0) { + print STDERR "ERROR: server2 returned $server_status2\n"; + $status = 1; +} + +$target->GetStderrLog(); + +$target->DeleteFile($iorbase1); +$target->DeleteFile($iorbase2); + +$host->DeleteFile($iorbase1); +$host->DeleteFile($iorbase2); + +exit $status; diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl new file mode 100644 index 00000000000..82b82b5e6a2 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl @@ -0,0 +1,18 @@ +// $Id$ +#include + +interface trigger +{ + oneway void run_test (); +}; + +local interface Foo +{ + void simple (); +}; + +component Bar supports trigger +{ + uses Foo foo_in; + provides Foo foo_out; +}; diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc new file mode 100644 index 00000000000..022c15a5cad --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc @@ -0,0 +1,146 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl Local_Facet" + +project(Local_Facet_idl_gen) : componentidldefaults { + + custom_only = 1 + idlflags += -Wb,stub_export_macro=LOCAL_FACET_STUB_Export \ + -Wb,stub_export_include=Local_Facet_stub_export.h \ + -Wb,skel_export_macro=LOCAL_FACET_SVNT_Export \ + -Wb,skel_export_include=Local_Facet_svnt_export.h \ + -Wb,exec_export_macro=LOCAL_FACET_EXEC_Export \ + -Wb,exec_export_include=Local_Facet_exec_export.h + + IDL_Files { + Local_Facet.idl + } +} + +project(Local_Facet_lem_gen) : ciaoidldefaults { + + after += Local_Facet_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=LOCAL_FACET_LEM_STUB_Export \ + -Wb,stub_export_include=Local_Facet_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + Local_FacetE.idl + } +} + +project(Local_Facet_lem_stub) : ccm_svnt { + + after += Local_Facet_lem_gen Local_Facet_stub + libs += Local_Facet_stub + + + sharedname = Local_Facet_lem_stub + dynamicflags = LOCAL_FACET_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Local_FacetEC.cpp + } + + Header_Files { + Local_FacetEC.h + Local_Facet_lem_stub_export.h + } + + Inline_Files { + Local_FacetEC.inl + } +} + +project(Local_Facet_stub) : ccm_stub { + + after += Local_Facet_idl_gen + libs += + + + sharedname = Local_Facet_stub + dynamicflags = LOCAL_FACET_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Local_FacetC.cpp + } + + Header_Files { + Local_FacetC.h + Local_Facet_stub_export.h + } + + Inline_Files { + Local_FacetC.inl + } +} + +project(Local_Facet_exec) : ciao_executor { + + after += Local_Facet_lem_stub Local_Facet_stub + sharedname = Local_Facet_exec + libs += Local_Facet_stub Local_Facet_lem_stub + + + dynamicflags = LOCAL_FACET_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Local_Facet_exec.cpp + } + + Header_Files { + Local_Facet_exec.h + Local_Facet_exec_export.h + } + + Inline_Files { + } +} + + +project(Local_Facet_svnt) : ciao_servant { + + after += Local_Facet_lem_stub + sharedname = Local_Facet_svnt + libs += Local_Facet_stub Local_Facet_lem_stub + + + dynamicflags = LOCAL_FACET_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Local_FacetS.cpp + Local_Facet_svnt.cpp + } + + Header_Files { + Local_FacetS.h + Local_Facet_svnt.h + Local_Facet_svnt_export.h + } + + Inline_Files { + Local_FacetS.inl + } +} + +project (Lf_CIAOComponentServer_Tst) : ciao_componentserver_stub, ccm_configvalue, ciao_cs_client, ciao_logger { + after += Local_Facet_stub Local_Facet_svnt + libs += Local_Facet_stub + IDL_Files { + } + Source_Files { + client.cpp + } +} \ No newline at end of file diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp new file mode 100644 index 00000000000..37a96ee10e3 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp @@ -0,0 +1,119 @@ +// -*- C++ -*- +// $Id$ + +#include "Local_Facet_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_Bar_Impl +{ + //============================================================ + // Facet Executor Implementation Class: Foo_exec_i + //============================================================ + + Foo_exec_i::Foo_exec_i (void) + { + } + + Foo_exec_i::~Foo_exec_i (void) + { + } + + void Foo_exec_i::simple (void) + { + ACE_DEBUG ((LM_INFO, "Got simple invocation\n")); + } + + // Operations from ::Foo + + //============================================================ + // Component Executor Implementation Class: Bar_exec_i + //============================================================ + + Bar_exec_i::Bar_exec_i (void) + { + } + + Bar_exec_i::~Bar_exec_i (void) + { + } + + // Supported operations and attributes. + + // Component attributes and port operations. + + ::CCM_Foo_ptr + Bar_exec_i::get_foo_out (void) + { + return new Foo_exec_i (); + } + + // Operations from Components::SessionComponent. + + void + Bar_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Bar_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Bar_exec_i::run_test (void) + { + ::Foo_var foo_intf = this->context_->get_connection_foo_in (); + + if (CORBA::is_nil (foo_intf)) + { + ACE_ERROR ((LM_ERROR, "ERROR: Local_Facet_Test: got a nil object reference for my connection\n")); + return; + } + + ACE_DEBUG ((LM_DEBUG, "Invoking simple\n")); + foo_intf->simple (); + + ACE_DEBUG ((LM_INFO, "Test successful!\n")); + } + + void + Bar_exec_i::configuration_complete (void) + { + /* Your code here. */ + } + + void + Bar_exec_i::ccm_activate (void) + { + /* Your code here. */ + } + + void + Bar_exec_i::ccm_passivate (void) + { + /* Your code here. */ + } + + void + Bar_exec_i::ccm_remove (void) + { + /* Your code here. */ + } + + extern "C" LOCAL_FACET_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Bar_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Bar_exec_i); + + return retval; + } +} + diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h new file mode 100644 index 00000000000..4113d147adc --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h @@ -0,0 +1,81 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_LOCAL_FACET_EXEC_H_ +#define CIAO_LOCAL_FACET_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Local_FacetEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Local_Facet_exec_export.h" +#include "tao/LocalObject.h" + + +namespace CIAO_Bar_Impl +{ + class LOCAL_FACET_EXEC_Export Foo_exec_i + : public virtual ::CCM_Foo, + public virtual ::CORBA::LocalObject + { + public: + Foo_exec_i (void); + virtual ~Foo_exec_i (void); + + // Operations and attributes from ::Foo + virtual void simple (void); + }; + + class LOCAL_FACET_EXEC_Export Bar_exec_i + : public virtual Bar_Exec, + public virtual ::CORBA::LocalObject + { + public: + Bar_exec_i (void); + virtual ~Bar_exec_i (void); + + //@{ + /** Supported operations and attributes. */ + virtual void run_test (void); + + //@} + + //@{ + /** Component attributes and port operations. */ + + + virtual ::CCM_Foo_ptr + get_foo_out (void); + //@} + + //@{ + /** Operations from Components::SessionComponent. */ + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + //@} + + + private: + ::CCM_Bar_Context_var context_; + }; + + extern "C" LOCAL_FACET_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Bar_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp new file mode 100644 index 00000000000..10009051d88 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp @@ -0,0 +1,186 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ciao/ComponentServer/CIAO_CS_ClientS.h" +#include "ciao/ComponentServer/CIAO_ComponentServerC.h" +#include "ciao/ComponentServer/CIAO_ServerActivator_Impl.h" +#include "ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h" +#include "ciao/ComponentServer/CIAO_PropertiesC.h" +#include "ciao/Valuetype_Factories/ConfigValue.h" +#include "ciao/Logger/Logger_Service.h" + +#include "Local_FacetC.h" + +const char *cs_path = "ciao_componentserver"; +CORBA::ULong spawn_delay = 30; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("s:d:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 's': + cs_path = ACE_TEXT_ALWAYS_CHAR (get_opts.opt_arg ()); + break; + + case 'd': + spawn_delay = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-s " + "-d " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + using namespace CIAO::Deployment; + + CIAO::Logger_Service logger; + + logger.init (argc, argv); + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var object = + orb->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + poa_manager->activate (); + ACE_DEBUG ((LM_DEBUG, "foo\n")); + + CIAO::Deployment::ComponentInstallation_Impl *tmp_ci = 0; + + ACE_NEW_THROW_EX (tmp_ci, + CIAO::Deployment::ComponentInstallation_Impl (), + CORBA::NO_MEMORY ()); + + PortableServer::ServantBase_var safe_servant = tmp_ci; + + root_poa->activate_object (tmp_ci); + + CIAO_ServerActivator_i *sa_tmp = new CIAO_ServerActivator_i (spawn_delay, + cs_path, + 0, + false, + tmp_ci->_this (), + orb.in (), + root_poa.in ()); + + PortableServer::ServantBase_var safe = sa_tmp; + + ServerActivator_var sa = sa_tmp->_this (); + + //ACE_DEBUG ((LM_DEBUG, "Attempting to create componentserver with no configvalues\n")); + // Make a componentserver with no configvalues + ComponentServer_var server1 (ComponentServer::_narrow (sa->create_component_server (0))); + + if (CORBA::is_nil (server1.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Nil componentserver references"), -1); + } + + Components::Deployment::Container_var tmp = server1->create_container (0); + Container_var cont1a = Container::_narrow (tmp.in ()); + + if (CORBA::is_nil (cont1a.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 1 %u %u\n", + tmp.in (), cont1a.in ())); + return -1; + } + + // Make our configvalues + // ::Components::ConfigValues_var configs = new + CORBA::Any val; + ::Components::ConfigValues configs(3); + configs.length (3); + + val <<= "create_Bar_Servant"; + configs[0] = new CIAO::ConfigValue_impl (CIAO::Deployment::SVNT_ENTRYPT, + val); + val <<= "Local_Facet_svnt"; + configs[1] = new CIAO::ConfigValue_impl (CIAO::Deployment::SVNT_ARTIFACT, + val); + tmp_ci->install ("Local_Facet_svnt", "Local_Facet_svnt"); + val <<= "Local_Facet_exec"; + configs[2] = new CIAO::ConfigValue_impl (CIAO::Deployment::EXEC_ARTIFACT, + val); + tmp_ci->install ("Local_Facet_exec", "Local_Facet_exec"); + + // Install Components + Components::CCMObject_var comp1 = cont1a->install_component ("User", + "create_Bar_Impl", + configs); + Components::CCMObject_var comp2 = cont1a->install_component ("Provider", + "create_Bar_Impl", + configs); + + if (CORBA::is_nil (comp1) || CORBA::is_nil (comp2)) + { + ACE_ERROR ((LM_ERROR, "Got back a nil component ref from install_component\n")); + return -1; + } + + ::Bar_var user = ::Bar::_narrow (comp1.in ()); + + + if (CORBA::is_nil (user)) + { + ACE_ERROR ((LM_ERROR, "Narrow failed from CCMObject to Bar\n")); + return -1; + } + + + cont1a->connect_local_facet (comp2, "foo_out", comp1, "foo_in"); + + user->run_test (); + + cont1a->remove_component (comp1.in ()); + cont1a->remove_component (comp2.in ()); + + server1->remove_container (cont1a.in ()); + + //ACE_DEBUG ((LM_DEBUG, "Removing component server\n")); + sa->remove_component_server (server1.in ()); + //ACE_DEBUG ((LM_DEBUG, "Componentserver removed\n")); + + orb->destroy (); + } + catch (::Components::CreateFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught CreateFailure exception.\n")); + } + catch (::Components::RemoveFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught RemoveFailure exception.\n")); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "Error: Caught unknown exception\n")); + } + return 0; +} diff --git a/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl new file mode 100755 index 00000000000..d9230ece23b --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl @@ -0,0 +1,33 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$ciao_root = "$ENV{CIAO_ROOT}"; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $ENV{"DANCE_TRACE_ENABLE"} = 1; + $ENV{"CIAO_TRACE_ENABLE"} = 1; + } +} + +my $target = PerlACE::TestTarget::create_target (1); + +$TG = $target->CreateProcess ("client", "-s $ciao_root/bin/ciao_componentserver -d 120"); +$server_status = $TG->SpawnWaitKill ($target->ProcessStartWaitInterval ()); + +if ($server_status != 0) { + print STDERR "ERROR: process returned $server_status\n"; + exit 1; +} + +$target->GetStderrLog(); + +exit $status; diff --git a/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.idl b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.idl new file mode 100644 index 00000000000..dcf676fb276 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.idl @@ -0,0 +1,21 @@ +//$Id$ + +#include + +module Foo +{ + interface Simple + { + void trigger (); + }; + + component SimpleComponent supports Simple + { + readonly attribute string creationtype_; + }; + + home SimpleHome manages SimpleComponent + { + }; +}; + diff --git a/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc new file mode 100644 index 00000000000..cf6400373a5 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent.mpc @@ -0,0 +1,112 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl SimpleComponent" + +project(SimpleComponent_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SIMPLECOMPONENT_STUB_Export \ + -Wb,stub_export_include=SimpleComponent_stub_export.h \ + -Wb,skel_export_macro=SIMPLECOMPONENT_SVNT_Export \ + -Wb,skel_export_include=SimpleComponent_svnt_export.h \ + -Wb,exec_export_macro=SIMPLECOMPONENT_EXEC_Export \ + -Wb,exec_export_include=SimpleComponent_exec_export.h + + IDL_Files { + SimpleComponent.idl + } +} + +project(SimpleComponent_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += SimpleComponent_idl_gen + idlflags += -Wb,export_macro=SIMPLECOMPONENT_EXEC_Export \ + -Wb,export_include=SimpleComponent_exec_export.h \ + -SS + + IDL_Files { + SimpleComponentE.idl + } +} + +project(SimpleComponent_stub) : ccm_stub { + after += SimpleComponent_idl_gen + + sharedname = SimpleComponent_stub + dynamicflags = SIMPLECOMPONENT_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleComponentC.cpp + } + + Header_Files { + SimpleComponentC.h + SimpleComponent_stub_export.h + } + + Inline_Files { + SimpleComponentC.inl + } +} + +project(SimpleComponent_exec) : ciao_executor { + after += SimpleComponent_lem_gen SimpleComponent_stub + sharedname = SimpleComponent_exec + libs += SimpleComponent_stub + + dynamicflags = SIMPLECOMPONENT_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SimpleComponentEC.cpp + SimpleComponent_exec.cpp + } + + Header_Files { + SimpleComponentEC.h + SimpleComponent_exec.h + SimpleComponent_exec_export.h + } + + Inline_Files { + SimpleComponentEC.inl + } +} + + +project(SimpleComponent_svnt) : ciao_servant { + sharedname = SimpleComponent_svnt + libs += SimpleComponent_stub SimpleComponent_exec + after += SimpleComponent_stub SimpleComponent_exec + dynamicflags = SIMPLECOMPONENT_SVNT_BUILD_DLL + + IDL_Files { + } + Source_Files { + SimpleComponentS.cpp + SimpleComponent_svnt.cpp + } + + Header_Files { + SimpleComponentS.h + SimpleComponent_svnt.h + SimpleComponent_svnt_export.h + } + + Inline_Files { + SimpleComponentS.inl + } +} + +project (SimpleComp_CIAOComponentServer_Tst) : ciao_componentserver_stub, ccm_configvalue, ciao_cs_client, ciao_logger { + after += SimpleComponent_stub SimpleComponent_svnt + libs += SimpleComponent_stub + IDL_Files { + } + Source_Files { + client.cpp + } +} diff --git a/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp new file mode 100644 index 00000000000..60d0a6eebf7 --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.cpp @@ -0,0 +1,131 @@ +// $Id$ + +#include "SimpleComponent_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_Foo_SimpleComponent_Impl +{ + //================================================================== + // Component Executor Implementation Class: SimpleComponent_exec_i + //================================================================== + + SimpleComponent_exec_i::SimpleComponent_exec_i (const char *type) + : type_ (CORBA::string_dup (type)) + { + } + + SimpleComponent_exec_i::~SimpleComponent_exec_i (void) + { + } + + // Supported or inherited operations. + + void + SimpleComponent_exec_i::trigger () + { + ACE_DEBUG ((LM_EMERGENCY, "Hello, world!!!!!!!!\n")); + } + + // Attribute operations. + + char * + SimpleComponent_exec_i::creationtype_ () + { + return CORBA::string_dup (this->type_.in ()); + } + + // Port operations. + + // Operations from Components::SessionComponent + + void + SimpleComponent_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Foo::CCM_SimpleComponent_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + SimpleComponent_exec_i::configuration_complete () + { + // Your code here. + } + + void + SimpleComponent_exec_i::ccm_activate () + { + // Your code here. + } + + void + SimpleComponent_exec_i::ccm_passivate () + { + // Your code here. + } + + void + SimpleComponent_exec_i::ccm_remove () + { + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SimpleHome_exec_i + //================================================================== + + SimpleHome_exec_i::SimpleHome_exec_i (void) + { + CIAO_TRACE ("SimpleHome_exec_i::SimpleHome_exec_i"); + ACE_DEBUG ((LM_NOTICE, CLINFO "SimpleHome_exec_i::SimpleHome_exec_i - " + "Home constructed\n")); + } + + SimpleHome_exec_i::~SimpleHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SimpleHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + SimpleComponent_exec_i ("HomeCreated"), + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SIMPLECOMPONENT_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Foo_SimpleHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SimpleHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h new file mode 100644 index 00000000000..04afe9ffc2c --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/SimpleComponent_exec.h @@ -0,0 +1,90 @@ +// $Id$ + +#ifndef CIAO_SIMPLECOMPONENT_EXEC_H +#define CIAO_SIMPLECOMPONENT_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SimpleComponentEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "SimpleComponent_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Foo_SimpleComponent_Impl +{ + class SIMPLECOMPONENT_EXEC_Export SimpleComponent_exec_i + : public virtual SimpleComponent_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleComponent_exec_i (const char *CreateType); + virtual ~SimpleComponent_exec_i (void); + + // Supported or inherited operations. + + virtual void + trigger (); + + // Attribute operations. + + virtual char * + creationtype_ () + ; + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Foo::CCM_SimpleComponent_Context_var context_; + + CORBA::String_var type_; + + }; + + class SIMPLECOMPONENT_EXEC_Export SimpleHome_exec_i + : public virtual SimpleHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SimpleHome_exec_i (void); + virtual ~SimpleHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SIMPLECOMPONENT_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Foo_SimpleHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SIMPLECOMPONENT_EXEC_H */ + diff --git a/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/client.cpp b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/client.cpp new file mode 100644 index 00000000000..bdcdf022d1a --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/client.cpp @@ -0,0 +1,187 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ciao/ComponentServer/CIAO_CS_ClientS.h" +#include "ciao/ComponentServer/CIAO_ComponentServerC.h" +#include "ciao/ComponentServer/CIAO_ServerActivator_Impl.h" +#include "ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h" +#include "ciao/ComponentServer/CIAO_PropertiesC.h" +#include "ciao/Valuetype_Factories/ConfigValue.h" +#include "ciao/Logger/Logger_Service.h" + +#include "SimpleComponentC.h" + +const char *cs_path = "ciao_componentserver"; +CORBA::ULong spawn_delay = 30; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("s:d:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 's': + cs_path = ACE_TEXT_ALWAYS_CHAR (get_opts.opt_arg ()); + break; + + case 'd': + spawn_delay = ACE_OS::atoi (get_opts.opt_arg ()); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-s " + "-d " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR **argv) +{ + using namespace CIAO::Deployment; + + CIAO::Logger_Service logger; + + logger.init (argc, argv); + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var object = + orb->resolve_initial_references ("RootPOA"); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (object.in ()); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (); + + poa_manager->activate (); + ACE_DEBUG ((LM_DEBUG, "foo\n")); + + CIAO::Deployment::ComponentInstallation_Impl *tmp_ci = 0; + + ACE_NEW_THROW_EX (tmp_ci, + CIAO::Deployment::ComponentInstallation_Impl (), + CORBA::NO_MEMORY ()); + + PortableServer::ServantBase_var safe_servant = tmp_ci; + + root_poa->activate_object (tmp_ci); + + CIAO_ServerActivator_i *sa_tmp = new CIAO_ServerActivator_i (spawn_delay, + cs_path, + 0, + false, + tmp_ci->_this (), + orb.in (), + root_poa.in ()); + + PortableServer::ServantBase_var safe = sa_tmp; + + ServerActivator_var sa = sa_tmp->_this (); + + //ACE_DEBUG ((LM_DEBUG, "Attempting to create componentserver with no configvalues\n")); + // Make a componentserver with no configvalues + ComponentServer_var server1 (ComponentServer::_narrow (sa->create_component_server (0))); + + if (CORBA::is_nil (server1.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Nil componentserver references"), -1); + } + + Components::Deployment::Container_var tmp = server1->create_container (0); + Container_var cont1a = Container::_narrow (tmp.in ()); + + if (CORBA::is_nil (cont1a.in ())) + { + ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 1 %u %u\n", + tmp.in (), cont1a.in ())); + return -1; + } + + // Make our configvalues + // ::Components::ConfigValues_var configs = new + CORBA::Any val; + ::Components::ConfigValues configs(3); + configs.length (3); + + val <<= "create_Foo_SimpleHome_Servant"; + configs[0] = new CIAO::ConfigValue_impl (CIAO::Deployment::SVNT_ENTRYPT, + val); + val <<= "SimpleComponent_svnt"; + configs[1] = new CIAO::ConfigValue_impl (CIAO::Deployment::SVNT_ARTIFACT, + val); + tmp_ci->install ("SimpleComponent_svnt", "SimpleComponent_svnt"); + val <<= "SimpleComponent_exec"; + configs[2] = new CIAO::ConfigValue_impl (CIAO::Deployment::EXEC_ARTIFACT, + val); + tmp_ci->install ("SimpleComponent_exec", "SimpleComponent_exec"); + + // Install Home + Components::CCMHome_var home = cont1a->install_home ("MyNameIsEarl", + "create_Foo_SimpleHome_Impl", + configs); + + if (CORBA::is_nil (home)) + { + ACE_ERROR ((LM_ERROR, "Got back a nil home ref from install_home\n")); + return -1; + } + + Foo::SimpleHome_var shome = Foo::SimpleHome::_narrow (home.in ()); + + if (CORBA::is_nil (shome)) + { + ACE_ERROR ((LM_ERROR, "Narrow failed from CCM_Home to SimpleHome\n")); + return -1; + } + + + Foo::SimpleComponent_var sc = shome->create (); + + if (CORBA::is_nil (sc)) + { + ACE_ERROR ((LM_ERROR, "Home failed to make a component\n")); + return -1; + } + + sc->trigger (); + + cont1a->remove_home (home.in ()); + + server1->remove_container (cont1a.in ()); + + //ACE_DEBUG ((LM_DEBUG, "Removing component server\n")); + sa->remove_component_server (server1.in ()); + //ACE_DEBUG ((LM_DEBUG, "Componentserver removed\n")); + + orb->destroy (); + } + catch (::Components::CreateFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught CreateFailure exception.\n")); + } + catch (::Components::RemoveFailure &) + { + ACE_ERROR ((LM_ERROR, "Error: Caught RemoveFailure exception.\n")); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "Error: Caught unknown exception\n")); + } + return 0; +} diff --git a/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/run_test.pl b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/run_test.pl new file mode 100755 index 00000000000..d9230ece23b --- /dev/null +++ b/modules/CIAO/tests/CIAO_ComponentServer/SimpleComponent/run_test.pl @@ -0,0 +1,33 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$ciao_root = "$ENV{CIAO_ROOT}"; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $ENV{"DANCE_TRACE_ENABLE"} = 1; + $ENV{"CIAO_TRACE_ENABLE"} = 1; + } +} + +my $target = PerlACE::TestTarget::create_target (1); + +$TG = $target->CreateProcess ("client", "-s $ciao_root/bin/ciao_componentserver -d 120"); +$server_status = $TG->SpawnWaitKill ($target->ProcessStartWaitInterval ()); + +if ($server_status != 0) { + print STDERR "ERROR: process returned $server_status\n"; + exit 1; +} + +$target->GetStderrLog(); + +exit $status; diff --git a/modules/CIAO/tests/CIDL/CodeGen/Basic.idl b/modules/CIAO/tests/CIDL/CodeGen/Basic.idl new file mode 100644 index 00000000000..9c86c4b7846 --- /dev/null +++ b/modules/CIAO/tests/CIDL/CodeGen/Basic.idl @@ -0,0 +1,65 @@ +// $Id$ +//============================================================================= +/** + * @file Basic.idl + * + * Definition of events, and common interfaces used in the BasicSP module. + * + * @author Balachandran Natarajan + */ +//============================================================================= + +#ifndef CIAO_BASIC_IDL +#define CIAO_BASIC_IDL + +#include + +// @@NOTE: Do we need a pragma prefix. Anyway its broken now in TAO.. + +module Extra +{ + exception NoReason {}; + exception NoRhyme {}; + + struct UserDataQosPolicy { + sequence value; + }; + + struct key { + long value[3]; + }; + + interface Superfluous + { + attribute string useless_attr; + long superfluous_op (in string empty_arg) + raises (NoReason); + }; + + interface Supernumerary + { + void supernumerary_op (out string dummy_arg) + raises (NoRhyme, NoReason); + }; +}; + +// #pragma prefix "" + +module Basic +{ + interface ReadData : Extra::Superfluous + { + string get_data (); + }; + + interface AnalyzeData + { + void perform_analysis (inout string data); + attribute boolean fine_tooth_comb; + }; + + eventtype TimeOut {}; + eventtype DataAvailable {}; +}; + +#endif /*CIAO_BASIC_IDL*/ diff --git a/modules/CIAO/tests/CIDL/CodeGen/Basic.mpc b/modules/CIAO/tests/CIDL/CodeGen/Basic.mpc new file mode 100644 index 00000000000..c78132ee735 --- /dev/null +++ b/modules/CIAO/tests/CIDL/CodeGen/Basic.mpc @@ -0,0 +1,80 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Basic" + +project(Basic_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=BASIC_STUB_Export \ + -Wb,stub_export_include=Basic_stub_export.h \ + -Wb,skel_export_macro=BASIC_SKEL_Export \ + -Wb,skel_export_include=Basic_skel_export.h + + IDL_Files { + Basic.idl + } +} + +project(Basic_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Basic_idl_gen + idlflags += -Wb,stub_export_macro=BASIC_STUB_Export \ + -Wb,stub_export_include=Basic_stub_export.h \ + -Wb,skel_export_macro=BASIC_SKEL_Export \ + -Wb,skel_export_include=Basic_skel_export.h + + IDL_Files { + BasicE.idl + } +} + +project(Basic_stub) : ccm_stub { + after += Basic_lem_gen + libs += + + sharedname = Basic_stub + dynamicflags = BASIC_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BasicC.cpp + BasicEC.cpp + } + + Header_Files { + BasicC.h + Basic_stub_export.h + } + + Inline_Files { + BasicC.inl + } +} + + +project(Basic_skel) : ciao_executor { + after += Basic_stub + sharedname = Basic_skel + libs += Basic_stub + + + dynamicflags = BASIC_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BasicS.cpp + } + + Header_Files { + BasicS.h + Basic_skel_export.h + } + + Inline_Files { + BasicS.inl + } +} + + diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl new file mode 100644 index 00000000000..224315de2b8 --- /dev/null +++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl @@ -0,0 +1,46 @@ +//$Id$ +#include "Basic.idl" +#include "BasicE.idl" + +module Basic +{ + component Base supports Extra::Supernumerary, Extra::Superfluous + { + provides ReadData data_read; + attribute boolean is_not_necessary; + }; + + component CodeGen : Base + { + provides ReadData data_out; + uses ReadData data_in; + publishes DataAvailable out_avail; + consumes DataAvailable in_avail; + provides AnalyzeData data_crunch; + + readonly attribute boolean is_necessary; + }; + + home BaseHome supports Extra::Supernumerary manages Base + { + void base_do_nothing (); + + factory create_no_base (in long fake_id) + raises (Extra::NoRhyme); + + finder find_no_base (); + + readonly attribute boolean is_useful; + }; + + home CodeGenHome : BaseHome manages CodeGen + { + factory create_no_derived (); + + finder find_no_derived (); + + attribute boolean is_not_useful; + + string do_nothing (); + }; +}; diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc new file mode 100644 index 00000000000..70e490dea96 --- /dev/null +++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc @@ -0,0 +1,116 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Basic CodeGen" +// +// NOTE: This MPC file has been hand edited so the executor files +// will be autogenerated part of the build process. Excercise +// caution when regenerating this file (that is, remember to +// insert the logic for autogeneration of executor files). + +project(Basic_CodeGen_idl_gen) : componentidldefaults { + after += Basic_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CODEGEN_STUB_Export \ + -Wb,stub_export_include=CodeGen_stub_export.h \ + -Wb,skel_export_macro=CODEGEN_SVNT_Export \ + -Wb,skel_export_include=CodeGen_svnt_export.h \ + -Wb,exec_export_macro=CODEGEN_EXEC_Export \ + -Wb,exec_export_include=CodeGen_exec_export.h \ + -Gex + + IDL_Files { + CodeGen.idl + } +} + +project(Basic_CodeGen_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Basic_CodeGen_idl_gen + idlflags += -Wb,export_macro=CODEGEN_EXEC_Export \ + -Wb,export_include=CodeGen_exec_export.h \ + -SS + IDL_Files { + CodeGenE.idl + } +} + +project(Basic_CodeGen_stub) : ccm_stub { + after += Basic_CodeGen_idl_gen Basic_stub + libs += Basic_stub + + sharedname = CodeGen_stub + dynamicflags = CODEGEN_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CodeGenC.cpp + } + + Header_Files { + CodeGenC.h + CodeGen_stub_export.h + } + + Inline_Files { + CodeGenC.inl + } +} + +project(Basic_CodeGen_exec) : ciao_executor { + after += Basic_CodeGen_lem_gen Basic_CodeGen_stub + sharedname = CodeGen_exec + libs += CodeGen_stub Basic_stub + + dynamicflags = CODEGEN_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CodeGenEC.cpp + CodeGen_exec.cpp + } + + Header_Files { + CodeGenEC.h + CodeGen_exec.h + CodeGen_exec_export.h + } + + Inline_Files { + CodeGenEC.inl + } +} + + +project(Basic_CodeGen_svnt) : ciao_servant { + after += Basic_skel Basic_CodeGen_exec + sharedname = CodeGen_svnt + libs += CodeGen_exec \ + CodeGen_stub \ + Basic_skel \ + Basic_stub + + dynamicflags = CODEGEN_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CodeGenS.cpp + CodeGen_svnt.cpp + } + + Header_Files { + CodeGenS.h + CodeGen_svnt.h + CodeGen_svnt_export.h + } + + Inline_Files { + CodeGenS.inl + } +} + + diff --git a/modules/CIAO/tests/CIDL/CodeGen/README b/modules/CIAO/tests/CIDL/CodeGen/README new file mode 100644 index 00000000000..da6e8f6ee90 --- /dev/null +++ b/modules/CIAO/tests/CIDL/CodeGen/README @@ -0,0 +1,40 @@ + +Code Generation Test +======================== + +While the tests in CIAO_ROOT/tests/IDL3 target IDL3 support +and IDL3-specific code generation in particular, the tests +in CIAO_ROOT/CIDL target CIDL features and code generated +from .cidl files. The test in this directory particularly +stresses the code generation of the CIDL compiler. This +code includes the executor mapping IDL, the servant code, +and the executor implementation code. The latter is not +fully generated of course, it's merely classes (one for +each component executor, home executor, and facet executor) +with the spec-defined operations filled in, but with the +IDL-defined operations and attributes left blank. + +The IDL files in this test include most if not all of the +IDL3 features that might cause a problem in code generation - +catching operations and attributes for supported interfaces, +operations and attributes for supported interface base +classes, operations and attributes for inherited home +classes, factory and finder operations for homes and those +inherited from base homes - you get the idea. More stuff +will be added as we think of it or a problem crops up.The object +of this test is for all builds to complete successfully - +there's no execution involved, since every build is a +library, there's no executable to drive it. + +Please see the README file in CIAO_ROOT for info on how +to set up builds with MPC. The builds in this test depend +directly on CIAO_Container, CIAO_Servant and CIAO_Stub, +and indirectly on everything those three depend on. There's +a list in the above mentioned README file - to build those +libraries, you'll of course need ACE (ACE_ROOT/ace), TAO +(ACE_ROOT/TAO/tao) the IDL compiler (3 builds in +ACE_ROOT/TAO/TAO_IDL) and gperf (ACE_ROOT/apps/gperf/src). + +Enjoy! + +Jeff \ No newline at end of file diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl new file mode 100644 index 00000000000..15c32fe82b3 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl @@ -0,0 +1,51 @@ +// $Id$ +/** + * @file Attributes.idl + * @author Will Otte + */ + +#include + +module Attributes +{ + component Foo + { + attribute float test; + attribute long testA, testB; + }; + + component Bar + { + readonly attribute float test1; + readonly attribute long testB, testC; + }; + + exception FooException + { + }; + + exception BarException + { + }; + + component FooRaises + { + attribute float test2 getraises (FooException); + }; + + component BarRaises + { + attribute float test3 setraises (BarException); + }; + + component FooBarRaises + { + attribute float test4 + getraises (FooException) setraises (BarException); + }; + + component ROFooRaises + { + readonly attribute float test5 raises (FooException); + }; +}; diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc new file mode 100644 index 00000000000..b5fc7bb9ee4 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Attributes" + +project(Attributes_stub): ccm_stub { + + sharedname = Attributes_stub + idlflags += -Wb,stub_export_macro=ATTRIBUTES_STUB_Export -Wb,stub_export_include=Attributes_stub_export.h -Wb,skel_export_macro=ATTRIBUTES_SVNT_Export -Wb,skel_export_include=Attributes_svnt_export.h -Gxhst -Gxhsk + dynamicflags = ATTRIBUTES_STUB_BUILD_DLL + + IDL_Files { + Attributes.idl + } + + Source_Files { + AttributesC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl new file mode 100644 index 00000000000..e07fa13a7d2 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl @@ -0,0 +1,29 @@ +// $Id$ +/** + * @file EventSink.idl + * @author Will Otte + */ + +#include + +module EventSink +{ + eventtype foo_event + { + }; + + eventtype bar_event + { + }; + + component Foo + { + consumes foo_event c_foo; + }; + + component Bar : Foo + { + consumes bar_event c_bar; + }; + +}; diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc new file mode 100644 index 00000000000..0f48b24b3b8 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc @@ -0,0 +1,18 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n EventSink" + +project(EventSink_stub): ccm_stub { + + sharedname = EventSink_stub + idlflags += -Wb,stub_export_macro=EVENTSINK_STUB_Export -Wb,stub_export_include=EventSink_stub_export.h -Wb,skel_export_macro=EVENTSINK_SVNT_Export -Wb,skel_export_include=EventSink_svnt_export.h -Gxhst -Gxhsk + dynamicflags = EVENTSINK_STUB_BUILD_DLL + + IDL_Files { + EventSink.idl + } + + Source_Files { + EventSinkC.cpp + } +} + diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl new file mode 100644 index 00000000000..f5614d964e5 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl @@ -0,0 +1,24 @@ +// $Id$ +/** + * @file EventSource.idl + * @author Will Otte + */ + +#include + +module PublishesEmits +{ + eventtype foo_event + { + }; + + component Foo + { + publishes foo_event p_foo; + }; + + component Bar + { + emits foo_event foo; + }; +}; diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc new file mode 100644 index 00000000000..8701b0ffe4e --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n EventSource" + +project(EventSource_stub): ccm_stub { + + sharedname = EventSource_stub + idlflags += -Wb,stub_export_macro=EVENTSOURCE_STUB_Export -Wb,stub_export_include=EventSource_stub_export.h -Wb,skel_export_macro=EVENTSOURCE_SVNT_Export -Wb,skel_export_include=EventSource_svnt_export.h -Gxhst -Gxhsk + dynamicflags = EVENTSOURCE_STUB_BUILD_DLL + + IDL_Files { + EventSource.idl + } + + Source_Files { + EventSourceC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl new file mode 100644 index 00000000000..eedabcf3184 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl @@ -0,0 +1,46 @@ +// $Id$ +/** + * @file Facets.idl + * @author Will Otte + * + * This IDL file tests Facets within components. + */ + +#include + +module Facets +{ + interface foo_interface + { + }; + + interface bar_interface + { + }; + + component Foo + { + provides foo_interface p_foo; + }; + + component Bar : Foo + { + provides bar_interface p_bar; + }; + + component FooFoo : Foo + { + provides foo_interface p_foofoo; + }; + + component FooBar + { + provides foo_interface foo; + provides bar_interface bar; + }; + + component ObjectProvider + { + provides Object foo_object; + }; +}; diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc new file mode 100644 index 00000000000..81689a22b1a --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Facets" + +project(Facets_stub): ccm_stub { + + sharedname = Facets_stub + idlflags += -Wb,stub_export_macro=FACETS_STUB_Export -Wb,stub_export_include=Facets_stub_export.h -Wb,skel_export_macro=FACETS_SVNT_Export -Wb,skel_export_include=Facets_svnt_export.h -Gxhst -Gxhsk + dynamicflags = FACETS_STUB_BUILD_DLL + + IDL_Files { + Facets.idl + } + + Source_Files { + FacetsC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl new file mode 100644 index 00000000000..bd0af99cd86 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl @@ -0,0 +1,68 @@ +// $Id$ +/** + * @file Receptacles.idl + * @author Will Otte + * + * Tests Receptacles within components. + */ + +#include + +module ReceptaclesSingle +{ + interface foo_interface + { + }; + + interface bar_interface + { + }; + + component Foo + { + uses foo_interface u_foo; + }; + + component Bar : Foo + { + uses bar_interface u_bar; + }; + + component FooBar + { + uses foo_interface foo; + uses bar_interface bar; + }; + + component ObjectFoo + { + uses Object foo; + }; + +}; + +module ReceptaclesMultiple +{ + interface foo_interface + { + }; + + interface bar_interface + { + }; + + component Foo + { + uses multiple foo_interface um_foo; + }; + + component Bar + { + uses multiple bar_interface um_bar; + }; + + component ObjectFoo + { + uses multiple Object foo; + }; +}; diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc new file mode 100644 index 00000000000..04b861cb5e2 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc @@ -0,0 +1,21 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Receptacles" + +project(Receptacles_stub): ccm_stub { + + sharedname = Receptacles_stub + idlflags += -Wb,stub_export_macro=RECEPTACLES_STUB_Export \ + -Wb,stub_export_include=Receptacles_stub_export.h \ + -Wb,skel_export_macro=RECEPTACLES_SVNT_Export \ + -Wb,skel_export_include=Receptacles_svnt_export.h -Gxhst -Gxhsk + + dynamicflags = RECEPTACLES_STUB_BUILD_DLL + + IDL_Files { + Receptacles.idl + } + + Source_Files { + ReceptaclesC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl new file mode 100644 index 00000000000..8b020a77e54 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl @@ -0,0 +1,96 @@ +// $Id$ +/** + * @file SimpleComponent.idl + * + * Tests simple component declarations. + */ + +#include + +module VerySimple +{ + + component Foo + { + }; + + home FooHome manages Foo + { + }; + +}; + +module SupportsInterface +{ + interface foo_interface + { + }; + + component Foo supports foo_interface + { + }; + + home FooHome manages Foo + { + }; + +}; + + +module SupportsMultiple +{ + interface foo_interface + { + }; + + interface bar_interface + { + }; + + component FooBar supports foo_interface, bar_interface + { + }; + + home FooBarHome manages FooBar + { + }; +}; + +module Inheritance +{ + interface foo_interface + { + }; + + interface Bar_interface + { + }; + + component Foo supports foo_interface + { + }; + + component Bar : Foo + { + }; + + home FooHome manages Foo + { + }; + + home BarHome manages Bar + { + }; + + +}; + +module Bug_2790_Regression +{ + // It is legal for a derived component to support an interface + interface Wibble {}; + interface Wobble {}; + component Bobble {}; + component Bibble : Bobble supports Wibble, Wobble {}; +}; + diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc new file mode 100644 index 00000000000..47a76f8ccc4 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc @@ -0,0 +1,21 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl SimpleComponent" + +project(SimpleComponent_stub_idl3): ccm_stub { + + sharedname = SimpleComponent_stub + idlflags += -Wb,stub_export_macro=SIMPLECOMPONENT_STUB_Export \ + -Wb,stub_export_include=SimpleComponent_stub_export.h \ + -Wb,skel_export_macro=SIMPLECOMPONENT_SVNT_Export \ + -Wb,skel_export_include=SimpleComponent_svnt_export.h -Gxhst -Gxhsk + + dynamicflags = SIMPLECOMPONENT_STUB_BUILD_DLL + + IDL_Files { + SimpleComponent.idl + } + + Source_Files { + SimpleComponentC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl new file mode 100644 index 00000000000..15eb50971b3 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl @@ -0,0 +1,38 @@ +// $Id$ +/** + * @file Abstract.idl + * @author Will Otte + * + * Tests the compilation of abstract events. + */ + +#include + +module AbstractEvents +{ + abstract eventtype foo_event + { + }; + + abstract eventtype InhFoo_event : foo_event + { + }; + + abstract eventtype bar_event + { + }; + + abstract eventtype foobar_event : foo_event, bar_event + { + }; + + // test event multiple inheretance + + eventtype concrete_foo + { + }; + + eventtype concrete_foobar : concrete_foo, foo_event + { + }; +}; diff --git a/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc new file mode 100644 index 00000000000..a89d0d2d968 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Abstract" + +project(Abstract_stub): ccm_stub { + + sharedname = Abstract_stub + idlflags += -Wb,stub_export_macro=ABSTRACT_STUB_Export -Wb,stub_export_include=Abstract_stub_export.h -Wb,skel_export_macro=ABSTRACT_SVNT_Export -Wb,skel_export_include=Abstract_svnt_export.h -Gxhst -Gxhsk + dynamicflags = ABSTRACT_STUB_BUILD_DLL + + IDL_Files { + Abstract.idl + } + + Source_Files { + AbstractC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Events/Any/Any.mpc b/modules/CIAO/tests/IDL3/Events/Any/Any.mpc new file mode 100644 index 00000000000..1d95ba0b319 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Any/Any.mpc @@ -0,0 +1,26 @@ +// $Id$ + +project(EventAny_local): ccm_stub { + exename = EventAny + idlflags += -SS + + IDL_Files { + EventAny.idl + } + + Source_Files { + EventAnyC.cpp + main.cpp + } + + Header_Files { + EventAnyC.h + } + + Inline_Files { + EventAnyC.inl + } + + Template_Files { + } +} diff --git a/modules/CIAO/tests/IDL3/Events/Any/EventAny.idl b/modules/CIAO/tests/IDL3/Events/Any/EventAny.idl new file mode 100644 index 00000000000..d53ddf55c08 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Any/EventAny.idl @@ -0,0 +1,16 @@ +// $Id$ +/** + * @file EventAny.idl + * @author Jeff Parsons + * + * Tests Any insertion/extraction of event types, + * and (de)marshaling of such Anys. + */ + +#include + +eventtype StringMsg +{ + public string str_msg; +}; + diff --git a/modules/CIAO/tests/IDL3/Events/Any/README b/modules/CIAO/tests/IDL3/Events/Any/README new file mode 100644 index 00000000000..7bf91be5776 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Any/README @@ -0,0 +1,35 @@ + +Event Any Test +======================= + +This test defines, instantiates, and initializes an IDL +eventtype with a public string member, inserts it into +an Any, marshals the Any, demarshals the Any, extracts +the eventtype, and compares the resulting member string +with the original. The purpose of the test is to ensure +that (1) the demarshaling of the Any and (2) the +extraction of the eventtype, are successful, since both +these actions are done interpretively by traversing the +eventtype's type code. The motivation for the test was +the failure of these actions due to missing cases in +the interpretive demarshaling code corresponding to +the kind of the eventtype's type code (CORBA::tk_event). + +There are several places the test can fail: + +- marshaling of the Any +- demarshaling of the Any +- extraction from the Any +- string compare of the sent and received eventtype members + +Note that the test code registers a valuetype factory +with the orb, a necessary step in extracting the +eventtype from the Any. In a real-world use case (such +as an event channel) such a factory would have to +be registered with the orb anywhere the eventtype is +to be demarshaled from a CDR stream or extracted from +an Any that was itself demarshaled. + +Jeff Parsons + + diff --git a/modules/CIAO/tests/IDL3/Events/Any/main.cpp b/modules/CIAO/tests/IDL3/Events/Any/main.cpp new file mode 100644 index 00000000000..4ce90923aa1 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Any/main.cpp @@ -0,0 +1,85 @@ +// $Id$ + +#include "EventAnyC.h" +#include "tao/AnyTypeCode/Any.h" +#include "ace/Get_Opt.h" + +void +insert_into_any (CORBA::Any& any, Components::EventBase* vb) +{ + any <<= vb; +} + +void +debug_msg (const char *msg) +{ + ACE_ERROR ((LM_ERROR, "Error: %s\n", msg)); +} + +int +ACE_TMAIN(int argc, ACE_TCHAR *argv[]) +{ + try + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + StringMsg_init *StringMsg_factory = new StringMsg_init; + + orb->register_value_factory (StringMsg_factory->tao_repository_id (), + StringMsg_factory); + StringMsg_factory->_remove_ref (); // release ownership + + const char *test_str = "a message"; + + StringMsg_var ev = new OBV_StringMsg; + ev->str_msg (test_str); + + CORBA::Any in_any; + insert_into_any (in_any, ev.in ()); + + TAO_OutputCDR out; + CORBA::Boolean good = out << in_any; + + if (!good) + { + debug_msg ("Any marshaling failed"); + return -1; + } + + TAO_InputCDR in (out); + CORBA::Any out_any; + good = in >> out_any; + + if (!good) + { + debug_msg ("Any demarshaling failed"); + return -1; + } + + StringMsg *ev_out = 0; + good = out_any >>= ev_out; + + if (!good) + { + debug_msg ("Any extraction failed"); + return -1; + } + + const char *result_str = ev_out->str_msg (); + + if (result_str == 0 || ACE_OS::strcmp (result_str, test_str) != 0) + { + debug_msg ("Extracted member string null or incorrect"); + return -1; + } + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("caught exception:"); + return 1; + } + + return 0; +} + diff --git a/modules/CIAO/tests/IDL3/Events/Any/run_test.pl b/modules/CIAO/tests/IDL3/Events/Any/run_test.pl new file mode 100755 index 00000000000..96a8eaed8fe --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Any/run_test.pl @@ -0,0 +1,33 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +# The first three lines above let this script run without specifying the +# full path to perl, as long as it is in the user's PATH. +# Taken from perlrun man page. + +# Do not use environment variables here since not all platforms use ACE_ROOT +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; +use English; + +$status = 0; +$exflags = ""; + +# Run the test + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$EX = $tg->CreateProcess ("EventAny"); +$EX->Arguments ($exflags); +$test = $EX->SpawnWaitKill ($tg->ProcessStopWaitInterval ()); + +if ($test != 0) { + print STDERR "ERROR: test error status $test\n"; + $status = 1; +} + +exit $status; diff --git a/modules/CIAO/tests/IDL3/Events/Regular/Regular.idl b/modules/CIAO/tests/IDL3/Events/Regular/Regular.idl new file mode 100644 index 00000000000..f9169026e88 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Regular/Regular.idl @@ -0,0 +1,44 @@ +// $Id$ +/** + * @file Regular.idl + * @author Will Otte + * + * Tests the compilation of regular event types. + */ + +#include + +module RegularEvents +{ + eventtype foo + { + }; + + eventtype bar + { + }; + + eventtype InhFoo : foo + { + }; + + /* @@ + * TAO_IDL cannot handle custom yet. + custom eventtype custom_foo + { + }; + + custom eventtype custom_InhFoo : foo + { + }; + */ + + eventtype Baz + { + long test_op (); + void test_op_a (in long foo, out float bar); + InhFoo test_op_b (); + }; + + +}; diff --git a/modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc b/modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc new file mode 100644 index 00000000000..cf90fc267d4 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc @@ -0,0 +1,20 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Regular" + +project(Regular_stub): ccm_stub { + + sharedname = Regular_stub + idlflags += -Wb,stub_export_macro=REGULAR_STUB_Export \ + -Wb,stub_export_include=Regular_stub_export.h \ + -Wb,skel_export_macro=REGULAR_SVNT_Export \ + -Wb,skel_export_include=Regular_svnt_export.h -Gxhst -Gxhsk + dynamicflags = REGULAR_STUB_BUILD_DLL + + IDL_Files { + Regular.idl + } + + Source_Files { + RegularC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl new file mode 100644 index 00000000000..7dd338d871e --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl @@ -0,0 +1,54 @@ +// $Id$ +/** + * @file HomeAttributes.idl + * @author Will Otte + * + * Tests attributes in homes + */ + +#include + +module HomeAttributes +{ + interface foo_interface + { + }; + + component Foo supports foo_interface + { + }; + + home FooHome manages Foo + { + attribute float test; + attribute long testA, testB; + }; + + exception FooException + { + }; + + exception BarException + { + }; + + home ROFooHome manages Foo + { + readonly attribute float test1; + readonly attribute long testB, testC; + }; + + home FooRaisesHome manages Foo + { + attribute float test2 getraises (FooException); + attribute float test3 setraises (BarException); + attribute float test4 + getraises (FooException) setraises (BarException); + }; + + home ROFooRaisesHome manages Foo + { + readonly attribute float test5 raises (FooException); + }; + +}; diff --git a/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc new file mode 100644 index 00000000000..7824a77399f --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n HomeAttributes" + +project(HomeAttributes_stub): ccm_stub { + + sharedname = HomeAttributes_stub + idlflags += -Wb,stub_export_macro=HOMEATTRIBUTES_STUB_Export -Wb,stub_export_include=HomeAttributes_stub_export.h -Wb,skel_export_macro=HOMEATTRIBUTES_SVNT_Export -Wb,skel_export_include=HomeAttributes_svnt_export.h -Gxhst -Gxhsk + dynamicflags = HOMEATTRIBUTES_STUB_BUILD_DLL + + IDL_Files { + HomeAttributes.idl + } + + Source_Files { + HomeAttributesC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl new file mode 100644 index 00000000000..3d9f4c5162e --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl @@ -0,0 +1,31 @@ +// $Id$ +/** + * @file Basic.idl + * @author Will Otte + * + * Tests the compileability of basic Home types. + */ + +#include + +module BasicHomes +{ + + interface foo_interface {}; + + component Foo supports foo_interface {}; + + home FooHome manages Foo + { + }; + + + interface bar_interface {}; + + component Bar supports bar_interface {}; + + home BarHome supports foo_interface manages Bar + { + }; + +}; diff --git a/modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc new file mode 100644 index 00000000000..84d3b05f353 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Basic" + +project(IDL3_Basic_stub): ccm_stub { + + sharedname = Homes_Basic_stub + idlflags += -Wb,stub_export_macro=BASIC_STUB_Export -Wb,stub_export_include=Basic_stub_export.h -Wb,skel_export_macro=BASIC_SVNT_Export -Wb,skel_export_include=Basic_svnt_export.h -Gxhst -Gxhsk + dynamicflags = BASIC_STUB_BUILD_DLL + + IDL_Files { + Basic.idl + } + + Source_Files { + BasicC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl new file mode 100644 index 00000000000..c9520b11c0a --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl @@ -0,0 +1,35 @@ +// $Id$ +/** + * @file Factory.idl + * @author Will Otte + * + * Tests the compilation of Homes with Factorys. + */ + +#include + +module FactoryHomes +{ + exception foo_exception + { + }; + + interface foo_interface + { + }; + + component Foo supports foo_interface + { + }; + + home FooHome manages Foo + { + factory FooFactory (in string foo, in short bar) raises (foo_exception); + }; + + eventtype food + { + }; + + +}; diff --git a/modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc new file mode 100644 index 00000000000..e59044578b4 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Factory" + +project(Factory_stub): ccm_stub { + + sharedname = Factory_stub + idlflags += -Wb,stub_export_macro=FACTORY_STUB_Export -Wb,stub_export_include=Factory_stub_export.h -Wb,skel_export_macro=FACTORY_SVNT_Export -Wb,skel_export_include=Factory_svnt_export.h -Gxhst -Gxhsk + dynamicflags = FACTORY_STUB_BUILD_DLL + + IDL_Files { + Factory.idl + } + + Source_Files { + FactoryC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl new file mode 100644 index 00000000000..5057b162fc3 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl @@ -0,0 +1,30 @@ +// $Id$ +/** + * @file Finder.idl + * @author Will Otte + * + * Tests the compilation of Homes with Factorys. + */ + +#include + +module FactoryHomes +{ + exception foo_exception + { + }; + + interface foo_interface + { + }; + + component Foo supports foo_interface + { + }; + + home FooHome manages Foo + { + factory FooFinder (in string foo, in short bar) raises (foo_exception); + }; + +}; diff --git a/modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc new file mode 100644 index 00000000000..f4b34569e6c --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Finder" + +project(Finder_stub): ccm_stub { + + sharedname = Finder_stub + idlflags += -Wb,stub_export_macro=FINDER_STUB_Export -Wb,stub_export_include=Finder_stub_export.h -Wb,skel_export_macro=FINDER_SVNT_Export -Wb,skel_export_include=Finder_svnt_export.h -Gxhst -Gxhsk + dynamicflags = FINDER_STUB_BUILD_DLL + + IDL_Files { + Finder.idl + } + + Source_Files { + FinderC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl new file mode 100644 index 00000000000..e1bce50fc2f --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl @@ -0,0 +1,33 @@ +// $Id$ +/** + * @file Inheritance.idl + * @author Will Otte + * + * Tests the compilation of Home inheritance. + */ + +#include + +module HomeInheritance +{ + interface foo_interface + { + }; + + component Foo supports foo_interface + { + }; + + home FooHome manages Foo + { + }; + + component Bar + { + }; + + home BarHome : FooHome manages Bar + { + }; + +}; diff --git a/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc new file mode 100644 index 00000000000..a75a3ec597d --- /dev/null +++ b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Inheritance" + +project(Inheritance_stub): ccm_stub { + + sharedname = Inheritance_stub + idlflags += -Wb,stub_export_macro=INHERITANCE_STUB_Export -Wb,stub_export_include=Inheritance_stub_export.h -Wb,skel_export_macro=INHERITANCE_SVNT_Export -Wb,skel_export_include=Inheritance_svnt_export.h -Gxhst -Gxhsk + dynamicflags = INHERITANCE_STUB_BUILD_DLL + + IDL_Files { + Inheritance.idl + } + + Source_Files { + InheritanceC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/README b/modules/CIAO/tests/IDL3/ImpliedIDL/All/README new file mode 100644 index 00000000000..2f4e09eaf3c --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/README @@ -0,0 +1,88 @@ + Converting IDL3 to IDL2 + ======================= + +Introduction +============ + +This directory contains a test for the executable +tao_idl3_to_idl2, which inputs a single IDL file and +outputs a single IDL file which has the IDL3 declarations +from the input file converted to the corresponding 'implied +IDL' declarations specificed by the mapping in the CCM +document. + +This utility can be used in conjunction with some IDL compiler +that does not support IDL3 keywords and syntax. The output of +the utility can be processed by such a compiler, yielding code +in the target programming language equivalent to that which +would have been generated in one step by a CCM-aware IDL compiler. + +The tao_idl3_to_idl2 executable itself is built in +CIAO_ROOT/tools/IDL3_to_IDL2. It uses the TAO IDL compiler +front end parsing engine and the TAO IDL compiler driver +files, so it depends on ACE. The IDL generation is +accomplished by a custom backend library. + +Other Features Tested +===================== + +The IDL file keyword_clash.idl contains many identifiers that +are either escaped (to avoid a clash with IDL keywords) or +are C++ keywords. Coverting this file, then generatin and +compiling C++ from it, tests the ability of the conversion +tool to preserve these identifiers correctly when mapping +from IDL to IDL. + +The IDL file raw_include.idl is intentionaly left out of +conversion processing. It contains no IDL with 'implied IDL' +mapping. Since it is included in pass_through.idl, it +must be included in pass_through_IDL2.idl, but without itself +having the '_IDL2' suffix added. This type of 'raw' inclusion +is necessary in some cases, and the MPC file adds a command +line option to the processing of pass_through.idl to make +sure the raw_include.idl is processed in this way. + +Running The Test +================ + +This test is only to determine that the generated IDL files +are valid. So once the converted IDL file (having the +extension _IDL2.idl) is generated by tao_idl3_to_idl2, the +TAO IDL compiler is executed on the generated IDL file and +the resulting C++ files compiled. If the compilation is +successful for all such files, the test is a success. + +Notable Build Features +====================== + +Two features of the MPC file for this test are of interest: + +1. +Two of the three IDL files in the test, pass_through.idl and +include.idl, contain no IDL3 constructs, but merely test the +executable's regeneration of IDL2 constructs. Since one IDL +file is included in the other, there is a dependency that +requires both IDL files to be processed before running the +IDL compiler on pass_through_IDL2.idl. The line + + pass_through_IDL2.idl << include_IDL2.idl + +indicates this dependency to the MPC tool, ensuring the correct +order of execution. + +2. +The -Sm option passed to the IDL compiler must be used when +processing an IDL file resulting from the execution of +tao_idl3_to_idl2. This option disables the action of the +tao_idl backend 'preprocessor' (which is 'on' by default) +that adds implied IDL nodes to the Abstract Syntax Tree +for subsequent C++ code generation. In the case of an eventtype, +the CCM spec requires additional code generation for a corresponding +implied 'event consumer' IDL interface, as well as for the +eventtype itself. The tao_idl3_to_idl2 executable adds this +interface explicitly to the generated IDL file, along with the +original eventtype. Without the -Sm option, the event consumer +interface would appear redundantly in both explicit and implied +IDL, resulting in a name clash. Since the IDL compiler cannot +know the origin of the IDL file it is processing, the -Sm +option encapsulates that knowledge. \ No newline at end of file diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc new file mode 100644 index 00000000000..19a43493818 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc @@ -0,0 +1,37 @@ +// -*- MPC -*- +// $Id$ + +project(ConvertIDL3) : taoidl3toidl2defaults, ciao_executor { + avoids += mfc + idlflags += -Sm + + IDL3TOIDL2_Files { + convert.idl + include.idl + keyword_clash.idl + pass_through.idl + } + + IDL_Files { + convert_IDL2.idl + include.idl + include_IDL2.idl + keyword_clash_IDL2.idl + pass_through_IDL2.idl << keyword_clash_IDL2C.h + raw_include.idl + } + + Source_Files { + convert_IDL2C.cpp + convert_IDL2S.cpp + include_IDL2C.cpp + include_IDL2S.cpp + keyword_clash_IDL2C.cpp + keyword_clash_IDL2S.cpp + pass_through_IDL2C.cpp << includeC.h raw_includeC.h keyword_clash_IDL2C.h + pass_through_IDL2S.cpp + raw_includeC.cpp + raw_includeS.cpp + } +} + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl new file mode 100644 index 00000000000..68600a619b3 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl @@ -0,0 +1,53 @@ +// $Id$ +/** + * @file convert.idl + * @author Jeff Parsons + * + * Tests all conversions of IDL3 constructs to IDL2. + */ + +#include + +eventtype eattype; +interface sface {}; +interface pface {}; +interface uface {}; +interface umface {}; + +valuetype pkey : Components::PrimaryKeyBase +{ + public string info; +}; + +valuetype pubtype_base {}; +eventtype pubtype : pubtype_base {}; +eventtype emitype : pubtype {}; +eventtype eattype {}; + +component CompBase supports sface +{ +}; + +component CompDerived : CompBase +{ + provides pface pface_provider; + uses uface uface_user; + uses multiple umface umface_umuser; + publishes pubtype pubtype_publisher; + emits emitype emitype_emitter; + consumes eattype eattype_consumer; +}; + +home CompBaseHome supports sface manages CompBase +{ +}; + +home CompDerivedHome : CompBaseHome manages CompDerived primarykey pkey +{ + exception ch_except {}; + void ch_op () raises (ch_except); + factory def_init (); + finder kitchen_sink (in string uid, in pkey key, in boolean all) + raises (ch_except); +}; + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl new file mode 100644 index 00000000000..848d4128b6e --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl @@ -0,0 +1,35 @@ +// $Id$ +/** + * @file include.idl + * @author Jeff Parsons + * + * Tests tool's regeneration of IDL2 constructs, which + * should be basically unchanged. + */ + +#ifndef INCLUDE_IDL +#define INCLUDE_IDL + +module pre_mod +{ + typedef long longarray[3][14][7]; + + exception wrong + { + sequence > longseqseq; + string reasons[4][2]; + wstring<3> why; + }; + + enum which + { + ZERO, + ONE, + TWO + }; +}; + +const pre_mod::which which_one = pre_mod::ONE; + +#endif /* INCLUDE_IDL */ + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/keyword_clash.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/keyword_clash.idl new file mode 100644 index 00000000000..987077bc185 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/keyword_clash.idl @@ -0,0 +1,89 @@ +// $Id$ +/** + * @file keyword_clash.idl + * @author Jeff Parsons + * + * Tests handling of C++ keywords and escaped identifiers (IDL + * keywords) in mapping IDL3 to IDL2, and mapping the resulting + * IDL2 to C++. + */ + +#ifndef CONVERTIDL3_KEYWORD_CLASH_IDL +#define CONVERTIDL3_KEYWORD_CLASH_IDL + +#include "Components.idl" + +module _interface +{ + interface _attribute + { + exception _inout {}; + }; +}; + +module static +{ + module _readonly + { + module protected + { + interface virtual + { + }; + + eventtype _eventtype + { + private virtual _public; + }; + }; + }; +}; + +eventtype _eventtype +{ + factory friend (in string _wstring); +}; + +interface _oneway {}; + +module _component +{ + component _out supports static::_readonly::protected::virtual + { + provides _interface::_attribute _local; + provides _oneway else; + provides static::_readonly::protected::virtual while; + + attribute long _abstract; + + uses multiple _interface::_attribute if; + uses multiple _oneway mutable; + uses multiple static::_readonly::protected::virtual register; + + uses _interface::_attribute _union; + uses _oneway _struct; + uses static::_readonly::protected::virtual volatile; + + publishes _eventtype _object; + publishes static::_readonly::protected::_eventtype do; + + consumes _eventtype _const; + consumes static::_readonly::protected::_eventtype const_cast; + + emits _eventtype class; + emits static::_readonly::protected::_eventtype delete; + }; + + home new manages _out + { + static::_readonly::protected::virtual + catch ( + inout static::_readonly::protected::_eventtype try) + raises (_interface::_attribute::_inout); + + finder continue (in _interface::_attribute _inout); + }; +}; + +#endif /* CONVERTIDL3_KEYWORD_CLASH_IDL */ + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl new file mode 100644 index 00000000000..97d05edffe8 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl @@ -0,0 +1,94 @@ +// $Id$ +/** + * @file pass_through.idl + * @author Jeff Parsons + * + * Tests tool's regeneration of IDL2 constructs, which + * should be basically unchanged. + */ + +#ifndef PASS_THROUGH_IDL +#define PASS_THROUGH_IDL + +#pragma prefix "glooby" + +#include "include.idl" +#include "raw_include.idl" + +module pre_mod +{ + module inner + { + typedef long fork; + }; + + union uke switch (which) + { + case ONE: + case ZERO: string str_mem; + default: short s_mem; + }; +}; + +module mod +{ + typeid mod "rama:lama/ding:dong"; + + interface base + { + readonly attribute unsigned long long ull_attr + raises (pre_mod::wrong); + }; + + interface foo + { + typeprefix foo "preefy"; + + exception wrongety_wrong + { + base unrelated; + string explanation; + }; + + attribute base base_attr + getraises (wrongety_wrong) + setraises (pre_mod::wrong, wrongety_wrong); + }; + + interface bleep; + + abstract interface bar + { + base bar_op (in base inarg); + }; + + interface bleep : base, foo + { + oneway void oneway_op (in string strarg, in any anyarg); + bleep get_me (); + pre_mod::uke get_uke (out boolean success) + raises (pre_mod::wrong, foo::wrongety_wrong); + void throw_something () + raises (pre_mod::wrong); + }; + + abstract valuetype vt_abase + { + }; + + valuetype vt_cbase + { + private bleep priv_bleep; + public string pub_str; + factory vt_init (in bleep bleeparg, in string stringarg) + raises (pre_mod::wrong); + }; + + valuetype vt : vt_cbase, vt_abase supports foo, bar + { + factory vt_default (); + }; +}; + +#endif /* PASS_THROUGH_IDL */ + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/raw_include.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/raw_include.idl new file mode 100644 index 00000000000..b3aed65f2df --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/raw_include.idl @@ -0,0 +1,27 @@ +// $Id$ +/** + * @file raw_include.idl + * @author Jeff Parsons + * + * Tests tool's 'excluded file' feature, which allows the user + * to specifcy the generation of an #include for this file, in + * an IDL2 file corresponding to the IDL3 file this one is + * included in unchanged, without the '_IDL2' suffix. + */ + +#ifndef RAW_INCLUDE_IDL +#define RAW_INCLUDE_IDL + +module carnsarn +{ + typedef boolean t_or_f; + + struct one + { + short shortshort; + string along; + wstring<3> trinity; + }; +}; + +#endif /* RAW_INCLUDE_IDL */ diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl new file mode 100644 index 00000000000..a5d5897f8cc --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl @@ -0,0 +1,25 @@ +// $Id$ +/** + * @file ICBasic.idl + * @author Will Otte + * + * Tests implied idl functionality of basic components. + */ + +#include + +module Basic +{ + component Foo + { + }; + + interface Bar + { + Foo test_op_1 (); + void test_op_2 (in Foo f); + void test_op_3 (out Foo f); + }; + + +}; diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc new file mode 100644 index 00000000000..d099c2853bf --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n ICBasic" + +project(ICBasic_stub): ccm_stub { + + sharedname = ICBasic_stub + idlflags += -Wb,stub_export_macro=ICBASIC_STUB_Export -Wb,stub_export_include=ICBasic_stub_export.h -Wb,skel_export_macro=ICBASIC_SVNT_Export -Wb,skel_export_include=ICBasic_svnt_export.h -Gxhst -Gxhsk + dynamicflags = ICBASIC_STUB_BUILD_DLL + + IDL_Files { + ICBasic.idl + } + + Source_Files { + ICBasicC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl new file mode 100644 index 00000000000..7bf8f83c98c --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl @@ -0,0 +1,27 @@ +// $Id$ +/** + * @file ICEventSink.idl + * @author Will Otte + * + * Tests implied idl features of event sinks + */ + +#include + +module ImpliedEventSink +{ + eventtype foo_event + { + }; + + component Foo + { + consumes foo_event c_foo; + }; + /* + interface test + { + ImpliedEventSink::FooEventConsumers::foo_eventConsumer test_a (); + }; + */ +}; diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc new file mode 100644 index 00000000000..38f6e70a2dc --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n ICEventSink" + +project(ICEventSink_stub): ccm_stub { + + sharedname = ICEventSink_stub + idlflags += -Wb,stub_export_macro=ICEVENTSINK_STUB_Export -Wb,stub_export_include=ICEventSink_stub_export.h -Wb,skel_export_macro=ICEVENTSINK_SVNT_Export -Wb,skel_export_include=ICEventSink_svnt_export.h -Gxhst -Gxhsk + dynamicflags = ICEVENTSINK_STUB_BUILD_DLL + + IDL_Files { + ICEventSink.idl + } + + Source_Files { + ICEventSinkC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl new file mode 100644 index 00000000000..578efbed7e4 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl @@ -0,0 +1,38 @@ +// $Id$ +/** + * @file ICEventSource.idl + * @author Will Otte + * + * Tests implied IDL of event sources. + */ + +#include + +module ImpliedSources +{ + eventtype foo_event + { + }; + + eventtype bar_event + { + }; + + component Foo + { + publishes foo_event p_foo; + }; + + component Bar + { + emits bar_event e_bar; + }; + /* + interface test + { + ImpliedSources::FooEventConsumers::foo_eventConsumer test_op (); + ImpliedSources::BarEventConsumers::bar_eventConsumer test_op_1 (); + }; + */ +}; + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc new file mode 100644 index 00000000000..694ee7ea3da --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n ICEventSource" + +project(ICEventSource_stub): ccm_stub { + + sharedname = ICEventSource_stub + idlflags += -Wb,stub_export_macro=ICEVENTSOURCE_STUB_Export -Wb,stub_export_include=ICEventSource_stub_export.h -Wb,skel_export_macro=ICEVENTSOURCE_SVNT_Export -Wb,skel_export_include=ICEventSource_svnt_export.h -Gxhst -Gxhsk + dynamicflags = ICEVENTSOURCE_STUB_BUILD_DLL + + IDL_Files { + ICEventSource.idl + } + + Source_Files { + ICEventSourceC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl new file mode 100644 index 00000000000..7af66e50e8c --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl @@ -0,0 +1,28 @@ +// $Id$ +/** + * @file ICReceptacles.idl + * @author Will Otte + * + * Tests equivalent idl for receptacles. + */ +#include + +module EquivReceptacles +{ + interface foo_interface + { + }; + + component Foo + { + uses multiple foo_interface foo_recep; + }; + + /** + interface bar + { + Foo::foo_recepConnections get_seq (); + Foo::foo_recepConnection get_struct (); + }; + */ +}; diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc new file mode 100644 index 00000000000..4401a63c4a4 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc @@ -0,0 +1,18 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n ICReceptacles" + +project(ICReceptacles_stub): ccm_stub { + + sharedname = ICReceptacles_stub + idlflags += -Wb,stub_export_macro=ICRECEPTACLES_STUB_Export -Wb,stub_export_include=ICReceptacles_stub_export.h -Wb,skel_export_macro=ICRECEPTACLES_SVNT_Export -Wb,skel_export_include=ICReceptacles_svnt_export.h -Gxhst -Gxhsk + dynamicflags = ICRECEPTACLES_STUB_BUILD_DLL + + IDL_Files { + ICReceptacles.idl + } + + Source_Files { + ICReceptaclesC.cpp + } +} + diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl new file mode 100644 index 00000000000..62092c9e958 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl @@ -0,0 +1,22 @@ +// $Id$ +/** + * @file Events.idl + * @author Will Otte + * + * Tests implied IDL for event types. + */ + +#include + +module ImpliedEvent +{ + eventtype foo + { + }; + /* + interface test_foo + { + fooConsumer test_op (); + }; + */ +}; diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc new file mode 100644 index 00000000000..13258d18145 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc @@ -0,0 +1,17 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Events" + +project(Events_stub): ccm_stub { + + sharedname = Events_stub + idlflags += -Wb,stub_export_macro=EVENTS_STUB_Export -Wb,stub_export_include=Events_stub_export.h -Wb,skel_export_macro=EVENTS_SVNT_Export -Wb,skel_export_include=Events_svnt_export.h -Gxhst -Gxhsk + dynamicflags = EVENTS_STUB_BUILD_DLL + + IDL_Files { + Events.idl + } + + Source_Files { + EventsC.cpp + } +} diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl new file mode 100644 index 00000000000..3440458b4b2 --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl @@ -0,0 +1,28 @@ +// $Id$ +/** + * @file Homes.idl + * @author Will Otte + * + * Tests equivalent IDL semantics for Homes + */ + +#include + +module ImplicitHomes +{ + component Foo + { + }; + + home FooHome manages Foo + { + }; + /* + interface test + { + FooHomeExplicit test_op (); + FooHomeImplicit test_op_1 (); + FooHome test_op_2 (); + }; + */ +}; diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc new file mode 100644 index 00000000000..81a60296b7d --- /dev/null +++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc @@ -0,0 +1,18 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Homes" + +project(Homes_stub): ccm_stub { + + sharedname = Homes_stub + idlflags += -Wb,stub_export_macro=HOMES_STUB_Export -Wb,stub_export_include=Homes_stub_export.h -Wb,skel_export_macro=HOMES_SVNT_Export -Wb,skel_export_include=Homes_svnt_export.h -Gxhst -Gxhsk + dynamicflags = HOMES_STUB_BUILD_DLL + + IDL_Files { + Homes.idl + } + + Source_Files { + HomesC.cpp + } +} + diff --git a/modules/CIAO/tests/IDL3/Lookup/README b/modules/CIAO/tests/IDL3/Lookup/README new file mode 100644 index 00000000000..a92531070a6 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Lookup/README @@ -0,0 +1,21 @@ + +Lookup Test +======================= + +This test is for IDL compiler handling of references using local +names to declarations in base interfaces, components, valuetypes +and homes, and in supported interfaces. This type of reference +is legal IDL. + +The primary point of the test is that the IDL compiler outputs +no errors in processing the IDL file, and the secondary point +is that the generated code compiles successfully. Therefore, +we have no need for export files, export macros, or *_BUILD_DLL +flags. + +Thanks to Boris Kolpackov for the +original example IDL file, which has been slightly modified +for use in this test. + + +Jeff Parsons \ No newline at end of file diff --git a/modules/CIAO/tests/IDL3/Lookup/lookup_test.idl b/modules/CIAO/tests/IDL3/Lookup/lookup_test.idl new file mode 100644 index 00000000000..74d9b85de22 --- /dev/null +++ b/modules/CIAO/tests/IDL3/Lookup/lookup_test.idl @@ -0,0 +1,76 @@ +// $Id$ +/** + * @file lookup_test.idl + * @authors Boris Kolpackov + * Jeff Parsons + * + * Tests IDL compiler lookup when local names are used + * to reference declarations in supported interfaces, + * base valuetypes, base components, and base homes. + */ + + +#ifndef IDL3_LOOKUP_TEST_IDL +#define IDL3_LOOKUP_TEST_IDL + +#include + +module M +{ + interface IB + { + exception Ex {}; + typedef long Foo; + }; + + interface I : IB + { + void f (in Foo bar) raises (Ex); + }; + + valuetype VB + { + typedef long Bar; + }; + + valuetype V : VB supports IB + { + void f (in Bar foo) raises (Ex); + }; + + valuetype EB + { + typedef long Bar; + }; + + valuetype E : EB supports IB + { + void f (in Bar foo) raises (Ex); + }; + + interface T + { + typedef long Bar; + }; + + component CB supports T + { + }; + + component C : CB + { + attribute Bar baz; + }; + + home HB supports IB manages CB + { + typedef long Bar; + }; + + home H : HB manages C + { + void f (in Bar b) raises (Ex); + }; +}; + +#endif /* IDL3_LOOKUP_TEST_IDL */ diff --git a/modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc b/modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc new file mode 100644 index 00000000000..d257f0ccd9b --- /dev/null +++ b/modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc @@ -0,0 +1,18 @@ +// $Id$ + +project(LookupTest_stub): ccm_stub { + + sharedname = LookupTest_stub + + IDL_Files { + lookup_test.idl + } + + Source_Files { + lookup_testC.cpp + } + + Header_Files { + lookup_testC.h + } +} diff --git a/modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl new file mode 100755 index 00000000000..f933f6a6b50 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/run_test.pl @@ -0,0 +1,54 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +my $idl = "test.idl"; +my $dtd = "../XMI.dtd"; +my $xmi = "generated.xmi"; +my $target_idl = $target->LocalFile ($idl); +my $target_dtd = $target->LocalFile ($dtd); +my $target_xmi = $target->LocalFile ($xmi); +$target->DeleteFile($xmi); + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi", + "-f -xd $target_dtd -of $target_xmi $target_idl"); + +$target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval()); + +if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + exit 1; +} + +if ($target->GetFile ($xmi) == -1) { + print STDERR "ERROR: cannot retrieve file <$xmi>\n"; + exit 1; +} + +# search for right tag in generated xmi +open (DAT, $xmi) || die ("ERROR: Could not open file <$xmi>!"); +@data=; +close (DAT); + +$num = grep (/DeleteFile($xmi); + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/test.idl b/modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/test.idl new file mode 100644 index 00000000000..58c9017b595 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/Bug_3607_Regression/test.idl @@ -0,0 +1,11 @@ +// $Id$ + +#ifndef FOO_IDL +#define FOO_IDL + +struct Foo +{ + long bar[5]; +}; + +#endif diff --git a/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/IDL2XMI_Test.mpc b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/IDL2XMI_Test.mpc new file mode 100644 index 00000000000..4db76128d4c --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/IDL2XMI_Test.mpc @@ -0,0 +1,14 @@ +// -*- MPC -*- +// $Id$ + +project(*IDL2XMI_Test) : taoexe, ciao_xml_utils, xerces { + exename = xmlvalidator + + Source_Files { + XML_Helper.cpp + xmlvalidator.cpp + } + + IDL_Files { + } +} diff --git a/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp new file mode 100644 index 00000000000..8f3454e7d2c --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.cpp @@ -0,0 +1,103 @@ +// $Id$ + +#include "XML_Helper.h" +#include "ace/Log_Msg.h" + +#include "xercesc/dom/DOM.hpp" +#include "xercesc/parsers/XercesDOMParser.hpp" + +#include "XML/XercesString.h" + +namespace Test +{ + namespace XML + { + Helper::Helper (CIAO::XML::XML_Error_Handler &eh) + : impl_ (0) + , parser_ (0) + , e_handler_ (eh) + { + this->init_parser (); + } + + Helper::~Helper (void) + { + this->terminate_parser (); + } + + void + Helper::init_parser (void) + { + // Initialize the Xerces run-time + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + + // Instantiate the DOM parser. + static const XMLCh gLS[] = { XERCES_CPP_NAMESPACE::chLatin_L, + XERCES_CPP_NAMESPACE::chLatin_S, + XERCES_CPP_NAMESPACE::chNull }; + + // Get an implementation of the Load-Store (LS) interface + // and cache it for later use + impl_ = + XERCES_CPP_NAMESPACE::DOMImplementationRegistry::getDOMImplementation(gLS); + } + + int + Helper::validate_dom (const ACE_TCHAR *url) + { + if (url == 0) + return 0; + + try + { + if (this->parser_ == 0) + this->parser_ = new XERCES_CPP_NAMESPACE::XercesDOMParser (); + + // Discard comment nodes in the document + this->parser_->setCreateCommentNodes (false); + + // Do not create EntityReference nodes in the DOM tree. No + // EntityReference nodes will be created, only the nodes + // corresponding to their fully expanded sustitution text will be + // created. + this->parser_->setCreateEntityReferenceNodes (false); + + // Perform Validation + this->parser_->setValidationScheme ( + XERCES_CPP_NAMESPACE::AbstractDOMParser::Val_Always); + + // Do not include ignorable whitespace in the DOM tree. + this->parser_->setIncludeIgnorableWhitespace (false); + + // Enable full schema constraint checking, including checking which + // may be time-consuming or memory intensive. Currently, particle + // unique attribution constraint checking and particle derivation + // restriction checking are controlled by this option. + this->parser_->setValidationSchemaFullChecking (true); + + this->parser_->setErrorHandler (&e_handler_); + + this->parser_->parse (ACE_TEXT_ALWAYS_CHAR (url)); + + if (e_handler_.getErrors ()) + return 1; + + return 0; + } + catch (...) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Caught an unknown exception\n")); + throw; + } + + return 0; + } + + void + Helper::terminate_parser (void) + { + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Terminate (); + } + } +} diff --git a/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.h b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.h new file mode 100644 index 00000000000..869742e2274 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/XML_Helper.h @@ -0,0 +1,67 @@ +// $Id$ +//============================================================ +/** + * @file XML_Helper.h + * + * @brief Some helper functions for XML + * + * @author Bala Natarajan + * @author William R. Otte + */ +//============================================================ + +#ifndef CIAO_XML_HELPER_H +#define CIAO_XML_HELPER_H +#include /**/ "ace/pre.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "XML/XML_Error_Handler.h" + +#include "xercesc/util/XercesDefs.hpp" + +namespace XERCES_CPP_NAMESPACE +{ + class DOMImplementation; + class XercesDOMParser; +} + +namespace Test +{ + namespace XML + { + /** + * @class Helper + * + * @brief Helper class for some routine XML stuff. + */ + class Helper + { + public: + // Initialize the resolver we should use. + Helper (CIAO::XML::XML_Error_Handler &eh); + + ~Helper (void); + + int validate_dom (const ACE_TCHAR *uri); + + protected: + /// Intialize the parser + void init_parser (void); + + /// Terminate the parser + void terminate_parser (void); + + private: + XERCES_CPP_NAMESPACE::DOMImplementation *impl_; + XERCES_CPP_NAMESPACE::XercesDOMParser *parser_; + + CIAO::XML::XML_Error_Handler &e_handler_; + }; + } +} + +#include /**/ "ace/post.h" +#endif/*CIAO_XML_HELPER_H*/ diff --git a/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl new file mode 100755 index 00000000000..0dffb9fe28c --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/run_test.pl @@ -0,0 +1,62 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi"); +$VAL = $target->CreateProcess ("xmlvalidator"); + + +my $idl_tests_dir = "$ENV{'TAO_ROOT'}/tests/IDL_Test"; +opendir(DIR, $idl_tests_dir) || die "can't opendir $idl_tests_dir: $!"; + +my @idls = grep { /\.idl$/ && -f "$idl_tests_dir/$_" } readdir(DIR); +foreach my $idl_file (@idls) { + my $idl = "$idl_tests_dir/$idl_file"; + my $dtd = "../XMI.dtd"; + (my $xmi = $idl_file) =~ s/\.idl$/.xmi/; + $target->LocalFile ($xmi); + $target->DeleteFile ($xmi); + + $I2X->Arguments ("-I$idl_tests_dir -xd $dtd -of $xmi $idl"); + + $target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval ()); + + if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + $status = 1; + } + + if (! -f $xmi) { + print STDERR "ERROR: tao_idl3_to_xmi didn't produce XMI\n"; + print "\n"; + next; + } + + #$VAL->Arguments ("val -d $dtd $xmi"); + $VAL->Arguments ("-i $xmi"); + + $target_status = $VAL->SpawnWaitKill ($target->ProcessStartWaitInterval ()); + + if ($target_status != 0) { + print STDERR "ERROR: xmlvalidator returned $target_status\n"; + $status = 1; + } + + $target->DeleteFile ($xmi); + + print "\n"; +} + +closedir DIR; + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/xmlvalidator.cpp b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/xmlvalidator.cpp new file mode 100644 index 00000000000..2603fb30403 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/IDL2XMI_Test/xmlvalidator.cpp @@ -0,0 +1,64 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/OS_NS_stdio.h" + +#include "XML_Helper.h" + +ACE_RCSID (IDL2XMI_Test, + xmlvalidator, + "$Id$") + +const ACE_TCHAR *inp_file = ACE_TEXT (""); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("i:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'i': + inp_file = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("usage: %s ") + ACE_TEXT ("-i ") + ACE_TEXT ("\n"), + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +ACE_TMAIN(int argc, ACE_TCHAR *argv[]) +{ + if (parse_args (argc, argv) != 0) + { + return 1; + } + + CIAO::XML::XML_Error_Handler handler; + Test::XML::Helper helper (handler); + + if (0 != helper.validate_dom (inp_file)) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("%s - invalid xml\n"), + inp_file)); + return 1; + } + + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("%s - valid xml\n"), + inp_file)); + + return 0; +} diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI.dtd b/modules/CIAO/tests/IDL3_to_XMI/XMI.dtd new file mode 100644 index 00000000000..c8cf164befd --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI.dtd @@ -0,0 +1,6384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/run_test.pl new file mode 100755 index 00000000000..980bd95245b --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/run_test.pl @@ -0,0 +1,54 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +my $idl = "test.idl"; +my $dtd = "../XMI.dtd"; +my $xmi = "generated.xmi"; +my $target_idl = $target->LocalFile ($idl); +my $target_dtd = $target->LocalFile ($dtd); +my $target_xmi = $target->LocalFile ($xmi); +$target->DeleteFile($xmi); + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi", + "-f -xd $target_dtd -of $target_xmi $target_idl"); + +$target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval()); + +if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + exit 1; +} + +if ($target->GetFile ($xmi) == -1) { + print STDERR "ERROR: cannot retrieve file <$xmi>\n"; + exit 1; +} + +# search for right tag in generated xmi +open (DAT, $xmi) || die ("ERROR: Could not open file <$xmi>!"); +@data=; +close (DAT); + +$num = grep (/DeleteFile($xmi); + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/test.idl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/test.idl new file mode 100644 index 00000000000..548c7aa2073 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Array/test.idl @@ -0,0 +1,20 @@ +// $Id$ + +#ifndef TEST_IDL +#define TEST_IDL + +module TestXMIArray { + typedef char CharArray [4][5]; + + struct A + { + CharArray bar; + }; + + struct B + { + char bar[3][2]; + }; +}; + +#endif // TEST_IDL diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File1.idl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File1.idl new file mode 100644 index 00000000000..4c3659f4f48 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File1.idl @@ -0,0 +1,15 @@ +// $Id$ + +#ifndef File_1_ +#define File_1_ + +module File1 { + + typedef sequence Seq1; + + typedef string type2; + typedef sequence Seq2; + +}; + +#endif diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File2.idl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File2.idl new file mode 100644 index 00000000000..f8c3106e352 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/File2.idl @@ -0,0 +1,20 @@ +// $Id$ + +#ifndef FILE_2_ +#define FILE_2_ + +#include + +module File2 { + + interface Test { + + void op1(in File1::Seq1 s1); + + void op2(in File1::Seq2 s2); + + }; + +}; + +#endif // FILE_2_ diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl new file mode 100755 index 00000000000..46c8017d5ef --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Included_File/run_test.pl @@ -0,0 +1,54 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +my $idl = "File2.idl"; +my $dtd = "../XMI.dtd"; +my $xmi = "generated.xmi"; +my $target_idl = $target->LocalFile ($idl); +my $target_dtd = $target->LocalFile ($dtd); +my $target_xmi = $target->LocalFile ($xmi); +$target->DeleteFile($xmi); + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi", + "-f -xd $target_dtd -of $target_xmi $target_idl"); + +$target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval()); + +if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + exit 1; +} + +if ($target->GetFile ($xmi) == -1) { + print STDERR "ERROR: cannot retrieve file <$xmi>\n"; + exit 1; +} + +# search for right tag in generated xmi +open (DAT, $xmi) || die ("ERROR: Could not open file <$xmi>!"); +@data=; +close (DAT); + +$num = grep (/DeleteFile($xmi); + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl new file mode 100755 index 00000000000..b32727b9415 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/run_test.pl @@ -0,0 +1,77 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +my $idl = "test.idl"; +my $dtd = "../XMI.dtd"; +my $xmi = "generated.xmi"; +my $target_idl = $target->LocalFile ($idl); +my $target_dtd = $target->LocalFile ($dtd); +my $target_xmi = $target->LocalFile ($xmi); +$target->DeleteFile($xmi); + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi", + "-f -xd $target_dtd -of $target_xmi $target_idl"); + +$target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval()); + +if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + exit 1; +} + +if ($target->GetFile ($xmi) == -1) { + print STDERR "ERROR: cannot retrieve file <$xmi>\n"; + exit 1; +} + +$A_occurs = 0; +$A_indent = ""; +$A_line = ""; +$A_xmiid = "one"; +$B_occurs = 0; +$B_indent = ""; +$B_line = ""; +$B_ns = "two"; +@data = (); + +# search for right tag in generated xmi +open (DAT, $xmi) || die ("ERROR: Could not open file <$xmi>!"); +while ($line = ) { + push @data, $line; + if ($line =~ /(\s*)DeleteFile($xmi); + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/test.idl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/test.idl new file mode 100644 index 00000000000..9ec8562abb9 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Module_Reopen/test.idl @@ -0,0 +1,43 @@ +// $Id$ + +#ifndef TEST_IDL +#define TEST_IDL + +module A { + module C { + interface B_itf { + }; + + interface C_itf { + }; + + eventtype E_evt { + }; + + eventtype F_evt { + }; + + component B_comp { + provides C_itf c_facet; + consumes E_evt e_consumer; + }; + }; +}; + +module A { + module B { + module C { + module D { + component A_comp : ::A::C::B_comp { + provides ::A::C::B_itf a_facet; + consumes ::A::C::F_evt f_consumer; + }; + + home A_home manages ::A::B::C::D::A_comp { + }; + }; + }; + }; +}; + +#endif // TEST_IDL diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/run_test.pl new file mode 100755 index 00000000000..15ec0930389 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/run_test.pl @@ -0,0 +1,61 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +my $idl = "test.idl"; +my $dtd = "../XMI.dtd"; +my $xmi = "generated.xmi"; +my $target_idl = $target->LocalFile ($idl); +my $target_dtd = $target->LocalFile ($dtd); +my $target_xmi = $target->LocalFile ($xmi); +$target->DeleteFile($xmi); + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi", + "-f -xd $target_dtd -of $target_xmi $target_idl"); + +$target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval()); + +if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + exit 1; +} + +if ($target->GetFile ($xmi) == -1) { + print STDERR "ERROR: cannot retrieve file <$xmi>\n"; + exit 1; +} + +$native_correct = 0; +@data = (); + +# search for right tag in generated xmi +open (DAT, $xmi) || die ("ERROR: Could not open file <$xmi>!"); +while ($line = ) { + push @data, $line; + if ($line =~ /name\s*=\s*\"CORBAnative\"/) { + $native_correct = 1; + } +} +close (DAT); + +if ($native_correct) { + print "TEST OK. Correct tags are there.\n"; +} else { + print STDERR "ERROR: generated XMI is not correct!\n\nXMI is:\n\n"; + print "@data\n\n"; + $status = 1; +} + +$target->DeleteFile($xmi); + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/test.idl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/test.idl new file mode 100644 index 00000000000..f3d97257e7e --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Native/test.idl @@ -0,0 +1,6 @@ +// $Id$ + +#ifndef TEST_IDL +#define TEST_IDL + +#endif // TEST_IDL diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl new file mode 100755 index 00000000000..43d5ef030d8 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/run_test.pl @@ -0,0 +1,54 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; + +my $target = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; + +my $idl = "test.idl"; +my $dtd = "../XMI.dtd"; +my $xmi = "generated.xmi"; +my $target_idl = $target->LocalFile ($idl); +my $target_dtd = $target->LocalFile ($dtd); +my $target_xmi = $target->LocalFile ($xmi); +$target->DeleteFile($xmi); + +$I2X = $target->CreateProcess ("$ENV{'CIAO_ROOT'}/bin/tao_idl3_to_xmi", + "-f -xd $target_dtd -of $target_xmi $target_idl"); + +$target_status = $I2X->SpawnWaitKill ($target->ProcessStartWaitInterval()); + +if ($target_status != 0) { + print STDERR "ERROR: tao_idl3_to_xmi returned $target_status\n"; + exit 1; +} + +if ($target->GetFile ($xmi) == -1) { + print STDERR "ERROR: cannot retrieve file <$xmi>\n"; + exit 1; +} + +# search for right tag in generated xmi +open (DAT, $xmi) || die ("ERROR: Could not open file <$xmi>!"); +@data=; +close (DAT); + +$num = grep (/DeleteFile($xmi); + +exit $status; diff --git a/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/test.idl b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/test.idl new file mode 100644 index 00000000000..1fced580bc2 --- /dev/null +++ b/modules/CIAO/tests/IDL3_to_XMI/XMI_For_Sequence/test.idl @@ -0,0 +1,25 @@ +// $Id$ + +#ifndef TEST_IDL +#define TEST_IDL + +module TestXMISequence { + typedef sequence SeqChar; + typedef sequence SeqChar10; + + struct A { + sequence field; + }; + struct A10 { + sequence field; + }; + + struct B { + SeqChar field; + }; + struct B10 { + SeqChar10 field; + }; +}; + +#endif // TEST_IDL diff --git a/modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.idl b/modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.idl new file mode 100644 index 00000000000..0a01f1bdf43 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.idl @@ -0,0 +1,200 @@ +// $Id$ +/** + * @file Cornucopia.idl + * @author Jeff Parsons + * + * Tests TAO_IDL generation of CIAO servant, executor IDL + * and executor implementation stencil for a variety of + * IDL3 constructs. + */ + +#include + +module Supported +{ + interface IfacePawPaw + { + long paw_paw_op (out short spew); + attribute boolean inbred; + }; + + interface IfaceMom : IfacePawPaw + { + readonly attribute wchar uni_tag; + IfacePawPaw get_paw_paw (); + }; + + interface IfaceDad : IfacePawPaw + { + attribute string msg; + long long get_big_int (in IfacePawPaw genealogy); + }; + + interface Iface : IfaceMom, IfaceDad + { + attribute wstring uni_uuid; + void supported_op (inout unsigned long index); + }; +}; + +interface pface {}; +interface uface {}; +interface umface {}; + +abstract interface IfAb +{ + long op (out long value); +}; + +interface IfConcr : IfAb +{ + long concr_op (out long value); +}; + +valuetype pkey : Components::PrimaryKeyBase +{ + public string info; +}; + +eventtype pubtype {}; +eventtype emittype {}; +eventtype eattype {}; + +exception BadGet {}; +exception BadSet {}; +exception Whatever {}; + +module BaseMod +{ +component CompBase supports Supported::Iface + { + attribute octet the_byte + getraises (BadGet, Whatever) setraises (BadSet); + }; +}; + +enum Color +{ + RED, + WHITE, + BLUE +}; + +module T2 +{ + interface Write + { + }; + + porttype MyPort + { + uses Write writer; + }; + + component Base + { + port MyPort usage; + attribute string topic_name; + }; + + component Derived : Base + { + }; +}; + +module LocalMod +{ + local interface L1 + { + }; + + local interface L2 + { + L1 getL1(); + void setL1 (in L1 x); + }; + + component CombLocal + { + provides L1 x; + uses L2 y; + }; + + component CombLocal2 + { + uses L1 x; + provides L2 y; + }; + + porttype L3 + { + provides L1 x; + uses L2 y; + }; + + component CombLocal4 + { + port L3 z; + mirrorport L3 z2; + }; + + component CombLocal3 + { + mirrorport L3 z; + port L3 z2; + }; +}; + +module DerivedMod +{ + porttype CombinedPort + { + provides pface pface_provider; + uses uface uface_user; + uses multiple umface umface_umuser; + }; + + component CompCombinedPort + { + port CombinedPort cc; + }; + + component MirrorCompCombinedPort + { + mirrorport CombinedPort cc; + }; + + component CompDerived : BaseMod::CompBase + { + attribute Color stripe; + provides pface pface_provider; + uses uface uface_user; + uses multiple umface umface_umuser; + publishes pubtype pubtype_publisher; + emits emittype emittype_emitter; + consumes eattype eattype_consumer; + uses IfConcr ccre_user; + }; +}; + +module HomeMod +{ + home CompBaseHome supports Supported::Iface manages BaseMod::CompBase + { + readonly attribute Color shade; + pface fetch_managed_ports (out uface recep); + factory base_init (in string id, in unsigned short uni_raw) + raises (Whatever); + finder bathroom_sink (); + }; + + home CompDerivedHome : CompBaseHome manages DerivedMod::CompDerived + { + exception ch_except {}; + void ch_op () raises (ch_except); + factory def_init (); + finder kitchen_sink (in string uid, in pkey key, in boolean all) + raises (ch_except); + }; +}; + diff --git a/modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.mpc b/modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.mpc new file mode 100644 index 00000000000..5053203513f --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Cornucopia/Cornucopia.mpc @@ -0,0 +1,129 @@ +// $Id$ + +project(Cornucopia_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=CORNUCOPIA_STUB_Export \ + -Wb,stub_export_include=Cornucopia_stub_export.h \ + -Wb,skel_export_macro=CORNUCOPIA_SKEL_Export \ + -Wb,skel_export_include=Cornucopia_skel_export.h \ + -Wb,svnt_export_macro=CORNUCOPIA_SVNT_Export \ + -Wb,svnt_export_include=Cornucopia_svnt_export.h \ + -Wb,exec_export_macro=CORNUCOPIA_EXEC_Export \ + -Wb,exec_export_include=Cornucopia_exec_export.h \ + -Gex -Gxhst -Gxhsk -Gxhsv -Gxhex + + IDL_Files { + Cornucopia.idl >> Cornucopia_stub_export.h Cornucopia_skel_export.h Cornucopia_svnt_export.h Cornucopia_exec_export.h + } +} + +project(Cornucopia_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Cornucopia_idl_gen + idlflags += -Wb,export_macro=CORNUCOPIA_EXEC_Export \ + -Wb,export_include=Cornucopia_exec_export.h \ + -SS + + IDL_Files { + CornucopiaE.idl + } +} + +project(Cornucopia_stub) : ccm_stub { + after += Cornucopia_idl_gen + + sharedname = Cornucopia_stub + dynamicflags = CORNUCOPIA_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CornucopiaC.cpp + } + + Header_Files { + CornucopiaC.h + Cornucopia_stub_export.h + } + + Inline_Files { + CornucopiaC.inl + } +} + +project(Cornucopia_exec) : ciao_executor { + after += Cornucopia_lem_gen Cornucopia_stub + sharedname = Cornucopia_exec + libs += Cornucopia_stub + + dynamicflags = CORNUCOPIA_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CornucopiaEC.cpp + Cornucopia_exec.cpp + } + + Header_Files { + CornucopiaEC.h + Cornucopia_exec.h + Cornucopia_exec_export.h + } + + Inline_Files { + CornucopiaEC.inl + } +} + +project(Cornucopia_skel) : ccm_svnt { + after += Cornucopia_stub + sharedname = Cornucopia_skel + libs += Cornucopia_stub + + dynamicflags = CORNUCOPIA_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CornucopiaS.cpp + } + + Header_Files { + CornucopiaS.h + Cornucopia_skel_export.h + } + + Inline_Files { + CornucopiaS.inl + } +} + +project(Cornucopia_svnt) : ciao_servant { + after += Cornucopia_exec Cornucopia_skel Cornucopia_stub + sharedname = Cornucopia_svnt + libs += Cornucopia_exec \ + Cornucopia_skel \ + Cornucopia_stub + + dynamicflags = CORNUCOPIA_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Cornucopia_svnt.cpp + } + + Header_Files { + Cornucopia_svnt.h + Cornucopia_svnt_export.h + } + + Inline_Files { + } +} + diff --git a/modules/CIAO/tests/IDL_Test/Cornucopia/README b/modules/CIAO/tests/IDL_Test/Cornucopia/README new file mode 100644 index 00000000000..40c1b6a9090 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Cornucopia/README @@ -0,0 +1,39 @@ + +Cornucopia Code Generation Test +=============================== + +This test is for correct code generation, the various +artifacts compile and link, but there is no executable. + +The IDL file in this directory was put together to have +a wide variety of IDL3 and non-template IDL3+ +constructs, and some features +not yet present in other CIAO tests and examples: + + Non-template IDL3+ + +- porttype +- port +- mirrorport + + IDL3 + +- inheritance of operations and attributes in: + - facet interfaces + - supported interfaces + - homes + - components (attributes only) + +- inheritance of factory and finder operations + +- raises, getraises and setraises constructs + +- separate scoping for supported interfaces, + port interfaces, derived components, and homes + +- skeleton and servant generated files in separate + builds/libraries + + +Jeff Parsons +December 17, 2009 diff --git a/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC.cdp b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC.cdp new file mode 100644 index 00000000000..c8d41557c7b --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC.cdp @@ -0,0 +1,125 @@ + + + Inherited_Components_Deployment_1 + + + + + + ComponentCComponentImplementation + + + + + + component factory + + + tk_string + + + create_ComponentC_Impl + + + + + edu.vanderbilt.dre.CIAO.ServantEntrypoint + + + tk_string + + + create_connector_test_C_Servant + + + + + edu.vanderbilt.dre.CIAO.ServantArtifact + + + tk_string + + + ComponentC_svnt + + + + + edu.vanderbilt.dre.CIAO.ExecutorArtifact + + + tk_string + + + ComponentC_exec + + + + + + + ComponentCComponent + ComponentCNode + + + + + topic_name_c + + + tk_string + + + ComponentC + + + + + topic_name_b + + + tk_string + + + ComponentB + + + + + topic_name_a + + + tk_string + + + ComponentA + + + + + + + + ComponentC_exec + + + ComponentC_exec + + + ComponentC_svnt + + + ComponentC_svnt + + + ComponentC_stub + + + ComponentC_stub + + + diff --git a/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.cpp b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.cpp new file mode 100644 index 00000000000..d9967437761 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.cpp @@ -0,0 +1,116 @@ +// -*- C++ -*- +// $Id$ + +#include "ComponentC_exec.h" +#include "ciao/Logger/Log_Macros.h" + +namespace CIAO_connector_test_C_Impl +{ + //============================================================ + // Pulse generator + //============================================================ + + ComponentC_exec_i::ComponentC_exec_i (void) + : topic_name_c_ (""), + topic_name_b_ (""), + topic_name_a_ (""), + topic_name_c_has_been_set_ (false), + topic_name_b_has_been_set_ (false), + topic_name_a_has_been_set_ (false) + { + } + + ComponentC_exec_i::~ComponentC_exec_i (void) + { + } + + // Port operations. + void + ComponentC_exec_i::topic_name_c (const char * topic_name) + { + this->topic_name_c_ = topic_name; + this->topic_name_c_has_been_set_ = true; + } + char * + ComponentC_exec_i::topic_name_c (void) + { + return CORBA::string_dup (this->topic_name_c_.in ()); + } + + void + ComponentC_exec_i::topic_name_b (const char * topic_name) + { + this->topic_name_b_ = topic_name; + this->topic_name_b_has_been_set_ = true; + } + char * + ComponentC_exec_i::topic_name_b (void) + { + return CORBA::string_dup (this->topic_name_b_.in ()); + } + + void + ComponentC_exec_i::topic_name_a (const char * topic_name) + { + this->topic_name_a_ = topic_name; + this->topic_name_a_has_been_set_ = true; + } + char * + ComponentC_exec_i::topic_name_a (void) + { + return CORBA::string_dup (this->topic_name_a_.in ()); + } + // Operations from Components::SessionComponent. + void + ComponentC_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::connector_test::CCM_C_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + ComponentC_exec_i::configuration_complete (void) + { + } + + void + ComponentC_exec_i::ccm_activate (void) + { + } + + void + ComponentC_exec_i::ccm_passivate (void) + { + } + + void + ComponentC_exec_i::ccm_remove (void) + { + if (!this->topic_name_c_has_been_set_) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Topic name C has not been set\n"))); + if (!this->topic_name_b_has_been_set_) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Topic name B has not been set\n"))); + if (!this->topic_name_a_has_been_set_) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Topic name A has not been set\n"))); + } + + extern "C" INHERITED_COMPONENTS_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ComponentC_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + ComponentC_exec_i ); + + return retval; + } +} + diff --git a/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.h b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.h new file mode 100644 index 00000000000..231b193da8c --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/ComponentC_exec.h @@ -0,0 +1,75 @@ +// -*- C++ -*- +// $Id$ + +#ifndef INHERITED_COMPONENTS_EXEC_H_ +#define INHERITED_COMPONENTS_EXEC_H_ + + +#include "Inherited_componentsEC.h" + +#include /**/ "ComponentC_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" + +#include + +namespace CIAO_connector_test_C_Impl +{ + class ComponentC_exec_i + : public virtual C_Exec, + public virtual ::CORBA::LocalObject + { + public: + ComponentC_exec_i (void); + virtual ~ComponentC_exec_i (void); + + virtual void + topic_name_c (const char * topic_name); + virtual char * + topic_name_c (void); + virtual void + topic_name_b (const char * topic_name); + virtual char * + topic_name_b (void); + virtual void + topic_name_a (const char * topic_name); + virtual char * + topic_name_a (void); + + virtual ::connector_test::CCM_X_ptr + get_x_a2 (void) { return 0; } + + virtual ::connector_test::CCM_Y_ptr + get_y_b2 (void) { return 0; } + + virtual ::connector_test::CCM_Z_ptr + get_z_c2 (void) { return 0; } + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::connector_test::CCM_C_Context_var context_; + CORBA::String_var topic_name_c_; + CORBA::String_var topic_name_b_; + CORBA::String_var topic_name_a_; + bool topic_name_c_has_been_set_; + bool topic_name_b_has_been_set_; + bool topic_name_a_has_been_set_; + }; + + extern "C" INHERITED_COMPONENTS_EXEC_Export ::Components::EnterpriseComponent_ptr + create_ComponentC_Impl (void); +} + +#endif /* ifndef */ + diff --git a/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.idl b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.idl new file mode 100644 index 00000000000..613a7ec6adb --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.idl @@ -0,0 +1,50 @@ +// $Id$ + +/** + * @file Inherited_components.idl + * @author Marcel Smit + * +*/ + +#ifndef INHERITED_COMPONENTS_IDL_ +#define INHERITED_COMPONENTS_IDL_ + +#include + +module connector_test +{ + interface X { + attribute string X_a; + void opX (); + }; + interface Y { + attribute string Y_a; + void opY (); + }; + interface Z { + attribute string Z_a; + void opZ (); + }; + + component A + { + attribute string topic_name_a; + uses X x_a1; + provides X x_a2; + }; + + component B : A + { + attribute string topic_name_b; + uses Y y_b1; + provides Y y_b2; + }; + + component C : B + { + attribute string topic_name_c; + uses Z z_c1; + provides Z z_c2; + }; +}; +#endif diff --git a/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.mpc b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.mpc new file mode 100644 index 00000000000..177f178c2bc --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/Inherited_components.mpc @@ -0,0 +1,125 @@ +// $Id$ + +project(Inherited_Components_idl_gen) : componentidldefaults { + after += + custom_only = 1 + idlflags += -Wb,stub_export_macro=INHERITED_COMPONENTS_STUB_Export \ + -Wb,stub_export_include=ComponentC_stub_export.h \ + -Wb,skel_export_macro=INHERITED_COMPONENTS_SVNT_Export \ + -Wb,skel_export_include=ComponentC_svnt_export.h \ + -Wb,exec_export_macro=INHERITED_COMPONENTS_EXEC_Export \ + -Wb,exec_export_include=ComponentC_exec_export.h \ + -I .. + + IDL_Files { + Inherited_components.idl + } +} + +project(Inherited_Components_lem_gen) : ciaoidldefaults { + after += Inherited_Components_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=INHERITED_COMPONENTS_EXEC_Export \ + -Wb,stub_export_include=ComponentC_exec_export.h \ + -SS -Gxhst -I .. + + IDL_Files { + Inherited_componentsE.idl + } +} + +project(Inherited_Components_lem_stub) : ccm_svnt, dds4ccm_base { + after += Inherited_Components_lem_gen Inherited_Components_stub + libs += ComponentC_stub + sharedname = ComponentC_lem_stub + dynamicflags = INHERITED_COMPONENTS_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Inherited_componentsEC.cpp + } + + Header_Files { + Inherited_componentsEC.h + ComponentC_exec_export.h + } + + Inline_Files { + Inherited_componentsEC.inl + } +} + +project(Inherited_Components_stub) : ccm_stub, dds4ccm_base { + after += Inherited_Components_idl_gen + libs += + sharedname = ComponentC_stub + dynamicflags = INHERITED_COMPONENTS_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Inherited_componentsC.cpp + } + + Header_Files { + Inherited_componentsC.h + ComponentC_stub_export.h + } + + Inline_Files { + Inherited_componentsC.inl + } +} + +project(Inherited_Components_exec) : ciao_executor, dds4ccm_base { + after += Inherited_Components_lem_stub Inherited_Components_stub + sharedname = ComponentC_exec + libs += ComponentC_stub ComponentC_lem_stub + dynamicflags = INHERITED_COMPONENTS_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ComponentC_exec.cpp + } + + Header_Files { + ComponentC_exec.h + ComponentC_exec_export.h + } + + Inline_Files { + } +} + + +project(Inherited_Components_svnt) : ciao_servant, dds4ccm_base, nddslib { + after += Inherited_Components_lem_stub DDS4CCM_lem_stub DDS4CCM_skel + sharedname = ComponentC_svnt + libs += ComponentC_stub ComponentC_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + dynamicflags = INHERITED_COMPONENTS_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Inherited_componentsS.cpp + Inherited_components_svnt.cpp + } + + Header_Files { + Inherited_componentsS.h + Inherited_components_svnt.h + ComponentC_svnt_export.h + } + + Inline_Files { + Inherited_componentsS.inl + } +} + diff --git a/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/run_test.pl b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/run_test.pl new file mode 100755 index 00000000000..0ddfb372d43 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Double_Inherited_Component/run_test.pl @@ -0,0 +1,229 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 1; +@ports = ( 60001 ); +@iorbases = ( "ComponentC.ior" ); +@iorfiles = 0; +@nodenames = ( "ComponentCNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "ComponentC.cdp"; + +$ENV{"DANCE_TRACE_ENABLE"} = 0; +$ENV{"CIAO_TRACE_ENABLE"} = 0; + + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemon { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemon (); + } + + if ($em_running == 1) { + $EM->Kill (); $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); $NS->TimedWait (1); + } +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 10 seconds to allow task to complete\n"; +sleep (10); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -q"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.idl b/modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.idl new file mode 100644 index 00000000000..2addbda8afb --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.idl @@ -0,0 +1,166 @@ +// $Id$ +/** + * @file KitchenSink.idl + * @author Jeff Parsons + * + * Tests TAO_IDL generation of CIAO servant, executor IDL + * and executor implementation stencil for a variety of + * IDL3+ constructs. + */ + +#include + +module mod +{ + valuetype future_key : Components::PrimaryKeyBase + { + public string info; + }; +}; + +interface iface +{ + exception iface_excep {}; +}; + +typedef sequence ifaceSeq; + +eventtype ev +{ +}; + +module GlobalTyped +{ + typedef short x; +}; + +module A +{ + local interface C + { + }; + + module Nested TSeq> + { + typedef short y; + + interface XX + { + }; + + // A regular module may be nested inside a template module, + // but another template module may not. + module GoodNested + { + typedef long Lo; + }; +/* + module BadNested + { + typedef S S_Tdef; + }; +*/ + }; + + module Nested Nested_Inst; +}; + +module second +{ + typedef short sho; + + valuetype pkey : Components::PrimaryKeyBase + { + public long id_key; + }; +}; + +module B +{ + module second_B TSeq> + { + alias A::Nested NestedA; + + interface do : NestedA::XX + { + }; + }; +}; + +module Ast TSeq, + const unsigned long M> +{ + interface Foo : T + { + attribute T Foo_Attr; + + void Foo_Op (in TSeq inarg) raises (S); + }; + + alias second second_ref; + + valuetype VT_T : V supports T + { + }; + + porttype PT_T + { + provides iface iface_facet; + uses multiple T T_Recep; + }; + + component Comp_T + { + uses multiple T Comp_T_Recep; + mirrorport PT_T Comp_T_Mirror_Port; + provides T Comp_T_Facet; + emits E Comp_T_Emit; + + // Tests unique lookup mechanism for types referenced + // from an aliased template module. + attribute second_ref::sho sho_attr; + }; + + home Comp_T_Home manages Comp_T primarykey second_ref::pkey + { + factory create_Comp_T (in TSeq inarg); + finder find_Comp_T (in T inarg); + }; + + // TAO IDL compiler uses the same code for both component + // and home 'supports' constructs, so we test it here + // where there is no conflict with the port interfaces. + home Comp_T_Home_2 supports T manages Comp_T primarykey V + { + }; + + connector Conn_T + { + port PT_T Conn_T_Port; + provides T Conn_T_Facet; + }; + + const unsigned long Ast_Const = M; + const unsigned long LC = 7; + typedef sequence AnotherTSeq; + + struct boo + { + T T_field; + }; + + typedef T T_array[M][Ast_Const][LC]; +}; + +module Ast + Ast_Inst; + diff --git a/modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.mpc b/modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.mpc new file mode 100644 index 00000000000..71b31c21cad --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/IDL3_Plus/KitchenSink.mpc @@ -0,0 +1,106 @@ +// $Id$ + +project(KitchenSink_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Gex \ + -Wb,stub_export_macro=KITCHENSINK_STUB_Export \ + -Wb,stub_export_include=KitchenSink_stub_export.h \ + -Wb,skel_export_macro=KITCHENSINK_SVNT_Export \ + -Wb,skel_export_include=KitchenSink_svnt_export.h \ + -Wb,svnt_export_macro=KITCHENSINK_SVNT_Export \ + -Wb,svnt_export_include=KitchenSink_svnt_export.h \ + -Wb,exec_export_macro=KITCHENSINK_EXEC_Export \ + -Wb,exec_export_include=KitchenSink_exec_export.h + + IDL_Files { + KitchenSink.idl + } +} + +project(KitchenSink_lem_gen) : ciaoidldefaults { + after += KitchenSink_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=KITCHENSINK_EXEC_Export \ + -Wb,export_include=KitchenSink_exec_export.h \ + -SS + + IDL_Files { + KitchenSinkE.idl + } +} + +project(KitchenSink_stub) : ccm_stub { + after += KitchenSink_idl_gen + + sharedname = KitchenSink_stub + dynamicflags = KITCHENSINK_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + KitchenSinkC.cpp + } + + Header_Files { + KitchenSinkC.h + KitchenSink_stub_export.h + } + + Inline_Files { + KitchenSinkC.inl + } +} + +project(KitchenSink_exec) : ciao_executor { + after += KitchenSink_lem_gen KitchenSink_stub + sharedname = KitchenSink_exec + libs += KitchenSink_stub + + dynamicflags = KITCHENSINK_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + KitchenSinkEC.cpp + KitchenSink_exec.cpp + } + + Header_Files { + KitchenSinkEC.h + KitchenSink_exec.h + KitchenSink_exec_export.h + } + + Inline_Files { + KitchenSinkEC.inl + } +} + +project(KitchenSink_svnt) : ciao_servant { + after += KitchenSink_exec + sharedname = KitchenSink_svnt + libs += KitchenSink_exec \ + KitchenSink_stub + + dynamicflags = KITCHENSINK_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + KitchenSinkS.cpp + KitchenSink_svnt.cpp + } + + Header_Files { + KitchenSinkS.h + KitchenSink_svnt.h + KitchenSink_svnt_export.h + } + + Inline_Files { + KitchenSinkS.inl + } +} diff --git a/modules/CIAO/tests/IDL_Test/IDL3_Plus/README b/modules/CIAO/tests/IDL_Test/IDL3_Plus/README new file mode 100644 index 00000000000..5707a8d5bbb --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/IDL3_Plus/README @@ -0,0 +1,23 @@ + +KitchenSink Code Generation Test +=============================== + +This test is for correct code generation, the various +artifacts compile and link, but there is no executable. + +The IDL file in this directory was put together to have +a wide variety of template-related IDL3+ constructs: + +- template module +- use of template parameters in contained IDL declarations +- referenced template module usong 'alias' keyword +- instantiated template module + +Currently only the TAO_IDL front end supports IDL3+ +template-related constructs, so this test covers parsing +and AST building only. As implementation proceeds on +the corresponding back end support, code generation, +compiling and linking will also be tested. + +Jeff Parsons +December 17, 2009 diff --git a/modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.idl b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.idl new file mode 100644 index 00000000000..57dff3e58b0 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.idl @@ -0,0 +1,8 @@ +// $Id$ + +#include "IC_Foo.idl" +#include "IC_FooE.idl" + +component Bar +{ +}; diff --git a/modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.mpc b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.mpc new file mode 100644 index 00000000000..f8ce62bac16 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Bar.mpc @@ -0,0 +1,105 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl IC_Bar" + +project(IC_Bar_idl_gen) : componentidldefaults { + after += IC_Foo_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=IC_BAR_STUB_Export \ + -Wb,stub_export_include=IC_Bar_stub_export.h \ + -Wb,skel_export_macro=IC_BAR_SVNT_Export \ + -Wb,skel_export_include=IC_Bar_svnt_export.h \ + -Wb,exec_export_macro=IC_BAR_EXEC_Export \ + -Wb,exec_export_include=IC_Bar_exec_export.h + + IDL_Files { + IC_Bar.idl + } +} + +project(IC_Bar_lem_gen) : ciaoidldefaults { + after += IC_Bar_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=IC_BAR_EXEC_Export \ + -Wb,export_include=IC_Bar_exec_export.h \ + -SS + + IDL_Files { + IC_BarE.idl + } +} + +project(IC_Bar_stub) : ccm_stub { + after += IC_Bar_idl_gen IC_Foo_lem_gen + libs += + + sharedname = IC_Bar_stub + dynamicflags = IC_BAR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IC_BarC.cpp + } + + Header_Files { + IC_BarC.h + IC_Bar_stub_export.h + } + + Inline_Files { + IC_BarC.inl + } +} + +project(IC_Bar_exec) : ciao_executor { + sharedname = IC_Bar_exec + after += IC_Bar_lem_gen IC_Bar_stub + libs += IC_Bar_stub + + dynamicflags = IC_BAR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IC_BarEC.cpp + } + + Header_Files { + IC_BarEC.h + IC_Bar_exec_export.h + } + + Inline_Files { + IC_BarEC.inl + } +} + +project(IC_Bar_svnt) : ciao_servant { + sharedname = IC_Bar_svnt + after += IC_Bar_exec IC_Foo_exec IC_Bar_stub IC_Foo_svnt IC_Foo_stub + libs += IC_Bar_exec IC_Foo_exec IC_Bar_stub IC_Foo_svnt IC_Foo_stub + + dynamicflags = IC_BAR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IC_BarS.cpp + IC_Bar_svnt.cpp + } + + Header_Files { + IC_BarS.h + IC_Bar_svnt.h + IC_Bar_svnt_export.h + } + + Inline_Files { + IC_BarS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.idl b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.idl new file mode 100644 index 00000000000..13d2785b3d2 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.idl @@ -0,0 +1,12 @@ +// $Id$ +#ifndef IC_Foo_IDL +#define IC_Foo_IDL + +#include + +component Foo +{ +}; + + +#endif diff --git a/modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.mpc b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.mpc new file mode 100644 index 00000000000..7ab7e183409 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Included_Component/IC_Foo.mpc @@ -0,0 +1,104 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl IC_Foo" + +project(IC_Foo_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=IC_FOO_STUB_Export \ + -Wb,stub_export_include=IC_Foo_stub_export.h \ + -Wb,skel_export_macro=IC_FOO_SVNT_Export \ + -Wb,skel_export_include=IC_Foo_svnt_export.h \ + -Wb,exec_export_macro=IC_FOO_EXEC_Export \ + -Wb,exec_export_include=IC_Foo_exec_export.h + + IDL_Files { + IC_Foo.idl + } +} + +project(IC_Foo_lem_gen) : ciaoidldefaults { + after += IC_Foo_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=IC_FOO_EXEC_Export \ + -Wb,export_include=IC_Foo_exec_export.h \ + -SS + + IDL_Files { + IC_FooE.idl + } +} + +project(IC_Foo_stub) : ccm_stub { + after += IC_Foo_idl_gen + libs += + + sharedname = IC_Foo_stub + dynamicflags = IC_FOO_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IC_FooC.cpp + } + + Header_Files { + IC_FooC.h + IC_Foo_stub_export.h + } + + Inline_Files { + IC_FooC.inl + } +} + +project(IC_Foo_exec) : ciao_executor { + sharedname = IC_Foo_exec + after += IC_Foo_lem_gen IC_Foo_stub + libs += IC_Foo_stub + + dynamicflags = IC_FOO_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IC_FooEC.cpp + } + + Header_Files { + IC_FooEC.h + IC_Foo_exec_export.h + } + + Inline_Files { + IC_FooEC.inl + } +} + +project(IC_Foo_svnt) : ciao_servant { + sharedname = IC_Foo_svnt + after += IC_Foo_exec + libs += IC_Foo_stub IC_Foo_exec + + dynamicflags = IC_FOO_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IC_FooS.cpp + IC_Foo_svnt.cpp + } + + Header_Files { + IC_FooS.h + IC_Foo_svnt.h + IC_Foo_svnt_export.h + } + + Inline_Files { + IC_FooS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.idl b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.idl new file mode 100644 index 00000000000..94804cd867b --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.idl @@ -0,0 +1,9 @@ +// $Id$ + +#include +#include "IhC_Foo.idl" +#include "IhC_FooE.idl" + +component Bar : Foo +{ +}; diff --git a/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.mpc b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.mpc new file mode 100644 index 00000000000..2e73abdfef6 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Bar.mpc @@ -0,0 +1,137 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p IhC_Foo IhC_Bar" + +project(IhC_Foo_IhC_Bar_idl_gen) : componentidldefaults { + requires += dummy_label + custom_only = 1 + after += IhC_Foo_idl_gen + idlflags += -Wb,stub_export_macro=IHC_BAR_STUB_Export \ + -Wb,stub_export_include=IhC_Bar_stub_export.h \ + -Wb,skel_export_macro=IHC_BAR_SVNT_Export \ + -Wb,skel_export_include=IhC_Bar_svnt_export.h \ + -Wb,exec_export_macro=IHC_BAR_EXEC_Export \ + -Wb,exec_export_include=IhC_Bar_exec_export.h + + IDL_Files { + IhC_Bar.idl + } +} + +project(IhC_Foo_IhC_Bar_lem_gen) : ciaoidldefaults { + requires += dummy_label + after += IhC_Foo_IhC_Bar_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=IHC_BAR_LEM_STUB_Export \ + -Wb,stub_export_include=IhC_Bar_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + IhC_BarE.idl + } +} + +project(IhC_Foo_IhC_Bar_lem_stub) : ccm_svnt { + requires += dummy_label + after += IhC_Foo_IhC_Bar_lem_gen IhC_Foo_IhC_Bar_stub IhC_Foo_stub + libs += IhC_Foo_stub IhC_Bar_stub + + sharedname = IhC_Bar_lem_stub + dynamicflags = IHC_BAR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_BarEC.cpp + } + + Header_Files { + IhC_BarEC.h + IhC_Bar_lem_stub_export.h + } + + Inline_Files { + IhC_BarEC.inl + } +} + +project(IhC_Foo_IhC_Bar_stub) : ccm_stub { + requires += dummy_label + after += IhC_Foo_IhC_Bar_idl_gen IhC_Foo_stub + libs += IhC_Foo_stub + + sharedname = IhC_Bar_stub + dynamicflags = IHC_BAR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_BarC.cpp + } + + Header_Files { + IhC_BarC.h + IhC_Bar_stub_export.h + } + + Inline_Files { + IhC_BarC.inl + } +} + +project(IhC_Foo_IhC_Bar_exec) : ciao_executor { + requires += dummy_label + after += IhC_Foo_IhC_Bar_lem_stub IhC_Foo_IhC_Bar_stub + sharedname = IhC_Bar_exec + libs += IhC_Bar_stub IhC_Bar_lem_stub IhC_Foo_stub + + dynamicflags = IHC_BAR_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_Bar_exec.cpp + } + + Header_Files { + IhC_Bar_exec.h + IhC_Bar_exec_export.h + } + + Inline_Files { + } +} + + +project(IhC_Foo_IhC_Bar_svnt) : ciao_servant { + requires += dummy_label + after += IhC_Foo_skel IhC_Foo_IhC_Bar_lem_stub + sharedname = IhC_Bar_svnt + libs += IhC_Bar_stub IhC_Bar_lem_stub \ + IhC_Foo_skel \ + IhC_Foo_stub + + dynamicflags = IHC_BAR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_BarS.cpp + IhC_Bar_svnt.cpp + } + + Header_Files { + IhC_BarS.h + IhC_Bar_svnt.h + IhC_Bar_svnt_export.h + } + + Inline_Files { + IhC_BarS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.idl b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.idl new file mode 100644 index 00000000000..34a547ccde9 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.idl @@ -0,0 +1,13 @@ +// $Id$ + +#include + +interface foo_intf +{ +}; + + +component Foo +{ + provides foo_intf foo_port; +}; diff --git a/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.mpc b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.mpc new file mode 100644 index 00000000000..133b5352e00 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Inherited_Component/IhC_Foo.mpc @@ -0,0 +1,132 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl IhC_Foo" + +project(IhC_Foo_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=IHC_FOO_STUB_Export \ + -Wb,stub_export_include=IhC_Foo_stub_export.h \ + -Wb,skel_export_macro=IHC_FOO_SVNT_Export \ + -Wb,skel_export_include=IhC_Foo_svnt_export.h \ + -Wb,exec_export_macro=IHC_FOO_EXEC_Export \ + -Wb,exec_export_include=IhC_Foo_exec_export.h -Gex + + IDL_Files { + IhC_Foo.idl + } +} + +project(IhC_Foo_lem_gen) : ciaoidldefaults { + after += IhC_Foo_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=IHC_FOO_LEM_STUB_Export \ + -Wb,stub_export_include=IhC_Foo_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + IhC_FooE.idl + } +} + +project(IhC_Foo_lem_stub) : ccm_svnt { + after += IhC_Foo_lem_gen IhC_Foo_stub + libs += IhC_Foo_stub + + + sharedname = IhC_Foo_lem_stub + dynamicflags = IHC_FOO_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_FooEC.cpp + } + + Header_Files { + IhC_FooEC.h + IhC_Foo_lem_stub_export.h + } + + Inline_Files { + IhC_FooEC.inl + } +} + +project(IhC_Foo_stub) : ccm_stub { + after += IhC_Foo_idl_gen + libs += + + + sharedname = IhC_Foo_stub + dynamicflags = IHC_FOO_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_FooC.cpp + } + + Header_Files { + IhC_FooC.h + IhC_Foo_stub_export.h + } + + Inline_Files { + IhC_FooC.inl + } +} + +project(IhC_Foo_exec) : ciao_executor { + after += IhC_Foo_lem_stub IhC_Foo_stub + sharedname = IhC_Foo_exec + libs += IhC_Foo_stub IhC_Foo_lem_stub + + + dynamicflags = IHC_FOO_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_Foo_exec.cpp + } + + Header_Files { + IhC_Foo_exec.h + IhC_Foo_exec_export.h + } + + Inline_Files { + } +} + + +project(IhC_Foo_svnt) : ciao_servant { + after += IhC_Foo_lem_stub + sharedname = IhC_Foo_svnt + libs += IhC_Foo_stub IhC_Foo_lem_stub + + + dynamicflags = IHC_FOO_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + IhC_FooS.cpp + IhC_Foo_svnt.cpp + } + + Header_Files { + IhC_FooS.h + IhC_Foo_svnt.h + IhC_Foo_svnt_export.h + } + + Inline_Files { + IhC_FooS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Keywords/Keyword_Clash.idl b/modules/CIAO/tests/IDL_Test/Keywords/Keyword_Clash.idl new file mode 100644 index 00000000000..d78b200cddd --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Keywords/Keyword_Clash.idl @@ -0,0 +1,110 @@ +// $Id$ +/** + * @file Keyword_Clash.idl + * @author Jeff Parsons + * + * Tests handling of C++ keywords and escaped identifiers (IDL + * keywords) in generating CIAO servant code and executor IDL. + */ + +#ifndef KEYWORD_CLASH_IDL +#define KEYWORD_CLASH_IDL + +#include "Components.idl" + +module _interface +{ + interface _attribute + { + exception _inout {}; + }; +}; + +module static +{ + module _readonly + { + module protected + { + interface virtual + { + }; + + interface _port + { + }; + + interface _alias + { + }; + + interface _mirrorport + { + }; + + interface _porttype + { + }; + + interface _connector + { + }; + + eventtype _eventtype + { + private virtual _public; + }; + }; + }; +}; + +eventtype _eventtype +{ + public string _factory; + private string friend; + public string _wstring; +}; + +interface _oneway {}; + +module _component +{ + component _out supports static::_readonly::protected::virtual + { + provides _interface::_attribute _local; + provides _oneway else; + provides static::_readonly::protected::virtual while; + + attribute long _abstract; + + uses multiple _interface::_attribute if; + uses multiple _oneway mutable; + uses multiple static::_readonly::protected::virtual register; + + uses _interface::_attribute _union; + uses _oneway _struct; + uses static::_readonly::protected::virtual volatile; + + publishes _eventtype _object; + publishes static::_readonly::protected::_eventtype do; + + consumes _eventtype _const; + consumes static::_readonly::protected::_eventtype const_cast; + + emits _eventtype class; + emits static::_readonly::protected::_eventtype delete; + }; + + home new manages _out + { + static::_readonly::protected::virtual + catch ( + inout static::_readonly::protected::_eventtype try) + raises (_interface::_attribute::_inout); + + finder continue (in _interface::_attribute _inout); + }; +}; + +#endif /* KEYWORD_CLASH_IDL */ + diff --git a/modules/CIAO/tests/IDL_Test/Keywords/Keywords.mpc b/modules/CIAO/tests/IDL_Test/Keywords/Keywords.mpc new file mode 100644 index 00000000000..5778561bf53 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Keywords/Keywords.mpc @@ -0,0 +1,109 @@ +// -*- MPC -*- +// $Id$ + +project(Keyword_Clash_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=KEYWORD_CLASH_STUB_Export \ + -Wb,stub_export_include=Keyword_Clash_stub_export.h \ + -Wb,skel_export_macro=KEYWORD_CLASH_SVNT_Export \ + -Wb,skel_export_include=Keyword_Clash_svnt_export.h \ + -Wb,exec_export_macro=KEYWORD_CLASH_EXEC_Export \ + -Wb,exec_export_include=Keyword_Clash_exec_export.h \ + -Gex -Gxhst -Gxhsk -Gxhex + + IDL_Files { + Keyword_Clash.idl + } +} + +project(Keyword_Clash_lem_gen) : ciaoidldefaults { + after += Keyword_Clash_idl_gen + custom_only = 1 + idlflags += -Wb,export_macro=KEYWORD_CLASH_EXEC_Export \ + -Wb,export_include=Keyword_Clash_exec_export.h \ + -SS + + IDL_Files { + Keyword_ClashE.idl + } +} + +project(Keyword_Clash_stub) : ccm_stub { + avoids += mfc + after += Keyword_Clash_idl_gen + sharedname = Keyword_Clash_stub + dynamicflags = KEYWORD_CLASH_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyword_ClashC.cpp + } + + Header_Files { + Keyword_ClashC.h + Keyword_Clash_stub_export.h + } + + Inline_Files { + Keyword_ClashC.inl + } +} + +project(Keyword_Clash_exec) : ciao_executor { + avoids += mfc + after += Keyword_Clash_lem_gen Keyword_Clash_stub + sharedname = Keyword_Clash_exec + libs += Keyword_Clash_stub + + dynamicflags = KEYWORD_CLASH_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyword_ClashEC.cpp + Keyword_Clash_exec.cpp + } + + Header_Files { + Keyword_ClashEC.h + Keyword_Clash_exec.h + Keyword_Clash_exec_export.h + } + + Inline_Files { + Keyword_ClashEC.inl + } +} + +project(Keyword_Clash_svnt) : ciao_servant { + avoids += mfc + after += Keyword_Clash_exec + sharedname = Keyword_Clash_svnt + libs += Keyword_Clash_exec \ + Keyword_Clash_stub + + dynamicflags = KEYWORD_CLASH_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Keyword_ClashS.cpp + Keyword_Clash_svnt.cpp + } + + Header_Files { + Keyword_ClashS.h + Keyword_Clash_svnt.h + Keyword_Clash_svnt_export.h + } + + Inline_Files { + Keyword_ClashS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.idl b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.idl new file mode 100644 index 00000000000..28248068aff --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.idl @@ -0,0 +1,8 @@ + +// $Id$ + +#include + +component Foo +{ +}; diff --git a/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc new file mode 100644 index 00000000000..a5eeaa65369 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export.mpc @@ -0,0 +1,128 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl Lem_Export" + +project(Lem_Export_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=LEM_EXPORT_STUB_Export \ + -Wb,stub_export_include=Lem_Export_stub_export.h \ + -Wb,skel_export_macro=LEM_EXPORT_SVNT_Export \ + -Wb,skel_export_include=Lem_Export_svnt_export.h \ + -Wb,exec_export_macro=LEM_EXPORT_EXEC_Export \ + -Wb,exec_export_include=Lem_Export_exec_export.h + + IDL_Files { + Lem_Export.idl + } +} + +project(Lem_Export_lem_gen) : ciaoidldefaults { + after += Lem_Export_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=LEM_EXPORT_LEM_STUB_Export \ + -Wb,stub_export_include=Lem_Export_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + Lem_ExportE.idl + } +} + +project(Lem_Export_stub) : ccm_stub { + after += Lem_Export_idl_gen + libs += + + sharedname = Lem_Export_stub + dynamicflags = LEM_EXPORT_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Lem_ExportC.cpp + } + + Header_Files { + Lem_ExportC.h + Lem_Export_stub_export.h + } + + Inline_Files { + Lem_ExportC.inl + } +} + +project(Lem_Export_lem_stub) : ccm_svnt { + after += Lem_Export_lem_gen + libs += + + sharedname = Lem_Export_lem_stub + dynamicflags = LEM_EXPORT_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Lem_ExportEC.cpp + } + + Header_Files { + Lem_ExportEC.h + Lem_Export_lem_stub_export.h + } + + Inline_Files { + Lem_ExportEC.inl + } +} + +project(Lem_Export_exec) : ciao_executor { + after += Lem_Export_lem_stub Lem_Export_stub + sharedname = Lem_Export_exec + libs += Lem_Export_stub Lem_Export_lem_stub + + dynamicflags = LEM_EXPORT_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Lem_Export_exec.cpp + } + + Header_Files { + Lem_Export_exec.h + Lem_Export_exec_export.h + } + + Inline_Files { + } +} + + +project(Lem_Export_svnt) : ciao_servant { + after += Lem_Export_lem_stub Lem_Export_stub + sharedname = Lem_Export_svnt + libs += Lem_Export_stub Lem_Export_lem_stub + + dynamicflags = LEM_EXPORT_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Lem_ExportS.cpp + Lem_Export_svnt.cpp + } + + Header_Files { + Lem_ExportS.h + Lem_Export_svnt.h + Lem_Export_svnt_export.h + } + + Inline_Files { + Lem_ExportS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.cpp b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.cpp new file mode 100644 index 00000000000..d9d5eaf0928 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.cpp @@ -0,0 +1,106 @@ +// -*- C++ -*- +// +// $Id$ + +// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 **** +// TAO and the TAO IDL Compiler have been developed by: +// Center for Distributed Object Computing +// Washington University +// St. Louis, MO +// USA +// http://www.cs.wustl.edu/~schmidt/doc-center.html +// and +// Distributed Object Computing Laboratory +// University of California at Irvine +// Irvine, CA +// USA +// http://doc.ece.uci.edu/ +// and +// Institute for Software Integrated Systems +// Vanderbilt University +// Nashville, TN +// USA +// http://www.isis.vanderbilt.edu/ +// +// Information about TAO is available at: +// http://www.cs.wustl.edu/~schmidt/TAO.html + +// TAO_IDL - Generated from +// be/be_codegen.cpp:1278 + +#include "Lem_Export_exec.h" + +namespace CIAO_Foo_Impl +{ + //============================================================ + // Component Executor Implementation Class: Foo_exec_i + //============================================================ + + Foo_exec_i::Foo_exec_i (void) + { + } + + Foo_exec_i::~Foo_exec_i (void) + { + } + + // Supported operations and attributes. + + // Component attributes. + + // Port operations. + + // Operations from Components::SessionComponent. + + void + Foo_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::CCM_Foo_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Foo_exec_i::configuration_complete (void) + { + /* Your code here. */ + } + + void + Foo_exec_i::ccm_activate (void) + { + /* Your code here. */ + } + + void + Foo_exec_i::ccm_passivate (void) + { + /* Your code here. */ + } + + void + Foo_exec_i::ccm_remove (void) + { + /* Your code here. */ + } + + extern "C" LEM_EXPORT_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Foo_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN ( + retval, + Foo_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.h b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.h new file mode 100644 index 00000000000..a60906d3aa5 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Lem_Specific_Export/Lem_Export_exec.h @@ -0,0 +1,84 @@ +// -*- C++ -*- +// +// $Id$ + +// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 **** +// TAO and the TAO IDL Compiler have been developed by: +// Center for Distributed Object Computing +// Washington University +// St. Louis, MO +// USA +// http://www.cs.wustl.edu/~schmidt/doc-center.html +// and +// Distributed Object Computing Laboratory +// University of California at Irvine +// Irvine, CA +// USA +// http://doc.ece.uci.edu/ +// and +// Institute for Software Integrated Systems +// Vanderbilt University +// Nashville, TN +// USA +// http://www.isis.vanderbilt.edu/ +// +// Information about TAO is available at: +// http://www.cs.wustl.edu/~schmidt/TAO.html + +// TAO_IDL - Generated from +// be/be_codegen.cpp:1217 + +#ifndef CIAO_LEM_EXPORT_EXEC_H_ +#define CIAO_LEM_EXPORT_EXEC_H_ + +#include /**/ "ace/pre.h" + +#include "Lem_ExportEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Lem_Export_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Foo_Impl +{ + class LEM_EXPORT_EXEC_Export Foo_exec_i + : public virtual Foo_Exec, + public virtual ::CORBA::LocalObject + { + public: + Foo_exec_i (void); + virtual ~Foo_exec_i (void); + + // Supported operations and attributes. + + // Component attributes. + + // Port operations. + + // Operations from Components::SessionComponent. + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + private: + ::CCM_Foo_Context_var context_; + }; + + extern "C" LEM_EXPORT_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Foo_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ + diff --git a/modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.idl b/modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.idl new file mode 100644 index 00000000000..b56142dbf2d --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.idl @@ -0,0 +1,14 @@ +// $Id$ + +#include +#include "tao/StringSeq.pidl" + +interface foo_intf +{ + typedef sequence MyStringSeq; +}; + +component Foo +{ + provides foo_intf foo_port; +}; diff --git a/modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.mpc b/modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.mpc new file mode 100644 index 00000000000..c790417197e --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/PIDL_Include/PIDLInclude.mpc @@ -0,0 +1,131 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl PIDLInclude" + +project(PIDLInclude_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=PIDLINCLUDE_STUB_Export \ + -Wb,stub_export_include=PIDLInclude_stub_export.h \ + -Wb,skel_export_macro=PIDLINCLUDE_SVNT_Export \ + -Wb,skel_export_include=PIDLInclude_svnt_export.h \ + -Wb,exec_export_macro=PIDLINCLUDE_EXEC_Export \ + -Wb,exec_export_include=PIDLInclude_exec_export.h -Gex + + IDL_Files { + PIDLInclude.idl + } +} + +project(PIDLInclude_lem_gen) : ciaoidldefaults { + after += PIDLInclude_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=PIDLINCLUDE_LEM_STUB_Export \ + -Wb,stub_export_include=PIDLInclude_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + PIDLIncludeE.idl + } +} + +project(PIDLInclude_lem_stub) : ccm_svnt { + after += PIDLInclude_lem_gen PIDLInclude_stub + libs += PIDLInclude_stub + + sharedname = PIDLInclude_lem_stub + dynamicflags = PIDLINCLUDE_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PIDLIncludeEC.cpp + } + + Header_Files { + PIDLIncludeEC.h + PIDLInclude_lem_stub_export.h + } + + Inline_Files { + PIDLIncludeEC.inl + } +} + +project(PIDLInclude_stub) : ccm_stub { + after += PIDLInclude_idl_gen + libs += + + + sharedname = PIDLInclude_stub + dynamicflags = PIDLINCLUDE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PIDLIncludeC.cpp + } + + Header_Files { + PIDLIncludeC.h + PIDLInclude_stub_export.h + } + + Inline_Files { + PIDLIncludeC.inl + } +} + +project(PIDLInclude_exec) : ciao_executor { + after += PIDLInclude_lem_stub PIDLInclude_stub + sharedname = PIDLInclude_exec + libs += PIDLInclude_stub PIDLInclude_lem_stub + + + dynamicflags = PIDLINCLUDE_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PIDLInclude_exec.cpp + } + + Header_Files { + PIDLInclude_exec.h + PIDLInclude_exec_export.h + } + + Inline_Files { + } +} + + +project(PIDLInclude_svnt) : ciao_servant { + after += PIDLInclude_lem_stub + sharedname = PIDLInclude_svnt + libs += PIDLInclude_stub PIDLInclude_lem_stub + + + dynamicflags = PIDLINCLUDE_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + PIDLIncludeS.cpp + PIDLInclude_svnt.cpp + } + + Header_Files { + PIDLIncludeS.h + PIDLInclude_svnt.h + PIDLInclude_svnt_export.h + } + + Inline_Files { + PIDLIncludeS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.idl b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.idl new file mode 100644 index 00000000000..4e686a47fab --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.idl @@ -0,0 +1,54 @@ +// $Id$ +//============================================================================= +/** + * @file Basic.idl + * + * Definition of events, and common interfaces used in the BasicSP module. + * + * @author Balachandran Natarajan + * Jeff Parsons + */ +//============================================================================= + +#ifndef CIAO_BASIC_IDL +#define CIAO_BASIC_IDL + +#include + +module Extra +{ + exception NoReason {}; + exception NoRhyme {}; + + interface Superfluous + { + attribute string useless_attr; + long superfluous_op (in string empty_arg) + raises (NoReason); + }; + + interface Supernumerary + { + void supernumerary_op (out string dummy_arg) + raises (NoRhyme, NoReason); + }; +}; + +module Basic +{ + interface ReadData : Extra::Superfluous + { + string get_data (); + }; + + interface AnalyzeData + { + void perform_analysis (inout string data); + attribute boolean fine_tooth_comb; + }; + + eventtype TimeOut {}; + eventtype DataAvailable {}; +}; + +#endif /* CIAO_BASIC_IDL */ diff --git a/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.mpc b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.mpc new file mode 100644 index 00000000000..4e70cbe8ac3 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Basic.mpc @@ -0,0 +1,82 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Basic" + +project(Reused_Facet_Interface_Basic_idl_gen) : ciaoidldefaults, anytypecode { + custom_only = 1 + idlflags += -Wb,stub_export_macro=BASIC_STUB_Export \ + -Wb,stub_export_include=Basic_stub_export.h \ + -Wb,skel_export_macro=BASIC_SKEL_Export \ + -Wb,skel_export_include=Basic_skel_export.h \ + -Gxhst -Gxhsk -Glem + + IDL_Files { + Basic.idl + } +} + +project(Reused_Facet_Interface_Basic_lem_gen) : ciaoidldefaults, anytypecode { + custom_only = 1 + after += Reused_Facet_Interface_Basic_idl_gen + idlflags += -Wb,stub_export_macro=BASIC_STUB_Export \ + -Wb,stub_export_include=Basic_stub_export.h \ + -Wb,skel_export_macro=BASIC_SKEL_Export \ + -Wb,skel_export_include=Basic_skel_export.h \ + -Gxhst + + IDL_Files { + BasicE.idl + } +} + +project(Reused_Facet_Interface_Basic_stub) : ccm_stub { + after += Reused_Facet_Interface_Basic_lem_gen + libs += + + sharedname = Basic_stub + dynamicflags = BASIC_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BasicC.cpp + BasicEC.cpp + } + + Header_Files { + BasicC.h + Basic_stub_export.h + } + + Inline_Files { + BasicC.inl + } +} + + +project(Reused_Facet_Interface_Basic_skel) : ciao_executor { + after += Reused_Facet_Interface_Basic_stub + sharedname = Basic_skel + libs += Basic_stub + + + dynamicflags = BASIC_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + BasicS.cpp + } + + Header_Files { + BasicS.h + Basic_skel_export.h + } + + Inline_Files { + BasicS.inl + } +} + + diff --git a/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/CodeGen.idl b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/CodeGen.idl new file mode 100644 index 00000000000..b55848abaa8 --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/CodeGen.idl @@ -0,0 +1,47 @@ +//$Id$ + +#include "Basic.idl" +#include "BasicE.idl" + +module Basic +{ + component Base supports Extra::Supernumerary, Extra::Superfluous + { + provides ReadData data_read; + attribute boolean is_not_necessary; + }; + + component CodeGen : Base + { + provides ReadData data_out; + uses ReadData data_in; + publishes DataAvailable out_avail; + consumes DataAvailable in_avail; + provides AnalyzeData data_crunch; + + readonly attribute boolean is_necessary; + }; + + home BaseHome supports Extra::Supernumerary manages Base + { + void base_do_nothing (); + + factory create_no_base (in long fake_id) + raises (Extra::NoRhyme); + + finder find_no_base (); + + readonly attribute boolean is_useful; + }; + + home CodeGenHome : BaseHome manages CodeGen + { + factory create_no_derived (); + + finder find_no_derived (); + + attribute boolean is_not_useful; + + string do_nothing (); + }; +}; diff --git a/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/README b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/README new file mode 100644 index 00000000000..b25ef8cfd1a --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/README @@ -0,0 +1,12 @@ + +Reused Facet Interface Test +=========================== + +This test uses IDL that contains a variety of port, attribute, +operation, factory and finder definitions, some inherited. The +main focus of the test, however, is the reuse of the same +interface for two different facet ports. The facet servant class, +and facet executor IDL interface must be generated only once. + +Jeff Parsons +June 16, 2009 \ No newline at end of file diff --git a/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc new file mode 100644 index 00000000000..fdb07b403ca --- /dev/null +++ b/modules/CIAO/tests/IDL_Test/Reused_Facet_Interface/Reused_Facet_Interface.mpc @@ -0,0 +1,112 @@ +// $Id$ +// + +project(Reused_Facet_Interface_idl_gen) : componentidldefaults { + after += Reused_Facet_Interface_Basic_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=CODEGEN_STUB_Export \ + -Wb,stub_export_include=CodeGen_stub_export.h \ + -Wb,skel_export_macro=CODEGEN_SVNT_Export \ + -Wb,skel_export_include=CodeGen_svnt_export.h \ + -Wb,exec_export_macro=CODEGEN_EXEC_Export \ + -Wb,exec_export_include=CodeGen_exec_export.h \ + -Gex + + IDL_Files { + CodeGen.idl + } +} + +project(Reused_Facet_Interface_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Reused_Facet_Interface_idl_gen + idlflags += -Wb,export_macro=CODEGEN_EXEC_Export \ + -Wb,export_include=CodeGen_exec_export.h \ + -SS + + IDL_Files { + CodeGenE.idl + } +} + +project(Reused_Facet_Interface_stub) : ccm_stub { + after += Reused_Facet_Interface_idl_gen Reused_Facet_Interface_Basic_stub + libs += Basic_stub + + sharedname = CodeGen_stub + dynamicflags = CODEGEN_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CodeGenC.cpp + } + + Header_Files { + CodeGenC.h + CodeGen_stub_export.h + } + + Inline_Files { + CodeGenC.inl + } +} + +project(Reused_Facet_Interface_exec) : ciao_executor { + after += Reused_Facet_Interface_lem_gen Reused_Facet_Interface_stub + sharedname = CodeGen_exec + libs += CodeGen_stub Basic_stub + + dynamicflags = CODEGEN_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CodeGenEC.cpp + CodeGen_exec.cpp + } + + Header_Files { + CodeGenEC.h + CodeGen_exec.h + CodeGen_exec_export.h + } + + Inline_Files { + CodeGenEC.inl + } +} + + +project(Reused_Facet_Interface_svnt) : ciao_servant { + after += Reused_Facet_Interface_Basic_skel Reused_Facet_Interface_exec + sharedname = CodeGen_svnt + libs += CodeGen_exec \ + CodeGen_stub \ + Basic_skel \ + Basic_stub + + dynamicflags = CODEGEN_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + CodeGenS.cpp + CodeGen_svnt.cpp + } + + Header_Files { + CodeGenS.h + CodeGen_svnt.h + CodeGen_svnt_export.h + } + + Inline_Files { + CodeGenS.inl + } +} + + diff --git a/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl new file mode 100644 index 00000000000..e82cb0066a8 --- /dev/null +++ b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl @@ -0,0 +1,17 @@ +//$Id$: + +#ifndef CIAO_MINIMUM_IDL +#define CIAO_MINIMUM_IDL + +#include + +module Minimum +{ + interface ReadMessage + { + void foo (); + }; + +}; + +#endif /* CIAO_MINIMUM_IDL */ diff --git a/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.mpc b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.mpc new file mode 100644 index 00000000000..75d5225a022 --- /dev/null +++ b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.mpc @@ -0,0 +1,65 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -n Minimum_Base" + +project(Minimum_Base_idl_gen) : ciaoidldefaults, anytypecode, ccm { + custom_only = 1 + idlflags += -Wb,stub_export_macro=MINIMUM_BASE_STUB_Export \ + -Wb,stub_export_include=Minimum_Base_stub_export.h \ + -Wb,skel_export_macro=MINIMUM_BASE_SKEL_Export \ + -Wb,skel_export_include=Minimum_Base_skel_export.h -Gxhst -Gxhsk + + IDL_Files { + Minimum_Base.idl + } +} + +project(Minimum_Base_stub) : ccm_stub { + after += Minimum_Base_idl_gen + libs += + + sharedname = Minimum_Base_stub + dynamicflags = MINIMUM_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Minimum_BaseC.cpp + } + + Header_Files { + Minimum_BaseC.h + Minimum_Base_stub_export.h + } + + Inline_Files { + Minimum_BaseC.inl + } +} + +project(Minimum_Base_skel) : ccm_stub, portableserver { + after += Minimum_Base_stub + sharedname = Minimum_Base_skel + libs += Minimum_Base_stub + + + dynamicflags = MINIMUM_BASE_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Minimum_BaseS.cpp + } + + Header_Files { + Minimum_BaseS.h + Minimum_Base_skel_export.h + } + + Inline_Files { + Minimum_BaseS.inl + } +} + + diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver.idl b/modules/CIAO/tests/Minimum/Receiver/Receiver.idl new file mode 100644 index 00000000000..219baec17d0 --- /dev/null +++ b/modules/CIAO/tests/Minimum/Receiver/Receiver.idl @@ -0,0 +1,18 @@ +//$Id$: + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "../Minimum_Base/Minimum_Base.idl" + +module Minimum +{ + component Receiver + { + }; + + home ReceiverHome manages Receiver + { + }; +}; +#endif /*RECEIVER_IDL*/ diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver.mpc b/modules/CIAO/tests/Minimum/Receiver/Receiver.mpc new file mode 100644 index 00000000000..0bd74e3971f --- /dev/null +++ b/modules/CIAO/tests/Minimum/Receiver/Receiver.mpc @@ -0,0 +1,134 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Minimum_Base Receiver" + +project(Minimum_Base_Receiver_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h + + IDL_Files { + Receiver.idl + } +} + +project(Minimum_Base_Receiver_lem_gen) : ciaoidldefaults { + after += Minimum_Base_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + ReceiverE.idl + } +} + +project(Minimum_Base_Receiver_lem_stub) : ccm_svnt { + after += Minimum_Base_Receiver_lem_gen Minimum_Base_Receiver_stub Minimum_Base_stub + libs += Minimum_Base_stub Receiver_stub + libpaths += ../Minimum_Base + + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverEC.cpp + } + + Header_Files { + ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + ReceiverEC.inl + } +} + +project(Minimum_Base_Receiver_stub) : ccm_stub { + after += Minimum_Base_Receiver_idl_gen Minimum_Base_stub + libs += Minimum_Base_stub + libpaths += ../Minimum_Base + + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverC.cpp + } + + Header_Files { + ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + ReceiverC.inl + } +} + +project(Minimum_Base_Receiver_exec) : ciao_executor { + after += Minimum_Base_Receiver_lem_stub Minimum_Base_Receiver_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub Minimum_Base_stub + libpaths += ../Minimum_Base + + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Receiver_exec.cpp + } + + Header_Files { + Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(Minimum_Base_Receiver_svnt) : ciao_servant { + after += Minimum_Base_skel Minimum_Base_Receiver_lem_stub + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub \ + Minimum_Base_skel \ + Minimum_Base_stub + libpaths += ../Minimum_Base + + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverS.cpp + Receiver_svnt.cpp + } + + Header_Files { + ReceiverS.h + Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + ReceiverS.inl + } +} + + diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp new file mode 100644 index 00000000000..ebbcafa6645 --- /dev/null +++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp @@ -0,0 +1,114 @@ +// $Id$ + +#include "Receiver_exec.h" + +namespace CIAO_Minimum_Receiver_Impl +{ + //================================================================== + // Component Executor Implementation Class: Receiver_exec_i + //================================================================== + + Receiver_exec_i::Receiver_exec_i (void) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Minimum::CCM_Receiver_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete () + { + // Your code here. + } + + void + Receiver_exec_i::ccm_activate () + { + // Your code here. + } + + void + Receiver_exec_i::ccm_passivate () + { + // Your code here. + } + + void + Receiver_exec_i::ccm_remove () + { + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: ReceiverHome_exec_i + //================================================================== + + ReceiverHome_exec_i::ReceiverHome_exec_i (void) + { + } + + ReceiverHome_exec_i::~ReceiverHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + ReceiverHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Receiver_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Minimum_ReceiverHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + ReceiverHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h new file mode 100644 index 00000000000..ebbf3b13a73 --- /dev/null +++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H +#define CIAO_RECEIVER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "ReceiverEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Receiver_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Minimum_Receiver_Impl +{ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + // Supported or inherited operations. + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Minimum::CCM_Receiver_Context_var context_; + }; + + class RECEIVER_EXEC_Export ReceiverHome_exec_i + : public virtual ReceiverHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + ReceiverHome_exec_i (void); + virtual ~ReceiverHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Minimum_ReceiverHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_RECEIVER_EXEC_H */ + diff --git a/modules/CIAO/tests/Minimum/Sender/Sender.idl b/modules/CIAO/tests/Minimum/Sender/Sender.idl new file mode 100644 index 00000000000..74b9bf76f9a --- /dev/null +++ b/modules/CIAO/tests/Minimum/Sender/Sender.idl @@ -0,0 +1,28 @@ +//$Id$ + +#ifndef CIAO_SENDER_IDL +#define CIAO_SENDER_IDL + + +#include "../Minimum_Base/Minimum_Base.idl" + +module Minimum +{ + /* This is a Sender specific interface which will be used to get the + * process start. + */ + + interface trigger + { + void bar (); + }; + + component Sender supports trigger + { + }; + + home SenderHome manages Sender + { + }; +}; +#endif /*CIAO_SENDER_IDL*/ diff --git a/modules/CIAO/tests/Minimum/Sender/Sender.mpc b/modules/CIAO/tests/Minimum/Sender/Sender.mpc new file mode 100644 index 00000000000..3e1aea88bac --- /dev/null +++ b/modules/CIAO/tests/Minimum/Sender/Sender.mpc @@ -0,0 +1,113 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p Minimum_Base Sender" + +project(Minimum_Base_Sender_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + + IDL_Files { + Sender.idl + } +} + +project(Minimum_Base_Sender_lem_gen) : ciaoidldefaults { + custom_only = 1 + after += Minimum_Base_Sender_idl_gen + idlflags += -Wb,export_macro=SENDER_EXEC_Export \ + -Wb,export_include=Sender_exec_export.h \ + -SS + + IDL_Files { + SenderE.idl + } +} + +project(Minimum_Base_Sender_stub) : ccm_stub { + after += Minimum_Base_Sender_idl_gen Minimum_Base_stub + libs += Minimum_Base_stub + libpaths += ../Minimum_Base + + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderC.cpp + } + + Header_Files { + SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SenderC.inl + } +} + +project(Minimum_Base_Sender_exec) : ciao_executor { + after += Minimum_Base_Sender_lem_gen Minimum_Base_Sender_stub + sharedname = Sender_exec + libs += Sender_stub Minimum_Base_stub + libpaths += ../Minimum_Base + + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderEC.cpp + Sender_exec.cpp + } + + Header_Files { + SenderEC.h + Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + SenderEC.inl + } +} + + +project(Minimum_Base_Sender_svnt) : ciao_servant { + after += Minimum_Base_skel Minimum_Base_Sender_exec + sharedname = Sender_svnt + libs += Sender_exec \ + Sender_stub \ + Minimum_Base_skel \ + Minimum_Base_stub + libpaths += ../Minimum_Base + + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderS.cpp + Sender_svnt.cpp + } + + Header_Files { + SenderS.h + Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + SenderS.inl + } +} + + diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp b/modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp new file mode 100644 index 00000000000..94b19b58d0e --- /dev/null +++ b/modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp @@ -0,0 +1,120 @@ +// $Id$ + +#include "Sender_exec.h" + +namespace CIAO_Minimum_Sender_Impl +{ + //================================================================== + // Component Executor Implementation Class: Sender_exec_i + //================================================================== + + Sender_exec_i::Sender_exec_i (void) + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported or inherited operations. + + void + Sender_exec_i::bar () + { + // Your code here. + } + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + void + Sender_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Minimum::CCM_Sender_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete () + { + // Your code here. + } + + void + Sender_exec_i::ccm_activate () + { + // Your code here. + } + + void + Sender_exec_i::ccm_passivate () + { + // Your code here. + } + + void + Sender_exec_i::ccm_remove () + { + // Your code here. + } + + //================================================================== + // Home Executor Implementation Class: SenderHome_exec_i + //================================================================== + + SenderHome_exec_i::SenderHome_exec_i (void) + { + } + + SenderHome_exec_i::~SenderHome_exec_i (void) + { + } + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + ::Components::EnterpriseComponent_ptr + SenderHome_exec_i::create () + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_THROW_EX ( + retval, + Sender_exec_i, + ::CORBA::NO_MEMORY ()); + + return retval; + } + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Minimum_SenderHome_Impl (void) + { + ::Components::HomeExecutorBase_ptr retval = + ::Components::HomeExecutorBase::_nil (); + + ACE_NEW_RETURN ( + retval, + SenderHome_exec_i, + ::Components::HomeExecutorBase::_nil ()); + + return retval; + } +} + diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_exec.h b/modules/CIAO/tests/Minimum/Sender/Sender_exec.h new file mode 100644 index 00000000000..f44c6e64026 --- /dev/null +++ b/modules/CIAO/tests/Minimum/Sender/Sender_exec.h @@ -0,0 +1,83 @@ +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H +#define CIAO_SENDER_EXEC_H + +#include /**/ "ace/pre.h" + +#include "SenderEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "Sender_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Minimum_Sender_Impl +{ + class SENDER_EXEC_Export Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + // Supported or inherited operations. + + virtual void + bar (); + + // Attribute operations. + + // Port operations. + + // Operations from Components::SessionComponent + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (); + + virtual void ccm_activate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + private: + ::Minimum::CCM_Sender_Context_var context_; + }; + + class SENDER_EXEC_Export SenderHome_exec_i + : public virtual SenderHome_Exec, + public virtual ::CORBA::LocalObject + { + public: + SenderHome_exec_i (void); + virtual ~SenderHome_exec_i (void); + + // Supported or inherited operations. + + // Home operations. + + // Factory and finder operations. + + // Attribute operations. + + // Implicit operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + }; + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + create_Minimum_SenderHome_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_SENDER_EXEC_H */ + diff --git a/modules/CIAO/tests/tests.mwc b/modules/CIAO/tests/tests.mwc new file mode 100644 index 00000000000..6479880bd23 --- /dev/null +++ b/modules/CIAO/tests/tests.mwc @@ -0,0 +1,9 @@ +// -*- MPC -*- +// $Id$ + +workspace { + exclude { + RTCCM + } + +} \ No newline at end of file diff --git a/modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc b/modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc new file mode 100644 index 00000000000..1b001b04943 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc @@ -0,0 +1,66 @@ +// -*- MPC -*- +// $Id$ + +project(TAO_IDL3_TO_IDL2_BE) : acelib, install, ciao_output, crosscompile, tao_idl_fe { + sharedname = TAO_IDL3_TO_IDL2_BE + dynamicflags = TAO_IDL3_TO_IDL2_BE_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + Source_Files { + basic_visitor.cpp + be_global.cpp + be_helper.cpp + be_init.cpp + be_produce.cpp + be_sunsoft.cpp + checking_visitor.cpp + identifier_helper.cpp + idl3_to_idl2_visitor.cpp + } + + Header_Files { + basic_visitor.h + be_extern.h + be_global.h + be_helper.h + be_sunsoft.h + checking_visitor.h + identifier_helper.h + idl3_to_idl2_visitor.h + TAO_IDL3_TO_IDL2_BE_Export.h + } +} + +project(TAO_IDL3_TO_IDL2_EXE) : aceexe, install, ciao_output, crosscompile, tao_idl_mcpp, tao_idl_fe { + after += TAO_IDL3_TO_IDL2_BE + exename = tao_idl3_to_idl2 + libs += TAO_IDL3_TO_IDL2_BE + includes += $(TAO_ROOT) + exeout = $(CIAO_ROOT)/bin + + // Adding a strict ordering dependency with TAO_IDL_EXE. It appears on some systems, there + // can be a race between these two projects for tao_idl.cpp, causing some erroors. + after += TAO_IDL_EXE + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) . + + verbatim(gnuace, local) { + ifeq ($(TAO_IDL_PREPROCESSOR),) + CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(strip $(CXX))\\\" + else + CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(subst \\,\\,$(TAO_IDL_PREPROCESSOR))\\\" + endif + } + + Source_Files { + $(TAO_ROOT)/TAO_IDL/driver/drv_args.cpp + $(TAO_ROOT)/TAO_IDL/tao_idl.cpp + } + + Header_Files { + $(TAO_ROOT)/TAO_IDL/include/drv_extern.h + } +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/README b/modules/CIAO/tools/IDL3_to_IDL2/README new file mode 100644 index 00000000000..b0732e2c304 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/README @@ -0,0 +1,140 @@ + + IDL3 To IDL2 Converter + +A pluggable back end used with the IDL compiler parser +and command line processor, this tool converts CCM-related +IDL constructs into their corresponding IDL2 equivalents, +in a new IDL file. For more information about CIAO, please see + +$CIAO_ROOT/docs/releasenotes/index.html + +COMPILING: + +Use the provided .mpc file to generate a project or makefile to +compile the pluggable back end library and the executable. +Make sure the TAO IDL compiler front end is already built. + +EXECUTABLE NAME: + +tao_idl3_to_idl2 + +COMMAND LINE OPTIONS: + +All the usual front-end command line options that apply to the IDL compiler +(such as path includes) work with this tool as well, since the IDL compiler +front end is simply reused. The options -? or -h will display a usage +message, including both front end and back end options. For a complete +list of IDL compiler command line options and a description of each, see +TAO/docs/compiler.html. + +BACKEND OPTIONS: + +-o Also works the same as with the IDL compiler, setting the +output directory, overriding the default, which is the directory of +execution. + +-e Generates a file foo_IDL2.idl from foo.idl that simply includes +foo.idl instead of generating its IDL declarations. Note that this +option takes effect only if foo.idl contains no 'IDL3' declarations, +otherwise it's a no-op. + +Note that the original -x option (which manually excludes +an included IDL file from being transformed to an include of the +'_IDL2' decorated corresponding file) has been eliminated. This +option was intended for included IDL files that contained no IDL3 +constructs, and therefore didn't need processing by this tool. +Detection of such included files is now automatic, and the processed +include filename will appear accordingly. + +CAVEAT: + +When using the TAO IDL compiler on files that are generated by this tool, +use the command line option -Sm on the IDL compiler, which will disable +the internal generation of equivalent IDL nodes in the AST. You'll notice +from the example below that the only ones that remain are eventtypes. +The -Sm option will prevent the IDL compiler from trying to create the +corresponding xxxConsumer interface, which now already exists explicitly +in IDL. + +EXAMPLE CONVERSION: + + +// test.idl + +#include + +interface Foo {}; + +eventtype Ev {}; + +component Bar +{ + uses multiple Foo needs_foo; + publishes Ev ev_pub; +}; + +home BarHome manages Bar +{ +}; + + +Typing + +tao_idl3_to_idl2 -I/ciao -I test.idl + +will generate + + + +// test_IDL2.idl + +#include "Components.idl" + +interface Foo {}; + +eventtype Ev {}; + +interface EvConsumer : Components::EventConsumerBase +{ + void push_Ev (in Ev the_Ev); +}; + +interface Bar : Components::CCMObject +{ + struct needs_fooConnection + { + Foo objref; + Components::Cookie ck; + }; + + typedef sequence needs_fooConnections; + + Components::Cookie connect_needs_foo (in Foo connection) + raises (Components::ExceededConnectionLimit, Components::InvalidConnection); + + Foo disconnect_needs_foo (in Components::Cookie ck) + raises (Components::InvalidConnection); + + needs_fooConnections get_connections_needs_foo (); + + Components::Cookie subscribe_ev_pub (in EvConsumer consumer) + raises (Components::ExceededConnectionLimit); + + EvConsumer unsubscribe_ev_pub (in Components::Cookie ck) + raises (Components::InvalidConnection); +}; + +interface BarHomeExplicit : Components::CCMHome +{ +}; + +interface BarHomeImplicit : Components::KeylessCCMHome +{ + Bar create () + raises (Components::CreateFailure); +}; + +interface BarHome : BarHomeExplicit, BarHomeImplicit +{ +}; + diff --git a/modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h b/modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h new file mode 100644 index 00000000000..7b54e254326 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl TAO_IDL3_TO_IDL2_BE +// ------------------------------ +#ifndef TAO_IDL3_TO_IDL2_BE_EXPORT_H +#define TAO_IDL3_TO_IDL2_BE_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (TAO_IDL3_TO_IDL2_BE_HAS_DLL) +# define TAO_IDL3_TO_IDL2_BE_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && TAO_IDL3_TO_IDL2_BE_HAS_DLL */ + +#if !defined (TAO_IDL3_TO_IDL2_BE_HAS_DLL) +# define TAO_IDL3_TO_IDL2_BE_HAS_DLL 1 +#endif /* ! TAO_IDL3_TO_IDL2_BE_HAS_DLL */ + +#if defined (TAO_IDL3_TO_IDL2_BE_HAS_DLL) && (TAO_IDL3_TO_IDL2_BE_HAS_DLL == 1) +# if defined (TAO_IDL3_TO_IDL2_BE_BUILD_DLL) +# define TAO_IDL3_TO_IDL2_BE_Export ACE_Proper_Export_Flag +# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* TAO_IDL3_TO_IDL2_BE_BUILD_DLL */ +# define TAO_IDL3_TO_IDL2_BE_Export ACE_Proper_Import_Flag +# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* TAO_IDL3_TO_IDL2_BE_BUILD_DLL */ +#else /* TAO_IDL3_TO_IDL2_BE_HAS_DLL == 1 */ +# define TAO_IDL3_TO_IDL2_BE_Export +# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARATION(T) +# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* TAO_IDL3_TO_IDL2_BE_HAS_DLL == 1 */ + +// Set TAO_IDL3_TO_IDL2_BE_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (TAO_IDL3_TO_IDL2_BE_NTRACE) +# if (ACE_NTRACE == 1) +# define TAO_IDL3_TO_IDL2_BE_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define TAO_IDL3_TO_IDL2_BE_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !TAO_IDL3_TO_IDL2_BE_NTRACE */ + +#if (TAO_IDL3_TO_IDL2_BE_NTRACE == 1) +# define TAO_IDL3_TO_IDL2_BE_TRACE(X) +#else /* (TAO_IDL3_TO_IDL2_BE_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define TAO_IDL3_TO_IDL2_BE_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (TAO_IDL3_TO_IDL2_BE_NTRACE == 1) */ + +#endif /* TAO_IDL3_TO_IDL2_BE_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.cpp b/modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.cpp new file mode 100644 index 00000000000..7cd2f41c5f7 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.cpp @@ -0,0 +1,1224 @@ +/* -*- c++ -*- */ +// $Id$ + +#include "basic_visitor.h" +#include "identifier_helper.h" +#include "be_sunsoft.h" +#include "be_extern.h" + +#include "ast_argument.h" +#include "ast_array.h" +#include "ast_attribute.h" +#include "ast_enum.h" +#include "ast_enum_val.h" +#include "ast_exception.h" +#include "ast_factory.h" +#include "ast_field.h" +#include "ast_operation.h" +#include "ast_root.h" +#include "ast_sequence.h" +#include "ast_string.h" +#include "ast_structure_fwd.h" +#include "ast_typedef.h" +#include "ast_union.h" +#include "ast_union_branch.h" +#include "ast_union_fwd.h" +#include "ast_union_label.h" +#include "ast_valuebox.h" +#include "ast_valuetype.h" +#include "ast_valuetype_fwd.h" +#include "ast_native.h" +#include "utl_exceptlist.h" +#include "utl_idlist.h" +#include "utl_identifier.h" +#include "nr_extern.h" + +basic_visitor::basic_visitor (void) + : os (0), + disc_type_ (0) +{ +} + +basic_visitor::~basic_visitor (void) +{ + delete this->os; + this->os = 0; +} + +int +basic_visitor::visit_decl (AST_Decl *) +{ + return 0; +} + +int +basic_visitor::visit_scope (UTL_Scope *node) +{ + for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls); + !si.is_done (); + si.next ()) + { + AST_Decl *d = si.item (); + + if (this->scope_skip_type (d)) + { + continue; + } + + AST_Decl::NodeType nt = d->node_type (); + + // Want to skip the uses_xxxConnection structs added by uses + // multiple ports. + // @@@ (JP) This will go away when the visitor is finished, since + // those uses_xxxConnection structs will not be added to the AST. + if (ScopeAsDecl (node)->node_type () == AST_Decl::NT_component + && (nt == AST_Decl::NT_struct + || nt == AST_Decl::NT_sequence + || nt == AST_Decl::NT_typedef)) + { + continue; + } + + if (d->ast_accept (this) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_scope - " + "codegen for scope failed\n"), + -1); + } + } + + return 0; +} + +int +basic_visitor::visit_type (AST_Type *) +{ + return 0; +} + +int +basic_visitor::visit_predefined_type (AST_PredefinedType *) +{ + return 0; +} + +int +basic_visitor::visit_interface_fwd (AST_InterfaceFwd *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + if (node->is_local ()) + { + *os << "local "; + } + + if (node->is_abstract ()) + { + *os << "abstract "; + } + + *os << "interface " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << ";"; + + return 0; +} + +int +basic_visitor::visit_valuebox (AST_ValueBox *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl + << "valuetype " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + AST_Type *bt = node->boxed_type (); + + // Keep output statements separate because of side effects. + + if (bt->node_type () == AST_Decl::NT_array) + { + this->gen_anonymous_array (bt, node); + } + else + { + *os << this->type_name (bt); + } + + *os << ";"; + + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_valuetype (AST_ValueType *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + if (node->is_abstract ()) + { + *os << "abstract "; + } + + if (node->custom ()) + { + *os << "custom "; + } + + *os << "valuetype " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + AST_Decl::NodeType nt = node->node_type (); + AST_Type **parents = node->inherits (); + long ninherits = node->n_inherits (); + + long i = 0; + for (i = 0; i < ninherits; ++i) + { + if (i == 0) + { + *os << " : "; + } + else + { + *os << ", "; + } + + *os << IdentifierHelper::orig_sn (parents[i]->name ()).c_str (); + } + + if (nt == AST_Decl::NT_eventtype) + { + *os << (ninherits == 0 ? " : " : ", ") + << "Components::EventBase"; + } + + AST_Type **supports = node->supports (); + + for (i = 0; i < node->n_supports (); ++i) + { + if (i == 0) + { + *os << " supports "; + } + else + { + *os << ", "; + } + + if (i == 0 && node->supports_concrete () != 0) + { + supports[i] = node->supports_concrete (); + } + + AST_Type *supported = supports[i]; + + *os << IdentifierHelper::orig_sn (supported->name ()).c_str (); + } + + *os << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + this->check_prefix (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_valuetype - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "};"; + + return 0; +} + +int +basic_visitor::visit_valuetype_fwd (AST_ValueTypeFwd *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + if (node->is_abstract ()) + { + *os << "abstract "; + } + + (void) node->node_type (); + + *os << "valuetype " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << ";"; + + return 0; +} + +int +basic_visitor::visit_template_module (AST_Template_Module *) +{ + return 0; +} + +int +basic_visitor::visit_template_module_inst (AST_Template_Module_Inst *) +{ + return 0; +} + +int +basic_visitor::visit_template_module_ref (AST_Template_Module_Ref *) +{ + return 0; +} + +int +basic_visitor::visit_porttype (AST_PortType *) +{ + return 0; +} + +int +basic_visitor::visit_provides (AST_Provides *) +{ + return 0; +} + +int +basic_visitor::visit_uses (AST_Uses *) +{ + return 0; +} + +int +basic_visitor::visit_publishes (AST_Publishes *) +{ + return 0; +} + +int +basic_visitor::visit_emits (AST_Emits *) +{ + return 0; +} + +int +basic_visitor::visit_consumes (AST_Consumes *) +{ + return 0; +} + +int +basic_visitor::visit_factory (AST_Factory *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl; + + *os << "factory " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << " ("; + + this->gen_params (node, node->argument_count ()); + + *os << ")"; + + this->gen_exception_list (node->exceptions ()); + + *os << ";"; + + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_structure (AST_Structure *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + *os << "struct " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_structure - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "};"; + + return 0; +} + +int +basic_visitor::visit_structure_fwd (AST_StructureFwd *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + *os << "struct " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << ";"; + + return 0; +} + +int +basic_visitor::visit_exception (AST_Exception *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + *os << "exception " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_exception - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "};"; + + return 0; +} + +int +basic_visitor::visit_expression (AST_Expression *) +{ + return 0; +} + +int +basic_visitor::visit_enum (AST_Enum *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + *os << "enum " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << be_nl + << "{" << be_idt; + + for (UTL_ScopeActiveIterator i (node, UTL_Scope::IK_decls); + !i.is_done ();) + { + *os << be_nl; + + AST_EnumVal *ev = AST_EnumVal::narrow_from_decl (i.item ()); + + *os << IdentifierHelper::try_escape (ev->original_local_name ()).c_str (); + + // Advance here so the check below will work. + i.next (); + + if (!i.is_done ()) + { + *os << ","; + } + } + + *os << be_uidt_nl + << "};"; + + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_operation (AST_Operation *node) +{ + this->gen_operation (node); + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_field (AST_Field *node) +{ + AST_Field::Visibility v = node->visibility (); + + *os << be_nl + << (v == AST_Field::vis_PUBLIC + ? "public " + : (v == AST_Field::vis_PRIVATE ? "private " : "")); + + AST_Type *ft = node->field_type (); + + if (ft->node_type () == AST_Decl::NT_array) + { + this->gen_anonymous_array (ft, node); + } + else + { + // Keep these statements separate because of side effects. + *os << this->type_name (ft); + *os << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + } + + *os << ";"; + + return 0; +} + +int +basic_visitor::visit_argument (AST_Argument *node) +{ + *os << be_nl; + + switch (node->direction ()) + { + case AST_Argument::dir_IN: + *os << "in "; + break; + case AST_Argument::dir_INOUT: + *os << "inout "; + break; + case AST_Argument::dir_OUT: + *os << "out "; + break; + default: + return -1; + } + + *os << this->type_name (node->field_type ()) + << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + return 0; +} + +int +basic_visitor::visit_attribute (AST_Attribute *node) +{ + this->gen_attribute (node); + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_union (AST_Union *node) +{ + if (node->imported ()) + { + return 0; + } + + this->disc_type_ = node->disc_type ()->unaliased_type (); + + *os << be_nl << be_nl + << "union " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << " switch ("; + + *os << this->type_name (node->disc_type ()) + << ")" << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_union - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "};"; + + return 0; +} + +int +basic_visitor::visit_union_fwd (AST_UnionFwd *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl + << "union " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << ";"; + + return 0; +} + +int +basic_visitor::visit_union_branch (AST_UnionBranch *node) +{ + for (unsigned long i = 0; i < node->label_list_length (); ++i) + { + if (this->visit_union_label (node->label (i)) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_union_branch - " + "codegen for label failed\n"), + -1); + } + } + + AST_Type *ft = node->field_type (); + + if (ft->node_type () == AST_Decl::NT_array) + { + this->gen_anonymous_array (ft, node); + } + else + { + *os << this->type_name (ft); + *os << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + } + + *os << ";"; + + return 0; +} + +int +basic_visitor::visit_union_label (AST_UnionLabel *node) +{ + *os << be_nl; + + if (node->label_kind () == AST_UnionLabel::UL_default) + { + *os << "default: "; + } + else + { + *os << "case "; + this->gen_label_value (node); + *os << ": "; + } + + return 0; +} + +int +basic_visitor::visit_constant (AST_Constant *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + *os << "const "; + + switch (node->et ()) + { + case AST_Expression::EV_short: + *os << "short"; + break; + case AST_Expression::EV_ushort: + *os << "unsigned short"; + break; + case AST_Expression::EV_long: + *os << "long"; + break; + case AST_Expression::EV_ulong: + *os << "unsigned long"; + break; + case AST_Expression::EV_longlong: + *os << "long long"; + break; + case AST_Expression::EV_ulonglong: + *os << "unsigned long long"; + break; + case AST_Expression::EV_char: + *os << "char"; + break; + case AST_Expression::EV_wchar: + *os << "wchar"; + break; + case AST_Expression::EV_bool: + *os << "boolean"; + break; + case AST_Expression::EV_octet: + *os << "octet"; + break; + case AST_Expression::EV_float: + *os << "float"; + break; + case AST_Expression::EV_double: + *os << "double"; + break; + case AST_Expression::EV_longdouble: + *os << "long double"; + break; + case AST_Expression::EV_string: + *os << "string"; + break; + case AST_Expression::EV_wstring: + *os << "wstring"; + break; + case AST_Expression::EV_enum: + *os << IdentifierHelper::orig_sn (node->enum_full_name ()).c_str (); + break; + default: + break; + } + + *os << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << " = " << node->constant_value () << ";"; + + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_enum_val (AST_EnumVal *) +{ + return 0; +} + +int +basic_visitor::visit_array (AST_Array *node) +{ + *os << IdentifierHelper::orig_sn (node->base_type ()->name ()).c_str (); + + for (unsigned long i = 0; i < node->n_dims (); ++i) + { + *os << "[" << node->dims ()[i] << "]"; + } + + return 0; +} + +int +basic_visitor::visit_sequence (AST_Sequence *node) +{ + // Keep output statements separate because of side effects. + *os << "sequence<"; + *os << this->type_name (node->base_type ()); + + if (!node->unbounded ()) + { + *os << ", " << node->max_size ()->ev ()->u.ulval; + } + + *os << "> "; + + return 0; +} + +int +basic_visitor::visit_string (AST_String *node) +{ + *os << (node->width () > 1 ? "w" : "") << "string"; + + unsigned long bound = node->max_size ()->ev ()->u.ulval; + + if (bound > 0) + { + *os << "<" << bound << ">"; + } + + return 0; +} + +int +basic_visitor::visit_typedef (AST_Typedef *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl + << "typedef "; + + AST_Type *bt = node->base_type (); + + // Keep output statements separate because of side effects. + + if (bt->node_type () == AST_Decl::NT_array) + { + this->gen_anonymous_array (bt, node); + } + else + { + *os << this->type_name (bt); + *os << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + } + + *os << ";"; + + this->check_id_and_version (node); + + return 0; +} + +int +basic_visitor::visit_native (AST_Native *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + *os << "native " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << ";"; + + return 0; +} + +//======================================================== + +void +basic_visitor::check_prefix (AST_Decl *d) +{ + if (d->typeid_set ()) + { + return; + } + + const char *the_prefix = d->prefix (); + AST_Decl *p = ScopeAsDecl (d->defined_in ()); + + if (ACE_OS::strcmp (the_prefix, p->prefix ()) != 0) + { + *os << be_nl + << "typeprefix " + << IdentifierHelper::try_escape (d->original_local_name ()).c_str () + << " \"" << the_prefix << "\";"; + } +} + +void +basic_visitor::check_id_and_version (AST_Decl *d) +{ + if (d->typeid_set ()) + { + *os << be_nl + << "typeid " + << IdentifierHelper::try_escape (d->original_local_name ()).c_str () + << " \"" << d->repoID () << "\";"; + + return; + } + + const char *the_version = d->version (); + AST_Decl *p = ScopeAsDecl (d->defined_in ()); + + if (ACE_OS::strcmp (the_version, p->version ()) != 0) + { + *os << "\n" + << "#pragma version " + << IdentifierHelper::try_escape (d->original_local_name ()).c_str () + << " " << the_version; + } +} + +const char * +basic_visitor::type_name (AST_Type *t) +{ + AST_PredefinedType *pdt = 0; + + switch (t->node_type ()) + { + case AST_Decl::NT_wstring: + case AST_Decl::NT_string: + case AST_Decl::NT_sequence: + // This causes side effects so output statements + // sending us here should not be concatenated. + (void) t->ast_accept (this); + return ""; + case AST_Decl::NT_pre_defined: + pdt = AST_PredefinedType::narrow_from_decl (t); + + switch (pdt->pt ()) + { + case AST_PredefinedType::PT_pseudo: + return t->full_name (); + case AST_PredefinedType::PT_object: + return "Object"; + case AST_PredefinedType::PT_any: + return "any"; + case AST_PredefinedType::PT_long: + return "long"; + case AST_PredefinedType::PT_ulong: + return "unsigned long"; + case AST_PredefinedType::PT_longlong: + return "long long"; + case AST_PredefinedType::PT_ulonglong: + return "unsigned long long"; + case AST_PredefinedType::PT_short: + return "short"; + case AST_PredefinedType::PT_ushort: + return "unsigned short"; + case AST_PredefinedType::PT_float: + return "float"; + case AST_PredefinedType::PT_double: + return "double"; + case AST_PredefinedType::PT_longdouble: + return "long double"; + case AST_PredefinedType::PT_char: + return "char"; + case AST_PredefinedType::PT_wchar: + return "wchar"; + case AST_PredefinedType::PT_boolean: + return "boolean"; + case AST_PredefinedType::PT_octet: + return "octet"; + case AST_PredefinedType::PT_void: + return "void"; + default: + break; + } + default: + this->tmp_retval_ = IdentifierHelper::orig_sn (t->name ()).c_str (); + return this->tmp_retval_.c_str (); + } +} + +void +basic_visitor::gen_anonymous_array (AST_Type *a, + AST_Decl *wrapper) +{ + AST_Array *array = AST_Array::narrow_from_decl (a); + AST_Type *bt = array->base_type (); + + *os << this->type_name (bt); + *os << " " + << IdentifierHelper::try_escape (wrapper->original_local_name ()).c_str (); + + for (unsigned long i = 0; i < array->n_dims (); ++i) + { + *os << "[" << array->dims ()[i]->ev ()->u.ulval << "]"; + } +} + +void +basic_visitor::gen_params (UTL_Scope *s, int arg_count) +{ + if (arg_count > 0) + { + *os << be_idt << be_idt; + + for (UTL_ScopeActiveIterator si (s, UTL_Scope::IK_decls); + !si.is_done ();) + { + if (si.item ()->ast_accept (this) != 0) + { + ACE_ERROR ((LM_ERROR, + "idl3_to_idl2_visitor::gen_params - " + "codegen for parameters failed\n")); + } + + si.next (); + + if (!si.is_done ()) + { + *os << ","; + } + } + + *os << be_uidt_nl << be_uidt; + } +} + +void +basic_visitor::gen_exception_list (UTL_ExceptList *exceptions, + const char *prefix, + bool closed) +{ + if (exceptions != 0 && exceptions->length () > 0) + { + *os << be_idt_nl + << prefix << "raises ("; + + for (UTL_ExceptlistActiveIterator ei (exceptions); + !ei.is_done ();) + { + *os << IdentifierHelper::orig_sn (ei.item ()->name ()).c_str (); + + ei.next (); + + if (!ei.is_done () || !closed) + { + *os << ", "; + } + } + + if (closed) + { + *os << ")" << be_uidt; + } + } +} + +void +basic_visitor::gen_operation (AST_Operation *node) +{ + *os << be_nl << be_nl; + + if (node->flags () == AST_Operation::OP_oneway) + { + *os << "oneway "; + } + + *os << this->type_name (node->return_type ()); + + *os << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << " ("; + + this->gen_params (node, node->argument_count ()); + + *os << ")"; + + this->gen_exception_list (node->exceptions ()); + + *os << ";"; +} + +void +basic_visitor::gen_attribute (AST_Attribute *node) +{ + bool rd_only = node->readonly (); + + // Keep output statements separate because of side effects. + // No need to check for anonymous array - anonymous types not + // accepted by parser for attributes. + *os << be_nl << be_nl + << (rd_only ? "readonly " : "") << "attribute "; + *os << this->type_name (node->field_type ()); + *os << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + this->gen_exception_list (node->get_get_exceptions (), + rd_only ? "" : "get"); + + this->gen_exception_list (node->get_set_exceptions (), + "set"); + + *os << ";"; +} + +void +basic_visitor::gen_label_value (AST_UnionLabel *node) +{ + AST_Expression *val = node->label_val (); + AST_Expression::AST_ExprValue *ev = val->ev (); + + if (this->disc_type_->node_type () == AST_Decl::NT_enum) + { + UTL_Scope *s = this->disc_type_->defined_in (); + + if (s == 0) + { + *os << IdentifierHelper::orig_sn (val->n ()).c_str (); + } + else + { + *os << IdentifierHelper::orig_sn (ScopeAsDecl (s)->name ()).c_str () + << "::"; + + Identifier *id = + IdentifierHelper::original_local_name (val->n ()->last_component ()); + + *os << IdentifierHelper::try_escape (id).c_str (); + + id->destroy (); + delete id; + id = 0; + } + + return; + } + + switch (ev->et) + { + case AST_Expression::EV_short: + *os << ev->u.sval; + break; + case AST_Expression::EV_ushort: + *os << ev->u.usval; + break; + case AST_Expression::EV_long: + *os << ev->u.lval; + break; + case AST_Expression::EV_ulong: + *os << ev->u.ulval; + break; + case AST_Expression::EV_longlong: +#if ! defined (ACE_LACKS_LONGLONG_T) + this->os->print ("%lld", ev->u.llval); +#endif /* ! defined (ACE_LACKS_LONGLONG_T) */ + break; + case AST_Expression::EV_ulonglong: +#if ! defined (ACE_LACKS_LONGLONG_T) + *os << "ACE_UINT64_LITERAL ("; + this->os->print (ACE_UINT64_FORMAT_SPECIFIER_ASCII, ev->u.ullval); + *os << ")"; +#endif /* ! defined (ACE_LACKS_LONGLONG_T) */ + break; + case AST_Expression::EV_char: + *os << ev->u.cval; + break; + case AST_Expression::EV_wchar: + *os << ev->u.wcval; + break; + case AST_Expression::EV_bool: + *os << (ev->u.bval ? "TRUE" : "FALSE"); + break; + case AST_Expression::EV_enum: + *os << IdentifierHelper::orig_sn (val->n ()).c_str (); + break; + default: + break; + } +} + +bool +basic_visitor::scope_skip_type (AST_Decl *d) +{ + return (d->node_type () == AST_Decl::NT_pre_defined); +} + +bool +basic_visitor::can_skip_module (AST_Module *m) +{ + for (UTL_ScopeActiveIterator si (m, UTL_Scope::IK_decls); + !si.is_done (); + si.next ()) + { + AST_Decl *d = si.item (); + AST_Decl::NodeType nt = d->node_type (); + + switch (nt) + { + case AST_Decl::NT_interface: + case AST_Decl::NT_interface_fwd: + case AST_Decl::NT_component: + case AST_Decl::NT_component_fwd: + case AST_Decl::NT_eventtype: + case AST_Decl::NT_eventtype_fwd: + case AST_Decl::NT_home: + if (d->is_abstract () || d->is_local ()) + { + break; + } + + return false; + case AST_Decl::NT_module: + if (!this->can_skip_module (AST_Module::narrow_from_decl (d))) + { + return false; + } + + break; + default: + break; + } + } + + return true; +} + +bool +basic_visitor::match_excluded_file (const char *raw_filename) +{ + ACE_CString::size_type p = 0; + + // If this included IDL file matches one of the 'excluded' files, + // generate the include without tacking on the suffix. + while (p != ACE_CString::npos) + { + ACE_CString::size_type cursor = p; + p = be_global->excluded_filenames ().find (' ', cursor); + + ACE_CString one_filename = + be_global->excluded_filenames ().substr (cursor, p - cursor); + + if (one_filename == raw_filename) + { + return true; + } + + // Skip the whitespace. + if (p != ACE_CString::npos) + { + while (be_global->excluded_filenames ()[p] == ' ') + { + p++; + } + } + } + + return false; +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.h b/modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.h new file mode 100644 index 00000000000..47a3fe9b0d5 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/basic_visitor.h @@ -0,0 +1,126 @@ +// $Id$ + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO_IDL3_TO_IDL2_BE_DLL +// +// = FILENAME +// basic_visitor.h +// +// = DESCRIPTION +// Base class for other visitors in this backend. +// +// ============================================================================ + +#ifndef TAO_BASIC_VISITOR_H +#define TAO_BASIC_VISITOR_H + +#include "ast_visitor.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" + +#include "ace/SString.h" + +class TAO_OutStream; +class UTL_ExceptList; + +class TAO_IDL3_TO_IDL2_BE_Export basic_visitor : public ast_visitor +{ + // + // = TITLE + // basic_visitor. + // + // = DESCRIPTION + // Base class for visitors in this backend and others. + // +public: + basic_visitor (void); + virtual ~basic_visitor (void); + + virtual int visit_decl (AST_Decl *d); + virtual int visit_scope (UTL_Scope *node); + virtual int visit_type (AST_Type *node); + virtual int visit_predefined_type (AST_PredefinedType *node); + virtual int visit_module (AST_Module *node) = 0; + virtual int visit_interface (AST_Interface *node) = 0; + virtual int visit_interface_fwd (AST_InterfaceFwd *node); + virtual int visit_valuebox (AST_ValueBox *node); + virtual int visit_valuetype (AST_ValueType *node); + virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node); + virtual int visit_component (AST_Component *node) = 0; + virtual int visit_component_fwd (AST_ComponentFwd *node) = 0; + virtual int visit_template_module (AST_Template_Module *node); + virtual int visit_template_module_inst (AST_Template_Module_Inst *node); + virtual int visit_template_module_ref (AST_Template_Module_Ref *node); + virtual int visit_porttype (AST_PortType *node); + virtual int visit_provides (AST_Provides *node); + virtual int visit_uses (AST_Uses *node); + virtual int visit_publishes (AST_Publishes *node); + virtual int visit_emits (AST_Emits *node); + virtual int visit_consumes (AST_Consumes *node); + virtual int visit_extended_port (AST_Extended_Port *node) = 0; + virtual int visit_mirror_port (AST_Mirror_Port *node) = 0; + virtual int visit_connector (AST_Connector *node) = 0; + virtual int visit_eventtype (AST_EventType *node) = 0; + virtual int visit_eventtype_fwd (AST_EventTypeFwd *node) = 0; + virtual int visit_home (AST_Home *node) = 0; + virtual int visit_factory (AST_Factory *node); + virtual int visit_structure (AST_Structure *node); + virtual int visit_structure_fwd (AST_StructureFwd *node); + virtual int visit_exception (AST_Exception *node); + virtual int visit_expression (AST_Expression *node); + virtual int visit_enum (AST_Enum *node); + virtual int visit_operation (AST_Operation *node); + virtual int visit_field (AST_Field *node); + virtual int visit_argument (AST_Argument *node); + virtual int visit_attribute (AST_Attribute *node); + virtual int visit_union (AST_Union *node); + virtual int visit_union_fwd (AST_UnionFwd *node); + virtual int visit_union_branch (AST_UnionBranch *node); + virtual int visit_union_label (AST_UnionLabel *node); + virtual int visit_constant (AST_Constant *node); + virtual int visit_enum_val (AST_EnumVal *node); + virtual int visit_array (AST_Array *node); + virtual int visit_sequence (AST_Sequence *node); + virtual int visit_string (AST_String *node); + virtual int visit_typedef (AST_Typedef *node); + virtual int visit_root (AST_Root *node) = 0; + virtual int visit_native (AST_Native *node); + +protected: + void check_prefix (AST_Decl *d); + void check_id_and_version (AST_Decl *d); + const char *type_name (AST_Type *t); + void gen_anonymous_array (AST_Type *array, AST_Decl *wrapper); + void gen_params (UTL_Scope *s, int arg_count); + void gen_exception_list (UTL_ExceptList *exceptions, + const char *prefix = "", + bool closed = true); + void gen_operation (AST_Operation *node); + void gen_attribute (AST_Attribute *node); + void gen_label_value (AST_UnionLabel *node); + + // Overrides allow common code for visit_scope(). + virtual bool scope_skip_type (AST_Decl *d); + + // Used by derived visitors to avoid generating an empty IDL module. + bool can_skip_module (AST_Module *m); + + // Used by derived visitors to check for special include handling. + bool match_excluded_file (const char *raw_filename); + +protected: + TAO_OutStream *os; + AST_Type *disc_type_; + +private: + ACE_CString tmp_retval_; +}; + +#endif // TAO_BASIC_VISITOR_H diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_extern.h b/modules/CIAO/tools/IDL3_to_IDL2/be_extern.h new file mode 100644 index 00000000000..c7dc3daaf41 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_extern.h @@ -0,0 +1,86 @@ +// This may look like C, but it's really -*- C++ -*- +// $Id$ +/* + +COPYRIGHT + +Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United +States of America. All Rights Reserved. + +This product is protected by copyright and distributed under the following +license restricting its use. + +The Interface Definition Language Compiler Front End (CFE) is made +available for your use provided that you include this license and copyright +notice on all media and documentation and the software program in which +this product is incorporated in whole or part. You may copy and extend +functionality (but may not remove functionality) of the Interface +Definition Language CFE without charge, but you are not authorized to +license or distribute it to anyone else except as part of a product or +program developed by you or with the express written consent of Sun +Microsystems, Inc. ("Sun"). + +The names of Sun Microsystems, Inc. and any of its subsidiaries or +affiliates may not be used in advertising or publicity pertaining to +distribution of Interface Definition Language CFE as permitted herein. + +This license is effective until terminated by Sun for failure to comply +with this license. Upon termination, you shall destroy or return all code +and documentation for the Interface Definition Language CFE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF +ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS +FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF +DEALING, USAGE OR TRADE PRACTICE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT +ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES +TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. + +SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH +RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY +INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. + +IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR +ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL +DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +Use, duplication, or disclosure by the government is subject to +restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in +Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR +52.227-19. + +Sun, Sun Microsystems and the Sun logo are trademarks or registered +trademarks of Sun Microsystems, Inc. + +SunSoft, Inc. +2550 Garcia Avenue +Mountain View, California 94043 + +NOTE: + +SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are +trademarks or registered trademarks of Sun Microsystems, Inc. + +*/ + +#ifndef TAO_IFR_BE_EXTERN_H +#define TAO_IFR_BE_EXTERN_H + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" +#include "be_global.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +extern TAO_IDL3_TO_IDL2_BE_Export BE_GlobalData *be_global; + +extern TAO_IDL3_TO_IDL2_BE_Export int BE_init (int &, ACE_TCHAR*[]); +extern TAO_IDL3_TO_IDL2_BE_Export void BE_post_init (char *[], long); +extern TAO_IDL3_TO_IDL2_BE_Export void BE_version (void); +extern TAO_IDL3_TO_IDL2_BE_Export void BE_produce (void); +extern TAO_IDL3_TO_IDL2_BE_Export void BE_cleanup (void); +extern TAO_IDL3_TO_IDL2_BE_Export void BE_abort (void); + +#endif /* TAO_IFR_BE_EXTERN_H */ diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp new file mode 100644 index 00000000000..eafef8eaa45 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp @@ -0,0 +1,197 @@ +// $Id$ + +// ============================================================================ +// +// +// = LIBRARY +// TAO_IDL3_TO_IDL2L_BE_DLL +// +// = FILENAME +// be_global.cpp +// +// = DESCRIPTION +// Stores global data specific to the compiler back end. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#include "be_global.h" +#include "be_sunsoft.h" +#include "ast_generator.h" +#include "global_extern.h" +#include "idl_defines.h" +#include "utl_string.h" +#include "idl3_to_idl2_visitor.h" + +#include "ace/OS_NS_stdio.h" + +TAO_IDL3_TO_IDL2_BE_Export BE_GlobalData *be_global = 0; + +BE_GlobalData::BE_GlobalData (void) + : gen_copyright_ (true), + filename_ (0), + output_dir_ (0), + encapsulate_idl2_ (false) +{ +} + +BE_GlobalData::~BE_GlobalData (void) +{ +} + +const char* +BE_GlobalData::output_dir (void) const +{ + return this->output_dir_; +} + +void +BE_GlobalData::output_dir (const char* s) +{ + delete [] this->output_dir_; + this->output_dir_ = ACE::strnew (s); +} + +bool +BE_GlobalData::encapsulate_idl2 (void) const +{ + return this->encapsulate_idl2_; +} + +ACE_CString & +BE_GlobalData::excluded_filenames (void) +{ + return this->excluded_filenames_; +} + +void +BE_GlobalData::set_excluded_filenames (const char *filenames) +{ + this->excluded_filenames_ = filenames; +} + +bool +BE_GlobalData::gen_copyright (void) const +{ + return this->gen_copyright_; +} + +void +BE_GlobalData::parse_args (long &i, char **av) +{ + switch (av[i][1]) + { + // Directory where the generated file is to + // be kept. Default is the current directory from which + // is called. + case 'o': + if (av[i][2] == '\0') + { + this->output_dir (av [i + 1]); + i++; + } + else + { + this->output_dir (av[i] + 2); + } + break; + case 'e': + this->encapsulate_idl2_ = true; + break; + default: + ACE_ERROR (( + LM_ERROR, + ACE_TEXT ("IDL: I don't understand the '%s' option\n"), + av[i] + )); + + idl_global->set_compile_flags (idl_global->compile_flags () + | IDL_CF_ONLY_USAGE); + break; + } +} + +// Prepare an argument for a BE. +void +BE_GlobalData::prep_be_arg (char *) +{ +} + +void +BE_GlobalData::arg_post_proc (void) +{ +} + +void +BE_GlobalData::usage (void) const +{ + ACE_DEBUG (( + LM_DEBUG, + ACE_TEXT (" -o \t\tOutput directory for the generated file.") + ACE_TEXT (" Default is current directory\n") + )); + ACE_DEBUG (( + LM_DEBUG, + ACE_TEXT (" -e\t\t\tGenerate just an include of original IDL file") + ACE_TEXT (" if no IDL3 declarations are found\n") + )); +} + +AST_Generator * +BE_GlobalData::generator_init (void) +{ + AST_Generator *gen = 0; + ACE_NEW_RETURN (gen, + AST_Generator, + 0); + return gen; +} + +int +BE_GlobalData::outfile_init (TAO_OutStream *& os, + const char *file_prefix, + const char *file_suffix, + const char *guard_prefix, + const char *guard_suffix) +{ + ACE_NEW_RETURN (os, + TAO_SunSoft_OutStream, + -1); + + ACE_CString fn (idl_global->stripped_filename ()->get_string ()); + fn = fn.substr (0, fn.rfind ('.')); + fn += file_suffix; + + const char *path = be_global->output_dir (); + ACE_CString target_name; + + if (path != 0) + { + target_name = path; + target_name += "/"; + } + + target_name += file_prefix; + target_name += fn; + + if (os->open (target_name.c_str ()) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Failed to open file %s for writing.\n", + target_name.c_str ()), + -1); + } + + *os << be_nl; + + os->gen_ifndef_string (fn.c_str (), guard_prefix, guard_suffix); + + return 0; +} + +void +BE_GlobalData::destroy (void) +{ +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_global.h b/modules/CIAO/tools/IDL3_to_IDL2/be_global.h new file mode 100644 index 00000000000..1db2c35fd1f --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_global.h @@ -0,0 +1,116 @@ +/* -*- c++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO_IFR_BE_DLL +// +// = FILENAME +// be_global.h +// +// = DESCRIPTION +// Header file for class containing compiler back end global data. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef TAO_IFR_BE_GLOBAL_H +#define TAO_IFR_BE_GLOBAL_H + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" +#include "idl_defines.h" +#include "ace/SString.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class AST_Generator; +class TAO_OutStream; + +// Defines a class containing all back end global data. + +class TAO_IDL3_TO_IDL2_BE_Export BE_GlobalData +{ +public: + // = TITLE + // BE_GlobalData + // + // = DESCRIPTION + // Storage of global data specific to the compiler back end + // + BE_GlobalData (void); + // Constructor. + + virtual ~BE_GlobalData (void); + // Destructor. + + //======================================= + + // Data accessors. + const char* output_dir (void) const; + void output_dir (const char* s); + + bool encapsulate_idl2 (void) const; + + ACE_CString & excluded_filenames (void); + + void set_excluded_filenames (const char *filenames); + + bool gen_copyright (void) const; + + //========================================= + + virtual void parse_args (long &i, char **av); + // Parse args that affect this backend. + + void prep_be_arg (char *s); + // Special BE arg call factored out of DRV_args. + + void arg_post_proc (void); + // Checks made after parsing args. + + virtual void usage (void) const; + // Usage message for backend options. + + AST_Generator *generator_init (void); + // Create an AST node generator. + + int outfile_init (TAO_OutStream *&, + const char *file_prefix, + const char *file_suffix, + const char *guard_prefix, + const char *guard_suffix); + // Create the output file, the associated stream, and + // generate the initial #ifndef. + + void destroy (void); + // Cleanup. + +protected: + bool gen_copyright_; + // So it can be turned off in backends that inherit from this one. + +private: + char *filename_; + // Name of the IDL file we are processing. + + char *output_dir_; + // Directory where the generated file is to be + // kept. Default value is 0 for this string which means the current + // directory from which the is called. + + bool encapsulate_idl2_; + // Have the generated file just include the original file if + // no IDL3 declarations are found by the checking visitor. + + ACE_CString excluded_filenames_; + // Whitespace-separated list of included IDL files + // to be passed to the output IDL file without + // adding the '_IDL2" suffix. +}; + +#endif /* TAO_IFR_BE_GLOBAL_H */ diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp new file mode 100644 index 00000000000..db3968af3c5 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp @@ -0,0 +1,435 @@ +// $Id$ + +// ============================================================================ +// +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_helper.cpp +// +// = DESCRIPTION +// Provides helper classes to print generated code to the output +// +// = AUTHOR +// Aniruddha Gokhale +// +// Improvements by Carlos O'Ryan +// +// ============================================================================ + +#include "be_helper.h" +#include "be_extern.h" +#include "idl_defines.h" +#include "ace/OS_NS_stdio.h" +#include "ace/OS_NS_string.h" +#include "ace/OS_NS_ctype.h" + +ACE_RCSID (be, + be_helper, + "$Id$") + +static const char copyright[] = +"// -*- C++ -*-\n" +"//\n" +"// $I" "d$\n\n" +"// **** Code generated by the The Component Integrated ACE ORB (CIAO)" +" IDL3 to IDL2 Compiler ****\n" +"// CIAO and this tool have been developed by:\n" +"// Center for Distributed Object Computing\n" +"// Washington University\n" +"// St. Louis, MO\n" +"// USA\n" +"// http://www.cs.wustl.edu/~schmidt/doc-center.html\n" +"// and\n" +"// Distributed Object Computing Laboratory\n" +"// University of California at Irvine\n" +"// Irvine, CA\n" +"// USA\n" +"// http://doc.ece.uci.edu/\n" +"// and\n" +"// Institute for Software Integrated Systems\n" +"// Vanderbilt University\n" +"// Nashville, TN\n" +"// USA\n" +"// http://www.isis.vanderbilt.edu/\n" +"//\n" +"// Information about CIAO is available at:\n" +"// http://www.cs.wustl.edu/~schmidt/CIAO.html"; + +TAO_NL::TAO_NL (void) +{ +} + +TAO_INDENT::TAO_INDENT (int do_now) + : do_now_ (do_now) +{ +} + +TAO_UNINDENT::TAO_UNINDENT (int do_now) + : do_now_ (do_now) +{ +} + +const TAO_NL be_nl; +const TAO_INDENT be_idt; +const TAO_INDENT be_idt_nl (1); +const TAO_UNINDENT be_uidt; +const TAO_UNINDENT be_uidt_nl (1); + +// Methods of the TAO_OutStream class. + +TAO_OutStream::TAO_OutStream (void) + : fp_ (0), + indent_level_ (0) +{ +} + +TAO_OutStream::~TAO_OutStream (void) +{ + // Close the underlying I/O handle only if it exists. + if (this->fp_ != 0) + { + ACE_OS::fclose (this->fp_); + this->fp_ = 0; + } + + indent_level_ = 0; +} + +int +TAO_OutStream::open (const char *fname) +{ + if (fname != 0) + { + // File name exists, open an I/O file handle. + this->fp_ = ACE_OS::fopen (fname, "w"); + + if (this->fp_ != 0) + { + if (be_global->gen_copyright ()) + { + // Put the copyright notice. + ACE_OS::fprintf (this->fp_, + "%s\n", + copyright); + + ACE_OS::fflush (this->fp_); + } + + return 0; + } + else + { + return -1; + } + } + else + { + return -1; + } +} + +// Return the underlying lowlevel file pointer. +// indentation. +FILE * +TAO_OutStream::file (void) +{ + return this->fp_; +} + +int +TAO_OutStream::incr_indent (unsigned short flag) +{ + indent_level_++; + + if (flag != 0) + { + return this->indent (); + } + else + { + // Do not indent output. + return 0; + } +} + +// Indentation +int +TAO_OutStream::decr_indent (unsigned short flag) +{ + this->indent_level_--; + // Just in case somebody gets "unindent happy". + if (this->indent_level_ < 0) + { + // ACE_DEBUG ((LM_DEBUG, "negative indentation?\n")); + this->indent_level_ = 0; + } + if (flag != 0) + { + return this->indent (); + } + else + { + // Do not indent output. + return 0; + } +} + +int +TAO_OutStream::reset (void) +{ + this->indent_level_ = 0; + return 0; +} + +// Indented print. +int +TAO_OutStream::indent (void) +{ + // Based on the current indentation level, leave appropriate number of blank + // spaces in the output. + if (this->indent_level_ > 0) + { + for (int i = 0; i < this->indent_level_; i++) + { + ACE_OS::fprintf (this->fp_, " "); + ACE_OS::fflush (this->fp_); + } + } + + return 0; +} + +int +TAO_OutStream::nl (void) +{ + ACE_OS::fprintf (this->fp_, "\n"); + this->indent (); + return 0; +} + +// Printf style variable argument print. +int +TAO_OutStream::print (const char *format, ...) +{ + int result = 0; + va_list ap; + va_start (ap, format); + ACE_OSCALL (::vfprintf (this->fp_, + format, + ap), + int, + -1, + result); + + ACE_OS::fflush (this->fp_); + va_end (ap); + + return result; +} + +void +TAO_OutStream::gen_ifndef_string (const char *fname, + const char *prefix, + const char *suffix) +{ + static char macro_name [NAMEBUFSIZE]; + + ACE_OS::memset (macro_name, + '\0', + NAMEBUFSIZE); + + const char *extension = ACE_OS::strrchr (fname, '.'); + + if (extension == 0) + { + // File seems to have no extension, so let us take the name + // as it is. + extension = fname; + } + + ACE_OS::sprintf (macro_name, prefix); + + size_t offset = ACE_OS::strlen (prefix); + + // Convert letters in fname to upper case. + for (int i = 0; i < (extension - fname); i++) + { + if (ACE_OS::ace_isalpha (fname [i])) + { + macro_name[i + offset] = (char) ACE_OS::ace_toupper (fname [i]); + } + else if (ACE_OS::ace_isdigit (fname [i])) + { + macro_name[i + offset] = fname[i]; + } + else + { + macro_name[i + offset] = '_'; + } + } + + ACE_OS::strcat (macro_name, suffix); + + // Generate the #ifndef ... #define statements. + this->print ("#ifndef %s\n", + macro_name); + this->print ("#define %s", + macro_name); +} + +TAO_OutStream & +TAO_OutStream::operator<< (const char *str) +{ + ACE_OS::fprintf (this->fp_, "%s", str); + ACE_OS::fflush (this->fp_); + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::UShort num) +{ + ACE_OS::fprintf (this->fp_, + "%hu", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::Short num) +{ + ACE_OS::fprintf (this->fp_, + "%hd", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::ULong num) +{ + ACE_OS::fprintf (this->fp_, + "%lu", + (unsigned long) num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::Long num) +{ + ACE_OS::fprintf (this->fp_, + "%ld", + (long) num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +#if defined (ACE_WIN64) +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::ULongLong num) +{ + ACE_OS::fprintf (this->fp_, + ACE_UINT64_FORMAT_SPECIFIER, + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::LongLong num) +{ + ACE_OS::fprintf (this->fp_, + ACE_INT64_FORMAT_SPECIFIER, + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} +#endif /* ACE_WIN64 */ + +TAO_OutStream & +TAO_OutStream::operator<< (const unsigned long num) +{ + ACE_OS::fprintf (this->fp_, + "%lu", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const long num) +{ + ACE_OS::fprintf (this->fp_, + "%ld", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const TAO_NL&) +{ + ACE_OS::fprintf (this->fp_ , + "\n"); + this->indent (); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const TAO_INDENT& i) +{ + this->incr_indent (0); + + if (i.do_now_) + { + this->nl (); + } + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const TAO_UNINDENT& i) +{ + this->decr_indent (0); + + if (i.do_now_) + { + this->nl (); + } + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (Identifier *id) +{ + return this->print (id); +} + +TAO_OutStream & +TAO_OutStream::operator<< (AST_Expression *expr) +{ + return this->print (expr); +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_helper.h b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.h new file mode 100644 index 00000000000..7fab4e04347 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.h @@ -0,0 +1,180 @@ +/* -*- c++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_helper.h +// +// = DESCRIPTION +// Defines the abstract class for outputting the C++ mapping. This is a +// helper class to the singleton TAO_CodeGen class +// +// = AUTHOR +// Aniruddha Gokhale +// +// Improvements by Carlos O'Ryan +// +// ============================================================================ + +#ifndef TAO_BE_OUTSTRM_H +#define TAO_BE_OUTSTRM_H + +#include "ace/CDR_Base.h" + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" + +class Identifier; +class UTL_IdList; +class AST_Expression; + +// a dummy structure to inform TAO_OutStream's << operator to put a newline +// and use the current indentation for the succeeding line +struct TAO_IDL3_TO_IDL2_BE_Export TAO_NL +{ +public: + TAO_NL (void); +}; + +struct TAO_IDL3_TO_IDL2_BE_Export TAO_INDENT +{ + // = TITLE + // Operates like a manipulator, increasing the indentation level. + // + // = DESCRIPTION + // Increase the indentation level, if the "do_now" parameter is + // not zero then the method is called on the stream. + // + TAO_INDENT (int do_now = 0); + + const int do_now_; +}; + +struct TAO_IDL3_TO_IDL2_BE_Export TAO_UNINDENT +{ + // = TITLE + // Operates like a manipulator, decreasing the indentation level. + // + // = DESCRIPTION + // Decrease the indentation level, if the "do_now" parameter is + // not zero then the method is called on the stream. + // + TAO_UNINDENT (int do_now = 0); + + const int do_now_; +}; + +extern TAO_IDL3_TO_IDL2_BE_Export const TAO_NL be_nl; +extern TAO_IDL3_TO_IDL2_BE_Export const TAO_INDENT be_idt; +extern TAO_IDL3_TO_IDL2_BE_Export const TAO_INDENT be_idt_nl; +extern TAO_IDL3_TO_IDL2_BE_Export const TAO_UNINDENT be_uidt; +extern TAO_IDL3_TO_IDL2_BE_Export const TAO_UNINDENT be_uidt_nl; + +class TAO_IDL3_TO_IDL2_BE_Export TAO_OutStream +{ + // =TITLE + // TAO_OutStream + // + // =DESCRIPTION + // Defines an interface by which the backend code generator can + // print its output to the underlying I/O handle. This is a + // helper class that will be used by the TAO_CodeGen + // class. However, this is an abstract class and classes that + // understand specific front ends must derive from this class. +public: + TAO_OutStream (void); + // constructor. + + virtual ~TAO_OutStream (void); + // destructor. + + int open (const char *fname); + // open the underlying low-level handle for output. + + + FILE *file (void); + // Return the underlying lowlevel file pointer. + + int incr_indent (unsigned short flag = 1); + // increment the indentation level and by default actually indent the output + // accordingly + + int decr_indent (unsigned short flag = 1); + // decrease the indentation level and by default actually indent the output + // accordingly + + int reset (void); + // reset indentation level to 0 + + int indent (void); + // indent starting next line + + int nl (void); + // put a newline and indent on the next line + + int print (const char *format, ...); + // "printf" style variable argument print + + void gen_ifndef_string (const char *fname, + const char *prefix, + const char *suffix); + + // =overloaded operators + + TAO_OutStream &operator<< (const char *str); + // output the char string and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::UShort num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::Short num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::ULong num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::Long num); + // output the integer and return a reference to ourselves + +#if defined (ACE_WIN64) + TAO_OutStream &operator<< (const ACE_CDR::ULongLong num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::LongLong num); + // output the integer and return a reference to ourselves +#endif /* ACE_WIN64 */ + + TAO_OutStream &operator<< (const unsigned long num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const long num); + // output the integer and return a reference to ourselves + + // = MANIPULATORS + + TAO_OutStream &operator<< (const TAO_NL& nl); + TAO_OutStream &operator<< (const TAO_INDENT& i); + TAO_OutStream &operator<< (const TAO_UNINDENT& i); + + // The following will be provided by specialized classes. + + TAO_OutStream &operator<< (Identifier *id); + TAO_OutStream &operator<< (AST_Expression *expr); + + // Provided by specialized classes. + virtual TAO_OutStream &print (Identifier *id) = 0; + + virtual TAO_OutStream &print (AST_Expression *idl) = 0; + +protected: + FILE *fp_; + // The underlying low-level I/O handle. + + int indent_level_; + // indentation level +}; + +#endif // if !defined diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp new file mode 100644 index 00000000000..fe111e60a47 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp @@ -0,0 +1,32 @@ +// $Id$ + +#include "global_extern.h" +#include "be_extern.h" +#include "../../ciao/Version.h" + +TAO_IDL3_TO_IDL2_BE_Export void +BE_version (void) +{ + ACE_DEBUG ((LM_DEBUG, + "%s %s\n", + ACE_TEXT ("TAO_ID3_TO_IDL2_BE, version"), + ACE_TEXT (CIAO_VERSION))); +} + +TAO_IDL3_TO_IDL2_BE_Export int +BE_init (int & /* argc */, ACE_TCHAR * /*argv */ []) +{ + // Initialize BE global data object. + ACE_NEW_RETURN (be_global, + BE_GlobalData, + -1); + + idl_global->pass_orb_idl (true); + return 0; +} + +TAO_IDL3_TO_IDL2_BE_Export void +BE_post_init (char * /* files */ [], long /* nfiles */) +{ +} + diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp new file mode 100644 index 00000000000..94619136efc --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp @@ -0,0 +1,168 @@ +// $Id$ + +/* + +COPYRIGHT + +Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United +States of America. All Rights Reserved. + +This product is protected by copyright and distributed under the following +license restricting its use. + +The Interface Definition Language Compiler Front End (CFE) is made +available for your use provided that you include this license and copyright +notice on all media and documentation and the software program in which +this product is incorporated in whole or part. You may copy and extend +functionality (but may not remove functionality) of the Interface +Definition Language CFE without charge, but you are not authorized to +license or distribute it to anyone else except as part of a product or +program developed by you or with the express written consent of Sun +Microsystems, Inc. ("Sun"). + +The names of Sun Microsystems, Inc. and any of its subsidiaries or +affiliates may not be used in advertising or publicity pertaining to +distribution of Interface Definition Language CFE as permitted herein. + +This license is effective until terminated by Sun for failure to comply +with this license. Upon termination, you shall destroy or return all code +and documentation for the Interface Definition Language CFE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF +ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS +FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF +DEALING, USAGE OR TRADE PRACTICE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT +ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES +TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. + +SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH +RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY +INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. + +IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR +ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL +DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +Use, duplication, or disclosure by the government is subject to +restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in +Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR +52.227-19. + +Sun, Sun Microsystems and the Sun logo are trademarks or registered +trademarks of Sun Microsystems, Inc. + +SunSoft, Inc. +2550 Garcia Avenue +Mountain View, California 94043 + +NOTE: + +SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are +trademarks or registered trademarks of Sun Microsystems, Inc. + + */ + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" +#include "global_extern.h" +#include "be_extern.h" +#include "be_helper.h" +#include "fe_extern.h" +#include "utl_string.h" +#include "ast_root.h" +#include "checking_visitor.h" +#include "idl3_to_idl2_visitor.h" + +// Clean up before exit, whether successful or not. +TAO_IDL3_TO_IDL2_BE_Export void +BE_cleanup (void) +{ + idl_global->destroy (); +} + +// Abort this run of the BE. +TAO_IDL3_TO_IDL2_BE_Export void +BE_abort (void) +{ + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Fatal Error - Aborting\n"))); + + // BE_cleanup will be called after the exception is caught. + throw Bailout (); +} + +// Do the work of this BE. This is the starting point for code generation. +TAO_IDL3_TO_IDL2_BE_Export void +BE_produce (void) +{ + // Get the root node. + AST_Decl *d = idl_global->root (); + AST_Root *ast_root = AST_Root::narrow_from_decl (d); + + if (ast_root == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%N:%l) BE_produce - ") + ACE_TEXT ("No Root\n"))); + BE_abort (); + } + + checking_visitor c_visitor; + + if (c_visitor.visit_root (ast_root) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%N:%l) BE_produce - failed") + ACE_TEXT (" to accept checking visitor\n"))); + + BE_abort (); + } + + // Create and launch the 'equivalent IDL' visitor only if IDL3 + // declarations were seen by the checking visitor, or if we + // are not just including an IDL2-only original file in a new file. + if (c_visitor.is_idl3 () || !be_global->encapsulate_idl2 ()) + { + idl3_to_idl2_visitor visitor; + + if (visitor.visit_root (ast_root) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%N:%l) BE_produce - failed to") + ACE_TEXT (" accept idl3_to_idl2 visitor\n"))); + } + } + else + { + TAO_OutStream *os = 0; + int status = be_global->outfile_init (os, + "", + "_IDL2.idl", + "_TAO_IDL_", + "_IDL_"); + + if (status == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%N:%l) BE_produce - ") + ACE_TEXT ("failed to initialize output file\n"))); + + delete os; + os = 0; + BE_abort (); + } + + *os << be_nl << be_nl + << "#include \"" + << idl_global->stripped_filename ()->get_string () + << "\"" << be_nl << be_nl + << "#endif /* ifndef */" << be_nl; + + delete os; + os = 0; + } + + // Clean up. + BE_cleanup (); +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp new file mode 100644 index 00000000000..e924ccea47d --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp @@ -0,0 +1,157 @@ +// $Id$ + +#include "be_sunsoft.h" +#include "identifier_helper.h" + +#include "ast_expression.h" +#include "utl_identifier.h" +#include "utl_idlist.h" +#include "utl_string.h" + +#include "ace/OS_NS_stdio.h" +#include "ace/OS_NS_string.h" +#include "ace/OS_NS_ctype.h" + +ACE_RCSID (be, + be_sunsoft, + "$Id$") + +TAO_SunSoft_OutStream::TAO_SunSoft_OutStream (void) + : TAO_OutStream () +{ +} + +TAO_SunSoft_OutStream::~TAO_SunSoft_OutStream (void) +{ +} + +TAO_OutStream & +TAO_SunSoft_OutStream::print (Identifier *id) +{ + ACE_OS::fprintf (this->fp_, + id->get_string ()); + + return *this; +} + +TAO_OutStream& +TAO_SunSoft_OutStream::print (AST_Expression *expr) +{ + AST_Expression::AST_ExprValue *ev = expr->ev (); + + if (ev) + { + switch (ev->et) + { + case AST_Expression::EV_short: + this->TAO_OutStream::print (ACE_INT32_FORMAT_SPECIFIER_ASCII, ev->u.sval); + break; + case AST_Expression::EV_ushort: + this->TAO_OutStream::print (ACE_INT32_FORMAT_SPECIFIER_ASCII "%c", ev->u.usval, 'U'); + break; + case AST_Expression::EV_long: + this->TAO_OutStream::print (ACE_INT32_FORMAT_SPECIFIER_ASCII, ev->u.lval); + break; + case AST_Expression::EV_ulong: + this->TAO_OutStream::print (ACE_UINT32_FORMAT_SPECIFIER_ASCII "%c", ev->u.ulval, 'U'); + break; + // The ACE_LACKS_LONGLONG_T guards have been removed around + // the next 2 cases since the macros now used should work + // whether native 64-bit integers are defined or not. + case AST_Expression::EV_longlong: + this->TAO_OutStream::print ("ACE_INT64_LITERAL ("); + this->TAO_OutStream::print (ACE_INT64_FORMAT_SPECIFIER_ASCII, + ev->u.llval); + this->TAO_OutStream::print (")"); + break; + case AST_Expression::EV_ulonglong: + this->TAO_OutStream::print ("ACE_UINT64_LITERAL ("); + this->TAO_OutStream::print (ACE_UINT64_FORMAT_SPECIFIER_ASCII, + ev->u.ullval); + this->TAO_OutStream::print (")"); + break; + case AST_Expression::EV_float: + this->TAO_OutStream::print ("%f%c", ev->u.fval, 'F'); + break; + case AST_Expression::EV_double: + this->TAO_OutStream::print ("%24.16G", ev->u.dval); + break; + case AST_Expression::EV_longdouble: + break; + case AST_Expression::EV_char: + // isprint() sees \ and ' as printable characters + // so we have to test for them first. + if (ev->u.cval == '\\') + this->TAO_OutStream::print ("'\\\\'"); + else if (ev->u.cval == '\'') + this->TAO_OutStream::print ("'\\''"); + + // This handles hex and octal escape sequences + // that would print out either as weird characters + // or as an unsigned number too large for a char. + else if ((unsigned char) ev->u.cval > ACE_CHAR_MAX) + this->TAO_OutStream::print ("%hd", ev->u.cval); + else if (ACE_OS::ace_isprint (ev->u.cval)) + this->TAO_OutStream::print ("'%c'", ev->u.cval); + else if (ACE_OS::ace_iscntrl (ev->u.cval)) + switch (ev->u.cval) + { + case '\n': + this->TAO_OutStream::print ("'\\n'"); + break; + case '\t': + this->TAO_OutStream::print ("'\\t'"); + break; + case '\r': + this->TAO_OutStream::print ("'\\r'"); + break; + case '\v': + this->TAO_OutStream::print ("'\\v'"); + break; + case '\f': + this->TAO_OutStream::print ("'\\f'"); + break; + case '\b': + this->TAO_OutStream::print ("'\\b'"); + break; + case '\a': + this->TAO_OutStream::print ("'\\a'"); + break; + case '\?': + this->TAO_OutStream::print ("'?'"); + break; + default: + this->TAO_OutStream::print ("'\\x%x'", ev->u.cval); + } + else + this->TAO_OutStream::print ("'\\x%x'", ev->u.cval); + break; + case AST_Expression::EV_wchar: + this->TAO_OutStream::print ("L'%lc'", ev->u.wcval); + break; + case AST_Expression::EV_octet: + this->TAO_OutStream::print ("%d", ev->u.oval); + break; + case AST_Expression::EV_bool: + this->TAO_OutStream::print ("%s", ev->u.bval ? "true" : "false"); + break; + case AST_Expression::EV_string: + this->TAO_OutStream::print ("\"%s\"", ev->u.strval->get_string ()); + break; + case AST_Expression::EV_wstring: + this->TAO_OutStream::print ("L\"%s\"", ev->u.wstrval); + break; + case AST_Expression::EV_enum: + *this << IdentifierHelper::orig_sn (expr->n ()).c_str (); + break; + default: + break; + } + } + else + { + // XXXASG: need to add code here + } + + return *this; +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h new file mode 100644 index 00000000000..c269c8c3bc8 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h @@ -0,0 +1,45 @@ +/* -*- c++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_sunsoft.h +// +// = DESCRIPTION +// SunSoft specific backend output generation +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef TAO_BE_HELPER_H +#define TAO_BE_HELPER_H + +#include "be_helper.h" + +class TAO_IDL3_TO_IDL2_BE_Export TAO_SunSoft_OutStream : public TAO_OutStream +{ + // =TITLE + // TAO_SunSoft_OutStream + // =DESCRIPTION + // Backend specific to SunSoft AST nodes +public: + TAO_SunSoft_OutStream (void); + // constructor + + ~TAO_SunSoft_OutStream (void); + // destuctor + + virtual TAO_OutStream &print (Identifier *id); + // output the SunSoft IDL Identifier Node + + virtual TAO_OutStream &print (AST_Expression *expr); + // output the contents of the AST_Expression node +}; + +#endif // if !defined diff --git a/modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.cpp b/modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.cpp new file mode 100644 index 00000000000..068ef7f9535 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.cpp @@ -0,0 +1,453 @@ +/* -*- c++ -*- */ +// $Id$ + +#include "checking_visitor.h" +#include "identifier_helper.h" +#include "be_extern.h" + +#include "ast_component.h" +#include "ast_component_fwd.h" +#include "ast_eventtype.h" +#include "ast_eventtype_fwd.h" +#include "ast_home.h" +#include "ast_root.h" +#include "global_extern.h" +#include "nr_extern.h" + +checking_visitor::checking_visitor (void) + : is_idl3_ (false) +{ +} + +checking_visitor::~checking_visitor (void) +{ +} + +int +checking_visitor::visit_decl (AST_Decl *) +{ + return 0; +} + +int +checking_visitor::visit_scope (UTL_Scope *node) +{ + for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls); + !si.is_done (); + si.next ()) + { + AST_Decl *d = si.item (); + AST_Decl::NodeType nt = d->node_type (); + + if (nt == AST_Decl::NT_typedef || nt == AST_Decl::NT_pre_defined) + { + continue; + } + + // Want to skip the uses_xxxConnection structs added by uses + // multiple ports. + // @@@ (JP) This will go away when the visitor is finished, since + // those uses_xxxConnection structs will not be added to the AST. + if (ScopeAsDecl (node)->node_type () == AST_Decl::NT_component + && nt != AST_Decl::NT_attr) + { + continue; + } + + if (d->ast_accept (this) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "checking_visitor::visit_scope - " + "codegen for scope failed\n"), + -1); + } + } + + return 0; +} + +int +checking_visitor::visit_type (AST_Type *) +{ + return 0; +} + +int +checking_visitor::visit_predefined_type (AST_PredefinedType *) +{ + return 0; +} + +int +checking_visitor::visit_module (AST_Module *node) +{ + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "checking_visitor::visit_module - " + "codegen for scope failed\n"), + -1); + } + + return 0; +} + +int +checking_visitor::visit_interface (AST_Interface *) +{ + return 0; +} + +int +checking_visitor::visit_interface_fwd (AST_InterfaceFwd *) +{ + return 0; +} + +int +checking_visitor::visit_valuebox (AST_ValueBox *) +{ + return 0; +} + +int +checking_visitor::visit_valuetype (AST_ValueType *) +{ + return 0; +} + +int +checking_visitor::visit_valuetype_fwd (AST_ValueTypeFwd *) +{ + return 0; +} + +int +checking_visitor::visit_component (AST_Component *node) +{ + this->is_idl3_ = true; + this->remove_idl2_only_filename (node->file_name ()); + return 0; +} + +int +checking_visitor::visit_component_fwd (AST_ComponentFwd *node) +{ + this->is_idl3_ = true; + this->remove_idl2_only_filename (node->file_name ()); + return 0; +} + +int +checking_visitor::visit_template_module (AST_Template_Module *) +{ + return 0; +} + +int +checking_visitor::visit_template_module_inst (AST_Template_Module_Inst *) +{ + return 0; +} + +int +checking_visitor::visit_template_module_ref (AST_Template_Module_Ref *) +{ + return 0; +} + +int +checking_visitor::visit_porttype (AST_PortType *) +{ + return 0; +} + +int +checking_visitor::visit_provides (AST_Provides *) +{ + return 0; +} + +int +checking_visitor::visit_uses (AST_Uses *) +{ + return 0; +} + +int +checking_visitor::visit_publishes (AST_Publishes *) +{ + return 0; +} + +int +checking_visitor::visit_emits (AST_Emits *) +{ + return 0; +} + +int +checking_visitor::visit_consumes (AST_Consumes *) +{ + return 0; +} + +int +checking_visitor::visit_extended_port (AST_Extended_Port *) +{ + return 0; +} + +int +checking_visitor::visit_mirror_port (AST_Mirror_Port *) +{ + return 0; +} + +int +checking_visitor::visit_connector (AST_Connector *) +{ + return 0; +} + +int +checking_visitor::visit_eventtype (AST_EventType *node) +{ + this->is_idl3_ = true; + this->remove_idl2_only_filename (node->file_name ()); + return 0; +} + +int +checking_visitor::visit_eventtype_fwd (AST_EventTypeFwd *node) +{ + this->is_idl3_ = true; + this->remove_idl2_only_filename (node->file_name ()); + return 0; +} + +int +checking_visitor::visit_home (AST_Home *node) +{ + this->is_idl3_ = true; + this->remove_idl2_only_filename (node->file_name ()); + return 0; +} + + +int +checking_visitor::visit_factory (AST_Factory *) +{ + return 0; +} + +int +checking_visitor::visit_structure (AST_Structure *) +{ + return 0; +} + +int +checking_visitor::visit_structure_fwd (AST_StructureFwd *) +{ + return 0; +} + +int +checking_visitor::visit_exception (AST_Exception *) +{ + return 0; +} + +int +checking_visitor::visit_expression (AST_Expression *) +{ + return 0; +} + +int +checking_visitor::visit_enum (AST_Enum *) +{ + return 0; +} + + +int +checking_visitor::visit_union (AST_Union *) +{ + return 0; +} + +int +checking_visitor::visit_union_fwd (AST_UnionFwd *) +{ + return 0; +} + + +int +checking_visitor::visit_constant (AST_Constant *) +{ + return 0; +} + +int +checking_visitor::visit_enum_val (AST_EnumVal *) +{ + return 0; +} + +int +checking_visitor::visit_root (AST_Root *node) +{ + // Populate this list with all included filenames. They will be + // removed as IDL3 constructs are found in them. + for (size_t i = 0; i < idl_global->n_included_idl_files (); ++i) + { + if (! this->idl2_only_files_.empty ()) + { + this->idl2_only_files_ += " "; + } + + this->idl2_only_files_ += idl_global->included_idl_files ()[i]; + } + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "checking_visitor::visit_root - " + "codegen for scope failed\n"), + -1); + } + + // Append the remaining names in this list to the excluded + // filenames list. If a filename ends up appearing twice, it + // shouldn't matter. + be_global->set_excluded_filenames (this->idl2_only_files_.c_str ()); + + return 0; +} + +int +checking_visitor::visit_native (AST_Native *) +{ + return 0; +} + +int +checking_visitor::visit_operation (AST_Operation *) +{ + return 0; +} + +int +checking_visitor::visit_field (AST_Field *) +{ + return 0; +} + +int +checking_visitor::visit_argument (AST_Argument *) +{ + return 0; +} + +int +checking_visitor::visit_attribute (AST_Attribute *) +{ + return 0; +} + +int +checking_visitor::visit_union_branch (AST_UnionBranch *) +{ + return 0; +} + +int +checking_visitor::visit_union_label (AST_UnionLabel *) +{ + return 0; +} + +int +checking_visitor::visit_array (AST_Array *) +{ + return 0; +} + +int +checking_visitor::visit_sequence (AST_Sequence *) +{ + return 0; +} + +int +checking_visitor::visit_string (AST_String *) +{ + return 0; +} + +int +checking_visitor::visit_typedef (AST_Typedef *) +{ + return 0; +} + +bool +checking_visitor::is_idl3 (void) const +{ + return this->is_idl3_; +} + +void +checking_visitor::remove_idl2_only_filename (ACE_CString filename) +{ + if (this->idl2_only_files_.empty ()) + { + return; + } + + ACE_CString::size_type p = 0; + ACE_CString raw_local_fname (filename); + + ACE_CString::size_type pos = raw_local_fname.rfind ('/'); + + if (pos != ACE_CString::npos) + { + raw_local_fname = + raw_local_fname.substr (pos + 1); + } + + while (p != ACE_CString::npos) + { + ACE_CString::size_type cursor = p; + + if (cursor >= this->idl2_only_files_.length ()) + { + break; + } + + p = this->idl2_only_files_.find (' ', cursor); + + ACE_CString one_filename = + this->idl2_only_files_.substr (cursor, p - cursor); + + // Skip the whitespace. + if (p != ACE_CString::npos) + { + while (this->idl2_only_files_[p] == ' ') + { + p++; + } + } + + if (one_filename == raw_local_fname) + { + this->idl2_only_files_ = + this->idl2_only_files_.substr (0, cursor) + + this->idl2_only_files_.substr (p); + } + } +} + diff --git a/modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.h b/modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.h new file mode 100644 index 00000000000..e01b96464cc --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/checking_visitor.h @@ -0,0 +1,110 @@ +// $Id$ + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO_IDL3_TO_IDL2_BE_DLL +// +// = FILENAME +// checking_visitor.h +// +// = DESCRIPTION +// Visitor that checks input IDL3 in a separate pass. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef TAO_IDL_CHECKING_VISITOR_H +#define TAO_IDL_CHECKING_VISITOR_H + +#include "ace/SString.h" + +#include "ast_visitor.h" +#include "utl_scoped_name.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" + +class UTL_ExceptList; + +class TAO_IDL3_TO_IDL2_BE_Export checking_visitor : public ast_visitor +{ + // + // = TITLE + // checking_visitor. + // + // = DESCRIPTION + // Checks input IDL3 and sets flags used by subsequent + // equivalent IDL generating visitor. + // +public: + checking_visitor (void); + virtual ~checking_visitor (void); + + virtual int visit_decl (AST_Decl *d); + virtual int visit_scope (UTL_Scope *node); + virtual int visit_type (AST_Type *node); + virtual int visit_predefined_type (AST_PredefinedType *node); + virtual int visit_module (AST_Module *node); + virtual int visit_interface (AST_Interface *node); + virtual int visit_interface_fwd (AST_InterfaceFwd *node); + virtual int visit_valuebox (AST_ValueBox *node); + virtual int visit_valuetype (AST_ValueType *node); + virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node); + virtual int visit_component (AST_Component *node); + virtual int visit_component_fwd (AST_ComponentFwd *node); + virtual int visit_template_module (AST_Template_Module *node); + virtual int visit_template_module_inst (AST_Template_Module_Inst *node); + virtual int visit_template_module_ref (AST_Template_Module_Ref *node); + virtual int visit_porttype (AST_PortType *node); + virtual int visit_provides (AST_Provides *node); + virtual int visit_uses (AST_Uses *node); + virtual int visit_publishes (AST_Publishes *node); + virtual int visit_emits (AST_Emits *node); + virtual int visit_consumes (AST_Consumes *node); + virtual int visit_extended_port (AST_Extended_Port *node); + virtual int visit_mirror_port (AST_Mirror_Port *node); + virtual int visit_connector (AST_Connector *node); + virtual int visit_eventtype (AST_EventType *node); + virtual int visit_eventtype_fwd (AST_EventTypeFwd *node); + virtual int visit_home (AST_Home *node); + virtual int visit_factory (AST_Factory *node); + virtual int visit_structure (AST_Structure *node); + virtual int visit_structure_fwd (AST_StructureFwd *node); + virtual int visit_exception (AST_Exception *node); + virtual int visit_expression (AST_Expression *node); + virtual int visit_enum (AST_Enum *node); + virtual int visit_operation (AST_Operation *node); + virtual int visit_field (AST_Field *node); + virtual int visit_argument (AST_Argument *node); + virtual int visit_attribute (AST_Attribute *node); + virtual int visit_union (AST_Union *node); + virtual int visit_union_fwd (AST_UnionFwd *node); + virtual int visit_union_branch (AST_UnionBranch *node); + virtual int visit_union_label (AST_UnionLabel *node); + virtual int visit_constant (AST_Constant *node); + virtual int visit_enum_val (AST_EnumVal *node); + virtual int visit_array (AST_Array *node); + virtual int visit_sequence (AST_Sequence *node); + virtual int visit_string (AST_String *node); + virtual int visit_typedef (AST_Typedef *node); + virtual int visit_root (AST_Root *node); + virtual int visit_native (AST_Native *node); + + bool is_idl3 (void) const; + +private: + void remove_idl2_only_filename (ACE_CString filename); + +private: + bool is_idl3_; + ACE_CString idl2_only_files_; +}; + +#endif /* TAO_IDL_CHECKING_VISITOR_H */ diff --git a/modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.cpp b/modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.cpp new file mode 100644 index 00000000000..9b8a255b9c5 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.cpp @@ -0,0 +1,123 @@ +/* -*- c++ -*- */ +// $Id$ + +#include "identifier_helper.h" +#include "utl_identifier.h" +#include "utl_string.h" +#include "fe_private.h" +#include "global_extern.h" + +Identifier * +IdentifierHelper::original_local_name (Identifier * local_name) +{ + Identifier * id = 0; + const char *lname = local_name->get_string (); + + // Remove _cxx_ if: + // 1. it occurs and + // 2. it occurs at the beginning of the string and + // 3. the rest of the string is a C++ keyword + if (ACE_OS::strstr (lname, "_cxx_") == lname) + { + TAO_IDL_CPP_Keyword_Table cpp_key_tbl; + + unsigned int len = + static_cast (ACE_OS::strlen (lname + 5)); + + const TAO_IDL_CPP_Keyword_Entry *entry = + cpp_key_tbl.lookup (lname + 5, len); + + if (entry != 0) + { + // Remove _cxx_ and assign to the Identifier variable. + ACE_NEW_RETURN (id, + Identifier (lname + 5), + 0); + } + } + + if (id == 0) + { + id = local_name->copy (); + } + + return id; +} + +ACE_CString +IdentifierHelper::orig_sn (UTL_IdList * sn, bool appended_to) +{ + ACE_CString retval; + bool first = true; + bool second = false; + Identifier *id = 0; + + for (UTL_IdListActiveIterator i (sn); !i.is_done ();) + { + if (!first) + { + retval += "::"; + } + else if (second) + { + first = second = false; + } + + id = IdentifierHelper::original_local_name (i.item ()); + i.next (); + + // Append the identifier. + retval += + appended_to && i.is_done () + ? id->get_string () + : IdentifierHelper::try_escape (id).c_str (); + + if (first) + { + if (ACE_OS::strcmp (id->get_string (), "") != 0) + { + // Does not start with a "". + first = false; + } + else + { + second = true; + } + } + + id->destroy (); + delete id; + id = 0; + } + + return retval; +} + +bool +IdentifierHelper::is_idl_keyword (Identifier * local_name) +{ + UTL_String utl_tmp (local_name->get_string ()); + ACE_CString ext_id (utl_tmp.get_canonical_rep (), + 0, + false); + + int status = idl_global->idl_keywords ().find (ext_id); + utl_tmp.destroy (); + + return status == 0; +} + +ACE_CString +IdentifierHelper::try_escape (Identifier * local_name) +{ + ACE_CString s_local_name (local_name->get_string ()); + + if (IdentifierHelper::is_idl_keyword (local_name)) + { + return "_" + s_local_name; + } + else + { + return s_local_name; + } +} diff --git a/modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.h b/modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.h new file mode 100644 index 00000000000..a6a6fcc88df --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/identifier_helper.h @@ -0,0 +1,66 @@ +// $Id$ + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO_IDL3_TO_IDL2_BE_DLL +// +// = FILENAME +// identifier_helper.h +// +// = DESCRIPTION +// Utilities associated with UTL_Identifier. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef IDENTIFIER_HELPER_H +#define IDENTIFIER_HELPER_H + +#include "utl_scoped_name.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" +#include "ace/SString.h" + +class Identifier; + +struct TAO_IDL3_TO_IDL2_BE_Export IdentifierHelper +{ + // + // = TITLE + // IdentifierHelper. + // + // = DESCRIPTION + // 1) keeps escape (leading underscore character in generated + // identifier in IDL + // 2) removes the '_' escape character when the identifier is + // part of another identifier such as in provides_XXX + // 3) removes any '_cxx_' in generated IDL + + static Identifier * + original_local_name (Identifier * local_name); + + // Removes '_cxx_ from segments of a scoped name, and optionally + // de-escape the last segment, if it's to be appended to. + static ACE_CString + orig_sn (UTL_ScopedName * scoped_name, bool appended_to = false); + + // Detects case-insensitive match with IDL keyword. + static bool + is_idl_keyword (Identifier * local_name); + + // Preserves the 'escape' (leading underscore) in a + // generated identifier if necessary. + static ACE_CString + try_escape (Identifier * local_name); +}; + +#endif /* IDENTIFIER_HELPER_H */ + diff --git a/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp new file mode 100644 index 00000000000..69aa084c186 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp @@ -0,0 +1,759 @@ +/* -*- c++ -*- */ +// $Id$ + +#include "idl3_to_idl2_visitor.h" +#include "identifier_helper.h" +#include "be_sunsoft.h" +#include "be_extern.h" + +#include "ast_component_fwd.h" +#include "ast_provides.h" +#include "ast_uses.h" +#include "ast_publishes.h" +#include "ast_emits.h" +#include "ast_consumes.h" +#include "ast_eventtype.h" +#include "ast_eventtype_fwd.h" +#include "ast_home.h" +#include "ast_operation.h" +#include "ast_root.h" +#include "utl_exceptlist.h" +#include "utl_identifier.h" +#include "global_extern.h" +#include "nr_extern.h" + +idl3_to_idl2_visitor::idl3_to_idl2_visitor (void) + : basic_visitor () +{ +} + +idl3_to_idl2_visitor::~idl3_to_idl2_visitor (void) +{ +} + +int +idl3_to_idl2_visitor::visit_module (AST_Module *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + ACE_CString name = + IdentifierHelper::try_escape (node->original_local_name ()); + + *os << "module " << name.c_str () << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + this->check_prefix (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_module - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "}; // end of module " << name.c_str (); + + return 0; +} + +int +idl3_to_idl2_visitor::visit_interface (AST_Interface *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl; + + if (node->is_local ()) + { + *os << "local "; + } + + if (node->is_abstract ()) + { + *os << "abstract "; + } + + *os << "interface " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + AST_Type **parents = node->inherits (); + + for (long i = 0; i < node->n_inherits (); ++i) + { + if (i == 0) + { + *os << " : "; + } + else + { + *os << ", "; + } + + *os << IdentifierHelper::orig_sn (parents[i]->name ()).c_str (); + } + + *os << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + this->check_prefix (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_interface - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "};"; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_component (AST_Component *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl + << "interface " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + AST_Component *base = node->base_component (); + long nsupports = node->n_supports (); + + *os << " : " + << (base != 0 + ? IdentifierHelper::orig_sn (base->name ()).c_str () + : "Components::CCMObject"); + + for (long i = 0; i < nsupports; ++i) + { + *os << ", " + << IdentifierHelper::orig_sn (node->supports ()[i]->name ()).c_str (); + } + + *os << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_component - " + "codegen for scope failed\n"), + -1); + } + + *os << be_uidt_nl + << "};"; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_component_fwd (AST_ComponentFwd *node) +{ + if (node->imported ()) + { + return 0; + } + + *os << be_nl << be_nl + << "component " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << ";"; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_provides (AST_Provides *node) +{ + Identifier *orig_id = + IdentifierHelper::original_local_name (node->local_name ()); + + UTL_ScopedName *n = node->provides_type ()->name (); + ACE_CString impl_name = + IdentifierHelper::orig_sn (n); + + *os << be_nl << be_nl + << impl_name.c_str () << " provide_" << orig_id << " ();"; + + orig_id->destroy (); + delete orig_id; + orig_id = 0; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_uses (AST_Uses *node) +{ + *os << be_nl << be_nl; + + Identifier *orig_id = + IdentifierHelper::original_local_name (node->local_name ()); + + UTL_ScopedName *n = node->uses_type ()->name (); + ACE_CString impl_name = + IdentifierHelper::orig_sn (n); + + if (node->is_multiple ()) + { + *os << "struct " << orig_id << "Connection" << be_nl + << "{" << be_idt_nl + << impl_name.c_str () << " objref;" << be_nl + << "Components::Cookie ck;" << be_uidt_nl + << "};" << be_nl << be_nl + << "typedef sequence<" << orig_id << "Connection> " + << orig_id << "Connections;" + << be_nl << be_nl + << "Components::Cookie connect_" << orig_id << " (in " + << impl_name.c_str () << " connection)" << be_idt_nl + << "raises (Components::ExceededConnectionLimit, " + << "Components::InvalidConnection);" << be_uidt_nl << be_nl + << impl_name.c_str () << " disconnect_" << orig_id + << " (in Components::Cookie ck)" << be_idt_nl + << "raises (Components::InvalidConnection);" + << be_uidt_nl << be_nl + << orig_id << "Connections get_connections_" << orig_id + << " ();"; + } + else + { + *os << "void connect_" << orig_id << " (in " + << impl_name.c_str () << " conxn)" << be_idt_nl + << "raises (Components::AlreadyConnected, " + << "Components::InvalidConnection);" << be_uidt_nl << be_nl + << impl_name.c_str () << " disconnect_" << orig_id + << " ()" << be_idt_nl + << "raises (Components::NoConnection);" << be_uidt_nl << be_nl + << impl_name.c_str () << " get_connection_" << orig_id + << " ();"; + } + + orig_id->destroy (); + delete orig_id; + orig_id = 0; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_publishes (AST_Publishes *node) +{ + Identifier *orig_id = + IdentifierHelper::original_local_name (node->local_name ()); + + UTL_ScopedName *n = node->publishes_type ()->name (); + ACE_CString impl_name = + IdentifierHelper::orig_sn (n, true); + + *os << be_nl << be_nl + << "Components::Cookie subscribe_" << orig_id + << " (in " + << impl_name.c_str () << "Consumer consumer)" + << be_idt_nl + << "raises (Components::ExceededConnectionLimit);" + << be_uidt_nl << be_nl + << impl_name.c_str () << "Consumer unsubscribe_" << orig_id + << " (in Components::Cookie ck)" << be_idt_nl + << "raises (Components::InvalidConnection);" << be_uidt; + + orig_id->destroy (); + delete orig_id; + orig_id = 0; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_emits (AST_Emits *node) +{ + Identifier *orig_id = + IdentifierHelper::original_local_name (node->local_name ()); + + UTL_ScopedName *n = node->emits_type ()->name (); + ACE_CString impl_name = + IdentifierHelper::orig_sn (n, true); + + *os << be_nl << be_nl + << "void connect_" << orig_id + << " (in " + << impl_name.c_str () << "Consumer consumer)" << be_idt_nl + << "raises (Components::AlreadyConnected);" + << be_uidt_nl << be_nl + << impl_name.c_str () << "Consumer disconnect_" << orig_id + << " ()" << be_idt_nl + << "raises (Components::NoConnection);" << be_uidt; + + orig_id->destroy (); + delete orig_id; + orig_id = 0; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_consumes (AST_Consumes *node) +{ + Identifier *orig_id = + IdentifierHelper::original_local_name (node->local_name ()); + + UTL_ScopedName *n = node->consumes_type ()->name (); + ACE_CString impl_name = + IdentifierHelper::orig_sn (n, true); + + *os << be_nl << be_nl + << impl_name.c_str () << "Consumer get_consumer_" << orig_id + << " ();"; + + orig_id->destroy (); + delete orig_id; + orig_id = 0; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_extended_port (AST_Extended_Port *) +{ + return 0; +} + +int +idl3_to_idl2_visitor::visit_mirror_port (AST_Mirror_Port *) +{ + return 0; +} + +int +idl3_to_idl2_visitor::visit_connector (AST_Connector *) +{ + return 0; +} + +int +idl3_to_idl2_visitor::visit_eventtype (AST_EventType *node) +{ + if (node->imported ()) + { + return 0; + } + + if (this->visit_valuetype (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_eventtype - " + "codegen for valuetype failed\n"), + -1); + } + + *os << be_nl << be_nl + << "interface " << node->original_local_name () << "Consumer : "; + + AST_Type *parent = 0; + AST_Decl::NodeType nt = AST_Decl::NT_native; + + if (node->n_inherits () > 0) + { + parent = node->inherits ()[0]; + AST_Type *ut = parent->unaliased_type (); + nt = ut->node_type (); + } + + if (node->n_inherits () == 0 || nt == AST_Decl::NT_valuetype) + { + *os << "Components::EventConsumerBase"; + } + else + { + *os << IdentifierHelper::orig_sn (node->inherits ()[0]->name (), true).c_str () + << "Consumer"; + } + + *os << be_nl + << "{" << be_idt_nl + << "void push_" << node->original_local_name () << " (in " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << " the_" + << node->original_local_name () << ");" << be_uidt_nl + << "};"; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_eventtype_fwd (AST_EventTypeFwd *node) +{ + if (node->imported ()) + { + return 0; + } + + if (this->visit_valuetype_fwd (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_eventtype_fwd - " + "codegen for valuetype_fwd failed\n"), + -1); + } + + *os << be_nl + << "interface " << node->original_local_name () << "Consumer;"; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_home (AST_Home *node) +{ + if (node->imported ()) + { + return 0; + } + + ACE_CString explicit_name = node->original_local_name ()->get_string (); + explicit_name += "Explicit"; + + *os << be_nl << be_nl + << "interface " << explicit_name.c_str () << " : "; + + AST_Home *base = node->base_home (); + + if (base == 0) + { + *os << "Components::CCMHome"; + } + else + { + *os << IdentifierHelper::orig_sn (base->name (), true).c_str () + << "Explicit"; + } + + *os << be_nl + << "{" << be_idt; + + this->check_id_and_version (node); + + // Create a temporary interface node corresponding to the one we + // just generated above for the home explicit interface. + UTL_ScopedName *sn = + this->create_scoped_name (0, + explicit_name.c_str (), + 0, + ScopeAsDecl (node->defined_in ())); + + AST_Interface xplicit (sn, + 0, + 0, + 0, + 0, + false, + false); + xplicit.set_defined_in (node->defined_in ()); + + // Reset the home's decls to be defined in the explicit home interface. + this->tranfer_scope_elements (node, xplicit); + + this->gen_factories (node, xplicit); + this->gen_finders (node, xplicit); + + *os << be_uidt_nl + << "};" << be_nl << be_nl; + + xplicit.destroy (); + sn->destroy (); + delete sn; + sn = 0; + + AST_Type *key = node->primary_key (); + ACE_CString mng_name = + IdentifierHelper::orig_sn (node->managed_component ()->name ()); + ACE_CString key_name; + + // Generate the implicit home interface and its operations. + *os << "interface " << node->original_local_name () << "Implicit" + << (key == 0 ? " : Components::KeylessCCMHome" : "") << be_nl + << "{" << be_idt_nl + << mng_name.c_str () << " create ("; + + if (key != 0) + { + key_name = + IdentifierHelper::orig_sn (key->name ()); + + *os << "in " << key_name.c_str () << " key"; + } + + *os << ")" << be_idt_nl + << "raises (Components::CreateFailure"; + + if (key != 0) + { + *os << ", Components::InvalidKey, Components::DuplicateKeyValue"; + } + + *os << ");" << be_uidt; + + if (key != 0) + { + *os << be_nl << be_nl + << mng_name.c_str () + << " find_by_primary_key (in " << key_name.c_str () + << " key)" << be_idt_nl + << "raises (Components::InvalidKey, Components::UnknownKeyValue, " + << "Components::FinderFailure);" << be_uidt; + + *os << be_nl << be_nl + << "void remove (in " << key_name.c_str () << " key)" << be_idt_nl + << "raises (Components::InvalidKey, Components::UnknownKeyValue, " + << "Components::RemoveFailure);" << be_uidt; + + *os << be_nl << be_nl + << key_name.c_str () << " get_primary_key (in " + << mng_name.c_str () << " comp);"; + } + + *os << be_uidt_nl + << "};"; + + // Create equivalent interface. + *os << be_nl << be_nl + << "interface " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str () + << " : " + << node->original_local_name () << "Explicit, " + << node->original_local_name () << "Implicit" << be_nl + << "{" << be_nl + << "};"; + + return 0; +} + +int +idl3_to_idl2_visitor::visit_root (AST_Root *node) +{ + int status = be_global->outfile_init (this->os, + "", + "_IDL2.idl", + "_TAO_IDL_", + "_IDL_"); + + if (status == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("idl3_to_idl2_visitor::visit_root - ") + ACE_TEXT ("failed to initialize output file\n")), + -1); + } + + ACE_CString filename; + + for (size_t i = 0; i < idl_global->n_included_idl_files (); ++i) + { + if (i == 0) + { + *os << be_nl; + } + + ACE_CString raw_filename = idl_global->included_idl_files ()[i]; + bool excluded_file_found = + this->match_excluded_file (raw_filename.c_str ()); + + if (raw_filename.find (".pidl") != ACE_CString::npos + || raw_filename == "orb.idl" + || raw_filename == "Components.idl" + || excluded_file_found) + { + filename = raw_filename; + } + else + { + filename = + raw_filename.substr (0, raw_filename.rfind ('.')) + "_IDL2.idl"; + } + + *os << be_nl + << "#include \"" << filename.c_str () << "\""; + } + + const char *pfix = node->prefix (); + + if (ACE_OS::strcmp (pfix, "") != 0) + { + *os << be_nl << be_nl + << "#pragma prefix \"" << pfix << "\""; + } + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("idl3_to_idl2_visitor::visit_root - ") + ACE_TEXT ("codegen for scope failed\n")), + -1); + } + + *os << be_nl << be_nl + << "#endif /* ifndef */" << be_nl << be_nl; + + return 0; +} + +UTL_ScopedName * +idl3_to_idl2_visitor::create_scoped_name (const char *prefix, + const char *local_name, + const char *suffix, + AST_Decl *parent) +{ + ACE_CString local_string (prefix, + 0, + false); + local_string += local_name; + local_string += suffix; + Identifier *local_id = 0; + ACE_NEW_RETURN (local_id, + Identifier (local_string.fast_rep ()), + 0); + UTL_ScopedName *last_segment = 0; + ACE_NEW_RETURN (last_segment, + UTL_ScopedName (local_id, + 0), + 0); + UTL_ScopedName *full_name = + static_cast (parent->name ()->copy ()); + full_name->nconc (last_segment); + return full_name; +} + +void +idl3_to_idl2_visitor::tranfer_scope_elements (AST_Home *src, + AST_Interface &dst) +{ + // Transfer the elements of the home's scope to the temporary + // explicit home interface. + for (UTL_ScopeActiveIterator src_iter (src, UTL_Scope::IK_decls); + ! src_iter.is_done (); + src_iter.next ()) + { + AST_Decl *d = src_iter.item (); + d->set_defined_in (&dst); + UTL_ScopedName *new_name = + this->create_scoped_name (0, + d->local_name ()->get_string (), + 0, + &dst); + d->set_name (new_name); + dst.add_to_scope (d); + } + + // Visit the transferred scope elements normally to generate the IDL. + // This way referenced items will have the interface's name in the + // scoped name instead of the home's name. + for (UTL_ScopeActiveIterator dst_iter (&dst, UTL_Scope::IK_decls); + ! dst_iter.is_done (); + dst_iter.next ()) + { + if (dst_iter.item ()->ast_accept (this) != 0) + { + ACE_ERROR ((LM_ERROR, + "idl3_to_idl2_visitor::tranfer_scope_elements - " + "codegen for destination scope failed\n")); + } + } +} + +void +idl3_to_idl2_visitor::gen_factories (AST_Home *node, + AST_Interface &) +{ + AST_Operation **item = 0; + + for (ACE_Unbounded_Queue_Iterator i (node->factories ()); + ! i.done (); + i.advance ()) + { + i.next (item); + + *os << be_nl << be_nl + << IdentifierHelper::orig_sn (node->managed_component ()->name ()).c_str () + << " " + << IdentifierHelper::try_escape ((*item)->original_local_name ()).c_str () + << " ("; + + this->gen_params (*item, (*item)->argument_count ()); + + *os << ")"; + + UTL_ExceptList *exceps = (*item)->exceptions (); + + if (exceps != 0 && exceps->length () > 0) + { + this->gen_exception_list (exceps, "", false); + } + else + { + *os << be_idt_nl + << "raises ("; + } + + *os << "Components::CreateFailure);" << be_uidt; + } +} + +void +idl3_to_idl2_visitor::gen_finders (AST_Home *node, + AST_Interface &) +{ + AST_Operation **item = 0; + + for (ACE_Unbounded_Queue_Iterator i (node->finders ()); + ! i.done (); + i.advance ()) + { + i.next (item); + + *os << be_nl << be_nl + << IdentifierHelper::orig_sn (node->managed_component ()->name ()).c_str () + << " " + << IdentifierHelper::try_escape( (*item)->original_local_name ()).c_str () + << " ("; + + this->gen_params (*item, (*item)->argument_count ()); + + *os << ")"; + + UTL_ExceptList *exceps = (*item)->exceptions (); + + if (exceps != 0 && exceps->length () > 0) + { + this->gen_exception_list (exceps, "", false); + } + else + { + *os << be_idt_nl + << "raises ("; + } + + *os << "Components::FinderFailure);" << be_uidt; + } +} + diff --git a/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h new file mode 100644 index 00000000000..17e8abcb38e --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h @@ -0,0 +1,74 @@ +// $Id$ + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO_IDL3_TO_IDL2_BE_DLL +// +// = FILENAME +// idl3_to_idl2_visitor.h +// +// = DESCRIPTION +// Generates equivalent IDL2 from IDL3. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef TAO_IDL3_TO_IDL2_VISITOR_H +#define TAO_IDL3_TO_IDL2_VISITOR_H + +#include "basic_visitor.h" +#include "utl_scoped_name.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "TAO_IDL3_TO_IDL2_BE_Export.h" + +class TAO_IDL3_TO_IDL2_BE_Export idl3_to_idl2_visitor : public basic_visitor +{ + // + // = TITLE + // idl3_to_idl2_visitor. + // + // = DESCRIPTION + // IDL3 to IDL2 conversion visitor. The methods are + // not pure virtual to facilitate the implementation of some + // derived visitors that override only a few. + // +public: + idl3_to_idl2_visitor (void); + virtual ~idl3_to_idl2_visitor (void); + + virtual int visit_module (AST_Module *node); + virtual int visit_interface (AST_Interface *node); + virtual int visit_component (AST_Component *node); + virtual int visit_component_fwd (AST_ComponentFwd *node); + virtual int visit_provides (AST_Provides *node); + virtual int visit_uses (AST_Uses *node); + virtual int visit_publishes (AST_Publishes *node); + virtual int visit_emits (AST_Emits *node); + virtual int visit_consumes (AST_Consumes *node); + virtual int visit_extended_port (AST_Extended_Port *node); + virtual int visit_mirror_port (AST_Mirror_Port *node); + virtual int visit_connector (AST_Connector *node); + virtual int visit_eventtype (AST_EventType *node); + virtual int visit_eventtype_fwd (AST_EventTypeFwd *node); + virtual int visit_home (AST_Home *node); + virtual int visit_root (AST_Root *node); + +private: + UTL_ScopedName *create_scoped_name (const char *prefix, + const char *local_name, + const char *suffix, + AST_Decl *parent); + void tranfer_scope_elements (AST_Home *src, AST_Interface &dst); + void gen_factories (AST_Home *node, AST_Interface &xplicit); + void gen_finders (AST_Home *node, AST_Interface &xplicit); +}; + +#endif /* TAO_IDL3_TO_IDL2_VISITOR_H */ diff --git a/modules/CIAO/tools/IDL3_to_XMI/CIAO_IDL3_TO_XMI_Export.h b/modules/CIAO/tools/IDL3_to_XMI/CIAO_IDL3_TO_XMI_Export.h new file mode 100644 index 00000000000..d34de5bdfd3 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/CIAO_IDL3_TO_XMI_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl CIAO_IDL3_TO_XMI +// ------------------------------ +#ifndef CIAO_IDL3_TO_XMI_EXPORT_H +#define CIAO_IDL3_TO_XMI_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CIAO_IDL3_TO_XMI_HAS_DLL) +# define CIAO_IDL3_TO_XMI_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CIAO_IDL3_TO_XMI_HAS_DLL */ + +#if !defined (CIAO_IDL3_TO_XMI_HAS_DLL) +# define CIAO_IDL3_TO_XMI_HAS_DLL 1 +#endif /* ! CIAO_IDL3_TO_XMI_HAS_DLL */ + +#if defined (CIAO_IDL3_TO_XMI_HAS_DLL) && (CIAO_IDL3_TO_XMI_HAS_DLL == 1) +# if defined (CIAO_IDL3_TO_XMI_BUILD_DLL) +# define CIAO_IDL3_TO_XMI_Export ACE_Proper_Export_Flag +# define CIAO_IDL3_TO_XMI_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CIAO_IDL3_TO_XMI_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CIAO_IDL3_TO_XMI_BUILD_DLL */ +# define CIAO_IDL3_TO_XMI_Export ACE_Proper_Import_Flag +# define CIAO_IDL3_TO_XMI_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CIAO_IDL3_TO_XMI_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CIAO_IDL3_TO_XMI_BUILD_DLL */ +#else /* CIAO_IDL3_TO_XMI_HAS_DLL == 1 */ +# define CIAO_IDL3_TO_XMI_Export +# define CIAO_IDL3_TO_XMI_SINGLETON_DECLARATION(T) +# define CIAO_IDL3_TO_XMI_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CIAO_IDL3_TO_XMI_HAS_DLL == 1 */ + +// Set CIAO_IDL3_TO_XMI_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CIAO_IDL3_TO_XMI_NTRACE) +# if (ACE_NTRACE == 1) +# define CIAO_IDL3_TO_XMI_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CIAO_IDL3_TO_XMI_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CIAO_IDL3_TO_XMI_NTRACE */ + +#if (CIAO_IDL3_TO_XMI_NTRACE == 1) +# define CIAO_IDL3_TO_XMI_TRACE(X) +#else /* (CIAO_IDL3_TO_XMI_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CIAO_IDL3_TO_XMI_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CIAO_IDL3_TO_XMI_NTRACE == 1) */ + +#endif /* CIAO_IDL3_TO_XMI_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/tools/IDL3_to_XMI/IDL3_TO_XMI.mpc b/modules/CIAO/tools/IDL3_to_XMI/IDL3_TO_XMI.mpc new file mode 100644 index 00000000000..8a927291c91 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/IDL3_TO_XMI.mpc @@ -0,0 +1,65 @@ +// -*- MPC -*- +// $Id$ + +project(CIAO_IDL3_TO_XMI_BE) : acelib, install, ciao_output, crosscompile, ciao_xml_utils, tao_idl_fe { + sharedname = CIAO_IDL3_TO_XMI_BE + dynamicflags = CIAO_IDL3_TO_XMI_BUILD_DLL + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + Source_Files { + be_global.cpp + be_helper.cpp + be_init.cpp + be_produce.cpp + be_sunsoft.cpp + IDL3_to_XMI_visitor.cpp + IR_Simulator_visitor.cpp + Literals.cpp + identifier_helper.cpp + } + + Header_Files { + be_extern.h + be_global.h + be_helper.h + be_sunsoft.h + IDL3_to_XMI_visitor.h + CIAO_IDL3_TO_XMI_Export.h + } +} + +project(CIAO_IDL3_TO_XMI_EXE) : aceexe, install, ciao_output, crosscompile, ciao_xml_utils, tao_idl_mcpp, xerces, tao_idl_fe { + after += CIAO_IDL3_TO_XMI_BE + exename = tao_idl3_to_xmi + libs += CIAO_IDL3_TO_XMI_BE + includes += $(TAO_ROOT) . + exeout = $(CIAO_ROOT)/bin + + // Adding a strict ordering dependency with TAO_IDL_EXE. It appears on some systems, there + // can be a race between these two projects for tao_idl.cpp, causing some errors. + after += TAO_IDL_EXE + + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + + verbatim(gnuace, local) { + ifeq ($(TAO_IDL_PREPROCESSOR),) + CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(strip $(CXX))\\\" + else + CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(subst \\,\\,$(TAO_IDL_PREPROCESSOR))\\\" + endif + + VPATH = $(TAO_ROOT)/TAO_IDL $(TAO_ROOT)/TAO_IDL/driver + } + + Source_Files { + $(TAO_ROOT)/TAO_IDL/driver/drv_args.cpp + $(TAO_ROOT)/TAO_IDL/tao_idl.cpp + } + + Header_Files { + $(TAO_ROOT)/TAO_IDL/include/drv_extern.h + } +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp b/modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp new file mode 100644 index 00000000000..7f20c461165 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.cpp @@ -0,0 +1,2680 @@ +// $Id$ + +#include "IDL3_to_XMI_visitor.h" +#include "identifier_helper.h" + +#include "be_sunsoft.h" +#include "be_extern.h" + +#include "ast_argument.h" +#include "ast_array.h" +#include "ast_attribute.h" +#include "ast_component_fwd.h" +#include "ast_provides.h" +#include "ast_uses.h" +#include "ast_publishes.h" +#include "ast_emits.h" +#include "ast_consumes.h" +#include "ast_enum.h" +#include "ast_enum_val.h" +#include "ast_eventtype.h" +#include "ast_eventtype_fwd.h" +#include "ast_exception.h" +#include "ast_factory.h" +#include "ast_field.h" +#include "ast_home.h" +#include "ast_operation.h" +#include "ast_root.h" +#include "ast_sequence.h" +#include "ast_string.h" +#include "ast_structure_fwd.h" +#include "ast_template_module.h" +#include "ast_template_module_inst.h" +#include "ast_template_module_ref.h" +#include "ast_typedef.h" +#include "ast_union.h" +#include "ast_union_branch.h" +#include "ast_union_fwd.h" +#include "ast_union_label.h" +#include "ast_valuebox.h" +#include "ast_valuetype_fwd.h" +#include "ast_native.h" +#include "utl_exceptlist.h" +#include "utl_identifier.h" +#include "utl_idlist.h" +#include "utl_string.h" +#include "global_extern.h" +#include "nr_extern.h" +#include "ace/OS_NS_stdio.h" +#include "ace/OS_NS_sys_time.h" +#include "ace/ACE.h" + +#include "Literals.h" +#include "XML/XercesString.h" + +#include +#include +#include + +#include "xercesc/dom/DOM.hpp" +#include "xercesc/util/XMLChar.hpp" + +#include "XML/XML_Helper.h" + +using XERCES_CPP_NAMESPACE::DOMDocument; +using XERCES_CPP_NAMESPACE::DOMAttr; +using XERCES_CPP_NAMESPACE::DOMElement; +using XERCES_CPP_NAMESPACE::DOMText; +using XERCES_CPP_NAMESPACE::DOMDocumentType; +using XERCES_CPP_NAMESPACE::XMLChar1_1; +using CIAO::XML::XStr; + +#if 0 +struct Foo { + std::string foo_; + Foo (const char *foo) : foo_ (foo) + { + std::cout << "Entering " << foo_ << std::endl; + } + ~Foo () + { + std::cout << "Leaving " << foo_ << std::endl; + } +}; + +#define XMI_TRACE(X) Foo _foobarbaz (X); +#else +#define XMI_TRACE(X) +#endif + +namespace CIAO +{ + namespace XMI + { + size_t idl3_to_xmi_visitor::current_id_ = 0; + + template + ACE_TCHAR * + idl3_to_xmi_visitor::number_to_string (T val) + { + std::stringstream str; + + str << val; + + return ACE::strnew (ACE_TEXT_CHAR_TO_TCHAR (str.str ().c_str ())); + } + + template <> + ACE_TCHAR * + idl3_to_xmi_visitor::number_to_string (bool val) + { + if (val) + return ACE::strnew (LITERALS[CAPS_TRUE]); + else + return ACE::strnew (LITERALS[CAPS_FALSE]); + } + + template <> + ACE_TCHAR * + idl3_to_xmi_visitor::number_to_string (char val) + { + // There is no way to convert any char to xml encoding nicely + // so we convert it to a decimal integer. This will preserve at + // least a correct char value instead of some non-printable xml. + std::stringstream str; + + str << static_cast(static_cast (val)); + + return ACE::strnew (ACE_TEXT_CHAR_TO_TCHAR (str.str ().c_str ())); + } + + template <> + ACE_TCHAR * + idl3_to_xmi_visitor::number_to_string (wchar_t val) + { + // There is no way to convert any char to xml encoding nicely + // so we convert it to a decimal integer. This will preserve at + // least a correct char value instead of some non-printable xml. + std::stringstream str; + + str << static_cast(static_cast (val)); + + return ACE::strnew (ACE_TEXT_CHAR_TO_TCHAR (str.str ().c_str ())); + } + + idl3_to_xmi_visitor::idl3_to_xmi_visitor (bool skip_imported) + : dom_ (0), + root_ (0), + generalizations_ (0), + associations_ (0), + base_id_ (idl3_to_xmi_visitor::gen_xmi_id ()), + skip_imported_ (skip_imported), + visiting_enum_ (false), + union_disc_ (0) + { + } + + idl3_to_xmi_visitor::~idl3_to_xmi_visitor (void) + { + } + + int + idl3_to_xmi_visitor::visit_decl (AST_Decl *) + { + XMI_TRACE ("got a decl"); + return 0; + } + + char * + copy_scoped_name (UTL_ScopedName *name) + { + ACE_CString fullname; + for (UTL_ScopedNameActiveIterator si (name); + !si.is_done (); + si.next ()) + { + Identifier *item = si.item (); + fullname += item->get_string (); + } + + return fullname.rep (); + } + + int + idl3_to_xmi_visitor::visit_scope (UTL_Scope *node) + { + XMI_TRACE ("got a scope"); + + this->order_ = 0; + + for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls); + !si.is_done (); + si.next ()) + { + AST_Decl *d = si.item (); + d->ast_accept (this); + ++this->order_; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_type (AST_Type *) + { + XMI_TRACE ("got a type"); + return 0; + } + + int + idl3_to_xmi_visitor::visit_predefined_type (AST_PredefinedType *node) + { + XMI_TRACE ("predef type"); + + char const *local_name = 0; + switch (node->pt ()) + { + case AST_PredefinedType::PT_pseudo: + // Only a limited number of predefined pseudo types + // needs our attention. + local_name = node->original_local_name ()->get_string (); + if (ACE_OS::strcmp (local_name, "TypeCode") == 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_TC]); + } + default: + break; + } + return 0; + } + + int + idl3_to_xmi_visitor::visit_module (AST_Module *node) + { + XMI_TRACE ("module"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) == 0) + { + // If the module is reopened then put it on the stack. + NS_Guard ns_guard (ec.ns_.c_str (), this); + ES_Guard owned_guard (ec.elem_, this); + this->visit_scope (node); + // And don't do anything more. + return 0; + } + + ES_Guard package_guard (LITERALS[PACKAGE_TAG], this); + this->gen_common_elements (node, LITERALS[ST_MODULE]); + + { + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + ES_Guard owned_guard (LITERALS[OWNEDELEMENT_TAG], this); + + // Save ownedElement to add to it later if the module + // will be reopened. + this->stack_.top (ec.elem_); + // Same save namespace string. + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + + this->visit_scope (node); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_template_module ( + AST_Template_Module *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_template_module_inst ( + AST_Template_Module_Inst *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_template_module_ref( + AST_Template_Module_Ref *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_interface (AST_Interface *node) + { + XMI_TRACE ("interface"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_INTF]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + + { // Operations. + ES_Guard owned_guard (LITERALS[OWNEDELEMENT_TAG], this); + this->cached_type_ = node; + this->visit_scope (node); + this->cached_type_ = 0; + } + + // Inheritance + for (long i = 0; i < node->n_inherits (); ++i) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->inherits ()[i]->repoID ()))); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_interface_fwd (AST_InterfaceFwd *node) + { + XMI_TRACE ("interface_fwd"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_INTF]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_valuebox (AST_ValueBox *node) + { + XMI_TRACE ("valuebox"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_BOXVALUE]); + + // add a generalization for the value we box + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->boxed_type ()->repoID ()))); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + void + idl3_to_xmi_visitor::visit_valuetype_impl (AST_ValueType *node) + { + try + { + // isAbstract + if (node->is_abstract ()) + { + this->set_attribute (LITERALS[ABSTRACT], LITERALS[_TRUE]); + } + else + { + this->set_attribute (LITERALS[ABSTRACT], LITERALS[_FALSE]); + } + + if (node->inherits_concrete () != 0) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->inherits_concrete ()->repoID ()))); + } + + for (long i = 0; i < node->n_supports (); ++i) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->supports ()[i]->repoID ()))); + } + + ES_Guard oe_guard (LITERALS[OWNEDELEMENT_TAG], this); + + this->cached_type_ = node; + this->visit_scope (node); + this->cached_type_ = 0; + } + catch (Error &err) + { + err.node (node); + throw; + } + } + + int + idl3_to_xmi_visitor::visit_valuetype (AST_ValueType *node) + { + XMI_TRACE ("valuetype"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_VALUE]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + + this->visit_valuetype_impl (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_valuetype_fwd (AST_ValueTypeFwd *node) + { + XMI_TRACE ("valuetype_fwd"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_VALUE]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_eventtype (AST_EventType *node) + { + XMI_TRACE ("eventtype"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_EVENT]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + + this->visit_valuetype_impl (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_eventtype_fwd (AST_EventTypeFwd *node) + { + XMI_TRACE ("eventtype_fwd"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_EVENT]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_component (AST_Component *node) + { + XMI_TRACE ("component"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_COMP]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + + for (long i = 0; i < node->n_supports (); ++i) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->supports ()[i]->repoID ()))); + + } + + if (node->base_component () != 0) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->base_component ()->repoID ()))); + } + + ES_Guard oe_guard (LITERALS[OWNEDELEMENT_TAG], this); + + this->cached_type_ = node; + this->visit_scope (node); + this->cached_type_ = 0; + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_component_fwd (AST_ComponentFwd *node) + { + XMI_TRACE ("component_fwd"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_COMP]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_provides (AST_Provides *node) + { + this->add_port (LITERALS[ST_PROVIDES], node); + return 0; + } + + int + idl3_to_xmi_visitor::visit_uses (AST_Uses *node) + { + this->add_port (LITERALS[ST_USES], node); + return 0; + } + + int + idl3_to_xmi_visitor::visit_publishes (AST_Publishes *node) + { + this->add_port (LITERALS[ST_PUBLISH], node); + return 0; + } + + int + idl3_to_xmi_visitor::visit_emits (AST_Emits *node) + { + this->add_port (LITERALS[ST_EMITS], node); + return 0; + } + + int + idl3_to_xmi_visitor::visit_consumes (AST_Consumes *node) + { + this->add_port (LITERALS[ST_CONSUMES], node); + return 0; + } + + int + idl3_to_xmi_visitor::visit_porttype (AST_PortType *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_extended_port (AST_Extended_Port *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_mirror_port (AST_Mirror_Port *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_connector (AST_Connector *) + { + return 0; + } + + int + idl3_to_xmi_visitor::visit_home (AST_Home *node) + { + XMI_TRACE ("home"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ES_Guard es_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_HOME]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + for (long i = 0; i < node->n_supports (); ++i) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->supports ()[i]->repoID ()))); + } + + if (node->base_home () != 0) + { + XStr xid (this->add_generalization ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->base_home ()->repoID ()))); + } + + if (node->factories ().size () != 0) + { + ES_Guard noe_guard (LITERALS[OWNEDELEMENT_TAG], this); + + for (size_t i = 0; i < node->factories ().size (); ++i) + { + AST_Operation **op = 0; + node->factories ().get (op, i); + this->visit_operation_impl (*op, LITERALS[ST_HFACT]); + } + } + + if (node->finders () .size () != 0) + { + throw Error ("home finders not supported", node); + } + + this->add_managed_component ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + ACE_TEXT_CHAR_TO_TCHAR (node->managed_component ()->repoID ())); + + ES_Guard noe_guard (LITERALS[OWNEDELEMENT_TAG], this); + + // attributes in scope. + this->cached_type_ = node; + this->visit_scope (node); + this->cached_type_ = 0; + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_factory (AST_Factory *node) + { + XMI_TRACE ("factory"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + throw Error ("Factories not supported", node); + + return 0; + } + + void + idl3_to_xmi_visitor::visit_struct_impl (AST_Structure *node) + { + try + { + ES_Guard ns_oe_guard (LITERALS[OWNEDELEMENT_TAG], this); + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + } + + int + idl3_to_xmi_visitor::visit_structure (AST_Structure *node) + { + XMI_TRACE ("structure"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_STRUCT]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + + this->visit_struct_impl (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_structure_fwd (AST_StructureFwd *node) + { + XMI_TRACE ("structure_fwd"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_STRUCT]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_exception (AST_Exception *node) + { + XMI_TRACE ("exception"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[EXCEPTION_TAG], this); + this->gen_common_elements (node, LITERALS[ST_EX]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + + this->visit_struct_impl (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_expression (AST_Expression *) + { + XMI_TRACE ("expression"); + + // we don't particularly care about expressions. + + return 0; + } + + int + idl3_to_xmi_visitor::visit_enum (AST_Enum *node) + { + XMI_TRACE ("enum"); + + if (this->skip_imported_ && node->imported ()) + { + this->visit_scope (node); + return 0; + } + + try + { + ES_Guard es_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_ENUM]); + + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + ES_Guard oe_guard (LITERALS[OWNEDELEMENT_TAG], this); + + this->visiting_enum_ = true; + this->visit_scope (node); + this->visiting_enum_ = false; + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + void + idl3_to_xmi_visitor::visit_operation_impl (AST_Operation *op, + const ACE_TCHAR *stereotype) + { + XMI_TRACE ("operation"); + + if (this->skip_imported_ && op->imported ()) + { + this->visit_scope (op); + return; + } + + // This is a mess because the operation has so many special cases.... + try + { + ES_Guard op_guard (LITERALS[OP_TAG], this); + + // name and visiblity + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (op->original_local_name ()->get_string ())); + + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + + this->set_containing_element (LITERALS[OWNER]); + + // If we have a stereotype, set it + if (stereotype != 0) + { + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], + stereotype); + } + + // XMI ID + this->create_and_store_xmi_id (op); + + // while not strictly a namespace, the repo id goes on the + // namespace stack as the owner of contained elements. + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (op->repoID ()), this); + + { // we need to generate the tagged value in a custom way here + ES_Guard me_guard (LITERALS[ME_TV_TAG], this); + + { + ES_Guard tv_guard (LITERALS[TV_TAG], this); + this->set_attribute (LITERALS[TAG], LITERALS[TYPEID]); + this->set_attribute (LITERALS[VALUE], + ACE_TEXT_CHAR_TO_TCHAR (op->repoID ())); + } + + UTL_ExceptList *exceptions = op->exceptions (); + + if (exceptions != 0 && exceptions->length () > 0) + { + for (UTL_ExceptlistActiveIterator ei (exceptions); + !ei.is_done (); + ei.next ()) + { + ES_Guard tv_guard (LITERALS[TV_TAG], this); + this->set_attribute (LITERALS[TAG], LITERALS[RAISES]); + this->set_attribute ( + LITERALS[VALUE], + ACE_TEXT_CHAR_TO_TCHAR (ei.item ()->full_name ())); + } + } + } + + ES_Guard bfp_guard (LITERALS[BFP_TAG], this); + + // return value + { + ES_Guard param_guard (LITERALS[PARAM_TAG], this); + + // I don't think anything else can refer to the parameter by + // xid, so I won't store it. + XStr xid = this->gen_xmi_id (op); + + this->set_attribute (LITERALS[XMI_ID], xid); + + this->set_attribute (LITERALS[KIND], LITERALS[RETURN]); + + this->set_containing_element (LITERALS[BFEATURE]); + + xid = this->lookup_type_xid (op->return_type ()); + this->set_attribute (LITERALS[TYPE], + xid); + } + + if (op->argument_count () != 0) + { + // Visit arguments + for (UTL_ScopeActiveIterator si (op, UTL_Scope::IK_decls); + !si.is_done ();) + { + si.item ()->ast_accept (this); + si.next (); + } + } + } + catch (Error &err) + { + err.node (op); + throw; + } + } + + int + idl3_to_xmi_visitor::visit_operation (AST_Operation *op) + { + XMI_TRACE ("operation"); + + this->visit_operation_impl (op, 0); + + return 0; + } + + int + idl3_to_xmi_visitor::visit_field (AST_Field *node) + { + XMI_TRACE ("field"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ES_Guard attr_guard (LITERALS[ATTR_TAG], this); + + if (node->field_type ()->node_type () == AST_Decl::NT_sequence) + { + AST_Sequence* sequence = + AST_Sequence::narrow_from_decl (node->field_type ()); + sequence->ast_accept (this); + // There is no need to proceed any further. + return 0; + } + else if (node->field_type ()->node_type () == AST_Decl::NT_array) + { + AST_Array* array = + AST_Array::narrow_from_decl (node->field_type ()); + array->ast_accept (this); + // There is no need to proceed any further. + return 0; + } + + // I don't think anything else can refer to the parameter by + // xid, so I won't store it. + XStr xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (node->original_local_name ()->get_string ())); + + switch (node->visibility ()) + { + case AST_Field::vis_NA: + case AST_Field::vis_PUBLIC: + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + break; + case AST_Field::vis_PRIVATE: + this->set_attribute (LITERALS[VISIBIL], LITERALS[_PRIVATE]); + break; + default: + throw Error ("unknown visibility type detected.", node); + } + + // I think this is fixed. + this->set_attribute (LITERALS[MULT], LITERALS[MULT_OTO]); + + this->set_containing_element (LITERALS[OWNER]); + + xid = this->lookup_type_xid (node->field_type ()); + this->set_attribute (LITERALS[TYPE], + xid); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_argument (AST_Argument *node) + { + XMI_TRACE ("argument"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ES_Guard param_guard (LITERALS[PARAM_TAG], this); + + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (node->original_local_name ()->get_string ())); + + // I don't think anything else can refer to the parameter by + // xid, so I won't store it. + XStr xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + + // kind + switch (node->direction ()) + { + case AST_Argument::dir_IN: + this->set_attribute (LITERALS[KIND], LITERALS[_IN]); + break; + + case AST_Argument::dir_INOUT: + this->set_attribute (LITERALS[KIND], LITERALS[INOUT]); + break; + + case AST_Argument::dir_OUT: + this->set_attribute (LITERALS[KIND], LITERALS[_OUT]); + break; + + default: + throw Error ("Unknown argument direction", node); + } + + this->set_containing_element (LITERALS[BFEATURE]); + + xid = this->lookup_type_xid (node->field_type ()); + this->set_attribute (LITERALS[TYPE], + xid); + + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_attribute (AST_Attribute *node) + { + XMI_TRACE ("attribute"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + if (this->cached_type_ == 0) + { + ACE_ERROR ((LM_ERROR, "Zounds! %d\n", + this->cached_type_)); + throw Error ("Internal error - attribute expected " + "to have a cached type, but didn't"); + } + + try + { + // *** + NS_Guard global_ns (ACE_TEXT ("::"), this); + ES_Guard assoc_group (this->associations_, this); + ES_Guard assoc_g (LITERALS[ASSOC_TAG], this); + + // I don't think anything else can refer to the attribute by + // xid, so I won't store it. + XStr xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + this->set_containing_element (LITERALS[NS]); + + if (node->readonly ()) + { + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], + LITERALS[ST_RO]); + } + + ES_Guard assoc_conn (LITERALS[ASSOC_CONN_TAG], this); + + { // Containing type + ES_Guard assoc_end (LITERALS[ASSOC_END_TAG], this); + this->set_attribute (LITERALS[MULT], ACE_TEXT ("1")); + this->find_and_set_xid_as_attr ( + LITERALS[TYPE], + ACE_TEXT_CHAR_TO_TCHAR (this->cached_type_->repoID ())); + } + + { + ES_Guard assoc_end (LITERALS[ASSOC_END_TAG], this); + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (node->original_local_name ()->get_string ())); + this->set_attribute (LITERALS[MULT], ACE_TEXT ("1")); + xid = this->lookup_type_xid (node->field_type ()); + this->set_attribute (LITERALS[TYPE], xid); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_union (AST_Union *node) + { + XMI_TRACE ("union"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_UNION]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + + ES_Guard class_guard (ec.elem_, this); + NS_Guard ns_guard (ec.ns_.c_str (), this); + ES_Guard oe_guard (LITERALS[OWNEDELEMENT_TAG], this); + + // Set discriminator type + this->union_disc_ = node->disc_type (); + this->visit_scope (node); + this->union_disc_ = 0; + } + catch (Error &err) + { + this->union_disc_ = 0; + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_union_fwd (AST_UnionFwd *node) + { + XMI_TRACE ("union_fwd"); + + try + { + ElementContext ec; + if (this->repo_id_map_.find (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec) != 0) + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + this->gen_common_elements (node, LITERALS[ST_UNION]); + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + + // Save in order not to generate same element later. + this->stack_.top (ec.elem_); + this->namespace_.top (ec.ns_); + this->repo_id_map_.bind (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), ec); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_union_branch (AST_UnionBranch *node) + { + XMI_TRACE ("union_branch"); + + try + { + ES_Guard attr_guard (LITERALS[ATTR_TAG], this); + + // I don't think anything else can refer to the parameter by + // xid, so I won't store it. + XStr xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + + // name + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (node->original_local_name ()->get_string ())); + + // visiblity + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + + this->set_containing_element (LITERALS[OWNER]); + + // I think this is fixed. + this->set_attribute (LITERALS[MULT], LITERALS[MULT_ZTO]); + + xid = this->lookup_type_xid (node->field_type ()); + this->set_attribute (LITERALS[TYPE], + xid); + + { + ES_Guard me_tv_guard (LITERALS[ME_TV_TAG], this); + + { + ES_Guard tv_guard (LITERALS[TV_TAG], this); + this->set_attribute (LITERALS[TAG], LITERALS[IDLORDER]); + + // convert the order value to a string + // need a buffer, with a little safety padding + ACE_Auto_Basic_Array_Ptr buffer + (this->number_to_string (this->order_)); + + this->set_attribute (LITERALS[VALUE], buffer.get ()); + } + + for (unsigned long i = 0; i < node->label_list_length (); ++i) + { + this->visit_union_label (node->label (i)); + } + + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + ACE_TCHAR * + idl3_to_xmi_visitor::union_label_value (AST_Expression *exp) + { + ACE_Auto_Basic_Array_Ptr buffer; + + // @@TODO: Yuck, there has got to be a better way.... + AST_Expression::AST_ExprValue *ev = exp->ev (); + + if (exp->ec () != AST_Expression::EC_symbol || + this->union_disc_->node_type () == AST_Decl::NT_typedef || + this->union_disc_->node_type () == AST_Decl::NT_pre_defined) + { + /*AST_Expression::ExprType type; + + if (this->union_disc_->node_type () == AST_Decl::NT_typedef) + { + AST_Typedef *td (AST_Typedef::narrow_from_decl (this->union_disc_)); + type = td->base_type ()->node_type (); + } + else type = ev->et;*/ + + // Decode the type + switch (ev->et) + { + case AST_Expression::EV_long: + buffer.reset (this->number_to_string (ev->u.lval)); + break; + case AST_Expression::EV_ulong: + buffer.reset (this->number_to_string (ev->u.ulval)); + break; + case AST_Expression::EV_short: + buffer.reset (this->number_to_string (ev->u.sval)); + break; + case AST_Expression::EV_ushort: + buffer.reset (this->number_to_string (ev->u.usval)); + break; + case AST_Expression::EV_bool: + buffer.reset (this->number_to_string (ev->u.bval)); + break; + case AST_Expression::EV_char: + buffer.reset (this->number_to_string (ev->u.cval)); + break; + default: + throw Error ("Unknown union union label type"); + } + } + else + { + AST_Enum *desc (0); + + if ((desc = AST_Enum::narrow_from_decl (this->union_disc_)) == 0) + { + throw Error ("Descriminator type is not an enum"); + } + + AST_Decl *ev_decl = + desc->lookup_by_name (exp->n (), 1); + + if (ev_decl == 0) + { + throw Error ("Couldn't look up enum name"); + } + + AST_EnumVal *ev = AST_EnumVal::narrow_from_decl (ev_decl); + + if (ev == 0) + { + throw Error ("Couldn't look up enum name"); + } + + buffer.reset (ACE::strnew (ACE_TEXT_CHAR_TO_TCHAR (ev->full_name ()))); + //const char *name = desc->lookup_by_value (exp)->full_name (); + // const char *name = exp->n (); + //buffer.reset (copy_scoped_name (exp->n ())); + } + + if (buffer.get () == 0) + { + throw Error ("Unable to parse union label"); + } + + return buffer.release (); + } + + int + idl3_to_xmi_visitor::visit_union_label (AST_UnionLabel *node) + { + XMI_TRACE ("union_label"); + + ES_Guard tv_guard (LITERALS[TV_TAG], this); + this->set_attribute (LITERALS[TAG], LITERALS[CASE]); + + if (node->label_kind () == AST_UnionLabel::UL_default) + { + this->set_attribute (LITERALS[VALUE], + LITERALS[DEFAULT_UNION]); + } + else + { + ACE_Auto_Basic_Array_Ptr buffer ( + this->union_label_value (node->label_val ())); + + this->set_attribute (LITERALS[VALUE], buffer.get ()); + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_constant (AST_Constant *node) + { + XMI_TRACE ("constant"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ES_Guard attr_guard (LITERALS[ATTR_TAG], this); + + this->set_attribute (LITERALS[OWNER_SCOPE], LITERALS[CLASSIFIER]); + this->set_attribute (LITERALS[CHANGEABLE], LITERALS[FROZEN]); + this->gen_common_elements (node, LITERALS[ST_CONST]); + + // Constant type + const ACE_TCHAR *exprtype (0); + AST_Expression::AST_ExprValue *val + (node->constant_value ()->ev ()); + + ACE_Auto_Basic_Array_Ptr str_value; + + switch (node->et ()) + { + case AST_Expression::EV_short: + exprtype = LITERALS[ST_SHORT]; + str_value.reset (this->number_to_string (val->u.sval)); + break; + case AST_Expression::EV_ushort: + exprtype = LITERALS[ST_US]; + str_value.reset (this->number_to_string (val->u.usval)); + break; + case AST_Expression::EV_long: + exprtype = LITERALS[ST_LONG]; + str_value.reset (this->number_to_string (val->u.lval)); + break; + case AST_Expression::EV_ulong: + exprtype = LITERALS[ST_UL]; + str_value.reset (this->number_to_string (val->u.ulval)); + break; + case AST_Expression::EV_longlong: + exprtype = LITERALS[ST_LL]; + str_value.reset (this->number_to_string (val->u.llval)); + case AST_Expression::EV_ulonglong: + exprtype = LITERALS[ST_ULL]; + str_value.reset (this->number_to_string (val->u.ullval)); + break; + case AST_Expression::EV_float: + exprtype = LITERALS[ST_FLOAT]; + str_value.reset (this->number_to_string (val->u.fval)); + break; + case AST_Expression::EV_double: + exprtype = LITERALS[ST_DOUBLE]; + str_value.reset (this->number_to_string (val->u.dval)); + break; + case AST_Expression::EV_longdouble: + exprtype = LITERALS[ST_LD]; + str_value.reset (this->number_to_string (val->u.dval)); + break; + case AST_Expression::EV_char: + exprtype = LITERALS[ST_CHAR]; + str_value.reset (this->number_to_string (val->u.cval)); + break; + case AST_Expression::EV_wchar: + exprtype = LITERALS[ST_WCHAR]; + str_value.reset (this->number_to_string (val->u.wcval)); + break; + case AST_Expression::EV_octet: + exprtype = LITERALS[ST_OCTET]; + str_value.reset (this->number_to_string (val->u.dval)); + break; + case AST_Expression::EV_bool: + exprtype = LITERALS[ST_BOOL]; + str_value.reset (this->number_to_string (val->u.bval)); + break; + case AST_Expression::EV_string: + exprtype = LITERALS[ST_STR]; + str_value.reset (ACE::strnew ( + ACE_TEXT_CHAR_TO_TCHAR (val->u.strval->get_string ()))); + break; + case AST_Expression::EV_wstring: + exprtype = LITERALS[ST_WSTR]; + str_value.reset (ACE::strnew ( + ACE_TEXT_CHAR_TO_TCHAR (val->u.wstrval))); + break; + case AST_Expression::EV_enum: + { + UTL_Scope *s = node->defined_in (); + AST_Decl *d = + s->lookup_by_name (node->constant_value ()->n (), 1); + exprtype = ACE_TEXT_CHAR_TO_TCHAR ( + ScopeAsDecl (d->defined_in ())->repoID ()); + str_value.reset (ACE::strnew ( + ACE_TEXT_CHAR_TO_TCHAR (d->full_name ()))); + } + break; + + default: + throw Error ("Unsupported constant type", node); + } + + // type attribute + XStr xid (this->lookup_xid (exprtype)); + this->set_attribute (LITERALS[TYPE], + xid); + + { + ES_Guard me_tv (LITERALS[ME_TV_TAG], this); + { + ES_Guard tv (LITERALS[TV_TAG], this); + this->set_attribute (LITERALS[TAG], LITERALS[INIT_VAL]); + this->set_attribute (LITERALS[VALUE], str_value.get ()); + } + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_enum_val (AST_EnumVal *node) + { + XMI_TRACE ("enum val"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + if (!this->visiting_enum_) + { + // It makes sence only to process enumvals in enum "scope". + return 0; + } + + try + { + ES_Guard att_guard (LITERALS[ATTR_TAG], this); + + this->create_and_store_xmi_id ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), + node); + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (node->original_local_name ()->get_string ())); + + // I think this is fixed. + this->set_attribute (LITERALS[MULT], LITERALS[MULT_OTO]); + this->set_containing_element (LITERALS[OWNER]); + + ES_Guard me_guard (LITERALS[ME_TV_TAG], this); + ES_Guard tv_guard (LITERALS[TV_TAG], this); + + this->set_attribute (LITERALS[TAG], LITERALS[IDLORDER]); + + // convert the enum value to a string + // need a buffer, with a little safety padding + + ACE_Auto_Basic_Array_Ptr buffer + (this->number_to_string (node->constant_value ()->ev ()->u.eval)); + + this->set_attribute (LITERALS[VALUE], buffer.get ()); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_array (AST_Array *node) + { + XMI_TRACE ("array val"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + this->gen_common_elements (node, + LITERALS[ST_ARR]); + + this->gen_array_associations (node, node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + void + idl3_to_xmi_visitor::gen_array_associations (AST_Decl *node, + AST_Array *array) + { + // + NS_Guard global_ns (ACE_TEXT ("::"), this); + + // + ES_Guard assoc_group (this->associations_, this); + ES_Guard assoc_g (LITERALS[ASSOC_TAG], this); + + XStr xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + this->set_containing_element (LITERALS[NS]); + + // + ES_Guard assoc_conn (LITERALS[ASSOC_CONN_TAG], this); + + { + // + ES_Guard assocend (LITERALS[ASSOC_END_TAG], this); + + this->set_attribute (LITERALS[MULT], LITERALS[MULT_ZTO]); + + xid = this->lookup_xid (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ())); + this->set_attribute (LITERALS[TYPE], xid); + + // + ES_Guard assoc_qual (LITERALS[ASSOC_END_QUAL_TAG], this); + + for (unsigned long i = 0; + array != 0 && i < array->n_dims (); + ++i) + { + // + // N.B. that type is long. + ES_Guard attr (LITERALS[ATTR_TAG], this); + + xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + + std::stringstream str; + str << LITERALS[INDEX]; + str << i; + + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (str.str ().c_str ())); + xid = this->lookup_xid (LITERALS[ST_LONG]); + this->set_attribute (LITERALS[TYPE], xid); + + // + ES_Guard me_c (LITERALS[ME_CONS_TAG], this); + + // + ES_Guard cons (LITERALS[CONSTRAINT], this); + + xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + + // + ES_Guard me_tv (LITERALS[ME_TV_TAG], this); + + // + ES_Guard tv (LITERALS[TV_TAG], this); + + this->set_attribute (LITERALS[TAG], LITERALS[CONST_UPPER]); + + ACE_Auto_Basic_Array_Ptr buffer ( + this->number_to_string (array->dims ()[i]->ev ()->u.ulval)); + + this->set_attribute (LITERALS[VALUE], buffer.get ()); + } + } + + // - type is Char for this IDL + ES_Guard assoc_end (LITERALS[ASSOC_END_TAG], this); + this->set_attribute (LITERALS[MULT], LITERALS[MULT_OTO]); + + XStr arr_type = this->lookup_type_xid (array->base_type ()); + this->set_attribute (LITERALS[TYPE], arr_type); + } + + int + idl3_to_xmi_visitor::visit_sequence (AST_Sequence *node) + { + XMI_TRACE ("sequence val"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + this->gen_common_elements (node, + LITERALS[ST_SEQ]); + + // Generate the bounds and type on the sequence, which is an + // association in the association tree. + this->gen_sequence_associations (node, node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + void + idl3_to_xmi_visitor::gen_sequence_associations (AST_Decl *node, + AST_Sequence *sequence) + { + // + NS_Guard global_ns (ACE_TEXT ("::"), this); + + // + ES_Guard assoc_group (this->associations_, this); + ES_Guard assoc_g (LITERALS[ASSOC_TAG], this); + + XStr xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + this->set_containing_element (LITERALS[NS]); + + // + ES_Guard assoc_conn (LITERALS[ASSOC_CONN_TAG], this); + + { + // + ES_Guard assocend (LITERALS[ASSOC_END_TAG], this); + + this->set_attribute (LITERALS[MULT], LITERALS[MULT_ZTO]); + + xid = this->lookup_xid (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ())); + this->set_attribute (LITERALS[TYPE], xid); + + // + ES_Guard assoc_qual (LITERALS[ASSOC_END_QUAL_TAG], this); + + ES_Guard attr (LITERALS[ATTR_TAG], this); + + xid = this->gen_xmi_id (node); + this->set_attribute (LITERALS[XMI_ID], xid); + this->set_attribute (LITERALS[NAME], LITERALS[INDEX]); + xid = this->lookup_xid (LITERALS[ST_LONG]); + this->set_attribute (LITERALS[TYPE], xid); + + ES_Guard me_c (LITERALS[ME_CONS_TAG], this); + ES_Guard cons (LITERALS[CONSTRAINT], this); + ES_Guard me_tv (LITERALS[ME_TV_TAG], this); + ES_Guard tv (LITERALS[TV_TAG], this); + + this->set_attribute (LITERALS[TAG], LITERALS[CONST_UPPER]); + + // @@TODO: need to extract bound from node. + if (sequence->unbounded ()) + { + this->set_attribute (LITERALS[VALUE], + LITERALS[UNBOUNDED_SEQ]); + } + else + { // bounded sequence + // convert the array bound to a string + // need a buffer, with a little safety padding + ACE_Auto_Basic_Array_Ptr buffer ( + this->number_to_string (sequence->max_size ()->ev ()->u.ulval)); + + this->set_attribute (LITERALS[VALUE], buffer.get ()); + } + } + + // - type is Char for this IDL + ES_Guard assoc_end (LITERALS[ASSOC_END_TAG], this); + this->set_attribute (LITERALS[MULT], LITERALS[MULT_OTO]); + + XStr seq_type = this->lookup_type_xid (sequence->base_type ()); + this->set_attribute (LITERALS[TYPE], seq_type); + } + + int + idl3_to_xmi_visitor::visit_string (AST_String *) + { + XMI_TRACE ("string"); + return 0; + } + + int + idl3_to_xmi_visitor::visit_typedef (AST_Typedef *node) + { + XMI_TRACE ("typedef"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + + // Anonymous Sequences and arrays appear to be a special case + AST_Decl *base (node->base_type ()); + if (base->node_type () == AST_Decl::NT_sequence) + { + this->gen_common_elements (node, LITERALS[ST_SEQ]); + + AST_Sequence* sequence = + AST_Sequence::narrow_from_decl (base); + this->gen_sequence_associations (node, sequence); + } + else if (base->node_type () == AST_Decl::NT_array) + { + this->gen_common_elements (node, LITERALS[ST_ARR]); + + AST_Array* array = + AST_Array::narrow_from_decl (base); + this->gen_array_associations (node, array); + } + else + { + this->gen_common_elements (node, + LITERALS[ST_TYPEDEF]); + + // Generalization. Assignment required for memory management. + XStr xid = this->add_generalization (node, + node->base_type ()); + ACE_UNUSED_ARG (xid); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + idl3_to_xmi_visitor::visit_root (AST_Root *node) + { + XMI_TRACE ("root"); + try + { + ACE_CString fn; + + if ((fn = be_global->filename ()) == "") + { + fn = idl_global->stripped_filename ()->get_string (); + fn = fn.substr (0, fn.rfind ('.')); + fn += ".xmi"; + } + + const char *path = be_global->output_dir (); + ACE_CString target_name; + + if (path != 0) + { + target_name = path; + target_name += "/"; + } + + target_name += fn; + + CIAO::XML::NoOp_Resolver res_func; + CIAO::XML::XML_Schema_Resolver<> resolver (res_func); + CIAO::XML::XML_Error_Handler handler; + CIAO::XML::XML_Helper<> helper (resolver, handler); + + // Create XML document + std::auto_ptr doctype ( + helper.create_doctype (ACE_TEXT("XMI"), + 0, + ACE_TEXT_CHAR_TO_TCHAR (be_global->dtd ()))); + + if ((this->dom_ = helper.create_dom (ACE_TEXT("XMI"), + ACE_TEXT(""), + doctype.get ())) == 0) + ACE_ERROR_RETURN ((LM_ERROR, "Unable to create XML document."), -1); + + this->root_ = this->dom_->getDocumentElement (); + + this->stack_.push (this->root_); + + this->set_attribute (LITERALS[VERSION_TAG], + LITERALS[VERSION_VALUE]); + + this->set_attribute (LITERALS[NS_TAG], + LITERALS[NS_VALUE]); + + DOMElement *tmp = 0; + + // Pregenerate stereotypes to cache xmi.ids. + DOMElement *stereotypes = this->generate_stereotypes (); + + // Create XMI header + { + ES_Guard ht_g (LITERALS[HEADER_TAG], this); + ES_Guard d_t (LITERALS[DOC_TAG], this); + ES_Guard e_t (LITERALS[EXPORTER_TAG], this); + this->add_text (LITERALS[EXPORTER_VALUE]); + } + + this->stack_.push (this->create_element (LITERALS[CONTENT_TAG])); + this->stack_.push (this->create_element (LITERALS[MODEL_TAG])); + + // Store the base model xid + this->set_attribute (LITERALS[XMI_ID], this->base_id_); + this->id_map_.bind (ACE_TEXT ("::"), this->base_id_); + + + // Global namespace + this->stack_.push (this->create_element (LITERALS[OWNEDELEMENT_TAG])); + this->namespace_.push (ACE_TEXT ("::")); + + // Create generalizations and associations elements, but don't join + // them to the tree yet + this->associations_ = + this->dom_->createElement (XStr (LITERALS[OWNEDELEMENT_TAG])); + this->generalizations_ = + this->dom_->createElement (XStr (LITERALS[OWNEDELEMENT_TAG])); + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_root - " + "codegen for scope failed\n"), + -1); + } + + this->stack_.pop (tmp); + + this->stack_.top (tmp); + + tmp->appendChild (this->generalizations_); + tmp->appendChild (this->associations_); + tmp->appendChild (stereotypes); + + helper.write_DOM (this->dom_, + ACE_TEXT_CHAR_TO_TCHAR (target_name.c_str ())); + } + catch (const Error &ex) + { + if (ex.node_ != 0) + ACE_ERROR ((LM_ERROR, "%s:%d:error: %s\n", + ex.node_->file_name ().c_str (), + ex.node_->line (), + ex.diag_.c_str ())); + else + ACE_ERROR ((LM_ERROR, "::error:%s\n", + ex.diag_.c_str ())); + + return -1; + } + return 0; + } + + int + idl3_to_xmi_visitor::visit_native (AST_Native *node) + { + XMI_TRACE ("native"); + + if (this->skip_imported_ && node->imported ()) + { + return 0; + } + + try + { + ES_Guard class_guard (LITERALS[CLASS_TAG], this); + + this->gen_common_elements (node, LITERALS[ST_NATIVE]); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + void + idl3_to_xmi_visitor::set_attribute (const ACE_TCHAR *name, + const ACE_TCHAR *value) + { + DOMElement *ele = 0; + this->stack_.top (ele); + + ele->setAttribute (XStr (name), XStr (value)); + } + + + void + idl3_to_xmi_visitor::set_attribute (const ACE_TCHAR *name, + const XMLCh *value) + { + DOMElement *ele = 0; + this->stack_.top (ele); + + ele->setAttribute (XStr (name), value); + } + + void + idl3_to_xmi_visitor::add_text (const ACE_TCHAR *text) + { + DOMElement *ele = 0; + this->stack_.top (ele); + + DOMText *node = this->dom_->createTextNode (XStr (text)); + ele->appendChild (node); + } + + DOMElement * + idl3_to_xmi_visitor::create_element (const ACE_TCHAR *name) + { + DOMElement *ele = 0; + this->stack_.top (ele); + + DOMElement *node = this->dom_->createElement (XStr (name)); + + ele->appendChild (node); + + return node; + } + + DOMElement * + idl3_to_xmi_visitor::generate_stereotypes (void) + { + DOMElement *retval = + this->dom_->createElement (XStr (LITERALS[OWNEDELEMENT_TAG])); + + // put it on the stack to subsequent create_element calls refer to it. + this->stack_.push (retval); + + this->add_stereotype (ST_CONSUMES, ASSOC); + this->add_stereotype (ST_ANON_SEQ, CLASS); + this->add_stereotype (ST_PRINC, DATATYPE); + this->add_stereotype (ST_UNION, CLASS); + this->add_stereotype (ST_USES, ASSOC); + this->add_stereotype (ST_SEQ, CLASS); + this->add_stereotype (ST_ROE, __NULL); + this->add_stereotype (ST_RO, __NULL); + this->add_stereotype (ST_OBJ, DATATYPE); + this->add_stereotype (ST_STR, DATATYPE); + this->add_stereotype (ST_LD, DATATYPE); + this->add_stereotype (ST_ANON_ARR, CLASS); + this->add_stereotype (ST_ALIAS, CLASS); + this->add_stereotype (ST_NULL, DATATYPE); + this->add_stereotype (ST_VALUE, CLASS); + this->add_stereotype (ST_VOID, DATATYPE); + this->add_stereotype (ST_EX, CLASS); + this->add_stereotype (ST_OCTET, DATATYPE); + this->add_stereotype (ST_MANAGES, ASSOC); + this->add_stereotype (ST_WSTR, DATATYPE); + this->add_stereotype (ST_FLOAT, DATATYPE); + this->add_stereotype (ST_ENUM, CLASS); + this->add_stereotype (ST_VAL_SUP, CLASS); + this->add_stereotype (ST_MODULE, PACKAGE); + this->add_stereotype (ST_HFINDER, CLASS); + this->add_stereotype (ST_DOUBLE, DATATYPE); + this->add_stereotype (ST_LL, DATATYPE); + this->add_stereotype (ST_HFACT, CLASS); + this->add_stereotype (ST_ARR, CLASS); + this->add_stereotype (ST_COMP, CLASS); + this->add_stereotype (ST_SHORT, DATATYPE); + this->add_stereotype (ST_TYPEDEF, CLASS); + this->add_stereotype (ST_ULL, DATATYPE); + this->add_stereotype (ST_LONG, DATATYPE); + this->add_stereotype (ST_TC, DATATYPE); + this->add_stereotype (ST_HOME, CLASS); + this->add_stereotype (ST_STRUCT, CLASS); + this->add_stereotype (ST_FIXED, DATATYPE); + this->add_stereotype (ST_US, DATATYPE); + this->add_stereotype (ST_EMITS, ASSOC); + this->add_stereotype (ST_BOXVALUE, CLASS); + this->add_stereotype (ST_BOOL, DATATYPE); + this->add_stereotype (ST_CONST, ATTR); + this->add_stereotype (ST_PUBLISH, ASSOC); + this->add_stereotype (ST_CONSTANTS, CLASS); + this->add_stereotype (ST_PROVIDES, ASSOC); + this->add_stereotype (ST_WCHAR, DATATYPE); + this->add_stereotype (ST_UL, DATATYPE); + this->add_stereotype (ST_VAL_FACT, CLASS); + this->add_stereotype (ST_EVENT, CLASS); + this->add_stereotype (ST_CHAR, DATATYPE); + this->add_stereotype (ST_INTF, CLASS); + this->add_stereotype (ST_PRI_KEY, CLASS); + this->add_stereotype (ST_ANY, DATATYPE); + this->add_stereotype (ST_NATIVE, CLASS); + + this->stack_.pop (retval); + + return retval; + } + + void + idl3_to_xmi_visitor::add_stereotype (const LITERAL_T name, + const LITERAL_T bc) + { + // Generate our xmi.id + XStr xid (this->gen_xmi_id ()); + + // Bind the id in the map + this->id_map_.bind (LITERALS[name], xid); + + DOMElement *ele = this->create_element (LITERALS[STEREOTYPE_TAG]); + ele->setAttribute (XStr (LITERALS[XMI_ID]), xid); + ele->setAttribute (XStr (LITERALS[NAME]), XStr (LITERALS[name])); + ele->setAttribute (XStr (LITERALS[BASEC]), XStr (LITERALS[bc])); + + return; + } + + XMLCh * + idl3_to_xmi_visitor::gen_xmi_id (const ACE_TCHAR *name, long line) + { + if (current_id_ == 0) + { + ACE_OS::srand (ACE_OS::gettimeofday ().msec ()); + current_id_ = rand (); + } + std::stringstream str; + // Skip all characters that cannot be a first name char in xmi.id. + while (name && *name && !XMLChar1_1::isFirstNameChar(*name)) ++name; + // Since we use a file path as name then let's change all non-name + // chars for '_'. + while (name && *name) + { + if (XMLChar1_1::isNameChar (*name)) + { + str << *name; + } + else + { + str << '_'; + } + ++name; + } + str << ':' << line << '.' << current_id_++; + + XStr retval (ACE_TEXT_CHAR_TO_TCHAR (str.str ().c_str ())); + return retval.release (); + } + + XMLCh * + idl3_to_xmi_visitor::gen_xmi_id (AST_Decl *node) + { + if (current_id_ == 0) + { + ACE_OS::srand (ACE_OS::gettimeofday ().msec ()); + current_id_ = rand (); + } + + // we want these IDs to be unique, but the CDMW + // code generator sometimes depends + // on the order these things were declared in IDL, + // so for cases like that, + // we generate an ID that will sort to the order it + // was declared in IDL, + // no matter which order we visit the nodes. + if (node != 0) + { + return + gen_xmi_id ( + ACE_TEXT_CHAR_TO_TCHAR (node->file_name ().c_str ()), + node->line ()); + } + + std::stringstream str; + + str << "xmi." << current_id_++; + XStr retval (ACE_TEXT_CHAR_TO_TCHAR (str.str ().c_str ())); + return retval.release (); + } + + void + idl3_to_xmi_visitor::set_containing_element ( + const ACE_TCHAR *cont_name) + { + ACE_TString tmp; + XStr xid; + + this->namespace_.top (tmp); + this->id_map_.find (tmp, xid); + this->set_attribute (cont_name, xid); + } + + void + idl3_to_xmi_visitor::create_and_store_xmi_id (AST_Decl *node) + { + try + { + this->create_and_store_xmi_id ( + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), node); + } + catch (Error &ex) + { + ex.node (node); + throw; + } + } + + void + idl3_to_xmi_visitor::create_and_store_xmi_id ( + const ACE_TCHAR *name, AST_Decl *node) + { + XStr xid = this->gen_xmi_id (node); + + // store xmi_id + if (this->id_map_.trybind (name, xid) == -1) + throw Error ("error binding in the XMI ID map"); + + this->set_attribute (LITERALS[XMI_ID], xid); + } + + XMLCh * + idl3_to_xmi_visitor::lookup_xid (const ACE_TCHAR *name) + { + XStr tmp; + if (this->id_map_.find (name, tmp) == -1) + { + ACE_CString err ("unknown XMI ID requested for "); + err += ACE_TEXT_ALWAYS_CHAR (name); + throw Error (err.c_str ()); + } + + return tmp.release (); + } + + XMLCh * + idl3_to_xmi_visitor::lookup_type_xid (AST_Type *node) + { + AST_PredefinedType *pdt = 0; + + switch (node->node_type ()) + { + case AST_Decl::NT_string: + return this->lookup_xid (LITERALS[ST_STR]); + case AST_Decl::NT_wstring: + return this->lookup_xid (LITERALS[ST_WSTR]); + + case AST_Decl::NT_pre_defined: + pdt = AST_PredefinedType::narrow_from_decl (node); + + switch (pdt->pt ()) + { + case AST_PredefinedType::PT_pseudo: + return this->lookup_xid (ACE_TEXT_CHAR_TO_TCHAR (pdt->repoID ())); + case AST_PredefinedType::PT_object: + return this->lookup_xid (LITERALS[ST_OBJ]); + case AST_PredefinedType::PT_any: + return this->lookup_xid (LITERALS[ST_ANY]); + case AST_PredefinedType::PT_long: + return this->lookup_xid (LITERALS[ST_LONG]); + case AST_PredefinedType::PT_ulong: + return this->lookup_xid (LITERALS[ST_UL]); + case AST_PredefinedType::PT_longlong: + return this->lookup_xid (LITERALS[ST_LL]); + case AST_PredefinedType::PT_ulonglong: + return this->lookup_xid (LITERALS[ST_ULL]); + case AST_PredefinedType::PT_short: + return this->lookup_xid (LITERALS[ST_SHORT]); + case AST_PredefinedType::PT_ushort: + return this->lookup_xid (LITERALS[ST_US]); + case AST_PredefinedType::PT_float: + return this->lookup_xid (LITERALS[ST_FLOAT]); + case AST_PredefinedType::PT_double: + return this->lookup_xid (LITERALS[ST_DOUBLE]); + case AST_PredefinedType::PT_longdouble: + return this->lookup_xid (LITERALS[ST_LD]); + case AST_PredefinedType::PT_char: + return this->lookup_xid (LITERALS[ST_CHAR]); + case AST_PredefinedType::PT_wchar: + return this->lookup_xid (LITERALS[ST_WCHAR]); + case AST_PredefinedType::PT_boolean: + return this->lookup_xid (LITERALS[ST_BOOL]); + case AST_PredefinedType::PT_octet: + return this->lookup_xid (LITERALS[ST_OCTET]); + case AST_PredefinedType::PT_void: + return this->lookup_xid (LITERALS[ST_VOID]); + default: + throw Error ("Unknown or unsupported predefined type", + pdt); + } + default: + return this->lookup_xid (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ())); + } + } + + void + idl3_to_xmi_visitor::find_and_set_xid_as_attr (const ACE_TCHAR *attr_name, + const ACE_TCHAR *xid_name) + { + XStr tmp; + + if (this->id_map_.find (xid_name, tmp) == -1) + { + ACE_CString err ("unknown XMI ID when looking up "); + err += ACE_TEXT_ALWAYS_CHAR (xid_name); + throw Error (err.c_str ()); + } + + this->set_attribute (attr_name, tmp); + } + + void + idl3_to_xmi_visitor::gen_tagged_value (AST_Decl *node) + { + ES_Guard me_guard (LITERALS[ME_TV_TAG], this); + ES_Guard tv_guard (LITERALS[TV_TAG], this); + + this->set_attribute (LITERALS[TAG], LITERALS[TYPEID]); + this->set_attribute (LITERALS[VALUE], + ACE_TEXT_CHAR_TO_TCHAR (node->repoID ())); + } + + XMLCh * + idl3_to_xmi_visitor::add_generalization (const ACE_TCHAR *sub, + const ACE_TCHAR *super) + { + return this->add_generalization (XStr (this->lookup_xid (sub)), + XStr (this->lookup_xid (super))); + } + + XMLCh * + idl3_to_xmi_visitor::add_generalization (AST_Type *sub, AST_Type *super) + { + return this->add_generalization (XStr (this->lookup_type_xid (sub)), + XStr (this->lookup_type_xid (super))); + } + + XMLCh * + idl3_to_xmi_visitor::add_generalization (const XMLCh *sub, + const XMLCh *super) + { + // Generate XMI ID + XStr xid (this->gen_xmi_id ()); + + { // add generalization to the 'generalizations' set + ES_Guard es_guard (this->generalizations_, this); + NS_Guard ns_guard (ACE_TEXT ("::"), this); + + ES_Guard gen_guard (LITERALS[GEN_TAG], this); + + this->set_attribute (LITERALS[XMI_ID], xid); + + this->set_containing_element (LITERALS[NS]); + + { // subtype + ES_Guard st_guard (LITERALS[GEN_SUB_TAG], this); + ES_Guard element_guard (LITERALS[GEN_ELEMENT_TAG], this); + + this->set_attribute (LITERALS[IDREF], sub); + } + + { // subtype + ES_Guard st_guard (LITERALS[GEN_SUPER_TAG], this); + ES_Guard element_guard (LITERALS[GEN_ELEMENT_TAG], this); + + this->set_attribute (LITERALS[IDREF], super); + } + } + + { // Reference generalization in the calling element. + ES_Guard et_g (LITERALS[GEN_ELEMENT_GEN_TAG], this); + ES_Guard g_g (LITERALS[GEN_TAG], this); + this->set_attribute (LITERALS[IDREF], xid); + } + + return xid.release (); + } + + void + idl3_to_xmi_visitor::add_port (const ACE_TCHAR *port_kind, + AST_Field *port_node) + { + if (port_node->node_type () == AST_Decl::NT_uses) + { + AST_Uses *u = AST_Uses::narrow_from_decl (port_node); + + if (u->is_multiple ()) + { + throw Error ("uses multiple not yet supported."); + } + } + + ES_Guard es_guard (this->associations_, this); + NS_Guard ns_guard (ACE_TEXT ("::"), this); + + ES_Guard assoc_guard (LITERALS[ASSOC_TAG], this); + + // Generate XMI ID + XStr xid (this->gen_xmi_id (port_node)); + this->set_attribute (LITERALS[XMI_ID], xid); + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], port_kind); + this->set_containing_element (LITERALS[NS]); + + ES_Guard conn_guard (LITERALS[ASSOC_CONN_TAG], this); + + { // component end + ES_Guard end_guard (LITERALS[ASSOC_END_TAG], this); + this->set_attribute (LITERALS[MULT], ACE_TEXT ("1")); + this->find_and_set_xid_as_attr ( + LITERALS[TYPE], + ACE_TEXT_CHAR_TO_TCHAR (this->cached_type_->repoID ())); + } + + { // component end + ES_Guard end_guard (LITERALS[ASSOC_END_TAG], this); + + Identifier *id = + IdentifierHelper::original_local_name ( + port_node->local_name ()); + + this->set_attribute (LITERALS[NAME], id->get_string ()); + this->set_attribute (LITERALS[MULT], ACE_TEXT ("1")); + + this->find_and_set_xid_as_attr ( + LITERALS[TYPE], + port_node->field_type ()->repoID ()); + + id->destroy (); + delete id; + id = 0; + } + } + + void + idl3_to_xmi_visitor::add_managed_component (const ACE_TCHAR *home, + const ACE_TCHAR *component) + { + ES_Guard es_guard (this->associations_, this); + NS_Guard ns_guard (ACE_TEXT ("::"), this); + + ES_Guard assoc_guard (LITERALS[ASSOC_TAG], this); + + // Generate XMI ID + XStr xid (this->gen_xmi_id ()); + this->set_attribute (LITERALS[XMI_ID], xid); + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], + LITERALS[ST_MANAGES]); + this->set_containing_element (LITERALS[NS]); + + ES_Guard conn_guard (LITERALS[ASSOC_CONN_TAG], this); + + { // home end + ES_Guard end_guard (LITERALS[ASSOC_END_TAG], this); + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], + LITERALS[ST_HOME]); + this->find_and_set_xid_as_attr (LITERALS[TYPE], home); + } + + { // component end + ES_Guard end_guard (LITERALS[ASSOC_END_TAG], this); + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], + LITERALS[ST_COMP]); + this->find_and_set_xid_as_attr (LITERALS[TYPE], component); + } + } + + void + idl3_to_xmi_visitor::gen_common_elements (AST_Decl *node, + const ACE_TCHAR *stereotype) + { + this->create_and_store_xmi_id (node); + this->set_attribute ( + LITERALS[NAME], + ACE_TEXT_CHAR_TO_TCHAR (node->original_local_name ()->get_string ())); + this->set_attribute (LITERALS[VISIBIL], LITERALS[PUBLIC]); + this->set_containing_element (LITERALS[NS]); + this->find_and_set_xid_as_attr (LITERALS[STEREO_ATTR], + stereotype); + + NS_Guard ns_guard (ACE_TEXT_CHAR_TO_TCHAR (node->repoID ()), this); + this->gen_tagged_value (node); + } + + idl3_to_xmi_visitor::ES_Guard::ES_Guard (const ACE_TCHAR *name, + idl3_to_xmi_visitor *vis) + : vis_ (*vis) + { + if (vis_.stack_.push (vis_.create_element (name))) + throw Error ("element stack error"); + } + + idl3_to_xmi_visitor::ES_Guard::ES_Guard (DOMElement *ele, + idl3_to_xmi_visitor *vis) + : vis_ (*vis) + { + if (vis_.stack_.push (ele) != 0) + throw Error ("element stack error"); + } + + idl3_to_xmi_visitor::ES_Guard::~ES_Guard (void) + { + DOMElement *tmp; + if (vis_.stack_.pop (tmp) != 0) + { + vis_.output_dirty_ = true; + ACE_ERROR ((LM_ERROR, "error: element stack underflow.")); + } + } + + idl3_to_xmi_visitor::NS_Guard::NS_Guard (const ACE_TCHAR *name, + idl3_to_xmi_visitor *vis) + : vis_ (*vis) + { + int res = vis_.namespace_.push (name); + + if (res == 0) return; + throw Error ("stack error"); + } + + idl3_to_xmi_visitor::NS_Guard::~NS_Guard (void) + { + ACE_TString tmp; + if (vis_.namespace_.pop (tmp) != 0) + { + vis_.output_dirty_ = true; + ACE_ERROR ((LM_ERROR, "error:namespace stack underflow")); + } + } + } +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h b/modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h new file mode 100644 index 00000000000..8ae1ebb2441 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/IDL3_to_XMI_visitor.h @@ -0,0 +1,322 @@ +/** + * @file IDL3_to_XMI_visitor.h + * @author William R. Otte + * $Id$ + * Implements a visitor that generates XMI for the CARDAMOM + * code generation facility. + * + * This IDL->XMI mapping appears to be based on a IDL->UML->XMI + * mapping, and should be valid XMI version 1.1 + */ + +#ifndef CIAO_XMI_VISITOR_H +#define CIAO_XMI_VISITOR_H + +#include "ace/Containers.h" +#include "ace/Hash_Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "ace/SString.h" + +#include "xercesc/util/XercesDefs.hpp" + +#include "ast_visitor.h" +#include "ast_component.h" +#include "ast_concrete_type.h" + +#include "utl_scoped_name.h" +#include "Literals.h" +#include "XML/XercesString.h" +#include "CIAO_IDL3_TO_XMI_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_OutStream; +class UTL_ExceptList; + +namespace XERCES_CPP_NAMESPACE +{ + class DOMDocument; + class DOMElement; +} + +namespace CIAO +{ + namespace XMI + { + + /** + * @class idl3_to_xmi_visitor + * @brief Visitor that generates XMI for the CARDAMOM code + * generation facilities. + */ + class CIAO_IDL3_TO_XMI_Export idl3_to_xmi_visitor : public ast_visitor + { + public: + idl3_to_xmi_visitor (bool skip_imported); + virtual ~idl3_to_xmi_visitor (void); + + virtual int visit_decl (AST_Decl *d); + virtual int visit_scope (UTL_Scope *node); + virtual int visit_type (AST_Type *node); + virtual int visit_predefined_type (AST_PredefinedType *node); + virtual int visit_module (AST_Module *node); + virtual int visit_template_module (AST_Template_Module *node); + virtual int visit_template_module_inst (AST_Template_Module_Inst *node); + virtual int visit_template_module_ref (AST_Template_Module_Ref *node); + virtual int visit_interface (AST_Interface *node); + virtual int visit_interface_fwd (AST_InterfaceFwd *node); + virtual int visit_valuebox (AST_ValueBox *node); + virtual int visit_valuetype (AST_ValueType *node); + virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node); + virtual int visit_eventtype (AST_EventType *node); + virtual int visit_eventtype_fwd (AST_EventTypeFwd *node); + virtual int visit_component (AST_Component *node); + virtual int visit_component_fwd (AST_ComponentFwd *node); + virtual int visit_provides (AST_Provides *node); + virtual int visit_uses (AST_Uses *node); + virtual int visit_publishes (AST_Publishes *node); + virtual int visit_emits (AST_Emits *node); + virtual int visit_consumes (AST_Consumes *node); + virtual int visit_porttype (AST_PortType *node); + virtual int visit_extended_port (AST_Extended_Port *node); + virtual int visit_mirror_port (AST_Mirror_Port *node); + virtual int visit_connector (AST_Connector *node); + virtual int visit_home (AST_Home *node); + virtual int visit_factory (AST_Factory *node); + virtual int visit_structure (AST_Structure *node); + virtual int visit_structure_fwd (AST_StructureFwd *node); + virtual int visit_exception (AST_Exception *node); + virtual int visit_expression (AST_Expression *node); + virtual int visit_enum (AST_Enum *node); + virtual int visit_operation (AST_Operation *node); + virtual int visit_field (AST_Field *node); + virtual int visit_argument (AST_Argument *node); + virtual int visit_attribute (AST_Attribute *node); + virtual int visit_union (AST_Union *node); + virtual int visit_union_fwd (AST_UnionFwd *node); + virtual int visit_union_branch (AST_UnionBranch *node); + virtual int visit_union_label (AST_UnionLabel *node); + virtual int visit_constant (AST_Constant *node); + virtual int visit_enum_val (AST_EnumVal *node); + virtual int visit_array (AST_Array *node); + virtual int visit_sequence (AST_Sequence *node); + virtual int visit_string (AST_String *node); + virtual int visit_typedef (AST_Typedef *node); + virtual int visit_root (AST_Root *node); + virtual int visit_native (AST_Native *node); + + struct Error + { + Error (const ACE_CString &diag, AST_Decl *node = 0) + : diag_ (diag), + node_ (node) + {} + + void node (AST_Decl *node) { if (node_ == 0) node_ = node; } + + const ACE_CString diag_; + AST_Decl *node_; + }; + + private: + /// Generates several elements common to most XMI elements. + /// Generates the following attributes: xmi.id, name, visibility, namespace, stereotype + /// and the tagged value grouping. + /// @param stereotype The stereotype this element should be associated with. + void gen_common_elements (AST_Decl *node, const ACE_TCHAR *stereotype); + + /// Converts a number into a string representation. + /// Caller responsible for memory. + template + ACE_TCHAR * number_to_string (T val); + + /// Common elements of operation XMI generation + void visit_operation_impl (AST_Operation *node, const ACE_TCHAR *stereotype); + + /// implementation for elements common to both eventtypes + /// and valuetypes + void visit_valuetype_impl (AST_ValueType *node); + + /// implementation of elements common to exceptions and structures. + void visit_struct_impl (AST_Structure *node); + + /// Generation of common associations of anonymous and typedefed arrays. + void gen_array_associations (AST_Decl *node, AST_Array *array); + + /// Generation of common associations of anonymous and typedefed sequences. + void gen_sequence_associations (AST_Decl *node, AST_Sequence *sequence); + + /// sets an attribute on the element at the top of the stack. + void set_attribute (const ACE_TCHAR *name, + const ACE_TCHAR *value); + + + /// sets an attribute on the element at the top of the stack + void set_attribute (const ACE_TCHAR *name, + const XMLCh *value); + + /// Adds a text child to the element at the top of the stack + void add_text (const ACE_TCHAR *text); + + /// Greates a new element as a child of the current stack element + XERCES_CPP_NAMESPACE::DOMElement * create_element (const ACE_TCHAR *name); + + /// Generate stereotypes for XMI document + XERCES_CPP_NAMESPACE::DOMElement * generate_stereotypes (void); + + /// Helper method which creates new stereotype elements + void add_stereotype (const LITERAL_T name, + const LITERAL_T bc); + + /// Generates an XMI ID. + /// @param node If passed, the file name and line number will be + /// generated as part of the ID. + static XMLCh * gen_xmi_id (AST_Decl * node = 0); + + /// Generates an XMI ID with file_name and line as part of the id. + static XMLCh * gen_xmi_id (const ACE_TCHAR *file_name, long line); + + /// Used to store the next ID for generation + static size_t current_id_; + + /// Generates the tagged value grouping common to most XMI elements + void gen_tagged_value (AST_Decl *); + + /// Sets an attribute with name containment_name whose value is the + /// ID of the top of the namespace stack. + void set_containing_element (const ACE_TCHAR *containment_name); + + /// Looks up the xmi:id assoviated with xid_name and sets it as an + /// attribute + void find_and_set_xid_as_attr (const ACE_TCHAR *attr_name, const ACE_TCHAR *xid_name); + + /// Creates a XMI ID based on node, and sets its value to + /// the xmi.id attribute of the current top of element stack. + void create_and_store_xmi_id (AST_Decl *node); + + /// Creates a XMI ID based on node, and sets its value to + /// the name attribute of the current top of element stack. + void create_and_store_xmi_id (const ACE_TCHAR *name, AST_Decl *node = 0); + + /// Finds and returns the xmi.id associated with name. + XMLCh * lookup_xid (const ACE_TCHAR *name); + + /// Finds and returns the xmi.id associated with the provided type. + XMLCh * lookup_type_xid (AST_Type *); + + /// Used to add generalizations - most commonly used for supports + /// relationships. in component foo supports bar, foo is the sub, + /// bar is the super. + XMLCh * add_generalization (const ACE_TCHAR *sub, const ACE_TCHAR *super); + XMLCh * add_generalization (AST_Type *sub, AST_Type *super); + + XMLCh * add_generalization (const XMLCh *sub, const XMLCh *super); + + /// @param component Repository ID of component + /// @param port_kind text of port stereotype from LITERALS + /// @param port_type Repository ID of port type (ie, interface type for facet) + /// @param name The name of the port + /// @param is_multiple The multiplicity of the port (ie, uses multiple.) + void add_port (const ACE_TCHAR *port_kind, + AST_Field *port_node); + + void add_managed_component (const ACE_TCHAR *home, const ACE_TCHAR *component); + + + ACE_TCHAR * union_label_value (AST_Expression *exp); + + typedef ACE_Hash_Map_Manager_Ex< ACE_TString, + CIAO::XML::XStr, + ACE_Hash , + ACE_Equal_To , + ACE_Null_Mutex > XMI_ID_MAP; + + /// Stores xmi.ids for elements, indexed by repoId. + XMI_ID_MAP id_map_; + + typedef ACE_Unbounded_Stack ELEMENT_STACK; + + /// Stores elements we are currently generating XMI. Top of stack is the current + /// element. + ELEMENT_STACK stack_; + + struct ElementContext { + ACE_TString ns_; + XERCES_CPP_NAMESPACE::DOMElement *elem_; + }; + + typedef ACE_Hash_Map_Manager_Ex< ACE_TString, + ElementContext, + ACE_Hash , + ACE_Equal_To , + ACE_Null_Mutex > REPO_ID_MAP; + + /// Stores elements that were forward declared. Also stores modules that can + /// be reopened. + REPO_ID_MAP repo_id_map_; + + /// Provides a "protected" push that is popped when the current scope + /// is exited. + struct ES_Guard + { + ES_Guard (const ACE_TCHAR *name, idl3_to_xmi_visitor *); + ES_Guard (XERCES_CPP_NAMESPACE::DOMElement *ele, + idl3_to_xmi_visitor *); + ~ES_Guard (void); + + idl3_to_xmi_visitor &vis_; + }; + + friend struct ES_Guard; + + typedef ACE_Unbounded_Stack< ACE_TString > STRING_STACK; + + /// Stores namespaces associated with our current scope. + STRING_STACK namespace_; + + /// Provides a protected push for the namespace stack that + /// pops when the current scope is exited. + struct NS_Guard + { + NS_Guard (const ACE_TCHAR *name, idl3_to_xmi_visitor *); + ~NS_Guard (void); + + idl3_to_xmi_visitor &vis_; + }; + + friend struct NS_Guard; + + XERCES_CPP_NAMESPACE::DOMDocument *dom_; + + XERCES_CPP_NAMESPACE::DOMElement *root_; + + XERCES_CPP_NAMESPACE::DOMElement *generalizations_; + + XERCES_CPP_NAMESPACE::DOMElement *associations_; + + const CIAO::XML::XStr base_id_; + + /// true if for some reason the generated output is bad + /// and shouldn't be written. + bool output_dirty_; + + bool skip_imported_; + + /// true if we are in enum "scope". + bool visiting_enum_; + + /// Used to determine IDL ordering of union labels. + size_t order_; + + /// USed to cache the type of union descriminators + AST_ConcreteType *union_disc_; + + /// Used to cache the type whose scope we are currently in. + AST_Decl *cached_type_; + }; + } +} + +#endif diff --git a/modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.cpp b/modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.cpp new file mode 100644 index 00000000000..12f786a77e9 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.cpp @@ -0,0 +1,1175 @@ +// $Id$ + +#include "IR_Simulator_visitor.h" + +#include "be_sunsoft.h" +#include "be_extern.h" + +#include "ast_argument.h" +#include "ast_array.h" +#include "ast_attribute.h" +#include "ast_component_fwd.h" +#include "ast_provides.h" +#include "ast_uses.h" +#include "ast_publishes.h" +#include "ast_emits.h" +#include "ast_consumes.h" +#include "ast_enum.h" +#include "ast_enum_val.h" +#include "ast_eventtype.h" +#include "ast_eventtype_fwd.h" +#include "ast_exception.h" +#include "ast_factory.h" +#include "ast_field.h" +#include "ast_home.h" +#include "ast_operation.h" +#include "ast_root.h" +#include "ast_sequence.h" +#include "ast_string.h" +#include "ast_structure_fwd.h" +#include "ast_template_module.h" +#include "ast_template_module_inst.h" +#include "ast_template_module_ref.h" +#include "ast_typedef.h" +#include "ast_union.h" +#include "ast_union_branch.h" +#include "ast_union_fwd.h" +#include "ast_union_label.h" +#include "ast_valuebox.h" +#include "ast_valuetype_fwd.h" +#include "ast_native.h" +#include "utl_exceptlist.h" +#include "utl_identifier.h" +#include "utl_idlist.h" +#include "utl_string.h" +#include "global_extern.h" +#include "nr_extern.h" +#include "ace/OS_NS_stdio.h" + + +#include +#include + +#if 0 +#define XMI_TRACE(X) std::cout << X << std::endl +#else +#define XMI_TRACE(X) +#endif + +namespace CIAO +{ + namespace XMI + { + struct Incr_Guard + { + public: + Incr_Guard (size_t &subject, bool arm = false) + : subject_ (subject), + armed_ (arm) + { + } + + ~Incr_Guard (void) + { + if (this->armed_) + --subject_; + } + void arm (void) + { + this->armed_ = true; + ++subject_; + } + + private: + size_t &subject_; + bool armed_; + }; + + ir_simulator_visitor::ir_simulator_visitor (void) + : associating_ (false) + { + } + + ir_simulator_visitor::~ir_simulator_visitor (void) + { + } + + int + ir_simulator_visitor::visit_decl (AST_Decl *) + { + XMI_TRACE ("got a decl"); + return 0; + } + + int + ir_simulator_visitor::visit_scope (UTL_Scope *node) + { + XMI_TRACE ("got a scope"); + + for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls); + !si.is_done (); + si.next ()) + { + AST_Decl *d = si.item (); + + if (d->ast_accept (this) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "ir_simulator_visitor::visit_scope - " + "codegen for scope failed\n"), + -1); + } + } + return 0; + } + + int + ir_simulator_visitor::visit_type (AST_Type *) + { + XMI_TRACE ("got a type"); + return 0; + } + + int + ir_simulator_visitor::visit_predefined_type (AST_PredefinedType *) + { + XMI_TRACE ("predef type"); + return 0; + } + + int + ir_simulator_visitor::visit_module (AST_Module *node) + { + XMI_TRACE ("module"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_module - " + "codegen for scope failed\n"), + -1); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + ir_simulator_visitor::visit_template_module ( + AST_Template_Module *) + { + return 0; + } + + int + ir_simulator_visitor::visit_template_module_inst ( + AST_Template_Module_Inst *) + { + return 0; + } + + int + ir_simulator_visitor::visit_template_module_ref( + AST_Template_Module_Ref *) + { + return 0; + } + + int + ir_simulator_visitor::visit_interface (AST_Interface *node) + { + XMI_TRACE ("interface"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + // Inheritance + for (long i = 0; i < node->n_inherits (); ++i) + { + node->inherits ()[i]->ast_accept (this); + } + + if (this->visit_scope (node) != 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "idl3_to_idl2_visitor::visit_interface - " + "codegen for scope failed\n"), + -1); + } + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + ir_simulator_visitor::visit_interface_fwd (AST_InterfaceFwd *node) + { + XMI_TRACE ("interface_fwd"); + + // won't hurt to import the fwd interface + node->set_imported (false); + + return 0; + } + + int + ir_simulator_visitor::visit_valuebox (AST_ValueBox *node) + { + XMI_TRACE ("valuebox"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) return 0; + // not imported, but not associating, need to set the guard + else guard.arm (); + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + // **** need to visit type we are boxing? + node->boxed_type ()->ast_accept (this); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + ir_simulator_visitor::visit_valuetype (AST_ValueType *node) + { + XMI_TRACE ("valuetype"); + + try + { + this->visit_valuetype_impl (node); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + void + ir_simulator_visitor::visit_valuetype_impl (AST_ValueType *node) + { + Incr_Guard guard (this->associating_); + + if (!this->do_i_care (node)) + { + return; + } + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + AST_Type *t = node->inherits_concrete (); + AST_ValueType *v = + AST_ValueType::narrow_from_decl (t); + + if (v != 0) + { + this->visit_valuetype_impl (v); + } + + long lim = node->n_supports (); + AST_Type **sppts = node->supports (); + + for (long i = 0; i < lim; ++i) + { + sppts[i]->ast_accept (this); + } + + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + } + + int + ir_simulator_visitor::visit_valuetype_fwd (AST_ValueTypeFwd *node) + { + XMI_TRACE ("valuetype_fwd"); + + try + { + // no harm from importing a fwd interface + // node->is_imported (false); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_component (AST_Component *node) + { + XMI_TRACE ("component"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + if (node->base_component () != 0) + { + node->base_component ()->ast_accept (this); + } + + long len = node->n_supports (); + AST_Type **sppts = node->supports (); + + for (long i = 0; i < len; ++i) + { + sppts[i]->ast_accept (this); + } + + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_component_fwd (AST_ComponentFwd *node) + { + XMI_TRACE ("component_fwd"); + + try + { + // no harm from importing a fwd interface + // node->is_imported (false); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_provides (AST_Provides *node) + { + return node->provides_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_uses (AST_Uses *node) + { + return node->uses_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_publishes (AST_Publishes *node) + { + return node->publishes_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_emits (AST_Emits *node) + { + return node->emits_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_consumes (AST_Consumes *node) + { + return node->consumes_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_porttype (AST_PortType *) + { + return 0; + } + + int + ir_simulator_visitor::visit_extended_port (AST_Extended_Port *) + { + return 0; + } + + int + ir_simulator_visitor::visit_mirror_port (AST_Mirror_Port *) + { + return 0; + } + + int + ir_simulator_visitor::visit_connector (AST_Connector *) + { + return 0; + } + + int + ir_simulator_visitor::visit_eventtype (AST_EventType *node) + { + XMI_TRACE ("eventtype"); + + try + { + this->visit_valuetype_impl (node); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_eventtype_fwd (AST_EventTypeFwd *node) + { + XMI_TRACE ("eventtype_fwd"); + + this->visit_valuetype_fwd (node); + + return 0; + } + + int + ir_simulator_visitor::visit_home (AST_Home *node) + { + XMI_TRACE ("home"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + // **** supported interfaces + long len = node->n_supports (); + AST_Type **sppts = node->supports (); + + for (long i = 0; i < len; ++i) + { + sppts[i]->ast_accept (this); + } + + if (node->base_home ()) + { + node->base_home ()->ast_accept (this); + } + + if (node->managed_component ()) + { + node->managed_component ()->ast_accept (this); + } + + if (node->primary_key ()) + { + node->primary_key ()->ast_accept (this); + } + + for (size_t i = 0; i < node->factories ().size (); ++i) + { + AST_Operation **op = 0; + node->factories ().get (op, i); + (*op)->ast_accept (this); + } + + for (size_t i = 0; i < node->finders ().size (); ++i) + { + AST_Operation **op = 0; + node->finders ().get (op, i); + (*op)->ast_accept (this); + } + + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_factory (AST_Factory *node) + { + XMI_TRACE ("factory"); + + throw Error ("Factories not supported", node); + + return 0; + } + + int + ir_simulator_visitor::visit_structure (AST_Structure *node) + { + XMI_TRACE ("structure"); + + try + { + this->visit_struct_impl (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + void + ir_simulator_visitor::visit_struct_impl (AST_Structure *node) + { + if (!this->do_i_care (node)) + { + return; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + } + + int + ir_simulator_visitor::visit_structure_fwd (AST_StructureFwd *node) + { + XMI_TRACE ("structure_fwd"); + + try + { + node->set_imported (false); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_exception (AST_Exception *node) + { + XMI_TRACE ("exception"); + + + try + { + this->visit_struct_impl (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + ir_simulator_visitor::visit_expression (AST_Expression *) + { + XMI_TRACE ("expression"); + + /* Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) return; + // not imported, but not associating, need to set the guard + else guard.arm (); + } + // associating, import + else node->set_imported (false); + */ + return 0; + } + + int + ir_simulator_visitor::visit_enum (AST_Enum *node) + { + XMI_TRACE ("enum"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + ir_simulator_visitor::visit_operation (AST_Operation *node) + { + XMI_TRACE ("operation"); + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + // ACE_DEBUG ((LM_DEBUG, "foo")); + + if (node->return_type ()) + { + // ACE_DEBUG ((LM_DEBUG, "bar")); + node->return_type ()->ast_accept (this); + } + + // **** arguments + // **** exceptions + UTL_ExceptList *exceptions = node->exceptions (); + + if (exceptions != 0 && exceptions->length () > 0) + { + for (UTL_ExceptlistActiveIterator ei (exceptions); + !ei.is_done (); + ei.next ()) + { + ei.item ()->ast_accept (this); + } + } + + this->visit_scope (node); + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_field (AST_Field *node) + { + XMI_TRACE ("field"); + + if (node == 0) + { + ACE_DEBUG ((LM_DEBUG, "null field?\n")); + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + try + { + if (node->field_type ()) + { + node->field_type ()->ast_accept (this); + } + } + catch (Error &err) + { + err.node (node); + } + + return 0; + } + + int + ir_simulator_visitor::visit_argument (AST_Argument *node) + { + XMI_TRACE ("argument"); + + this->visit_field (node); + + return 0; + } + + int + ir_simulator_visitor::visit_attribute (AST_Attribute *node) + { + XMI_TRACE ("attribute"); + + return this->visit_field (node); + } + + int + ir_simulator_visitor::visit_union (AST_Union *node) + { + XMI_TRACE ("union"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + if (node->disc_type ()) + { + this->visit_type (node->disc_type ()); + } + + return this->visit_scope (node); + } + + int + ir_simulator_visitor::visit_union_fwd (AST_UnionFwd *node) + { + XMI_TRACE ("union_fwd"); + node->set_imported (false); + return 0; + } + + int + ir_simulator_visitor::visit_union_branch (AST_UnionBranch *node) + { + XMI_TRACE ("union_branch"); + this->visit_field (node); + return 0; + } + + int + ir_simulator_visitor::visit_union_label (AST_UnionLabel *node) + { + XMI_TRACE ("union_label"); + + if (node->label_val ()) + { + node->label_val ()->ast_accept (this); + } + + return 0; + } + + int + ir_simulator_visitor::visit_constant (AST_Constant *) + { + XMI_TRACE ("constant"); + + return 0; + } + + int + ir_simulator_visitor::visit_enum_val (AST_EnumVal *) + { + XMI_TRACE ("enum val"); + return 0; + } + + int + ir_simulator_visitor::visit_array (AST_Array *node) + { + XMI_TRACE ("array val"); + + if (!this->do_i_care (node)) + { + return 0; + } + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + return node->base_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_sequence (AST_Sequence *node) + { + XMI_TRACE ("sequence val"); + + try + { + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + node->base_type ()->ast_accept (this); + } + catch (Error &err) + { + err.node (node); + throw; + } + + return 0; + } + + int + ir_simulator_visitor::visit_string (AST_String *) + { + XMI_TRACE ("string"); + return 0; + } + + int + ir_simulator_visitor::visit_typedef (AST_Typedef *node) + { + XMI_TRACE ("typedef"); + + Incr_Guard guard (this->associating_); + + if (!this->associating_) + { + // not associating, imported, not my concern + if (node->imported ()) + { + return 0; + } + // not imported, but not associating, need to set the guard + else + { + guard.arm (); + } + } + // associating, import + else + { + node->set_imported (false); + } + + return node->base_type ()->ast_accept (this); + } + + int + ir_simulator_visitor::visit_root (AST_Root *node) + { + XMI_TRACE ("root"); + + try + { + this->visit_scope (node); + } + catch (const Error &ex) + { + if (ex.node_ != 0) + { + ACE_ERROR ((LM_ERROR, "%s:%d:error: %s\n", + ex.node_->file_name ().c_str (), + ex.node_->line (), + ex.diag_.c_str ())); + } + else + { + ACE_ERROR ((LM_ERROR, "::error:%s\n", + ex.diag_.c_str ())); + } + + return -1; + } + + return 0; + } + + int + ir_simulator_visitor::visit_native (AST_Native *) + { + XMI_TRACE ("native"); + return 0; + } + + bool + ir_simulator_visitor::do_i_care (AST_Decl *node) + { + std::string name (node->repoID ()); + + return this->seen_types_.insert (name).second; + } + } +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.h b/modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.h new file mode 100644 index 00000000000..8dccb5efdfc --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/IR_Simulator_visitor.h @@ -0,0 +1,129 @@ +/** + * @file IR_Simulator_visitor.h + * @author William R. Otte + * $Id$ + * Implements a visitor that generates XMI for the CARDAMOM + * code generation facility. + * + * This IDL->XMI mapping appears to be based on a IDL->UML->XMI + * mapping, and should be valid XMI version 1.1 + */ + +#ifndef CIAO_IR_SIMULATOR_VISITOR_H +#define CIAO_IR_SIMULATOR_VISITOR_H + +#include "ace/Containers.h" +#include "ace/Hash_Map_Manager.h" +#include "ace/Null_Mutex.h" +#include "ace/SString.h" + +#include "xercesc/util/XercesDefs.hpp" + +#include "ast_visitor.h" +#include "ast_component.h" +#include "utl_scoped_name.h" +#include "Literals.h" +#include "XML/XercesString.h" +#include "CIAO_IDL3_TO_XMI_Export.h" + + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_OutStream; +class UTL_ExceptList; + +#include +#include + +namespace CIAO +{ + namespace XMI + { + + /** + * @class ir_simulator_visitor + * @brief Visitor that generates XMI for the CARDAMOM code + * generation facilities. + */ + class CIAO_IDL3_TO_XMI_Export ir_simulator_visitor + : public ast_visitor + { + public: + ir_simulator_visitor (void); + virtual ~ir_simulator_visitor (void); + + virtual int visit_decl (AST_Decl *d); + virtual int visit_scope (UTL_Scope *node); + virtual int visit_type (AST_Type *node); + virtual int visit_predefined_type (AST_PredefinedType *node); + virtual int visit_module (AST_Module *node); + virtual int visit_template_module (AST_Template_Module *node); + virtual int visit_template_module_inst (AST_Template_Module_Inst *node); + virtual int visit_template_module_ref (AST_Template_Module_Ref *node); + virtual int visit_interface (AST_Interface *node); + virtual int visit_interface_fwd (AST_InterfaceFwd *node); + virtual int visit_valuebox (AST_ValueBox *node); + virtual int visit_valuetype (AST_ValueType *node); + void visit_valuetype_impl (AST_ValueType *); + virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node); + virtual int visit_component (AST_Component *node); + virtual int visit_component_fwd (AST_ComponentFwd *node); + virtual int visit_provides (AST_Provides *node); + virtual int visit_uses (AST_Uses *node); + virtual int visit_publishes (AST_Publishes *node); + virtual int visit_emits (AST_Emits *node); + virtual int visit_consumes (AST_Consumes *node); + virtual int visit_porttype (AST_PortType *node); + virtual int visit_extended_port (AST_Extended_Port *node); + virtual int visit_mirror_port (AST_Mirror_Port *node); + virtual int visit_connector (AST_Connector *node); + virtual int visit_eventtype (AST_EventType *node); + virtual int visit_eventtype_fwd (AST_EventTypeFwd *node); + virtual int visit_home (AST_Home *node); + virtual int visit_factory (AST_Factory *node); + virtual int visit_structure (AST_Structure *node); + void visit_struct_impl (AST_Structure *node); + virtual int visit_structure_fwd (AST_StructureFwd *node); + virtual int visit_exception (AST_Exception *node); + virtual int visit_expression (AST_Expression *node); + virtual int visit_enum (AST_Enum *node); + virtual int visit_operation (AST_Operation *node); + virtual int visit_field (AST_Field *node); + virtual int visit_argument (AST_Argument *node); + virtual int visit_attribute (AST_Attribute *node); + virtual int visit_union (AST_Union *node); + virtual int visit_union_fwd (AST_UnionFwd *node); + virtual int visit_union_branch (AST_UnionBranch *node); + virtual int visit_union_label (AST_UnionLabel *node); + virtual int visit_constant (AST_Constant *node); + virtual int visit_enum_val (AST_EnumVal *node); + virtual int visit_array (AST_Array *node); + virtual int visit_sequence (AST_Sequence *node); + virtual int visit_string (AST_String *node); + virtual int visit_typedef (AST_Typedef *node); + virtual int visit_root (AST_Root *node); + virtual int visit_native (AST_Native *node); + + struct Error + { + Error (const ACE_CString &diag, AST_Decl *node = 0) + : diag_ (diag), + node_ (node) + {} + + void node (AST_Decl *node) { if (node_ == 0) node_ = node; } + + const ACE_CString diag_; + AST_Decl *node_; + }; + + private: + bool do_i_care (AST_Decl *node); + size_t associating_; + std::set seen_types_; + }; + } +} +#endif diff --git a/modules/CIAO/tools/IDL3_to_XMI/Literals.cpp b/modules/CIAO/tools/IDL3_to_XMI/Literals.cpp new file mode 100644 index 00000000000..2172bbeb075 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/Literals.cpp @@ -0,0 +1,156 @@ +// $Id$ + +#include "Literals.h" + +namespace CIAO +{ + namespace XMI + { + + const ACE_TCHAR* const LITERALS[MAX_LITERAL] = + { + ACE_TEXT("xmi.version"), // VERSION_TAG + ACE_TEXT("1.1"), // VERSION_VALUE + ACE_TEXT("xmlns:UML"), // NS_TAG + ACE_TEXT("org.omg/UML1.3"), // NS_VALUE + ACE_TEXT("XMI.header"), // HEADER_TAG + ACE_TEXT("XMI.documentation"), // DOC_TAG + ACE_TEXT("XMI.exporter"), // EXPORTER_TAG + ACE_TEXT("DOC Group IDL to XMI converter"), // EXPORTER_VALUE + ACE_TEXT("XMI.content"), // CONTENT_TAG + ACE_TEXT("UML:Model"), // MODEL_TAG + ACE_TEXT("xmi.id"), // XMI_ID + ACE_TEXT("UML:Namespace.ownedElement"), // OWNEDELEMENT_TAG + ACE_TEXT("UML:Package"), // PACKAGE_TAG + ACE_TEXT("UML:ModelElement"), // MODELELEMENT_TAG + ACE_TEXT("UML:ModelElement.taggedValue"), // ME_TV_TAG + ACE_TEXT("UML:ModelElement.constraint"), // ME_CONS_TAG + ACE_TEXT("UML:Constraint"), // CONSTRAINT + ACE_TEXT("UML:TaggedValue"), // TV_TAG + ACE_TEXT("UML:Stereotype"), // STEREOTYPE_TAG + ACE_TEXT("UML:Class"), // CLASS_TAG + ACE_TEXT("UML:Operation"), // OP_TAG + ACE_TEXT("UML:BehavioralFeature.parameter"), // BFP_TAG + ACE_TEXT("UML:Parameter"), // PARAM_TAG + ACE_TEXT("UML:BehavioralFeature.raisedException"), // BF_RE_TAG + ACE_TEXT("UML:Exception"), // EXCEPT_TAG + ACE_TEXT("UML:Attribute"), // ATTR_TAG + ACE_TEXT("UML:Association"), // ASSOC_TAG + ACE_TEXT("UML:Association.connection"), // ASSOC_CONN_TAG + ACE_TEXT("UML:AssociationEnd"), // ASSOC_END_TAG + ACE_TEXT("UML:AssociationEnd.qualifier"), // ASSOC_END_QUAL_TAG + ACE_TEXT("UML:Generalization"), // GEN_TAG + ACE_TEXT("UML:Generalization.subtype"), // GEN_SUB_TAG + ACE_TEXT("UML:Generalization.supertype"), // GEN_SUPER_TAG + ACE_TEXT("UML:GeneralizableElement"), // GEN_ELEMENT_TAG + ACE_TEXT("UML:GeneralizableElement.generalization"),// GEN_ELEMENT_GEN_TAG + ACE_TEXT("UML:Exception"), // EXCEPTION_TAG + + // ******* Attributes + ACE_TEXT("tag"), // TAG + ACE_TEXT("value"), // VALUE + ACE_TEXT("name"), // NAME + ACE_TEXT("baseClass"), // BASEC + ACE_TEXT("visibility"), // VISIBIL + ACE_TEXT("stereotype"), // STEREO_ATTR + ACE_TEXT("namespace"), // NS + ACE_TEXT("owner"), // OWNER + ACE_TEXT("kind"), // KIND + ACE_TEXT("behavioralFeature"), // BFEATURE + ACE_TEXT("type"), // TYPE + ACE_TEXT("isAbstract"), // ABSTRACT + ACE_TEXT("multiplicity"), // MULT + ACE_TEXT("xmi.idref"), // IDREF + ACE_TEXT("ownerScope"), // OWNER_SCOPE + ACE_TEXT("changeable"), // CHANGEABLE + + // ******* Attribute values + ACE_TEXT("Association"), // ASSOC + ACE_TEXT("Class"), // CLASS + ACE_TEXT("DataType"), // DATATYPE + ACE_TEXT("Package"), // PACKAGE + ACE_TEXT("null"), // NULL + ACE_TEXT("Attribute"), // ATTR + ACE_TEXT("public"), // PUBLIC + ACE_TEXT("private"), // _PRIVATE + ACE_TEXT("typeid"), // TYPEID + ACE_TEXT("raises"), // RAISES + ACE_TEXT("return"), // RETURN + ACE_TEXT("in"), // _IN + ACE_TEXT("inout"), // INOUT + ACE_TEXT("out"), // _OUT + ACE_TEXT("true"), // _TRUE + ACE_TEXT("false"), // _FALSE + ACE_TEXT("TRUE"), // CAPS_TRUE + ACE_TEXT("FALSE"), // CAPS_FALSE + ACE_TEXT("1..1"), // MULT_OTO + ACE_TEXT("0..1"), // MULT_ZTO + ACE_TEXT("IDLOrder"), // IDLORDER + ACE_TEXT("index"), // INDEX + ACE_TEXT("constraintUpperValue"), // CONST_UPPER + ACE_TEXT("*"), // UNBOUNDED_SEQ + ACE_TEXT("Case"), // CASE + ACE_TEXT("default"), // DEFAULT_UNION + ACE_TEXT("classifier"), // CLASSIFIER + ACE_TEXT("frozen"), // FROZEN + ACE_TEXT("initialValue"), // INIT_VAL + + //******** Stereotypes + ACE_TEXT("CCMConsumes"), // ST_CONSUMES + ACE_TEXT("CORBAAnonymousSequence"), // ST_ANON_SEQ + ACE_TEXT("CORBAPrincipal"), // ST_PRINC + ACE_TEXT("CORBAUnion"), // ST_UNION + ACE_TEXT("CCMUses"), // ST_USES + ACE_TEXT("CORBASequence"), // ST_SEQ + ACE_TEXT("readonlyEnd"), // ST_ROE + ACE_TEXT("readonly"), // ST_RO + ACE_TEXT("CORBAObject"), // ST_OBJ + ACE_TEXT("CORBAstring"), // ST_STR + ACE_TEXT("CORBAlongdouble"), // ST_LD + ACE_TEXT("CORBAAnonymousArray"), // ST_ANON_ARR + ACE_TEXT("CORBAAlias"), // ST_ALIAS + ACE_TEXT("null"), // ST_NULL + ACE_TEXT("CORBAValue"), // ST_VALUE + ACE_TEXT("void"), // ST_VOID + ACE_TEXT("CORBAException"), // ST_EX + ACE_TEXT("CORBAoctet"), // ST_OCTET + ACE_TEXT("CCMManages"), // ST_MANAGES + ACE_TEXT("CORBAwstring"), // ST_WSTR + ACE_TEXT("CORBAfloat"), // ST_FLOAT + ACE_TEXT("CORBAEnum"), // ST_ENUM + ACE_TEXT("CORBAValueSupports"), // ST_VAL_SUP + ACE_TEXT("CORBAModule"), // ST_MODULE + ACE_TEXT("CCMHomeFinder"), // ST_HFINDER + ACE_TEXT("CORBAdouble"), // ST_DOUBLE + ACE_TEXT("CORBAlonglong"), // ST_LL + ACE_TEXT("CCMHomeFactory"), // ST_HFACT + ACE_TEXT("CORBAArray"), // ST_ARR + ACE_TEXT("CCMComponent"), // ST_COMP + ACE_TEXT("CORBAshort"), // ST_SHORT + ACE_TEXT("CORBATypedef"), // ST_TYPEDEF + ACE_TEXT("CORBAunsignedlonglong"), // ST_ULL + ACE_TEXT("CORBAlong"), // ST_LONG + ACE_TEXT("CORBATypeCode"), // ST_TC + ACE_TEXT("CCMHome"), // ST_HOME + ACE_TEXT("CORBAStruct"), // ST_STRUCT + ACE_TEXT("CORBAFixed"), // ST_FIXED + ACE_TEXT("CORBAunsignedshort"), // ST_US + ACE_TEXT("CCMEmits"), // ST_EMITS + ACE_TEXT("CORBABoxedValue"), // ST_BOXVALUE + ACE_TEXT("CORBAboolean"), // ST_BOOL + ACE_TEXT("CORBAConstant"), // ST_CONST + ACE_TEXT("CCMPublishes"), // ST_PUBLISH + ACE_TEXT("CORBAConstants"), // ST_CONSTANTS + ACE_TEXT("CCMProvides"), // ST_PROVIDES + ACE_TEXT("CORBAwchar"), // ST_WCHAR + ACE_TEXT("CORBAunsignedlong"), // ST_UL + ACE_TEXT("CORBAValueFactory"), // ST_VAL_FACT + ACE_TEXT("CCMEvent"), // ST_EVENT + ACE_TEXT("CORBAchar"), // ST_CHAR + ACE_TEXT("CORBAInterface"), // ST_INTF + ACE_TEXT("CCMPrimaryKey"), // ST_PRI_KEY + ACE_TEXT("CORBAany"), // ST_ANY + ACE_TEXT("CORBAnative") // ST_NATIVE + }; + } +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/Literals.h b/modules/CIAO/tools/IDL3_to_XMI/Literals.h new file mode 100644 index 00000000000..e8c36180b30 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/Literals.h @@ -0,0 +1,170 @@ +/** + * @file Literals.h + * @author William R. Otte + * + * $Id$ + * + */ + +#ifndef XMI_LITERALS_H +#define XMI_LITERALS_H + +#include "ace/config-lite.h" + +namespace CIAO +{ + namespace XMI + { + enum LITERAL_T + { + VERSION_TAG, + VERSION_VALUE, + NS_TAG, + NS_VALUE, + HEADER_TAG, + DOC_TAG, + EXPORTER_TAG, + EXPORTER_VALUE, + CONTENT_TAG, + MODEL_TAG, + XMI_ID, + OWNEDELEMENT_TAG, + PACKAGE_TAG, + MODELELEMENT_TAG, + ME_TV_TAG, + ME_CONS_TAG, + CONSTRAINT, + TV_TAG, + STEREOTYPE_TAG, + CLASS_TAG, + OP_TAG, + BFP_TAG, + PARAM_TAG, + BF_RE_TAG, + EXCEPT_TAG, + ATTR_TAG, + ASSOC_TAG, + ASSOC_CONN_TAG, + ASSOC_END_TAG, + ASSOC_END_QUAL_TAG, + GEN_TAG, + GEN_SUB_TAG, + GEN_SUPER_TAG, + GEN_ELEMENT_TAG, + GEN_ELEMENT_GEN_TAG, + EXCEPTION_TAG, + + // Attributes + TAG, + VALUE, + NAME, + BASEC, + VISIBIL, + STEREO_ATTR, + NS, + OWNER, + KIND, + BFEATURE, + TYPE, + ABSTRACT, + MULT, + IDREF, + OWNER_SCOPE, + CHANGEABLE, + + // attribute values + ASSOC, + CLASS, + DATATYPE, + PACKAGE, + __NULL, + ATTR, + PUBLIC, + _PRIVATE, + TYPEID, + RAISES, + RETURN, + _IN, + INOUT, + _OUT, + _TRUE, + _FALSE, + CAPS_TRUE, + CAPS_FALSE, + MULT_OTO, + MULT_ZTO, + IDLORDER, + INDEX, + CONST_UPPER, + UNBOUNDED_SEQ, + CASE, + DEFAULT_UNION, + CLASSIFIER, + FROZEN, + INIT_VAL, + + // Stereotypes + ST_CONSUMES, + ST_ANON_SEQ, + ST_PRINC, + ST_UNION, + ST_USES, + ST_SEQ, + ST_ROE, + ST_RO, + ST_OBJ, + ST_STR, + ST_LD, + ST_ANON_ARR, + ST_ALIAS, + ST_NULL, + ST_VALUE, + ST_VOID, + ST_EX, + ST_OCTET, + ST_MANAGES, + ST_WSTR, + ST_FLOAT, + ST_ENUM, + ST_VAL_SUP, + ST_MODULE, + ST_HFINDER, + ST_DOUBLE, + ST_LL, + ST_HFACT, + ST_ARR, + ST_COMP, + ST_SHORT, + ST_TYPEDEF, + ST_ULL, + ST_LONG, + ST_TC, + ST_HOME, + ST_STRUCT, + ST_FIXED, + ST_US, + ST_EMITS, + ST_BOXVALUE, + ST_BOOL, + ST_CONST, + ST_PUBLISH, + ST_CONSTANTS, + ST_PROVIDES, + ST_WCHAR, + ST_UL, + ST_VAL_FACT, + ST_EVENT, + ST_CHAR, + ST_INTF, + ST_PRI_KEY, + ST_ANY, + ST_NATIVE, + + MAX_LITERAL + }; + + extern const ACE_TCHAR* const LITERALS[MAX_LITERAL]; + } +} + +#endif /* XMI_LITERALS_H */ diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_extern.h b/modules/CIAO/tools/IDL3_to_XMI/be_extern.h new file mode 100644 index 00000000000..532b5ebe64e --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_extern.h @@ -0,0 +1,86 @@ +// This may look like C, but it's really -*- C++ -*- +// $Id$ +/* + +COPYRIGHT + +Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United +States of America. All Rights Reserved. + +This product is protected by copyright and distributed under the following +license restricting its use. + +The Interface Definition Language Compiler Front End (CFE) is made +available for your use provided that you include this license and copyright +notice on all media and documentation and the software program in which +this product is incorporated in whole or part. You may copy and extend +functionality (but may not remove functionality) of the Interface +Definition Language CFE without charge, but you are not authorized to +license or distribute it to anyone else except as part of a product or +program developed by you or with the express written consent of Sun +Microsystems, Inc. ("Sun"). + +The names of Sun Microsystems, Inc. and any of its subsidiaries or +affiliates may not be used in advertising or publicity pertaining to +distribution of Interface Definition Language CFE as permitted herein. + +This license is effective until terminated by Sun for failure to comply +with this license. Upon termination, you shall destroy or return all code +and documentation for the Interface Definition Language CFE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF +ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS +FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF +DEALING, USAGE OR TRADE PRACTICE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT +ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES +TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. + +SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH +RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY +INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. + +IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR +ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL +DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +Use, duplication, or disclosure by the government is subject to +restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in +Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR +52.227-19. + +Sun, Sun Microsystems and the Sun logo are trademarks or registered +trademarks of Sun Microsystems, Inc. + +SunSoft, Inc. +2550 Garcia Avenue +Mountain View, California 94043 + +NOTE: + +SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are +trademarks or registered trademarks of Sun Microsystems, Inc. + +*/ + +#ifndef TAO_IFR_BE_EXTERN_H +#define TAO_IFR_BE_EXTERN_H + +#include "CIAO_IDL3_TO_XMI_Export.h" +#include "be_global.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +extern CIAO_IDL3_TO_XMI_Export BE_GlobalData *be_global; + +extern CIAO_IDL3_TO_XMI_Export int BE_init (int &, ACE_TCHAR*[]); +extern CIAO_IDL3_TO_XMI_Export void BE_post_init (char *[], long); +extern CIAO_IDL3_TO_XMI_Export void BE_version (void); +extern CIAO_IDL3_TO_XMI_Export void BE_produce (void); +extern CIAO_IDL3_TO_XMI_Export void BE_cleanup (void); +extern CIAO_IDL3_TO_XMI_Export void BE_abort (void); + +#endif /* TAO_IFR_BE_EXTERN_H */ diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_global.cpp b/modules/CIAO/tools/IDL3_to_XMI/be_global.cpp new file mode 100644 index 00000000000..ceeb3f56ed6 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_global.cpp @@ -0,0 +1,222 @@ +// $Id$ + +// ============================================================================ +// +// +// = LIBRARY +// TAO_IDL3_TO_IDL2L_BE_DLL +// +// = FILENAME +// be_global.cpp +// +// = DESCRIPTION +// Stores global data specific to the compiler back end. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#include "be_global.h" +#include "ast_generator.h" +#include "global_extern.h" +#include "idl_defines.h" +#include "ace/OS_NS_stdio.h" + +CIAO_IDL3_TO_XMI_Export BE_GlobalData *be_global = 0; + +BE_GlobalData::BE_GlobalData (void) + : ir_filter_ (false), + filename_ (0), + output_dir_ (0), + dtd_ ("XMI.dtd"), + local_only_(true) +{ +} + +BE_GlobalData::~BE_GlobalData (void) +{ +} + +bool +BE_GlobalData::ir_filter (void) const +{ + return this->ir_filter_; +} + +void +BE_GlobalData::ir_filter (bool flag) +{ + this->ir_filter_ = flag; +} + +const char * +BE_GlobalData::filename (void) const +{ + return this->filename_; +} + +void +BE_GlobalData::filename (char *fname) +{ + this->filename_ = fname; +} + +const char* +BE_GlobalData::output_dir (void) const +{ + return this->output_dir_; +} + +void +BE_GlobalData::output_dir (const char* s) +{ + delete [] this->output_dir_; + this->output_dir_ = ACE::strnew (s); +} + +const char* +BE_GlobalData::dtd (void) const +{ + return this->dtd_.c_str (); +} + +void +BE_GlobalData::dtd (const char* s) +{ + this->dtd_ = s; +} + +bool +BE_GlobalData::local_only (void) const +{ + return this->local_only_; +} + +void +BE_GlobalData::local_only (bool flag) +{ + this->local_only_ = flag; +} + +void +BE_GlobalData::parse_args (long &i, char **av) +{ + switch (av[i][1]) + { + // Directory where the generated file is to + // be kept. Default is the current directory from which + // is called. + case 'f': + be_global->ir_filter (true); + break; + + case 'o': + switch (av[i][2]) + { + case 'd': + if (av[i][3] == '\0') + { + be_global->output_dir (av [i + 1]); + i++; + } + else + { + be_global->output_dir (av[i] + 3); + } + break; + + case 'f': + if (av[i][3] == '\0') + { + be_global->filename (av [i + 1]); + i++; + } + else + { + be_global->filename (av[i] + 3); + } + break; + default: + idl_global->set_compile_flags (idl_global->compile_flags () + | IDL_CF_ONLY_USAGE); + } + break; + + case 'x': + if (av[i][3] == '\0') + { + be_global->dtd (av [i + 1]); + ++i; + } + else + { + be_global->dtd (av[i] + 3); + } + break; + + case 'n': + be_global->local_only (false); + break; + + default: + ACE_ERROR (( + LM_ERROR, + ACE_TEXT ("IDL: I don't understand the '%s' option\n"), + av[i])); + + idl_global->set_compile_flags (idl_global->compile_flags () + | IDL_CF_ONLY_USAGE); + break; + } +} + +// Prepare an argument for a BE +void +BE_GlobalData::prep_be_arg (char *) +{ +} + +void +BE_GlobalData::arg_post_proc (void) +{ +} + +void +BE_GlobalData::usage (void) const +{ + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT (" -f\t\t\tsimulates IFR type filtering on included types\n") + )); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT (" -od \t\toutput directory for the generated file ") + ACE_TEXT ("(default is current directory)\n") + )); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT (" -of \t\toutput file for the generated XMI ") + ACE_TEXT ("(default for example.idl is example.xmi)\n") + )); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT (" -xd \t\tfull path to XMI dtd file to include in generated file ") + ACE_TEXT ("(default is XMI.dtd)\n") + )); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT (" -n\t\t\texports XMI for non-local entities\n") + )); +} + +AST_Generator * +BE_GlobalData::generator_init (void) +{ + AST_Generator *gen = 0; + ACE_NEW_RETURN (gen, + AST_Generator, + 0); + return gen; +} + + +void +BE_GlobalData::destroy (void) +{ +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_global.h b/modules/CIAO/tools/IDL3_to_XMI/be_global.h new file mode 100644 index 00000000000..2092587d94a --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_global.h @@ -0,0 +1,103 @@ +/* -*- c++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO_IFR_BE_DLL +// +// = FILENAME +// be_global.h +// +// = DESCRIPTION +// Header file for class containing compiler back end global data. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef TAO_IFR_BE_GLOBAL_H +#define TAO_IFR_BE_GLOBAL_H + +#include "CIAO_IDL3_TO_XMI_Export.h" +#include "idl_defines.h" + +#include "ace/SString.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class AST_Generator; + +// Defines a class containing all back end global data. + +class CIAO_IDL3_TO_XMI_Export BE_GlobalData +{ +public: + // = TITLE + // BE_GlobalData + // + // = DESCRIPTION + // Storage of global data specific to the compiler back end + // + BE_GlobalData (void); + // Constructor. + + virtual ~BE_GlobalData (void); + // Destructor. + + // Data accessors. + bool ir_filter (void) const; + void ir_filter (bool flag); + + const char *filename (void) const; + void filename (char *fname); + + const char* output_dir (void) const; + void output_dir (const char* s); + + const char * dtd (void) const; + void dtd (const char *s); + + bool local_only (void) const; + void local_only (bool); + + void parse_args (long &i, char **av); + // Parse args that affect the backend. + + void prep_be_arg (char *s); + // Special BE arg call factored out of DRV_args. + + void arg_post_proc (void); + // Checks made after parsing args. + + void usage (void) const; + // Usage message for backend options. + + AST_Generator *generator_init (void); + // Create an AST node generator. + + void destroy (void); + // Cleanup. + +private: + bool ir_filter_; + + char *filename_; + // Name of the IDL file we are processing. + + char *output_dir_; + // Directory where the generated file is to be + // kept. Default value is 0 for this string which means the current + // directory from which the is called. + + /// full path to dtd to be used. + ACE_CString dtd_; + + /// generate xmi for local entities only + bool local_only_; +}; + +#endif /* TAO_IFR_BE_GLOBAL_H */ diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_helper.cpp b/modules/CIAO/tools/IDL3_to_XMI/be_helper.cpp new file mode 100644 index 00000000000..4a7b28096c6 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_helper.cpp @@ -0,0 +1,438 @@ +// $Id$ + +// ============================================================================ +// +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_helper.cpp +// +// = DESCRIPTION +// Provides helper classes to print generated code to the output +// +// = AUTHOR +// Aniruddha Gokhale +// +// Improvements by Carlos O'Ryan +// +// ============================================================================ + +#include "be_helper.h" +#include "idl_defines.h" +#include "ace/OS_NS_stdio.h" +#include "ace/OS_NS_string.h" +#include "ace/os_include/os_ctype.h" + +ACE_RCSID (be, + be_helper, + "$Id$") + +static const char copyright[] = +" <--\n" +" -*- XML -*-\n" +"\n" +" $I" "d$\n\n" +" **** Code generated by the The ACE ORB (TAO) IDL Compiler ****\n" +" TAO and the TAO IDL Compiler have been developed by:\n" +" Center for Distributed Object Computing\n" +" Washington University\n" +" St. Louis, MO\n" +" USA\n" +" http:www.cs.wustl.edu/~schmidt/doc-center.html\n" +" and\n" +" Distributed Object Computing Laboratory\n" +" University of California at Irvine\n" +" Irvine, CA\n" +" USA\n" +" http:doc.ece.uci.edu/\n" +" and\n" +" Institute for Software Integrated Systems\n" +" Vanderbilt University\n" +" Nashville, TN\n" +" USA\n" +" http:www.isis.vanderbilt.edu/\n" +"\n" +" Information about TAO is available at:\n" +" http:www.cs.wustl.edu/~schmidt/TAO.html\n" +"-->"; + +TAO_NL::TAO_NL (void) +{ +} + +TAO_INDENT::TAO_INDENT (int do_now) + : do_now_ (do_now) +{ +} + +TAO_UNINDENT::TAO_UNINDENT (int do_now) + : do_now_ (do_now) +{ +} + +const TAO_NL be_nl; +const TAO_INDENT be_idt; +const TAO_INDENT be_idt_nl (1); +const TAO_UNINDENT be_uidt; +const TAO_UNINDENT be_uidt_nl (1); + +// Methods of the TAO_OutStream class. + +TAO_OutStream::TAO_OutStream (void) + : fp_ (0), + indent_level_ (0) +{ +} + +TAO_OutStream::~TAO_OutStream (void) +{ + // Close the underlying I/O handle only if it exists. + if (this->fp_ != 0) + { + ACE_OS::fclose (this->fp_); + this->fp_ = 0; + } + + indent_level_ = 0; +} + +int +TAO_OutStream::open (const char *fname) +{ + if (fname != 0) + { + // File name exists, open an I/O file handle. + this->fp_ = ACE_OS::fopen (fname, "w"); + + if (this->fp_ != 0) + { + // Put the copyright notice. + ACE_OS::fprintf (this->fp_, + "%s\n", + copyright); + + ACE_OS::fflush (this->fp_); + + return 0; + } + else + { + return -1; + } + } + else + { + return -1; + } +} + +// Return the underlying lowlevel file pointer. +// indentation. +FILE * +TAO_OutStream::file (void) +{ + return this->fp_; +} + +int +TAO_OutStream::incr_indent (unsigned short flag) +{ + indent_level_++; + + if (flag != 0) + { + return this->indent (); + } + else + { + // Do not indent output. + return 0; + } +} + +// Indentation +int +TAO_OutStream::decr_indent (unsigned short flag) +{ + this->indent_level_--; + // Just in case somebody gets "unindent happy". + if (this->indent_level_ < 0) + { + // ACE_DEBUG ((LM_DEBUG, "negative indentation?\n")); + this->indent_level_ = 0; + } + if (flag != 0) + { + return this->indent (); + } + else + { + // Do not indent output. + return 0; + } +} + +int +TAO_OutStream::reset (void) +{ + this->indent_level_ = 0; + return 0; +} + +// Indented print. +int +TAO_OutStream::indent (void) +{ + // Based on the current indentation level, leave appropriate number of blank + // spaces in the output. + if (this->indent_level_ > 0) + { + for (int i = 0; i < this->indent_level_; i++) + { + ACE_OS::fprintf (this->fp_, " "); + ACE_OS::fflush (this->fp_); + } + } + + return 0; +} + +int +TAO_OutStream::nl (void) +{ + ACE_OS::fprintf (this->fp_, "\n"); + this->indent (); + return 0; +} + +// Printf style variable argument print. +int +TAO_OutStream::print (const char *format, ...) +{ + int result = 0; + va_list ap; + va_start (ap, format); + ACE_OSCALL (::vfprintf (this->fp_, + format, + ap), + int, + -1, + result); + + ACE_OS::fflush (this->fp_); + va_end (ap); + + return result; +} + +void +TAO_OutStream::gen_ifndef_string (const char *fname, + const char *prefix, + const char *suffix) +{ + static char macro_name [NAMEBUFSIZE]; + + ACE_OS::memset (macro_name, + '\0', + NAMEBUFSIZE); + + const char *extension = ACE_OS::strrchr (fname, '.'); + + if (extension == 0) + { + // File seems to have no extension, so let us take the name + // as it is. + extension = fname; + } + + ACE_OS::sprintf (macro_name, prefix); + + size_t offset = ACE_OS::strlen (prefix); + + // Convert letters in fname to upper case. + for (int i = 0; i < (extension - fname); i++) + { + if (isalpha (fname [i])) + { + macro_name[i + offset] = (char) toupper (fname [i]); + } + else if (isdigit (fname [i])) + { + macro_name[i + offset] = fname[i]; + } + else + { + macro_name[i + offset] = '_'; + } + } + + ACE_OS::strcat (macro_name, suffix); + + // Generate the #ifndef ... #define statements. + this->print ("#ifndef %s\n", + macro_name); + this->print ("#define %s", + macro_name); +} + +TAO_OutStream & +TAO_OutStream::operator<< (const char *str) +{ + ACE_OS::fprintf (this->fp_, "%s", str); + ACE_OS::fflush (this->fp_); + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::UShort num) +{ + ACE_OS::fprintf (this->fp_, + "%hu", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::Short num) +{ + ACE_OS::fprintf (this->fp_, + "%hd", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::ULong num) +{ + ACE_OS::fprintf (this->fp_, + "%lu", + (unsigned long) num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::Long num) +{ + ACE_OS::fprintf (this->fp_, + "%ld", + (long) num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +#if defined (ACE_WIN64) +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::ULongLong num) +{ + ACE_OS::fprintf (this->fp_, + ACE_UINT64_FORMAT_SPECIFIER, + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const ACE_CDR::LongLong num) +{ + ACE_OS::fprintf (this->fp_, + ACE_INT64_FORMAT_SPECIFIER, + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} +#endif /* ACE_WIN64 */ + +TAO_OutStream & +TAO_OutStream::operator<< (const unsigned long num) +{ + ACE_OS::fprintf (this->fp_, + "%lu", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const long num) +{ + ACE_OS::fprintf (this->fp_, + "%ld", + num); + + ACE_OS::fflush (this->fp_); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const TAO_NL&) +{ + ACE_OS::fprintf (this->fp_ , + "\n"); + this->indent (); + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const TAO_INDENT& i) +{ + this->incr_indent (0); + + if (i.do_now_) + { + this->nl (); + } + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (const TAO_UNINDENT& i) +{ + this->decr_indent (0); + + if (i.do_now_) + { + this->nl (); + } + + return *this; +} + +TAO_OutStream & +TAO_OutStream::operator<< (Identifier *id) +{ + return this->print (id); +} + +TAO_OutStream & +TAO_OutStream::operator<< (UTL_IdList *id) +{ + return this->print (id); +} + +TAO_OutStream & +TAO_OutStream::operator<< (AST_Expression *expr) +{ + return this->print (expr); +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_helper.h b/modules/CIAO/tools/IDL3_to_XMI/be_helper.h new file mode 100644 index 00000000000..d8bbb3b1766 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_helper.h @@ -0,0 +1,176 @@ +/* -*- c++ -*- */ +// $Id$ + +/** + * @file be_helper.h + * @author Aniruddha Gokhale + * @author Carlos O'Ryan + * + * Defines the abstract class for outputting the C++ mapping. This is a + * helper class to the singleton TAO_CodeGen class + */ + +#ifndef TAO_BE_OUTSTRM_H +#define TAO_BE_OUTSTRM_H + +#include "ace/CDR_Base.h" + +class Identifier; +class UTL_IdList; +class AST_Expression; + +// a dummy structure to inform TAO_OutStream's << operator to put a newline +// and use the current indentation for the succeeding line +struct TAO_NL +{ +public: + TAO_NL (void); +}; + +struct TAO_INDENT +{ + // = TITLE + // Operates like a manipulator, increasing the indentation level. + // + // = DESCRIPTION + // Increase the indentation level, if the "do_now" parameter is + // not zero then the method is called on the stream. + // + TAO_INDENT (int do_now = 0); + + const int do_now_; +}; + +struct TAO_UNINDENT +{ + // = TITLE + // Operates like a manipulator, decreasing the indentation level. + // + // = DESCRIPTION + // Decrease the indentation level, if the "do_now" parameter is + // not zero then the method is called on the stream. + // + TAO_UNINDENT (int do_now = 0); + + const int do_now_; +}; + +extern const TAO_NL be_nl; +extern const TAO_INDENT be_idt; +extern const TAO_INDENT be_idt_nl; +extern const TAO_UNINDENT be_uidt; +extern const TAO_UNINDENT be_uidt_nl; + +class TAO_OutStream +{ + // =TITLE + // TAO_OutStream + // + // =DESCRIPTION + // Defines an interface by which the backend code generator can + // print its output to the underlying I/O handle. This is a + // helper class that will be used by the TAO_CodeGen + // class. However, this is an abstract class and classes that + // understand specific front ends must derive from this class. +public: + TAO_OutStream (void); + // constructor. + + virtual ~TAO_OutStream (void); + // destructor. + + int open (const char *fname); + // open the underlying low-level handle for output. + + + FILE *file (void); + // Return the underlying lowlevel file pointer. + + int incr_indent (unsigned short flag = 1); + // increment the indentation level and by default actually indent the output + // accordingly + + int decr_indent (unsigned short flag = 1); + // decrease the indentation level and by default actually indent the output + // accordingly + + int reset (void); + // reset indentation level to 0 + + int indent (void); + // indent starting next line + + int nl (void); + // put a newline and indent on the next line + + int print (const char *format, ...); + // "printf" style variable argument print + + void gen_ifndef_string (const char *fname, + const char *prefix, + const char *suffix); + + // =overloaded operators + + TAO_OutStream &operator<< (const char *str); + // output the char string and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::UShort num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::Short num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::ULong num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::Long num); + // output the integer and return a reference to ourselves + +#if defined (ACE_WIN64) + TAO_OutStream &operator<< (const ACE_CDR::ULongLong num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const ACE_CDR::LongLong num); + // output the integer and return a reference to ourselves +#endif /* ACE_WIN64 */ + + TAO_OutStream &operator<< (const unsigned long num); + // output the integer and return a reference to ourselves + + TAO_OutStream &operator<< (const long num); + // output the integer and return a reference to ourselves + + // = MANIPULATORS + + TAO_OutStream &operator<< (const TAO_NL& nl); + TAO_OutStream &operator<< (const TAO_INDENT& i); + TAO_OutStream &operator<< (const TAO_UNINDENT& i); + + // The following will be provided by specialized classes + + TAO_OutStream &operator<< (Identifier *id); + // output an Identifier node + + TAO_OutStream &operator<< (UTL_IdList *idl); + // output a scoped name + + TAO_OutStream &operator<< (AST_Expression *expr); + // output an AST_Expression node + + // provided by specialized classes + virtual TAO_OutStream &print (Identifier *id) = 0; + + virtual TAO_OutStream &print (UTL_IdList *idl) = 0; + + virtual TAO_OutStream &print (AST_Expression *idl) = 0; + +protected: + FILE *fp_; + // the underlying low-level I/O handle + + int indent_level_; + // indentation level +}; + +#endif // if !defined diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_init.cpp b/modules/CIAO/tools/IDL3_to_XMI/be_init.cpp new file mode 100644 index 00000000000..7863fcae9d8 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_init.cpp @@ -0,0 +1,31 @@ +// $Id$ + +#include "global_extern.h" +#include "be_extern.h" +#include "../../ciao/Version.h" + +CIAO_IDL3_TO_XMI_Export void +BE_version (void) +{ + ACE_DEBUG ((LM_DEBUG, + "%s %s\n", + ACE_TEXT ("TAO_ID3_TO_IDL2_BE, version"), + ACE_TEXT (CIAO_VERSION))); +} + +CIAO_IDL3_TO_XMI_Export int +BE_init (int & /* argc */, ACE_TCHAR * /* argv */ []) +{ + // Initialize BE global data object. + ACE_NEW_RETURN (be_global, + BE_GlobalData, + -1); + + idl_global->pass_orb_idl (true); + return 0; +} + +CIAO_IDL3_TO_XMI_Export void +BE_post_init (char * /* files */ [], long /* nfiles */) +{ +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_produce.cpp b/modules/CIAO/tools/IDL3_to_XMI/be_produce.cpp new file mode 100644 index 00000000000..7a66096bd32 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_produce.cpp @@ -0,0 +1,139 @@ +// $Id$ + +/* + +COPYRIGHT + +Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United +States of America. All Rights Reserved. + +This product is protected by copyright and distributed under the following +license restricting its use. + +The Interface Definition Language Compiler Front End (CFE) is made +available for your use provided that you include this license and copyright +notice on all media and documentation and the software program in which +this product is incorporated in whole or part. You may copy and extend +functionality (but may not remove functionality) of the Interface +Definition Language CFE without charge, but you are not authorized to +license or distribute it to anyone else except as part of a product or +program developed by you or with the express written consent of Sun +Microsystems, Inc. ("Sun"). + +The names of Sun Microsystems, Inc. and any of its subsidiaries or +affiliates may not be used in advertising or publicity pertaining to +distribution of Interface Definition Language CFE as permitted herein. + +This license is effective until terminated by Sun for failure to comply +with this license. Upon termination, you shall destroy or return all code +and documentation for the Interface Definition Language CFE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF +ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS +FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF +DEALING, USAGE OR TRADE PRACTICE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT +ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES +TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. + +SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH +RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY +INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. + +IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR +ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL +DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +Use, duplication, or disclosure by the government is subject to +restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in +Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR +52.227-19. + +Sun, Sun Microsystems and the Sun logo are trademarks or registered +trademarks of Sun Microsystems, Inc. + +SunSoft, Inc. +2550 Garcia Avenue +Mountain View, California 94043 + +NOTE: + +SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are +trademarks or registered trademarks of Sun Microsystems, Inc. + + */ + +#include "CIAO_IDL3_TO_XMI_Export.h" +#include "global_extern.h" +#include "be_extern.h" +#include "fe_extern.h" +#include "ast_root.h" +#include "IDL3_to_XMI_visitor.h" +#include "IR_Simulator_visitor.h" +#include + +// Clean up before exit, whether successful or not. +CIAO_IDL3_TO_XMI_Export void +BE_cleanup (void) +{ + idl_global->destroy (); +} + +// Abort this run of the BE. +CIAO_IDL3_TO_XMI_Export void +BE_abort (void) +{ + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Fatal Error - Aborting\n"))); + + // BE_cleanup will be called after the exception is caught. + BE_cleanup (); +} + +// Do the work of this BE. This is the starting point for code generation. +CIAO_IDL3_TO_XMI_Export void +BE_produce (void) +{ + // Get the root node. + AST_Decl *d = idl_global->root (); + AST_Root *ast_root = AST_Root::narrow_from_decl (d); + + if (ast_root == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%N:%l) BE_produce - ") + ACE_TEXT ("No Root\n"))); + BE_abort (); + } + + xercesc::XMLPlatformUtils::Initialize (); + + if (be_global->ir_filter ()) + { + CIAO::XMI::ir_simulator_visitor visitor; + + if (visitor.visit_root (ast_root) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("error: an error occured in the ir_simulator visitor."))); + xercesc::XMLPlatformUtils::Terminate (); + BE_cleanup (); + return; + } + } + + CIAO::XMI::idl3_to_xmi_visitor visitor (be_global->ir_filter ()); + + if (visitor.visit_root (ast_root) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%N:%l) BE_produce -") + ACE_TEXT (" failed to accept visitor\n"))); + } + + xercesc::XMLPlatformUtils::Terminate (); + + // Clean up. + BE_cleanup (); +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.cpp b/modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.cpp new file mode 100644 index 00000000000..30126f74451 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.cpp @@ -0,0 +1,193 @@ +// $Id$ + +#include "be_sunsoft.h" +#include "ast_expression.h" +#include "utl_identifier.h" +#include "utl_idlist.h" +#include "utl_string.h" +#include "ace/OS_NS_stdio.h" +#include "ace/OS_NS_string.h" +#include "ace/OS_NS_ctype.h" + +ACE_RCSID (be, + be_sunsoft, + "$Id$") + +TAO_SunSoft_OutStream::TAO_SunSoft_OutStream (void) + : TAO_OutStream () +{ +} + +TAO_SunSoft_OutStream::~TAO_SunSoft_OutStream (void) +{ +} + +TAO_OutStream & +TAO_SunSoft_OutStream::print (Identifier *id) +{ + ACE_OS::fprintf (this->fp_, + id->get_string ()); + + return *this; +} + +TAO_OutStream & +TAO_SunSoft_OutStream::print (UTL_IdList *idl) +{ + long first = true; + long second = false; + Identifier *id = 0; + + for (UTL_IdListActiveIterator i (idl); !i.is_done (); i.next ()) + { + if (!first) + { + *this << "::"; + } + else if (second) + { + first = second = false; + } + + // Print the identifier. + id = i.item (); + *this << id; + + if (first) + { + if (ACE_OS::strcmp (id->get_string (), "") != 0) + { + // Does not start with a "". + first = false; + } + else + { + second = true; + } + } + } + + return *this; +} + +TAO_OutStream& +TAO_SunSoft_OutStream::print (AST_Expression *expr) +{ + AST_Expression::AST_ExprValue *ev = expr->ev (); + + if (ev) + { + switch (ev->et) + { + case AST_Expression::EV_short: + this->TAO_OutStream::print (ACE_INT32_FORMAT_SPECIFIER_ASCII, ev->u.sval); + break; + case AST_Expression::EV_ushort: + this->TAO_OutStream::print (ACE_INT32_FORMAT_SPECIFIER_ASCII "%c", ev->u.usval, 'U'); + break; + case AST_Expression::EV_long: + this->TAO_OutStream::print (ACE_INT32_FORMAT_SPECIFIER_ASCII, ev->u.lval); + break; + case AST_Expression::EV_ulong: + this->TAO_OutStream::print (ACE_UINT32_FORMAT_SPECIFIER_ASCII "%c", ev->u.ulval, 'U'); + break; + // The ACE_LACKS_LONGLONG_T guards have been removed around + // the next 2 cases since the macros now used should work + // whether native 64-bit integers are defined or not. + case AST_Expression::EV_longlong: + this->TAO_OutStream::print ("ACE_INT64_LITERAL ("); + this->TAO_OutStream::print (ACE_INT64_FORMAT_SPECIFIER_ASCII, + ev->u.llval); + this->TAO_OutStream::print (")"); + break; + case AST_Expression::EV_ulonglong: + this->TAO_OutStream::print ("ACE_UINT64_LITERAL ("); + this->TAO_OutStream::print (ACE_UINT64_FORMAT_SPECIFIER_ASCII, + ev->u.ullval); + this->TAO_OutStream::print (")"); + break; + case AST_Expression::EV_float: + this->TAO_OutStream::print ("%f%c", ev->u.fval, 'F'); + break; + case AST_Expression::EV_double: + this->TAO_OutStream::print ("%24.16G", ev->u.dval); + break; + case AST_Expression::EV_longdouble: + break; + case AST_Expression::EV_char: + // isprint() sees \ and ' as printable characters + // so we have to test for them first. + if (ev->u.cval == '\\') + this->TAO_OutStream::print ("'\\\\'"); + else if (ev->u.cval == '\'') + this->TAO_OutStream::print ("'\\''"); + + // This handles hex and octal escape sequences + // that would print out either as weird characters + // or as an unsigned number too large for a char. + else if ((unsigned char) ev->u.cval > ACE_CHAR_MAX) + this->TAO_OutStream::print ("%hd", ev->u.cval); + else if (ACE_OS::ace_isprint (ev->u.cval)) + this->TAO_OutStream::print ("'%c'", ev->u.cval); + else if (ACE_OS::ace_iscntrl (ev->u.cval)) + switch (ev->u.cval) + { + case '\n': + this->TAO_OutStream::print ("'\\n'"); + break; + case '\t': + this->TAO_OutStream::print ("'\\t'"); + break; + case '\r': + this->TAO_OutStream::print ("'\\r'"); + break; + case '\v': + this->TAO_OutStream::print ("'\\v'"); + break; + case '\f': + this->TAO_OutStream::print ("'\\f'"); + break; + case '\b': + this->TAO_OutStream::print ("'\\b'"); + break; + case '\a': + this->TAO_OutStream::print ("'\\a'"); + break; + case '\?': + this->TAO_OutStream::print ("'?'"); + break; + default: + this->TAO_OutStream::print ("'\\x%x'", ev->u.cval); + } + else + this->TAO_OutStream::print ("'\\x%x'", ev->u.cval); + break; + case AST_Expression::EV_wchar: + this->TAO_OutStream::print ("L'%lc'", ev->u.wcval); + break; + case AST_Expression::EV_octet: + this->TAO_OutStream::print ("%d", ev->u.oval); + break; + case AST_Expression::EV_bool: + this->TAO_OutStream::print ("%s", ev->u.bval ? "true" : "false"); + break; + case AST_Expression::EV_string: + this->TAO_OutStream::print ("\"%s\"", ev->u.strval->get_string ()); + break; + case AST_Expression::EV_wstring: + this->TAO_OutStream::print ("L\"%s\"", ev->u.wstrval); + break; + case AST_Expression::EV_enum: + this->print (expr->n ()); + break; + default: + break; + } + } + else + { + // XXXASG: need to add code here + } + + return *this; +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.h b/modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.h new file mode 100644 index 00000000000..5aef8a66d4d --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/be_sunsoft.h @@ -0,0 +1,39 @@ +/* -*- c++ -*- */ +// $Id$ + +/** + * @file be_sunsoft.h + * + * Sunsoft backend output generation. + */ + +#ifndef TAO_BE_HELPER_H +#define TAO_BE_HELPER_H + +#include "be_helper.h" + +class TAO_SunSoft_OutStream : public TAO_OutStream +{ + // =TITLE + // TAO_SunSoft_OutStream + // =DESCRIPTION + // Backend specific to SunSoft AST nodes +public: + TAO_SunSoft_OutStream (void); + // constructor + + ~TAO_SunSoft_OutStream (void); + // destuctor + + virtual TAO_OutStream &print (Identifier *id); + // output the SunSoft IDL Identifier Node + + virtual TAO_OutStream &print (UTL_IdList *idl); + // output the SunSoft IDL UTL_IdList Node which is usually used to maintain a + // scoped name + + virtual TAO_OutStream &print (AST_Expression *expr); + // output the contents of the AST_Expression node +}; + +#endif // if !defined diff --git a/modules/CIAO/tools/IDL3_to_XMI/identifier_helper.cpp b/modules/CIAO/tools/IDL3_to_XMI/identifier_helper.cpp new file mode 100644 index 00000000000..dc540554f18 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/identifier_helper.cpp @@ -0,0 +1,115 @@ +/* -*- c++ -*- */ +// $Id$ + +#include "identifier_helper.h" +#include "utl_identifier.h" +#include "utl_string.h" +#include "global_extern.h" + +Identifier * +IdentifierHelper::original_local_name (Identifier * local_name) +{ + Identifier * id = 0; + + // Remove _cxx_ if it is present. + if (ACE_OS::strstr (local_name->get_string (), + "_cxx_") + == local_name->get_string ()) + { + // CString class is good to do this stuff. + ACE_CString name_str (local_name->get_string ()); + + // Remove _cxx_. + name_str = name_str.substr (ACE_OS::strlen ("_cxx_")); + + // Assign to the Identifier variable. + ACE_NEW_RETURN (id, + Identifier (name_str.c_str ()), + 0); + } + else + { + id = local_name->copy (); + } + + return id; +} + + +ACE_CString +IdentifierHelper::orig_sn (UTL_IdList * sn, bool appended_to) +{ + ACE_CString retval; + bool first = true; + bool second = false; + Identifier *id = 0; + + for (UTL_IdListActiveIterator i (sn); !i.is_done ();) + { + if (!first) + { + retval += "::"; + } + else if (second) + { + first = second = false; + } + + id = IdentifierHelper::original_local_name (i.item ()); + i.next (); + + // Append the identifier. + retval += + appended_to && i.is_done () + ? id->get_string () + : IdentifierHelper::try_escape (id).c_str (); + + if (first) + { + if (ACE_OS::strcmp (id->get_string (), "") != 0) + { + // Does not start with a "". + first = false; + } + else + { + second = true; + } + } + + id->destroy (); + delete id; + id = 0; + } + + return retval; +} + +bool +IdentifierHelper::is_idl_keyword (Identifier * local_name) +{ + UTL_String utl_tmp (local_name->get_string ()); + ACE_CString ext_id (utl_tmp.get_canonical_rep (), + 0, + false); + + int status = idl_global->idl_keywords ().find (ext_id); + utl_tmp.destroy (); + + return status == 0; +} + +ACE_CString +IdentifierHelper::try_escape (Identifier * local_name) +{ + ACE_CString s_local_name (local_name->get_string ()); + + if (IdentifierHelper::is_idl_keyword (local_name)) + { + return "_" + s_local_name; + } + else + { + return s_local_name; + } +} diff --git a/modules/CIAO/tools/IDL3_to_XMI/identifier_helper.h b/modules/CIAO/tools/IDL3_to_XMI/identifier_helper.h new file mode 100644 index 00000000000..a414b8fadd5 --- /dev/null +++ b/modules/CIAO/tools/IDL3_to_XMI/identifier_helper.h @@ -0,0 +1,64 @@ +// $Id$ + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO_IDL3_TO_IDL2_BE_DLL +// +// = FILENAME +// identifier_helper.h +// +// = DESCRIPTION +// Utilities associated with UTL_Identifier. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef IDENTIFIER_HELPER_H +#define IDENTIFIER_HELPER_H + +#include "utl_scoped_name.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/SString.h" + +class Identifier; + +struct IdentifierHelper +{ + // + // = TITLE + // IdentifierHelper. + // + // = DESCRIPTION + // 1) keeps escape (leading underscore character in generated + // identifier in IDL + // 2) removes the '_' escape character when the identifier is + // part of another identifier such as in provides_XXX + // 3) removes any '_cxx_' in generated IDL + + static Identifier * + original_local_name (Identifier * local_name); + + // Removes '_cxx_ from segments of a scoped name, and optionally + // de-escape the last segment, if it's to be appended to. + static ACE_CString + orig_sn (UTL_ScopedName * scoped_name, bool appended_to = false); + + // Detects case-insensitive match with IDL keyword. + static bool + is_idl_keyword (Identifier * local_name); + + // Preserves the 'escape' (leading underscore) in a + // generated identifier if necessary. + static ACE_CString + try_escape (Identifier * local_name); +}; + +#endif /* IDENTIFIER_HELPER_H */ diff --git a/modules/CIAO/tools/XML/CIAO_XML_Utils_Export.h b/modules/CIAO/tools/XML/CIAO_XML_Utils_Export.h new file mode 100644 index 00000000000..f4f3ec3a1cd --- /dev/null +++ b/modules/CIAO/tools/XML/CIAO_XML_Utils_Export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl CIAO_XML_Utils +// ------------------------------ +#ifndef CIAO_XML_UTILS_EXPORT_H +#define CIAO_XML_UTILS_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (CIAO_XML_UTILS_HAS_DLL) +# define CIAO_XML_UTILS_HAS_DLL 1 +#endif /* ! CIAO_XML_UTILS_HAS_DLL */ + +#if defined (CIAO_XML_UTILS_HAS_DLL) && (CIAO_XML_UTILS_HAS_DLL == 1) +# if defined (CIAO_XML_UTILS_BUILD_DLL) +# define CIAO_XML_Utils_Export ACE_Proper_Export_Flag +# define CIAO_XML_UTILS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CIAO_XML_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CIAO_XML_UTILS_BUILD_DLL */ +# define CIAO_XML_Utils_Export ACE_Proper_Import_Flag +# define CIAO_XML_UTILS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CIAO_XML_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CIAO_XML_UTILS_BUILD_DLL */ +#else /* CIAO_XML_UTILS_HAS_DLL == 1 */ +# define CIAO_XML_Utils_Export +# define CIAO_XML_UTILS_SINGLETON_DECLARATION(T) +# define CIAO_XML_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CIAO_XML_UTILS_HAS_DLL == 1 */ + +// Set CIAO_XML_UTILS_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CIAO_XML_UTILS_NTRACE) +# if (ACE_NTRACE == 1) +# define CIAO_XML_UTILS_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CIAO_XML_UTILS_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CIAO_XML_UTILS_NTRACE */ + +#if (CIAO_XML_UTILS_NTRACE == 1) +# define CIAO_XML_UTILS_TRACE(X) +#else /* (CIAO_XML_UTILS_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CIAO_XML_UTILS_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CIAO_XML_UTILS_NTRACE == 1) */ + +#endif /* CIAO_XML_UTILS_EXPORT_H */ + +// End of auto generated file. diff --git a/modules/CIAO/tools/XML/XML.mpc b/modules/CIAO/tools/XML/XML.mpc new file mode 100644 index 00000000000..398f2cfdd55 --- /dev/null +++ b/modules/CIAO/tools/XML/XML.mpc @@ -0,0 +1,13 @@ +// $Id$ + +project (CIAO_XML_Utils) : acelib, xerces, ciao_lib { + sharedname += CIAO_XML_Utils + dynamicflags = CIAO_XML_UTILS_BUILD_DLL + includes += .. + + Source_Files { + XML_Error_Handler.cpp + XercesString.cpp + XML_Schema_Resolver.cpp + } +} diff --git a/modules/CIAO/tools/XML/XML_Error_Handler.cpp b/modules/CIAO/tools/XML/XML_Error_Handler.cpp new file mode 100644 index 00000000000..ba24b817649 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Error_Handler.cpp @@ -0,0 +1,70 @@ +// $Id$ + +#include "XML_Error_Handler.h" +#include "ace/Log_Msg.h" +#include "ace/Auto_Ptr.h" +#include +#include +#include +#include "XercesString.h" +#include + +using xercesc::SAXParseException; + +namespace CIAO +{ + namespace XML + { + XML_Error_Handler::XML_Error_Handler (void) + : errors_ (false) + { + } + + XML_Error_Handler::~XML_Error_Handler() + { + } + + void XML_Error_Handler::warning(const SAXParseException& toCatch) + { + XStr file (toCatch.getSystemId ()); + XStr msg (toCatch.getMessage ()); + + std::cerr << "Warning: " << file << ':' << toCatch.getLineNumber () + << ':' << toCatch.getColumnNumber () << " - " + << msg << std::endl; + } + + void XML_Error_Handler::error(const SAXParseException& toCatch) + { + XStr file (toCatch.getSystemId ()); + XStr msg (toCatch.getMessage ()); + + std::cerr << "Error: " << file << ':' << toCatch.getLineNumber () + << ':' << toCatch.getColumnNumber () << " - " + << msg << std::endl; + this->errors_ = true; + } + + void XML_Error_Handler::fatalError(const SAXParseException& toCatch) + { + XStr file (toCatch.getSystemId ()); + XStr msg (toCatch.getMessage ()); + + std::cerr << "Fatal Error: " << file << ':' << toCatch.getLineNumber () + << ':' << toCatch.getColumnNumber () << " - " + << msg << std::endl; + this->errors_ = true; + } + + void XML_Error_Handler::resetErrors() + { + this->errors_ = false; + } + + bool + XML_Error_Handler::getErrors (void) const + { + return this->errors_; + } + } +} diff --git a/modules/CIAO/tools/XML/XML_Error_Handler.h b/modules/CIAO/tools/XML/XML_Error_Handler.h new file mode 100644 index 00000000000..7cc65bf86a1 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Error_Handler.h @@ -0,0 +1,63 @@ +//============================================================== +/** + * @file XML_Error_Handler.h + * + * $Id$ + * + * @brief Error handler for Xerces + * + * @author Bala Natarajan + */ +//================================================================ +#ifndef CIAO_XML_ERROR_HANDLER_H +#define CIAO_XML_ERROR_HANDLER_H + +#include /**/ "ace/pre.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "XML/CIAO_XML_Utils_Export.h" + +#include + +using xercesc::SAXParseException; + +namespace CIAO +{ + namespace XML + { + /** + * @class XML_Error_Hander + * + * @brief Error handler for XERCES + * + */ + class CIAO_XML_Utils_Export XML_Error_Handler + : public xercesc::ErrorHandler + { + public: + + XML_Error_Handler (void); + + ~XML_Error_Handler (void); + + void warning(const SAXParseException& toCatch); + void error(const SAXParseException& toCatch); + void fatalError(const SAXParseException& toCatch); + void resetErrors(); + bool getErrors (void) const; + private : + // Disallow copying + XML_Error_Handler (const XML_Error_Handler&); + XML_Error_Handler& operator= (const XML_Error_Handler&); + + bool errors_; + }; + } +} + +#include /**/ "ace/post.h" + +#endif /* CIAO_XML_ERROR_HANDLER_H*/ diff --git a/modules/CIAO/tools/XML/XML_Helper.h b/modules/CIAO/tools/XML/XML_Helper.h new file mode 100644 index 00000000000..69f887cbe40 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Helper.h @@ -0,0 +1,100 @@ +// $Id$ +//============================================================ +/** + * @file XML_Helper.h + * + * @brief Some helper functions for XML + * + * @author Bala Natarajan + * @author William R. Otte + */ +//============================================================ +#ifndef CIAO_XML_HELPER_H +#define CIAO_XML_HELPER_H +#include /**/ "ace/pre.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ +#include "XML/CIAO_XML_Utils_Export.h" +#include "XML/XML_Error_Handler.h" +#include "XML/XML_Schema_Resolver.h" + +#include "xercesc/util/XercesDefs.hpp" +#include "xercesc/parsers/XercesDOMParser.hpp" + +#include + +namespace XERCES_CPP_NAMESPACE +{ + class DOMDocument; + class DOMWriter; + class DOMImplementation; + class DOMDocumentType; +} + +namespace CIAO +{ + namespace XML + { + /** + * @class XML_Helper + * + * @brief Helper class for some routine XML stuff. + */ + template , + typename Error_Handler = XML_Error_Handler> + class XML_Helper + { + public: + // XML_Helper (void); + + // Initialize the resolver we should use. + XML_Helper (Resolver &resolver, Error_Handler &eh); + + ~XML_Helper (void); + + /// Create a DOM tree + XERCES_CPP_NAMESPACE::DOMDocument * + create_dom (const ACE_TCHAR *uri) const; + + XERCES_CPP_NAMESPACE::DOMDocument * + create_dom (const ACE_TCHAR *root, + const ACE_TCHAR *ns, + XERCES_CPP_NAMESPACE::DOMDocumentType * doctype = 0) const; + + XERCES_CPP_NAMESPACE::DOMDocumentType * + create_doctype (const ACE_TCHAR *qn, + const ACE_TCHAR *pid, + const ACE_TCHAR *sid) const; + + //Writes out a DOMDocument to an XML file + bool write_DOM (XERCES_CPP_NAMESPACE::DOMDocument *doc, + const ACE_TCHAR *file) const; + + bool is_initialized (void) const; + + protected: + /// Intialize the parser + void init_parser (void); + + /// Terminate the parser + void terminate_parser (void); + + private: + bool initialized_; + XERCES_CPP_NAMESPACE::DOMImplementation *impl_; + mutable std::auto_ptr parser_; + + Resolver &resolver_; + Error_Handler &e_handler_; + }; + + + } +} + +#include "XML_Helper.tpp" + +#include /**/ "ace/post.h" +#endif/*CIAO_CONFIG_HANDLERS_XML_HELPER_H*/ diff --git a/modules/CIAO/tools/XML/XML_Helper.tpp b/modules/CIAO/tools/XML/XML_Helper.tpp new file mode 100644 index 00000000000..a21ca5db698 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Helper.tpp @@ -0,0 +1,304 @@ +//$Id$ +#include "XML_Helper.h" +#include "ace/Auto_Ptr.h" +#include "ace/Log_Msg.h" +//#include "ciao/Logger/Log_Macros.h" +#include "xercesc/util/XMLUniDefs.hpp" +#include "xercesc/dom/DOM.hpp" +#include "XML_Error_Handler.h" +#include "XML_Schema_Resolver.h" +#include "xercesc/framework/LocalFileFormatTarget.hpp" +#include "xercesc/dom/DOM.hpp" +#include "XercesString.h" + +#if XERCES_VERSION_MAJOR == 3 +#include "xercesc/dom/DOMLSSerializer.hpp" +#endif + +namespace CIAO +{ + namespace XML + { + using xercesc::XMLException; + using xercesc::XMLString; + using xercesc::DOMImplementation; + using xercesc::DOMImplementationRegistry; +// using xercesc::DOMBuilder; + using xercesc::DOMImplementationLS; + using xercesc::XMLUni; + using xercesc::DOMDocument; + using xercesc::DOMException; + using xercesc::DOMDocumentType; + using xercesc::XercesDOMParser; +/* + template + XML_Helper::XML_Helper (void) + : initialized_ (false) + { + this->init_parser (); + } +*/ + // TODO this is stub implementation + template + XML_Helper::XML_Helper (Resolver &resolver, Error &eh) + : initialized_ (false), + resolver_ (resolver), + e_handler_ (eh) + { + this->init_parser (); + } + + template + XML_Helper::~XML_Helper (void) + { + this->terminate_parser (); + } + + template + bool + XML_Helper::is_initialized (void) const + { + return this->initialized_ == true; + } + + template + void + XML_Helper::init_parser (void) + { + if (this->initialized_) + return; + + // CIAO_DEBUG ((LM_TRACE, CLINFO + //"XML_Helper<>::is_initialized - Initializing the Xerces runtime \n")); + // Initialize the Xerces run-time + try + { + xercesc::XMLPlatformUtils::Initialize(); + } + catch (const XMLException& e) + { + char* message = + XMLString::transcode (e.getMessage()); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + + throw; + } + catch (...) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Some other exception," + " returning\n")); + + return; + } + + // Instantiate the DOM parser. + static const XMLCh gLS[] = { xercesc::chLatin_L, + xercesc::chLatin_S, + xercesc::chNull }; + + // Get an implementation of the Load-Store (LS) interface + // and cache it for later use + impl_ = + DOMImplementationRegistry::getDOMImplementation(gLS); + + this->initialized_ = true; + return; + } + + template + XERCES_CPP_NAMESPACE::DOMDocument * + XML_Helper::create_dom (const ACE_TCHAR *root, + const ACE_TCHAR *ns, + DOMDocumentType *doctype) const + { + if (root == 0 || ns == 0) + return 0; + + return this->impl_->createDocument (XStr (ns), + XStr (root), + doctype); + } + + template + XERCES_CPP_NAMESPACE::DOMDocumentType * + XML_Helper::create_doctype (const ACE_TCHAR *qn, + const ACE_TCHAR *pid, + const ACE_TCHAR *sid) const + { + return this->impl_->createDocumentType (XStr (qn), + XStr (pid), + XStr (sid)); + } + template + XERCES_CPP_NAMESPACE::DOMDocument * + XML_Helper::create_dom (const ACE_TCHAR *url) const + { + + if (url == 0) + return 0; + + try + { + if (this->parser_.get () == 0) + this->parser_.reset ((new xercesc::XercesDOMParser ())); + + // Perform Namespace processing. + this->parser_->setDoNamespaces (true); + + // Discard comment nodes in the document + this->parser_->setCreateCommentNodes (false); + + // Disable datatype normalization. The XML 1.0 attribute value + // normalization always occurs though. + // this->parser_->setFeature (XMLUni::fgDOMDatatypeNormalization, true); + + // Do not create EntityReference nodes in the DOM tree. No + // EntityReference nodes will be created, only the nodes + // corresponding to their fully expanded sustitution text will be + // created. + this->parser_->setCreateEntityReferenceNodes (false); + + // Perform Validation + this->parser_->setValidationScheme (xercesc::AbstractDOMParser::Val_Always); + + // Do not include ignorable whitespace in the DOM tree. + this->parser_->setIncludeIgnorableWhitespace (false); + + // Enable the parser's schema support. + this->parser_->setDoSchema (true); + + // Enable full schema constraint checking, including checking which + // may be time-consuming or memory intensive. Currently, particle + // unique attribution constraint checking and particle derivation + // restriction checking are controlled by this option. + this->parser_->setValidationSchemaFullChecking (true); + + // The parser will treat validation error as fatal and will exit. + this->parser_->setValidationConstraintFatal (true); + + this->parser_->setErrorHandler (&e_handler_); + + this->parser_->setEntityResolver (&resolver_); + + this->parser_->parse (ACE_TEXT_ALWAYS_CHAR (url)); + + if (e_handler_.getErrors ()) + return 0; + + return this->parser_->getDocument (); + } + catch (const DOMException& e) + { + const unsigned int maxChars = 2047; + XMLCh errText[maxChars + 1]; + + if (DOMImplementation::loadDOMExceptionMsg (e.code, + errText, + maxChars)) + { + char* message = + XMLString::transcode (errText); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + } + return 0; + + } + catch (const XMLException& e) + { + char* message = XMLString::transcode (e.getMessage()); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + throw 0; + } + catch (...) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Caught an unknown exception \n")); + throw; + } + + return 0; + } + + template + void + XML_Helper::terminate_parser (void) + { + try + { + xercesc::XMLPlatformUtils::Terminate(); + } + catch (const XMLException& e) + { + char* message = + XMLString::transcode (e.getMessage()); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + throw; + } + + this->initialized_ = false; + return; + } + + template + bool + XML_Helper::write_DOM (XERCES_CPP_NAMESPACE::DOMDocument *doc, + const ACE_TCHAR *file) const + { + try + { + bool retn; +#if XERCES_VERSION_MAJOR == 3 + XERCES_CPP_NAMESPACE::DOMLSSerializer *serializer (impl_->createLSSerializer ()); + XERCES_CPP_NAMESPACE::DOMConfiguration *ser_config (serializer->getDomConfig ()); + XERCES_CPP_NAMESPACE::DOMLSOutput *output (impl_->createLSOutput ()); + + if (ser_config->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true)) + ser_config->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true); + + XMLFormatTarget *format_target = new XERCES_CPP_NAMESPACE::LocalFileFormatTarget (ACE_TEXT_ALWAYS_CHAR (file)); + + output->setByteStream (format_target); + + retn = serializer->write (doc, output); + + output->release (); + serializer->release (); + return retn; +#else + std::auto_ptr writer (impl_->createDOMWriter()); + + if (writer->canSetFeature (XMLUni::fgDOMWRTFormatPrettyPrint, + true)) + writer->setFeature (XMLUni::fgDOMWRTFormatPrettyPrint, true); + + std::auto_ptr ft (new xercesc::LocalFileFormatTarget(file)); + retn = writer->writeNode(ft.get (), *doc); + + return retn; +#endif + } + catch (const xercesc::XMLException &e) + { + char* message = + XMLString::transcode (e.getMessage()); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + + char* name = + XMLString::transcode (e.getType()); + ACE_Auto_Basic_Array_Ptr cleanup_name (name); + + ACE_ERROR ((LM_ERROR, "Caught exception while serializing DOM to file.\n" + "Name: %s\n" + "Message: %s\n" + "SrcFile: %s\n" + "SrcLine: %d\n", + name, + message, + e.getSrcFile (), + e.getSrcLine ())); + return false; + } + } + } +} diff --git a/modules/CIAO/tools/XML/XML_Schema_Resolver.cpp b/modules/CIAO/tools/XML/XML_Schema_Resolver.cpp new file mode 100644 index 00000000000..afa2ef14dc7 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Schema_Resolver.cpp @@ -0,0 +1,78 @@ +// $Id$ +#include "XML/XML_Schema_Resolver.h" + +#include +#include + +#include "XML/XercesString.h" + +#include "ace/Env_Value_T.h" + + +#include + +namespace CIAO +{ + namespace XML + { + Basic_Resolver::Basic_Resolver (const ACE_TCHAR *path) + : path_ (path) + { + } + + XMLCh * + Basic_Resolver::operator() (const XMLCh *const, + const XMLCh *const systemId) const + { + XStr path (path_); + path.append (systemId); + return path.release (); + } + + Environment_Resolver::Environment_Resolver (const ACE_TCHAR *variable, + const ACE_TCHAR *relpath) + { + xercesc::XMLPlatformUtils::Initialize(); + this->add_path (variable, relpath); + } + + using xercesc::XMLPlatformUtils; + + void + Environment_Resolver::add_path (const ACE_TCHAR *variable, + const ACE_TCHAR *relpath) + { + ACE_Env_Value path_env (variable, + ACE_TEXT("")); + + XStr xpath (path_env); + XStr xrelpath (relpath); + + xpath.append (xrelpath); + + paths_.push_back (xpath); + } + + XMLCh * + Environment_Resolver::operator() (const XMLCh *const, + const XMLCh *const systemId) const + { + for (std::vector::const_iterator i = this->paths_.begin (); + i != this->paths_.end (); + ++i) + { + XStr path (*i); + path.append(systemId); + + FileHandle file (XMLPlatformUtils::openFile (path)); + + if (file != 0) + { + XMLPlatformUtils::closeFile (file); + return path.release (); + } + } + return 0; + } + } +} diff --git a/modules/CIAO/tools/XML/XML_Schema_Resolver.h b/modules/CIAO/tools/XML/XML_Schema_Resolver.h new file mode 100644 index 00000000000..1826c8c1af6 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Schema_Resolver.h @@ -0,0 +1,109 @@ +/** + * @file XML_Schema_Resolver.h + * @author Will Otte + * + * $Id$ + * + * Resolves schema locations. + */ + +#ifndef CIAO_XML_SCHEMA_RESOLVER_H +#define CIAO_XML_SCHEMA_RESOLVER_H +#include /**/ "ace/pre.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "XML/CIAO_XML_Utils_Export.h" +#include "XML/XercesString.h" + +#include +#include +#include + +using namespace xercesc; + +namespace CIAO +{ + namespace XML + { + // forward decl. + struct NoOp_Resolver; + + /** + * @class CIAO_Schema_Resolver + * @brief Resolves schema locations for CIAO. + * + * Template argument Resolver should be a functor with an operation + * const ACE_TCHAR * operator () (...arguments from resolveEntity...) + */ + template + class XML_Schema_Resolver + : public virtual EntityResolver + { + public: + XML_Schema_Resolver (void); + + XML_Schema_Resolver (Resolver &resolver); + + /// This function is called by the Xerces infrastructure to + /// actually resolve the location of a schema. + virtual InputSource * resolveEntity (const XMLCh *const publicId, + const XMLCh *const systemId); + + private: + XML_Schema_Resolver (XML_Schema_Resolver &); + + Resolver &resolver_; + }; + + /** + * @class NoOp_Resolver + * @brief Resolver that does nothing. + */ + struct NoOp_Resolver + { + const XMLCh* operator() (const XMLCh *const, + const XMLCh *const systemId) const + { return systemId; }; + }; + + /** + * @class Basic_Resolver + * @brief Resolves a schema location from a fixed path. + */ + struct Basic_Resolver + { + Basic_Resolver (const ACE_TCHAR *path); + + XMLCh* operator() (const XMLCh *const publicId, + const XMLCh *const systemId) const; + XStr path_; + }; + + /** + * @class Environment_Resolver + * @brief Resolves a schema location from a path from an environment variable. + */ + struct CIAO_XML_Utils_Export Environment_Resolver + { + Environment_Resolver (const ACE_TCHAR *variable = ACE_TEXT(""), + const ACE_TCHAR *path = ACE_TEXT("./")); + + void add_path (const ACE_TCHAR *variable, + const ACE_TCHAR *path); + + XMLCh* operator() (const XMLCh *const publicId, + const XMLCh *const systemId) const; + + std::vector paths_; + }; + } +} + +#include "XML/XML_Schema_Resolver.tpp" + +#include /**/ "ace/post.h" + +#endif /* CIAO_XML_SCHEMA_RESOLVER_H */ diff --git a/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp b/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp new file mode 100644 index 00000000000..22039e01f14 --- /dev/null +++ b/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp @@ -0,0 +1,48 @@ +// $Id$ +#ifndef XML_SCHEMA_RESOLVER_TPP +#define XML_SCHEMA_RESOLVER_TPP + +#include "XML/XML_Schema_Resolver.h" +#include "XML/XercesString.h" + +#include +#include + +using xercesc::Wrapper4InputSource; +using xercesc::LocalFileInputSource; + + +namespace CIAO +{ + namespace XML + { + template + XML_Schema_Resolver::XML_Schema_Resolver (void) + : resolver_ () + { + } + + template + XML_Schema_Resolver::XML_Schema_Resolver (Resolver &res) + : resolver_ (res) + { + } + + /// This function is called by the Xerces infrastructure to + /// actually resolve the location of a schema. + template + InputSource * + XML_Schema_Resolver::resolveEntity (const XMLCh *const publicId, + const XMLCh *const systemId) + { + XStr path = resolver_ (publicId, systemId); + if (path.begin () == 0) + return 0; + + // Ownership of these objects is given to other people. + return /*new Wrapper4InputSource*/ (new LocalFileInputSource (path.begin ())); + } + } +} + +#endif /*XML_SCHEMA_RESOLVER_TPP*/ diff --git a/modules/CIAO/tools/XML/XercesString.cpp b/modules/CIAO/tools/XML/XercesString.cpp new file mode 100644 index 00000000000..8e56061948d --- /dev/null +++ b/modules/CIAO/tools/XML/XercesString.cpp @@ -0,0 +1,151 @@ +// $Id$ + +#include +#include + +#include "XercesString.h" +using xercesc::XMLString; + +namespace CIAO +{ + namespace XML + { + + XStr::XStr (const ACE_TCHAR* str) + : _wstr(0) + { + _wstr = XMLString::transcode(ACE_TEXT_ALWAYS_CHAR (str)); + } + + XStr::XStr (XMLCh *wstr) + : _wstr(wstr) + { + + } + + XStr::XStr (const XMLCh* wstr) + : _wstr(0) + { + _wstr = XMLString::replicate(wstr); + } + + XStr::XStr (const XStr &right) + : _wstr(0) + { + _wstr = XMLString::replicate(right._wstr); + } + + XStr& XStr::operator= (const XStr& rhs) + { + if (&rhs == this) + return *this; + XStr temp (rhs); + std::swap (this->_wstr, temp._wstr); + return *this; + } + + XStr::~XStr () + { + if (_wstr) + XMLString::release(&_wstr); + } + + const XMLCh* XStr::begin () const + { + return _wstr; + } + + const XMLCh* XStr::end () const + { + return _wstr + size(); + } + + bool XStr::append(const XMLCh *tail) + { + int iTailLen = XMLString::stringLen(tail); + int iWorkLen = XMLString::stringLen(_wstr); + XMLCh *result = new XMLCh[ iWorkLen + iTailLen + 1 ]; + bool bOK = result != 0; + if (bOK) + { + XMLCh *target = result; + XMLString::moveChars(target, _wstr, iWorkLen); + target += iWorkLen; + XMLString::moveChars(target, tail, iTailLen); + target += iTailLen; + *target++ = 0; + XMLString::release(&_wstr); + _wstr = result; + } + return bOK; + } + + bool XStr::erase(const XMLCh *head, const XMLCh *tail) + { + bool bOK = head <= tail && head >= begin() && tail <= end(); + if (bOK) + { + XMLCh *result = new XMLCh[ size() - (tail - head) + 1 ]; + XMLCh *target = result; + bOK = target != 0; + if (bOK) + { + const XMLCh *cursor = begin(); + + while (cursor != head) *target++ = *cursor++; + cursor = tail; + while ( cursor != end() ) *target++ = *cursor++; + *target ++ = 0; + XMLString::release(&_wstr); + _wstr = result; + } + } + return bOK; + } + + int XStr::size () const + { + return XMLString::stringLen(_wstr); + } + + XMLCh XStr::operator [] (const int i) + { + return _wstr[i]; + } + + XMLCh XStr::operator [] (const int i) const + { + return _wstr[i]; + } + + XMLCh * XStr::release (void) + { + XMLCh* tmp = _wstr; + this->_wstr = 0; + return tmp; + } + + bool operator== (const XStr& lhs, const XStr& rhs) + { + return XMLString::compareIString (lhs,rhs) == 0; + } + + bool operator!= (const XStr& lhs, const XStr& rhs) + { + return !operator==(lhs, rhs); + } + + + std::ostream& + operator<< (std::ostream& o, XStr const& str) + { + char* s = XMLString::transcode (str); + + o << s; + + XMLString::release (&s); // idiots? + return o; + } + + } +} diff --git a/modules/CIAO/tools/XML/XercesString.h b/modules/CIAO/tools/XML/XercesString.h new file mode 100644 index 00000000000..b0975462c59 --- /dev/null +++ b/modules/CIAO/tools/XML/XercesString.h @@ -0,0 +1,78 @@ +// $Id$ + +#ifndef _XERCESSTRING_H +#define _XERCESSTRING_H + +#include /**/ "ace/pre.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include + +#ifdef __BORLANDC__ +using std::memcpy; +#endif + +#include + +// Utility class that provides a std::string like facade to XMLString. +// Doesn't implement all of the methods of std::string. +#include "XML/CIAO_XML_Utils_Export.h" + +namespace CIAO +{ + namespace XML + { + class CIAO_XML_Utils_Export XStr + { + public: + XStr() : _wstr(0L) { }; + + XStr (const ACE_TCHAR* str); + + XStr (XMLCh* wstr); + + XStr (const XMLCh* wstr); + + XStr (const XStr& copy); + + XStr& operator= (const XStr& rhs); + + ~XStr(); + + const XMLCh* begin() const; + + const XMLCh* end() const; + + bool append(const XMLCh* tail); + + bool erase (const XMLCh* head, const XMLCh* tail); + + int size() const; + + XMLCh operator [] (const int i); + + XMLCh operator [] (const int i) const; + + operator const XMLCh* () const { return _wstr; }; + + XMLCh * release (void); + private: + + XMLCh* _wstr; // Internal representation + + }; + + CIAO_XML_Utils_Export bool operator== (const XStr& lhs, const XStr& rhs); + CIAO_XML_Utils_Export bool operator!= (const XStr& lhs, const XStr& rhs); + + CIAO_XML_Utils_Export std::ostream& + operator<< (std::ostream& o, XStr const& str); + + } +} +#include /**/ "ace/post.h" + +#endif /* _XERCESSTRING_H */ -- cgit v1.2.1